ZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvTWFrZWZpbGUgYi9wb2t5L2JpdGJha2UvZG9jL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjhmNGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL01ha2VmaWxlCkBAIC0wLDAgKzEsOTEgQEAKKyMgVGhpcyBpcyBhIHNpbmdsZSBNYWtlZmlsZSB0byBoYW5kbGUgYWxsIGdlbmVyYXRlZCBCaXRCYWtlIGRvY3VtZW50cy4KKyMgVGhlIE1ha2VmaWxlIG5lZWRzIHRvIGxpdmUgaW4gdGhlIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IGFuZCBhbGwgZmlndXJlcyB1c2VkCisjIGluIGFueSBtYW51YWxzIG11c3QgYmUgLlBORyBmaWxlcyBhbmQgbGl2ZSBpbiB0aGUgaW5kaXZpZHVhbCBib29rJ3MgZmlndXJlcworIyBkaXJlY3RvcnkuCisjCisjIFRoZSBNYWtlZmlsZSBoYXMgdGhlc2UgdGFyZ2V0czoKKyMKKyMgICAgcGRmOiAgICAgIGdlbmVyYXRlcyBhIFBERiB2ZXJzaW9uIG9mIGEgbWFudWFsLgorIyAgICBodG1sOiAgICAgZ2VuZXJhdGVzIGFuIEhUTUwgdmVyc2lvbiBvZiBhIG1hbnVhbC4KKyMgICAgdGFyYmFsbDogIGNyZWF0ZXMgYSB0YXJiYWxsIGZvciB0aGUgZG9jIGZpbGVzLgorIyAgICB2YWxpZGF0ZTogdmFsaWRhdGVzCisjICAgIGNsZWFuOiAgICByZW1vdmVzIGZpbGVzCisjCisjIFRoZSBNYWtlZmlsZSBnZW5lcmF0ZXMgYW4gSFRNTCB2ZXJzaW9uIG9mIGV2ZXJ5IGRvY3VtZW50LiAgVGhlCisjIHZhcmlhYmxlIERPQyBpbmRpY2F0ZXMgdGhlIGZvbGRlciBuYW1lIGZvciBhIGdpdmVuIG1hbnVhbC4KKyMKKyMgVG8gYnVpbGQgYSBtYW51YWwsIHlvdSBtdXN0IGludm9rZSAnbWFrZScgd2l0aCB0aGUgRE9DIGFyZ3VtZW50LgorIworIyBFeGFtcGxlczoKKyMKKyMgICAgIG1ha2UgRE9DPWJpdGJha2UtdXNlci1tYW51YWwKKyMgICAgIG1ha2UgcGRmIERPQz1iaXRiYWtlLXVzZXItbWFudWFsCisjCisjIFRoZSBmaXJzdCBleGFtcGxlIGdlbmVyYXRlcyB0aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZSBVc2VyIE1hbnVhbC4KKyMgVGhlIHNlY29uZCBleGFtcGxlIGdlbmVyYXRlcyB0aGUgUERGIHZlcnNpb24gb2YgdGhlIFVzZXIgTWFudWFsLgorIworCitpZmVxICgkKERPQyksYml0YmFrZS11c2VyLW1hbnVhbCkKK1hTTFRPUFRTID0gLS1zdHJpbmdwYXJhbSBodG1sLnN0eWxlc2hlZXQgYml0YmFrZS11c2VyLW1hbnVhbC1zdHlsZS5jc3MgXAorICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBjaGFwdGVyLmF1dG9sYWJlbCAxIFwKKyAgICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5hdXRvbGFiZWwgMSBcCisgICAgICAgICAgIC0tc3RyaW5ncGFyYW0gIHNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIDEgXAorICAgICAgICAgICAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCB0YXJiYWxsCitUQVJGSUxFUyA9IGJpdGJha2UtdXNlci1tYW51YWwtc3R5bGUuY3NzIGJpdGJha2UtdXNlci1tYW51YWwuaHRtbCBmaWd1cmVzL2JpdGJha2UtdGl0bGUucG5nCitNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sCitGSUdVUkVTID0gZmlndXJlcworU1RZTEVTSEVFVCA9ICQoRE9DKS8qLmNzcworCitlbmRpZgorCisjIworIyBUaGVzZSBVUkkgc2hvdWxkIGJlIHJld3JpdHRlbiBieSB5b3VyIGRpc3RyaWJ1dGlvbidzIHhtbCBjYXRhbG9nIHRvCisjIG1hdGNoIHlvdXIgbG9jYWx5IGluc3RhbGxlZCBYU0wgc3R5bGVzaGVldHMuCitYU0xfQkFTRV9VUkkgID0gaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQKK1hTTF9YSFRNTF9VUkkgPSAkKFhTTF9CQVNFX1VSSSkveGh0bWwvZG9jYm9vay54c2wKKworYWxsOiAkKEFMTFBSRVEpCisKK3BkZjoKK2lmZXEgKCQoRE9DKSxiaXRiYWtlLXVzZXItbWFudWFsKQorCUBlY2hvICIgIgorCUBlY2hvICIqKioqKioqKioqIEJ1aWxkaW5nLiIkKERPQykKKwlAZWNobyAiICIKKwljZCAkKERPQyk7IC4uL3Rvb2xzL2RvY2Jvb2stdG8tcGRmICQoRE9DKS54bWwgLi4vdGVtcGxhdGU7IGNkIC4uCitlbmRpZgorCitodG1sOgoraWZlcSAoJChET0MpLGJpdGJha2UtdXNlci1tYW51YWwpCisjICAgICAgIFNlZSBodHRwOi8vd3d3LnNhZ2VoaWxsLm5ldC9kb2Nib29reHNsL0h0bWxPdXRwdXQuaHRtbAorCUBlY2hvICIgIgorCUBlY2hvICIqKioqKioqKiBCdWlsZGluZyAiJChET0MpCisJQGVjaG8gIiAiCisJY2QgJChET0MpOyB4c2x0cHJvYyAkKFhTTFRPUFRTKSAtbyAkKERPQykuaHRtbCAkKERPQyktY3VzdG9taXphdGlvbi54c2wgJChET0MpLnhtbDsgY2QgLi4KK2VuZGlmCisKK3RhcmJhbGw6IGh0bWwKKwlAZWNobyAiICIKKwlAZWNobyAiKioqKioqKiogQ3JlYXRpbmcgVGFyYmFsbCBvZiBkb2N1bWVudCBmaWxlcyIKKwlAZWNobyAiICIKKwljZCAkKERPQyk7IHRhciAtY3Z6ZiAkKERPQykudGd6ICQoVEFSRklMRVMpOyBjZCAuLgorCit2YWxpZGF0ZToKKwljZCAkKERPQyk7IHhtbGxpbnQgLS1wb3N0dmFsaWQgLS14aW5jbHVkZSAtLW5vb3V0ICQoRE9DKS54bWw7IGNkIC4uCisKK3B1Ymxpc2g6CisJQGlmIHRlc3QgLWYgJChET0MpLyQoRE9DKS5odG1sOyBcCisJICB0aGVuIFwKKyAgICAgICAgICAgIGVjaG8gIiAiOyBcCisgICAgICAgICAgICBlY2hvICIqKioqKioqKiBQdWJsaXNoaW5nICIkKERPQykiLmh0bWwiOyBcCisgICAgICAgICAgICBlY2hvICIgIjsgXAorICAgICAgICAgICAgc2NwIC1yICQoTUFOVUFMUykgJChTVFlMRVNIRUVUKSBkb2NzLnlwOi92YXIvd3d3L3d3dy55b2N0b3Byb2plY3Qub3JnLWRvY3MvJChWRVIpLyQoRE9DKTsgXAorICAgICAgICAgICAgY2QgJChET0MpOyBzY3AgLXIgJChGSUdVUkVTKSBkb2NzLnlwOi92YXIvd3d3L3d3dy55b2N0b3Byb2plY3Qub3JnLWRvY3MvJChWRVIpLyQoRE9DKTsgXAorCWVsc2UgXAorICAgICAgICAgIGVjaG8gIiAiOyBcCisgICAgICAgICAgZWNobyAkKERPQykiLmh0bWwgbWlzc2luZy4gIEdlbmVyYXRlIHRoZSBmaWxlIGZpcnN0IHRoZW4gdHJ5IGFnYWluLiI7IFwKKyAgICAgICAgICBlY2hvICIgIjsgXAorCWZpCisKK2NsZWFuOgorCXJtIC1yZiAkKE1BTlVBTFMpOyBybSAkKERPQykvJChET0MpLnRnejsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvTWFrZWZpbGUuc3BoaW54IGIvcG9reS9iaXRiYWtlL2RvYy9NYWtlZmlsZS5zcGhpbngKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY2M2MyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvTWFrZWZpbGUuc3BoaW54CkBAIC0wLDAgKzEsMzEgQEAKKyMgTWluaW1hbCBtYWtlZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMKKworIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBhbmQgYWxzbworIyBmcm9tIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGZpcnN0IHR3by4KK1NQSElOWE9QVFMgICAgPz0KK1NQSElOWEJVSUxEICAgPz0gc3BoaW54LWJ1aWxkCitTT1VSQ0VESVIgICAgID0gLgorQlVJTERESVIgICAgICA9IF9idWlsZAorREVTVERJUiAgICAgICA9IGZpbmFsCisKKyMgUHV0IGl0IGZpcnN0IHNvIHRoYXQgIm1ha2UiIHdpdGhvdXQgYXJndW1lbnQgaXMgbGlrZSAibWFrZSBoZWxwIi4KK2hlbHA6CisJQCQoU1BISU5YQlVJTEQpIC1NIGhlbHAgIiQoU09VUkNFRElSKSIgIiQoQlVJTERESVIpIiAkKFNQSElOWE9QVFMpICQoTykKKworLlBIT05ZOiBoZWxwIE1ha2VmaWxlLnNwaGlueCBjbGVhbiBwdWJsaXNoCisKK3B1Ymxpc2g6IE1ha2VmaWxlLnNwaGlueCBodG1sIHNpbmdsZWh0bWwKKwlybSAtcmYgJChCVUlMRERJUikvJChERVNURElSKS8KKwlta2RpciAtcCAkKEJVSUxERElSKS8kKERFU1RESVIpLworCWNwIC1yICQoQlVJTERESVIpL2h0bWwvKiAkKEJVSUxERElSKS8kKERFU1RESVIpLworCWNwICQoQlVJTERESVIpL3NpbmdsZWh0bWwvaW5kZXguaHRtbCAkKEJVSUxERElSKS8kKERFU1RESVIpL3NpbmdsZWluZGV4Lmh0bWwKKwlzZWQgLWkgLWUgJ3NAaW5kZXguaHRtbCNAc2luZ2xlaW5kZXguaHRtbCNAZycgJChCVUlMRERJUikvJChERVNURElSKS9zaW5nbGVpbmRleC5odG1sCisKK2NsZWFuOgorCUBybSAtcmYgJChCVUlMRERJUikKKworIyBDYXRjaC1hbGwgdGFyZ2V0OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0aGUgbmV3CisjICJtYWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJTlhPUFRTKS4KKyU6IE1ha2VmaWxlLnNwaGlueAorCUAkKFNQSElOWEJVSUxEKSAtTSAkQCAiJChTT1VSQ0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5YT1BUUykgJChPKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9SRUFETUUgYi9wb2t5L2JpdGJha2UvZG9jL1JFQURNRQppbmRleCA2MjU5NTgyLi4zMDNjZjhlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvZG9jL1JFQURNRQorKysgYi9wb2t5L2JpdGJha2UvZG9jL1JFQURNRQpAQCAtMTUsNDEgKzE1LDI1IEBACiBJZiB5b3Ugd2FudCB0byBmaW5kIEhUTUwgdmVyc2lvbnMgb2YgdGhlIEJpdEJha2UgbWFudWFscyBvbiB0aGUgd2ViLCAKIGdvIHRvIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy93aWtpL0RvY3VtZW50YXRpb24uIAogCi1TcGhpbngKLT09PT09PQorTWFrZWZpbGUKKz09PT09PT09CiAKLVRoZSBCaXRCYWtlIGRvY3VtZW50YXRpb24gd2FzIG1pZ3JhdGVkIGZyb20gdGhlIG9yaWdpbmFsIERvY0Jvb2sKLWZvcm1hdCB0byBTcGhpbnggYmFzZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFlvY3RvIFByb2plY3QgMy4yCi1yZWxlYXNlLgorVGhlIE1ha2VmaWxlIHByb2Nlc3NlcyBtYW51YWwgZGlyZWN0b3JpZXMgdG8gY3JlYXRlIEhUTUwsIFBERiwKK3RhcmJhbGxzLCBldGMuICBEZXRhaWxzIG9uIGhvdyB0aGUgTWFrZWZpbGUgd29yayBhcmUgZG9jdW1lbnRlZAoraW5zaWRlIHRoZSBNYWtlZmlsZS4gIFNlZSB0aGF0IGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKLUFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgU3BoaW54IG1pZ3JhdGlvbiwgYW5kIGd1aWRlbGluZXMKLWZvciBkZXZlbG9wZXJzIHdpbGxpbmcgdG8gY29udHJpYnV0ZSB0byB0aGUgQml0QmFrZSBkb2N1bWVudGF0aW9uIGNhbgotYmUgZm91bmQgaW4gdGhlIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBSRUFETUUgZmlsZToKK1RvIGJ1aWxkIGEgbWFudWFsLCB5b3UgcnVuIHRoZSBtYWtlIGNvbW1hbmQgYW5kIHBhc3MgaXQgdGhlIG5hbWUKK29mIHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgbWFudWFsJ3MgY29udGVudHMuIAorRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW4gZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkgCitjcmVhdGVzIGFuIEhUTUwgYW5kIGEgUERGIHZlcnNpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCitUaGUgRE9DIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgbWFudWFsIHlvdSBhcmUgbWFraW5nOgogCi1odHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kveW9jdG8tZG9jcy90cmVlL2RvY3VtZW50YXRpb24vUkVBRE1FCisgICAgICQgbWFrZSBET0M9Yml0YmFrZS11c2VyLW1hbnVhbAogCi1Ib3cgdG8gYnVpbGQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3RlbXBsYXRlCis9PT09PT09PQorQ29udGFpbnMgdmFyaW91cyB0ZW1wbGF0ZXMsIGZvbnRzLCBhbmQgc29tZSBvbGQgUE5HIGZpbGVzLgogCi1TcGhpbnggaXMgd3JpdHRlbiBpbiBQeXRob24uIFdoaWxlIGl0IG1pZ2h0IHdvcmsgd2l0aCBQeXRob24yLCBmb3IKLW9idmlvdXMgcmVhc29ucywgd2Ugd2lsbCBvbmx5IHN1cHBvcnQgYnVpbGRpbmcgdGhlIEJpdEJha2UKLWRvY3VtZW50YXRpb24gd2l0aCBQeXRob24zLgotCi1TcGhpbnggbWlnaHQgYmUgYXZhaWxhYmxlIGluIHlvdXIgTGludXggZGlzdHJvIHBhY2thZ2VzIHJlcG9zaXRvcmllcywKLWhvd2V2ZXIgaXQgaXMgbm90IHJlY29tbWVuZCB1c2luZyBkaXN0cm8gcGFja2FnZXMsIGFzIHRoZXkgbWlnaHQgYmUKLW9sZCB2ZXJzaW9ucywgZXNwZWNpYWxseSBpZiB5b3UgYXJlIHVzaW5nIGFuIExUUyB2ZXJzaW9uIG9mIHlvdXIKLWRpc3Ryby4gVGhlIHJlY29tbWVuZGVkIG1ldGhvZCB0byBpbnN0YWxsIFNwaGlueCBhbmQgYWxsIHJlcXVpcmVkCi1kZXBlbmRlbmNpZXMgaXMgdG8gdXNlIHRoZSBQeXRob24gUGFja2FnZSBJbmRleCAocGlwKS4KLQotVG8gaW5zdGFsbCBhbGwgcmVxdWlyZWQgcGFja2FnZXMgcnVuOgotCi0gJCBwaXAzIGluc3RhbGwgc3BoaW54IHNwaGlueF9ydGRfdGhlbWUgcHl5YW1sCi0KLVRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uIGxvY2FsbHksIHJ1bjoKLQotICQgY2QgZG9jdW1lbnRhdGlvbgotICQgbWFrZSAtZiBNYWtlZmlsZS5zcGhpbnggaHRtbAotCi1UaGUgcmVzdWx0aW5nIEhUTUwgaW5kZXggcGFnZSB3aWxsIGJlIF9idWlsZC9odG1sL2luZGV4Lmh0bWwsIGFuZCB5b3UKLWNhbiBicm93c2UgeW91ciBvd24gY29weSBvZiB0aGUgbG9jYWxseSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiB3aXRoCi15b3VyIGJyb3dzZXIuCit0b29scworPT09PT0KK0NvbnRhaW5zIGEgdG9vbCB0byBjb252ZXJ0IHRoZSBEb2NCb29rIGZpbGVzIHRvIFBERiBmb3JtYXQuCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbCBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ODVlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiIHZlcnNpb249IjEuMCI+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9kb2Nib29rLW1pcnJvci9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKzwhLS0KKworICA8eHNsOmltcG9ydCBocmVmPSIuLi90ZW1wbGF0ZS8xLjc2LjEvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKy0tPgorCisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9wZXJtYWxpbmtzLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvc2VjdGlvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2NvbXBvbmVudC50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2RpdmlzaW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZ2xvc3MtcGVybWFsaW5rcy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSIndXNlci1tYW51YWwtc3R5bGUuY3NzJyIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaGFwdGVyLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24uYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiPkE8L3hzbDpwYXJhbT4KKworPCEtLSAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS50b2MiIHNlbGVjdD0iJ2FydGljbGUgbm9wJyI+PC94c2w6cGFyYW0+ICAtLT4KKworPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi5yc3QgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ucnN0CmluZGV4IGQ3NGU3NjguLjAxOWFmZDIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi5yc3QKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnJzdApAQCAtMzE1LDcgKzMxNSw3IEBACiB0byBtYXJrIG5ld2VyIGFuZCBtb3JlIGV4cGVyaW1lbnRhbCByZWNpcGUgdmVyc2lvbnMgdW50aWwgdGhleSBoYXZlCiB1bmRlcmdvbmUgc3VmZmljaWVudCB0ZXN0aW5nIHRvIGJlIGNvbnNpZGVyZWQgc3RhYmxlLgogCi1XaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSAidmVyc2lvbnMiIG9mIGEgZ2l2ZW4gcmVjaXBlLCBCaXRCYWtlIGRlZmF1bHRzCitXaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSDigJx2ZXJzaW9uc+KAnSBvZiBhIGdpdmVuIHJlY2lwZSwgQml0QmFrZSBkZWZhdWx0cwogdG8gc2VsZWN0aW5nIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uLCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4gSWYgdGhlCiByZWNpcGUgaW4gcXVlc3Rpb24gaGFzIGEKIDp0ZXJtOmBERUZBVUxUX1BSRUZFUkVOQ0VgIHNldCBsb3dlciB0aGFuCkBAIC0zMjUsNyArMzI1LDcgQEAKIEFkZGl0aW9uYWxseSwgdGhlIHVzZXIgY2FuIHNwZWNpZnkgdGhlaXIgcHJlZmVycmVkIHZlcnNpb24uCiAKIElmIHRoZSBmaXJzdCByZWNpcGUgaXMgbmFtZWQgYGBhXzEuMS5iYmBgLCB0aGVuIHRoZQotOnRlcm06YFBOYCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0byAiYSIsIGFuZCB0aGUKKzp0ZXJtOmBQTmAgdmFyaWFibGUgd2lsbCBiZSBzZXQgdG8g4oCcYeKAnSwgYW5kIHRoZQogOnRlcm06YFBWYCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0byAxLjEuCiAKIFRodXMsIGlmIGEgcmVjaXBlIG5hbWVkIGBgYV8xLjIuYmJgYCBleGlzdHMsIEJpdEJha2Ugd2lsbCBjaG9vc2UgMS4yIGJ5CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGM1YTI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApAQCAtMCwwICsxLDEwMjkgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiPgorCis8Y2hhcHRlciBpZD0iYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24iPgorICAgIDx0aXRsZT5FeGVjdXRpb248L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBwcmltYXJ5IHB1cnBvc2UgZm9yIHJ1bm5pbmcgQml0QmFrZSBpcyB0byBwcm9kdWNlIHNvbWUga2luZAorICAgICAgICBvZiBvdXRwdXQgc3VjaCBhcyBhIHNpbmdsZSBpbnN0YWxsYWJsZSBwYWNrYWdlLCBhIGtlcm5lbCwgYSBzb2Z0d2FyZQorICAgICAgICBkZXZlbG9wbWVudCBraXQsIG9yIGV2ZW4gYSBmdWxsLCBib2FyZC1zcGVjaWZpYyBib290YWJsZSBMaW51eCBpbWFnZSwKKyAgICAgICAgY29tcGxldGUgd2l0aCBib290bG9hZGVyLCBrZXJuZWwsIGFuZCByb290IGZpbGVzeXN0ZW0uCisgICAgICAgIE9mIGNvdXJzZSwgeW91IGNhbiBleGVjdXRlIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+CisgICAgICAgIGNvbW1hbmQgd2l0aCBvcHRpb25zIHRoYXQgY2F1c2UgaXQgdG8gZXhlY3V0ZSBzaW5nbGUgdGFza3MsCisgICAgICAgIGNvbXBpbGUgc2luZ2xlIHJlY2lwZSBmaWxlcywgY2FwdHVyZSBvciBjbGVhciBkYXRhLCBvciBzaW1wbHkKKyAgICAgICAgcmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgQml0QmFrZSdzIGV4ZWN1dGlvbiBwcm9jZXNzIGZyb20gc3RhcnQKKyAgICAgICAgdG8gZmluaXNoIHdoZW4geW91IHVzZSBpdCB0byBjcmVhdGUgYW4gaW1hZ2UuCisgICAgICAgIFRoZSBleGVjdXRpb24gcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQKKyAgICAgICAgZm9ybToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBCaXRCYWtlIGNvbW1hbmQgYW5kIGl0cyBvcHRpb25zLAorICAgICAgICBzZWUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdXNlci1tYW51YWwtY29tbWFuZCc+VGhlIEJpdEJha2UgQ29tbWFuZDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUHJpb3IgdG8gZXhlY3V0aW5nIEJpdEJha2UsIHlvdSBzaG91bGQgdGFrZSBhZHZhbnRhZ2Ugb2YgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgcGFyYWxsZWwgdGhyZWFkIGV4ZWN1dGlvbiBvbiB5b3VyIGJ1aWxkIGhvc3QgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgcHJvamVjdCdzIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgY29tbW9uIG1ldGhvZCB0byBkZXRlcm1pbmUgdGhpcyB2YWx1ZSBmb3IgeW91ciBidWlsZCBob3N0IGlzIHRvIHJ1bgorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdyZXAgcHJvY2Vzc29yIC9wcm9jL2NwdWluZm8KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzLCB3aGljaCB0YWtlcyBpbnRvCisgICAgICAgICAgICAgICAgYWNjb3VudCBoeXBlci10aHJlYWRpbmcuCisgICAgICAgICAgICAgICAgVGh1cywgYSBxdWFkLWNvcmUgYnVpbGQgaG9zdCB3aXRoIGh5cGVyLXRocmVhZGluZyBtb3N0IGxpa2VseQorICAgICAgICAgICAgICAgIHNob3dzIGVpZ2h0IHByb2Nlc3NvcnMsIHdoaWNoIGlzIHRoZSB2YWx1ZSB5b3Ugd291bGQgdGhlbiBhc3NpZ24gdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBwb3NzaWJseSBzaW1wbGVyIHNvbHV0aW9uIGlzIHRoYXQgc29tZSBMaW51eCBkaXN0cmlidXRpb25zCisgICAgICAgICAgICAgICAgKGUuZy4gRGViaWFuIGFuZCBVYnVudHUpIHByb3ZpZGUgdGhlIDxmaWxlbmFtZT5uY3B1czwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncGFyc2luZy10aGUtYmFzZS1jb25maWd1cmF0aW9uLW1ldGFkYXRhJz4KKyAgICAgICAgPHRpdGxlPlBhcnNpbmcgdGhlIEJhc2UgQ29uZmlndXJhdGlvbiBNZXRhZGF0YTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZmlyc3QgdGhpbmcgQml0QmFrZSBkb2VzIGlzIHBhcnNlIGJhc2UgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgbWV0YWRhdGEuCisgICAgICAgICAgICBCYXNlIGNvbmZpZ3VyYXRpb24gbWV0YWRhdGEgY29uc2lzdHMgb2YgeW91ciBwcm9qZWN0J3MKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0byBkZXRlcm1pbmUgd2hhdAorICAgICAgICAgICAgbGF5ZXJzIEJpdEJha2UgbmVlZHMgdG8gcmVjb2duaXplLCBhbGwgbmVjZXNzYXJ5CisgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGVzIChvbmUgZnJvbSBlYWNoIGxheWVyKSwKKyAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUgZGF0YSBpdHNlbGYgaXMgb2YgdmFyaW91cyB0eXBlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZWNpcGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERldGFpbHMgYWJvdXQgcGFydGljdWxhciBwaWVjZXMgb2Ygc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2xhc3MgRGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBbiBhYnN0cmFjdGlvbiBvZiBjb21tb24gYnVpbGQgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gaG93IHRvIGJ1aWxkIGEgTGludXgga2VybmVsKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db25maWd1cmF0aW9uIERhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZS1zcGVjaWZpYyBzZXR0aW5ncywgcG9saWN5IGRlY2lzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGRhdGEgYWN0cyBhcyB0aGUgZ2x1ZSB0byBiaW5kIGV2ZXJ5dGhpbmcKKyAgICAgICAgICAgICAgICAgICAgdG9nZXRoZXIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZXMgYXJlIHVzZWQgdG8KKyAgICAgICAgICAgIGNvbnN0cnVjdCBrZXkgdmFyaWFibGVzIHN1Y2ggYXMKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCRklMRVMnPjxmaWxlbmFtZT5CQkZJTEVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGlzIHVzZWQgdG8gc2VhcmNoIGZvcgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhbmQgY2xhc3MgZmlsZXMgdW5kZXIgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Y2xhc3NlczwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcmllcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiBpcyB1c2VkIHRvIGxvY2F0ZSBib3RoIHJlY2lwZQorICAgICAgICAgICAgYW5kIHJlY2lwZSBhcHBlbmQgZmlsZXMKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICBpdCBpcyBhc3N1bWVkIHRoZSB1c2VyIGhhcyBzZXQgdGhlIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5CQkZJTEVTPC9maWxlbmFtZT4gZGlyZWN0bHkgaW4gdGhlIGVudmlyb25tZW50LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBOZXh0LCB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgbG9jYXRlZAorICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0aGF0IHdhcworICAgICAgICAgICAganVzdCBjb25zdHJ1Y3RlZC4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZSBtYXkgYWxzbyBpbmNsdWRlIG90aGVyCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIHVzaW5nIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPiBkaXJlY3RpdmVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcmlvciB0byBwYXJzaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIEJpdEJha2UgbG9va3MKKyAgICAgICAgICAgIGF0IGNlcnRhaW4gdmFyaWFibGVzLCBpbmNsdWRpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX0VOVl9XSElURUxJU1QnPjxmaWxlbmFtZT5CQl9FTlZfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX0VOVl9FWFRSQVdISVRFJz48ZmlsZW5hbWU+QkJfRU5WX0VYVFJBV0hJVEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfUFJFU0VSVkVfRU5WJz48ZmlsZW5hbWU+QkJfUFJFU0VSVkVfRU5WPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX09SSUdFTlYnPjxmaWxlbmFtZT5CQl9PUklHRU5WPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJJVEJBS0VfVUknPjxmaWxlbmFtZT5CSVRCQUtFX1VJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUaGUgZmlyc3QgZm91ciB2YXJpYWJsZXMgaW4gdGhpcyBsaXN0IHJlbGF0ZSB0byBob3cgQml0QmFrZSB0cmVhdHMgc2hlbGwKKyAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyBkdXJpbmcgdGFzayBleGVjdXRpb24uCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBCaXRCYWtlIGNsZWFucyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBwcm92aWRlcyB0aWdodAorICAgICAgICAgICAgY29udHJvbCBvdmVyIHRoZSBzaGVsbCBleGVjdXRpb24gZW52aXJvbm1lbnQuCisgICAgICAgICAgICBIb3dldmVyLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlc2UgZmlyc3QgZm91ciB2YXJpYWJsZXMsIHlvdSBjYW4KKyAgICAgICAgICAgIGFwcGx5IHlvdXIgY29udHJvbCByZWdhcmRpbmcgdGhlCisgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYWxsb3dlZCB0byBiZSB1c2VkIGJ5IEJpdEJha2UgaW4gdGhlIHNoZWxsCisgICAgICAgICAgICBkdXJpbmcgZXhlY3V0aW9uIG9mIHRhc2tzLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Bhc3NpbmctaW5mb3JtYXRpb24taW50by10aGUtYnVpbGQtdGFzay1lbnZpcm9ubWVudCc+UGFzc2luZyBJbmZvcm1hdGlvbiBJbnRvIHRoZSBCdWlsZCBUYXNrIEVudmlyb25tZW50PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gYW5kIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICB2YXJpYWJsZSBnbG9zc2FyeSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhleSB3b3JrIGFuZAorICAgICAgICAgICAgb24gaG93IHRvIHVzZSB0aGVtLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgYmFzZSBjb25maWd1cmF0aW9uIG1ldGFkYXRhIGlzIGdsb2JhbAorICAgICAgICAgICAgYW5kIHRoZXJlZm9yZSBhZmZlY3RzIGFsbCByZWNpcGVzIGFuZCB0YXNrcyB0aGF0IGFyZSBleGVjdXRlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBmaXJzdCBzZWFyY2hlcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgYW4KKyAgICAgICAgICAgIG9wdGlvbmFsIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgdGhhdCBpcyBhIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mICdsYXllcicgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICBSZWNhbGwgdGhhdCBpZiBCaXRCYWtlIGNhbm5vdCBmaW5kIGEgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSwgdGhlbiBpdCBpcyBhc3N1bWVkIHRoZSB1c2VyIGhhcyBzZXQgdGhlIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5CQkZJTEVTPC9maWxlbmFtZT4gdmFyaWFibGVzIGRpcmVjdGx5IGluIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGVhY2ggZGlyZWN0b3J5IChsYXllcikgaW4gdGhpcyBsaXN0LCBhIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSBpcyBsb2NhdGVkIGFuZCBwYXJzZWQgd2l0aCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1MQVlFUkRJUic+PGZpbGVuYW1lPkxBWUVSRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBiZWluZyBzZXQgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgbGF5ZXIgd2FzIGZvdW5kLgorICAgICAgICAgICAgVGhlIGlkZWEgaXMgdGhlc2UgZmlsZXMgYXV0b21hdGljYWxseSBzZXQgdXAKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZCBvdGhlciB2YXJpYWJsZXMgY29ycmVjdGx5IGZvciBhIGdpdmVuIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB0aGVuIGV4cGVjdHMgdG8gZmluZCB0aGUgPGZpbGVuYW1lPmNvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZpbGUgc29tZXdoZXJlIGluIHRoZSB1c2VyLXNwZWNpZmllZCA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGF0IGNvbmZpZ3VyYXRpb24gZmlsZSBnZW5lcmFsbHkgaGFzIGluY2x1ZGUgZGlyZWN0aXZlcyB0byBwdWxsCisgICAgICAgICAgICBpbiBhbnkgb3RoZXIgbWV0YWRhdGEgc3VjaCBhcyBmaWxlcyBzcGVjaWZpYyB0byB0aGUgYXJjaGl0ZWN0dXJlLAorICAgICAgICAgICAgdGhlIG1hY2hpbmUsIHRoZSBsb2NhbCBlbnZpcm9ubWVudCwgYW5kIHNvIGZvcnRoLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmx5IHZhcmlhYmxlIGRlZmluaXRpb25zIGFuZCBpbmNsdWRlIGRpcmVjdGl2ZXMgYXJlIGFsbG93ZWQKKyAgICAgICAgICAgIGluIEJpdEJha2UgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBTb21lIHZhcmlhYmxlcyBkaXJlY3RseSBpbmZsdWVuY2UgQml0QmFrZSdzIGJlaGF2aW9yLgorICAgICAgICAgICAgVGhlc2UgdmFyaWFibGVzIG1pZ2h0IGhhdmUgYmVlbiBzZXQgZnJvbSB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHByZXZpb3VzbHkKKyAgICAgICAgICAgIG1lbnRpb25lZCBvciBzZXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtYmItdmFyaWFibGVzLWdsb3MnPlZhcmlhYmxlcyBHbG9zc2FyeTwvbGluaz4iCisgICAgICAgICAgICBjaGFwdGVyIHByZXNlbnRzIGEgZnVsbCBsaXN0IG9mIHZhcmlhYmxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWZ0ZXIgcGFyc2luZyBjb25maWd1cmF0aW9uIGZpbGVzLCBCaXRCYWtlIHVzZXMgaXRzIHJ1ZGltZW50YXJ5CisgICAgICAgICAgICBpbmhlcml0YW5jZSBtZWNoYW5pc20sIHdoaWNoIGlzIHRocm91Z2ggY2xhc3MgZmlsZXMsIHRvIGluaGVyaXQKKyAgICAgICAgICAgIHNvbWUgc3RhbmRhcmQgY2xhc3Nlcy4KKyAgICAgICAgICAgIEJpdEJha2UgcGFyc2VzIGEgY2xhc3Mgd2hlbiB0aGUgaW5oZXJpdCBkaXJlY3RpdmUgcmVzcG9uc2libGUKKyAgICAgICAgICAgIGZvciBnZXR0aW5nIHRoYXQgY2xhc3MgaXMgZW5jb3VudGVyZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZSBpcyBhbHdheXMgaW5jbHVkZWQuCisgICAgICAgICAgICBPdGhlciBjbGFzc2VzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiB1c2luZyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgYXJlIGFsc28gaW5jbHVkZWQuCisgICAgICAgICAgICBCaXRCYWtlIHNlYXJjaGVzIGZvciBjbGFzcyBmaWxlcyBpbiBhCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3NlczwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSB1bmRlcgorICAgICAgICAgICAgdGhlIHBhdGhzIGluIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiBpbiB0aGUgc2FtZSB3YXkgYXMKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEEgZ29vZCB3YXkgdG8gZ2V0IGFuIGlkZWEgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kCisgICAgICAgICAgICB0aGUgY2xhc3MgZmlsZXMgdXNlZCBpbiB5b3VyIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBpcyB0bworICAgICAgICAgICAgcnVuIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWUgPiBteWJiLmxvZworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgRXhhbWluaW5nIHRoZSB0b3Agb2YgdGhlIDxmaWxlbmFtZT5teWJiLmxvZzwvZmlsZW5hbWU+CisgICAgICAgICAgICBzaG93cyB5b3UgdGhlIG1hbnkgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgY2xhc3MgZmlsZXMKKyAgICAgICAgICAgIHVzZWQgaW4geW91ciBleGVjdXRpb24gZW52aXJvbm1lbnQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyBCaXRCYWtlIHBhcnNlcyBjdXJseSBicmFjZXMuCisgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgdXNlcyBhIGNsb3NpbmcgY3VybHkgYnJhY2Ugd2l0aGluIHRoZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgICAgICAgICB0aGUgY2hhcmFjdGVyIGhhcyBubyBsZWFkaW5nIHNwYWNlcywgQml0QmFrZSBwcm9kdWNlcyBhIHBhcnNpbmcKKyAgICAgICAgICAgICAgICBlcnJvci4KKyAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgcGFpciBvZiBjdXJseSBicmFjZXMgaW4gYSBzaGVsbCBmdW5jdGlvbiwgdGhlCisgICAgICAgICAgICAgICAgY2xvc2luZyBjdXJseSBicmFjZSBtdXN0IG5vdCBiZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZQorICAgICAgICAgICAgICAgIHdpdGhvdXQgbGVhZGluZyBzcGFjZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNhdXNlcyBCaXRCYWtlIHRvIHByb2R1Y2UgYSBwYXJzaW5nCisgICAgICAgICAgICAgICAgZXJyb3I6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBmYWtlcm9vdCBjcmVhdGVfc2hhcigpIHsKKyAgICAgICAgIGNhdCAmbHQ7Jmx0OyAiRU9GIiAmZ3Q7ICR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKKyAgICAgdXNhZ2UoKQorICAgICB7CisgICAgICAgZWNobyAidGVzdCIKKyAgICAgICAjIyMjIyMgVGhlIGZvbGxvd2luZyAifSIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGNhdXNlcyBhIHBhcnNpbmcgZXJyb3IgIyMjIyMjCisgICAgIH0KKyAgICAgRU9GCisgICAgIH0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgV3JpdGluZyB0aGUgcmVjaXBlIHRoaXMgd2F5IGF2b2lkcyB0aGUgZXJyb3I6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBmYWtlcm9vdCBjcmVhdGVfc2hhcigpIHsKKyAgICAgICAgIGNhdCAmbHQ7Jmx0OyAiRU9GIiAmZ3Q7ICR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKKyAgICAgdXNhZ2UoKQorICAgICB7CisgICAgICAgZWNobyAidGVzdCIKKyAgICAgICAjIyMjIyNUaGUgZm9sbG93aW5nICJ9IiB3aXRoIGEgbGVhZGluZyBzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgYXZvaWRzIHRoZSBlcnJvciAjIyMjIyMKKyAgICAgIH0KKyAgICAgRU9GCisgICAgIH0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbG9jYXRpbmctYW5kLXBhcnNpbmctcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5Mb2NhdGluZyBhbmQgUGFyc2luZyBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIER1cmluZyB0aGUgY29uZmlndXJhdGlvbiBwaGFzZSwgQml0QmFrZSB3aWxsIGhhdmUgc2V0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJGSUxFUyc+PGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICBCaXRCYWtlIG5vdyB1c2VzIGl0IHRvIGNvbnN0cnVjdCBhIGxpc3Qgb2YgcmVjaXBlcyB0byBwYXJzZSwKKyAgICAgICAgICAgIGFsb25nIHdpdGggYW55IGFwcGVuZCBmaWxlcyAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgdG8gYXBwbHkuCisgICAgICAgICAgICA8ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+IGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YKKyAgICAgICAgICAgIGF2YWlsYWJsZSBmaWxlcyBhbmQgc3VwcG9ydHMgd2lsZGNhcmRzLgorICAgICAgICAgICAgQW4gZXhhbXBsZSB3b3VsZCBiZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJGSUxFUyA9ICIvcGF0aC90by9iYmZpbGVzLyouYmIgL3BhdGgvdG8vYXBwZW5kcy8qLmJiYXBwZW5kIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQml0QmFrZSBwYXJzZXMgZWFjaCByZWNpcGUgYW5kIGFwcGVuZCBmaWxlIGxvY2F0ZWQKKyAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgb2YKKyAgICAgICAgICAgIHZhcmlvdXMgdmFyaWFibGVzIGludG8gdGhlIGRhdGFzdG9yZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEFwcGVuZCBmaWxlcyBhcmUgYXBwbGllZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgZW5jb3VudGVyZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIGVhY2ggZmlsZSwgYSBmcmVzaCBjb3B5IG9mIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaXMKKyAgICAgICAgICAgIG1hZGUsIHRoZW4gdGhlIHJlY2lwZSBpcyBwYXJzZWQgbGluZSBieSBsaW5lLgorICAgICAgICAgICAgQW55IGluaGVyaXQgc3RhdGVtZW50cyBjYXVzZSBCaXRCYWtlIHRvIGZpbmQgYW5kCisgICAgICAgICAgICB0aGVuIHBhcnNlIGNsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgIHVzaW5nCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhcyB0aGUgc2VhcmNoIHBhdGguCisgICAgICAgICAgICBGaW5hbGx5LCBCaXRCYWtlIHBhcnNlcyBpbiBvcmRlciBhbnkgYXBwZW5kIGZpbGVzIGZvdW5kIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gdXNlIHRoZSByZWNpcGUgZmlsZW5hbWUgdG8gZGVmaW5lCisgICAgICAgICAgICBwaWVjZXMgb2YgbWV0YWRhdGEuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IHRoZSByZWNpcGUKKyAgICAgICAgICAgIG5hbWUgYW5kIHZlcnNpb24gYXJlIHVzZWQgdG8gc2V0IHRoZSB2YXJpYWJsZXMKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+IGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBOID0gIiR7QGJiLnBhcnNlLkJCSGFuZGxlci52YXJzX2Zyb21fZmlsZShkLmdldFZhcignRklMRScsIEZhbHNlKSxkKVswXSBvciAnZGVmYXVsdHBrZ25hbWUnfSIKKyAgICAgUFYgPSAiJHtAYmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpLGQpWzFdIG9yICcxLjAnfSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgYSByZWNpcGUgY2FsbGVkICJzb21ldGhpbmdfMS4yLjMuYmIiIHdvdWxkIHNldAorICAgICAgICAgICAgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gdG8gInNvbWV0aGluZyIgYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiB0byAiMS4yLjMiLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSB0aGUgdGltZSBwYXJzaW5nIGlzIGNvbXBsZXRlIGZvciBhIHJlY2lwZSwgQml0QmFrZQorICAgICAgICAgICAgaGFzIGEgbGlzdCBvZiB0YXNrcyB0aGF0IHRoZSByZWNpcGUgZGVmaW5lcyBhbmQgYSBzZXQgb2YKKyAgICAgICAgICAgIGRhdGEgY29uc2lzdGluZyBvZiBrZXlzIGFuZCB2YWx1ZXMgYXMgd2VsbCBhcworICAgICAgICAgICAgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFza3MuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgZG9lcyBub3QgbmVlZCBhbGwgb2YgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIEl0IG9ubHkgbmVlZHMgYSBzbWFsbCBzdWJzZXQgb2YgdGhlIGluZm9ybWF0aW9uIHRvIG1ha2UKKyAgICAgICAgICAgIGRlY2lzaW9ucyBhYm91dCB0aGUgcmVjaXBlLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBCaXRCYWtlIGNhY2hlcyB0aGUgdmFsdWVzIGluIHdoaWNoIGl0IGlzCisgICAgICAgICAgICBpbnRlcmVzdGVkIGFuZCBkb2VzIG5vdCBzdG9yZSB0aGUgcmVzdCBvZiB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBFeHBlcmllbmNlIGhhcyBzaG93biBpdCBpcyBmYXN0ZXIgdG8gcmUtcGFyc2UgdGhlIG1ldGFkYXRhIHRoYW4gdG8KKyAgICAgICAgICAgIHRyeSBhbmQgd3JpdGUgaXQgb3V0IHRvIHRoZSBkaXNrIGFuZCB0aGVuIHJlbG9hZCBpdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlcmUgcG9zc2libGUsIHN1YnNlcXVlbnQgQml0QmFrZSBjb21tYW5kcyByZXVzZSB0aGlzIGNhY2hlIG9mCisgICAgICAgICAgICByZWNpcGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBUaGUgdmFsaWRpdHkgb2YgdGhpcyBjYWNoZSBpcyBkZXRlcm1pbmVkIGJ5IGZpcnN0IGNvbXB1dGluZyBhCisgICAgICAgICAgICBjaGVja3N1bSBvZiB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGRhdGEgKHNlZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX0hBU0hDT05GSUdfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfSEFTSENPTkZJR19XSElURUxJU1Q8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICBhbmQgdGhlbiBjaGVja2luZyBpZiB0aGUgY2hlY2tzdW0gbWF0Y2hlcy4KKyAgICAgICAgICAgIElmIHRoYXQgY2hlY2tzdW0gbWF0Y2hlcyB3aGF0IGlzIGluIHRoZSBjYWNoZSBhbmQgdGhlIHJlY2lwZQorICAgICAgICAgICAgYW5kIGNsYXNzIGZpbGVzIGhhdmUgbm90IGNoYW5nZWQsIEJpdEJha2UgaXMgYWJsZSB0byB1c2UKKyAgICAgICAgICAgIHRoZSBjYWNoZS4KKyAgICAgICAgICAgIEJpdEJha2UgdGhlbiByZWxvYWRzIHRoZSBjYWNoZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlY2lwZQorICAgICAgICAgICAgaW5zdGVhZCBvZiByZXBhcnNpbmcgaXQgZnJvbSBzY3JhdGNoLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZWNpcGUgZmlsZSBjb2xsZWN0aW9ucyBleGlzdCB0byBhbGxvdyB0aGUgdXNlciB0bworICAgICAgICAgICAgaGF2ZSBtdWx0aXBsZSByZXBvc2l0b3JpZXMgb2YKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlcyB0aGF0IGNvbnRhaW4gdGhlIHNhbWUKKyAgICAgICAgICAgIGV4YWN0IHBhY2thZ2UuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgb25lIGNvdWxkIGVhc2lseSB1c2UgdGhlbSB0byBtYWtlIG9uZSdzCisgICAgICAgICAgICBvd24gbG9jYWwgY29weSBvZiBhbiB1cHN0cmVhbSByZXBvc2l0b3J5LCBidXQgd2l0aAorICAgICAgICAgICAgY3VzdG9tIG1vZGlmaWNhdGlvbnMgdGhhdCBvbmUgZG9lcyBub3Qgd2FudCB1cHN0cmVhbS4KKyAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBCQkZJTEVTID0gIi9zdHVmZi9vcGVuZW1iZWRkZWQvKi8qLmJiIC9zdHVmZi9vcGVuZW1iZWRkZWQubW9kaWZpZWQvKi8qLmJiIgorICAgIEJCRklMRV9DT0xMRUNUSU9OUyA9ICJ1cHN0cmVhbSBsb2NhbCIKKyAgICBCQkZJTEVfUEFUVEVSTl91cHN0cmVhbSA9ICJeL3N0dWZmL29wZW5lbWJlZGRlZC8iCisgICAgQkJGSUxFX1BBVFRFUk5fbG9jYWwgPSAiXi9zdHVmZi9vcGVuZW1iZWRkZWQubW9kaWZpZWQvIgorICAgIEJCRklMRV9QUklPUklUWV91cHN0cmVhbSA9ICI1IgorICAgIEJCRklMRV9QUklPUklUWV9sb2NhbCA9ICIxMCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBsYXllcnMgbWVjaGFuaXNtIGlzIG5vdyB0aGUgcHJlZmVycmVkIG1ldGhvZCBvZiBjb2xsZWN0aW5nCisgICAgICAgICAgICAgICAgY29kZS4KKyAgICAgICAgICAgICAgICBXaGlsZSB0aGUgY29sbGVjdGlvbnMgY29kZSByZW1haW5zLCBpdHMgbWFpbiB1c2UgaXMgdG8gc2V0IGxheWVyCisgICAgICAgICAgICAgICAgcHJpb3JpdGllcyBhbmQgdG8gZGVhbCB3aXRoIG92ZXJsYXAgKGNvbmZsaWN0cykgYmV0d2VlbiBsYXllcnMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYmItYml0YmFrZS1wcm92aWRlcnMnPgorICAgICAgICA8dGl0bGU+UHJvdmlkZXJzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzc3VtaW5nIEJpdEJha2UgaGFzIGJlZW4gaW5zdHJ1Y3RlZCB0byBleGVjdXRlIGEgdGFyZ2V0CisgICAgICAgICAgICBhbmQgdGhhdCBhbGwgdGhlIHJlY2lwZSBmaWxlcyBoYXZlIGJlZW4gcGFyc2VkLCBCaXRCYWtlCisgICAgICAgICAgICBzdGFydHMgdG8gZmlndXJlIG91dCBob3cgdG8gYnVpbGQgdGhlIHRhcmdldC4KKyAgICAgICAgICAgIEJpdEJha2UgbG9va3MgdGhyb3VnaCB0aGUgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gbGlzdAorICAgICAgICAgICAgZm9yIGVhY2ggb2YgdGhlIHJlY2lwZXMuCisgICAgICAgICAgICBBIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IGxpc3QgaXMgdGhlIGxpc3Qgb2YgbmFtZXMgYnkgd2hpY2gKKyAgICAgICAgICAgIHRoZSByZWNpcGUgY2FuIGJlIGtub3duLgorICAgICAgICAgICAgRWFjaCByZWNpcGUncyA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBsaXN0IGlzIGNyZWF0ZWQKKyAgICAgICAgICAgIGltcGxpY2l0bHkgdGhyb3VnaCB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlCisgICAgICAgICAgICBhbmQgZXhwbGljaXRseSB0aHJvdWdoIHRoZSByZWNpcGUncworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBST1ZJREVTJz48ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBpcyBvcHRpb25hbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiBhIHJlY2lwZSB1c2VzIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+LCB0aGF0IHJlY2lwZSdzCisgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGNhbiBiZSBmb3VuZCB1bmRlciBhbiBhbHRlcm5hdGl2ZSBuYW1lIG9yIG5hbWVzIG90aGVyCisgICAgICAgICAgICB0aGFuIHRoZSBpbXBsaWNpdCA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPiBuYW1lLgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSBhIHJlY2lwZSBuYW1lZCA8ZmlsZW5hbWU+a2V5Ym9hcmRfMS4wLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGNvbnRhaW5lZCB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUk9WSURFUyArPSAiZnVsbGtleWJvYXJkIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IGxpc3QgZm9yIHRoaXMgcmVjaXBlIGJlY29tZXMKKyAgICAgICAgICAgICJrZXlib2FyZCIsIHdoaWNoIGlzIGltcGxpY2l0LCBhbmQgImZ1bGxrZXlib2FyZCIsIHdoaWNoIGlzIGV4cGxpY2l0LgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgZnVuY3Rpb25hbGl0eSBmb3VuZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPmtleWJvYXJkXzEuMC5iYjwvZmlsZW5hbWU+IGNhbiBiZSBmb3VuZCB1bmRlciB0d28KKyAgICAgICAgICAgIGRpZmZlcmVudCBuYW1lcy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdiYi1iaXRiYWtlLXByZWZlcmVuY2VzJz4KKyAgICAgICAgPHRpdGxlPlByZWZlcmVuY2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBsaXN0IGlzIG9ubHkgcGFydCBvZiB0aGUgc29sdXRpb24KKyAgICAgICAgICAgIGZvciBmaWd1cmluZyBvdXQgYSB0YXJnZXQncyByZWNpcGVzLgorICAgICAgICAgICAgQmVjYXVzZSB0YXJnZXRzIG1pZ2h0IGhhdmUgbXVsdGlwbGUgcHJvdmlkZXJzLCBCaXRCYWtlIG5lZWRzCisgICAgICAgICAgICB0byBwcmlvcml0aXplIHByb3ZpZGVycyBieSBkZXRlcm1pbmluZyBwcm92aWRlciBwcmVmZXJlbmNlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBjb21tb24gZXhhbXBsZSBpbiB3aGljaCBhIHRhcmdldCBoYXMgbXVsdGlwbGUgcHJvdmlkZXJzCisgICAgICAgICAgICBpcyAidmlydHVhbC9rZXJuZWwiLCB3aGljaCBpcyBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IGxpc3QgZm9yIGVhY2gga2VybmVsIHJlY2lwZS4KKyAgICAgICAgICAgIEVhY2ggbWFjaGluZSBvZnRlbiBzZWxlY3RzIHRoZSBiZXN0IGtlcm5lbCBwcm92aWRlciBieSB1c2luZyBhCisgICAgICAgICAgICBsaW5lIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyBpbiB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC15b2N0byIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBkZWZhdWx0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBpcyB0aGUgcHJvdmlkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB0YXJnZXQuCisgICAgICAgICAgICBCaXRCYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCisgICAgICAgICAgICByZXNvbHZlcyB0aGVtIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgdXNpbmcgdGhpcyBwcm9jZXNzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIGhvdyBwcm92aWRlcnMgYXJlIGNob3NlbiBpcyBtYWRlIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0CisgICAgICAgICAgICB0aGF0IG11bHRpcGxlIHZlcnNpb25zIG1pZ2h0IGV4aXN0IGZvciBhIGdpdmVuIHByb3ZpZGVyLgorICAgICAgICAgICAgQml0QmFrZSBkZWZhdWx0cyB0byB0aGUgaGlnaGVzdCB2ZXJzaW9uIG9mIGEgcHJvdmlkZXIuCisgICAgICAgICAgICBWZXJzaW9uIGNvbXBhcmlzb25zIGFyZSBtYWRlIHVzaW5nIHRoZSBzYW1lIG1ldGhvZCBhcyBEZWJpYW4uCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QUkVGRVJSRURfVkVSU0lPTic+PGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSB0byBzcGVjaWZ5IGEgcGFydGljdWxhciB2ZXJzaW9uLgorICAgICAgICAgICAgWW91IGNhbiBpbmZsdWVuY2UgdGhlIG9yZGVyIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURFRkFVTFRfUFJFRkVSRU5DRSc+PGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGZpbGVzIGhhdmUgYSBwcmVmZXJlbmNlIG9mICIwIi4KKyAgICAgICAgICAgIFNldHRpbmcgPGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+IHRvICItMSIgbWFrZXMgdGhlCisgICAgICAgICAgICByZWNpcGUgdW5saWtlbHkgdG8gYmUgdXNlZCB1bmxlc3MgaXQgaXMgZXhwbGljaXRseSByZWZlcmVuY2VkLgorICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+REVGQVVMVF9QUkVGRVJFTkNFPC9maWxlbmFtZT4gdG8gIjEiIG1ha2VzIGl0CisgICAgICAgICAgICBsaWtlbHkgdGhlIHJlY2lwZSBpcyB1c2VkLgorICAgICAgICAgICAgPGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT4gb3ZlcnJpZGVzIGFueQorICAgICAgICAgICAgPGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+IHNldHRpbmcuCisgICAgICAgICAgICA8ZmlsZW5hbWU+REVGQVVMVF9QUkVGRVJFTkNFPC9maWxlbmFtZT4gaXMgb2Z0ZW4gdXNlZCB0byBtYXJrIG5ld2VyCisgICAgICAgICAgICBhbmQgbW9yZSBleHBlcmltZW50YWwgcmVjaXBlIHZlcnNpb25zIHVudGlsIHRoZXkgaGF2ZSB1bmRlcmdvbmUKKyAgICAgICAgICAgIHN1ZmZpY2llbnQgdGVzdGluZyB0byBiZSBjb25zaWRlcmVkIHN0YWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUg4oCcdmVyc2lvbnPigJ0gb2YgYSBnaXZlbiByZWNpcGUsCisgICAgICAgICAgICBCaXRCYWtlIGRlZmF1bHRzIHRvIHNlbGVjdGluZyB0aGUgbW9zdCByZWNlbnQKKyAgICAgICAgICAgIHZlcnNpb24sIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgorICAgICAgICAgICAgSWYgdGhlIHJlY2lwZSBpbiBxdWVzdGlvbiBoYXMgYQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURFRkFVTFRfUFJFRkVSRU5DRSc+PGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgc2V0IGxvd2VyIHRoYW4gdGhlIG90aGVyIHJlY2lwZXMgKGRlZmF1bHQgaXMgMCksIHRoZW4KKyAgICAgICAgICAgIGl0IHdpbGwgbm90IGJlIHNlbGVjdGVkLgorICAgICAgICAgICAgVGhpcyBhbGxvd3MgdGhlIHBlcnNvbiBvciBwZXJzb25zIG1haW50YWluaW5nCisgICAgICAgICAgICB0aGUgcmVwb3NpdG9yeSBvZiByZWNpcGUgZmlsZXMgdG8gc3BlY2lmeQorICAgICAgICAgICAgdGhlaXIgcHJlZmVyZW5jZSBmb3IgdGhlIGRlZmF1bHQgc2VsZWN0ZWQgdmVyc2lvbi4KKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIHVzZXIgY2FuIHNwZWNpZnkgdGhlaXIgcHJlZmVycmVkIHZlcnNpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSBmaXJzdCByZWNpcGUgaXMgbmFtZWQgPGZpbGVuYW1lPmFfMS4xLmJiPC9maWxlbmFtZT4sIHRoZW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZQorICAgICAgICAgICAgd2lsbCBiZSBzZXQgdG8g4oCcYeKAnSwgYW5kIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRvIDEuMS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGh1cywgaWYgYSByZWNpcGUgbmFtZWQgPGZpbGVuYW1lPmFfMS4yLmJiPC9maWxlbmFtZT4gZXhpc3RzLCBCaXRCYWtlCisgICAgICAgICAgICB3aWxsIGNob29zZSAxLjIgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBkZWZpbmUgdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpbiBhCisgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgQml0QmFrZSBwYXJzZXMsIHlvdQorICAgICAgICAgICAgY2FuIGNoYW5nZSB0aGF0IHByZWZlcmVuY2U6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2EgPSAiMS4xIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBjb21tb24gZm9yIGEgcmVjaXBlIHRvIHByb3ZpZGUgdHdvIHZlcnNpb25zIC0tIGEgc3RhYmxlLAorICAgICAgICAgICAgICAgIG51bWJlcmVkIChhbmQgcHJlZmVycmVkKSB2ZXJzaW9uLCBhbmQgYSB2ZXJzaW9uIHRoYXQgaXMKKyAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNoZWNrZWQgb3V0IGZyb20gYSBzb3VyY2UgY29kZSByZXBvc2l0b3J5IHRoYXQKKyAgICAgICAgICAgICAgICBpcyBjb25zaWRlcmVkIG1vcmUgImJsZWVkaW5nIGVkZ2UiIGJ1dCBjYW4gYmUgc2VsZWN0ZWQgb25seQorICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgT3BlbkVtYmVkZGVkIGNvZGViYXNlLCB0aGVyZSBpcyBhIHN0YW5kYXJkLAorICAgICAgICAgICAgICAgIHZlcnNpb25lZCByZWNpcGUgZmlsZSBmb3IgQnVzeUJveCwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveF8xLjIyLjEuYmI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBidXQgdGhlcmUgaXMgYWxzbyBhIEdpdC1iYXNlZCB2ZXJzaW9uLAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94X2dpdC5iYjwvZmlsZW5hbWU+LCB3aGljaCBleHBsaWNpdGx5IGNvbnRhaW5zIHRoZSBsaW5lCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIERFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgdG8gZW5zdXJlIHRoYXQgdGhlIG51bWJlcmVkLCBzdGFibGUgdmVyc2lvbiBpcyBhbHdheXMgcHJlZmVycmVkCisgICAgICAgICAgICAgICAgdW5sZXNzIHRoZSBkZXZlbG9wZXIgc2VsZWN0cyBvdGhlcndpc2UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYmItYml0YmFrZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICA8dGl0bGU+RGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEVhY2ggdGFyZ2V0IEJpdEJha2UgYnVpbGRzIGNvbnNpc3RzIG9mIG11bHRpcGxlIHRhc2tzIHN1Y2ggYXMKKyAgICAgICAgICAgIDxmaWxlbmFtZT5mZXRjaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dW5wYWNrPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+cGF0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5jb21waWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICBGb3IgYmVzdCBwZXJmb3JtYW5jZSBvbiBtdWx0aS1jb3JlIHN5c3RlbXMsIEJpdEJha2UgY29uc2lkZXJzIGVhY2gKKyAgICAgICAgICAgIHRhc2sgYXMgYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgICAgIGVudGl0eSB3aXRoIGl0cyBvd24gc2V0IG9mIGRlcGVuZGVuY2llcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkIHRocm91Z2ggc2V2ZXJhbCB2YXJpYWJsZXMuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdmFyaWFibGVzIEJpdEJha2UgdXNlcyBpbgorICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3JlZi1iYi12YXJpYWJsZXMtZ2xvcyc+VmFyaWFibGVzIEdsb3NzYXJ5PC9saW5rPgorICAgICAgICAgICAgbmVhciB0aGUgZW5kIG9mIHRoaXMgbWFudWFsLgorICAgICAgICAgICAgQXQgYSBiYXNpYyBsZXZlbCwgaXQgaXMgc3VmZmljaWVudCB0byBrbm93IHRoYXQgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+IGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGVzIHdoZW4KKyAgICAgICAgICAgIGNhbGN1bGF0aW5nIGRlcGVuZGVuY2llcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IEJpdEJha2UgaGFuZGxlcyBkZXBlbmRlbmNpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXBlbmRlbmNpZXMnPkRlcGVuZGVuY2llczwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLWJpdGJha2UtdGFza2xpc3QnPgorICAgICAgICA8dGl0bGU+VGhlIFRhc2sgTGlzdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCYXNlZCBvbiB0aGUgZ2VuZXJhdGVkIGxpc3Qgb2YgcHJvdmlkZXJzIGFuZCB0aGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgIEJpdEJha2UgY2FuIG5vdyBjYWxjdWxhdGUgZXhhY3RseSB3aGF0IHRhc2tzIGl0IG5lZWRzIHRvIHJ1biBhbmQgaW4gd2hhdAorICAgICAgICAgICAgb3JkZXIgaXQgbmVlZHMgdG8gcnVuIHRoZW0uCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdleGVjdXRpbmctdGFza3MnPkV4ZWN1dGluZyBUYXNrczwvbGluaz4iIHNlY3Rpb24gaGFzIG1vcmUKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyBCaXRCYWtlIGNob29zZXMgd2hpY2ggdGFzayB0byBleGVjdXRlIG5leHQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBidWlsZCBub3cgc3RhcnRzIHdpdGggQml0QmFrZSBmb3JraW5nIG9mZiB0aHJlYWRzIHVwIHRvIHRoZSBsaW1pdCBzZXQgaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBCaXRCYWtlIGNvbnRpbnVlcyB0byBmb3JrIHRocmVhZHMgYXMgbG9uZyBhcyB0aGVyZSBhcmUgdGFza3MgcmVhZHkgdG8gcnVuLAorICAgICAgICAgICAgdGhvc2UgdGFza3MgaGF2ZSBhbGwgdGhlaXIgZGVwZW5kZW5jaWVzIG1ldCwgYW5kIHRoZSB0aHJlYWQgdGhyZXNob2xkIGhhcyBub3QgYmVlbgorICAgICAgICAgICAgZXhjZWVkZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHlvdSBjYW4gZ3JlYXRseSBzcGVlZCB1cCB0aGUgYnVpbGQgdGltZSBieSBwcm9wZXJseSBzZXR0aW5nCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkJCX05VTUJFUl9USFJFQURTPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIGVhY2ggdGFzayBjb21wbGV0ZXMsIGEgdGltZXN0YW1wIGlzIHdyaXR0ZW4gdG8gdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KKyAgICAgICAgICAgIE9uIHN1YnNlcXVlbnQgcnVucywgQml0QmFrZSBsb29rcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5IHdpdGhpbgorICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9zdGFtcHM8L2ZpbGVuYW1lPiBhbmQgZG9lcyBub3QgcmVydW4KKyAgICAgICAgICAgIHRhc2tzIHRoYXQgYXJlIGFscmVhZHkgY29tcGxldGVkIHVubGVzcyBhIHRpbWVzdGFtcCBpcyBmb3VuZCB0byBiZSBpbnZhbGlkLgorICAgICAgICAgICAgQ3VycmVudGx5LCBpbnZhbGlkIHRpbWVzdGFtcHMgYXJlIG9ubHkgY29uc2lkZXJlZCBvbiBhIHBlcgorICAgICAgICAgICAgcmVjaXBlIGZpbGUgYmFzaXMuCisgICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGlmIHRoZSBjb25maWd1cmUgc3RhbXAgaGFzIGEgdGltZXN0YW1wIGdyZWF0ZXIgdGhhbiB0aGUKKyAgICAgICAgICAgIGNvbXBpbGUgdGltZXN0YW1wIGZvciBhIGdpdmVuIHRhcmdldCwgdGhlbiB0aGUgY29tcGlsZSB0YXNrIHdvdWxkIHJlcnVuLgorICAgICAgICAgICAgUnVubmluZyB0aGUgY29tcGlsZSB0YXNrIGFnYWluLCBob3dldmVyLCBoYXMgbm8gZWZmZWN0IG9uIG90aGVyIHByb3ZpZGVycworICAgICAgICAgICAgdGhhdCBkZXBlbmQgb24gdGhhdCB0YXJnZXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBleGFjdCBmb3JtYXQgb2YgdGhlIHN0YW1wcyBpcyBwYXJ0bHkgY29uZmlndXJhYmxlLgorICAgICAgICAgICAgSW4gbW9kZXJuIHZlcnNpb25zIG9mIEJpdEJha2UsIGEgaGFzaCBpcyBhcHBlbmRlZCB0byB0aGUKKyAgICAgICAgICAgIHN0YW1wIHNvIHRoYXQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgdGhlIHN0YW1wIGJlY29tZXMKKyAgICAgICAgICAgIGludmFsaWQgYW5kIHRoZSB0YXNrIGlzIGF1dG9tYXRpY2FsbHkgcmVydW4uCisgICAgICAgICAgICBUaGlzIGhhc2gsIG9yIHNpZ25hdHVyZSB1c2VkLCBpcyBnb3Zlcm5lZCBieSB0aGUgc2lnbmF0dXJlIHBvbGljeQorICAgICAgICAgICAgdGhhdCBpcyBjb25maWd1cmVkIChzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2hlY2tzdW1zJz5DaGVja3N1bXMgKFNpZ25hdHVyZXMpPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uKS4KKyAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gYXBwZW5kIGV4dHJhIG1ldGFkYXRhIHRvIHRoZSBzdGFtcCB1c2luZworICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5bc3RhbXAtZXh0cmEtaW5mb108L2ZpbGVuYW1lPiB0YXNrIGZsYWcuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgT3BlbkVtYmVkZGVkIHVzZXMgdGhpcyBmbGFnIHRvIG1ha2Ugc29tZSB0YXNrcyBtYWNoaW5lLXNwZWNpZmljLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBTb21lIHRhc2tzIGFyZSBtYXJrZWQgYXMgIm5vc3RhbXAiIHRhc2tzLgorICAgICAgICAgICAgTm8gdGltZXN0YW1wIGZpbGUgaXMgY3JlYXRlZCB3aGVuIHRoZXNlIHRhc2tzIGFyZSBydW4uCisgICAgICAgICAgICBDb25zZXF1ZW50bHksICJub3N0YW1wIiB0YXNrcyBhcmUgYWx3YXlzIHJlcnVuLgorICAgICAgICA8L25vdGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0YXNrcywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Rhc2tzJz5UYXNrczwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZXhlY3V0aW5nLXRhc2tzJz4KKyAgICAgICAgPHRpdGxlPkV4ZWN1dGluZyBUYXNrczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUYXNrcyBjYW4gYmUgZWl0aGVyIGEgc2hlbGwgdGFzayBvciBhIFB5dGhvbiB0YXNrLgorICAgICAgICAgICAgRm9yIHNoZWxsIHRhc2tzLCBCaXRCYWtlIHdyaXRlcyBhIHNoZWxsIHNjcmlwdCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItYmItVCc+PGZpbGVuYW1lPlQ8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9ydW4uZG9fdGFza25hbWUuPHJlcGxhY2VhYmxlPnBpZDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgIGFuZCB0aGVuIGV4ZWN1dGVzIHRoZSBzY3JpcHQuCisgICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIHNoZWxsIHNjcmlwdCBjb250YWlucyBhbGwgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcywKKyAgICAgICAgICAgIGFuZCB0aGUgc2hlbGwgZnVuY3Rpb25zIHdpdGggYWxsIHZhcmlhYmxlcyBleHBhbmRlZC4KKyAgICAgICAgICAgIE91dHB1dCBmcm9tIHRoZSBzaGVsbCBzY3JpcHQgZ29lcyB0byB0aGUgZmlsZQorICAgICAgICAgICAgPGZpbGVuYW1lPiR7VH0vbG9nLmRvX3Rhc2tuYW1lLjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgTG9va2luZyBhdCB0aGUgZXhwYW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluIHRoZSBydW4gZmlsZSBhbmQKKyAgICAgICAgICAgIHRoZSBvdXRwdXQgaW4gdGhlIGxvZyBmaWxlcyBpcyBhIHVzZWZ1bCBkZWJ1Z2dpbmcgdGVjaG5pcXVlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgUHl0aG9uIHRhc2tzLCBCaXRCYWtlIGV4ZWN1dGVzIHRoZSB0YXNrIGludGVybmFsbHkgYW5kIGxvZ3MKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbC4KKyAgICAgICAgICAgIEZ1dHVyZSB2ZXJzaW9ucyBvZiBCaXRCYWtlIHdpbGwgd3JpdGUgdGhlIGZ1bmN0aW9ucyB0byBmaWxlcworICAgICAgICAgICAgc2ltaWxhciB0byB0aGUgd2F5IHNoZWxsIHRhc2tzIGFyZSBoYW5kbGVkLgorICAgICAgICAgICAgTG9nZ2luZyB3aWxsIGJlIGhhbmRsZWQgaW4gYSB3YXkgc2ltaWxhciB0byBzaGVsbCB0YXNrcyBhcyB3ZWxsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgb3JkZXIgaW4gd2hpY2ggQml0QmFrZSBydW5zIHRoZSB0YXNrcyBpcyBjb250cm9sbGVkIGJ5IGl0cworICAgICAgICAgICAgdGFzayBzY2hlZHVsZXIuCisgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBjb25maWd1cmUgdGhlIHNjaGVkdWxlciBhbmQgZGVmaW5lIGN1c3RvbQorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZXNlIHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgdGhlCisgICAgICAgICAgICBiZWhhdmlvcjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfU0NIRURVTEVSJz48ZmlsZW5hbWU+QkJfU0NIRURVTEVSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX1NDSEVEVUxFUlMnPjxmaWxlbmFtZT5CQl9TQ0hFRFVMRVJTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBoYXZlIGZ1bmN0aW9ucyBydW4gYmVmb3JlIGFuZCBhZnRlciBhIHRhc2sncyBtYWluCisgICAgICAgICAgICBmdW5jdGlvbi4KKyAgICAgICAgICAgIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUgPGZpbGVuYW1lPltwcmVmdW5jc108L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5bcG9zdGZ1bmNzXTwvZmlsZW5hbWU+IGZsYWdzIG9mIHRoZSB0YXNrCisgICAgICAgICAgICB0aGF0IGxpc3RzIHRoZSBmdW5jdGlvbnMgdG8gcnVuLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NoZWNrc3Vtcyc+CisgICAgICAgIDx0aXRsZT5DaGVja3N1bXMgKFNpZ25hdHVyZXMpPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEEgY2hlY2tzdW0gaXMgYSB1bmlxdWUgc2lnbmF0dXJlIG9mIGEgdGFzaydzIGlucHV0cy4KKyAgICAgICAgICAgIFRoZSBzaWduYXR1cmUgb2YgYSB0YXNrIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBhIHRhc2sKKyAgICAgICAgICAgIG5lZWRzIHRvIGJlIHJ1bi4KKyAgICAgICAgICAgIEJlY2F1c2UgaXQgaXMgYSBjaGFuZ2UgaW4gYSB0YXNrJ3MgaW5wdXRzIHRoYXQgdHJpZ2dlcnMgcnVubmluZworICAgICAgICAgICAgdGhlIHRhc2ssIEJpdEJha2UgbmVlZHMgdG8gZGV0ZWN0IGFsbCB0aGUgaW5wdXRzIHRvIGEgZ2l2ZW4gdGFzay4KKyAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgdGhpcyB0dXJucyBvdXQgdG8gYmUgZmFpcmx5IGVhc3kgYmVjYXVzZQorICAgICAgICAgICAgQml0QmFrZSBnZW5lcmF0ZXMgYSAicnVuIiBzaGVsbCBzY3JpcHQgZm9yIGVhY2ggdGFzayBhbmQKKyAgICAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGNoZWNrc3VtIHRoYXQgZ2l2ZXMgeW91IGEgZ29vZCBpZGVhIG9mIHdoZW4KKyAgICAgICAgICAgIHRoZSB0YXNrJ3MgZGF0YSBjaGFuZ2VzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBjb21wbGljYXRlIHRoZSBwcm9ibGVtLCBzb21lIHRoaW5ncyBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCisgICAgICAgICAgICB0aGUgY2hlY2tzdW0uCisgICAgICAgICAgICBGaXJzdCwgdGhlcmUgaXMgdGhlIGFjdHVhbCBzcGVjaWZpYyBidWlsZCBwYXRoIG9mIGEgZ2l2ZW4gdGFzayAtCisgICAgICAgICAgICB0aGUgd29ya2luZyBkaXJlY3RvcnkuCisgICAgICAgICAgICBJdCBkb2VzIG5vdCBtYXR0ZXIgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMgYmVjYXVzZSBpdCBzaG91bGQgbm90CisgICAgICAgICAgICBhZmZlY3QgdGhlIG91dHB1dCBmb3IgdGFyZ2V0IHBhY2thZ2VzLgorICAgICAgICAgICAgVGhlIHNpbXBsaXN0aWMgYXBwcm9hY2ggZm9yIGV4Y2x1ZGluZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgdG8gc2V0CisgICAgICAgICAgICBpdCB0byBzb21lIGZpeGVkIHZhbHVlIGFuZCBjcmVhdGUgdGhlIGNoZWNrc3VtIGZvciB0aGUgInJ1biIgc2NyaXB0LgorICAgICAgICAgICAgQml0QmFrZSBnb2VzIG9uZSBzdGVwIGJldHRlciBhbmQgdXNlcyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9IQVNIQkFTRV9XSElURUxJU1QnPjxmaWxlbmFtZT5CQl9IQVNIQkFTRV9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIHRvIGRlZmluZSBhIGxpc3Qgb2YgdmFyaWFibGVzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkCisgICAgICAgICAgICB3aGVuIGdlbmVyYXRpbmcgdGhlIHNpZ25hdHVyZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFub3RoZXIgcHJvYmxlbSByZXN1bHRzIGZyb20gdGhlICJydW4iIHNjcmlwdHMgY29udGFpbmluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICAgICAgbWlnaHQgb3IgbWlnaHQgbm90IGdldCBjYWxsZWQuCisgICAgICAgICAgICBUaGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpZ3VyZXMgb3V0IGRlcGVuZGVuY2llcworICAgICAgICAgICAgYmV0d2VlbiBzaGVsbCBmdW5jdGlvbnMuCisgICAgICAgICAgICBUaGlzIGNvZGUgaXMgdXNlZCB0byBwcnVuZSB0aGUgInJ1biIgc2NyaXB0cyBkb3duIHRvIHRoZSBtaW5pbXVtIHNldCwKKyAgICAgICAgICAgIHRoZXJlYnkgYWxsZXZpYXRpbmcgdGhpcyBwcm9ibGVtIGFuZCBtYWtpbmcgdGhlICJydW4iIHNjcmlwdHMgbXVjaCBtb3JlCisgICAgICAgICAgICByZWFkYWJsZSBhcyBhIGJvbnVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTbyBmYXIgd2UgaGF2ZSBzb2x1dGlvbnMgZm9yIHNoZWxsIHNjcmlwdHMuCisgICAgICAgICAgICBXaGF0IGFib3V0IFB5dGhvbiB0YXNrcz8KKyAgICAgICAgICAgIFRoZSBzYW1lIGFwcHJvYWNoIGFwcGxpZXMgZXZlbiB0aG91Z2ggdGhlc2UgdGFza3MgYXJlIG1vcmUgZGlmZmljdWx0LgorICAgICAgICAgICAgVGhlIHByb2Nlc3MgbmVlZHMgdG8gZmlndXJlIG91dCB3aGF0IHZhcmlhYmxlcyBhIFB5dGhvbiBmdW5jdGlvbiBhY2Nlc3NlcworICAgICAgICAgICAgYW5kIHdoYXQgZnVuY3Rpb25zIGl0IGNhbGxzLgorICAgICAgICAgICAgQWdhaW4sIHRoZSBpbmNyZW1lbnRhbCBidWlsZCBzb2x1dGlvbiBjb250YWlucyBjb2RlIHRoYXQgZmlyc3QgZmlndXJlcyBvdXQKKyAgICAgICAgICAgIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24gZGVwZW5kZW5jaWVzLCBhbmQgdGhlbiBjcmVhdGVzIGEgY2hlY2tzdW0gZm9yIHRoZSBkYXRhCisgICAgICAgICAgICB1c2VkIGFzIHRoZSBpbnB1dCB0byB0aGUgdGFzay4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTGlrZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgY2FzZSwgc2l0dWF0aW9ucyBleGlzdCB3aGVyZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzLCB5b3UgY2FuIGluc3RydWN0IHRoZSBidWlsZCBwcm9jZXNzIHRvIGlnbm9yZSBhIGRlcGVuZGVuY3kKKyAgICAgICAgICAgIGJ5IHVzaW5nIGEgbGluZSBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQVJDSFNbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgZW5zdXJlcyB0aGF0IHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9BUkNIUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGRvZXMgbm90CisgICAgICAgICAgICBkZXBlbmQgb24gdGhlIHZhbHVlIG9mIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4sIGV2ZW4gaWYgaXQgZG9lcyByZWZlcmVuY2UgaXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEVxdWFsbHksIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB3ZSBuZWVkIHRvIGFkZCBkZXBlbmRlbmNpZXMgQml0QmFrZQorICAgICAgICAgICAgaXMgbm90IGFibGUgdG8gZmluZC4KKyAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IHVzaW5nIGEgbGluZSBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBQQUNLQUdFX0FSQ0hTW3ZhcmRlcHNdID0gIk1BQ0hJTkUiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgZXhwbGljaXRseSBhZGRzIHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFzIGEKKyAgICAgICAgICAgIGRlcGVuZGVuY3kgZm9yIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0hTPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENvbnNpZGVyIGEgY2FzZSB3aXRoIGluLWxpbmUgUHl0aG9uLCBmb3IgZXhhbXBsZSwgd2hlcmUgQml0QmFrZSBpcyBub3QKKyAgICAgICAgICAgIGFibGUgdG8gZmlndXJlIG91dCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICBXaGVuIHJ1bm5pbmcgaW4gZGVidWcgbW9kZSAoaS5lLiB1c2luZyA8ZmlsZW5hbWU+LURERDwvZmlsZW5hbWU+KSwgQml0QmFrZQorICAgICAgICAgICAgcHJvZHVjZXMgb3V0cHV0IHdoZW4gaXQgZGlzY292ZXJzIHNvbWV0aGluZyBmb3Igd2hpY2ggaXQgY2Fubm90IGZpZ3VyZSBvdXQKKyAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGh1cyBmYXIsIHRoaXMgc2VjdGlvbiBoYXMgbGltaXRlZCBkaXNjdXNzaW9uIHRvIHRoZSBkaXJlY3QgaW5wdXRzIGludG8gYSB0YXNrLgorICAgICAgICAgICAgSW5mb3JtYXRpb24gYmFzZWQgb24gZGlyZWN0IGlucHV0cyBpcyByZWZlcnJlZCB0byBhcyB0aGUgImJhc2VoYXNoIiBpbiB0aGUKKyAgICAgICAgICAgIGNvZGUuCisgICAgICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBzdGlsbCB0aGUgcXVlc3Rpb24gb2YgYSB0YXNrJ3MgaW5kaXJlY3QgaW5wdXRzIC0gdGhlCisgICAgICAgICAgICB0aGluZ3MgdGhhdCB3ZXJlIGFscmVhZHkgYnVpbHQgYW5kIHByZXNlbnQgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFRoZSBjaGVja3N1bSAob3Igc2lnbmF0dXJlKSBmb3IgYSBwYXJ0aWN1bGFyIHRhc2sgbmVlZHMgdG8gYWRkIHRoZSBoYXNoZXMKKyAgICAgICAgICAgIG9mIGFsbCB0aGUgdGFza3Mgb24gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdGFzayBkZXBlbmRzLgorICAgICAgICAgICAgQ2hvb3Npbmcgd2hpY2ggZGVwZW5kZW5jaWVzIHRvIGFkZCBpcyBhIHBvbGljeSBkZWNpc2lvbi4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBlZmZlY3QgaXMgdG8gZ2VuZXJhdGUgYSBtYXN0ZXIgY2hlY2tzdW0gdGhhdCBjb21iaW5lcyB0aGUgYmFzZWhhc2gKKyAgICAgICAgICAgIGFuZCB0aGUgaGFzaGVzIG9mIHRoZSB0YXNrJ3MgZGVwZW5kZW5jaWVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBdCB0aGUgY29kZSBsZXZlbCwgdGhlcmUgYXJlIGEgdmFyaWV0eSBvZiB3YXlzIGJvdGggdGhlIGJhc2VoYXNoIGFuZCB0aGUKKyAgICAgICAgICAgIGRlcGVuZGVudCB0YXNrIGhhc2hlcyBjYW4gYmUgaW5mbHVlbmNlZC4KKyAgICAgICAgICAgIFdpdGhpbiB0aGUgQml0QmFrZSBjb25maWd1cmF0aW9uIGZpbGUsIHdlIGNhbiBnaXZlIEJpdEJha2Ugc29tZSBleHRyYSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgdG8gaGVscCBpdCBjb25zdHJ1Y3QgdGhlIGJhc2VoYXNoLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgZWZmZWN0aXZlbHkgcmVzdWx0cyBpbiBhIGxpc3Qgb2YgZ2xvYmFsIHZhcmlhYmxlCisgICAgICAgICAgICBkZXBlbmRlbmN5IGV4Y2x1ZGVzIC0gdmFyaWFibGVzIG5ldmVyIGluY2x1ZGVkIGluIGFueSBjaGVja3N1bS4KKyAgICAgICAgICAgIFRoaXMgZXhhbXBsZSB1c2VzIHZhcmlhYmxlcyBmcm9tIE9wZW5FbWJlZGRlZCB0byBoZWxwIGlsbHVzdHJhdGUKKyAgICAgICAgICAgIHRoZSBjb25jZXB0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBETF9ESVIgXAorICAgICAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFwKKyAgICAgICAgIFVTRVIgRklMRVNQQVRIIFNUQUdJTkdfRElSX0hPU1QgU1RBR0lOR19ESVJfVEFSR0VUIENPUkVCQVNFIFBSU0VSVl9IT1NUIFwKKyAgICAgICAgIFBSU0VSVl9EVU1QRElSIFBSU0VSVl9EVU1QRklMRSBQUlNFUlZfTE9DS0RPV04gUEFSQUxMRUxfTUFLRSBcCisgICAgICAgICBDQ0FDSEVfRElSIEVYVEVSTkFMX1RPT0xDSEFJTiBDQ0FDSEUgQ0NBQ0hFX0RJU0FCTEUgTElDRU5TRV9QQVRIIFNES1BLR1NVRkZJWCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGV4Y2x1ZGVzIHRoZSB3b3JrIGRpcmVjdG9yeSwgd2hpY2ggaXMgcGFydCBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcnVsZXMgZm9yIGRlY2lkaW5nIHdoaWNoIGhhc2hlcyBvZiBkZXBlbmRlbnQgdGFza3MgdG8gaW5jbHVkZSB0aHJvdWdoCisgICAgICAgICAgICBkZXBlbmRlbmN5IGNoYWlucyBhcmUgbW9yZSBjb21wbGV4IGFuZCBhcmUgZ2VuZXJhbGx5IGFjY29tcGxpc2hlZCB3aXRoIGEKKyAgICAgICAgICAgIFB5dGhvbiBmdW5jdGlvbi4KKyAgICAgICAgICAgIFRoZSBjb2RlIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHk8L2ZpbGVuYW1lPiBzaG93cyB0d28gZXhhbXBsZXMKKyAgICAgICAgICAgIG9mIHRoaXMgYW5kIGFsc28gaWxsdXN0cmF0ZXMgaG93IHlvdSBjYW4gaW5zZXJ0IHlvdXIgb3duIHBvbGljeSBpbnRvIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgIGlmIHNvIGRlc2lyZWQuCisgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgdHdvIGJhc2ljIHNpZ25hdHVyZSBnZW5lcmF0b3JzIE9wZW5FbWJlZGRlZC1Db3JlCisgICAgICAgICAgICB1c2VzOiAgIk9FQmFzaWMiIGFuZCAiT0VCYXNpY0hhc2giLgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlcmUgaXMgYSBkdW1teSAibm9vcCIgc2lnbmF0dXJlIGhhbmRsZXIgZW5hYmxlZCBpbiBCaXRCYWtlLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGF0IGJlaGF2aW9yIGlzIHVuY2hhbmdlZCBmcm9tIHByZXZpb3VzIHZlcnNpb25zLgorICAgICAgICAgICAgPGZpbGVuYW1lPk9FLUNvcmU8L2ZpbGVuYW1lPiB1c2VzIHRoZSAiT0VCYXNpY0hhc2giIHNpZ25hdHVyZSBoYW5kbGVyIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIHRocm91Z2ggdGhpcyBzZXR0aW5nIGluIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfU0lHTkFUVVJFX0hBTkRMRVIgPz0gIk9FQmFzaWNIYXNoIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlICJPRUJhc2ljSGFzaCIgPGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT4gaXMgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICAiT0VCYXNpYyIgdmVyc2lvbiBidXQgYWRkcyB0aGUgdGFzayBoYXNoIHRvIHRoZSBzdGFtcCBmaWxlcy4KKyAgICAgICAgICAgIFRoaXMgcmVzdWx0cyBpbiBhbnkgbWV0YWRhdGEgY2hhbmdlIHRoYXQgY2hhbmdlcyB0aGUgdGFzayBoYXNoLCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICBjYXVzaW5nIHRoZSB0YXNrIHRvIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCB0byBidW1wCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFsdWVzLCBhbmQgY2hhbmdlcyB0byBtZXRhZGF0YSBhdXRvbWF0aWNhbGx5IHJpcHBsZSBhY3Jvc3MgdGhlIGJ1aWxkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBlbmQgcmVzdWx0IG9mIHRoZXNlIHNpZ25hdHVyZSBnZW5lcmF0b3JzIGlzIHRvCisgICAgICAgICAgICBtYWtlIHNvbWUgZGVwZW5kZW5jeSBhbmQgaGFzaCBpbmZvcm1hdGlvbiBhdmFpbGFibGUgdG8gdGhlIGJ1aWxkLgorICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9CQVNFSEFTSF90YXNrLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGhhc2hlcyBmb3IgZWFjaCB0YXNrIGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfQkFTRUhBU0hfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT46PC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgaGFzaGVzIGZvciBlYWNoIGRlcGVuZGVudCB0YXNrLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCSEFTSERFUFNfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT46PC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHRhc2sgZGVwZW5kZW5jaWVzIGZvciBlYWNoIHRhc2suCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfVEFTS0hBU0g8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGhhc2ggb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2suCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IEJpdEJha2UncyAiLVMiIG9wdGlvbiBsZXRzIHlvdQorICAgICAgICAgICAgZGVidWcgQml0QmFrZSdzIHByb2Nlc3Npbmcgb2Ygc2lnbmF0dXJlcy4KKyAgICAgICAgICAgIFRoZSBvcHRpb25zIHBhc3NlZCB0byAtUyBhbGxvdyBkaWZmZXJlbnQgZGVidWdnaW5nIG1vZGVzCisgICAgICAgICAgICB0byBiZSB1c2VkLCBlaXRoZXIgdXNpbmcgQml0QmFrZSdzIG93biBkZWJ1ZyBmdW5jdGlvbnMKKyAgICAgICAgICAgIG9yIHBvc3NpYmx5IHRob3NlIGRlZmluZWQgaW4gdGhlIG1ldGFkYXRhL3NpZ25hdHVyZSBoYW5kbGVyCisgICAgICAgICAgICBpdHNlbGYuCisgICAgICAgICAgICBUaGUgc2ltcGxlc3QgcGFyYW1ldGVyIHRvIHBhc3MgaXMgIm5vbmUiLCB3aGljaCBjYXVzZXMgYQorICAgICAgICAgICAgc2V0IG9mIHNpZ25hdHVyZSBpbmZvcm1hdGlvbiB0byBiZSB3cml0dGVuIG91dCBpbnRvCisgICAgICAgICAgICA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0YXJnZXRzIHNwZWNpZmllZC4KKyAgICAgICAgICAgIFRoZSBvdGhlciBjdXJyZW50bHkgYXZhaWxhYmxlIHBhcmFtZXRlciBpcyAicHJpbnRkaWZmIiwKKyAgICAgICAgICAgIHdoaWNoIGNhdXNlcyBCaXRCYWtlIHRvIHRyeSB0byBlc3RhYmxpc2ggdGhlIGNsb3Nlc3QKKyAgICAgICAgICAgIHNpZ25hdHVyZSBtYXRjaCBpdCBjYW4gKGUuZy4gaW4gdGhlIHNzdGF0ZSBjYWNoZSkgYW5kIHRoZW4KKyAgICAgICAgICAgIHJ1biA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IG92ZXIgdGhlIG1hdGNoZXMKKyAgICAgICAgICAgIHRvIGRldGVybWluZSB0aGUgc3RhbXBzIGFuZCBkZWx0YSB3aGVyZSB0aGVzZSB0d28KKyAgICAgICAgICAgIHN0YW1wIHRyZWVzIGRpdmVyZ2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJdCBpcyBsaWtlbHkgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgQml0QmFrZSB3aWxsCisgICAgICAgICAgICAgICAgcHJvdmlkZSBvdGhlciBzaWduYXR1cmUgaGFuZGxlcnMgdHJpZ2dlcmVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsICItUyIgcGFyYW1ldGVycy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gY2hlY2tzdW0gbWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndGFzay1jaGVja3N1bXMtYW5kLXNldHNjZW5lJz5UYXNrIENoZWNrc3VtcyBhbmQgU2V0c2NlbmU8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZXRzY2VuZSc+CisgICAgICAgIDx0aXRsZT5TZXRzY2VuZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgc2V0c2NlbmUgcHJvY2VzcyBlbmFibGVzIEJpdEJha2UgdG8gaGFuZGxlICJwcmUtYnVpbHQiIGFydGlmYWN0cy4KKyAgICAgICAgICAgIFRoZSBhYmlsaXR5IHRvIGhhbmRsZSBhbmQgcmV1c2UgdGhlc2UgYXJ0aWZhY3RzIGFsbG93cyBCaXRCYWtlCisgICAgICAgICAgICB0aGUgbHV4dXJ5IG9mIG5vdCBoYXZpbmcgdG8gYnVpbGQgc29tZXRoaW5nIGZyb20gc2NyYXRjaCBldmVyeSB0aW1lLgorICAgICAgICAgICAgSW5zdGVhZCwgQml0QmFrZSBjYW4gdXNlLCB3aGVuIHBvc3NpYmxlLCBleGlzdGluZyBidWlsZCBhcnRpZmFjdHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgbmVlZHMgdG8gaGF2ZSByZWxpYWJsZSBkYXRhIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgYW4KKyAgICAgICAgICAgIGFydGlmYWN0IGlzIGNvbXBhdGlibGUuCisgICAgICAgICAgICBTaWduYXR1cmVzLCBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHByb3ZpZGUgYW4gaWRlYWwKKyAgICAgICAgICAgIHdheSBvZiByZXByZXNlbnRpbmcgd2hldGhlciBhbiBhcnRpZmFjdCBpcyBjb21wYXRpYmxlLgorICAgICAgICAgICAgSWYgYSBzaWduYXR1cmUgaXMgdGhlIHNhbWUsIGFuIG9iamVjdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiBhbiBvYmplY3QgY2FuIGJlIHJldXNlZCwgdGhlIHByb2JsZW0gdGhlbiBiZWNvbWVzIGhvdyB0bworICAgICAgICAgICAgcmVwbGFjZSBhIGdpdmVuIHRhc2sgb3Igc2V0IG9mIHRhc2tzIHdpdGggdGhlIHByZS1idWlsdCBhcnRpZmFjdC4KKyAgICAgICAgICAgIEJpdEJha2Ugc29sdmVzIHRoZSBwcm9ibGVtIHdpdGggdGhlICJzZXRzY2VuZSIgcHJvY2Vzcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiBCaXRCYWtlIGlzIGFza2VkIHRvIGJ1aWxkIGEgZ2l2ZW4gdGFyZ2V0LCBiZWZvcmUgYnVpbGRpbmcgYW55dGhpbmcsCisgICAgICAgICAgICBpdCBmaXJzdCBhc2tzIHdoZXRoZXIgY2FjaGVkIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYW55IG9mIHRoZQorICAgICAgICAgICAgdGFyZ2V0cyBpdCdzIGJ1aWxkaW5nLCBvciBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSB0YXJnZXRzLgorICAgICAgICAgICAgSWYgY2FjaGVkIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgQml0QmFrZSB1c2VzIHRoaXMgaW5mb3JtYXRpb24gaW5zdGVhZCBvZgorICAgICAgICAgICAgcnVubmluZyB0aGUgbWFpbiB0YXNrcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBmaXJzdCBjYWxscyB0aGUgZnVuY3Rpb24gZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9IQVNIQ0hFQ0tfRlVOQ1RJT04nPjxmaWxlbmFtZT5CQl9IQVNIQ0hFQ0tfRlVOQ1RJT048L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIHdpdGggYSBsaXN0IG9mIHRhc2tzIGFuZCBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICBoYXNoZXMgaXQgd2FudHMgdG8gYnVpbGQuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGZhc3QgYW5kIHJldHVybnMgYSBsaXN0CisgICAgICAgICAgICBvZiB0aGUgdGFza3MgZm9yIHdoaWNoIGl0IGJlbGlldmVzIGluIGNhbiBvYnRhaW4gYXJ0aWZhY3RzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBOZXh0LCBmb3IgZWFjaCBvZiB0aGUgdGFza3MgdGhhdCB3ZXJlIHJldHVybmVkIGFzIHBvc3NpYmlsaXRpZXMsCisgICAgICAgICAgICBCaXRCYWtlIGV4ZWN1dGVzIGEgc2V0c2NlbmUgdmVyc2lvbiBvZiB0aGUgdGFzayB0aGF0IHRoZSBwb3NzaWJsZQorICAgICAgICAgICAgYXJ0aWZhY3QgY292ZXJzLgorICAgICAgICAgICAgU2V0c2NlbmUgdmVyc2lvbnMgb2YgYSB0YXNrIGhhdmUgdGhlIHN0cmluZyAiX3NldHNjZW5lIiBhcHBlbmRlZCB0byB0aGUKKyAgICAgICAgICAgIHRhc2sgbmFtZS4KKyAgICAgICAgICAgIFNvLCBmb3IgZXhhbXBsZSwgdGhlIHRhc2sgd2l0aCB0aGUgbmFtZSA8ZmlsZW5hbWU+eHh4PC9maWxlbmFtZT4gaGFzCisgICAgICAgICAgICBhIHNldHNjZW5lIHRhc2sgbmFtZWQgPGZpbGVuYW1lPnh4eF9zZXRzY2VuZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhlIHNldHNjZW5lIHZlcnNpb24gb2YgdGhlIHRhc2sgZXhlY3V0ZXMgYW5kIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgICAgIGFydGlmYWN0cyByZXR1cm5pbmcgZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgcHJldmlvdXNseSBtZW50aW9uZWQsIGFuIGFydGlmYWN0IGNhbiBjb3ZlciBtb3JlIHRoYW4gb25lIHRhc2suCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaXQgaXMgcG9pbnRsZXNzIHRvIG9idGFpbiBhIGNvbXBpbGVyIGlmIHlvdQorICAgICAgICAgICAgYWxyZWFkeSBoYXZlIHRoZSBjb21waWxlZCBiaW5hcnkuCisgICAgICAgICAgICBUbyBoYW5kbGUgdGhpcywgQml0QmFrZSBjYWxscyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9TRVRTQ0VORV9ERVBWQUxJRCc+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX0RFUFZBTElEPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBmdW5jdGlvbiBmb3IgZWFjaCBzdWNjZXNzZnVsIHNldHNjZW5lIHRhc2sgdG8ga25vdyB3aGV0aGVyIG9yIG5vdCBpdCBuZWVkcworICAgICAgICAgICAgdG8gb2J0YWluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhhdCB0YXNrLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGaW5hbGx5LCBhZnRlciBhbGwgdGhlIHNldHNjZW5lIHRhc2tzIGhhdmUgZXhlY3V0ZWQsIEJpdEJha2UgY2FsbHMgdGhlCisgICAgICAgICAgICBmdW5jdGlvbiBsaXN0ZWQgaW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgd2l0aCB0aGUgbGlzdCBvZiB0YXNrcyBCaXRCYWtlIHRoaW5rcyBoYXMgYmVlbiAiY292ZXJlZCIuCisgICAgICAgICAgICBUaGUgbWV0YWRhdGEgY2FuIHRoZW4gZW5zdXJlIHRoYXQgdGhpcyBsaXN0IGlzIGNvcnJlY3QgYW5kIGNhbgorICAgICAgICAgICAgaW5mb3JtIEJpdEJha2UgdGhhdCBpdCB3YW50cyBzcGVjaWZpYyB0YXNrcyB0byBiZSBydW4gcmVnYXJkbGVzcworICAgICAgICAgICAgb2YgdGhlIHNldHNjZW5lIHJlc3VsdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gc2V0c2NlbmUgbWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndGFzay1jaGVja3N1bXMtYW5kLXNldHNjZW5lJz5UYXNrIENoZWNrc3VtcyBhbmQgU2V0c2NlbmU8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJsb2dnaW5nIj4KKyAgICAgICAgPHRpdGxlPkxvZ2dpbmc8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgaG93CisgICAgICAgICAgICB2ZXJib3NlIGJ1aWxkcyBhcmUgd2hlbiBleGVjdXRlLCBiaXRiYWtlIGFsc28gc3VwcG9ydHMgdXNlciBkZWZpbmVkCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuaHRtbCc+UHl0aG9uIGxvZ2dpbmc8L3VsaW5rPgorICAgICAgICAgICAgZmFjaWxpdGllcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0idmFyLWJiLUJCX0xPR0NPTkZJRyI+PGZpbGVuYW1lPkJCX0xPR0NPTkZJRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuIFRoaXMgdmFyaWFibGUgZGVmaW5lcyBhIGpzb24gb3IgeWFtbAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLmh0bWwnPmxvZ2dpbmcgY29uZmlndXJhdGlvbjwvdWxpbms+CisgICAgICAgICAgICB0aGF0IHdpbGwgYmUgaW50ZWxsaWdlbnRseSBtZXJnZWQgaW50byB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgVGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBtZXJnZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBydWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gd2lsbCBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpZiB0b3AgbGV2ZWwga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gaXMgc2V0IHRvIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RmFsc2U8L2ZpbGVuYW1lPi4gSW4gdGhpcyBjYXNlLCBhbGwgb3RoZXIgcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGlnbm9yZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhIHRvcCBsZXZlbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmVyc2lvbjwvZmlsZW5hbWU+IHdoaWNoIG11c3QgbWF0Y2ggdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbnkga2V5cyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+aGFuZGxlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1hdHRlcnM8L2ZpbGVuYW1lPiwgb3IgPGZpbGVuYW1lPmZpbHRlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgaW50byB0aGUgc2FtZSBzZWN0aW9uIGluIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHdpdGggdGhlIHVzZXIgc3BlY2lmaWVkIGtleXMgdGFraW5nCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgb25lIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QuIEluCisgICAgICAgICAgICAgICAgICAgIHByYWN0aWNlLCB0aGlzIG1lYW5zIHRoYXQgaWYgYm90aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gc3BlY2lmeSBhIGhhbmRsZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15aGFuZGxlcjwvZmlsZW5hbWU+LCB0aGUgdXNlciBkZWZpbmVkIG9uZSB3aWxsCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgdGhlIGRlZmF1bHQuIFRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbmFkdmVydGVudGx5CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIsIGFsbCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBvbmVzIGFyZSBuYW1lZCB3aXRoIGEgcHJlZml4IG9mCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Qml0QmFrZS48L2ZpbGVuYW1lPiIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIGEgbG9nZ2VyIGlzIGRlZmluZWQgYnkgdGhlIHVzZXIgd2l0aCB0aGUga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GYWxzZTwvZmlsZW5hbWU+LCB0aGF0IGxvZ2dlciB3aWxsIGJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgdXNlciBjb25maWd1cmF0aW9uLiBJbiB0aGlzIGNhc2UsIG5vIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHJ1bGVzIHdpbGwgYXBwbHkgdG8gdGhhdCBsb2dnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGwgdXNlciBkZWZpbmVkIDxmaWxlbmFtZT5maWx0ZXI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhbmRsZXJzPC9maWxlbmFtZT4gcHJvcGVydGllcyBmb3IgYSBnaXZlbiBsb2dnZXIKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgd2l0aCBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsb2dnZXIuIEZvciBleGFtcGxlLCBpZiB0aGUgdXNlciBjb25maWd1cmF0aW9uIGFkZHMKKyAgICAgICAgICAgICAgICAgICAgYSBmaWx0ZXIgY2FsbGVkIDxmaWxlbmFtZT5teUZpbHRlcjwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qml0QmFrZS5TaWdHZW48L2ZpbGVuYW1lPiwgYW5kIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYWRkcyBhIGZpbHRlciBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJpdEJha2UuZGVmYXVsdEZpbHRlcjwvZmlsZW5hbWU+LCBib3RoIGZpbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBsb2dnZXIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHVzZXIgbG9nZ2luZyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlIHdoaWNoIGxvZ3MgYWxsIEhhc2ggRXF1aXZhbGVuY2UgcmVsYXRlZCBtZXNzYWdlcyBvZiBWRVJCT1NFIG9yCisgICAgICAgICAgICBoaWdoZXIgdG8gYSBmaWxlIGNhbGxlZCA8ZmlsZW5hbWU+aGFzaGVxdWl2LmxvZzwvZmlsZW5hbWU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgeworICAgICAgICAidmVyc2lvbiI6IDEsCisgICAgICAgICJoYW5kbGVycyI6IHsKKyAgICAgICAgICAgICJhdXRvYnVpbGRlcmxvZyI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJsb2dmaWxlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiREVCVUciLAorICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ICJoYXNoZXF1aXYubG9nIiwKKyAgICAgICAgICAgICAgICAibW9kZSI6ICJ3IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZm9ybWF0dGVycyI6IHsKKyAgICAgICAgICAgICAgICAibG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKG5hbWUpczogJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG9nZ2VycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLlNpZ0dlbi5IYXNoRXF1aXYiOiB7CisgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiYXV0b2J1aWxkZXJsb2ciXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiVkVSQk9TRSIsCisgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJhdXRvYnVpbGRlcmxvZyJdCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy5yc3QgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy5yc3QKaW5kZXggNjc2MGIxMC4uZjYyZGRmZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcucnN0CisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnJzdApAQCAtMzUwLDcgKzM1MCw3IEBACiAKIC0gICoicmV2IjoqIFRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdG8gY2hlY2tvdXQuCiAKLS0gICoic2NtZGF0YSI6KiBDYXVzZXMgdGhlICIuc3ZuIiBkaXJlY3RvcmllcyB0byBiZSBhdmFpbGFibGUgZHVyaW5nCistICAqInNjbWRhdGEiOiogQ2F1c2VzIHRoZSDigJwuc3Zu4oCdIGRpcmVjdG9yaWVzIHRvIGJlIGF2YWlsYWJsZSBkdXJpbmcKICAgIGNvbXBpbGUtdGltZSB3aGVuIHNldCB0byAia2VlcCIuIEJ5IGRlZmF1bHQsIHRoZXNlIGRpcmVjdG9yaWVzIGFyZQogICAgcmVtb3ZlZC4KIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNDM3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKQEAgLTAsMCArMSw5MjggQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiPgorCis8Y2hhcHRlcj4KKzx0aXRsZT5GaWxlIERvd25sb2FkIFN1cHBvcnQ8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEJpdEJha2UncyBmZXRjaCBtb2R1bGUgaXMgYSBzdGFuZGFsb25lIHBpZWNlIG9mIGxpYnJhcnkgY29kZQorICAgICAgICB0aGF0IGRlYWxzIHdpdGggdGhlIGludHJpY2FjaWVzIG9mIGRvd25sb2FkaW5nIHNvdXJjZSBjb2RlCisgICAgICAgIGFuZCBmaWxlcyBmcm9tIHJlbW90ZSBzeXN0ZW1zLgorICAgICAgICBGZXRjaGluZyBzb3VyY2UgY29kZSBpcyBvbmUgb2YgdGhlIGNvcm5lcnN0b25lcyBvZiBidWlsZGluZyBzb2Z0d2FyZS4KKyAgICAgICAgQXMgc3VjaCwgdGhpcyBtb2R1bGUgZm9ybXMgYW4gaW1wb3J0YW50IHBhcnQgb2YgQml0QmFrZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGN1cnJlbnQgZmV0Y2ggbW9kdWxlIGlzIGNhbGxlZCAiZmV0Y2gyIiBhbmQgcmVmZXJzIHRvIHRoZQorICAgICAgICBmYWN0IHRoYXQgaXQgaXMgdGhlIHNlY29uZCBtYWpvciB2ZXJzaW9uIG9mIHRoZSBBUEkuCisgICAgICAgIFRoZSBvcmlnaW5hbCB2ZXJzaW9uIGlzIG9ic29sZXRlIGFuZCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvZGViYXNlLgorICAgICAgICBUaHVzLCBpbiBhbGwgY2FzZXMsICJmZXRjaCIgcmVmZXJzIHRvICJmZXRjaDIiIGluIHRoaXMKKyAgICAgICAgbWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSd0aGUtZG93bmxvYWQtZmV0Y2gnPgorICAgICAgICA8dGl0bGU+VGhlIERvd25sb2FkIChGZXRjaCk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB0YWtlcyBzZXZlcmFsIHN0ZXBzIHdoZW4gZmV0Y2hpbmcgc291cmNlIGNvZGUgb3IgZmlsZXMuCisgICAgICAgICAgICBUaGUgZmV0Y2hlciBjb2RlYmFzZSBkZWFscyB3aXRoIHR3byBkaXN0aW5jdCBwcm9jZXNzZXMgaW4gb3JkZXI6CisgICAgICAgICAgICBvYnRhaW5pbmcgdGhlIGZpbGVzIGZyb20gc29tZXdoZXJlIChjYWNoZWQgb3Igb3RoZXJ3aXNlKQorICAgICAgICAgICAgYW5kIHRoZW4gdW5wYWNraW5nIHRob3NlIGZpbGVzIGludG8gYSBzcGVjaWZpYyBsb2NhdGlvbiBhbmQKKyAgICAgICAgICAgIHBlcmhhcHMgaW4gYSBzcGVjaWZpYyB3YXkuCisgICAgICAgICAgICBHZXR0aW5nIGFuZCB1bnBhY2tpbmcgdGhlIGZpbGVzIGlzIG9mdGVuIG9wdGlvbmFsbHkgZm9sbG93ZWQKKyAgICAgICAgICAgIGJ5IHBhdGNoaW5nLgorICAgICAgICAgICAgUGF0Y2hpbmcsIGhvd2V2ZXIsIGlzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgbW9kdWxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgY29kZSB0byBleGVjdXRlIHRoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgcHJvY2VzcywgYSBmZXRjaCwKKyAgICAgICAgICAgIGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQorICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKHNyY191cmksIGQpCisgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhpcyBjb2RlIHNldHMgdXAgYW4gaW5zdGFuY2Ugb2YgdGhlIGZldGNoIGNsYXNzLgorICAgICAgICAgICAgVGhlIGluc3RhbmNlIHVzZXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUkxzIGZyb20gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGFuZCB0aGVuIGNhbGxzIHRoZSA8ZmlsZW5hbWU+ZG93bmxvYWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgbWV0aG9kIHRvIGRvd25sb2FkIHRoZSBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGluc3RhbnRpYXRpb24gb2YgdGhlIGZldGNoIGNsYXNzIGlzIHVzdWFsbHkgZm9sbG93ZWQgYnk6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RkaXIgPSBsLmdldFZhcignV09SS0RJUicpCisgICAgIGZldGNoZXIudW5wYWNrKHJvb3RkaXIpCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGNvZGUgdW5wYWNrcyB0aGUgZG93bmxvYWRlZCBmaWxlcyB0byB0aGUKKyAgICAgICAgICAgIHNwZWNpZmllZCBieSA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGNvbnZlbmllbmNlLCB0aGUgbmFtaW5nIGluIHRoZXNlIGV4YW1wbGVzIG1hdGNoZXMKKyAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGVzIHVzZWQgYnkgT3BlbkVtYmVkZGVkLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHNlZSB0aGUgYWJvdmUgY29kZSBpbiBhY3Rpb24sIGV4YW1pbmUKKyAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGNsYXNzIGZpbGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgbm90IGhhcmRjb2RlZCBpbnRvIHRoZSBmZXRjaGVyLCBzaW5jZSB0aG9zZSBmZXRjaGVyCisgICAgICAgICAgICBtZXRob2RzIGNhbiBiZSAoYW5kIGFyZSkgY2FsbGVkIHdpdGggZGlmZmVyZW50IHZhcmlhYmxlIG5hbWVzLgorICAgICAgICAgICAgSW4gT3BlbkVtYmVkZGVkIGZvciBleGFtcGxlLCB0aGUgc2hhcmVkIHN0YXRlIChzc3RhdGUpIGNvZGUgdXNlcworICAgICAgICAgICAgdGhlIGZldGNoIG1vZHVsZSB0byBmZXRjaCB0aGUgc3N0YXRlIGZpbGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHRoZSA8ZmlsZW5hbWU+ZG93bmxvYWQoKTwvZmlsZW5hbWU+IG1ldGhvZCBpcyBjYWxsZWQsCisgICAgICAgICAgICBCaXRCYWtlIHRyaWVzIHRvIHJlc29sdmUgdGhlIFVSTHMgYnkgbG9va2luZyBmb3Igc291cmNlIGZpbGVzCisgICAgICAgICAgICBpbiBhIHNwZWNpZmljIHNlYXJjaCBvcmRlcjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmUtbWlycm9yIFNpdGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZmlyc3QgdXNlcyBwcmUtbWlycm9ycyB0byB0cnkgYW5kIGZpbmQgc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBsb2NhdGlvbnMgYXJlIGRlZmluZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QUkVNSVJST1JTJz48ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Tb3VyY2UgVVJJOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHByZS1taXJyb3JzIGZhaWwsIEJpdEJha2UgdXNlcyB0aGUgb3JpZ2luYWwgVVJMIChlLmcgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NaXJyb3IgU2l0ZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgZmV0Y2ggZmFpbHVyZXMgb2NjdXIsIEJpdEJha2UgbmV4dCB1c2VzIG1pcnJvciBsb2NhdGlvbnMgYXMKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgZWFjaCBVUkwgcGFzc2VkIHRvIHRoZSBmZXRjaGVyLCB0aGUgZmV0Y2hlcgorICAgICAgICAgICAgY2FsbHMgdGhlIHN1Ym1vZHVsZSB0aGF0IGhhbmRsZXMgdGhhdCBwYXJ0aWN1bGFyIFVSTCB0eXBlLgorICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBjYW4gYmUgdGhlIHNvdXJjZSBvZiBzb21lIGNvbmZ1c2lvbiB3aGVuIHlvdQorICAgICAgICAgICAgYXJlIHByb3ZpZGluZyBVUkxzIGZvciB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIHR3byBVUkxzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L3Bva3k7cHJvdG9jb2w9Z2l0CisgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9wb2t5O3Byb3RvY29sPWh0dHAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIFVSTCBpcyBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+d2dldDwvZmlsZW5hbWU+IGZldGNoZXIsIHdoaWNoIGRvZXMgbm90CisgICAgICAgICAgICB1bmRlcnN0YW5kICJnaXQiLgorICAgICAgICAgICAgVGhlcmVmb3JlLCB0aGUgbGF0dGVyIGNhc2UgaXMgdGhlIGNvcnJlY3QgZm9ybSBzaW5jZSB0aGUKKyAgICAgICAgICAgIEdpdCBmZXRjaGVyIGRvZXMga25vdyBob3cgdG8gdXNlIEhUVFAgYXMgYSB0cmFuc3BvcnQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IGNvbW1vbmx5IHVzZWQgbWlycm9yCisgICAgICAgICAgICBkZWZpbml0aW9uczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJFTUlSUk9SUyA/PSAiXAorICAgICAgICAgYnpyOi8vLiovLiogICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgY3ZzOi8vLiovLiogICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgZ2l0Oi8vLiovLiogICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgaGc6Ly8uKi8uKiAgICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgb3NjOi8vLiovLiogICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgcDQ6Ly8uKi8uKiAgICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgc3ZuOi8vLiovLiogICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4iCisKKyAgICAgTUlSUk9SUyA9KyAiXAorICAgICAgICAgZnRwOi8vLiovLiogICAgICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgaHR0cDovLy4qLy4qICAgICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4gXAorICAgICAgICAgaHR0cHM6Ly8uKi8uKiAgICBodHRwOi8vc29tZW1pcnJvci5vcmcvc291cmNlcy8gXG4iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJdCBpcyB1c2VmdWwgdG8gbm90ZSB0aGF0IEJpdEJha2Ugc3VwcG9ydHMKKyAgICAgICAgICAgIGNyb3NzLVVSTHMuCisgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBtaXJyb3IgYSBHaXQgcmVwb3NpdG9yeSBvbiBhbiBIVFRQCisgICAgICAgICAgICBzZXJ2ZXIgYXMgYSB0YXJiYWxsLgorICAgICAgICAgICAgVGhpcyBpcyB3aGF0IHRoZSA8ZmlsZW5hbWU+Z2l0Oi8vPC9maWxlbmFtZT4gbWFwcGluZyBpbgorICAgICAgICAgICAgdGhlIHByZXZpb3VzIGV4YW1wbGUgZG9lcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2luY2UgbmV0d29yayBhY2Nlc3NlcyBhcmUgc2xvdywgQml0QmFrZSBtYWludGFpbnMgYQorICAgICAgICAgICAgY2FjaGUgb2YgZmlsZXMgZG93bmxvYWRlZCBmcm9tIHRoZSBuZXR3b3JrLgorICAgICAgICAgICAgQW55IHNvdXJjZSBmaWxlcyB0aGF0IGFyZSBub3QgbG9jYWwgKGkuZS4KKyAgICAgICAgICAgIGRvd25sb2FkZWQgZnJvbSB0aGUgSW50ZXJuZXQpIGFyZSBwbGFjZWQgaW50byB0aGUgZG93bmxvYWQKKyAgICAgICAgICAgIGRpcmVjdG9yeSwgd2hpY2ggaXMgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZpbGUgaW50ZWdyaXR5IGlzIG9mIGtleSBpbXBvcnRhbmNlIGZvciByZXByb2R1Y2luZyBidWlsZHMuCisgICAgICAgICAgICBGb3Igbm9uLWxvY2FsIGFyY2hpdmUgZG93bmxvYWRzLCB0aGUgZmV0Y2hlciBjb2RlIGNhbiB2ZXJpZnkKKyAgICAgICAgICAgIFNIQS0yNTYgYW5kIE1ENSBjaGVja3N1bXMgdG8gZW5zdXJlIHRoZSBhcmNoaXZlcyBoYXZlIGJlZW4KKyAgICAgICAgICAgIGRvd25sb2FkZWQgY29ycmVjdGx5LgorICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IHRoZXNlIGNoZWNrc3VtcyBieSB1c2luZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aCB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgIHZhcmZsYWdzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUklbbWQ1c3VtXSA9ICI8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgU1JDX1VSSVtzaGEyNTZzdW1dID0gIjxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIGNoZWNrc3VtcyBhcyBwYXJhbWV0ZXJzIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBhcyBzaG93biBiZWxvdzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJodHRwOi8vZXhhbXBsZS5jb20vZm9vYmFyLnRhci5iejI7bWQ1c3VtPTRhOGUwZjIzN2U5NjFmZDc3ODVkMTlkMDdmZGI5OTRkIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgbXVsdGlwbGUgVVJJcyBleGlzdCwgeW91IGNhbiBzcGVjaWZ5IHRoZSBjaGVja3N1bXMgZWl0aGVyCisgICAgICAgICAgICBkaXJlY3RseSBhcyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgb3IgeW91IGNhbiBuYW1lIHRoZSBVUkxzLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzeW50YXggc2hvd3MgaG93IHlvdSBuYW1lIHRoZSBVUklzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImh0dHA6Ly9leGFtcGxlLmNvbS9mb29iYXIudGFyLmJ6MjtuYW1lPWZvbyIKKyAgICAgU1JDX1VSSVtmb28ubWQ1c3VtXSA9IDRhOGUwZjIzN2U5NjFmZDc3ODVkMTlkMDdmZGI5OTRkCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBZnRlciBhIGZpbGUgaGFzIGJlZW4gZG93bmxvYWRlZCBhbmQgaGFzIGhhZCBpdHMgY2hlY2tzdW0gY2hlY2tlZCwKKyAgICAgICAgICAgIGEgIi5kb25lIiBzdGFtcCBpcyBwbGFjZWQgaW4gPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoaXMgc3RhbXAgZHVyaW5nIHN1YnNlcXVlbnQgYnVpbGRzIHRvIGF2b2lkCisgICAgICAgICAgICBkb3dubG9hZGluZyBvciBjb21wYXJpbmcgYSBjaGVja3N1bSBmb3IgdGhlIGZpbGUgYWdhaW4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgbG9jYWwgc3RvcmFnZSBpcyBzYWZlIGZyb20gZGF0YSBjb3JydXB0aW9uLgorICAgICAgICAgICAgICAgIElmIHRoaXMgd2VyZSBub3QgdGhlIGNhc2UsIHRoZXJlIHdvdWxkIGJlIGJpZ2dlciBpc3N1ZXMgdG8gd29ycnkgYWJvdXQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfU1RSSUNUX0NIRUNLU1VNJz48ZmlsZW5hbWU+QkJfU1RSSUNUX0NIRUNLU1VNPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBpcyBzZXQsIGFueSBkb3dubG9hZCB3aXRob3V0IGEgY2hlY2tzdW0gdHJpZ2dlcnMgYW4KKyAgICAgICAgICAgIGVycm9yIG1lc3NhZ2UuCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9OT19ORVRXT1JLJz48ZmlsZW5hbWU+QkJfTk9fTkVUV09SSzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gbWFrZSBhbnkgYXR0ZW1wdGVkIG5ldHdvcmsgYWNjZXNzIGEgZmF0YWwKKyAgICAgICAgICAgIGVycm9yLCB3aGljaCBpcyB1c2VmdWwgZm9yIGNoZWNraW5nIHRoYXQgbWlycm9ycyBhcmUgY29tcGxldGUKKyAgICAgICAgICAgIGFzIHdlbGwgYXMgb3RoZXIgdGhpbmdzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JiLXRoZS11bnBhY2snPgorICAgICAgICA8dGl0bGU+VGhlIFVucGFjazwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgdW5wYWNrIHByb2Nlc3MgdXN1YWxseSBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBkb3dubG9hZC4KKyAgICAgICAgICAgIEZvciBhbGwgVVJMcyBleGNlcHQgR2l0IFVSTHMsIEJpdEJha2UgdXNlcyB0aGUgY29tbW9uCisgICAgICAgICAgICA8ZmlsZW5hbWU+dW5wYWNrPC9maWxlbmFtZT4gbWV0aG9kLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIG51bWJlciBvZiBwYXJhbWV0ZXJzIGV4aXN0IHRoYXQgeW91IGNhbiBzcGVjaWZ5IHdpdGhpbiB0aGUKKyAgICAgICAgICAgIFVSTCB0byBnb3Zlcm4gdGhlIGJlaGF2aW9yIG9mIHRoZSB1bnBhY2sgc3RhZ2U6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dW5wYWNrOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xzIHdoZXRoZXIgdGhlIFVSTCBjb21wb25lbnRzIGFyZSB1bnBhY2tlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICIxIiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQsIHRoZSBjb21wb25lbnRzCisgICAgICAgICAgICAgICAgICAgIGFyZSB1bnBhY2tlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICIwIiwgdGhlIHVucGFjayBzdGFnZSBsZWF2ZXMgdGhlIGZpbGUgYWxvbmUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGFuIGFyY2hpdmUgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgY29waWVkIGluIGFuZCBub3QgYmUgdW5wYWNrZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZG9zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFwcGxpZXMgdG8gPGZpbGVuYW1lPi56aXA8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5qYXI8L2ZpbGVuYW1lPiBmaWxlcyBhbmQgc3BlY2lmaWVzIHdoZXRoZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgdXNlIERPUyBsaW5lIGVuZGluZyBjb252ZXJzaW9uIG9uIHRleHQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+YmFzZXBhdGg6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3RzIHRoZSB1bnBhY2sgc3RhZ2UgdG8gc3RyaXAgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmcm9tIHRoZSBzb3VyY2UgcGF0aCB3aGVuIHVucGFja2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5zdWJkaXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVW5wYWNrcyB0aGUgc3BlY2lmaWMgVVJMIHRvIHRoZSBzcGVjaWZpZWQgc3ViZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgcm9vdCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUaGUgdW5wYWNrIGNhbGwgYXV0b21hdGljYWxseSBkZWNvbXByZXNzZXMgYW5kIGV4dHJhY3RzIGZpbGVzCisgICAgICAgICAgICB3aXRoICIuWiIsICIueiIsICIuZ3oiLCAiLnh6IiwgIi56aXAiLCAiLmphciIsICIuaXBrIiwgIi5ycG0iLgorICAgICAgICAgICAgIi5zcnBtIiwgIi5kZWIiIGFuZCAiLmJ6MiIgZXh0ZW5zaW9ucyBhcyB3ZWxsIGFzIHZhcmlvdXMgY29tYmluYXRpb25zCisgICAgICAgICAgICBvZiB0YXJiYWxsIGV4dGVuc2lvbnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCwgdGhlIEdpdCBmZXRjaGVyIGhhcyBpdHMgb3duIHVucGFjayBtZXRob2QgdGhhdAorICAgICAgICAgICAgaXMgb3B0aW1pemVkIHRvIHdvcmsgd2l0aCBHaXQgdHJlZXMuCisgICAgICAgICAgICBCYXNpY2FsbHksIHRoaXMgbWV0aG9kIHdvcmtzIGJ5IGNsb25pbmcgdGhlIHRyZWUgaW50byB0aGUgZmluYWwKKyAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlZCB1c2luZyByZWZlcmVuY2VzIHNvIHRoYXQgdGhlcmUgaXMKKyAgICAgICAgICAgIG9ubHkgb25lIGNlbnRyYWwgY29weSBvZiB0aGUgR2l0IG1ldGFkYXRhIG5lZWRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdiYi1mZXRjaGVycyc+CisgICAgICAgIDx0aXRsZT5GZXRjaGVyczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIFVSTCBwcmVmaXggZGV0ZXJtaW5lcyB3aGljaAorICAgICAgICAgICAgZmV0Y2hlciBzdWJtb2R1bGUgQml0QmFrZSB1c2VzLgorICAgICAgICAgICAgRWFjaCBzdWJtb2R1bGUgY2FuIHN1cHBvcnQgZGlmZmVyZW50IFVSTCBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgd2hpY2ggYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2xvY2FsLWZpbGUtZmV0Y2hlcic+CisgICAgICAgICAgICA8dGl0bGU+TG9jYWwgZmlsZSBmZXRjaGVyICg8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+KTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc3VibW9kdWxlIGhhbmRsZXMgVVJMcyB0aGF0IGJlZ2luIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZSB5b3Ugc3BlY2lmeSB3aXRoaW4gdGhlIFVSTCBjYW4gYmUKKyAgICAgICAgICAgICAgICBlaXRoZXIgYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aCB0byBhIGZpbGUuCisgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGVuYW1lIGlzIHJlbGF0aXZlLCB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHVzZWQgaW4gdGhlIHNhbWUgd2F5CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBpcyB1c2VkIHRvIGZpbmQgZXhlY3V0YWJsZXMuCisgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kLCBpdCBpcyBhc3N1bWVkIHRoYXQgaXQgaXMgYXZhaWxhYmxlIGluCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGJ5IHRoZSB0aW1lIHRoZSA8ZmlsZW5hbWU+ZG93bmxvYWQoKTwvZmlsZW5hbWU+IG1ldGhvZCBpcyBjYWxsZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5LCB0aGUgZW50aXJlIGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgIHVucGFja2VkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBhIGNvdXBsZSBvZiBleGFtcGxlIFVSTHMsIHRoZSBmaXJzdCByZWxhdGl2ZSBhbmQKKyAgICAgICAgICAgICAgICB0aGUgc2Vjb25kIGFic29sdXRlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJmaWxlOi8vcmVsYXRpdmVmaWxlLnBhdGNoIgorICAgICBTUkNfVVJJID0gImZpbGU6Ly8vVXNlcnMvaWNoL3ZlcnlfaW1wb3J0YW50X3NvZnR3YXJlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdodHRwLWZ0cC1mZXRjaGVyJz4KKyAgICAgICAgICAgIDx0aXRsZT5IVFRQL0ZUUCB3Z2V0IGZldGNoZXIgKDxmaWxlbmFtZT5odHRwOi8vPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5mdHA6Ly88L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmh0dHBzOi8vPC9maWxlbmFtZT4pPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBmZXRjaGVyIG9idGFpbnMgZmlsZXMgZnJvbSB3ZWIgYW5kIEZUUCBzZXJ2ZXJzLgorICAgICAgICAgICAgICAgIEludGVybmFsbHksIHRoZSBmZXRjaGVyIHVzZXMgdGhlIHdnZXQgdXRpbGl0eS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGV4ZWN1dGFibGUgYW5kIHBhcmFtZXRlcnMgdXNlZCBhcmUgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GRVRDSENNRF93Z2V0PC9maWxlbmFtZT4gdmFyaWFibGUsIHdoaWNoIGRlZmF1bHRzCisgICAgICAgICAgICAgICAgdG8gc2Vuc2libGUgdmFsdWVzLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIHN1cHBvcnRzIGEgcGFyYW1ldGVyICJkb3dubG9hZGZpbGVuYW1lIiB0aGF0CisgICAgICAgICAgICAgICAgYWxsb3dzIHRoZSBuYW1lIG9mIHRoZSBkb3dubG9hZGVkIGZpbGUgdG8gYmUgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgIFNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIGRvd25sb2FkZWQgZmlsZSBpcyB1c2VmdWwKKyAgICAgICAgICAgICAgICBmb3IgYXZvaWRpbmcgY29sbGlzaW9ucyBpbgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBmaWxlcyB0aGF0IGhhdmUgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlIFVSTHMgYXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImh0dHA6Ly9vZS5oYW5kaGVsZHMub3JnL25vdF90aGVyZS5hYWMiCisgICAgIFNSQ19VUkkgPSAiZnRwOi8vb2UuaGFuZGhlbGRzLm9yZy9ub3RfdGhlcmVfYXNfd2VsbC5hYWMiCisgICAgIFNSQ19VUkkgPSAiZnRwOi8veW91QG9lLmhhbmRoZWxkcy5vcmcvaG9tZS95b3Uvc2VjcmV0LnBsYW4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICBCZWNhdXNlIFVSTCBwYXJhbWV0ZXJzIGFyZSBkZWxpbWl0ZWQgYnkgc2VtaS1jb2xvbnMsIHRoaXMgY2FuCisgICAgICAgICAgICAgICBpbnRyb2R1Y2UgYW1iaWd1aXR5IHdoZW4gcGFyc2luZyBVUkxzIHRoYXQgYWxzbyBjb250YWluIHNlbWktY29sb25zLAorICAgICAgICAgICAgICAgZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImh0dHA6Ly9hYmMxMjMub3JnL2dpdC8/cD1nY2MvZ2NjLmdpdDthPXNuYXBzaG90O2g9YTVkZDQ3IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgIFN1Y2ggVVJMcyBzaG91bGQgc2hvdWxkIGJlIG1vZGlmaWVkIGJ5IHJlcGxhY2luZyBzZW1pLWNvbG9ucyB3aXRoICcmYW1wOycgY2hhcmFjdGVyczoKKyAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJodHRwOi8vYWJjMTIzLm9yZy9naXQvP3A9Z2NjL2djYy5naXQmYW1wO2E9c25hcHNob3QmYW1wO2g9YTVkZDQ3IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiBtb3N0IGNhc2VzIHRoaXMgc2hvdWxkIHdvcmsuIFRyZWF0aW5nIHNlbWktY29sb25zIGFuZCAnJmFtcDsnIGluIHF1ZXJpZXMKKyAgICAgICAgICAgICAgICBpZGVudGljYWxseSBpcyByZWNvbW1lbmRlZCBieSB0aGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSAoVzNDKS4KKyAgICAgICAgICAgICAgICBOb3RlIHRoYXQgZHVlIHRvIHRoZSBuYXR1cmUgb2YgdGhlIFVSTCwgeW91IG1heSBoYXZlIHRvIHNwZWNpZnkgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICBvZiB0aGUgZG93bmxvYWRlZCBmaWxlIGFzIHdlbGw6CisgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJodHRwOi8vYWJjMTIzLm9yZy9naXQvP3A9Z2NjL2djYy5naXQmYW1wO2E9c25hcHNob3QmYW1wO2g9YTVkZDQ3O2Rvd25sb2FkZmlsZW5hbWU9bXlmaWxlLmJ6MiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3ZzLWZldGNoZXInPgorICAgICAgICAgICAgPHRpdGxlPkNWUyBmZXRjaGVyICg8ZmlsZW5hbWU+KGN2czovLzwvZmlsZW5hbWU+KTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc3VibW9kdWxlIGhhbmRsZXMgY2hlY2tpbmcgb3V0IGZpbGVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgQ1ZTIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgWW91IGNhbiBjb25maWd1cmUgaXQgdXNpbmcgYSBudW1iZXIgb2YgZGlmZmVyZW50IHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5GRVRDSENNRF9jdnM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGV4ZWN1dGFibGUgdG8gdXNlIHdoZW4gcnVubmluZworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jdnM8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBuYW1lIGlzIHVzdWFsbHkgImN2cyIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+U1JDREFURTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGF0ZSB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgQ1ZTIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBzcGVjaWFsIHZhbHVlIG9mICJub3ciIGNhdXNlcyB0aGUgY2hlY2tvdXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIHVwZGF0ZWQgb24gZXZlcnkgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48bGluayBsaW5rZW5kPSd2YXItYmItQ1ZTRElSJz48ZmlsZW5hbWU+Q1ZTRElSPC9maWxlbmFtZT48L2xpbms+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hlcmUgYSB0ZW1wb3JhcnkgY2hlY2tvdXQgaXMgc2F2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gaXMgb2Z0ZW4gPGZpbGVuYW1lPkRMX0RJUi9jdnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5DVlNfUFJPWFlfSE9TVDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSB0byB1c2UgYXMgYSAicHJveHk9IiBwYXJhbWV0ZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3ZzPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5DVlNfUFJPWFlfUE9SVDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcG9ydCBudW1iZXIgdG8gdXNlIGFzIGEgInByb3h5cG9ydD0iIHBhcmFtZXRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jdnM8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgQXMgd2VsbCBhcyB0aGUgc3RhbmRhcmQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIFVSTCBzeW50YXgsCisgICAgICAgICAgICAgICAgeW91IGNhbiBhbHNvIGNvbmZpZ3VyZSB0aGUgZmV0Y2hlciB3aXRoIHZhcmlvdXMgVVJMIHBhcmFtZXRlcnM6CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycyBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJtZXRob2QiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgb3ZlciB3aGljaCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBDVlMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgcHJvdG9jb2wgaXMgInBzZXJ2ZXIiLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgIm1ldGhvZCIgaXMgc2V0IHRvICJleHQiLCBCaXRCYWtlIGV4YW1pbmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgInJzaCIgcGFyYW1ldGVyIGFuZCBzZXRzIDxmaWxlbmFtZT5DVlNfUlNIPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSAiZGlyIiBmb3IgbG9jYWwgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ibW9kdWxlIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBtb2R1bGUgdG8gY2hlY2sgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3VwcGx5IHRoaXMgcGFyYW1ldGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InRhZyI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyB3aGljaCBDVlMgVEFHIHNob3VsZCBiZSB1c2VkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNoZWNrb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIFRBRyBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJkYXRlIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vICJkYXRlIiBpcyBzcGVjaWZpZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNSQ0RBVEUnPjxmaWxlbmFtZT5TUkNEQVRFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY29uZmlndXJhdGlvbiBpcyB1c2VkIHRvIGNoZWNrb3V0IGEgc3BlY2lmaWMgZGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWFsIHZhbHVlIG9mICJub3ciIGNhdXNlcyB0aGUgY2hlY2tvdXQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgb24gZXZlcnkgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ibG9jYWxkaXIiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2VkIHRvIHJlbmFtZSB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0aXZlbHksIHlvdSBhcmUgcmVuYW1pbmcgdGhlIG91dHB1dCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHdoaWNoIHRoZSBtb2R1bGUgaXMgdW5wYWNrZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIGZvcmNpbmcgdGhlIG1vZHVsZSBpbnRvIGEgc3BlY2lhbAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHJlbGF0aXZlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQ1ZTRElSJz48ZmlsZW5hbWU+Q1ZTRElSPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InJzaCI8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSAibWV0aG9kIiBwYXJhbWV0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2NtZGF0YSI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENhdXNlcyB0aGUgQ1ZTIG1ldGFkYXRhIHRvIGJlIG1haW50YWluZWQgaW4gdGhlIHRhcmJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmZXRjaGVyIGNyZWF0ZXMgd2hlbiBzZXQgdG8gImtlZXAiLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmJhbGwgaXMgZXhwYW5kZWQgaW50byB0aGUgd29yayBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgQ1ZTIG1ldGFkYXRhIGlzIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iZnVsbHBhdGgiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIHRoZSByZXN1bHRpbmcgY2hlY2tvdXQgaXMgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgbGV2ZWwsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LCBvciBpcyBhdCBkZWVwZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Im5vcmVjdXJzZSI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENhdXNlcyB0aGUgZmV0Y2hlciB0byBvbmx5IGNoZWNrb3V0IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoIG5vIHJlY3Vyc2UgaW50byBhbnkgc3ViZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4icG9ydCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwb3J0IHRvIHdoaWNoIHRoZSBDVlMgc2VydmVyIGNvbm5lY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlIFVSTHMgYXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImN2czovL0NWU1JPT1Q7bW9kdWxlPW15bW9kdWxlO3RhZz1zb21lLXZlcnNpb247bWV0aG9kPWV4dCIKKyAgICAgU1JDX1VSSSA9ICJjdnM6Ly9DVlNST09UO21vZHVsZT1teW1vZHVsZTtkYXRlPTIwMDYwMTI2O2xvY2FsZGlyPXVzZXRoYXQiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3N2bi1mZXRjaGVyJz4KKyAgICAgICAgICAgIDx0aXRsZT5TdWJ2ZXJzaW9uIChTVk4pIEZldGNoZXIgKDxmaWxlbmFtZT5zdm46Ly88L2ZpbGVuYW1lPik8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VibW9kdWxlIGZldGNoZXMgY29kZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgIFN1YnZlcnNpb24gc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZSBleGVjdXRhYmxlIHVzZWQgaXMgc3BlY2lmaWVkIGJ5CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZFVENIQ01EX3N2bjwvZmlsZW5hbWU+LCB3aGljaCBkZWZhdWx0cworICAgICAgICAgICAgICAgIHRvICJzdm4iLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyJ3MgdGVtcG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCBieQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1TVk5ESVInPjxmaWxlbmFtZT5TVk5ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXN1YWxseSA8ZmlsZW5hbWU+RExfRElSL3N2bjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc3VwcG9ydGVkIHBhcmFtZXRlcnMgYXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ibW9kdWxlIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHN2biBtb2R1bGUgdG8gY2hlY2tvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBwcm92aWRlIHRoaXMgcGFyYW1ldGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiB0aGlzIHBhcmFtZXRlciBhcyB0aGUgdG9wLWxldmVsCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgZGF0YSB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJwYXRoX3NwZWMiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBIHNwZWNpZmljIGRpcmVjdG9yeSBpbiB3aGljaCB0byBjaGVja291dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBzdm4gbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InByb3RvY29sIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sIHRvIHVzZSwgd2hpY2ggZGVmYXVsdHMgdG8gInN2biIuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiAicHJvdG9jb2wiIGlzIHNldCB0byAic3ZuK3NzaCIsIHRoZSAic3NoIgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlzIGFsc28gdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJyZXYiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHNvdXJjZSBjb2RlIHRvIGNoZWNrb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InNjbWRhdGEiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDYXVzZXMgdGhlIOKAnC5zdm7igJ0gZGlyZWN0b3JpZXMgdG8gYmUgYXZhaWxhYmxlIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZS10aW1lIHdoZW4gc2V0IHRvICJrZWVwIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InNzaCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB1c2VkIHdoZW4gInByb3RvY29sIiBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICJzdm4rc3NoIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIHNzaAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSB1c2VkIGJ5IHN2bi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJ0cmFuc3BvcnR1c2VyIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiByZXF1aXJlZCwgc2V0cyB0aGUgdXNlcm5hbWUgZm9yIHRoZSB0cmFuc3BvcnQuCisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHBhcmFtZXRlciBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0cmFuc3BvcnQgdXNlcm5hbWUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHVzZXJuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSBtYWluIFVSTCwgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBzdWJ2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSB0aHJlZSBleGFtcGxlcyB1c2luZyBzdm46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gInN2bjovL215cmVwb3MvcHJvajE7bW9kdWxlPXZpcDtwcm90b2NvbD1odHRwO3Jldj02NjciCisgICAgIFNSQ19VUkkgPSAic3ZuOi8vbXlyZXBvcy9wcm9qMTttb2R1bGU9b3BpZTtwcm90b2NvbD1zdm4rc3NoIgorICAgICBTUkNfVVJJID0gInN2bjovL215cmVwb3MvcHJvajE7bW9kdWxlPXRydW5rO3Byb3RvY29sPWh0dHA7cGF0aF9zcGVjPSR7TVlfRElSfS9wcm9qMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ2l0LWZldGNoZXInPgorICAgICAgICAgICAgPHRpdGxlPkdpdCBGZXRjaGVyICg8ZmlsZW5hbWU+Z2l0Oi8vPC9maWxlbmFtZT4pPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBmZXRjaGVyIHN1Ym1vZHVsZSBmZXRjaGVzIGNvZGUgZnJvbSB0aGUgR2l0CisgICAgICAgICAgICAgICAgc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIHdvcmtzIGJ5IGNyZWF0aW5nIGEgYmFyZSBjbG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICByZW1vdGUgaW50bworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1HSVRESVInPjxmaWxlbmFtZT5HSVRESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXN1YWxseSA8ZmlsZW5hbWU+RExfRElSL2dpdDI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGlzIGJhcmUgY2xvbmUgaXMgdGhlbiBjbG9uZWQgaW50byB0aGUgd29yayBkaXJlY3RvcnkgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIHVucGFjayBzdGFnZSB3aGVuIGEgc3BlY2lmaWMgdHJlZSBpcyBjaGVja2VkIG91dC4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIGRvbmUgdXNpbmcgYWx0ZXJuYXRlcyBhbmQgYnkgcmVmZXJlbmNlIHRvCisgICAgICAgICAgICAgICAgbWluaW1pemUgdGhlIGFtb3VudCBvZiBkdXBsaWNhdGUgZGF0YSBvbiB0aGUgZGlzayBhbmQKKyAgICAgICAgICAgICAgICBtYWtlIHRoZSB1bnBhY2sgcHJvY2VzcyBmYXN0LgorICAgICAgICAgICAgICAgIFRoZSBleGVjdXRhYmxlIHVzZWQgY2FuIGJlIHNldCB3aXRoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZFVENIQ01EX2dpdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InByb3RvY29sIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sIHVzZWQgdG8gZmV0Y2ggdGhlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgImdpdCIgd2hlbiBhIGhvc3RuYW1lIGlzIHNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIGEgaG9zdG5hbWUgaXMgbm90IHNldCwgdGhlIEdpdCBwcm90b2NvbCBpcyAiZmlsZSIuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlICJodHRwIiwgImh0dHBzIiwgInNzaCIgYW5kICJyc3luYyIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ibm9jaGVja291dCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRlbGxzIHRoZSBmZXRjaGVyIHRvIG5vdCBjaGVja291dCBzb3VyY2UgY29kZSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tpbmcgd2hlbiBzZXQgdG8gIjEiLgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHRoaXMgb3B0aW9uIGZvciB0aGUgVVJMIHdoZXJlIHRoZXJlIGlzIGEgY3VzdG9tCisgICAgICAgICAgICAgICAgICAgICAgICByb3V0aW5lIHRvIGNoZWNrb3V0IGNvZGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyAiMCIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4icmViYXNlYWJsZSI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluZGljYXRlcyB0aGF0IHRoZSB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeSBjYW4gYmUgcmViYXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgc2V0IHRoaXMgcGFyYW1ldGVyIHRvICIxIiBpZgorICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25zIGNhbiBiZWNvbWUgZGV0YWNoZWQgZnJvbSBicmFuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHNvdXJjZSBtaXJyb3IgdGFyYmFsbCBpcyBkb25lIHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24sIHdoaWNoIGhhcyBhIGxvc3Mgb2YgZWZmaWNpZW5jeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlYmFzaW5nIHRoZSB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeSBjb3VsZCBjYXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgcmV2aXNpb24gdG8gZGlzYXBwZWFyIGZyb20gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiByZW1pbmRzIHRoZSBmZXRjaGVyIHRvIHByZXNlcnZlIHRoZSBsb2NhbCBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FyZWZ1bGx5IGZvciBmdXR1cmUgdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyIGlzICIwIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJub2JyYW5jaCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRlbGxzIHRoZSBmZXRjaGVyIHRvIG5vdCBjaGVjayB0aGUgU0hBIHZhbGlkYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnJhbmNoIHdoZW4gc2V0IHRvICIxIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzICIwIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldCB0aGlzIG9wdGlvbiBmb3IgdGhlIHJlY2lwZSB0aGF0IHJlZmVycyB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1pdCB0aGF0IGlzIHZhbGlkIGZvciBhIHRhZyBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ImJhcmVjbG9uZSI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRlbGxzIHRoZSBmZXRjaGVyIHRvIGNsb25lIGEgYmFyZSBjbG9uZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gZGlyZWN0b3J5IHdpdGhvdXQgY2hlY2tpbmcgb3V0IGEgd29ya2luZyB0cmVlLgorICAgICAgICAgICAgICAgICAgICAgICAgT25seSB0aGUgcmF3IEdpdCBtZXRhZGF0YSBpcyBwcm92aWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGltcGxpZXMgdGhlICJub2NoZWNrb3V0IiBwYXJhbWV0ZXIgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJicmFuY2giOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoKGVzKSBvZiB0aGUgR2l0IHRyZWUgdG8gY2xvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB1bnNldCwgdGhpcyBpcyBhc3N1bWVkIHRvIGJlICJtYXN0ZXIiLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBicmFuY2ggcGFyYW1ldGVycyBtdWNoIG1hdGNoIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJyZXYiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gdG8gdXNlIGZvciB0aGUgY2hlY2tvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyAibWFzdGVyIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJ0YWciOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB0YWcgdG8gdXNlIGZvciB0aGUgY2hlY2tvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBjb3JyZWN0bHkgcmVzb2x2ZSB0YWdzLCBCaXRCYWtlIG11c3QgYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yay4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGF0IHJlYXNvbiwgdGFncyBhcmUgb2Z0ZW4gbm90IHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBBcyBmYXIgYXMgR2l0IGlzIGNvbmNlcm5lZCwgdGhlICJ0YWciIHBhcmFtZXRlciBiZWhhdmVzCisgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyB0aGUgInJldiIgcGFyYW1ldGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InN1YnBhdGgiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMaW1pdHMgdGhlIGNoZWNrb3V0IHRvIGEgc3BlY2lmaWMgc3VicGF0aCBvZiB0aGUgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSB3aG9sZSB0cmVlIGlzIGNoZWNrZWQgb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ImRlc3RzdWZmaXgiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcGF0aCBpbiB3aGljaCB0byBwbGFjZSB0aGUgY2hlY2tvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgcGF0aCBpcyA8ZmlsZW5hbWU+Z2l0LzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InVzZWhlYWQiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGxvY2FsIDxmaWxlbmFtZT5naXQ6Ly88L2ZpbGVuYW1lPiBVUkxzIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgYnJhbmNoIEhFQUQgYXMgdGhlIHJldmlzaW9uIGZvciB1c2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAidXNlaGVhZCIgcGFyYW1ldGVyIGltcGxpZXMgbm8gYnJhbmNoIGFuZCBvbmx5IHdvcmtzCisgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSB0cmFuc2ZlciBwcm90b2NvbCBpcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZSBVUkxzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJnaXQ6Ly9naXQub2UuaGFuZGhlbGRzLm9yZy9naXQvdmlwLmdpdDt0YWc9dmVyc2lvbi0xIgorICAgICBTUkNfVVJJID0gImdpdDovL2dpdC5vZS5oYW5kaGVsZHMub3JnL2dpdC92aXAuZ2l0O3Byb3RvY29sPWh0dHAiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dpdHNtLWZldGNoZXInPgorICAgICAgICAgICAgPHRpdGxlPkdpdCBTdWJtb2R1bGUgRmV0Y2hlciAoPGZpbGVuYW1lPmdpdHNtOi8vPC9maWxlbmFtZT4pPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBmZXRjaGVyIHN1Ym1vZHVsZSBpbmhlcml0cyBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdC1mZXRjaGVyJz5HaXQgZmV0Y2hlcjwvbGluaz4gYW5kIGV4dGVuZHMKKyAgICAgICAgICAgICAgICB0aGF0IGZldGNoZXIncyBiZWhhdmlvciBieSBmZXRjaGluZyBhIHJlcG9zaXRvcnkncyBzdWJtb2R1bGVzLgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGlzIHBhc3NlZCB0byB0aGUgR2l0IGZldGNoZXIgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnaXQtZmV0Y2hlcic+R2l0IEZldGNoZXIgKDxmaWxlbmFtZT5naXQ6Ly88L2ZpbGVuYW1lPik8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Ob3RlcyBhbmQgV2FybmluZ3M8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNsZWFuIGEgcmVjaXBlIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICc8ZmlsZW5hbWU+Z2l0Oi8vPC9maWxlbmFtZT4nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgJzxmaWxlbmFtZT5naXRzbTovLzwvZmlsZW5hbWU+JyBVUkxzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgR2l0IFN1Ym1vZHVsZXMgZmV0Y2hlciBpcyBub3QgYSBjb21wbGV0ZSBmZXRjaGVyCisgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIGhhcyBrbm93biBpc3N1ZXMgd2hlcmUgaXQgZG9lcyBub3QgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIHNvdXJjZSBtaXJyb3JpbmcgaW5mcmFzdHJ1Y3R1cmUgcHJvcGVybHkuIEZ1cnRoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3VibW9kdWxlIHNvdXJjZXMgaXQgZmV0Y2hlcyBhcmUgbm90IHZpc2libGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNpbmcgYW5kIHNvdXJjZSBhcmNoaXZpbmcgaW5mcmFzdHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NsZWFyY2FzZS1mZXRjaGVyJz4KKyAgICAgICAgICAgIDx0aXRsZT5DbGVhckNhc2UgRmV0Y2hlciAoPGZpbGVuYW1lPmNjcmM6Ly88L2ZpbGVuYW1lPik8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VibW9kdWxlIGZldGNoZXMgY29kZSBmcm9tIGEKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhdGlvbmFsX0NsZWFyQ2FzZSc+Q2xlYXJDYXNlPC91bGluaz4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyB1c2UgdGhpcyBmZXRjaGVyLCBtYWtlIHN1cmUgeW91ciByZWNpcGUgaGFzIHByb3BlcgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiBzZXR0aW5ncy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImNjcmM6Ly9jYy5leGFtcGxlLm9yZy9jY3JjO3ZvYj0vZXhhbXBsZV92b2I7bW9kdWxlPS9leGFtcGxlX21vZHVsZSIKKyAgICAgU1JDUkVWID0gIkVYQU1QTEVfQ0xFQVJDQVNFX1RBRyIKKyAgICAgUFYgPSAiJHtAZC5nZXRWYXIoIlNSQ1JFViIsIEZhbHNlKS5yZXBsYWNlKCIvIiwgIisiKX0iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIHVzZXMgdGhlIDxmaWxlbmFtZT5yY2xlYXJ0b29sPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xlYXJ0b29sPC9maWxlbmFtZT4gcmVtb3RlIGNsaWVudCwgZGVwZW5kaW5nIG9uCisgICAgICAgICAgICAgICAgd2hpY2ggb25lIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBvcHRpb25zIGZvciB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHN0YXRlbWVudDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT52b2I8L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUsIHdoaWNoIG11c3QgaW5jbHVkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmRpbmcgIi8iIGNoYXJhY3Rlciwgb2YgdGhlIENsZWFyQ2FzZSBWT0IuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyByZXF1aXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZHVsZSwgd2hpY2ggbXVzdCBpbmNsdWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZGluZyAiLyIgY2hhcmFjdGVyLCBpbiB0aGUgc2VsZWN0ZWQgVk9CLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnZvYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyBhcmUgY29tYmluZWQgdG8gY3JlYXRlIHRoZSA8ZmlsZW5hbWU+bG9hZDwvZmlsZW5hbWU+IHJ1bGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmlldyBjb25maWcgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgPGZpbGVuYW1lPnZvYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPiB2YWx1ZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBhdCB0aGUgc3RhcnQgb2YgdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmluZyB0aG9zZSB2YWx1ZXMgcmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbG9hZCAvZXhhbXBsZV92b2IvZXhhbXBsZV9tb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cHJvdG88L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sLCB3aGljaCBjYW4gYmUgZWl0aGVyIDxmaWxlbmFtZT5odHRwPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5odHRwczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmZXRjaGVyIGNyZWF0ZXMgYSBjb25maWd1cmF0aW9uIHNwZWNpZmljYXRpb24uCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhpcyBzcGVjaWZpY2F0aW9uIHdyaXR0ZW4gdG8gYW4gYXJlYSBvdGhlciB0aGFuIHRoZSBkZWZhdWx0LAorICAgICAgICAgICAgICAgIHVzZSB0aGUgPGZpbGVuYW1lPkNDQVNFX0NVU1RPTV9DT05GSUdfU1BFQzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgaW4geW91ciByZWNpcGUgdG8gZGVmaW5lIHdoZXJlIHRoZSBzcGVjaWZpY2F0aW9uIGlzIHdyaXR0ZW4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gbG9zZXMgaXRzIGZ1bmN0aW9uYWxpdHkgaWYgeW91CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IGlzIHN0aWxsIHVzZWQgdG8gbGFiZWwgdGhlCisgICAgICAgICAgICAgICAgICAgIGFyY2hpdmUgYWZ0ZXIgYSBmZXRjaCBldmVuIHRob3VnaCBpdCBkb2VzIG5vdCBkZWZpbmUgd2hhdCBpcworICAgICAgICAgICAgICAgICAgICBmZXRjaGVkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgb2Ygb3RoZXIgYmVoYXZpb3JzIHdvcnRoIG1lbnRpb25pbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyA8ZmlsZW5hbWU+Y2xlYXJ0b29sPC9maWxlbmFtZT4sIHRoZSBsb2dpbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNsZWFydG9vbDwvZmlsZW5hbWU+IGlzIGhhbmRsZWQgYnkgdGhlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsb2dpbiByZXF1aXJlIG5vIHNwZWNpYWwgc3RlcHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIDxmaWxlbmFtZT5yY2xlYXJ0b29sPC9maWxlbmFtZT4gd2l0aCBhdXRoZW50aWNhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VycywgYW4gInJjbGVhcnRvb2wgbG9naW4iIGlzIG5lY2Vzc2FyeSBiZWZvcmUgdXNpbmcgdGhlIGZldGNoZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdwZXJmb3JjZS1mZXRjaGVyJz4KKyAgICAgICAgICAgIDx0aXRsZT5QZXJmb3JjZSBGZXRjaGVyICg8ZmlsZW5hbWU+cDQ6Ly88L2ZpbGVuYW1lPik8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VibW9kdWxlIGZldGNoZXMgY29kZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnBlcmZvcmNlLmNvbS8nPlBlcmZvcmNlPC91bGluaz4KKyAgICAgICAgICAgICAgICBzb3VyY2UgY29udHJvbCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlIGV4ZWN1dGFibGUgdXNlZCBpcyBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RkVUQ0hDTURfcDQ8L2ZpbGVuYW1lPiwgd2hpY2ggZGVmYXVsdHMKKyAgICAgICAgICAgICAgICB0byAicDQiLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyJ3MgdGVtcG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCBieQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QNERJUic+PGZpbGVuYW1lPlA0RElSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvICJETF9ESVIvcDQiLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIGRvZXMgbm90IG1ha2UgdXNlIG9mIGEgcGVyZm9yY2UgY2xpZW50LCBpbnN0ZWFkIGl0CisgICAgICAgICAgICAgICAgcmVsaWVzIG9uIDxmaWxlbmFtZT5wNCBmaWxlczwvZmlsZW5hbWU+IHRvIHJldHJpZXZlIGEgbGlzdCBvZgorICAgICAgICAgICAgICAgIGZpbGVzIGFuZCA8ZmlsZW5hbWU+cDQgcHJpbnQ8L2ZpbGVuYW1lPiB0byB0cmFuc2ZlciB0aGUgY29udGVudAorICAgICAgICAgICAgICAgIG9mIHRob3NlIGZpbGVzIGxvY2FsbHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHVzZSB0aGlzIGZldGNoZXIsIG1ha2Ugc3VyZSB5b3VyIHJlY2lwZSBoYXMgcHJvcGVyCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvbGluaz4sIGFuZAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+IHZhbHVlcy4KKyAgICAgICAgICAgICAgICBUaGUgcDQgZXhlY3V0YWJsZSBpcyBhYmxlIHRvIHVzZSB0aGUgY29uZmlnIGZpbGUgZGVmaW5lZCBieSB5b3VyCisgICAgICAgICAgICAgICAgc3lzdGVtJ3MgPGZpbGVuYW1lPlA0Q09ORklHPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaW4KKyAgICAgICAgICAgICAgICBvcmRlciB0byBkZWZpbmUgdGhlIFBlcmZvcmNlIHNlcnZlciBVUkwgYW5kIHBvcnQsIHVzZXJuYW1lLCBhbmQKKyAgICAgICAgICAgICAgICBwYXNzd29yZCBpZiB5b3UgZG8gbm90IHdpc2ggdG8ga2VlcCB0aG9zZSB2YWx1ZXMgaW4gYSByZWNpcGUKKyAgICAgICAgICAgICAgICBpdHNlbGYuCisgICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSBub3QgdG8gdXNlIDxmaWxlbmFtZT5QNENPTkZJRzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIG9yIHRvIGV4cGxpY2l0bHkgc2V0IHZhcmlhYmxlcyB0aGF0IDxmaWxlbmFtZT5QNENPTkZJRzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY2FuIGNvbnRhaW4sIHlvdSBjYW4gc3BlY2lmeSB0aGUgPGZpbGVuYW1lPlA0UE9SVDwvZmlsZW5hbWU+IHZhbHVlLAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBzZXJ2ZXIncyBVUkwgYW5kIHBvcnQgbnVtYmVyLCBhbmQgeW91IGNhbgorICAgICAgICAgICAgICAgIHNwZWNpZnkgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZGlyZWN0bHkgaW4geW91ciByZWNpcGUgd2l0aGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgcmVsaWVzIG9uIDxmaWxlbmFtZT5QNENPTkZJRzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSB0aGUgc2VydmVyIFVSTCBhbmQgcG9ydCwgdXNlcm5hbWUsIGFuZCBwYXNzd29yZCwgYW5kCisgICAgICAgICAgICAgICAgZmV0Y2hlcyB0aGUgSGVhZCBSZXZpc2lvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgU1JDX1VSSSA9ICJwNDovL2V4YW1wbGUtZGVwb3QvbWFpbi9zb3VyY2UvLi4uIgorICAgIFNSQ1JFViA9ICIke0FVVE9SRVZ9IgorICAgIFBWID0gInA0LSR7U1JDUFZ9IgorICAgIFMgPSAiJHtXT1JLRElSfS9wNCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHNwZWNpZmllcyB0aGUgc2VydmVyIFVSTCBhbmQgcG9ydCwKKyAgICAgICAgICAgICAgICB1c2VybmFtZSwgYW5kIHBhc3N3b3JkLCBhbmQgZmV0Y2hlcyBhIFJldmlzaW9uIGJhc2VkIG9uIGEgTGFiZWw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIFA0UE9SVCA9ICJ0Y3A6cDRzZXJ2ZXIuZXhhbXBsZS5uZXQ6MTY2NiIKKyAgICBTUkNfVVJJID0gInA0Oi8vdXNlcjpwYXNzd2RAZXhhbXBsZS1kZXBvdC9tYWluL3NvdXJjZS8uLi4iCisgICAgU1JDUkVWID0gInJlbGVhc2UtMS4wIgorICAgIFBWID0gInA0LSR7U1JDUFZ9IgorICAgIFMgPSAiJHtXT1JLRElSfS9wNCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWx3YXlzIHNldCA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT4iJHtXT1JLRElSfS9wNCI8L2ZpbGVuYW1lPiBpbiB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmZXRjaGVyIHN0cmlwcyB0aGUgZGVwb3QgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICBsb2NhbCBmaWxlIHBhdGhzLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIGNvbnRlbnQgb2YKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXhhbXBsZS1kZXBvdC9tYWluL3NvdXJjZS88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdpbGwgYmUgcGxhY2VkIGluIDxmaWxlbmFtZT4ke1dPUktESVJ9L3A0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIHNpdHVhdGlvbnMgd2hlcmUgcHJlc2VydmluZyBwYXJ0cyBvZiB0aGUgcmVtb3RlIGRlcG90IHBhdGhzCisgICAgICAgICAgICAgICAgbG9jYWxseSBpcyBkZXNpcmFibGUsIHRoZSBmZXRjaGVyIHN1cHBvcnRzIHR3byBwYXJhbWV0ZXJzOgorCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJtb2R1bGUiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wLWxldmVsIGRlcG90IGxvY2F0aW9uIG9yIGRpcmVjdG9yeSB0byBmZXRjaC4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlciBjYW4gYWxzbyBwb2ludCB0byBhIHNpbmdsZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIGRlcG90LCBpbiB3aGljaCBjYXNlIHRoZSBsb2NhbCBmaWxlIHBhdGggd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgbW9kdWxlIHBhdGguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+InJlbW90ZXBhdGgiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQgd2l0aCB0aGUgdmFsdWUgIjxmaWxlbmFtZT5rZWVwPC9maWxlbmFtZT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZldGNoZXIgd2lsbCBtaXJyb3IgdGhlIGZ1bGwgZGVwb3QgcGF0aHMgbG9jYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24sIGV2ZW4gaW4gY29tYmluYXRpb24gd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdXNlIG9mIHRoZSB0aGUgPGZpbGVuYW1lPm1vZHVsZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGFyYW1ldGVyOgorCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIFNSQ19VUkkgPSAicDQ6Ly91c2VyOnBhc3N3ZEBleGFtcGxlLWRlcG90L21haW47bW9kdWxlPXNvdXJjZS8uLi4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBvZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zb3VyY2UvPC9maWxlbmFtZT4gIHdpbGwgYmUgZmV0Y2hlZCB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1A0RElSfTwvZmlsZW5hbWU+LCBpbmNsdWRpbmcgdGhlIGRpcmVjdG9yeSBpdHNlbGYuCisgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgd2lsbCBiZSBhY2Nlc2libGUgYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQNERJUn0vc291cmNlLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdXNlIG9mIHRoZSB0aGUgPGZpbGVuYW1lPnJlbW90ZXBhdGg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHBhcmFtZXRlcjoKKworICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBTUkNfVVJJID0gInA0Oi8vdXNlcjpwYXNzd2RAZXhhbXBsZS1kZXBvdC9tYWluO21vZHVsZT1zb3VyY2UvLi4uO3JlbW90ZXBhdGg9a2VlcCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisKKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IG9mIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZS88L2ZpbGVuYW1lPiAgd2lsbCBiZSBmZXRjaGVkIHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UDRESVJ9PC9maWxlbmFtZT4sIGJ1dCB0aGUgY29tcGxldGUgZGVwb3QgcGF0aHMgd2lsbAorICAgICAgICAgICAgICAgIGJlIG1pcnJvcmVkIGxvY2FsbHkuIFRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IHdpbGwgYmUgYWNjZXNzaWJsZQorICAgICAgICAgICAgICAgIGF0IDxmaWxlbmFtZT4ke1A0RElSfS9leGFtcGxlLWRlcG90L21haW4vc291cmNlLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcG8tZmV0Y2hlcic+CisgICAgICAgICAgICA8dGl0bGU+UmVwbyBGZXRjaGVyICg8ZmlsZW5hbWU+cmVwbzovLzwvZmlsZW5hbWU+KTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgZmV0Y2hlciBzdWJtb2R1bGUgZmV0Y2hlcyBjb2RlIGZyb20KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z29vZ2xlLXJlcG88L2ZpbGVuYW1lPiBzb3VyY2UgY29udHJvbCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlIGZldGNoZXIgd29ya3MgYnkgaW5pdGlhdGluZyBhbmQgc3luY2luZyBzb3VyY2VzIG9mIHRoZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgaW50bworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1SRVBPRElSJz48ZmlsZW5hbWU+UkVQT0RJUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyB1c3VhbGx5CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT4vcmVwbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4icHJvdG9jb2wiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbCB0byBmZXRjaCB0aGUgcmVwb3NpdG9yeSBtYW5pZmVzdCAoZGVmYXVsdDogZ2l0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+ImJyYW5jaCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5jaCBvciB0YWcgb2YgcmVwb3NpdG9yeSB0byBnZXQgKGRlZmF1bHQ6IG1hc3RlcikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJtYW5pZmVzdCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgb2YgdGhlIG1hbmlmZXN0IGZpbGUgKGRlZmF1bHQ6IDxmaWxlbmFtZT5kZWZhdWx0LnhtbDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZSBVUkxzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBTUkNfVVJJID0gInJlcG86Ly9SRVBPUk9PVDtwcm90b2NvbD1naXQ7YnJhbmNoPXNvbWVfYnJhbmNoO21hbmlmZXN0PW15X21hbmlmZXN0LnhtbCIKKyAgICBTUkNfVVJJID0gInJlcG86Ly9SRVBPUk9PVDtwcm90b2NvbD1maWxlO2JyYW5jaD1zb21lX2JyYW5jaDttYW5pZmVzdD1teV9tYW5pZmVzdC54bWwiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J290aGVyLWZldGNoZXJzJz4KKyAgICAgICAgICAgIDx0aXRsZT5PdGhlciBGZXRjaGVyczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZldGNoIHN1Ym1vZHVsZXMgYWxzbyBleGlzdCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBCYXphYXIgKDxmaWxlbmFtZT5ienI6Ly88L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBNZXJjdXJpYWwgKDxmaWxlbmFtZT5oZzovLzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIG5wbSAoPGZpbGVuYW1lPm5wbTovLzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9TQyAoPGZpbGVuYW1lPm9zYzovLzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyZSBGVFAgKDxmaWxlbmFtZT5zZnRwOi8vPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VjdXJlIFNoZWxsICg8ZmlsZW5hbWU+c3NoOi8vPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVHJlZXMgdXNpbmcgR2l0IEFubmV4ICg8ZmlsZW5hbWU+Z2l0YW5uZXg6Ly88L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIE5vIGRvY3VtZW50YXRpb24gY3VycmVudGx5IGV4aXN0cyBmb3IgdGhlc2UgbGVzc2VyIHVzZWQKKyAgICAgICAgICAgICAgICBmZXRjaGVyIHN1Ym1vZHVsZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG1pZ2h0IGZpbmQgdGhlIGNvZGUgaGVscGZ1bCBhbmQgcmVhZGFibGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYXV0by1yZXZpc2lvbnMnPgorICAgICAgICA8dGl0bGU+QXV0byBSZXZpc2lvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2UgbmVlZCB0byBkb2N1bWVudCA8ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ1JFVl9GT1JNQVQ8L2ZpbGVuYW1lPiBoZXJlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZWIzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwKQEAgLTAsMCArMSw1MTMgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiPgorCis8YXBwZW5kaXggaWQ9J2hlbGxvLXdvcmxkLWV4YW1wbGUnPgorICAgIDx0aXRsZT5IZWxsbyBXb3JsZCBFeGFtcGxlPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLWhlbGxvLXdvcmxkJz4KKyAgICAgICAgPHRpdGxlPkJpdEJha2UgSGVsbG8gV29ybGQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHNpbXBsZXN0IGV4YW1wbGUgY29tbW9ubHkgdXNlZCB0byBkZW1vbnN0cmF0ZSBhbnkgbmV3CisgICAgICAgICAgICBwcm9ncmFtbWluZyBsYW5ndWFnZSBvciB0b29sIGlzIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVsbG9fd29ybGRfcHJvZ3JhbSI+SGVsbG8gV29ybGQ8L3VsaW5rPiIKKyAgICAgICAgICAgIGV4YW1wbGUuCisgICAgICAgICAgICBUaGlzIGFwcGVuZGl4IGRlbW9uc3RyYXRlcywgaW4gdHV0b3JpYWwgZm9ybSwgSGVsbG8KKyAgICAgICAgICAgIFdvcmxkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBCaXRCYWtlLgorICAgICAgICAgICAgVGhlIHR1dG9yaWFsIGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlIGEgbmV3IHByb2plY3QKKyAgICAgICAgICAgIGFuZCB0aGUgYXBwbGljYWJsZSBtZXRhZGF0YSBmaWxlcyBuZWNlc3NhcnkgdG8gYWxsb3cKKyAgICAgICAgICAgIEJpdEJha2UgdG8gYnVpbGQgaXQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZXhhbXBsZS1vYnRhaW5pbmctYml0YmFrZSc+CisgICAgICAgIDx0aXRsZT5PYnRhaW5pbmcgQml0QmFrZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb2J0YWluaW5nLWJpdGJha2UnPk9idGFpbmluZyBCaXRCYWtlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBvYnRhaW4gQml0QmFrZS4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIHNvdXJjZSBjb2RlIG9uIHlvdXIgbWFjaGluZSwgdGhlIEJpdEJha2UgZGlyZWN0b3J5CisgICAgICAgICAgICBhcHBlYXJzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbHMgLWFsCisgICAgIHRvdGFsIDEwMAorICAgICBkcnd4cnd4ci14LiA5IHdtYXQgd21hdCAgNDA5NiBKYW4gMzEgMTM6NDQgLgorICAgICBkcnd4cnd4ci14LiAzIHdtYXQgd21hdCAgNDA5NiBGZWIgIDQgMTA6NDUgLi4KKyAgICAgLXJ3LXJ3LXItLS4gMSB3bWF0IHdtYXQgICAzNjUgTm92IDI2IDA0OjU1IEFVVEhPUlMKKyAgICAgZHJ3eHJ3eHIteC4gMiB3bWF0IHdtYXQgIDQwOTYgTm92IDI2IDA0OjU1IGJpbgorICAgICBkcnd4cnd4ci14LiA0IHdtYXQgd21hdCAgNDA5NiBKYW4gMzEgMTM6NDQgYnVpbGQKKyAgICAgLXJ3LXJ3LXItLS4gMSB3bWF0IHdtYXQgMTY1MDEgTm92IDI2IDA0OjU1IENoYW5nZUxvZworICAgICBkcnd4cnd4ci14LiAyIHdtYXQgd21hdCAgNDA5NiBOb3YgMjYgMDQ6NTUgY2xhc3NlcworICAgICBkcnd4cnd4ci14LiAyIHdtYXQgd21hdCAgNDA5NiBOb3YgMjYgMDQ6NTUgY29uZgorICAgICBkcnd4cnd4ci14LiAzIHdtYXQgd21hdCAgNDA5NiBOb3YgMjYgMDQ6NTUgY29udHJpYgorICAgICAtcnctcnctci0tLiAxIHdtYXQgd21hdCAxNzk4NyBOb3YgMjYgMDQ6NTUgQ09QWUlORworICAgICBkcnd4cnd4ci14LiAzIHdtYXQgd21hdCAgNDA5NiBOb3YgMjYgMDQ6NTUgZG9jCisgICAgIC1ydy1ydy1yLS0uIDEgd21hdCB3bWF0ICAgIDY5IE5vdiAyNiAwNDo1NSAuZ2l0aWdub3JlCisgICAgIC1ydy1ydy1yLS0uIDEgd21hdCB3bWF0ICAgODQ5IE5vdiAyNiAwNDo1NSBIRUFERVIKKyAgICAgZHJ3eHJ3eHIteC4gNSB3bWF0IHdtYXQgIDQwOTYgSmFuIDMxIDEzOjQ0IGxpYgorICAgICAtcnctcnctci0tLiAxIHdtYXQgd21hdCAgIDE5NSBOb3YgMjYgMDQ6NTUgTUFOSUZFU1QuaW4KKyAgICAgLXJ3LXJ3LXItLS4gMSB3bWF0IHdtYXQgIDI4ODcgTm92IDI2IDA0OjU1IFRPRE8KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IHNob3VsZCBoYXZlIEJpdEJha2UgY2xvbmVkIHRvCisgICAgICAgICAgICBhIGRpcmVjdG9yeSB0aGF0IG1hdGNoZXMgdGhlIHByZXZpb3VzIGxpc3RpbmcgZXhjZXB0IGZvcgorICAgICAgICAgICAgZGF0ZXMgYW5kIHVzZXIgbmFtZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10aGUtYml0YmFrZS1lbnZpcm9ubWVudCc+CisgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBCaXRCYWtlIEVudmlyb25tZW50PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZpcnN0LCB5b3UgbmVlZCB0byBiZSBzdXJlIHRoYXQgeW91IGNhbiBydW4gQml0QmFrZS4KKyAgICAgICAgICAgIFNldCB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHdoZXJlIHlvdXIgbG9jYWwgQml0QmFrZQorICAgICAgICAgICAgZmlsZXMgYXJlIGFuZCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vYmluL2JpdGJha2UgLS12ZXJzaW9uCisgICAgIEJpdEJha2UgQnVpbGQgVG9vbCBDb3JlIHZlcnNpb24gMS4yMy4wLCBiaXRiYWtlIHZlcnNpb24gMS4yMy4wCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgY29uc29sZSBvdXRwdXQgdGVsbHMgeW91IHdoYXQgdmVyc2lvbiB5b3UgYXJlIHJ1bm5pbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgdG8gcnVuIEJpdEJha2UgaXMgZnJvbSBhIGRpcmVjdG9yeSBvZiB5b3VyCisgICAgICAgICAgICBjaG9pY2UuCisgICAgICAgICAgICBUbyBiZSBhYmxlIHRvIHJ1biBCaXRCYWtlIGZyb20gYW55IGRpcmVjdG9yeSwgeW91IG5lZWQgdG8gYWRkIHRoZQorICAgICAgICAgICAgZXhlY3V0YWJsZSBiaW5hcnkgdG8geW91ciBiaW5hcnkgdG8geW91ciBzaGVsbCdzIGVudmlyb25tZW50CisgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgRmlyc3QsIGxvb2sgYXQgeW91ciBjdXJyZW50IDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgIGJ5IGVudGVyaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZWNobyAkUEFUSAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgTmV4dCwgYWRkIHRoZSBkaXJlY3RvcnkgbG9jYXRpb24gZm9yIHRoZSBCaXRCYWtlIGJpbmFyeSB0byB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4uCisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhZGRzIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2JpbjwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgdG8gdGhlIGZyb250IG9mIHRoZSA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGV4cG9ydCBQQVRIPS9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2JpbjokUEFUSAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBlbnRlciB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29tbWFuZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgd2hpbGUgd29ya2luZyBmcm9tIGFueSBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndGhlLWhlbGxvLXdvcmxkLWV4YW1wbGUnPgorICAgICAgICA8dGl0bGU+VGhlIEhlbGxvIFdvcmxkIEV4YW1wbGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG92ZXJhbGwgZ29hbCBvZiB0aGlzIGV4ZXJjaXNlIGlzIHRvIGJ1aWxkIGEKKyAgICAgICAgICAgIGNvbXBsZXRlICJIZWxsbyBXb3JsZCIgZXhhbXBsZSB1dGlsaXppbmcgdGFzayBhbmQgbGF5ZXIKKyAgICAgICAgICAgIGNvbmNlcHRzLgorICAgICAgICAgICAgQmVjYXVzZSB0aGlzIGlzIGhvdyBtb2Rlcm4gcHJvamVjdHMgc3VjaCBhcyBPcGVuRW1iZWRkZWQgYW5kCisgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCB1dGlsaXplIEJpdEJha2UsIHRoZSBleGFtcGxlCisgICAgICAgICAgICBwcm92aWRlcyBhbiBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcKKyAgICAgICAgICAgIEJpdEJha2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHRvIHVzZSBCaXRCYWtlIHRvIGJ1aWxkIHRhcmdldHMsCisgICAgICAgICAgICB0aGUgZXhhbXBsZSBzdGFydHMgd2l0aCBub3RoaW5nIGJ1dCB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29tbWFuZCwgd2hpY2ggY2F1c2VzIEJpdEJha2UgdG8gZmFpbCBhbmQgcmVwb3J0IHByb2JsZW1zLgorICAgICAgICAgICAgVGhlIGV4YW1wbGUgcHJvZ3Jlc3NlcyBieSBhZGRpbmcgcGllY2VzIHRvIHRoZSBidWlsZCB0bworICAgICAgICAgICAgZXZlbnR1YWxseSBjb25jbHVkZSB3aXRoIGEgd29ya2luZywgbWluaW1hbCAiSGVsbG8gV29ybGQiCisgICAgICAgICAgICBleGFtcGxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGlsZSBldmVyeSBhdHRlbXB0IGlzIG1hZGUgdG8gZXhwbGFpbiB3aGF0IGlzIGhhcHBlbmluZyBkdXJpbmcKKyAgICAgICAgICAgIHRoZSBleGFtcGxlLCB0aGUgZGVzY3JpcHRpb25zIGNhbm5vdCBjb3ZlciBldmVyeXRoaW5nLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGZ1cnRoZXIgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgIEFsc28sIHlvdSBjYW4gYWN0aXZlbHkgcGFydGljaXBhdGUgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JpdGJha2UtZGV2ZWwnPjwvdWxpbms+CisgICAgICAgICAgICBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdCBhYm91dCB0aGUgQml0QmFrZSBidWlsZCB0b29sLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgd2FzIGluc3BpcmVkIGJ5IGFuZCBkcmV3IGhlYXZpbHkgZnJvbQorICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3lvY3RvQHlvY3RvcHJvamVjdC5vcmcvbXNnMDkzNzkuaHRtbCI+TWFpbGluZyBMaXN0IHBvc3QgLSBUaGUgQml0QmFrZSBlcXVpdmFsZW50IG9mICJIZWxsbywgV29ybGQhIjwvdWxpbms+LgorICAgICAgICA8L25vdGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBzdGF0ZWQgZWFybGllciwgdGhlIGdvYWwgb2YgdGhpcyBleGFtcGxlCisgICAgICAgICAgICBpcyB0byBldmVudHVhbGx5IGNvbXBpbGUgIkhlbGxvIFdvcmxkIi4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIHVua25vd24gd2hhdCBCaXRCYWtlIG5lZWRzIGFuZCB3aGF0IHlvdSBoYXZlCisgICAgICAgICAgICB0byBwcm92aWRlIGluIG9yZGVyIHRvIGFjaGlldmUgdGhhdCBnb2FsLgorICAgICAgICAgICAgUmVjYWxsIHRoYXQgQml0QmFrZSB1dGlsaXplcyB0aHJlZSB0eXBlcyBvZiBtZXRhZGF0YSBmaWxlczoKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NvbmZpZ3VyYXRpb24tZmlsZXMnPkNvbmZpZ3VyYXRpb24gRmlsZXM8L2xpbms+LAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nY2xhc3Nlcyc+Q2xhc3NlczwvbGluaz4sIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVjaXBlcyc+UmVjaXBlczwvbGluaz4uCisgICAgICAgICAgICBCdXQgd2hlcmUgZG8gdGhleSBnbz8KKyAgICAgICAgICAgIEhvdyBkb2VzIEJpdEJha2UgZmluZCB0aGVtPworICAgICAgICAgICAgQml0QmFrZSdzIGVycm9yIG1lc3NhZ2luZyBoZWxwcyB5b3UgYW5zd2VyIHRoZXNlIHR5cGVzIG9mIHF1ZXN0aW9ucworICAgICAgICAgICAgYW5kIGhlbHBzIHlvdSBiZXR0ZXIgdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgaXMgZ29pbmcgb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyB0aGUgY29tcGxldGUgIkhlbGxvIFdvcmxkIiBleGFtcGxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgYSBQcm9qZWN0IERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZpcnN0LCBzZXQgdXAgYSBkaXJlY3RvcnkgZm9yIHRoZSAiSGVsbG8gV29ybGQiIHByb2plY3QuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBob3cgeW91IGNhbiBkbyBzbyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBta2RpciB+L2hlbGxvCisgICAgICQgY2Qgfi9oZWxsbworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBkaXJlY3RvcnkgdGhhdCBCaXRCYWtlIHdpbGwgdXNlIHRvIGRvIGFsbCBvZgorICAgICAgICAgICAgICAgIGl0cyB3b3JrLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgZGlyZWN0b3J5IHRvIGtlZXAgYWxsIHRoZSBtZXRhZmlsZXMgbmVlZGVkCisgICAgICAgICAgICAgICAgYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICBIYXZpbmcgYSBwcm9qZWN0IGRpcmVjdG9yeSBpcyBhIGdvb2Qgd2F5IHRvIGlzb2xhdGUgeW91cgorICAgICAgICAgICAgICAgIHByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRCYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IGhhdmUgbm90aGluZyBidXQgYSBwcm9qZWN0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgc2VlIHdoYXQKKyAgICAgICAgICAgICAgICBpdCBkb2VzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlCisgICAgIFRoZSBCQlBBVEggdmFyaWFibGUgaXMgbm90IHNldCBhbmQgYml0YmFrZSBkaWQgbm90CisgICAgIGZpbmQgYSBjb25mL2JibGF5ZXJzLmNvbmYgZmlsZSBpbiB0aGUgZXhwZWN0ZWQgbG9jYXRpb24uCisgICAgIE1heWJlIHlvdSBhY2NpZGVudGFsbHkgaW52b2tlZCBiaXRiYWtlIGZyb20gdGhlIHdyb25nIGRpcmVjdG9yeT8KKyAgICAgREVCVUc6IFJlbW92ZWQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQ6CisgICAgIEdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCwgWERHX0NVUlJFTlRfREVTS1RPUCwKKyAgICAgR05PTUVfS0VZUklOR19DT05UUk9MLCBESVNQTEFZLCBTU0hfQUdFTlRfUElELCBMQU5HLCBub19wcm94eSwKKyAgICAgWERHX1NFU1NJT05fUEFUSCwgWEFVVEhPUklUWSwgU0VTU0lPTl9NQU5BR0VSLCBTSExWTCwKKyAgICAgTUFOREFUT1JZX1BBVEgsIENPTVBJWl9DT05GSUdfUFJPRklMRSwgV0lORE9XSUQsIEVESVRPUiwKKyAgICAgR1BHX0FHRU5UX0lORk8sIFNTSF9BVVRIX1NPQ0ssIEdETVNFU1NJT04sIEdOT01FX0tFWVJJTkdfUElELAorICAgICBYREdfU0VBVF9QQVRILCBYREdfQ09ORklHX0RJUlMsIExFU1NPUEVOLCBEQlVTX1NFU1NJT05fQlVTX0FERFJFU1MsCisgICAgIF8sIFhER19TRVNTSU9OX0NPT0tJRSwgREVTS1RPUF9TRVNTSU9OLCBMRVNTQ0xPU0UsIERFRkFVTFRTX1BBVEgsCisgICAgIFVCVU5UVV9NRU5VUFJPWFksIE9MRFBXRCwgWERHX0RBVEFfRElSUywgQ09MT1JURVJNLCBMU19DT0xPUlMKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIG1ham9yaXR5IG9mIHRoaXMgb3V0cHV0IGlzIHNwZWNpZmljIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBkaXJlY3RseSByZWxldmFudCB0byBCaXRCYWtlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSB2ZXJ5IGZpcnN0IG1lc3NhZ2UgcmVnYXJkaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICBpcyByZWxldmFudC48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgcnVuIEJpdEJha2UsIGl0IGJlZ2lucyBsb29raW5nIGZvciBtZXRhZGF0YSBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgd2hhdCB0ZWxscyBCaXRCYWtlIHdoZXJlIHRvIGxvb2sgZm9yIHRob3NlIGZpbGVzLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiBpcyBub3Qgc2V0IGFuZCB5b3UgbmVlZCB0byBzZXQgaXQuCisgICAgICAgICAgICAgICAgV2l0aG91dCA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4sIEJpdEJha2UgY2Fubm90CisgICAgICAgICAgICAgICAgZmluZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyAoPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgb3IgcmVjaXBlIGZpbGVzICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGF0IGFsbC4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGFsc28gY2Fubm90IGZpbmQgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNldHRpbmcgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgeW91IGNhbiBzZXQgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgbWFubmVyIHRoYXQgeW91IHNldCA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZWFybGllciBpbiB0aGUgYXBwZW5kaXguCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCB0aG91Z2gsIHRoYXQgaXQgaXMgbXVjaCBtb3JlIGZsZXhpYmxlIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgdXAgaW4gYSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSBmb3IgZWFjaCBwcm9qZWN0LjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5Gcm9tIHlvdXIgc2hlbGwsIGVudGVyIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gc2V0IGFuZAorICAgICAgICAgICAgICAgIGV4cG9ydCB0aGUgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBCQlBBVEg9IjxyZXBsYWNlYWJsZT5wcm9qZWN0ZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4iCisgICAgICQgZXhwb3J0IEJCUEFUSAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVc2UgeW91ciBhY3R1YWwgcHJvamVjdCBkaXJlY3RvcnkgaW4gdGhlIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoYXQgZGlyZWN0b3J5IHRvIGZpbmQgdGhlIG1ldGFkYXRhIGl0IG5lZWRzIGZvcgorICAgICAgICAgICAgICAgIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIHlvdXIgcHJvamVjdCBkaXJlY3RvcnksIGRvIG5vdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHRpbGRlICgifiIpIGNoYXJhY3RlciBhcyBCaXRCYWtlIGRvZXMgbm90IGV4cGFuZCB0aGF0IGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc2hlbGwgd291bGQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBoYXZlIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiBkZWZpbmVkLCBydW4KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGFnYWluOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlCisgICAgIEVSUk9SOiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDE2MywgaW4gd3JhcHBlZAorICAgICAgICAgcmV0dXJuIGZ1bmMoZm4sICphcmdzKQorICAgICAgIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNzMsIGluIHBhcnNlX2NvbmZpZ19maWxlCisgICAgICAgICByZXR1cm4gYmIucGFyc2UuaGFuZGxlKGZuLCBkYXRhLCBpbmNsdWRlKQorICAgICAgIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weSIsIGxpbmUgOTksIGluIGhhbmRsZQorICAgICAgICAgcmV0dXJuIGhbJ2hhbmRsZSddKGZuLCBkYXRhLCBpbmNsdWRlKQorICAgICAgIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weSIsIGxpbmUgMTIwLCBpbiBoYW5kbGUKKyAgICAgICAgIGFic19mbiA9IHJlc29sdmVfZmlsZShmbiwgZGF0YSkKKyAgICAgICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvX19pbml0X18ucHkiLCBsaW5lIDExNywgaW4gcmVzb2x2ZV9maWxlCisgICAgICAgICByYWlzZSBJT0Vycm9yKCJmaWxlICVzIG5vdCBmb3VuZCBpbiAlcyIgJSAoZm4sIGJicGF0aCkpCisgICAgIElPRXJyb3I6IGZpbGUgY29uZi9iaXRiYWtlLmNvbmYgbm90IGZvdW5kIGluIC9ob21lL3Njb3R0LWxlbm92by9oZWxsbworCisgICAgIEVSUk9SOiBVbmFibGUgdG8gcGFyc2UgY29uZi9iaXRiYWtlLmNvbmY6IGZpbGUgY29uZi9iaXRiYWtlLmNvbmYgbm90IGZvdW5kIGluIC9ob21lL3Njb3R0LWxlbm92by9oZWxsbworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIHNhbXBsZSBvdXRwdXQgc2hvd3MgdGhhdCBCaXRCYWtlIGNvdWxkIG5vdCBmaW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIHByb2plY3QKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIHRoZSBmaXJzdCB0aGluZyBCaXRCYWtlIG11c3QgZmluZCBpbiBvcmRlcgorICAgICAgICAgICAgICAgIHRvIGJ1aWxkIGEgdGFyZ2V0LgorICAgICAgICAgICAgICAgIEFuZCwgc2luY2UgdGhlIHByb2plY3QgZGlyZWN0b3J5IGZvciB0aGlzIGV4YW1wbGUgaXMKKyAgICAgICAgICAgICAgICBlbXB0eSwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIDxmaWxlbmFtZT5jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q3JlYXRpbmcgPGZpbGVuYW1lPmNvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gaW5jbHVkZXMgYSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBCaXRCYWtlIHVzZXMgZm9yIG1ldGFkYXRhIGFuZCByZWNpcGUKKyAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB5b3UgbmVlZCB0byBjcmVhdGUgdGhlIGZpbGUgaW4geW91ciBwcm9qZWN0IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGFuZCBkZWZpbmUgc29tZSBrZXkgQml0QmFrZSB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgICAgIHNlZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlL3RyZWUvY29uZi9iaXRiYWtlLmNvbmYnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5Vc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjcmVhdGUgdGhlIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHByb2plY3QgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBta2RpciBjb25mCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEZyb20gd2l0aGluIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgdXNlCisgICAgICAgICAgICAgICAgc29tZSBlZGl0b3IgdG8gY3JlYXRlIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzbyB0aGF0IGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUE4nPlBOPC9saW5rPiAgPSAiJHtAYmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpLGQpWzBdIG9yICdkZWZhdWx0cGtnbmFtZSd9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRNUERJUiAgPSAiJHs8bGluayBsaW5rZW5kPSd2YXItYmItVE9QRElSJz5UT1BESVI8L2xpbms+fS90bXAiCisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1DQUNIRSc+Q0FDSEU8L2xpbms+ICAgPSAiJHtUTVBESVJ9L2NhY2hlIgorICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1RBTVAnPlNUQU1QPC9saW5rPiAgID0gIiR7VE1QRElSfS8ke1BOfS9zdGFtcHMiCisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1UJz5UPC9saW5rPiAgICAgICA9ICIke1RNUERJUn0vJHtQTn0vd29yayIKKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUInPkI8L2xpbms+ICAgICAgID0gIiR7VE1QRElSfS8ke1BOfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFdpdGhvdXQgYSB2YWx1ZSBmb3IgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4sIHRoZQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBwcmV2ZW50IG1vcmUgdGhhbiBvbmUgcmVjaXBlIGZyb20gd29ya2luZy4gWW91IGNhbiBmaXgKKyAgICAgICAgICAgICAgICAgICAgdGhpcyBieSBlaXRoZXIgc2V0dGluZyA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPiB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIGEgdmFsdWUgc2ltaWxhciB0byB3aGF0IE9wZW5FbWJlZGRlZCBhbmQgQml0QmFrZSB1c2UKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGRlZmF1bHQgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgKHNlZSBwcmV2aW91cyBleGFtcGxlKS4gT3IsIGJ5IG1hbnVhbGx5IHVwZGF0aW5nIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRvIHNldCA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPi4gWW91IHdpbGwgYWxzbworICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGluY2x1ZGUgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5UPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+IHZhcmlhYmxlIGRlZmluaXRpb25zIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gdmFyaWFibGUgZXN0YWJsaXNoZXMgYSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICB0aGF0IEJpdEJha2UgdXNlcyBmb3IgYnVpbGQgb3V0cHV0IGFuZCBpbnRlcm1lZGlhdGUgZmlsZXMgb3RoZXIKKyAgICAgICAgICAgICAgICB0aGFuIHRoZSBjYWNoZWQgaW5mb3JtYXRpb24gdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzZXRzY2VuZSc+U2V0c2NlbmU8L2xpbms+IHByb2Nlc3MuCisgICAgICAgICAgICAgICAgSGVyZSwgdGhlIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhlbGxvL3RtcDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsd2F5cyBzYWZlbHkgZGVsZXRlIHRoZSA8ZmlsZW5hbWU+dG1wPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIG9yZGVyIHRvIHJlYnVpbGQgYSBCaXRCYWtlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgY3JlYXRlcyB0aGUgZGlyZWN0b3J5IGZvciB5b3UKKyAgICAgICAgICAgICAgICAgICAgd2hlbiB5b3UgcnVuIEJpdEJha2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBvZiB0aGUgb3RoZXIgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhpcworICAgICAgICAgICAgICAgIGV4YW1wbGUsIGNsaWNrIG9uIHRoZSBsaW5rcyB0byB0YWtlIHlvdSB0byB0aGUgZGVmaW5pdGlvbnMgaW4KKyAgICAgICAgICAgICAgICB0aGUgZ2xvc3NhcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRCYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHN1cmUgdGhhdCB0aGUgPGZpbGVuYW1lPmNvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGV4aXN0cywgeW91IGNhbiBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kIGFnYWluOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlCisgICAgIEVSUk9SOiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDE2MywgaW4gd3JhcHBlZAorICAgICAgICAgcmV0dXJuIGZ1bmMoZm4sICphcmdzKQorICAgICAgIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNzcsIGluIF9pbmhlcml0CisgICAgICAgICBiYi5wYXJzZS5CQkhhbmRsZXIuaW5oZXJpdChiYmNsYXNzLCAiY29uZmlndXJhdGlvbiBJTkhFUklUcyIsIDAsIGRhdGEpCisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weSIsIGxpbmUgOTIsIGluIGluaGVyaXQKKyAgICAgICAgIGluY2x1ZGUoZm4sIGZpbGUsIGxpbmVubywgZCwgImluaGVyaXQiKQorICAgICAgIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weSIsIGxpbmUgMTAwLCBpbiBpbmNsdWRlCisgICAgICAgICByYWlzZSBQYXJzZUVycm9yKCJDb3VsZCBub3QgJShlcnJvcl9vdXQpcyBmaWxlICUoZm4pcyIgJSB2YXJzKCksIG9sZGZuLCBsaW5lbm8pCisgICAgIFBhcnNlRXJyb3I6IFBhcnNlRXJyb3IgaW4gY29uZmlndXJhdGlvbiBJTkhFUklUczogQ291bGQgbm90IGluaGVyaXQgZmlsZSBjbGFzc2VzL2Jhc2UuYmJjbGFzcworCisgICAgIEVSUk9SOiBVbmFibGUgdG8gcGFyc2UgYmFzZTogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIHRoZSBzYW1wbGUgb3V0cHV0LCBCaXRCYWtlIGNvdWxkIG5vdCBmaW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzc2VzL2Jhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gY3JlYXRlIHRoYXQgZmlsZSBuZXh0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGluZyA8ZmlsZW5hbWU+Y2xhc3Nlcy9iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEJpdEJha2UgdXNlcyBjbGFzcyBmaWxlcyB0byBwcm92aWRlIGNvbW1vbiBjb2RlIGFuZCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgIFRoZSBtaW5pbWFsbHkgcmVxdWlyZWQgY2xhc3MgZm9yIEJpdEJha2UgaXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNsYXNzZXMvYmFzZS5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPiBjbGFzcyBpcyBpbXBsaWNpdGx5IGluaGVyaXRlZCBieQorICAgICAgICAgICAgICAgIGV2ZXJ5IHJlY2lwZS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGxvb2tzIGZvciB0aGUgY2xhc3MgaW4gdGhlIDxmaWxlbmFtZT5jbGFzc2VzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QgKGkuZSA8ZmlsZW5hbWU+aGVsbG8vY2xhc3NlczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaW4gdGhpcyBleGFtcGxlKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRlIHRoZSA8ZmlsZW5hbWU+Y2xhc3NlczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAkSE9NRS9oZWxsbworICAgICAkIG1rZGlyIGNsYXNzZXMKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgTW92ZSB0byB0aGUgPGZpbGVuYW1lPmNsYXNzZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIDxmaWxlbmFtZT5iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlIGJ5IGluc2VydGluZworICAgICAgICAgICAgICAgIHRoaXMgc2luZ2xlIGxpbmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBhZGR0YXNrIGJ1aWxkCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBtaW5pbWFsIHRhc2sgdGhhdCBCaXRCYWtlIHJ1bnMgaXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT4gdGFzay4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIGFsbCB0aGUgZXhhbXBsZSBuZWVkcyBpbiBvcmRlciB0byBidWlsZCB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHRoZSA8ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT4gY2FuIGhhdmUgbXVjaAorICAgICAgICAgICAgICAgIG1vcmUgZGVwZW5kaW5nIG9uIHdoaWNoIGJ1aWxkIGVudmlyb25tZW50cyBCaXRCYWtlIGlzCisgICAgICAgICAgICAgICAgc3VwcG9ydGluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSA8ZmlsZW5hbWU+Y2xhc3Nlcy9iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzLCB5b3UgY2FuIHJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQgYWdhaW46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UKKyAgICAgTm90aGluZyB0byBkby4gIFVzZSAnYml0YmFrZSB3b3JsZCcgdG8gYnVpbGQgZXZlcnl0aGluZywgb3IgcnVuICdiaXRiYWtlIC0taGVscCcgZm9yIHVzYWdlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIGZpbmFsbHkgcmVwb3J0aW5nIG5vIGVycm9ycy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHNlZSB0aGF0IGl0IHJlYWxseSBkb2VzIG5vdCBoYXZlIGFueXRoaW5nCisgICAgICAgICAgICAgICAgdG8gZG8uCisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gY3JlYXRlIGEgcmVjaXBlIHRoYXQgZ2l2ZXMgQml0QmFrZSBzb21ldGhpbmcgdG8gZG8uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0aW5nIGEgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBXaGlsZSBpdCBpcyBub3QgcmVhbGx5IG5lY2Vzc2FyeSBmb3Igc3VjaCBhIHNtYWxsIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgaXQgaXMgZ29vZCBwcmFjdGljZSB0byBjcmVhdGUgYSBsYXllciBpbiB3aGljaCB0byBrZWVwIHlvdXIKKyAgICAgICAgICAgICAgICBjb2RlIHNlcGFyYXRlIGZyb20gdGhlIGdlbmVyYWwgbWV0YWRhdGEgdXNlZCBieSBCaXRCYWtlLgorICAgICAgICAgICAgICAgIFRodXMsIHRoaXMgZXhhbXBsZSBjcmVhdGVzIGFuZCB1c2VzIGEgbGF5ZXIgY2FsbGVkICJteWxheWVyIi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gbGF5ZXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbGF5ZXJzJz5MYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5NaW5pbWFsbHksIHlvdSBuZWVkIGEgcmVjaXBlIGZpbGUgYW5kIGEgbGF5ZXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgaW4geW91ciBsYXllci4KKyAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIG5lZWRzIHRvIGJlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluc2lkZSB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzIHRvIHNldCB1cCB0aGUgbGF5ZXIgYW5kIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAkSE9NRQorICAgICAkIG1rZGlyIG15bGF5ZXIKKyAgICAgJCBjZCBteWxheWVyCisgICAgICQgbWtkaXIgY29uZgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBNb3ZlIHRvIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgY3JlYXRlIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgdGhhdCBoYXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCUEFUSCAuPSAiOiR7PGxpbmsgbGlua2VuZD0ndmFyLWJiLUxBWUVSRElSJz5MQVlFUkRJUjwvbGluaz59IgorCisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQkZJTEVTJz5CQkZJTEVTPC9saW5rPiArPSAiJHtMQVlFUkRJUn0vKi5iYiIKKworICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJGSUxFX0NPTExFQ1RJT05TJz5CQkZJTEVfQ09MTEVDVElPTlM8L2xpbms+ICs9ICJteWxheWVyIgorICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJGSUxFX1BBVFRFUk4nPkJCRklMRV9QQVRURVJOX215bGF5ZXI8L2xpbms+IDo9ICJeJHtMQVlFUkRJUl9SRX0vIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgdmFyaWFibGVzLCBjbGljayB0aGUgbGlua3MKKyAgICAgICAgICAgICAgICB0byBnbyB0byB0aGUgZGVmaW5pdGlvbnMgaW4gdGhlIGdsb3NzYXJ5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgbmVlZCB0byBjcmVhdGUgdGhlIHJlY2lwZSBmaWxlIG5leHQuCisgICAgICAgICAgICAgICAgSW5zaWRlIHlvdXIgbGF5ZXIgYXQgdGhlIHRvcC1sZXZlbCwgdXNlIGFuIGVkaXRvciBhbmQgY3JlYXRlCisgICAgICAgICAgICAgICAgYSByZWNpcGUgZmlsZSBuYW1lZCA8ZmlsZW5hbWU+cHJpbnRoZWxsby5iYjwvZmlsZW5hbWU+IHRoYXQKKyAgICAgICAgICAgICAgICBoYXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1ERVNDUklQVElPTic+REVTQ1JJUFRJT048L2xpbms+ID0gIlByaW50cyBIZWxsbyBXb3JsZCIKKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBOJz5QTjwvbGluaz4gPSAncHJpbnRoZWxsbycKKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBWJz5QVjwvbGluaz4gPSAnMScKKworICAgICBweXRob24gZG9fYnVpbGQoKSB7CisgICAgICAgIGJiLnBsYWluKCIqKioqKioqKioqKioqKioqKioqKiIpOworICAgICAgICBiYi5wbGFpbigiKiAgICAgICAgICAgICAgICAgICoiKTsKKyAgICAgICAgYmIucGxhaW4oIiogIEhlbGxvLCBXb3JsZCEgICAqIik7CisgICAgICAgIGJiLnBsYWluKCIqICAgICAgICAgICAgICAgICAgKiIpOworICAgICAgICBiYi5wbGFpbigiKioqKioqKioqKioqKioqKioqKioiKTsKKyAgICAgfQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGZpbGUgc2ltcGx5IHByb3ZpZGVzIGEgZGVzY3JpcHRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlLCB0aGUgbmFtZSwgdmVyc2lvbiwgYW5kIHRoZSA8ZmlsZW5hbWU+ZG9fYnVpbGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2ssIHdoaWNoIHByaW50cyBvdXQgIkhlbGxvIFdvcmxkIiB0byB0aGUgY29uc29sZS4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB2YXJpYWJsZXMsIGZvbGxvdyB0aGUgbGlua3MKKyAgICAgICAgICAgICAgICB0byB0aGUgZ2xvc3NhcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRCYWtlIFdpdGggYSBUYXJnZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBOb3cgdGhhdCBhIEJpdEJha2UgdGFyZ2V0IGV4aXN0cywgcnVuIHRoZSBjb21tYW5kIGFuZCBwcm92aWRlCisgICAgICAgICAgICAgICAgdGhhdCB0YXJnZXQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkICRIT01FL2hlbGxvCisgICAgICQgYml0YmFrZSBwcmludGhlbGxvCisgICAgIEVSUk9SOiBubyByZWNpcGUgZmlsZXMgdG8gYnVpbGQsIGNoZWNrIHlvdXIgQkJQQVRIIGFuZCBCQkZJTEVTPworCisgICAgIFN1bW1hcnk6IFRoZXJlIHdhcyAxIEVSUk9SIG1lc3NhZ2Ugc2hvd24sIHJldHVybmluZyBhIG5vbi16ZXJvIGV4aXQgY29kZS4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgV2UgaGF2ZSBjcmVhdGVkIHRoZSBsYXllciB3aXRoIHRoZSByZWNpcGUgYW5kIHRoZSBsYXllcgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBidXQgaXQgc3RpbGwgc2VlbXMgdGhhdCBCaXRCYWtlIGNhbm5vdAorICAgICAgICAgICAgICAgIGZpbmQgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIG5lZWRzIGEgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IHRoYXQKKyAgICAgICAgICAgICAgICBsaXN0cyB0aGUgbGF5ZXJzIGZvciB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgICAgICBXaXRob3V0IHRoaXMgZmlsZSwgQml0QmFrZSBjYW5ub3QgZmluZCB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGluZyA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgdG8gbG9jYXRlIGxheWVycyBuZWVkZWQgZm9yIHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBtdXN0IHJlc2lkZSBpbiB0aGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBvZiB0aGUgcHJvamVjdCAoaS5lLiA8ZmlsZW5hbWU+aGVsbG8vY29uZjwvZmlsZW5hbWU+IGZvciB0aGlzCisgICAgICAgICAgICAgICAgZXhhbXBsZSkuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPlNldCB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSA8ZmlsZW5hbWU+aGVsbG8vY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCB0aGVuIGNyZWF0ZSB0aGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgc28gdGhhdCBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJMQVlFUlMgPz0gIiBcCisgICAgICAgL2hvbWUvJmx0O3lvdSZndDsvbXlsYXllciBcCisgICAgICAgIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBwcm92aWRlIHlvdXIgb3duIGluZm9ybWF0aW9uIGZvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b3U8L2ZpbGVuYW1lPiBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBoYXZlIHN1cHBsaWVkIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSwgcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHByb3ZpZGUKKyAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIHByaW50aGVsbG8KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfAorICAgICBUaW1lOiAwMDowMDowMAorICAgICBQYXJzaW5nIG9mIDEgLmJiIGZpbGVzIGNvbXBsZXRlICgwIGNhY2hlZCwgMSBwYXJzZWQpLiAxIHRhcmdldHMsIDAgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFzayBxdWV1ZSBkZXBlbmRlbmNpZXMKKyAgICAgTk9URTogUHJlcGFyaW5nIFJ1blF1ZXVlCisgICAgIE5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcworICAgICAqKioqKioqKioqKioqKioqKioqKgorICAgICAqICAgICAgICAgICAgICAgICAgKgorICAgICAqICBIZWxsbywgV29ybGQhICAgKgorICAgICAqICAgICAgICAgICAgICAgICAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKgorICAgICBOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgMSB0YXNrcyBvZiB3aGljaCAwIGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGZpbmRzIHRoZSA8ZmlsZW5hbWU+cHJpbnRoZWxsbzwvZmlsZW5hbWU+IHJlY2lwZSBhbmQKKyAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkgcnVucyB0aGUgdGFzay4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIGZpcnN0IGV4ZWN1dGlvbiwgcmUtcnVubmluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSBwcmludGhlbGxvPC9maWxlbmFtZT4gYWdhaW4gd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0IGluIGEgQml0QmFrZSBydW4gdGhhdCBwcmludHMgdGhlIHNhbWUgY29uc29sZQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGUgZmlyc3QgdGltZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByaW50aGVsbG8uYmI8L2ZpbGVuYW1lPiByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fYnVpbGQ8L2ZpbGVuYW1lPiB0YXNrIGV4ZWN1dGVzCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSwgQml0QmFrZSB3cml0ZXMgYSBzdGFtcCBmaWxlIGZvciB0aGUgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIG5leHQgdGltZSB5b3UgYXR0ZW1wdCB0byBydW4gdGhlIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhhdCBzYW1lIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBub3RpY2VzIHRoZSBzdGFtcCBhbmQgdGhlcmVmb3JlIGRldGVybWluZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgdGFzayBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlLXJ1bi4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRlbGV0ZSB0aGUgPGZpbGVuYW1lPnRtcDwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBvciBydW4gPGZpbGVuYW1lPmJpdGJha2UgLWMgY2xlYW4gcHJpbnRoZWxsbzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGVuIHJlLXJ1biB0aGUgYnVpbGQsIHRoZSAiSGVsbG8sIFdvcmxkISIgbWVzc2FnZSB3aWxsCisgICAgICAgICAgICAgICAgICAgIGJlIHByaW50ZWQgYWdhaW4uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKzwvYXBwZW5kaXg+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby5yc3QgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby5yc3QKaW5kZXggNmY5ZDM5Mi4uNzdkYzk2NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ucnN0CisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnJzdApAQCAtNDY1LDcgKzQ2NSw3IEBACiBFeGVjdXRpbmcgdGFza3MgZm9yIGEgc2luZ2xlIHJlY2lwZSBmaWxlIGlzIHJlbGF0aXZlbHkgc2ltcGxlLiBZb3UKIHNwZWNpZnkgdGhlIGZpbGUgaW4gcXVlc3Rpb24sIGFuZCBCaXRCYWtlIHBhcnNlcyBpdCBhbmQgZXhlY3V0ZXMgdGhlCiBzcGVjaWZpZWQgdGFzay4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgdGFzaywgQml0QmFrZSBleGVjdXRlcyB0aGUKLWRlZmF1bHQgdGFzaywgd2hpY2ggaXMgImJ1aWxkIi4gQml0QmFrZSBvYmV5cyBpbnRlci10YXNrIGRlcGVuZGVuY2llcworZGVmYXVsdCB0YXNrLCB3aGljaCBpcyAiYnVpbGTigJ0uIEJpdEJha2Ugb2JleXMgaW50ZXItdGFzayBkZXBlbmRlbmNpZXMKIHdoZW4gZG9pbmcgc28uCiAKIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBidWlsZCB0YXNrLCB3aGljaCBpcyB0aGUgZGVmYXVsdCB0YXNrLCBvbgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NWMyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwKQEAgLTAsMCArMSw4OTEgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIj4KKworPGNoYXB0ZXIgaWQ9ImJpdGJha2UtdXNlci1tYW51YWwtaW50cm8iPgorICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2VsY29tZSB0byB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdGhlIEJpdEJha2UgdG9vbC4KKyAgICAgICAgVGhlIGluZm9ybWF0aW9uIGF0dGVtcHRzIHRvIGJlIGFzIGluZGVwZW5kZW50IGFzIHBvc3NpYmxlIHJlZ2FyZGluZworICAgICAgICBzeXN0ZW1zIHRoYXQgdXNlIEJpdEJha2UsIHN1Y2ggYXMgT3BlbkVtYmVkZGVkIGFuZCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgSW4gc29tZSBjYXNlcywgc2NlbmFyaW9zIG9yIGV4YW1wbGVzIHdpdGhpbiB0aGUgY29udGV4dCBvZgorICAgICAgICBhIGJ1aWxkIHN5c3RlbSBhcmUgdXNlZCBpbiB0aGUgbWFudWFsIHRvIGhlbHAgd2l0aCB1bmRlcnN0YW5kaW5nLgorICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHRoZSBtYW51YWwgY2xlYXJseSBzdGF0ZXMgdGhlIGNvbnRleHQuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9ImludHJvIj4KKyAgICAgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCBCaXRCYWtlIGlzIGEgZ2VuZXJpYyB0YXNrIGV4ZWN1dGlvbgorICAgICAgICAgICAgZW5naW5lIHRoYXQgYWxsb3dzIHNoZWxsIGFuZCBQeXRob24gdGFza3MgdG8gYmUgcnVuCisgICAgICAgICAgICBlZmZpY2llbnRseSBhbmQgaW4gcGFyYWxsZWwgd2hpbGUgd29ya2luZyB3aXRoaW4KKyAgICAgICAgICAgIGNvbXBsZXggaW50ZXItdGFzayBkZXBlbmRlbmN5IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgT25lIG9mIEJpdEJha2UncyBtYWluIHVzZXJzLCBPcGVuRW1iZWRkZWQsIHRha2VzIHRoaXMgY29yZQorICAgICAgICAgICAgYW5kIGJ1aWxkcyBlbWJlZGRlZCBMaW51eCBzb2Z0d2FyZSBzdGFja3MgdXNpbmcKKyAgICAgICAgICAgIGEgdGFzay1vcmllbnRlZCBhcHByb2FjaC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29uY2VwdHVhbGx5LCBCaXRCYWtlIGlzIHNpbWlsYXIgdG8gR05VIE1ha2UgaW4KKyAgICAgICAgICAgIHNvbWUgcmVnYXJkcyBidXQgaGFzIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgYWNjb3JkaW5nIHRvIHByb3ZpZGVkCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhIHRoYXQgYnVpbGRzIHVwIHRoZSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgaXMgc3RvcmVkIGluIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhbmQgcmVsYXRlZCByZWNpcGUgImFwcGVuZCIgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMsIGNvbmZpZ3VyYXRpb24gKDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+KSBhbmQKKyAgICAgICAgICAgICAgICAgICAgdW5kZXJseWluZyBpbmNsdWRlICg8ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+KSBmaWxlcywgYW5kCisgICAgICAgICAgICAgICAgICAgIGluIGNsYXNzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtZXRhZGF0YSBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHdpdGggaW5zdHJ1Y3Rpb25zIG9uIHdoYXQgdGFza3MgdG8gcnVuIGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhvc2UgdGFza3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpbmNsdWRlcyBhIGZldGNoZXIgbGlicmFyeSBmb3Igb2J0YWluaW5nIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBjb2RlIGZyb20gdmFyaW91cyBwbGFjZXMgc3VjaCBhcyBsb2NhbCBmaWxlcywgc291cmNlIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtcywgb3Igd2Vic2l0ZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGluc3RydWN0aW9ucyBmb3IgZWFjaCB1bml0IHRvIGJlIGJ1aWx0IChlLmcuIGEgcGllY2UKKyAgICAgICAgICAgICAgICAgICAgb2Ygc29mdHdhcmUpIGFyZSBrbm93biBhcyAicmVjaXBlIiBmaWxlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbiBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1bml0CisgICAgICAgICAgICAgICAgICAgIChkZXBlbmRlbmNpZXMsIHNvdXJjZSBmaWxlIGxvY2F0aW9ucywgY2hlY2tzdW1zLCBkZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAgICBhbmQgc28gb24pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgaW5jbHVkZXMgYSBjbGllbnQvc2VydmVyIGFic3RyYWN0aW9uIGFuZCBjYW4KKyAgICAgICAgICAgICAgICAgICAgYmUgdXNlZCBmcm9tIGEgY29tbWFuZCBsaW5lIG9yIHVzZWQgYXMgYSBzZXJ2aWNlIG92ZXIKKyAgICAgICAgICAgICAgICAgICAgWE1MLVJQQyBhbmQgaGFzIHNldmVyYWwgZGlmZmVyZW50IHVzZXIgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJoaXN0b3J5LWFuZC1nb2FscyI+CisgICAgICAgIDx0aXRsZT5IaXN0b3J5IGFuZCBHb2FsczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIHdhcyBvcmlnaW5hbGx5IGEgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkIHByb2plY3QuCisgICAgICAgICAgICBJdCB3YXMgaW5zcGlyZWQgYnkgdGhlIFBvcnRhZ2UgcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbQorICAgICAgICAgICAgdXNlZCBieSB0aGUgR2VudG9vIExpbnV4IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIE9uIERlY2VtYmVyIDcsIDIwMDQsIE9wZW5FbWJlZGRlZCBwcm9qZWN0IHRlYW0gbWVtYmVyCisgICAgICAgICAgICBDaHJpcyBMYXJzb24gc3BsaXQgdGhlIHByb2plY3QgaW50byB0d28gZGlzdGluY3QgcGllY2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Qml0QmFrZSwgYSBnZW5lcmljIHRhc2sgZXhlY3V0b3I8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T3BlbkVtYmVkZGVkLCBhIG1ldGFkYXRhIHNldCB1dGlsaXplZCBieQorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFRvZGF5LCBCaXRCYWtlIGlzIHRoZSBwcmltYXJ5IGJhc2lzIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnLyI+T3BlbkVtYmVkZGVkPC91bGluaz4KKyAgICAgICAgICAgIHByb2plY3QsIHdoaWNoIGlzIGJlaW5nIHVzZWQgdG8gYnVpbGQgYW5kIG1haW50YWluIExpbnV4CisgICAgICAgICAgICBkaXN0cmlidXRpb25zIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmFuZ3N0cm9tLWRpc3RyaWJ1dGlvbi5vcmcvJz5BbmdzdHJvbSBEaXN0cmlidXRpb248L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZCB3aGljaCBpcyBhbHNvIGJlaW5nIHVzZWQgYXMgdGhlIGJ1aWxkIHRvb2wgZm9yIExpbnV4IHByb2plY3RzCisgICAgICAgICAgICBzdWNoIGFzIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnJz5Zb2N0byBQcm9qZWN0PC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFByaW9yIHRvIEJpdEJha2UsIG5vIG90aGVyIGJ1aWxkIHRvb2wgYWRlcXVhdGVseSBtZXQgdGhlIG5lZWRzIG9mCisgICAgICAgICAgICBhbiBhc3BpcmluZyBlbWJlZGRlZCBMaW51eCBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBBbGwgb2YgdGhlIGJ1aWxkIHN5c3RlbXMgdXNlZCBieSB0cmFkaXRpb25hbCBkZXNrdG9wIExpbnV4CisgICAgICAgICAgICBkaXN0cmlidXRpb25zIGxhY2tlZCBpbXBvcnRhbnQgZnVuY3Rpb25hbGl0eSwgYW5kIG5vbmUgb2YgdGhlCisgICAgICAgICAgICBhZCBob2MgQnVpbGRyb290LWJhc2VkIHN5c3RlbXMsIHByZXZhbGVudCBpbiB0aGUKKyAgICAgICAgICAgIGVtYmVkZGVkIHNwYWNlLCB3ZXJlIHNjYWxhYmxlIG9yIG1haW50YWluYWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU29tZSBpbXBvcnRhbnQgb3JpZ2luYWwgZ29hbHMgZm9yIEJpdEJha2Ugd2VyZToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIYW5kbGUgY3Jvc3MtY29tcGlsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGFuZGxlIGludGVyLXBhY2thZ2UgZGVwZW5kZW5jaWVzIChidWlsZCB0aW1lIG9uCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCBhcmNoaXRlY3R1cmUsIGJ1aWxkIHRpbWUgb24gbmF0aXZlCisgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSwgYW5kIHJ1bnRpbWUpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgcnVubmluZyBhbnkgbnVtYmVyIG9mIHRhc2tzIHdpdGhpbiBhIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UsIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvLCBmZXRjaGluZworICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBzb3VyY2VzLCB1bnBhY2tpbmcgdGhlbSwgcGF0Y2hpbmcgdGhlbSwKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJpbmcgdGhlbSwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlIExpbnV4IGRpc3RyaWJ1dGlvbiBhZ25vc3RpYyBmb3IgYm90aCBidWlsZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3RlbXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmUgYXJjaGl0ZWN0dXJlIGFnbm9zdGljLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgbXVsdGlwbGUgYnVpbGQgYW5kIHRhcmdldCBvcGVyYXRpbmcgc3lzdGVtcworICAgICAgICAgICAgICAgICAgICAoZS5nLiBDeWd3aW4sIHRoZSBCU0RzLCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlIHNlbGYtY29udGFpbmVkLCByYXRoZXIgdGhhbiB0aWdodGx5CisgICAgICAgICAgICAgICAgICAgIGludGVncmF0ZWQgaW50byB0aGUgYnVpbGQgbWFjaGluZSdzIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIYW5kbGUgY29uZGl0aW9uYWwgbWV0YWRhdGEgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0sIGRpc3RyaWJ1dGlvbiwgYW5kIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmUgZWFzeSB0byB1c2UgdGhlIHRvb2xzIHRvIHN1cHBseSBsb2NhbCBtZXRhZGF0YSBhbmQgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCB3aGljaCB0byBvcGVyYXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlIGVhc3kgdG8gdXNlIEJpdEJha2UgdG8gY29sbGFib3JhdGUgYmV0d2VlbiBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0cyBmb3IgdGhlaXIgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYW4gaW5oZXJpdGFuY2UgbWVjaGFuaXNtIHRvIHNoYXJlCisgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBtZXRhZGF0YSBiZXR3ZWVuIG1hbnkgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBPdmVyIHRpbWUgaXQgYmVjYW1lIGFwcGFyZW50IHRoYXQgc29tZSBmdXJ0aGVyIHJlcXVpcmVtZW50cworICAgICAgICAgICAgd2VyZSBuZWNlc3Nhcnk6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGFuZGxlIHZhcmlhbnRzIG9mIGEgYmFzZSByZWNpcGUgKGUuZy4gbmF0aXZlLCBzZGssCisgICAgICAgICAgICAgICAgICAgIGFuZCBtdWx0aWxpYikuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BsaXQgbWV0YWRhdGEgaW50byBsYXllcnMgYW5kIGFsbG93IGxheWVycworICAgICAgICAgICAgICAgICAgICB0byBlbmhhbmNlIG9yIG92ZXJyaWRlIG90aGVyIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGxvdyByZXByZXNlbnRhdGlvbiBvZiBhIGdpdmVuIHNldCBvZiBpbnB1dCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYSB0YXNrIGFzIGEgY2hlY2tzdW0uCisgICAgICAgICAgICAgICAgICAgIEJhc2VkIG9uIHRoYXQgY2hlY2tzdW0sIGFsbG93IGFjY2VsZXJhdGlvbiBvZiBidWlsZHMKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBwcmVidWlsdCBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgQml0QmFrZSBzYXRpc2ZpZXMgYWxsIHRoZSBvcmlnaW5hbCByZXF1aXJlbWVudHMgYW5kIG1hbnkgbW9yZQorICAgICAgICAgICAgd2l0aCBleHRlbnNpb25zIGJlaW5nIG1hZGUgdG8gdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgdG8KKyAgICAgICAgICAgIHJlZmxlY3QgdGhlIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgRmxleGliaWxpdHkgYW5kIHBvd2VyIGhhdmUgYWx3YXlzIGJlZW4gdGhlIHByaW9yaXRpZXMuCisgICAgICAgICAgICBCaXRCYWtlIGlzIGhpZ2hseSBleHRlbnNpYmxlIGFuZCBzdXBwb3J0cyBlbWJlZGRlZCBQeXRob24gY29kZSBhbmQKKyAgICAgICAgICAgIGV4ZWN1dGlvbiBvZiBhbnkgYXJiaXRyYXJ5IHRhc2tzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9IkNvbmNlcHRzIj4KKyAgICAgICAgPHRpdGxlPkNvbmNlcHRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgaXMgYSBwcm9ncmFtIHdyaXR0ZW4gaW4gdGhlIFB5dGhvbiBsYW5ndWFnZS4KKyAgICAgICAgICAgIEF0IHRoZSBoaWdoZXN0IGxldmVsLCBCaXRCYWtlIGludGVycHJldHMgbWV0YWRhdGEsIGRlY2lkZXMKKyAgICAgICAgICAgIHdoYXQgdGFza3MgYXJlIHJlcXVpcmVkIHRvIHJ1biwgYW5kIGV4ZWN1dGVzIHRob3NlIHRhc2tzLgorICAgICAgICAgICAgU2ltaWxhciB0byBHTlUgTWFrZSwgQml0QmFrZSBjb250cm9scyBob3cgc29mdHdhcmUgaXMKKyAgICAgICAgICAgIGJ1aWx0LgorICAgICAgICAgICAgR05VIE1ha2UgYWNoaWV2ZXMgaXRzIGNvbnRyb2wgdGhyb3VnaCAibWFrZWZpbGVzIiwgd2hpbGUKKyAgICAgICAgICAgIEJpdEJha2UgdXNlcyAicmVjaXBlcyIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgZXh0ZW5kcyB0aGUgY2FwYWJpbGl0aWVzIG9mIGEgc2ltcGxlCisgICAgICAgICAgICB0b29sIGxpa2UgR05VIE1ha2UgYnkgYWxsb3dpbmcgZm9yIHRoZSBkZWZpbml0aW9uIG9mIG11Y2ggbW9yZQorICAgICAgICAgICAgY29tcGxleCB0YXNrcywgc3VjaCBhcyBhc3NlbWJsaW5nIGVudGlyZSBlbWJlZGRlZCBMaW51eAorICAgICAgICAgICAgZGlzdHJpYnV0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gaW50cm9kdWNlcyBzZXZlcmFsIGNvbmNlcHRzCisgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSB1bmRlcnN0b29kIGluIG9yZGVyIHRvIGJldHRlciBsZXZlcmFnZQorICAgICAgICAgICAgdGhlIHBvd2VyIG9mIEJpdEJha2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncmVjaXBlcyc+CisgICAgICAgICAgICA8dGl0bGU+UmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgUmVjaXBlcywgd2hpY2ggYXJlIGRlbm90ZWQgYnkgdGhlIGZpbGUgZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+LCBhcmUgdGhlIG1vc3QgYmFzaWMgbWV0YWRhdGEgZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlc2UgcmVjaXBlIGZpbGVzIHByb3ZpZGUgQml0QmFrZSB3aXRoIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlc2NyaXB0aXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSAoYXV0aG9yLCBob21lcGFnZSwgbGljZW5zZSwgYW5kIHNvIG9uKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhpc3RpbmcgZGVwZW5kZW5jaWVzIChib3RoIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGVyZSB0aGUgc291cmNlIGNvZGUgcmVzaWRlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byBmZXRjaCBpdDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V2hldGhlciB0aGUgc291cmNlIGNvZGUgcmVxdWlyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSBwYXRjaGVzLCB3aGVyZSB0byBmaW5kIHRoZW0sIGFuZCBob3cgdG8gYXBwbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW08L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhvdyB0byBjb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHRvIGFzc2VtYmxlIHRoZSBnZW5lcmF0ZWQgYXJ0aWZhY3RzIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9uZSBvciBtb3JlIGluc3RhbGxhYmxlIHBhY2thZ2VzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGVyZSBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb3IgcGFja2FnZXMgY3JlYXRlZDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIGNvbnRleHQgb2YgQml0QmFrZSwgb3IgYW55IHByb2plY3QgdXRpbGl6aW5nIEJpdEJha2UKKyAgICAgICAgICAgICAgICBhcyBpdHMgYnVpbGQgc3lzdGVtLCBmaWxlcyB3aXRoIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBleHRlbnNpb24gYXJlIHJlZmVycmVkIHRvIGFzIDxmaXJzdHRlcm0+cmVjaXBlczwvZmlyc3R0ZXJtPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIGFsc28gY29tbW9ubHkgdXNlZCB0byBkZXNjcmliZSByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzaW5jZSB0aGUgc2FtZSB3b3JkIGlzIHVzZWQgdG8gZGVzY3JpYmUgcGFja2FnZWQKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZyb20gYSBwcm9qZWN0LCBpdCBpcyBiZXN0IHRvIG1haW50YWluIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aXZlIHRlcm0gLSAicmVjaXBlcyIuCisgICAgICAgICAgICAgICAgICAgIFB1dCBhbm90aGVyIHdheSwgYSBzaW5nbGUgInJlY2lwZSIgZmlsZSBpcyBxdWl0ZSBjYXBhYmxlCisgICAgICAgICAgICAgICAgICAgIG9mIGdlbmVyYXRpbmcgYSBudW1iZXIgb2YgcmVsYXRlZCBidXQgc2VwYXJhdGVseSBpbnN0YWxsYWJsZQorICAgICAgICAgICAgICAgICAgICAicGFja2FnZXMiLgorICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCB0aGF0IGFiaWxpdHkgaXMgZmFpcmx5IGNvbW1vbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1maWxlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJhdGlvbiBGaWxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZXMsIHdoaWNoIGFyZSBkZW5vdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGV4dGVuc2lvbiwgZGVmaW5lCisgICAgICAgICAgICAgICAgdmFyaW91cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IGdvdmVybiB0aGUgcHJvamVjdCdzIGJ1aWxkCisgICAgICAgICAgICAgICAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBmYWxsIGludG8gc2V2ZXJhbCBhcmVhcyB0aGF0IGRlZmluZQorICAgICAgICAgICAgICAgIG1hY2hpbmUgY29uZmlndXJhdGlvbiwgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgcG9zc2libGUgY29tcGlsZXIgdHVuaW5nLCBnZW5lcmFsIGNvbW1vbgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIG1haW4gY29uZmlndXJhdGlvbiBmaWxlIGlzIHRoZSBzYW1wbGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICBsb2NhdGVkIHdpdGhpbiB0aGUgQml0QmFrZSBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NsYXNzZXMnPgorICAgICAgICAgICAgPHRpdGxlPkNsYXNzZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcywgd2hpY2ggYXJlIGRlbm90ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4gZXh0ZW5zaW9uLCBjb250YWluCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdGhhdCBpcyB1c2VmdWwgdG8gc2hhcmUgYmV0d2VlbiBtZXRhZGF0YSBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBzb3VyY2UgdHJlZSBjdXJyZW50bHkgY29tZXMgd2l0aCBvbmUgY2xhc3MgbWV0YWRhdGEgZmlsZQorICAgICAgICAgICAgICAgIGNhbGxlZCA8ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3NlczwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGNsYXNzIGZpbGVzIGlzIHNwZWNpYWwgc2luY2UgaXQKKyAgICAgICAgICAgICAgICBpcyBhbHdheXMgaW5jbHVkZWQgYXV0b21hdGljYWxseSBmb3IgYWxsIHJlY2lwZXMKKyAgICAgICAgICAgICAgICBhbmQgY2xhc3Nlcy4KKyAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIGNvbnRhaW5zIGRlZmluaXRpb25zIGZvciBzdGFuZGFyZCBiYXNpYyB0YXNrcyBzdWNoCisgICAgICAgICAgICAgICAgYXMgZmV0Y2hpbmcsIHVucGFja2luZywgY29uZmlndXJpbmcgKGVtcHR5IGJ5IGRlZmF1bHQpLAorICAgICAgICAgICAgICAgIGNvbXBpbGluZyAocnVucyBhbnkgTWFrZWZpbGUgcHJlc2VudCksIGluc3RhbGxpbmcgKGVtcHR5IGJ5CisgICAgICAgICAgICAgICAgZGVmYXVsdCkgYW5kIHBhY2thZ2luZyAoZW1wdHkgYnkgZGVmYXVsdCkuCisgICAgICAgICAgICAgICAgVGhlc2UgdGFza3MgYXJlIG9mdGVuIG92ZXJyaWRkZW4gb3IgZXh0ZW5kZWQgYnkgb3RoZXIgY2xhc3NlcworICAgICAgICAgICAgICAgIGFkZGVkIGR1cmluZyB0aGUgcHJvamVjdCBkZXZlbG9wbWVudCBwcm9jZXNzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2xheWVycyc+CisgICAgICAgICAgICA8dGl0bGU+TGF5ZXJzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTGF5ZXJzIGFsbG93IHlvdSB0byBpc29sYXRlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICAgICAgICAgIGN1c3RvbWl6YXRpb25zIGZyb20gZWFjaCBvdGhlci4KKyAgICAgICAgICAgICAgICBXaGlsZSB5b3UgbWlnaHQgZmluZCBpdCB0ZW1wdGluZyB0byBrZWVwIGV2ZXJ5dGhpbmcgaW4gb25lIGxheWVyCisgICAgICAgICAgICAgICAgd2hlbiB3b3JraW5nIG9uIGEgc2luZ2xlIHByb2plY3QsIHRoZSBtb3JlIG1vZHVsYXIKKyAgICAgICAgICAgICAgICB5b3VyIG1ldGFkYXRhLCB0aGUgZWFzaWVyIGl0IGlzIHRvIGNvcGUgd2l0aCBmdXR1cmUgY2hhbmdlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gaWxsdXN0cmF0ZSBob3cgeW91IGNhbiB1c2UgbGF5ZXJzIHRvIGtlZXAgdGhpbmdzIG1vZHVsYXIsCisgICAgICAgICAgICAgICAgY29uc2lkZXIgY3VzdG9taXphdGlvbnMgeW91IG1pZ2h0IG1ha2UgdG8gc3VwcG9ydCBhIHNwZWNpZmljIHRhcmdldCBtYWNoaW5lLgorICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGN1c3RvbWl6YXRpb25zIHR5cGljYWxseSByZXNpZGUgaW4gYSBzcGVjaWFsIGxheWVyLAorICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJhbCBsYXllciwgY2FsbGVkIGEgPGZpcnN0dGVybT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2U8L2ZpcnN0dGVybT4gKEJTUCkKKyAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIG1hY2hpbmUgY3VzdG9taXphdGlvbnMgc2hvdWxkIGJlIGlzb2xhdGVkIGZyb20KKyAgICAgICAgICAgICAgICByZWNpcGVzIGFuZCBtZXRhZGF0YSB0aGF0IHN1cHBvcnQgYSBuZXcgR1VJIGVudmlyb25tZW50LCBmb3IKKyAgICAgICAgICAgICAgICBleGFtcGxlLgorICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIGdpdmVzIHlvdSBhIGNvdXBsZSBvZiBsYXllcnM6IG9uZSBmb3IgdGhlIG1hY2hpbmUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBhbmQgb25lIGZvciB0aGUgR1VJIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IHRoZSBCU1AgbGF5ZXIgY2FuIHN0aWxsCisgICAgICAgICAgICAgICAgbWFrZSBtYWNoaW5lLXNwZWNpZmljIGFkZGl0aW9ucyB0byByZWNpcGVzIHdpdGhpbgorICAgICAgICAgICAgICAgIHRoZSBHVUkgZW52aXJvbm1lbnQgbGF5ZXIgd2l0aG91dCBwb2xsdXRpbmcgdGhlIEdVSSBsYXllciBpdHNlbGYKKyAgICAgICAgICAgICAgICB3aXRoIHRob3NlIG1hY2hpbmUtc3BlY2lmaWMgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyB0aHJvdWdoIGEgcmVjaXBlIHRoYXQgaXMgYSBCaXRCYWtlIGFwcGVuZAorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYXBwZW5kLWJiYXBwZW5kLWZpbGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5BcHBlbmQgRmlsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMsIHdoaWNoIGFyZSBmaWxlcyB0aGF0IGhhdmUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgZXh0ZW5zaW9uLCBleHRlbmQgb3IKKyAgICAgICAgICAgICAgICBvdmVycmlkZSBpbmZvcm1hdGlvbiBpbiBhbiBleGlzdGluZyByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSBleHBlY3RzIGV2ZXJ5IGFwcGVuZCBmaWxlIHRvIGhhdmUgYSBjb3JyZXNwb25kaW5nIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgYXBwZW5kIGZpbGUgYW5kIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICBtdXN0IHVzZSB0aGUgc2FtZSByb290IGZpbGVuYW1lLgorICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZXMgY2FuIGRpZmZlciBvbmx5IGluIHRoZSBmaWxlIHR5cGUgc3VmZml4IHVzZWQKKyAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGluIGFwcGVuZCBmaWxlcyBleHRlbmRzIG9yCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVzIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgdW5kZXJseWluZywKKyAgICAgICAgICAgICAgICBzaW1pbGFybHktbmFtZWQgcmVjaXBlIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSBuYW1lIGFuIGFwcGVuZCBmaWxlLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgd2lsZGNhcmQgY2hhcmFjdGVyIHRvIGFsbG93IGZvciBtYXRjaGluZworICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lcy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBhbiBhcHBlbmQgZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBidXN5Ym94XzEuMjEuJS5iYmFwcGVuZAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGF0IGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIGFueSA8ZmlsZW5hbWU+YnVzeWJveF8xLjIxLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBTbywgdGhlIGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIHRoZSBmb2xsb3dpbmcgcmVjaXBlIG5hbWVzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYnVzeWJveF8xLjIxLjEuYmIKKyAgICAgYnVzeWJveF8xLjIxLjIuYmIKKyAgICAgYnVzeWJveF8xLjIxLjMuYmIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaXMgbGltaXRlZCBpbiB0aGF0IGl0IG9ubHkgd29ya3MgZGlyZWN0bHkgaW4gZnJvbnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBwb3J0aW9uIG9mIHRoZSBhcHBlbmQgZmlsZSdzCisgICAgICAgICAgICAgICAgICAgIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgaW4gYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmJ1c3lib3g8L2ZpbGVuYW1lPiByZWNpcGUgd2FzIHVwZGF0ZWQgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveF8xLjMuMC5iYjwvZmlsZW5hbWU+LCB0aGUgYXBwZW5kIG5hbWUgd291bGQgbm90CisgICAgICAgICAgICAgICAgbWF0Y2guCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IG5hbWVkIHRoZSBhcHBlbmQgZmlsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94XzEuJS5iYmFwcGVuZDwvZmlsZW5hbWU+LCB0aGVuIHlvdSB3b3VsZCBoYXZlIGEgbWF0Y2guCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZSBtb3N0IGdlbmVyYWwgY2FzZSwgeW91IGNvdWxkIG5hbWUgdGhlIGFwcGVuZCBmaWxlIHNvbWV0aGluZyBhcworICAgICAgICAgICAgICAgIHNpbXBsZSBhcyA8ZmlsZW5hbWU+YnVzeWJveF8lLmJiYXBwZW5kPC9maWxlbmFtZT4gdG8gYmUgZW50aXJlbHkKKyAgICAgICAgICAgICAgICB2ZXJzaW9uIGluZGVwZW5kZW50LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J29idGFpbmluZy1iaXRiYWtlJz4KKyAgICAgICAgPHRpdGxlPk9idGFpbmluZyBCaXRCYWtlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gb2J0YWluIEJpdEJha2Ugc2V2ZXJhbCBkaWZmZXJlbnQgd2F5czoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DbG9uaW5nIEJpdEJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgR2l0IHRvIGNsb25lIHRoZSBCaXRCYWtlIHNvdXJjZSBjb2RlIHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igb2J0YWluaW5nIEJpdEJha2UuCisgICAgICAgICAgICAgICAgICAgIENsb25pbmcgdGhlIHJlcG9zaXRvcnkgbWFrZXMgaXQgZWFzeSB0byBnZXQgYnVnIGZpeGVzCisgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZlIGFjY2VzcyB0byBzdGFibGUgYnJhbmNoZXMgYW5kIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGNsb25lZCBCaXRCYWtlLCB5b3Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICAgICB0aGUgbGF0ZXN0IHN0YWJsZQorICAgICAgICAgICAgICAgICAgICBicmFuY2ggZm9yIGRldmVsb3BtZW50IHNpbmNlIHRoZSBtYXN0ZXIgYnJhbmNoIGlzIGZvcgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGRldmVsb3BtZW50IGFuZCBtaWdodCBjb250YWluIGxlc3Mgc3RhYmxlIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IHVzdWFsbHkgbmVlZCBhIHZlcnNpb24gb2YgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICB0aGF0IG1hdGNoZXMgdGhlIG1ldGFkYXRhIHlvdSBhcmUgdXNpbmcuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtZXRhZGF0YSBpcyBnZW5lcmFsbHkgYmFja3dhcmRzIGNvbXBhdGlibGUgYnV0CisgICAgICAgICAgICAgICAgICAgIG5vdCBmb3J3YXJkIGNvbXBhdGlibGUuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjbG9uZXMgdGhlIEJpdEJha2UgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNsb25lcyB0aGUgQml0QmFrZSBHaXQgcmVwb3NpdG9yeSBpbnRvIGEKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbGxlZCA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGRlc2lnbmF0ZSBhIGRpcmVjdG9yeSBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdhbnQgdG8gY2FsbCB0aGUgbmV3IGRpcmVjdG9yeSBzb21ldGhpbmcKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGhhbiA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBuYW1lcyB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmRldjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UgYmJkZXYKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5zdGFsbGF0aW9uIHVzaW5nIHlvdXIgRGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgTWFuYWdlbWVudCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgbm90CisgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkIGJlY2F1c2UgdGhlIEJpdEJha2UgdmVyc2lvbiB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHlvdXIgZGlzdHJpYnV0aW9uLCBpbiBtb3N0IGNhc2VzLAorICAgICAgICAgICAgICAgICAgICBpcyBzZXZlcmFsCisgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzIGJlaGluZCBhIHNuYXBzaG90IG9mIHRoZSBCaXRCYWtlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VGFraW5nIGEgc25hcHNob3Qgb2YgQml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEb3dubG9hZGluZyBhIHNuYXBzaG90IG9mIEJpdEJha2UgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUgcmVwb3NpdG9yeSBnaXZlcyB5b3UgYWNjZXNzIHRvIGEga25vd24KKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoIG9yIHJlbGVhc2Ugb2YgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvbmluZyB0aGUgR2l0IHJlcG9zaXRvcnksIGFzIGRlc2NyaWJlZCBlYXJsaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBnZXR0aW5nIEJpdEJha2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvbmluZyB0aGUgcmVwb3NpdG9yeSBtYWtlcyBpdCBlYXNpZXIgdG8gdXBkYXRlIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcyBhcmUgYWRkZWQgdG8gdGhlIHN0YWJsZSBicmFuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIGRvd25sb2FkcyBhIHNuYXBzaG90IG9mCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgdmVyc2lvbiAxLjE3LjA6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3Z2V0IGh0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlL3NuYXBzaG90L2JpdGJha2UtMS4xNy4wLnRhci5negorICAgICAkIHRhciB6eHB2ZiBiaXRiYWtlLTEuMTcuMC50YXIuZ3oKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZnRlciBleHRyYWN0aW9uIG9mIHRoZSB0YXJiYWxsIHVzaW5nIHRoZSB0YXIgdXRpbGl0eSwKKyAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgYSBkaXJlY3RvcnkgZW50aXRsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtMS4xNy4wPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNpbmcgdGhlIEJpdEJha2UgdGhhdCBDb21lcyBXaXRoIFlvdXIKKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgQ2hlY2tvdXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBmaW5hbCBwb3NzaWJpbGl0eSBmb3IgZ2V0dGluZyBhIGNvcHkgb2YgQml0QmFrZSBpcyB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgY29tZXMgd2l0aCB5b3VyIGNoZWNrb3V0IG9mIGEgbGFyZ2VyIEJpdEJha2UtYmFzZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBzdWNoIGFzIFBva3kuCisgICAgICAgICAgICAgICAgICAgIFJhdGhlciB0aGFuIG1hbnVhbGx5IGNoZWNraW5nIG91dCBpbmRpdmlkdWFsIGxheWVycyBhbmQKKyAgICAgICAgICAgICAgICAgICAgZ2x1aW5nIHRoZW0gdG9nZXRoZXIgeW91cnNlbGYsIHlvdSBjYW4gY2hlY2sKKyAgICAgICAgICAgICAgICAgICAgb3V0IGFuIGVudGlyZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoZSBjaGVja291dCB3aWxsIGFscmVhZHkgaW5jbHVkZSBhIHZlcnNpb24gb2YgQml0QmFrZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIHRob3JvdWdobHkgdGVzdGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG90aGVyCisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2hlY2sgb3V0IGEgcGFydGljdWxhciBCaXRCYWtlLWJhc2VkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSwgY29uc3VsdCB0aGF0IGJ1aWxkIHN5c3RlbSdzIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJiaXRiYWtlLXVzZXItbWFudWFsLWNvbW1hbmQiPgorICAgICAgICA8dGl0bGU+VGhlIEJpdEJha2UgQ29tbWFuZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIHRoZSBwcmltYXJ5IGludGVyZmFjZQorICAgICAgICAgICAgdG8gdGhlIEJpdEJha2UgdG9vbC4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGUgQml0QmFrZSBjb21tYW5kIHN5bnRheCBhbmQgcHJvdmlkZXMKKyAgICAgICAgICAgIHNldmVyYWwgZXhlY3V0aW9uIGV4YW1wbGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzYWdlLWFuZC1zeW50YXgnPgorICAgICAgICAgICAgPHRpdGxlPlVzYWdlIGFuZCBzeW50YXg8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIHVzYWdlIGFuZCBzeW50YXggZm9yIEJpdEJha2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWgKKyAgICAgVXNhZ2U6IGJpdGJha2UgW29wdGlvbnNdIFtyZWNpcGVuYW1lL3RhcmdldCByZWNpcGU6ZG9fdGFzayAuLi5dCisKKyAgICAgICAgIEV4ZWN1dGVzIHRoZSBzcGVjaWZpZWQgdGFzayAoZGVmYXVsdCBpcyAnYnVpbGQnKSBmb3IgYSBnaXZlbiBzZXQgb2YgdGFyZ2V0IHJlY2lwZXMgKC5iYiBmaWxlcykuCisgICAgICAgICBJdCBpcyBhc3N1bWVkIHRoZXJlIGlzIGEgY29uZi9iYmxheWVycy5jb25mIGF2YWlsYWJsZSBpbiBjd2Qgb3IgaW4gQkJQQVRIIHdoaWNoCisgICAgICAgICB3aWxsIHByb3ZpZGUgdGhlIGxheWVyLCBCQkZJTEVTIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgorCisgICAgIE9wdGlvbnM6CisgICAgICAgLS12ZXJzaW9uICAgICAgICAgICAgIHNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0CisgICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAtYiBCVUlMREZJTEUsIC0tYnVpbGRmaWxlPUJVSUxERklMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRhc2tzIGZyb20gYSBzcGVjaWZpYyAuYmIgcmVjaXBlIGRpcmVjdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXQVJOSU5HOiBEb2VzIG5vdCBoYW5kbGUgYW55IGRlcGVuZGVuY2llcyBmcm9tIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgLWssIC0tY29udGludWUgICAgICAgIENvbnRpbnVlIGFzIG11Y2ggYXMgcG9zc2libGUgYWZ0ZXIgYW4gZXJyb3IuIFdoaWxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgdGhhdCBmYWlsZWQgYW5kIGFueXRoaW5nIGRlcGVuZGluZyBvbiBpdCBjYW5ub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgYnVpbHQsIGFzIG11Y2ggYXMgcG9zc2libGUgd2lsbCBiZSBidWlsdCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHBpbmcuCisgICAgICAgLWYsIC0tZm9yY2UgICAgICAgICAgIEZvcmNlIHRoZSBzcGVjaWZpZWQgdGFyZ2V0cy90YXNrIHRvIHJ1biAoaW52YWxpZGF0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBleGlzdGluZyBzdGFtcCBmaWxlKS4KKyAgICAgICAtYyBDTUQsIC0tY21kPUNNRCAgICAgU3BlY2lmeSB0aGUgdGFzayB0byBleGVjdXRlLiBUaGUgZXhhY3Qgb3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgZGVwZW5kIG9uIHRoZSBtZXRhZGF0YS4gU29tZSBleGFtcGxlcyBtaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSAnY29tcGlsZScgb3IgJ3BvcHVsYXRlX3N5c3Jvb3QnIG9yICdsaXN0dGFza3MnIG1heQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlIGEgbGlzdCBvZiB0aGUgdGFza3MgYXZhaWxhYmxlLgorICAgICAgIC1DIElOVkFMSURBVEVfU1RBTVAsIC0tY2xlYXItc3RhbXA9SU5WQUxJREFURV9TVEFNUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkYXRlIHRoZSBzdGFtcCBmb3IgdGhlIHNwZWNpZmllZCB0YXNrIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGUnIGFuZCB0aGVuIHJ1biB0aGUgZGVmYXVsdCB0YXNrIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHRhcmdldChzKS4KKyAgICAgICAtciBQUkVGSUxFLCAtLXJlYWQ9UFJFRklMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkIHRoZSBzcGVjaWZpZWQgZmlsZSBiZWZvcmUgYml0YmFrZS5jb25mLgorICAgICAgIC1SIFBPU1RGSUxFLCAtLXBvc3RyZWFkPVBPU1RGSUxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgdGhlIHNwZWNpZmllZCBmaWxlIGFmdGVyIGJpdGJha2UuY29uZi4KKyAgICAgICAtdiwgLS12ZXJib3NlICAgICAgICAgRW5hYmxlIHRyYWNpbmcgb2Ygc2hlbGwgdGFza3MgKHdpdGggJ3NldCAteCcpLiBBbHNvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IGJiLm5vdGUoLi4uKSBtZXNzYWdlcyB0byBzdGRvdXQgKGluIGFkZGl0aW9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcgdGhlbSB0byAke1R9L2xvZy5kb18mbHQ7dGFzayZndDspLgorICAgICAgIC1ELCAtLWRlYnVnICAgICAgICAgICBJbmNyZWFzZSB0aGUgZGVidWcgbGV2ZWwuIFlvdSBjYW4gc3BlY2lmeSB0aGlzIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiBvbmNlLiAtRCBzZXRzIHRoZSBkZWJ1ZyBsZXZlbCB0byAxLCB3aGVyZSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsIC4uLikgbWVzc2FnZXMgYXJlIHByaW50ZWQgdG8gc3Rkb3V0OyAtREQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0cyB0aGUgZGVidWcgbGV2ZWwgdG8gMiwgd2hlcmUgYm90aCBiYi5kZWJ1ZygxLCAuLi4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBiYi5kZWJ1ZygyLCAuLi4pIG1lc3NhZ2VzIGFyZSBwcmludGVkOyBldGMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGhvdXQgLUQsIG5vIGRlYnVnIG1lc3NhZ2VzIGFyZSBwcmludGVkLiBOb3RlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLUQgb25seSBhZmZlY3RzIG91dHB1dCB0byBzdGRvdXQuIEFsbCBkZWJ1ZyBtZXNzYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgd3JpdHRlbiB0byAke1R9L2xvZy5kb190YXNrbmFtZSwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcgbGV2ZWwuCisgICAgICAgLXEsIC0tcXVpZXQgICAgICAgICAgIE91dHB1dCBsZXNzIGxvZyBtZXNzYWdlIGRhdGEgdG8gdGhlIHRlcm1pbmFsLiBZb3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhpcyBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAtbiwgLS1kcnktcnVuICAgICAgICAgRG9uJ3QgZXhlY3V0ZSwganVzdCBnbyB0aHJvdWdoIHRoZSBtb3Rpb25zLgorICAgICAgIC1TIFNJR05BVFVSRV9IQU5ETEVSLCAtLWR1bXAtc2lnbmF0dXJlcz1TSUdOQVRVUkVfSEFORExFUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdW1wIG91dCB0aGUgc2lnbmF0dXJlIGNvbnN0cnVjdGlvbiBpbmZvcm1hdGlvbiwgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubyB0YXNrIGV4ZWN1dGlvbi4gVGhlIFNJR05BVFVSRV9IQU5ETEVSIHBhcmFtZXRlciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgdG8gdGhlIGhhbmRsZXIuIFR3byBjb21tb24gdmFsdWVzIGFyZSBub25lIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGRpZmYgYnV0IHRoZSBoYW5kbGVyIG1heSBkZWZpbmUgbW9yZS9sZXNzLiBub25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYW5zIG9ubHkgZHVtcCB0aGUgc2lnbmF0dXJlLCBwcmludGRpZmYgbWVhbnMgY29tcGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHVtcGVkIHNpZ25hdHVyZSB3aXRoIHRoZSBjYWNoZWQgb25lLgorICAgICAgIC1wLCAtLXBhcnNlLW9ubHkgICAgICBRdWl0IGFmdGVyIHBhcnNpbmcgdGhlIEJCIHJlY2lwZXMuCisgICAgICAgLXMsIC0tc2hvdy12ZXJzaW9ucyAgIFNob3cgY3VycmVudCBhbmQgcHJlZmVycmVkIHZlcnNpb25zIG9mIGFsbCByZWNpcGVzLgorICAgICAgIC1lLCAtLWVudmlyb25tZW50ICAgICBTaG93IHRoZSBnbG9iYWwgb3IgcGVyLXJlY2lwZSBlbnZpcm9ubWVudCBjb21wbGV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHZhcmlhYmxlcyB3ZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldC9jaGFuZ2VkLgorICAgICAgIC1nLCAtLWdyYXBodml6ICAgICAgICBTYXZlIGRlcGVuZGVuY3kgdHJlZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzIGluIHRoZSBkb3Qgc3ludGF4LgorICAgICAgIC1JIEVYVFJBX0FTU1VNRV9QUk9WSURFRCwgLS1pZ25vcmUtZGVwcz1FWFRSQV9BU1NVTUVfUFJPVklERUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1lIHRoZXNlIGRlcGVuZGVuY2llcyBkb24ndCBleGlzdCBhbmQgYXJlIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgKGVxdWl2YWxlbnQgdG8gQVNTVU1FX1BST1ZJREVEKS4gVXNlZnVsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UgZGVwZW5kZW5jeSBncmFwaHMgbW9yZSBhcHBlYWxpbmcKKyAgICAgICAtbCBERUJVR19ET01BSU5TLCAtLWxvZy1kb21haW5zPURFQlVHX0RPTUFJTlMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBkZWJ1ZyBsb2dnaW5nIGZvciB0aGUgc3BlY2lmaWVkIGxvZ2dpbmcgZG9tYWlucworICAgICAgIC1QLCAtLXByb2ZpbGUgICAgICAgICBQcm9maWxlIHRoZSBjb21tYW5kIGFuZCBzYXZlIHJlcG9ydHMuCisgICAgICAgLXUgVUksIC0tdWk9VUkgICAgICAgIFRoZSB1c2VyIGludGVyZmFjZSB0byB1c2UgKGtub3R0eSwgbmN1cnNlcyBvciB0YXNrZXhwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZGVmYXVsdCBrbm90dHkpLgorICAgICAgIC0tdG9rZW49WE1MUlBDVE9LRU4gICBTcGVjaWZ5IHRoZSBjb25uZWN0aW9uIHRva2VuIHRvIGJlIHVzZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHNlcnZlci4KKyAgICAgICAtLXJldmlzaW9ucy1jaGFuZ2VkICAgU2V0IHRoZSBleGl0IGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdXBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmcgcmV2aXNpb25zIGhhdmUgY2hhbmdlZCBvciBub3QuCisgICAgICAgLS1zZXJ2ZXItb25seSAgICAgICAgIFJ1biBiaXRiYWtlIHdpdGhvdXQgYSBVSSwgb25seSBzdGFydGluZyBhIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29va2VyKSBwcm9jZXNzLgorICAgICAgIC1CIEJJTkQsIC0tYmluZD1CSU5EICBUaGUgbmFtZS9hZGRyZXNzIGZvciB0aGUgYml0YmFrZSB4bWxycGMgc2VydmVyIHRvIGJpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uCisgICAgICAgLVQgU0VSVkVSX1RJTUVPVVQsIC0taWRsZS10aW1lb3V0PVNFUlZFUl9USU1FT1VUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCB0aW1lb3V0IHRvIHVubG9hZCBiaXRiYWtlIHNlcnZlciBkdWUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5hY3Rpdml0eSwgc2V0IHRvIC0xIG1lYW5zIG5vIHVubG9hZCwgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQgdmFyaWFibGUgQkJfU0VSVkVSX1RJTUVPVVQuCisgICAgICAgLS1uby1zZXRzY2VuZSAgICAgICAgIERvIG5vdCBydW4gYW55IHNldHNjZW5lIHRhc2tzLiBzc3RhdGUgd2lsbCBiZSBpZ25vcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBldmVyeXRoaW5nIG5lZWRlZCwgYnVpbHQuCisgICAgICAgLS1zZXRzY2VuZS1vbmx5ICAgICAgIE9ubHkgcnVuIHNldHNjZW5lIHRhc2tzLCBkb24ndCBydW4gYW55IHJlYWwgdGFza3MuCisgICAgICAgLS1yZW1vdGUtc2VydmVyPVJFTU9URV9TRVJWRVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdCB0byB0aGUgc3BlY2lmaWVkIHNlcnZlci4KKyAgICAgICAtbSwgLS1raWxsLXNlcnZlciAgICAgVGVybWluYXRlIGFueSBydW5uaW5nIGJpdGJha2Ugc2VydmVyLgorICAgICAgIC0tb2JzZXJ2ZS1vbmx5ICAgICAgICBDb25uZWN0IHRvIGEgc2VydmVyIGFzIGFuIG9ic2VydmluZy1vbmx5IGNsaWVudC4KKyAgICAgICAtLXN0YXR1cy1vbmx5ICAgICAgICAgQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgcmVtb3RlIGJpdGJha2Ugc2VydmVyLgorICAgICAgIC13IFdSSVRFRVZFTlRMT0csIC0td3JpdGUtbG9nPVdSSVRFRVZFTlRMT0cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzIHRoZSBldmVudCBsb2cgb2YgdGhlIGJ1aWxkIHRvIGEgYml0YmFrZSBldmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uIGZpbGUuIFVzZSAnJyAoZW1wdHkgc3RyaW5nKSB0byBhc3NpZ24gdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseS4KKyAgICAgICAtLXJ1bmFsbD1SVU5BTEwgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgdGFzayBmb3IgYW55IHJlY2lwZSBpbiB0aGUgdGFza2dyYXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IChldmVuIGlmIGl0IHdvdWxkbid0IG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHJ1bikuCisgICAgICAgLS1ydW5vbmx5PVJVTk9OTFkgICAgIFJ1biBvbmx5IHRoZSBzcGVjaWZpZWQgdGFzayB3aXRoaW4gdGhlIHRhc2tncmFwaCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIHRhcmdldHMgKGFuZCBhbnkgdGFzayBkZXBlbmRlbmNpZXMgdGhvc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza3MgbWF5IGhhdmUpLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLWV4YW1wbGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBzb21lIGV4YW1wbGVzIHNob3dpbmcgaG93IHRvIHVzZSBCaXRCYWtlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZXhhbXBsZS1leGVjdXRpbmctYS10YXNrLWFnYWluc3QtYS1zaW5nbGUtcmVjaXBlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RXhlY3V0aW5nIGEgVGFzayBBZ2FpbnN0IGEgU2luZ2xlIFJlY2lwZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXhlY3V0aW5nIHRhc2tzIGZvciBhIHNpbmdsZSByZWNpcGUgZmlsZSBpcyByZWxhdGl2ZWx5IHNpbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNwZWNpZnkgdGhlIGZpbGUgaW4gcXVlc3Rpb24sIGFuZCBCaXRCYWtlIHBhcnNlcworICAgICAgICAgICAgICAgICAgICBpdCBhbmQgZXhlY3V0ZXMgdGhlIHNwZWNpZmllZCB0YXNrLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSB0YXNrLCBCaXRCYWtlIGV4ZWN1dGVzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIHRhc2ssIHdoaWNoIGlzICJidWlsZOKAnS4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBvYmV5cyBpbnRlci10YXNrIGRlcGVuZGVuY2llcyB3aGVuIGRvaW5nCisgICAgICAgICAgICAgICAgICAgIHNvLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgcnVucyB0aGUgYnVpbGQgdGFzaywgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdGFzaywgb24gdGhlIDxmaWxlbmFtZT5mb29fMS4wLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1iIGZvb18xLjAuYmIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgcnVucyB0aGUgY2xlYW4gdGFzayBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvby5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYiBmb28uYmIgLWMgY2xlYW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAiLWIiIG9wdGlvbiBleHBsaWNpdGx5IGRvZXMgbm90IGhhbmRsZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyIHRoYW4gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgaXQgaXMgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRoZSBzeW50YXggcHJlc2VudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZXhlY3V0aW5nLXRhc2tzLWFnYWluc3QtYS1zZXQtb2YtcmVjaXBlLWZpbGVzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RXhlY3V0aW5nIFRhc2tzIEFnYWluc3QgYSBTZXQgb2YgUmVjaXBlIEZpbGVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgYWRkaXRpb25hbCBjb21wbGV4aXRpZXMgaW50cm9kdWNlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIG9uZSB3YW50cyB0byBtYW5hZ2UgbXVsdGlwbGUgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBDbGVhcmx5IHRoZXJlIG5lZWRzIHRvIGJlIGEgd2F5IHRvIHRlbGwgQml0QmFrZSB3aGF0CisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBhdmFpbGFibGUgYW5kLCBvZiB0aG9zZSwgd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gZXhlY3V0ZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgYWxzbyBuZWVkcyB0byBiZSBhIHdheSBmb3IgZWFjaCByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgdG8gZXhwcmVzcyBpdHMgZGVwZW5kZW5jaWVzLCBib3RoIGZvciBidWlsZC10aW1lIGFuZAorICAgICAgICAgICAgICAgICAgICBydW50aW1lLgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBtdXN0IGJlIGEgd2F5IGZvciB5b3UgdG8gZXhwcmVzcyByZWNpcGUgcHJlZmVyZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBtdWx0aXBsZSByZWNpcGVzIHByb3ZpZGUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgb3Igd2hlbgorICAgICAgICAgICAgICAgICAgICB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYSByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHdoZW4gbm90IHVzaW5nCisgICAgICAgICAgICAgICAgICAgICItLWJ1aWxkZmlsZSIgb3IgIi1iIiBvbmx5IGFjY2VwdHMgYSAiUFJPVklERVMiLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHByb3ZpZGUgYW55dGhpbmcgZWxzZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYSByZWNpcGUgZmlsZSBnZW5lcmFsbHkgIlBST1ZJREVTIiBpdHMKKyAgICAgICAgICAgICAgICAgICAgInBhY2thZ2VuYW1lIiBhcyBzaG93biBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGZvbworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlICJQUk9WSURFUyIgdGhlIHBhY2thZ2UgbmFtZSBhbmQgYWxzbyB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRoZSAiLWMiIG9wdGlvbiB0byB0ZWxsIEJpdEJha2UgdG8ganVzdCBleGVjdXRlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPiB0YXNrOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYyBjbGVhbiBmb28KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2V4ZWN1dGluZy1hLWxpc3Qtb2YtdGFzay1hbmQtcmVjaXBlLWNvbWJpbmF0aW9ucyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkV4ZWN1dGluZyBhIExpc3Qgb2YgVGFzayBhbmQgUmVjaXBlIENvbWJpbmF0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgY29tbWFuZCBsaW5lIHN1cHBvcnRzIHNwZWNpZnlpbmcgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIGZvciBpbmRpdmlkdWFsIHRhcmdldHMgd2hlbiB5b3Ugc3BlY2lmeSBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXRzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGFkIHR3byB0YXJnZXRzIChvciByZWNpcGVzKQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXlmaXJzdHJlY2lwZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXlzZWNvbmRyZWNpcGU8L2ZpbGVuYW1lPiBhbmQgeW91IG5lZWRlZAorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHRvIHJ1biA8ZmlsZW5hbWU+dGFza0E8L2ZpbGVuYW1lPiBmb3IgdGhlIGZpcnN0CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQgPGZpbGVuYW1lPnRhc2tCPC9maWxlbmFtZT4gZm9yIHRoZSBzZWNvbmQKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBteWZpcnN0cmVjaXBlOmRvX3Rhc2tBIG15c2Vjb25kcmVjaXBlOmRvX3Rhc2tCCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdnZW5lcmF0aW5nLWRlcGVuZGVuY3ktZ3JhcGhzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+R2VuZXJhdGluZyBEZXBlbmRlbmN5IEdyYXBoczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBhYmxlIHRvIGdlbmVyYXRlIGRlcGVuZGVuY3kgZ3JhcGhzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZG90PC9maWxlbmFtZT4gc3ludGF4LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNvbnZlcnQgdGhlc2UgZ3JhcGhzIGludG8gaW1hZ2VzIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG90PC9maWxlbmFtZT4gdG9vbCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZ3JhcGh2aXoub3JnJz5HcmFwaHZpejwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBnZW5lcmF0ZSBhIGRlcGVuZGVuY3kgZ3JhcGgsIEJpdEJha2Ugd3JpdGVzIHR3byBmaWxlcworICAgICAgICAgICAgICAgICAgICB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3dzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBtYXRjaCBCaXRCYWtlJ3MgaW50ZXJuYWwgdGFzayBleGVjdXRpb24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnBuLWJ1aWxkbGlzdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvd3MgYSBzaW1wbGUgbGlzdCBvZiB0YXJnZXRzIHRoYXQgYXJlIHRvIGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3RvcCBkZXBlbmRpbmcgb24gY29tbW9uIGRlcGVuZHMsIHVzZSB0aGUgIi1JIiBkZXBlbmQKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGFuZCBCaXRCYWtlIG9taXRzIHRoZW0gZnJvbSB0aGUgZ3JhcGguCisgICAgICAgICAgICAgICAgICAgIExlYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBvdXQgY2FuIHByb2R1Y2UgbW9yZSByZWFkYWJsZSBncmFwaHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgd2F5LCB5b3UgY2FuIHJlbW92ZSBmcm9tIHRoZSBncmFwaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGZyb20gaW5oZXJpdGVkIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyA8ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHR3byBleGFtcGxlcyB0aGF0IGNyZWF0ZSBkZXBlbmRlbmN5IGdyYXBocy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNlY29uZCBleGFtcGxlIG9taXRzIGRlcGVuZHMgY29tbW9uIGluIE9wZW5FbWJlZGRlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSBncmFwaDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWcgZm9vCisKKyAgICAgJCBiaXRiYWtlIC1nIC1JIHZpcnR1YWwva2VybmVsIC1JIGVnbGliYyBmb28KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2V4ZWN1dGluZy1hLW11bHRpcGxlLWNvbmZpZ3VyYXRpb24tYnVpbGQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5FeGVjdXRpbmcgYSBNdWx0aXBsZSBDb25maWd1cmF0aW9uIEJ1aWxkPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIGFibGUgdG8gYnVpbGQgbXVsdGlwbGUgaW1hZ2VzIG9yIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIHVzaW5nIGEgc2luZ2xlIGNvbW1hbmQgd2hlcmUgdGhlIGRpZmZlcmVudCB0YXJnZXRzCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIChtdWx0aXBsZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkcykuCisgICAgICAgICAgICAgICAgICAgIEVhY2ggdGFyZ2V0LCBpbiB0aGlzIHNjZW5hcmlvLCBpcyByZWZlcnJlZCB0byBhcyBhCisgICAgICAgICAgICAgICAgICAgICJtdWx0aWNvbmZpZyIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGFjY29tcGxpc2ggYSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkLCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBkZWZpbmUgZWFjaCB0YXJnZXQncyBjb25maWd1cmF0aW9uIHNlcGFyYXRlbHkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBwYXJhbGxlbCBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGZvciB0aGVzZSBtdWx0aWNvbmZpZyBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGlzIHNwZWNpZmljLgorICAgICAgICAgICAgICAgICAgICBUaGV5IG11c3QgcmVzaWRlIGluIHRoZSBjdXJyZW50IGJ1aWxkIGRpcmVjdG9yeSBpbgorICAgICAgICAgICAgICAgICAgICBhIHN1Yi1kaXJlY3Rvcnkgb2YgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXVsdGljb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZm9yIHR3byBzZXBhcmF0ZSB0YXJnZXRzOgorICAgICAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYmJfbXVsdGljb25maWdfZmlsZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNGluIiBkZXB0aD0iM2luIiAvPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIHJlcXVpcmVkIGZpbGUgaGllcmFyY2h5CisgICAgICAgICAgICAgICAgICAgIGlzIGJlY2F1c2UgdGhlIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpcyBub3QgY29uc3RydWN0ZWQgdW50aWwgdGhlIGxheWVycyBhcmUgcGFyc2VkLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHVzaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYXMgYQorICAgICAgICAgICAgICAgICAgICBwcmUtY29uZmlndXJhdGlvbiBmaWxlIGlzIG5vdCBwb3NzaWJsZSB1bmxlc3MgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgTWluaW1hbGx5LCBlYWNoIGNvbmZpZ3VyYXRpb24gZmlsZSBtdXN0IGRlZmluZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBhbmQgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgQml0QmFrZSB1c2VzCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFN1Z2dlc3RlZCBwcmFjdGljZSBkaWN0YXRlcyB0aGF0IHlvdSBkbyBub3QKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcCB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHVzZWQgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gc2VwYXJhdGUgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIHlvdSBtdXN0IGFsc28gZW5hYmxlIEJpdEJha2UgdG8gcGVyZm9ybSBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxpbmcgaXMgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQk1VTFRJQ09ORklHJz48ZmlsZW5hbWU+QkJNVUxUSUNPTkZJRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhZCBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGZvciA8ZmlsZW5hbWU+dGFyZ2V0MTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0MjwvZmlsZW5hbWU+IGRlZmluZWQgaW4gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBib3RoIGVuYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB0byBwZXJmb3JtIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGFuZAorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHR3byBleHRyYSBtdWx0aWNvbmZpZ3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJNVUxUSUNPTkZJRyA9ICJ0YXJnZXQxIHRhcmdldDIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGluIHBsYWNlIGFuZAorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGhhcyBiZWVuIGVuYWJsZWQgdG8gcGVyZm9ybSBtdWx0aXBsZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkcywgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3JtIHRvIHN0YXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIFttYzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBbW1ttYzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPl0gLi4uIF0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHR3byBleHRyYSBtdWx0aWNvbmZpZ3M6CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXJnZXQxPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXJnZXQyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG1jOjo8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gbWM6dGFyZ2V0MTo8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gbWM6dGFyZ2V0Mjo8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2JiLWVuYWJsaW5nLW11bHRpcGxlLWNvbmZpZ3VyYXRpb24tYnVpbGQtZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgTXVsdGlwbGUgQ29uZmlndXJhdGlvbiBCdWlsZCBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBkZXBlbmRlbmNpZXMgY2FuIGV4aXN0IGJldHdlZW4gdGFyZ2V0cworICAgICAgICAgICAgICAgICAgICAobXVsdGljb25maWdzKSBpbiBhIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHRoYXQgaW4gb3JkZXIgdG8gYnVpbGQgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgcGFydGljdWxhciBhcmNoaXRlY3R1cmUsIHRoZSByb290IGZpbGVzeXN0ZW0gb2YKKyAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBidWlsZCBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgIGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIGltYWdlIGZvciB0aGUgZmlyc3QgbXVsdGljb25maWcgZGVwZW5kcworICAgICAgICAgICAgICAgICAgICBvbiB0aGUgcm9vdCBmaWxlc3lzdGVtIG9mIHRoZSBzZWNvbmQgbXVsdGljb25maWcuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVwZW5kZW5jeSBpcyBlc3NlbnRpYWxseSB0aGF0IHRoZSB0YXNrIGluIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBidWlsZHMgb25lIG11bHRpY29uZmlnIGlzIGRlcGVuZGVudCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbiBvZiB0aGUgdGFzayBpbiB0aGUgcmVjaXBlIHRoYXQgYnVpbGRzCisgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgbXVsdGljb25maWcuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGVuYWJsZSBkZXBlbmRlbmNpZXMgaW4gYSBtdWx0aXBsZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkLCB5b3UgbXVzdCBkZWNsYXJlIHRoZSBkZXBlbmRlbmNpZXMgaW4gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT50YXNrX29yX3BhY2thZ2U8L3JlcGxhY2VhYmxlPlttY2RlcGVuZHNdID0gIm1jOjxyZXBsYWNlYWJsZT5mcm9tX211bHRpY29uZmlnPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnRvX211bHRpY29uZmlnPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnJlY2lwZV9uYW1lPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnRhc2tfb25fd2hpY2hfdG9fZGVwZW5kPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVG8gYmV0dGVyIHNob3cgaG93IHRvIHVzZSB0aGlzIHN0YXRlbWVudCwgY29uc2lkZXIgYW4KKyAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSB3aXRoIHR3byBtdWx0aWNvbmZpZ3M6IDxmaWxlbmFtZT50YXJnZXQxPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50YXJnZXQyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPmltYWdlX3Rhc2s8L3JlcGxhY2VhYmxlPlttY2RlcGVuZHNdID0gIm1jOnRhcmdldDE6dGFyZ2V0Mjo8cmVwbGFjZWFibGU+aW1hZ2UyPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnJvb3Rmc190YXNrPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmZyb21fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPiBpcyAidGFyZ2V0MSIgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSA8cmVwbGFjZWFibGU+dG9fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPiBpcyAidGFyZ2V0MiIuCisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIG9uIHdoaWNoIHRoZSBpbWFnZSB3aG9zZSByZWNpcGUgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmltYWdlX3Rhc2s8L3JlcGxhY2VhYmxlPiBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uIG9mIHRoZSA8cmVwbGFjZWFibGU+cm9vdGZzX3Rhc2s8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIG91dCA8cmVwbGFjZWFibGU+aW1hZ2UyPC9yZXBsYWNlYWJsZT4sIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgInRhcmdldDIiIG11bHRpY29uZmlnLgorICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBzZXQgdXAgdGhpcyBkZXBlbmRlbmN5LCB5b3UgY2FuIGJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICJ0YXJnZXQxIiBtdWx0aWNvbmZpZyB1c2luZyBhIEJpdEJha2UgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG1jOnRhcmdldDE6PHJlcGxhY2VhYmxlPmltYWdlMTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBleGVjdXRlcyBhbGwgdGhlIHRhc2tzIG5lZWRlZCB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+aW1hZ2UxPC9yZXBsYWNlYWJsZT4gZm9yIHRoZSAidGFyZ2V0MSIKKyAgICAgICAgICAgICAgICAgICBtdWx0aWNvbmZpZy4KKyAgICAgICAgICAgICAgICAgICBCZWNhdXNlIG9mIHRoZSBkZXBlbmRlbmN5LCBCaXRCYWtlIGFsc28gZXhlY3V0ZXMgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgIHRoZSA8cmVwbGFjZWFibGU+cm9vdGZzX3Rhc2s8L3JlcGxhY2VhYmxlPiBmb3IgdGhlICJ0YXJnZXQyIgorICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnIGJ1aWxkLgorICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIYXZpbmcgYSByZWNpcGUgZGVwZW5kIG9uIHRoZSByb290IGZpbGVzeXN0ZW0gb2YgYW5vdGhlcgorICAgICAgICAgICAgICAgICAgIGJ1aWxkIG1pZ2h0IG5vdCBzZWVtIHRoYXQgdXNlZnVsLgorICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoaXMgY2hhbmdlIHRvIHRoZSBzdGF0ZW1lbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmltYWdlMTwvcmVwbGFjZWFibGU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90YXNrPC9yZXBsYWNlYWJsZT5bbWNkZXBlbmRzXSA9ICJtYzp0YXJnZXQxOnRhcmdldDI6PHJlcGxhY2VhYmxlPmltYWdlMjwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT5pbWFnZV90YXNrPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgQml0QmFrZSBtdXN0IGNyZWF0ZQorICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZTI8L3JlcGxhY2VhYmxlPiBmb3IgdGhlICJ0YXJnZXQyIgorICAgICAgICAgICAgICAgICAgIGJ1aWxkIHNpbmNlIHRoZSAidGFyZ2V0MSIgYnVpbGQgZGVwZW5kcyBvbiBpdC4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgQmVjYXVzZSAidGFyZ2V0MSIgYW5kICJ0YXJnZXQyIiBhcmUgZW5hYmxlZCBmb3IgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGJ1aWxkcyBhbmQgaGF2ZSBzZXBhcmF0ZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgZmlsZXMsIEJpdEJha2UgcGxhY2VzIHRoZSBhcnRpZmFjdHMgZm9yIGVhY2ggYnVpbGQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSB0ZW1wb3JhcnkgYnVpbGQgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS5yc3QgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS5yc3QKaW5kZXggN2VhNjhhZC4uZWM1ZDA4NSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEucnN0CisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnJzdApAQCAtNTE2LDggKzUxNiw4IEBACiAtICAqU2VsZWN0aW5nIGEgVmFyaWFibGU6KiBUaGUgYGBPVkVSUklERVNgYCB2YXJpYWJsZSBpcyBhCiAgICBjb2xvbi1jaGFyYWN0ZXItc2VwYXJhdGVkIGxpc3QgdGhhdCBjb250YWlucyBpdGVtcyBmb3Igd2hpY2ggeW91IHdhbnQKICAgIHRvIHNhdGlzZnkgY29uZGl0aW9ucy4gVGh1cywgaWYgeW91IGhhdmUgYSB2YXJpYWJsZSB0aGF0IGlzCi0gICBjb25kaXRpb25hbCBvbiAiYXJtIiwgYW5kICJhcm0iIGlzIGluIGBgT1ZFUlJJREVTYGAsIHRoZW4gdGhlCi0gICAiYXJtIi1zcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSB2YXJpYWJsZSBpcyB1c2VkIHJhdGhlciB0aGFuIHRoZQorICAgY29uZGl0aW9uYWwgb24g4oCcYXJt4oCdLCBhbmQg4oCcYXJt4oCdIGlzIGluIGBgT1ZFUlJJREVTYGAsIHRoZW4gdGhlCisgICDigJxhcm3igJ0tc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgdmFyaWFibGUgaXMgdXNlZCByYXRoZXIgdGhhbiB0aGUKICAgIG5vbi1jb25kaXRpb25hbCB2ZXJzaW9uLiBIZXJlIGlzIGFuIGV4YW1wbGU6IDo6CiAKICAgICAgIE9WRVJSSURFUyA9ICJhcmNoaXRlY3R1cmU6b3M6bWFjaGluZSIKQEAgLTE5MTcsOCArMTkxNyw4IEBACiBmb3JtYXQgdGhhdCBhbGxvd3MgeW91IHRvIGV4YW1pbmUgdGhlIGlucHV0cyB1c2VkIHdoZW4gdGhlIE9wZW5FbWJlZGRlZAogYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBzaWduYXR1cmVzLiBGb3IgZXhhbXBsZSwgdXNpbmcKIGBgYml0YmFrZS1kdW1wc2lnc2BgIGFsbG93cyB5b3UgdG8gZXhhbWluZSB0aGUgYGBkb19jb21waWxlYGAgdGFzaydzCi0ic2lnZGF0YSIgZm9yIGEgQyBhcHBsaWNhdGlvbiAoZS5nLiBgYGJhc2hgYCkuIFJ1bm5pbmcgdGhlIGNvbW1hbmQgYWxzbwotcmV2ZWFscyB0aGF0IHRoZSAiQ0MiIHZhcmlhYmxlIGlzIHBhcnQgb2YgdGhlIGlucHV0cyB0aGF0IGFyZSBoYXNoZWQuCivigJxzaWdkYXRh4oCdIGZvciBhIEMgYXBwbGljYXRpb24gKGUuZy4gYGBiYXNoYGApLiBSdW5uaW5nIHRoZSBjb21tYW5kIGFsc28KK3JldmVhbHMgdGhhdCB0aGUg4oCcQ0PigJ0gdmFyaWFibGUgaXMgcGFydCBvZiB0aGUgaW5wdXRzIHRoYXQgYXJlIGhhc2hlZC4KIEFueSBjaGFuZ2VzIHRvIHRoaXMgdmFyaWFibGUgd291bGQgaW52YWxpZGF0ZSB0aGUgc3RhbXAgYW5kIGNhdXNlIHRoZQogYGBkb19jb21waWxlYGAgdGFzayB0byBydW4uCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbCBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2E1MzIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCkBAIC0wLDAgKzEsMjg2MiBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCI+CisKKzxjaGFwdGVyIGlkPSJiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhIj4KKyAgICA8dGl0bGU+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEJpdEJha2UgZmlsZXMgaGF2ZSB0aGVpciBvd24gc3ludGF4LgorICAgICAgICBUaGUgc3ludGF4IGhhcyBzaW1pbGFyaXRpZXMgdG8gc2V2ZXJhbAorICAgICAgICBvdGhlciBsYW5ndWFnZXMgYnV0IGFsc28gaGFzIHNvbWUgdW5pcXVlIGZlYXR1cmVzLgorICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBhdmFpbGFibGUgc3ludGF4IGFuZCBvcGVyYXRvcnMKKyAgICAgICAgYXMgd2VsbCBhcyBwcm92aWRlcyBleGFtcGxlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nYmFzaWMtc3ludGF4Jz4KKyAgICAgICAgPHRpdGxlPkJhc2ljIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBiYXNpYyBzeW50YXggZXhhbXBsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYmFzaWMtdmFyaWFibGUtc2V0dGluZyc+CisgICAgICAgICAgICA8dGl0bGU+QmFzaWMgVmFyaWFibGUgU2V0dGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzZXRzIDxmaWxlbmFtZT5WQVJJQUJMRTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgInZhbHVlIi4KKyAgICAgICAgICAgICAgICBUaGlzIGFzc2lnbm1lbnQgb2NjdXJzIGltbWVkaWF0ZWx5IGFzIHRoZSBzdGF0ZW1lbnQgaXMgcGFyc2VkLgorICAgICAgICAgICAgICAgIEl0IGlzIGEgImhhcmQiIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVJJQUJMRSA9ICJ2YWx1ZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQXMgZXhwZWN0ZWQsIGlmIHlvdSBpbmNsdWRlIGxlYWRpbmcgb3IgdHJhaWxpbmcgc3BhY2VzIGFzIHBhcnQgb2YKKyAgICAgICAgICAgICAgICBhbiBhc3NpZ25tZW50LCB0aGUgc3BhY2VzIGFyZSByZXRhaW5lZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUklBQkxFID0gIiB2YWx1ZSIKKyAgICAgVkFSSUFCTEUgPSAidmFsdWUgIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBTZXR0aW5nIDxmaWxlbmFtZT5WQVJJQUJMRTwvZmlsZW5hbWU+IHRvICIiIHNldHMgaXQgdG8gYW4gZW1wdHkgc3RyaW5nLAorICAgICAgICAgICAgICAgIHdoaWxlIHNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIgIiBzZXRzIGl0IHRvIGEgYmxhbmsgc3BhY2UKKyAgICAgICAgICAgICAgICAoaS5lLiB0aGVzZSBhcmUgbm90IHRoZSBzYW1lIHZhbHVlcykuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVJJQUJMRSA9ICIiCisgICAgIFZBUklBQkxFID0gIiAiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBzaW5nbGUgcXVvdGVzIGluc3RlYWQgb2YgZG91YmxlIHF1b3RlcworICAgICAgICAgICAgICAgIHdoZW4gc2V0dGluZyBhIHZhcmlhYmxlJ3MgdmFsdWUuCisgICAgICAgICAgICAgICAgRG9pbmcgc28gYWxsb3dzIHlvdSB0byB1c2UgdmFsdWVzIHRoYXQgY29udGFpbiB0aGUgZG91YmxlCisgICAgICAgICAgICAgICAgcXVvdGUgY2hhcmFjdGVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSSUFCTEUgPSAnSSBoYXZlIGEgIiBpbiBteSB2YWx1ZScKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFVubGlrZSBpbiBCb3VybmUgc2hlbGxzLCBzaW5nbGUgcXVvdGVzIHdvcmsgaWRlbnRpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgdG8gZG91YmxlIHF1b3RlcyBpbiBhbGwgb3RoZXIgd2F5cy4KKyAgICAgICAgICAgICAgICAgICAgVGhleSBkbyBub3Qgc3VwcHJlc3MgdmFyaWFibGUgZXhwYW5zaW9ucy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbW9kaWZ5aW5nLWV4aXN0aW5nLXZhcmlhYmxlcyc+CisgICAgICAgICAgICA8dGl0bGU+TW9kaWZ5aW5nIEV4aXN0aW5nIFZhcmlhYmxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB5b3UgbmVlZCB0byBtb2RpZnkgZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBjYXNlcyB3aGVyZSB5b3UgbWlnaHQgZmluZCB5b3Ugd2FudCB0bworICAgICAgICAgICAgICAgIG1vZGlmeSBhbiBleGlzdGluZyB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21pemUgYSByZWNpcGUgdGhhdCB1c2VzIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2UgYSB2YXJpYWJsZSdzIGRlZmF1bHQgdmFsdWUgdXNlZCBpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2UgdGhlIHZhcmlhYmxlIGluIGEgPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSB0byBvdmVycmlkZSB0aGUgdmFyaWFibGUgaW4gdGhlIG9yaWdpbmFsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2UgdGhlIHZhcmlhYmxlIGluIGEgY29uZmlndXJhdGlvbiBmaWxlIHNvIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvdmVycmlkZXMgYW4gZXhpc3RpbmcgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDaGFuZ2luZyBhIHZhcmlhYmxlIHZhbHVlIGNhbiBzb21ldGltZXMgZGVwZW5kIG9uIGhvdyB0aGUKKyAgICAgICAgICAgICAgICB2YWx1ZSB3YXMgb3JpZ2luYWxseSBhc3NpZ25lZCBhbmQgYWxzbyBvbiB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgIGludGVudCBvZiB0aGUgY2hhbmdlLgorICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHdoZW4geW91IGFwcGVuZCBhIHZhbHVlIHRvIGEgdmFyaWFibGUgdGhhdAorICAgICAgICAgICAgICAgIGhhcyBhIGRlZmF1bHQgdmFsdWUsIHRoZSByZXN1bHRpbmcgdmFsdWUgbWlnaHQgbm90IGJlIHdoYXQKKyAgICAgICAgICAgICAgICB5b3UgZXhwZWN0LgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIHlvdSBwcm92aWRlIG1pZ2h0IHJlcGxhY2UgdGhlIHZhbHVlCisgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gYXBwZW5kIHRvIHRoZSBkZWZhdWx0IHZhbHVlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBhZnRlciB5b3UgaGF2ZSBjaGFuZ2VkIGEgdmFyaWFibGUncyB2YWx1ZSBhbmQgc29tZXRoaW5nCisgICAgICAgICAgICAgICAgdW5leHBsYWluZWQgb2NjdXJzLCB5b3UgY2FuIHVzZSBCaXRCYWtlIHRvIGNoZWNrIHRoZSBhY3R1YWwKKyAgICAgICAgICAgICAgICB2YWx1ZSBvZiB0aGUgc3VzcGVjdCB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG1ha2UgdGhlc2UgY2hlY2tzIGZvciBib3RoIGNvbmZpZ3VyYXRpb24gYW5kIHJlY2lwZQorICAgICAgICAgICAgICAgIGxldmVsIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgdXNlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGRpc3BsYXlzIHZhcmlhYmxlIHZhbHVlcyBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGkuZS4gPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoKSBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlcyB0aGF0IGFyZSBleHBvcnRlZCB0byB0aGUgZW52aXJvbm1lbnQgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkZWQgYnkgdGhlIHN0cmluZyAiZXhwb3J0IiBpbiB0aGUgY29tbWFuZCdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciByZWNpcGUgY2hhbmdlcywgdXNlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4gLWUgfCBncmVwIFZBUklBQkxFPSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjaGVja3MgdG8gc2VlIGlmIHRoZSB2YXJpYWJsZSBhY3R1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgaXQgaW50byBhIHNwZWNpZmljIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2xpbmUtam9pbmluZyc+CisgICAgICAgICAgICA8dGl0bGU+TGluZSBKb2luaW5nPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT3V0c2lkZSBvZgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Z1bmN0aW9ucyc+ZnVuY3Rpb25zPC9saW5rPiwgQml0QmFrZSBqb2lucworICAgICAgICAgICAgICAgIGFueSBsaW5lIGVuZGluZyBpbiBhIGJhY2tzbGFzaCBjaGFyYWN0ZXIgKCJcIikKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBmb2xsb3dpbmcgbGluZSBiZWZvcmUgcGFyc2luZyBzdGF0ZW1lbnRzLgorICAgICAgICAgICAgICAgIFRoZSBtb3N0IGNvbW1vbiB1c2UgZm9yIHRoZSAiXCIgY2hhcmFjdGVyIGlzIHRvIHNwbGl0IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgYXNzaWdubWVudHMgb3ZlciBtdWx0aXBsZSBsaW5lcywgYXMgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRk9PID0gImJhciBcCisgICAgICAgICAgICBiYXogXAorICAgICAgICAgICAgcWF6IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCb3RoIHRoZSAiXCIgY2hhcmFjdGVyIGFuZCB0aGUgbmV3bGluZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICB0aGF0IGZvbGxvdyBpdCBhcmUgcmVtb3ZlZCB3aGVuIGpvaW5pbmcgbGluZXMuCisgICAgICAgICAgICAgICAgVGh1cywgbm8gbmV3bGluZSBjaGFyYWN0ZXJzIGVuZCB1cCBpbiB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoaXMgYWRkaXRpb25hbCBleGFtcGxlIHdoZXJlIHRoZSB0d28KKyAgICAgICAgICAgICAgICBhc3NpZ25tZW50cyBib3RoIGFzc2lnbiAiYmFyYmF6IiB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GT088L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZPTyA9ICJiYXJiYXoiCisKKyAgICAgRk9PID0gImJhclwKKyAgICAgYmF6IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBkb2VzIG5vdCBpbnRlcnByZXQgZXNjYXBlIHNlcXVlbmNlcyBsaWtlCisgICAgICAgICAgICAgICAgICAgICJcbiIgaW4gdmFyaWFibGUgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgdG8gaGF2ZSBhbiBlZmZlY3QsIHRoZSB2YWx1ZSBtdXN0IGJlIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICB0byBzb21lIHV0aWxpdHkgdGhhdCBpbnRlcnByZXRzIGVzY2FwZSBzZXF1ZW5jZXMsCisgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgPGZpbGVuYW1lPnByaW50ZjwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lY2hvIC1uPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ZhcmlhYmxlLWV4cGFuc2lvbic+CisgICAgICAgICAgICA8dGl0bGU+VmFyaWFibGUgRXhwYW5zaW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVmFyaWFibGVzIGNhbiByZWZlcmVuY2UgdGhlIGNvbnRlbnRzIG9mIG90aGVyIHZhcmlhYmxlcworICAgICAgICAgICAgICAgIHVzaW5nIGEgc3ludGF4IHRoYXQgaXMgc2ltaWxhciB0byB2YXJpYWJsZSBleHBhbnNpb24gaW4KKyAgICAgICAgICAgICAgICBCb3VybmUgc2hlbGxzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudHMKKyAgICAgICAgICAgICAgICByZXN1bHQgaW4gQSBjb250YWluaW5nICJhdmFsIiBhbmQgQiBldmFsdWF0aW5nIHRvICJwcmVhdmFscG9zdCIuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBBID0gImF2YWwiCisgICAgIEIgPSAicHJlJHtBfXBvc3QiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBVbmxpa2UgaW4gQm91cm5lIHNoZWxscywgdGhlIGN1cmx5IGJyYWNlcyBhcmUgbWFuZGF0b3J5OgorICAgICAgICAgICAgICAgICAgICBPbmx5IDxmaWxlbmFtZT4ke0ZPT308L2ZpbGVuYW1lPiBhbmQgbm90CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kRk9PPC9maWxlbmFtZT4gaXMgcmVjb2duaXplZCBhcyBhbiBleHBhbnNpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZPTzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgIj0iIG9wZXJhdG9yIGRvZXMgbm90IGltbWVkaWF0ZWx5IGV4cGFuZCB2YXJpYWJsZQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgaW4gdGhlIHJpZ2h0LWhhbmQgc2lkZS4KKyAgICAgICAgICAgICAgICBJbnN0ZWFkLCBleHBhbnNpb24gaXMgZGVmZXJyZWQgdW50aWwgdGhlIHZhcmlhYmxlIGFzc2lnbmVkIHRvCisgICAgICAgICAgICAgICAgaXMgYWN0dWFsbHkgdXNlZC4KKyAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSByZWZlcmVuY2VkCisgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG91bGQgY2xhcmlmeSB0aGlzIGJlaGF2aW9yOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQSA9ICIke0J9IGJheiIKKyAgICAgQiA9ICIke0N9IGJhciIKKyAgICAgQyA9ICJmb28iCisgICAgICpBdCB0aGlzIHBvaW50LCAke0F9IGVxdWFscyAiZm9vIGJhciBiYXoiKgorICAgICBDID0gInF1eCIKKyAgICAgKkF0IHRoaXMgcG9pbnQsICR7QX0gZXF1YWxzICJxdXggYmFyIGJheiIqCisgICAgIEIgPSAibm9yZiIKKyAgICAgKkF0IHRoaXMgcG9pbnQsICR7QX0gZXF1YWxzICJub3JmIGJheiIqCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIENvbnRyYXN0IHRoaXMgYmVoYXZpb3Igd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbW1lZGlhdGUtdmFyaWFibGUtZXhwYW5zaW9uJz5pbW1lZGlhdGUgdmFyaWFibGUgZXhwYW5zaW9uPC9saW5rPgorICAgICAgICAgICAgICAgIG9wZXJhdG9yIChpLmUuICI6PSIpLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB0aGUgdmFyaWFibGUgZXhwYW5zaW9uIHN5bnRheCBpcyB1c2VkIG9uIGEgdmFyaWFibGUgdGhhdAorICAgICAgICAgICAgICAgIGRvZXMgbm90IGV4aXN0LCB0aGUgc3RyaW5nIGlzIGtlcHQgYXMgaXMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkFSPC9maWxlbmFtZT4gZXhwYW5kcyB0byB0aGUgbGl0ZXJhbCBzdHJpbmcKKyAgICAgICAgICAgICAgICAiJHtGT099IiBhcyBsb25nIGFzIDxmaWxlbmFtZT5GT088L2ZpbGVuYW1lPiBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJBUiA9ICIke0ZPT30iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHRpbmctYS1kZWZhdWx0LXZhbHVlJz4KKyAgICAgICAgICAgIDx0aXRsZT5TZXR0aW5nIGEgZGVmYXVsdCB2YWx1ZSAoPz0pPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlICI/PSIgb3BlcmF0b3IgdG8gYWNoaWV2ZSBhICJzb2Z0ZXIiIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICBmb3IgYSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgYXNzaWdubWVudCBhbGxvd3MgeW91IHRvIGRlZmluZSBhIHZhcmlhYmxlIGlmIGl0CisgICAgICAgICAgICAgICAgaXMgdW5kZWZpbmVkIHdoZW4gdGhlIHN0YXRlbWVudCBpcyBwYXJzZWQsIGJ1dCB0byBsZWF2ZSB0aGUKKyAgICAgICAgICAgICAgICB2YWx1ZSBhbG9uZSBpZiB0aGUgdmFyaWFibGUgaGFzIGEgdmFsdWUuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQSA/PSAiYXZhbCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSWYgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBpcyBzZXQgYXQgdGhlIHRpbWUgdGhpcyBzdGF0ZW1lbnQgaXMgcGFyc2VkLAorICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZSByZXRhaW5zIGl0cyB2YWx1ZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IGlzIG5vdCBzZXQsCisgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGlzIHNldCB0byAiYXZhbCIuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgYXNzaWdubWVudCBpcyBpbW1lZGlhdGUuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgbXVsdGlwbGUgIj89IiBhc3NpZ25tZW50cworICAgICAgICAgICAgICAgICAgICB0byBhIHNpbmdsZSB2YXJpYWJsZSBleGlzdCwgdGhlIGZpcnN0IG9mIHRob3NlIGVuZHMgdXAgZ2V0dGluZworICAgICAgICAgICAgICAgICAgICB1c2VkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLWEtd2Vhay1kZWZhdWx0LXZhbHVlJz4KKyAgICAgICAgICAgIDx0aXRsZT5TZXR0aW5nIGEgd2VhayBkZWZhdWx0IHZhbHVlICg/Pz0pPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGEgIndlYWtlciIgYXNzaWdubWVudCB0aGFuIGluIHRoZQorICAgICAgICAgICAgICAgIHByZXZpb3VzIHNlY3Rpb24gYnkgdXNpbmcgdGhlICI/Pz0iIG9wZXJhdG9yLgorICAgICAgICAgICAgICAgIFRoaXMgYXNzaWdubWVudCBiZWhhdmVzIGlkZW50aWNhbCB0byAiPz0iIGV4Y2VwdCB0aGF0IHRoZQorICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgaXMgbWFkZSBhdCB0aGUgZW5kIG9mIHRoZSBwYXJzaW5nIHByb2Nlc3MgcmF0aGVyCisgICAgICAgICAgICAgICAgdGhhbiBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHdoZW4gbXVsdGlwbGUgIj8/PSIgYXNzaWdubWVudHMgZXhpc3QsIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgb25lIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgQWxzbywgYW55ICI9IiBvciAiPz0iIGFzc2lnbm1lbnQgd2lsbCBvdmVycmlkZSB0aGUgdmFsdWUgc2V0IHdpdGgKKyAgICAgICAgICAgICAgICAiPz89Ii4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBBID8/PSAic29tZXZhbHVlIgorICAgICBBID8/PSAic29tZW90aGVydmFsdWUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4gaXMgc2V0IGJlZm9yZSB0aGUgYWJvdmUgc3RhdGVtZW50cyBhcmUgcGFyc2VkLAorICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZSByZXRhaW5zIGl0cyB2YWx1ZS4KKyAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IGlzIG5vdCBzZXQsCisgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGlzIHNldCB0byAic29tZW90aGVydmFsdWUiLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBZ2FpbiwgdGhpcyBhc3NpZ25tZW50IGlzIGEgImxhenkiIG9yICJ3ZWFrIiBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgYmVjYXVzZSBpdCBkb2VzIG5vdCBvY2N1ciB1bnRpbCB0aGUgZW5kCisgICAgICAgICAgICAgICAgb2YgdGhlIHBhcnNpbmcgcHJvY2Vzcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbW1lZGlhdGUtdmFyaWFibGUtZXhwYW5zaW9uJz4KKyAgICAgICAgICAgIDx0aXRsZT5JbW1lZGlhdGUgdmFyaWFibGUgZXhwYW5zaW9uICg6PSk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgIjo9IiBvcGVyYXRvciByZXN1bHRzIGluIGEgdmFyaWFibGUncworICAgICAgICAgICAgICAgIGNvbnRlbnRzIGJlaW5nIGV4cGFuZGVkIGltbWVkaWF0ZWx5LAorICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHZhcmlhYmxlIGlzIGFjdHVhbGx5IHVzZWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUID0gIjEyMyIKKyAgICAgQSA6PSAidGVzdCAke1R9IgorICAgICBUID0gIjQ1NiIKKyAgICAgQiA6PSAiJHtUfSAke0N9IgorICAgICBDID0gImN2YWwiCisgICAgIEMgOj0gIiR7Q31hcHBlbmQiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBjb250YWlucworICAgICAgICAgICAgICAgICJ0ZXN0IDEyMyIsIGV2ZW4gdGhvdWdoIHRoZSBmaW5hbCB2YWx1ZSBvZiA8ZmlsZW5hbWU+VDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaXMgIjQ1NiIuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gd2lsbCBlbmQgdXAgY29udGFpbmluZyAiNDU2IGN2YWxhcHBlbmQiLgorICAgICAgICAgICAgICAgIFRoaXMgaXMgYmVjYXVzZSByZWZlcmVuY2VzIHRvIHVuZGVmaW5lZCB2YXJpYWJsZXMgYXJlIHByZXNlcnZlZCBhcyBpcworICAgICAgICAgICAgICAgIGR1cmluZyAoaW1tZWRpYXRlKWV4cGFuc2lvbi4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBHTlUgTWFrZSwgd2hlcmUgdW5kZWZpbmVkCisgICAgICAgICAgICAgICAgdmFyaWFibGVzIGV4cGFuZCB0byBub3RoaW5nLgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+QzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29udGFpbnMgImN2YWxhcHBlbmQiIHNpbmNlIDxmaWxlbmFtZT4ke0N9PC9maWxlbmFtZT4gaW1tZWRpYXRlbHkKKyAgICAgICAgICAgICAgICBleHBhbmRzIHRvICJjdmFsIi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdhcHBlbmRpbmctYW5kLXByZXBlbmRpbmcnPgorICAgICAgICAgICAgPHRpdGxlPkFwcGVuZGluZyAoKz0pIGFuZCBwcmVwZW5kaW5nICg9KykgV2l0aCBTcGFjZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcHBlbmRpbmcgYW5kIHByZXBlbmRpbmcgdmFsdWVzIGlzIGNvbW1vbiBhbmQgY2FuIGJlIGFjY29tcGxpc2hlZAorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSAiKz0iIGFuZCAiPSsiIG9wZXJhdG9ycy4KKyAgICAgICAgICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaW5zZXJ0IGEgc3BhY2UgYmV0d2VlbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgIHZhbHVlIGFuZCBwcmVwZW5kZWQgb3IgYXBwZW5kZWQgdmFsdWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZXNlIG9wZXJhdG9ycyB0YWtlIGltbWVkaWF0ZSBlZmZlY3QgZHVyaW5nIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEIgPSAiYnZhbCIKKyAgICAgQiArPSAiYWRkaXRpb25hbGRhdGEiCisgICAgIEMgPSAiY3ZhbCIKKyAgICAgQyA9KyAidGVzdCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gY29udGFpbnMKKyAgICAgICAgICAgICAgICAiYnZhbCBhZGRpdGlvbmFsZGF0YSIgYW5kIDxmaWxlbmFtZT5DPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb250YWlucyAidGVzdCBjdmFsIi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdhcHBlbmRpbmctYW5kLXByZXBlbmRpbmctd2l0aG91dC1zcGFjZXMnPgorICAgICAgICAgICAgPHRpdGxlPkFwcGVuZGluZyAoLj0pIGFuZCBQcmVwZW5kaW5nICg9LikgV2l0aG91dCBTcGFjZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBhcHBlbmQgb3IgcHJlcGVuZCB2YWx1ZXMgd2l0aG91dCBhbgorICAgICAgICAgICAgICAgIGluc2VydGVkIHNwYWNlLCB1c2UgdGhlICIuPSIgYW5kICI9LiIgb3BlcmF0b3JzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVzZSBvcGVyYXRvcnMgdGFrZSBpbW1lZGlhdGUgZWZmZWN0IGR1cmluZyBwYXJzaW5nLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCID0gImJ2YWwiCisgICAgIEIgLj0gImFkZGl0aW9uYWxkYXRhIgorICAgICBDID0gImN2YWwiCisgICAgIEMgPS4gInRlc3QiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgImJ2YWxhZGRpdGlvbmFsZGF0YSIgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkM8L2ZpbGVuYW1lPiBjb250YWlucyAidGVzdGN2YWwiLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2FwcGVuZGluZy1hbmQtcHJlcGVuZGluZy1vdmVycmlkZS1zdHlsZS1zeW50YXgnPgorICAgICAgICAgICAgPHRpdGxlPkFwcGVuZGluZyBhbmQgUHJlcGVuZGluZyAoT3ZlcnJpZGUgU3R5bGUgU3ludGF4KTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBhcHBlbmQgYW5kIHByZXBlbmQgYSB2YXJpYWJsZSdzIHZhbHVlCisgICAgICAgICAgICAgICAgdXNpbmcgYW4gb3ZlcnJpZGUgc3R5bGUgc3ludGF4LgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGlzIHN5bnRheCwgbm8gc3BhY2VzIGFyZSBpbnNlcnRlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlc2Ugb3BlcmF0b3JzIGRpZmZlciBmcm9tIHRoZSAiOj0iLCAiLj0iLCAiPS4iLCAiKz0iLCBhbmQgIj0rIgorICAgICAgICAgICAgICAgIG9wZXJhdG9ycyBpbiB0aGF0IHRoZWlyIGVmZmVjdHMgYXJlIGFwcGxpZWQgYXQgdmFyaWFibGUKKyAgICAgICAgICAgICAgICBleHBhbnNpb24gdGltZSByYXRoZXIgdGhhbiBiZWluZyBpbW1lZGlhdGVseSBhcHBsaWVkLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCID0gImJ2YWwiCisgICAgIEJfYXBwZW5kID0gIiBhZGRpdGlvbmFsIGRhdGEiCisgICAgIEMgPSAiY3ZhbCIKKyAgICAgQ19wcmVwZW5kID0gImFkZGl0aW9uYWwgZGF0YSAiCisgICAgIEQgPSAiZHZhbCIKKyAgICAgRF9hcHBlbmQgPSAiYWRkaXRpb25hbCBkYXRhIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiBiZWNvbWVzCisgICAgICAgICAgICAgICAgImJ2YWwgYWRkaXRpb25hbCBkYXRhIiBhbmQgPGZpbGVuYW1lPkM8L2ZpbGVuYW1lPiBiZWNvbWVzCisgICAgICAgICAgICAgICAgImFkZGl0aW9uYWwgZGF0YSBjdmFsIi4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPiBiZWNvbWVzCisgICAgICAgICAgICAgICAgImR2YWxhZGRpdGlvbmFsIGRhdGEiLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBjb250cm9sIGFsbCBzcGFjaW5nIHdoZW4geW91IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3ludGF4LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhcHBlbmQgYW5kIHByZXBlbmQgdG8gc2hlbGwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMgYW5kIEJpdEJha2Utc3R5bGUgUHl0aG9uIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NoZWxsLWZ1bmN0aW9ucyc+U2hlbGwgRnVuY3Rpb25zPC9saW5rPiIgYW5kCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JpdGJha2Utc3R5bGUtcHl0aG9uLWZ1bmN0aW9ucyc+Qml0QmFrZS1TdHlsZSBQeXRob24gRnVuY3Rpb25zPC9saW5rPgorICAgICAgICAgICAgICAgIHNlY3Rpb25zIGZvciBleGFtcGxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZW1vdmluZy1vdmVycmlkZS1zdHlsZS1zeW50YXgnPgorICAgICAgICAgICAgPHRpdGxlPlJlbW92YWwgKE92ZXJyaWRlIFN0eWxlIFN5bnRheCk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHJlbW92ZSB2YWx1ZXMgZnJvbSBsaXN0cyB1c2luZyB0aGUgcmVtb3ZhbAorICAgICAgICAgICAgICAgIG92ZXJyaWRlIHN0eWxlIHN5bnRheC4KKyAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIGEgdmFsdWUgZm9yIHJlbW92YWwgY2F1c2VzIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGF0CisgICAgICAgICAgICAgICAgdmFsdWUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoaXMgc3ludGF4LCBCaXRCYWtlIGV4cGVjdHMgb25lIG9yIG1vcmUgc3RyaW5ncy4KKyAgICAgICAgICAgICAgICBTdXJyb3VuZGluZyBzcGFjZXMgYW5kIHNwYWNpbmcgYXJlIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGT08gPSAiMTIzIDQ1NiA3ODkgMTIzNDU2IDEyMyA0NTYgMTIzIDQ1NiIKKyAgICAgRk9PX3JlbW92ZSA9ICIxMjMiCisgICAgIEZPT19yZW1vdmUgPSAiNDU2IgorICAgICBGT08yID0gIiBhYmMgIGRlZiBnaGkgYWJjZGVmIGFiYyBkZWYgYWJjICBkZWYgZGVmIgorICAgICBGT08yX3JlbW92ZSA9ICIgXAorICAgICAgICAgZGVmIFwKKyAgICAgICAgIGFiYyBcCisgICAgICAgICBnaGkgXAorICAgICAiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gYmVjb21lcworICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDs3ODkmbmJzcDsxMjM0NTYmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5GT08yPC9maWxlbmFtZT4gYmVjb21lcworICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDthYmNkZWYmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBMaWtlICJfYXBwZW5kIiBhbmQgIl9wcmVwZW5kIiwgIl9yZW1vdmUiCisgICAgICAgICAgICAgICAgaXMgYXBwbGllZCBhdCB2YXJpYWJsZSBleHBhbnNpb24gdGltZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdvdmVycmlkZS1zdHlsZS1vcGVyYXRpb24tYWR2YW50YWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+T3ZlcnJpZGUgU3R5bGUgT3BlcmF0aW9uIEFkdmFudGFnZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbiBhZHZhbnRhZ2Ugb2YgdGhlIG92ZXJyaWRlIHN0eWxlIG9wZXJhdGlvbnMKKyAgICAgICAgICAgICAgICAiX2FwcGVuZCIsICJfcHJlcGVuZCIsIGFuZCAiX3JlbW92ZSIgYXMgY29tcGFyZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgIis9IiBhbmQgIj0rIiBvcGVyYXRvcnMgaXMgdGhhdCB0aGUgb3ZlcnJpZGUgc3R5bGUKKyAgICAgICAgICAgICAgICBvcGVyYXRvcnMgcHJvdmlkZSBndWFyYW50ZWVkIG9wZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgY2xhc3MgPGZpbGVuYW1lPmZvby5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0aGF0IG5lZWRzIHRvIGFkZCB0aGUgdmFsdWUgInZhbCIgdG8gdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZPTzwvZmlsZW5hbWU+LCBhbmQgYSByZWNpcGUgdGhhdCB1c2VzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvby5iYmNsYXNzPC9maWxlbmFtZT4gYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgZm9vCisKKyAgICAgRk9PID0gImluaXRpYWwiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5mb28uYmJjbGFzczwvZmlsZW5hbWU+IHVzZXMgdGhlICIrPSIgb3BlcmF0b3IsCisgICAgICAgICAgICAgICAgYXMgZm9sbG93cywgdGhlbiB0aGUgZmluYWwgdmFsdWUgb2YgPGZpbGVuYW1lPkZPTzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgd2lsbCBiZSAiaW5pdGlhbCIsIHdoaWNoIGlzIG5vdCB3aGF0IGlzIGRlc2lyZWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGT08gKz0gInZhbCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSWYsIG9uIHRoZSBvdGhlciBoYW5kLCA8ZmlsZW5hbWU+Zm9vLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHVzZXMgdGhlICJfYXBwZW5kIiBvcGVyYXRvciwgdGhlbiB0aGUgZmluYWwgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gd2lsbCBiZSAiaW5pdGlhbCB2YWwiLCBhcyBpbnRlbmRlZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZPT19hcHBlbmQgPSAiIHZhbCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5ldmVyIG5lY2Vzc2FyeSB0byB1c2UgIis9IiB0b2dldGhlciB3aXRoICJfYXBwZW5kIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBhc3NpZ25tZW50cyBhcHBlbmRzICJiYXJiYXoiIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GT088L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGT09fYXBwZW5kID0gImJhciIKKyAgICAgRk9PX2FwcGVuZCA9ICJiYXoiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBzZWNvbmQgYXNzaWdubWVudCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgZXhhbXBsZSB0byB1c2UgIis9IiB3b3VsZCBiZSB0byBhZGQgYSBzcGFjZSBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgImJheiIgaW4gdGhlIGFwcGVuZGVkIHZhbHVlIChkdWUgdG8gaG93IHRoZSAiKz0iIG9wZXJhdG9yCisgICAgICAgICAgICAgICAgICAgIHdvcmtzKS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgQW5vdGhlciBhZHZhbnRhZ2Ugb2YgdGhlIG92ZXJyaWRlIHN0eWxlIG9wZXJhdGlvbnMgaXMgdGhhdAorICAgICAgICAgICAgICAgIHlvdSBjYW4gY29tYmluZSB0aGVtIHdpdGggb3RoZXIgb3ZlcnJpZGVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZGl0aW9uYWwtc3ludGF4LW92ZXJyaWRlcyc+Q29uZGl0aW9uYWwgU3ludGF4IChPdmVycmlkZXMpPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ZhcmlhYmxlLWZsYWctc3ludGF4Jz4KKyAgICAgICAgICAgIDx0aXRsZT5WYXJpYWJsZSBGbGFnIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFZhcmlhYmxlIGZsYWdzIGFyZSBCaXRCYWtlJ3MgaW1wbGVtZW50YXRpb24gb2YgdmFyaWFibGUgcHJvcGVydGllcworICAgICAgICAgICAgICAgIG9yIGF0dHJpYnV0ZXMuCisgICAgICAgICAgICAgICAgSXQgaXMgYSB3YXkgb2YgdGFnZ2luZyBleHRyYSBpbmZvcm1hdGlvbiBvbnRvIGEgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgb3V0IGFib3V0IHZhcmlhYmxlIGZsYWdzIGluIGdlbmVyYWwgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ZhcmlhYmxlLWZsYWdzJz5WYXJpYWJsZSBGbGFnczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBkZWZpbmUsIGFwcGVuZCwgYW5kIHByZXBlbmQgdmFsdWVzIHRvIHZhcmlhYmxlIGZsYWdzLgorICAgICAgICAgICAgICAgIEFsbCB0aGUgc3RhbmRhcmQgc3ludGF4IG9wZXJhdGlvbnMgcHJldmlvdXNseSBtZW50aW9uZWQgd29yaworICAgICAgICAgICAgICAgIGZvciB2YXJpYWJsZSBmbGFncyBleGNlcHQgZm9yIG92ZXJyaWRlIHN0eWxlIHN5bnRheAorICAgICAgICAgICAgICAgIChpLmUuICJfcHJlcGVuZCIsICJfYXBwZW5kIiwgYW5kICJfcmVtb3ZlIikuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgc2hvd2luZyBob3cgdG8gc2V0IHZhcmlhYmxlIGZsYWdzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRk9PW2FdID0gImFiYyIKKyAgICAgRk9PW2JdID0gIjEyMyIKKyAgICAgRk9PW2FdICs9ICI0NTYiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gaGFzIHR3byBmbGFnczoKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+W2FdPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5bYl08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgZmxhZ3MgYXJlIGltbWVkaWF0ZWx5IHNldCB0byAiYWJjIiBhbmQgIjEyMyIsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlthXTwvZmlsZW5hbWU+IGZsYWcgYmVjb21lcyAiYWJjIDQ1NiIuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE5vIG5lZWQgZXhpc3RzIHRvIHByZS1kZWZpbmUgdmFyaWFibGUgZmxhZ3MuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzaW1wbHkgc3RhcnQgdXNpbmcgdGhlbS4KKyAgICAgICAgICAgICAgICBPbmUgZXh0cmVtZWx5IGNvbW1vbiBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgIGlzIHRvIGF0dGFjaCBzb21lIGJyaWVmIGRvY3VtZW50YXRpb24gdG8gYSBCaXRCYWtlIHZhcmlhYmxlIGFzCisgICAgICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENBQ0hFW2RvY10gPSAiVGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoZSBjYWNoZSBvZiB0aGUgbWV0YWRhdGEuIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbmxpbmUtcHl0aG9uLXZhcmlhYmxlLWV4cGFuc2lvbic+CisgICAgICAgICAgICA8dGl0bGU+SW5saW5lIFB5dGhvbiBWYXJpYWJsZSBFeHBhbnNpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBpbmxpbmUgUHl0aG9uIHZhcmlhYmxlIGV4cGFuc2lvbiB0bworICAgICAgICAgICAgICAgIHNldCB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgREFURSA9ICIke0B0aW1lLnN0cmZ0aW1lKCclWSVtJWQnLHRpbWUuZ210aW1lKCkpfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHJlc3VsdHMgaW4gdGhlIDxmaWxlbmFtZT5EQVRFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBiZWluZyBzZXQgdG8gdGhlIGN1cnJlbnQgZGF0ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUHJvYmFibHkgdGhlIG1vc3QgY29tbW9uIHVzZSBvZiB0aGlzIGZlYXR1cmUgaXMgdG8gZXh0cmFjdAorICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZXMgZnJvbSBCaXRCYWtlJ3MgaW50ZXJuYWwgZGF0YSBkaWN0aW9uYXJ5LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaW5lcyBzZWxlY3QgdGhlIHZhbHVlcyBvZiBhIHBhY2thZ2UgbmFtZQorICAgICAgICAgICAgICAgIGFuZCBpdHMgdmVyc2lvbiBudW1iZXIsIHJlc3BlY3RpdmVseToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBOID0gIiR7QGJiLnBhcnNlLkJCSGFuZGxlci52YXJzX2Zyb21fZmlsZShkLmdldFZhcignRklMRScsIEZhbHNlKSxkKVswXSBvciAnZGVmYXVsdHBrZ25hbWUnfSIKKyAgICAgUFYgPSAiJHtAYmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpLGQpWzFdIG9yICcxLjAnfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIElubGluZSBQeXRob24gZXhwcmVzc2lvbnMgd29yayBqdXN0IGxpa2UgdmFyaWFibGUgZXhwYW5zaW9ucworICAgICAgICAgICAgICAgICAgICBpbnNvZmFyIGFzIHRoZSAiPSIgYW5kICI6PSIgb3BlcmF0b3JzIGFyZSBjb25jZXJuZWQuCisgICAgICAgICAgICAgICAgICAgIEdpdmVuIHRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCwgPGZpbGVuYW1lPmZvbygpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgY2FsbGVkIGVhY2ggdGltZSA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gaXMgZXhwYW5kZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRk9PID0gIiR7QGZvbygpfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDb250cmFzdCB0aGlzIHdpdGggdGhlIGZvbGxvd2luZyBpbW1lZGlhdGUgYXNzaWdubWVudCwgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvbygpPC9maWxlbmFtZT4gaXMgb25seSBjYWxsZWQgb25jZSwgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgaXMgcGFyc2VkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZPTyA6PSAiJHtAZm9vKCl9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIEZvciBhIGRpZmZlcmVudCB3YXkgdG8gc2V0IHZhcmlhYmxlcyB3aXRoIFB5dGhvbiBjb2RlIGR1cmluZworICAgICAgICAgICAgICAgIHBhcnNpbmcsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYW5vbnltb3VzLXB5dGhvbi1mdW5jdGlvbnMnPkFub255bW91cyBQeXRob24gRnVuY3Rpb25zPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Vuc2V0dGluZy12YXJpYWJsZXMnPgorICAgICAgICAgICAgPHRpdGxlPlVuc2V0dGluZyB2YXJpYWJsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBjb21wbGV0ZWx5IHJlbW92ZSBhIHZhcmlhYmxlIG9yIGEgdmFyaWFibGUgZmxhZworICAgICAgICAgICAgICAgIGZyb20gQml0QmFrZSdzIGludGVybmFsIGRhdGEgZGljdGlvbmFyeSBieSB1c2luZyB0aGUgInVuc2V0IiBrZXl3b3JkLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgIHVuc2V0IERBVEUKKyAgICAgICAgdW5zZXQgZG9fZmV0Y2hbbm9leGVjXQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGVzZSB0d28gc3RhdGVtZW50cyByZW1vdmUgdGhlIDxmaWxlbmFtZT5EQVRFPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaFtub2V4ZWNdPC9maWxlbmFtZT4gZmxhZy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Byb3ZpZGluZy1wYXRobmFtZXMnPgorICAgICAgICAgICAgPHRpdGxlPlByb3ZpZGluZyBQYXRobmFtZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgcGF0aG5hbWVzIGZvciB1c2Ugd2l0aCBCaXRCYWtlLAorICAgICAgICAgICAgICAgIGRvIG5vdCB1c2UgdGhlIHRpbGRlICgifiIpIGNoYXJhY3RlciBhcyBhIHNob3J0Y3V0CisgICAgICAgICAgICAgICAgZm9yIHlvdXIgaG9tZSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgRG9pbmcgc28gbWlnaHQgY2F1c2UgQml0QmFrZSB0byBub3QgcmVjb2duaXplIHRoZQorICAgICAgICAgICAgICAgIHBhdGggc2luY2UgQml0QmFrZSBkb2VzIG5vdCBleHBhbmQgdGhpcyBjaGFyYWN0ZXIgaW4KKyAgICAgICAgICAgICAgICB0aGUgc2FtZSB3YXkgYSBzaGVsbCB3b3VsZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW5zdGVhZCwgcHJvdmlkZSBhIGZ1bGxlciBwYXRoIGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICBleGFtcGxlIGlsbHVzdHJhdGVzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJMQVlFUlMgPz0gIiBcCisgICAgICAgL2hvbWUvc2NvdHQtbGVub3ZvL0xheWVyQSBcCisgICAgICAgIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdleHBvcnRpbmctdmFyaWFibGVzLXRvLXRoZS1lbnZpcm9ubWVudCc+CisgICAgICAgIDx0aXRsZT5FeHBvcnRpbmcgVmFyaWFibGVzIHRvIHRoZSBFbnZpcm9ubWVudDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGV4cG9ydCB2YXJpYWJsZXMgdG8gdGhlIGVudmlyb25tZW50IG9mIHJ1bm5pbmcKKyAgICAgICAgICAgIHRhc2tzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZXhwb3J0PC9maWxlbmFtZT4ga2V5d29yZC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZvbzwvZmlsZW5hbWU+IHRhc2sgcHJpbnRzICJ2YWx1ZSBmcm9tCisgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQiIHdoZW4gcnVuOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBleHBvcnQgRU5WX1ZBUklBQkxFCisgICAgIEVOVl9WQVJJQUJMRSA9ICJ2YWx1ZSBmcm9tIHRoZSBlbnZpcm9ubWVudCIKKworICAgICBkb19mb28oKSB7CisgICAgICAgICBiYnBsYWluICIkRU5WX1ZBUklBQkxFIgorICAgICB9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgbm90IGV4cGFuZCA8ZmlsZW5hbWU+JEVOVl9WQVJJQUJMRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaW4gdGhpcyBjYXNlIGJlY2F1c2UgaXQgbGFja3MgdGhlIG9ibGlnYXRvcnkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+e308L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBSYXRoZXIsIDxmaWxlbmFtZT4kRU5WX1ZBUklBQkxFPC9maWxlbmFtZT4gaXMgZXhwYW5kZWQKKyAgICAgICAgICAgICAgICBieSB0aGUgc2hlbGwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBJdCBkb2VzIG5vdCBtYXR0ZXIgd2hldGhlcgorICAgICAgICAgICAgPGZpbGVuYW1lPmV4cG9ydCBFTlZfVkFSSUFCTEU8L2ZpbGVuYW1lPiBhcHBlYXJzIGJlZm9yZSBvcgorICAgICAgICAgICAgYWZ0ZXIgYXNzaWdubWVudHMgdG8gPGZpbGVuYW1lPkVOVl9WQVJJQUJMRTwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNvbWJpbmUgPGZpbGVuYW1lPmV4cG9ydDwvZmlsZW5hbWU+CisgICAgICAgICAgICB3aXRoIHNldHRpbmcgYSB2YWx1ZSBmb3IgdGhlIHZhcmlhYmxlLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBleHBvcnQgRU5WX1ZBUklBQkxFID0gIjxyZXBsYWNlYWJsZT52YXJpYWJsZS12YWx1ZTwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+LCB2YXJpYWJsZXMKKyAgICAgICAgICAgIHRoYXQgYXJlIGV4cG9ydGVkIHRvIHRoZSBlbnZpcm9ubWVudCBhcmUgcHJlY2VkZWQgYnkgImV4cG9ydCIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFtb25nIHRoZSB2YXJpYWJsZXMgY29tbW9ubHkgZXhwb3J0ZWQgdG8gdGhlIGVudmlyb25tZW50CisgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHdoaWNoIGFyZSBwaWNrZWQgdXAgYnkgbWFueSBidWlsZCBzeXN0ZW1zLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NvbmRpdGlvbmFsLXN5bnRheC1vdmVycmlkZXMnPgorICAgICAgICA8dGl0bGU+Q29uZGl0aW9uYWwgU3ludGF4IChPdmVycmlkZXMpPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgdXNlcworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLU9WRVJSSURFUyc+PGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdG8gY29udHJvbCB3aGF0IHZhcmlhYmxlcyBhcmUgb3ZlcnJpZGRlbiBhZnRlciBCaXRCYWtlCisgICAgICAgICAgICBwYXJzZXMgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHlvdSBjYW4gdXNlCisgICAgICAgICAgICA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4gYXMgY29uZGl0aW9uYWwgbWV0YWRhdGEsCisgICAgICAgICAgICB0YWxrcyBhYm91dCBrZXkgZXhwYW5zaW9uIGluIHJlbGF0aW9uc2hpcCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+LCBhbmQgcHJvdmlkZXMgc29tZSBleGFtcGxlcworICAgICAgICAgICAgdG8gaGVscCB3aXRoIHVuZGVyc3RhbmRpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY29uZGl0aW9uYWwtbWV0YWRhdGEnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmRpdGlvbmFsIE1ldGFkYXRhPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+IHRvIGNvbmRpdGlvbmFsbHkgc2VsZWN0CisgICAgICAgICAgICAgICAgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgdmFyaWFibGUgYW5kIHRvIGNvbmRpdGlvbmFsbHkKKyAgICAgICAgICAgICAgICBhcHBlbmQgb3IgcHJlcGVuZCB0aGUgdmFsdWUgb2YgYSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVzIGNhbiBvbmx5IHVzZSBsb3dlci1jYXNlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdW5kZXJzY29yZXMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gb3ZlcnJpZGUgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhleSBhcmUgdXNlZCB0byBzZXBhcmF0ZSBvdmVycmlkZXMgZnJvbSBlYWNoIG90aGVyIGFuZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSB2YXJpYWJsZSBuYW1lLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNlbGVjdGluZyBhIFZhcmlhYmxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBhIGNvbG9uLWNoYXJhY3Rlci1zZXBhcmF0ZWQgbGlzdCB0aGF0IGNvbnRhaW5zIGl0ZW1zCisgICAgICAgICAgICAgICAgICAgICAgICBmb3Igd2hpY2ggeW91IHdhbnQgdG8gc2F0aXNmeSBjb25kaXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgaWYgeW91IGhhdmUgYSB2YXJpYWJsZSB0aGF0IGlzIGNvbmRpdGlvbmFsIG9uIOKAnGFybeKAnSwgYW5kIOKAnGFybeKAnQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+LCB0aGVuIHRoZSDigJxhcm3igJ0tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHZhcmlhYmxlIGlzIHVzZWQgcmF0aGVyIHRoYW4gdGhlIG5vbi1jb25kaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgT1ZFUlJJREVTID0gImFyY2hpdGVjdHVyZTpvczptYWNoaW5lIgorICAgICBURVNUID0gImRlZmF1bHQiCisgICAgIFRFU1Rfb3MgPSAib3NzcGVjaWZpYyIKKyAgICAgVEVTVF9ub292ZXJyaWRlID0gIm90aGVyY29uZHZhbHVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBsaXN0cyB0aHJlZSBvdmVycmlkZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAiYXJjaGl0ZWN0dXJlIiwgIm9zIiwgYW5kICJtYWNoaW5lIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+VEVTVDwvZmlsZW5hbWU+IGJ5IGl0c2VsZiBoYXMgYSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiAiZGVmYXVsdCIuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2VsZWN0IHRoZSBvcy1zcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSA8ZmlsZW5hbWU+VEVTVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBieSBhcHBlbmRpbmcgdGhlICJvcyIgb3ZlcnJpZGUgdG8gdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLjxmaWxlbmFtZT5URVNUX29zPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBiZXR0ZXIgdW5kZXJzdGFuZCB0aGlzLCBjb25zaWRlciBhIHByYWN0aWNhbCBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhc3N1bWVzIGFuIE9wZW5FbWJlZGRlZCBtZXRhZGF0YS1iYXNlZCBMaW51eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpbmVzIGZyb20gdGhlIHJlY2lwZSBmaWxlIGZpcnN0IHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYnJhbmNoIHZhcmlhYmxlIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhIGRlZmF1bHQgdmFsdWUsIHRoZW4gY29uZGl0aW9uYWxseSBvdmVycmlkZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgYmFzZWQgb24gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbGQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtCUkFOQ0ggPSAic3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9xZW11YXJtICA9ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKKyAgICAgS0JSQU5DSF9xZW11bWlwcyA9ICJzdGFuZGFyZC9tdGktbWFsdGEzMiIKKyAgICAgS0JSQU5DSF9xZW11cHBjICA9ICJzdGFuZGFyZC9xZW11cHBjIgorICAgICBLQlJBTkNIX3FlbXV4ODYgID0gInN0YW5kYXJkL2NvbW1vbi1wYy9iYXNlIgorICAgICBLQlJBTkNIX3FlbXV4ODYtNjQgID0gInN0YW5kYXJkL2NvbW1vbi1wYy02NC9iYXNlIgorICAgICBLQlJBTkNIX3FlbXVtaXBzNjQgPSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmRpbmcgYW5kIFByZXBlbmRpbmc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyBzdXBwb3J0cyBhcHBlbmQgYW5kIHByZXBlbmQgb3BlcmF0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIGJhc2VkIG9uIHdoZXRoZXIgYSBzcGVjaWZpYyBpdGVtIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZWQgaW4gPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBFTkRTID0gImdsaWJjIG5jdXJzZXMiCisgICAgIE9WRVJSSURFUyA9ICJtYWNoaW5lOmxvY2FsIgorICAgICBERVBFTkRTX2FwcGVuZF9tYWNoaW5lID0gIiBsaWJtYWQiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gYmVjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgImdsaWJjIG5jdXJzZXMgbGlibWFkIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdhaW4sIHVzaW5nIGFuIE9wZW5FbWJlZGRlZCBtZXRhZGF0YS1iYXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgZmlsZSBhcyBhbiBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbGluZXMgd2lsbCBjb25kaXRpb25hbGx5IGFwcGVuZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUgYmFzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgYXJjaGl0ZWN0dXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZXR0aW5nIGEgVmFyaWFibGUgZm9yIGEgU2luZ2xlIFRhc2s6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugc3VwcG9ydHMgc2V0dGluZyBhIHZhcmlhYmxlIGp1c3QgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24gb2YgYSBzaW5nbGUgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRk9PX3Rhc2stY29uZmlndXJlID0gInZhbCAxIgorICAgICBGT09fdGFzay1jb21waWxlID0gInZhbCAyIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIDxmaWxlbmFtZT5GT088L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaGFzIHRoZSB2YWx1ZSAidmFsIDEiIHdoaWxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IHRhc2sgaXMgZXhlY3V0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHZhbHVlICJ2YWwgMiIgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+IHRhc2sgaXMgZXhlY3V0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkludGVybmFsbHksIHRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgcHJlcGVuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2sgKGUuZy4gInRhc2stY29tcGlsZToiKSB0byB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgbG9jYWwgZGF0YXN0b3JlIG9mIHRoZSA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBhbHNvIHVzZSB0aGlzIHN5bnRheCB3aXRoIG90aGVyIGNvbWJpbmF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gIjxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IikgYXMgc2hvd24gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRVhUUkFfT0VNQUtFX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0na2V5LWV4cGFuc2lvbic+CisgICAgICAgICAgICA8dGl0bGU+S2V5IEV4cGFuc2lvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEtleSBleHBhbnNpb24gaGFwcGVucyB3aGVuIHRoZSBCaXRCYWtlIGRhdGFzdG9yZSBpcyBmaW5hbGl6ZWQuCisgICAgICAgICAgICAgICAgVG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhpcywgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQSR7Qn0gPSAiWCIKKyAgICAgQiA9ICIyIgorICAgICBBMiA9ICJZIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGFmdGVyIGFsbCB0aGUgcGFyc2luZyBpcyBjb21wbGV0ZSwKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGV4cGFuZHMgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPiBpbnRvICIyIi4KKyAgICAgICAgICAgICAgICBUaGlzIGV4cGFuc2lvbiBjYXVzZXMgPGZpbGVuYW1lPkEyPC9maWxlbmFtZT4sIHdoaWNoIHdhcworICAgICAgICAgICAgICAgIHNldCB0byAiWSIgYmVmb3JlIHRoZSBleHBhbnNpb24sIHRvIGJlY29tZSAiWCIuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndmFyaWFibGUtaW50ZXJhY3Rpb24td29ya2VkLWV4YW1wbGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlc3BpdGUgdGhlIHByZXZpb3VzIGV4cGxhbmF0aW9ucyB0aGF0IHNob3cgdGhlIGRpZmZlcmVudCBmb3JtcyBvZgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlZmluaXRpb25zLCBpdCBjYW4gYmUgaGFyZCB0byB3b3JrCisgICAgICAgICAgICAgICAgb3V0IGV4YWN0bHkgd2hhdCBoYXBwZW5zIHdoZW4gdmFyaWFibGUgb3BlcmF0b3JzLCBjb25kaXRpb25hbAorICAgICAgICAgICAgICAgIG92ZXJyaWRlcywgYW5kIHVuY29uZGl0aW9uYWwgb3ZlcnJpZGVzIGFyZSBjb21iaW5lZC4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgc29tZSBjb21tb24gc2NlbmFyaW9zIGFsb25nCisgICAgICAgICAgICAgICAgd2l0aCBleHBsYW5hdGlvbnMgZm9yIHZhcmlhYmxlIGludGVyYWN0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgdHlwaWNhbGx5IGNvbmZ1c2UgdXNlcnMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZXJlIGlzIG9mdGVuIGNvbmZ1c2lvbiBjb25jZXJuaW5nIHRoZSBvcmRlciBpbiB3aGljaAorICAgICAgICAgICAgICAgIG92ZXJyaWRlcyBhbmQgdmFyaW91cyAiYXBwZW5kIiBvcGVyYXRvcnMgdGFrZSBlZmZlY3QuCisgICAgICAgICAgICAgICAgUmVjYWxsIHRoYXQgYW4gYXBwZW5kIG9yIHByZXBlbmQgb3BlcmF0aW9uIHVzaW5nICJfYXBwZW5kIgorICAgICAgICAgICAgICAgIGFuZCAiX3ByZXBlbmQiIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBpbW1lZGlhdGUgYXNzaWdubWVudAorICAgICAgICAgICAgICAgIGFzIHdvdWxkICIrPSIsICIuPSIsICI9KyIsIG9yICI9LiIuCisgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgT1ZFUlJJREVTID0gImZvbyIKKyAgICAgQSA9ICJaIgorICAgICBBX2Zvb19hcHBlbmQgPSAiWCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIHRoaXMgY2FzZSwgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgIHVuY29uZGl0aW9uYWxseSBzZXQgdG8gIloiIGFuZCAiWCIgaXMKKyAgICAgICAgICAgICAgICB1bmNvbmRpdGlvbmFsbHkgYW5kIGltbWVkaWF0ZWx5IGFwcGVuZGVkIHRvIHRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BX2ZvbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEJlY2F1c2Ugb3ZlcnJpZGVzIGhhdmUgbm90IGJlZW4gYXBwbGllZCB5ZXQsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFfZm9vPC9maWxlbmFtZT4gaXMgc2V0IHRvICJYIiBkdWUgdG8gdGhlIGFwcGVuZAorICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IHNpbXBseSBlcXVhbHMgIloiLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcHBseWluZyBvdmVycmlkZXMsIGhvd2V2ZXIsIGNoYW5nZXMgdGhpbmdzLgorICAgICAgICAgICAgICAgIFNpbmNlICJmb28iIGlzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgdGhlIGNvbmRpdGlvbmFsIHZhcmlhYmxlIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4gaXMgcmVwbGFjZWQKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSAiZm9vIiB2ZXJzaW9uLCB3aGljaCBpcyBlcXVhbCB0byAiWCIuCisgICAgICAgICAgICAgICAgU28gZWZmZWN0aXZlbHksIDxmaWxlbmFtZT5BX2ZvbzwvZmlsZW5hbWU+IHJlcGxhY2VzIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIGNoYW5nZXMgdGhlIG9yZGVyIG9mIHRoZSBvdmVycmlkZSBhbmQKKyAgICAgICAgICAgICAgICB0aGUgYXBwZW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgT1ZFUlJJREVTID0gImZvbyIKKyAgICAgQSA9ICJaIgorICAgICBBX2FwcGVuZF9mb28gPSAiWCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIHRoaXMgY2FzZSwgYmVmb3JlIG92ZXJyaWRlcyBhcmUgaGFuZGxlZCwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IGlzIHNldCB0byAiWiIgYW5kIDxmaWxlbmFtZT5BX2FwcGVuZF9mb288L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGlzIHNldCB0byAiWCIuCisgICAgICAgICAgICAgICAgT25jZSB0aGUgb3ZlcnJpZGUgZm9yICJmb28iIGlzIGFwcGxpZWQsIGhvd2V2ZXIsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBnZXRzIGFwcGVuZGVkIHdpdGggIlgiLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBiZWNvbWVzICJaWCIuCisgICAgICAgICAgICAgICAgTm90aWNlIHRoYXQgc3BhY2VzIGFyZSBub3QgYXBwZW5kZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIGhhcyB0aGUgb3JkZXIgb2YgdGhlIGFwcGVuZHMgYW5kIG92ZXJyaWRlcyByZXZlcnNlZAorICAgICAgICAgICAgICAgIGJhY2sgYXMgaW4gdGhlIGZpcnN0IGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBPVkVSUklERVMgPSAiZm9vIgorICAgICBBID0gIlkiCisgICAgIEFfZm9vX2FwcGVuZCA9ICJaIgorICAgICBBX2Zvb19hcHBlbmQgPSAiWCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIHRoaXMgY2FzZSwgYmVmb3JlIGFueSBvdmVycmlkZXMgYXJlIHJlc29sdmVkLAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4gaXMgc2V0IHRvICJZIiB1c2luZyBhbiBpbW1lZGlhdGUgYXNzaWdubWVudC4KKyAgICAgICAgICAgICAgICBBZnRlciB0aGlzIGltbWVkaWF0ZSBhc3NpZ25tZW50LCA8ZmlsZW5hbWU+QV9mb288L2ZpbGVuYW1lPiBpcyBzZXQKKyAgICAgICAgICAgICAgICB0byAiWiIsIGFuZCB0aGVuIGZ1cnRoZXIgYXBwZW5kZWQgd2l0aAorICAgICAgICAgICAgICAgICJYIiBsZWF2aW5nIHRoZSB2YXJpYWJsZSBzZXQgdG8gIlpYIi4KKyAgICAgICAgICAgICAgICBGaW5hbGx5LCBhcHBseWluZyB0aGUgb3ZlcnJpZGUgZm9yICJmb28iIHJlc3VsdHMgaW4gdGhlIGNvbmRpdGlvbmFsCisgICAgICAgICAgICAgICAgdmFyaWFibGUgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBiZWNvbWluZyAiWlgiIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkE8L2ZpbGVuYW1lPiBpcyByZXBsYWNlZCB3aXRoIDxmaWxlbmFtZT5BX2ZvbzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBmaW5hbCBleGFtcGxlIG1peGVzIGluIHNvbWUgdmFyeWluZyBvcGVyYXRvcnM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBBID0gIjEiCisgICAgIEFfYXBwZW5kID0gIjIiCisgICAgIEFfYXBwZW5kID0gIjMiCisgICAgIEEgKz0gIjQiCisgICAgIEEgLj0gIjUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIHRoZSB0eXBlIG9mIGFwcGVuZCBvcGVyYXRvcnMgYXJlIGFmZmVjdGluZyB0aGUKKyAgICAgICAgICAgICAgICBvcmRlciBvZiBhc3NpZ25tZW50cyBhcyBCaXRCYWtlIHBhc3NlcyB0aHJvdWdoIHRoZSBjb2RlCisgICAgICAgICAgICAgICAgbXVsdGlwbGUgdGltZXMuCisgICAgICAgICAgICAgICAgSW5pdGlhbGx5LCA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IGlzIHNldCB0byAiMSA0NSIgYmVjYXVzZQorICAgICAgICAgICAgICAgIG9mIHRoZSB0aHJlZSBzdGF0ZW1lbnRzIHRoYXQgdXNlIGltbWVkaWF0ZSBvcGVyYXRvcnMuCisgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlc2UgYXNzaWdubWVudHMgYXJlIG1hZGUsIEJpdEJha2UgYXBwbGllcyB0aGUKKyAgICAgICAgICAgICAgICAiX2FwcGVuZCIgb3BlcmF0aW9ucy4KKyAgICAgICAgICAgICAgICBUaG9zZSBvcGVyYXRpb25zIHJlc3VsdCBpbiA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IGJlY29taW5nICIxIDQ1MjMiLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3NoYXJpbmctZnVuY3Rpb25hbGl0eSc+CisgICAgICAgIDx0aXRsZT5TaGFyaW5nIEZ1bmN0aW9uYWxpdHk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBhbGxvd3MgZm9yIG1ldGFkYXRhIHNoYXJpbmcgdGhyb3VnaCBpbmNsdWRlIGZpbGVzCisgICAgICAgICAgICAoPGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPikgYW5kIGNsYXNzIGZpbGVzCisgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYSBwaWVjZSBvZiBjb21tb24gZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgc3VjaCBhcyBhIHRhc2sgZGVmaW5pdGlvbiB0aGF0IHlvdSB3YW50IHRvIHNoYXJlIGJldHdlZW4KKyAgICAgICAgICAgIG1vcmUgdGhhbiBvbmUgcmVjaXBlLgorICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBjcmVhdGluZyBhIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGFuZCB0aGVuIHVzaW5nCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPiBkaXJlY3RpdmUgaW4geW91ciByZWNpcGVzIHRvCisgICAgICAgICAgICBpbmhlcml0IHRoZSBjbGFzcyB3b3VsZCBiZSBhIGNvbW1vbiB3YXkgdG8gc2hhcmUgdGhlIHRhc2suCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGUgbWVjaGFuaXNtcyBCaXRCYWtlIHByb3ZpZGVzIHRvCisgICAgICAgICAgICBhbGxvdyB5b3UgdG8gc2hhcmUgZnVuY3Rpb25hbGl0eSBiZXR3ZWVuIHJlY2lwZXMuCisgICAgICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBtZWNoYW5pc21zIGluY2x1ZGUgPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4sIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPiBkaXJlY3RpdmVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2xvY2F0aW5nLWluY2x1ZGUtYW5kLWNsYXNzLWZpbGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Mb2NhdGluZyBJbmNsdWRlIGFuZCBDbGFzcyBGaWxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIG5lZWRlZCBpbmNsdWRlIGFuZCBjbGFzcyBmaWxlcy4KKyAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIEJpdEJha2Ugc2VhcmNoZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIGFuYWxvZ291cyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciBpbmNsdWRlIGFuZCBjbGFzcyBmaWxlcyB0byBiZSBmb3VuZCBieSBCaXRCYWtlLAorICAgICAgICAgICAgICAgIHRoZXkgbmVlZCB0byBiZSBsb2NhdGVkIGluIGEgImNsYXNzZXMiIHN1YmRpcmVjdG9yeSB0aGF0IGNhbgorICAgICAgICAgICAgICAgIGJlIGZvdW5kIGluIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbmhlcml0LWRpcmVjdGl2ZSc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPiBEaXJlY3RpdmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHdyaXRpbmcgYSByZWNpcGUgb3IgY2xhc3MgZmlsZSwgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPiBkaXJlY3RpdmUgdG8gaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IG9mIGEgY2xhc3MgKDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIG9ubHkgc3VwcG9ydHMgdGhpcyBkaXJlY3RpdmUgd2hlbiB1c2VkIHdpdGhpbiByZWNpcGUKKyAgICAgICAgICAgICAgICBhbmQgY2xhc3MgZmlsZXMgKGkuZS4gPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4gZGlyZWN0aXZlIGlzIGEgcnVkaW1lbnRhcnkKKyAgICAgICAgICAgICAgICBtZWFucyBvZiBzcGVjaWZ5aW5nIGZ1bmN0aW9uYWxpdHkgY29udGFpbmVkIGluIGNsYXNzIGZpbGVzCisgICAgICAgICAgICAgICAgdGhhdCB5b3VyIHJlY2lwZXMgcmVxdWlyZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBlYXNpbHkgYWJzdHJhY3Qgb3V0IHRoZSB0YXNrcyBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGEgcGFja2FnZSB0aGF0IHVzZXMgQXV0b2NvbmYgYW5kIEF1dG9tYWtlIGFuZCBwdXQKKyAgICAgICAgICAgICAgICB0aG9zZSB0YXNrcyBpbnRvIGEgY2xhc3MgZmlsZSBhbmQgdGhlbiBoYXZlIHlvdXIgcmVjaXBlCisgICAgICAgICAgICAgICAgaW5oZXJpdCB0aGF0IGNsYXNzIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHlvdXIgcmVjaXBlcyBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBkaXJlY3RpdmUKKyAgICAgICAgICAgICAgICB0byBpbmhlcml0IGFuIDxmaWxlbmFtZT5hdXRvdG9vbHMuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgVGhlIGNsYXNzIGZpbGUgd291bGQgY29udGFpbiBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgdXNpbmcKKyAgICAgICAgICAgICAgICBBdXRvdG9vbHMgdGhhdCBjb3VsZCBiZSBzaGFyZWQgYWNyb3NzIHJlY2lwZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IGF1dG90b29scworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIEJpdEJha2Ugd291bGQgc2VhcmNoIGZvciB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSBhbnkgdmFsdWVzIGFuZCBmdW5jdGlvbnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGluaGVyaXRlZCBjbGFzcyB3aXRoaW4geW91ciByZWNpcGUgYnkgZG9pbmcgc28KKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlICJpbmhlcml0IiBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgZGlyZWN0aXZlIHRvIGluaGVyaXQKKyAgICAgICAgICAgICAgICBtdWx0aXBsZSBjbGFzc2VzLCBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gaW5oZXJpdCBib3RoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IGJ1aWxkaGlzdG9yeSBybV93b3JrCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbiBhZHZhbnRhZ2Ugd2l0aCB0aGUgaW5oZXJpdCBkaXJlY3RpdmUgYXMgY29tcGFyZWQgdG8gYm90aAorICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2luY2x1ZGUtZGlyZWN0aXZlJz5pbmNsdWRlPC9saW5rPiBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZXF1aXJlLWluY2x1c2lvbic+cmVxdWlyZTwvbGluaz4gZGlyZWN0aXZlcworICAgICAgICAgICAgICAgIGlzIHRoYXQgeW91IGNhbiBpbmhlcml0IGNsYXNzIGZpbGVzIGNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSB2YXJpYWJsZSBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4gc3RhdGVtZW50LgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgJHtWQVJOQU1FfQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+VkFSTkFNRTwvZmlsZW5hbWU+IGlzIGdvaW5nIHRvIGJlIHNldCwgaXQgbmVlZHMKKyAgICAgICAgICAgICAgICB0byBiZSBzZXQgYmVmb3JlIHRoZSA8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIGlzIHBhcnNlZC4KKyAgICAgICAgICAgICAgICBPbmUgd2F5IHRvIGFjaGlldmUgYSBjb25kaXRpb25hbCBpbmhlcml0IGluIHRoaXMgY2FzZSBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICBvdmVycmlkZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVJJQUJMRSA9ICIiCisgICAgIFZBUklBQkxFX3NvbWVvdmVycmlkZSA9ICJteWNsYXNzIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBtZXRob2QgaXMgYnkgdXNpbmcgYW5vbnltb3VzIFB5dGhvbi4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBweXRob24gKCkgeworICAgICAgICAgaWYgY29uZGl0aW9uID09IHZhbHVlOgorICAgICAgICAgICAgIGQuc2V0VmFyKCdWQVJJQUJMRScsICdteWNsYXNzJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgZC5zZXRWYXIoJ1ZBUklBQkxFJywgJycpCisgICAgIH0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjb3VsZCB1c2UgYW4gaW4tbGluZSBQeXRob24gZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgIGluIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgJHtAJ2NsYXNzbmFtZScgaWYgY29uZGl0aW9uIGVsc2UgJyd9CisgICAgIGluaGVyaXQgJHtAZnVuY3Rpb25uYW1lKHBhcmFtcyl9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIGFsbCBjYXNlcywgaWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGFuIGVtcHR5CisgICAgICAgICAgICAgICAgc3RyaW5nLCB0aGUgc3RhdGVtZW50IGRvZXMgbm90IHRyaWdnZXIgYSBzeW50YXggZXJyb3IKKyAgICAgICAgICAgICAgICBiZWNhdXNlIGl0IGJlY29tZXMgYSBuby1vcC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbmNsdWRlLWRpcmVjdGl2ZSc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBEaXJlY3RpdmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVuZGVyc3RhbmRzIHRoZSA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlLgorICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0aXZlIGNhdXNlcyBCaXRCYWtlIHRvIHBhcnNlIHdoYXRldmVyIGZpbGUgeW91IHNwZWNpZnksCisgICAgICAgICAgICAgICAgYW5kIHRvIGluc2VydCB0aGF0IGZpbGUgYXQgdGhhdCBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgZGlyZWN0aXZlIGlzIG11Y2ggbGlrZSBpdHMgZXF1aXZhbGVudCBpbiBNYWtlIGV4Y2VwdAorICAgICAgICAgICAgICAgIHRoYXQgaWYgdGhlIHBhdGggc3BlY2lmaWVkIG9uIHRoZSBpbmNsdWRlIGxpbmUgaXMgYSByZWxhdGl2ZQorICAgICAgICAgICAgICAgIHBhdGgsIEJpdEJha2UgbG9jYXRlcyB0aGUgZmlyc3QgZmlsZSBpdCBjYW4gZmluZAorICAgICAgICAgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBpbmNsdWRlIGRpcmVjdGl2ZSBpcyBhIG1vcmUgZ2VuZXJpYyBtZXRob2Qgb2YgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhcyBjb21wYXJlZCB0byB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmhlcml0LWRpcmVjdGl2ZSc+aW5oZXJpdDwvbGluaz4gZGlyZWN0aXZlLAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIHJlc3RyaWN0ZWQgdG8gY2xhc3MgKGkuZS4gPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIGluY2x1ZGUgZGlyZWN0aXZlIGlzIGFwcGxpY2FibGUgZm9yIGFueSBvdGhlciBraW5kIG9mCisgICAgICAgICAgICAgICAgc2hhcmVkIG9yIGVuY2Fwc3VsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGNvbmZpZ3VyYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIGRvZXMgbm90IHN1aXQgYSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBuZWVkZWQgYSByZWNpcGUgdG8gaW5jbHVkZSBzb21lCisgICAgICAgICAgICAgICAgc2VsZi10ZXN0IGRlZmluaXRpb25zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaW5jbHVkZSB0ZXN0X2RlZnMuaW5jCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBkaXJlY3RpdmUgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgcHJvZHVjZSBhbiBlcnJvciB3aGVuIHRoZSBmaWxlIGNhbm5vdCBiZSBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGlmIHRoZSBmaWxlIHlvdQorICAgICAgICAgICAgICAgICAgICBhcmUgaW5jbHVkaW5nIGlzIGV4cGVjdGVkIHRvIGV4aXN0LCB5b3Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZXF1aXJlLWluY2x1c2lvbic+PGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBtYWtlcyBzdXJlIHRoYXQgYW4gZXJyb3IgaXMgcHJvZHVjZWQgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbGUgY2Fubm90IGJlIGZvdW5kLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZXF1aXJlLWluY2x1c2lvbic+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPiBEaXJlY3RpdmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVuZGVyc3RhbmRzIHRoZSA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlLgorICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0aXZlIGJlaGF2ZXMganVzdCBsaWtlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gZGlyZWN0aXZlIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgQml0QmFrZSByYWlzZXMgYSBwYXJzaW5nIGVycm9yIGlmIHRoZSBmaWxlIHRvIGJlIGluY2x1ZGVkIGNhbm5vdAorICAgICAgICAgICAgICAgIGJlIGZvdW5kLgorICAgICAgICAgICAgICAgIFRodXMsIGFueSBmaWxlIHlvdSByZXF1aXJlIGlzIGluc2VydGVkIGludG8gdGhlIGZpbGUgdGhhdCBpcworICAgICAgICAgICAgICAgIGJlaW5nIHBhcnNlZCBhdCB0aGUgbG9jYXRpb24gb2YgdGhlIGRpcmVjdGl2ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHJlcXVpcmUgZGlyZWN0aXZlLCBsaWtlIHRoZSBpbmNsdWRlIGRpcmVjdGl2ZSBwcmV2aW91c2x5CisgICAgICAgICAgICAgICAgZGVzY3JpYmVkLCBpcyBhIG1vcmUgZ2VuZXJpYyBtZXRob2Qgb2YgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhcyBjb21wYXJlZCB0byB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmhlcml0LWRpcmVjdGl2ZSc+aW5oZXJpdDwvbGluaz4gZGlyZWN0aXZlLAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIHJlc3RyaWN0ZWQgdG8gY2xhc3MgKGkuZS4gPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlcXVpcmUgZGlyZWN0aXZlIGlzIGFwcGxpY2FibGUgZm9yIGFueSBvdGhlciBraW5kIG9mCisgICAgICAgICAgICAgICAgc2hhcmVkIG9yIGVuY2Fwc3VsYXRlZCBmdW5jdGlvbmFsaXR5IG9yIGNvbmZpZ3VyYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIGRvZXMgbm90IHN1aXQgYSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTaW1pbGFyIHRvIGhvdyBCaXRCYWtlIGhhbmRsZXMKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmNsdWRlLWRpcmVjdGl2ZSc+PGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgaWYgdGhlIHBhdGggc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgb24gdGhlIHJlcXVpcmUgbGluZSBpcyBhIHJlbGF0aXZlIHBhdGgsIEJpdEJha2UgbG9jYXRlcworICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBmaWxlIGl0IGNhbiBmaW5kIHdpdGhpbiA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgdHdvIHZlcnNpb25zIG9mIGEgcmVjaXBlCisgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmZvb18xLjIuMi5iYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMi4wLjAuYmI8L2ZpbGVuYW1lPikgd2hlcmUKKyAgICAgICAgICAgICAgICBlYWNoIHZlcnNpb24gY29udGFpbnMgc29tZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSB0aGF0IGNvdWxkIGJlCisgICAgICAgICAgICAgICAgc2hhcmVkLgorICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBjcmVhdGUgYW4gaW5jbHVkZSBmaWxlIG5hbWVkIDxmaWxlbmFtZT5mb28uaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb21tb24gZGVmaW5pdGlvbnMgbmVlZGVkIHRvIGJ1aWxkICJmb28iLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgPGZpbGVuYW1lPmZvby5pbmM8L2ZpbGVuYW1lPiBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIHNhbWUgZGlyZWN0b3J5IGFzIHlvdXIgdHdvIHJlY2lwZSBmaWxlcyBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIE9uY2UgdGhlc2UgY29uZGl0aW9ucyBhcmUgc2V0IHVwLCB5b3UgY2FuIHNoYXJlIHRoZSBmdW5jdGlvbmFsaXR5CisgICAgICAgICAgICAgICAgdXNpbmcgYSA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+IGRpcmVjdGl2ZSBmcm9tIHdpdGhpbiBlYWNoCisgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcmVxdWlyZSBmb28uaW5jCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2luaGVyaXQtY29uZmlndXJhdGlvbi1kaXJlY3RpdmUnPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBEaXJlY3RpdmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIGEgY29uZmlndXJhdGlvbiBmaWxlICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUgdG8gaW5oZXJpdCBhIGNsYXNzLgorICAgICAgICAgICAgICAgIEJpdEJha2Ugb25seSBzdXBwb3J0cyB0aGlzIGRpcmVjdGl2ZSB3aGVuIHVzZWQgd2l0aGluCisgICAgICAgICAgICAgICAgYSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IG5lZWRlZCB0byBpbmhlcml0IGEgY2xhc3MKKyAgICAgICAgICAgICAgICBmaWxlIGNhbGxlZCA8ZmlsZW5hbWU+YWJjLmJiY2xhc3M8L2ZpbGVuYW1lPiBmcm9tIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVQgKz0gImFiYyIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSBjYXVzZXMgdGhlIG5hbWVkCisgICAgICAgICAgICAgICAgY2xhc3MgdG8gYmUgaW5oZXJpdGVkIGF0IHRoZSBwb2ludCBvZiB0aGUgZGlyZWN0aXZlCisgICAgICAgICAgICAgICAgZHVyaW5nIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgQXMgd2l0aCB0aGUgPGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPiBkaXJlY3RpdmUsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUgbXVzdCBiZSBsb2NhdGVkIGluIGEKKyAgICAgICAgICAgICAgICAiY2xhc3NlcyIgc3ViZGlyZWN0b3J5IGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGZpbGVzIGFyZSBwYXJzZWQKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgZHVyaW5nIEJpdEJha2UncyBleGVjdXRpb24sIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gdG8gaW5oZXJpdCBhIGNsYXNzIGVmZmVjdGl2ZWx5CisgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzIHRoZSBjbGFzcyBnbG9iYWxseSAoaS5lLiBmb3IgYWxsIHJlY2lwZXMpLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGRpcmVjdGl2ZSB0byBpbmhlcml0CisgICAgICAgICAgICAgICAgbXVsdGlwbGUgY2xhc3NlcywgeW91IGNhbiBwcm92aWRlIHRoZW0gb24gdGhlIHNhbWUgbGluZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgVXNlIHNwYWNlcyB0byBzZXBhcmF0ZSB0aGUgY2xhc3Nlcy4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIGluaGVyaXQgYm90aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5wa2djb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJhdXRvdG9vbHMgcGtnY29uZmlnIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdmdW5jdGlvbnMnPgorICAgICAgICA8dGl0bGU+RnVuY3Rpb25zPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIHdpdGggbW9zdCBsYW5ndWFnZXMsIGZ1bmN0aW9ucyBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyB0aGF0CisgICAgICAgICAgICBhcmUgdXNlZCB0byBidWlsZCB1cCBvcGVyYXRpb25zIGludG8gdGFza3MuCisgICAgICAgICAgICBCaXRCYWtlIHN1cHBvcnRzIHRoZXNlIHR5cGVzIG9mIGZ1bmN0aW9uczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TaGVsbCBGdW5jdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIHdyaXR0ZW4gaW4gc2hlbGwgc2NyaXB0IGFuZCBleGVjdXRlZCBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgYXMgZnVuY3Rpb25zLCB0YXNrcywgb3IgYm90aC4KKyAgICAgICAgICAgICAgICAgICAgVGhleSBjYW4gYWxzbyBiZSBjYWxsZWQgYnkgb3RoZXIgc2hlbGwgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJpdEJha2UtU3R5bGUgUHl0aG9uIEZ1bmN0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbnMgd3JpdHRlbiBpbiBQeXRob24gYW5kIGV4ZWN1dGVkIGJ5IEJpdEJha2Ugb3Igb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGZ1bmN0aW9ucyB1c2luZyA8ZmlsZW5hbWU+YmIuYnVpbGQuZXhlY19mdW5jKCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QeXRob24gRnVuY3Rpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyB3cml0dGVuIGluIFB5dGhvbiBhbmQgZXhlY3V0ZWQgYnkgUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFub255bW91cyBQeXRob24gRnVuY3Rpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBmdW5jdGlvbnMgZXhlY3V0ZWQgYXV0b21hdGljYWxseSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgcGFyc2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUgb2YgZnVuY3Rpb24sIHlvdSBjYW4gb25seQorICAgICAgICAgICAgZGVmaW5lIHRoZW0gaW4gY2xhc3MgKDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KQorICAgICAgICAgICAgYW5kIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4pCisgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzaGVsbC1mdW5jdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPlNoZWxsIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyB3cml0dGVuIGluIHNoZWxsIHNjcmlwdCBhbmQgZXhlY3V0ZWQgZWl0aGVyCisgICAgICAgICAgICAgICAgZGlyZWN0bHkgYXMgZnVuY3Rpb25zLCB0YXNrcywgb3IgYm90aC4KKyAgICAgICAgICAgICAgICBUaGV5IGNhbiBhbHNvIGJlIGNhbGxlZCBieSBvdGhlciBzaGVsbCBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHNoZWxsIGZ1bmN0aW9uIGRlZmluaXRpb246CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBzb21lX2Z1bmN0aW9uICgpIHsKKyAgICAgICAgIGVjaG8gIkhlbGxvIFdvcmxkIgorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSB0aGVzZSB0eXBlcyBvZiBmdW5jdGlvbnMgaW4geW91ciByZWNpcGUKKyAgICAgICAgICAgICAgICBvciBjbGFzcyBmaWxlcywgeW91IG5lZWQgdG8gZm9sbG93IHRoZSBzaGVsbCBwcm9ncmFtbWluZworICAgICAgICAgICAgICAgIHJ1bGVzLgorICAgICAgICAgICAgICAgIFRoZSBzY3JpcHRzIGFyZSBleGVjdXRlZCBieSA8ZmlsZW5hbWU+L2Jpbi9zaDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIHdoaWNoIG1heSBub3QgYmUgYSBiYXNoIHNoZWxsIGJ1dCBtaWdodCBiZSBzb21ldGhpbmcKKyAgICAgICAgICAgICAgICBzdWNoIGFzIDxmaWxlbmFtZT5kYXNoPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBub3QgdXNlIEJhc2gtc3BlY2lmaWMgc2NyaXB0IChiYXNoaXNtcykuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE92ZXJyaWRlcyBhbmQgb3ZlcnJpZGUtc3R5bGUgb3BlcmF0b3JzIGxpa2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IGNhbiBhbHNvIGJlIGFwcGxpZWQgdG8KKyAgICAgICAgICAgICAgICBzaGVsbCBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgTW9zdCBjb21tb25seSwgdGhpcyBhcHBsaWNhdGlvbiB3b3VsZCBiZSB1c2VkIGluIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSB0byBtb2RpZnkgZnVuY3Rpb25zIGluCisgICAgICAgICAgICAgICAgdGhlIG1haW4gcmVjaXBlLgorICAgICAgICAgICAgICAgIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gbW9kaWZ5IGZ1bmN0aW9ucyBpbmhlcml0ZWQgZnJvbQorICAgICAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19mb28oKSB7CisgICAgICAgICBiYnBsYWluIGZpcnN0CisgICAgICAgICBmbgorICAgICB9CisKKyAgICAgZm5fcHJlcGVuZCgpIHsKKyAgICAgICAgIGJicGxhaW4gc2Vjb25kCisgICAgIH0KKworICAgICBmbigpIHsKKyAgICAgICAgIGJicGxhaW4gdGhpcmQKKyAgICAgfQorCisgICAgIGRvX2Zvb19hcHBlbmQoKSB7CisgICAgICAgICBiYnBsYWluIGZvdXJ0aAorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFJ1bm5pbmcgPGZpbGVuYW1lPmRvX2ZvbzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcHJpbnRzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByZWNpcGVuYW1lIGRvX2ZvbzogZmlyc3QKKyAgICAgcmVjaXBlbmFtZSBkb19mb286IHNlY29uZAorICAgICByZWNpcGVuYW1lIGRvX2ZvbzogdGhpcmQKKyAgICAgcmVjaXBlbmFtZSBkb19mb286IGZvdXJ0aAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVzIGFuZCBvdmVycmlkZS1zdHlsZSBvcGVyYXRvcnMgY2FuCisgICAgICAgICAgICAgICAgICAgIGJlIGFwcGxpZWQgdG8gYW55IHNoZWxsIGZ1bmN0aW9uLCBub3QganVzdAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0YXNrcyc+dGFza3M8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiZuYnNwOzxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHZpZXcgdGhlIGZpbmFsIGFzc2VtYmxlZCBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGFmdGVyIGFsbCBvdmVycmlkZXMgaGF2ZSBiZWVuIGFwcGxpZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYml0YmFrZS1zdHlsZS1weXRob24tZnVuY3Rpb25zJz4KKyAgICAgICAgICAgIDx0aXRsZT5CaXRCYWtlLVN0eWxlIFB5dGhvbiBGdW5jdGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBleGVjdXRlZCBieQorICAgICAgICAgICAgICAgIEJpdEJha2Ugb3Igb3RoZXIgUHl0aG9uIGZ1bmN0aW9ucyB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5idWlsZC5leGVjX2Z1bmMoKTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbiBleGFtcGxlIEJpdEJha2UgZnVuY3Rpb24gaXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBweXRob24gc29tZV9weXRob25fZnVuY3Rpb24gKCkgeworICAgICAgICAgZC5zZXRWYXIoIlRFWFQiLCAiSGVsbG8gV29ybGQiKQorICAgICAgICAgcHJpbnQgZC5nZXRWYXIoIlRFWFQiKQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIFB5dGhvbiAiYmIiIGFuZCAib3MiIG1vZHVsZXMgYXJlIGFscmVhZHkKKyAgICAgICAgICAgICAgICBpbXBvcnRlZCwgeW91IGRvIG5vdCBuZWVkIHRvIGltcG9ydCB0aGVzZSBtb2R1bGVzLgorICAgICAgICAgICAgICAgIEFsc28gaW4gdGhlc2UgdHlwZXMgb2YgZnVuY3Rpb25zLCB0aGUgZGF0YXN0b3JlICgiZCIpCisgICAgICAgICAgICAgICAgaXMgYSBnbG9iYWwgdmFyaWFibGUgYW5kIGlzIGFsd2F5cyBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZSBleHByZXNzaW9ucyAoZS5nLiA8ZmlsZW5hbWU+JHtYfTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhcmUgbm8gbG9uZ2VyIGV4cGFuZGVkIHdpdGhpbiBQeXRob24gZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIGludGVudGlvbmFsIGluIG9yZGVyIHRvIGFsbG93IHlvdQorICAgICAgICAgICAgICAgICAgICB0byBmcmVlbHkgc2V0IHZhcmlhYmxlIHZhbHVlcyB0byBleHBhbmRhYmxlIGV4cHJlc3Npb25zCisgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaGF2aW5nIHRoZW0gZXhwYW5kZWQgcHJlbWF0dXJlbHkuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyB3aXNoIHRvIGV4cGFuZCBhIHZhcmlhYmxlIHdpdGhpbiBhIFB5dGhvbgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiwgdXNlIDxmaWxlbmFtZT5kLmdldFZhcigiWCIpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIE9yLCBmb3IgbW9yZSBjb21wbGljYXRlZCBleHByZXNzaW9ucywgdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kLmV4cGFuZCgpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTaW1pbGFyIHRvIHNoZWxsIGZ1bmN0aW9ucywgeW91IGNhbiBhbHNvIGFwcGx5IG92ZXJyaWRlcworICAgICAgICAgICAgICAgIGFuZCBvdmVycmlkZS1zdHlsZSBvcGVyYXRvcnMgdG8gQml0QmFrZS1zdHlsZSBQeXRob24KKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBweXRob24gZG9fZm9vX3ByZXBlbmQoKSB7CisgICAgICAgICBiYi5wbGFpbigiZmlyc3QiKQorICAgICB9CisKKyAgICAgcHl0aG9uIGRvX2ZvbygpIHsKKyAgICAgICAgIGJiLnBsYWluKCJzZWNvbmQiKQorICAgICB9CisKKyAgICAgcHl0aG9uIGRvX2Zvb19hcHBlbmQoKSB7CisgICAgICAgICBiYi5wbGFpbigidGhpcmQiKQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFJ1bm5pbmcgPGZpbGVuYW1lPmRvX2ZvbzwvZmlsZW5hbWU+IHByaW50cworICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByZWNpcGVuYW1lIGRvX2ZvbzogZmlyc3QKKyAgICAgcmVjaXBlbmFtZSBkb19mb286IHNlY29uZAorICAgICByZWNpcGVuYW1lIGRvX2ZvbzogdGhpcmQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4mbmJzcDs8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgY29tbWFuZCB0byB2aWV3IHRoZSBmaW5hbCBhc3NlbWJsZWQgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBhZnRlciBhbGwgb3ZlcnJpZGVzIGhhdmUgYmVlbiBhcHBsaWVkLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3B5dGhvbi1mdW5jdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPlB5dGhvbiBGdW5jdGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBhcmUgZXhlY3V0ZWQgYnkKKyAgICAgICAgICAgICAgICBvdGhlciBQeXRob24gY29kZS4KKyAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBQeXRob24gZnVuY3Rpb25zIGFyZSB1dGlsaXR5IGZ1bmN0aW9ucworICAgICAgICAgICAgICAgIHRoYXQgeW91IGludGVuZCB0byBjYWxsIGZyb20gaW4tbGluZSBQeXRob24gb3IKKyAgICAgICAgICAgICAgICBmcm9tIHdpdGhpbiBvdGhlciBQeXRob24gZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRlZiBnZXRfZGVwZW5kcyhkKToKKyAgICAgICAgIGlmIGQuZ2V0VmFyKCdTT01FQ09ORElUSU9OJyk6CisgICAgICAgICAgICAgcmV0dXJuICJkZXBlbmRlbmN5d2l0aGNvbmQiCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHJldHVybiAiZGVwZW5kZW5jeSIKKyAgICAgU09NRUNPTkRJVElPTiA9ICIxIgorICAgICBERVBFTkRTID0gIiR7QGdldF9kZXBlbmRzKGQpfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyB3b3VsZCByZXN1bHQgaW4gPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgPGZpbGVuYW1lPmRlcGVuZGVuY3l3aXRoY29uZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIHRoaW5ncyB0byBrbm93IGFib3V0IFB5dGhvbiBmdW5jdGlvbnM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB5dGhvbiBmdW5jdGlvbnMgY2FuIHRha2UgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEJpdEJha2UgZGF0YXN0b3JlIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IHBhc3MgaXQgaW4gYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIHRvIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlICJiYiIgYW5kICJvcyIgUHl0aG9uIG1vZHVsZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBpbXBvcnQgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2JpdGJha2Utc3R5bGUtcHl0aG9uLWZ1bmN0aW9ucy12ZXJzdXMtcHl0aG9uLWZ1bmN0aW9ucyc+CisgICAgICAgICAgICA8dGl0bGU+Qml0QmFrZS1TdHlsZSBQeXRob24gRnVuY3Rpb25zIFZlcnN1cyBQeXRob24gRnVuY3Rpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGltcG9ydGFudCBkaWZmZXJlbmNlcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAgQml0QmFrZS1zdHlsZSBQeXRob24gZnVuY3Rpb25zIGFuZCByZWd1bGFyIFB5dGhvbgorICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggImRlZiI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT25seSBCaXRCYWtlLXN0eWxlIFB5dGhvbiBmdW5jdGlvbnMgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0YXNrcyc+dGFza3M8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlcyBhbmQgb3ZlcnJpZGUtc3R5bGUgb3BlcmF0b3JzIGNhbiBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICBiZSBhcHBsaWVkIHRvIEJpdEJha2Utc3R5bGUgUHl0aG9uIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IHJlZ3VsYXIgUHl0aG9uIGZ1bmN0aW9ucyBjYW4gdGFrZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXR1cm4gdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3ZhcmlhYmxlLWZsYWdzJz5WYXJpYWJsZSBmbGFnczwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgPGZpbGVuYW1lPltkaXJzXTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPltjbGVhbmRpcnNdPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPltsb2NrZmlsZXNdPC9maWxlbmFtZT4gY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIEJpdEJha2Utc3R5bGUgUHl0aG9uIGZ1bmN0aW9ucywgYnV0IG5vdCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgcmVndWxhciBQeXRob24gZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2Utc3R5bGUgUHl0aG9uIGZ1bmN0aW9ucyBnZW5lcmF0ZSBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1UJz48ZmlsZW5hbWU+VDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3J1bi48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5mdW5jdGlvbi1uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBpZDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgdGhhdCBpcyBleGVjdXRlZCB0byBydW4gdGhlIGZ1bmN0aW9uLCBhbmQgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgYSBsb2cgZmlsZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7VH0vbG9nLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmZ1bmN0aW9uLW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZXkgYXJlIGV4ZWN1dGVkIGFzIHRhc2tzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBSZWd1bGFyIFB5dGhvbiBmdW5jdGlvbnMgZXhlY3V0ZSAiaW5saW5lIiBhbmQgZG8gbm90CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBhbnkgZmlsZXMgaW4gPGZpbGVuYW1lPiR7VH08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBSZWd1bGFyIFB5dGhvbiBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoIHRoZSB1c3VhbAorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2Utc3R5bGUgUHl0aG9uIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSB0YXNrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBjYWxsZWQgZGlyZWN0bHkgYnkgQml0QmFrZSwgYnV0IGNhbiBhbHNvIGJlIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsbHkgZnJvbSBQeXRob24gY29kZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5idWlsZC5leGVjX2Z1bmMoKTwvZmlsZW5hbWU+IGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBiYi5idWlsZC5leGVjX2Z1bmMoIm15X2JpdGJha2Vfc3R5bGVfZnVuY3Rpb24iLCBkKQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLmV4ZWNfZnVuYygpPC9maWxlbmFtZT4gY2FuIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB1c2VkIHRvIHJ1biBzaGVsbCBmdW5jdGlvbnMgZnJvbSBQeXRob24gY29kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBydW4gYSBzaGVsbCBmdW5jdGlvbiBiZWZvcmUgYSBQeXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoaW4gdGhlIHNhbWUgdGFzaywgdGhlbiB5b3UgY2FuIHVzZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50IGhlbHBlciBQeXRob24gZnVuY3Rpb24gdGhhdCBzdGFydHMgYnkgcnVubmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzaGVsbCBmdW5jdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLmV4ZWNfZnVuYygpPC9maWxlbmFtZT4gYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5zIHRoZSBQeXRob24gY29kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIGRldGVjdCBlcnJvcnMgZnJvbSBmdW5jdGlvbnMgZXhlY3V0ZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLmV4ZWNfZnVuYygpPC9maWxlbmFtZT4sIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGNhdGNoIHRoZSA8ZmlsZW5hbWU+YmIuYnVpbGQuRnVuY0ZhaWxlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbnMgaW4gbWV0YWRhdGEgKHJlY2lwZXMgYW5kIGNsYXNzZXMpIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB0aGVtc2VsdmVzIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLkZ1bmNGYWlsZWQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXRoZXIsIDxmaWxlbmFtZT5iYi5idWlsZC5GdW5jRmFpbGVkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdmlld2VkIGFzIGEgZ2VuZXJhbCBpbmRpY2F0b3IgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgZnVuY3Rpb24gZmFpbGVkIGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhbiBleGNlcHRpb24gcmFpc2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmZhdGFsKCk8L2ZpbGVuYW1lPiB3aWxsIGJlIGNhdWdodCBpbnNpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuZXhlY19mdW5jKCk8L2ZpbGVuYW1lPiwgYW5kIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuRnVuY0ZhaWxlZDwvZmlsZW5hbWU+IHdpbGwgYmUgcmFpc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gcmVzcG9uc2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRHVlIHRvIHRoZWlyIHNpbXBsaWNpdHksIHlvdSBzaG91bGQgcHJlZmVyIHJlZ3VsYXIgUHl0aG9uIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgIG92ZXIgQml0QmFrZS1zdHlsZSBQeXRob24gZnVuY3Rpb25zIHVubGVzcyB5b3UgbmVlZCBhIGZlYXR1cmUgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICB0byBCaXRCYWtlLXN0eWxlIFB5dGhvbiBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgUmVndWxhciBQeXRob24gZnVuY3Rpb25zIGluIG1ldGFkYXRhIGFyZSBhIG1vcmUgcmVjZW50IGludmVudGlvbiB0aGFuCisgICAgICAgICAgICAgICAgQml0QmFrZS1zdHlsZSBQeXRob24gZnVuY3Rpb25zLCBhbmQgb2xkZXIgY29kZSB0ZW5kcyB0byB1c2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuZXhlY19mdW5jKCk8L2ZpbGVuYW1lPiBtb3JlIG9mdGVuLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Fub255bW91cy1weXRob24tZnVuY3Rpb25zJz4KKyAgICAgICAgICAgIDx0aXRsZT5Bbm9ueW1vdXMgUHl0aG9uIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gc2V0IHZhcmlhYmxlcyBvciBwZXJmb3JtCisgICAgICAgICAgICAgICAgb3RoZXIgb3BlcmF0aW9ucyBwcm9ncmFtbWF0aWNhbGx5IGR1cmluZyBwYXJzaW5nLgorICAgICAgICAgICAgICAgIFRvIGRvIHRoaXMsIHlvdSBjYW4gZGVmaW5lIHNwZWNpYWwgUHl0aG9uIGZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICBjYWxsZWQgYW5vbnltb3VzIFB5dGhvbiBmdW5jdGlvbnMsIHRoYXQgcnVuIGF0IHRoZQorICAgICAgICAgICAgICAgIGVuZCBvZiBwYXJzaW5nLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbmFsbHkgc2V0cyBhIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIHZhbHVlIG9mICBhbm90aGVyIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHl0aG9uICgpIHsKKyAgICAgICAgIGlmIGQuZ2V0VmFyKCdTT01FVkFSJykgPT0gJ3ZhbHVlJzoKKyAgICAgICAgICAgICBkLnNldFZhcignQU5PVEhFUlZBUicsICd2YWx1ZTInKQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFuIGVxdWl2YWxlbnQgd2F5IHRvIG1hcmsgYSBmdW5jdGlvbiBhcyBhbiBhbm9ueW1vdXMKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyB0byBnaXZlIGl0IHRoZSBuYW1lICJfX2Fub255bW91cyIsIHJhdGhlcgorICAgICAgICAgICAgICAgIHRoYW4gbm8gbmFtZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vbnltb3VzIFB5dGhvbiBmdW5jdGlvbnMgYWx3YXlzIHJ1biBhdCB0aGUgZW5kCisgICAgICAgICAgICAgICAgb2YgcGFyc2luZywgcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGV5IGFyZSBkZWZpbmVkLgorICAgICAgICAgICAgICAgIElmIGEgcmVjaXBlIGNvbnRhaW5zIG1hbnkgYW5vbnltb3VzIGZ1bmN0aW9ucywgdGhleQorICAgICAgICAgICAgICAgIHJ1biBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzbmlwcGV0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHl0aG9uICgpIHsKKyAgICAgICAgIGQuc2V0VmFyKCdGT08nLCAnZm9vIDInKQorICAgICB9CisKKyAgICAgRk9PID0gImZvbyAxIgorCisgICAgIHB5dGhvbiAoKSB7CisgICAgICAgICBkLmFwcGVuZFZhcignQkFSJywgJyBiYXIgMicpCisgICAgIH0KKworICAgICBCQVIgPSAiYmFyIDEiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGlzIGNvbmNlcHR1YWxseSBlcXVpdmFsZW50IHRvIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzbmlwcGV0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRk9PID0gImZvbyAxIgorICAgICBCQVIgPSAiYmFyIDEiCisgICAgIEZPTyA9ICJmb28gMiIKKyAgICAgQkFSICs9ICJiYXIgMiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZPTzwvZmlsZW5hbWU+IGVuZHMgdXAgd2l0aCB0aGUgdmFsdWUgImZvbyAyIiwKKyAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkJBUjwvZmlsZW5hbWU+IHdpdGggdGhlIHZhbHVlICJiYXIgMSBiYXIgMiIuCisgICAgICAgICAgICAgICAgSnVzdCBhcyBpbiB0aGUgc2Vjb25kIHNuaXBwZXQsIHRoZSB2YWx1ZXMgc2V0IGZvciB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgd2l0aGluIHRoZSBhbm9ueW1vdXMgZnVuY3Rpb25zIGJlY29tZSBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICB0byB0YXNrcywgd2hpY2ggYWx3YXlzIHJ1biBhZnRlciBwYXJzaW5nLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPdmVycmlkZXMgYW5kIG92ZXJyaWRlLXN0eWxlIG9wZXJhdG9ycyBzdWNoIGFzCisgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4iIGFyZSBhcHBsaWVkIGJlZm9yZQorICAgICAgICAgICAgICAgIGFub255bW91cyBmdW5jdGlvbnMgcnVuLgorICAgICAgICAgICAgICAgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgPGZpbGVuYW1lPkZPTzwvZmlsZW5hbWU+IGVuZHMKKyAgICAgICAgICAgICAgICB1cCB3aXRoIHRoZSB2YWx1ZSAiZm9vIGZyb20gYW5vbnltb3VzIjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZPTyA9ICJmb28iCisgICAgIEZPT19hcHBlbmQgPSAiIGZyb20gb3V0c2lkZSIKKworICAgICBweXRob24gKCkgeworICAgICAgICAgZC5zZXRWYXIoIkZPTyIsICJmb28gZnJvbSBhbm9ueW1vdXMiKQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEZvciBtZXRob2RzIHlvdSBjYW4gdXNlIHdpdGggYW5vbnltb3VzIFB5dGhvbiBmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdmdW5jdGlvbnMteW91LWNhbi1jYWxsLWZyb20td2l0aGluLXB5dGhvbic+RnVuY3Rpb25zIFlvdSBDYW4gQ2FsbCBGcm9tIFdpdGhpbiBQeXRob248L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgRm9yIGEgZGlmZmVyZW50IG1ldGhvZCB0byBydW4gUHl0aG9uIGNvZGUgZHVyaW5nIHBhcnNpbmcsCisgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbmxpbmUtcHl0aG9uLXZhcmlhYmxlLWV4cGFuc2lvbic+SW5saW5lIFB5dGhvbiBWYXJpYWJsZSBFeHBhbnNpb248L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZmxleGlibGUtaW5oZXJpdGFuY2UtZm9yLWNsYXNzLWZ1bmN0aW9ucyc+CisgICAgICAgICAgICA8dGl0bGU+RmxleGlibGUgSW5oZXJpdGFuY2UgZm9yIENsYXNzIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRocm91Z2ggY29kaW5nIHRlY2huaXF1ZXMgYW5kIHRoZSB1c2Ugb2YKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhQT1JUX0ZVTkNUSU9OUzwvZmlsZW5hbWU+LCBCaXRCYWtlIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgZXhwb3J0aW5nIGEgZnVuY3Rpb24gZnJvbSBhIGNsYXNzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBjbGFzcyBmdW5jdGlvbiBhcHBlYXJzIGFzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAgICAgb2YgdGhlIGZ1bmN0aW9uLCBidXQgY2FuIHN0aWxsIGJlIGNhbGxlZCBpZiBhIHJlY2lwZQorICAgICAgICAgICAgICAgIGluaGVyaXRpbmcgdGhlIGNsYXNzIG5lZWRzIHRvIGRlZmluZSBpdHMgb3duIHZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHVuZGVyc3RhbmQgdGhlIGJlbmVmaXRzIG9mIHRoaXMgZmVhdHVyZSwgY29uc2lkZXIKKyAgICAgICAgICAgICAgICB0aGUgYmFzaWMgc2NlbmFyaW8gd2hlcmUgYSBjbGFzcyBkZWZpbmVzIGEgdGFzayBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGFuZCB5b3VyIHJlY2lwZSBpbmhlcml0cyB0aGUgY2xhc3MuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBiYXNpYyBzY2VuYXJpbywgeW91ciByZWNpcGUgaW5oZXJpdHMgdGhlIHRhc2sKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyBkZWZpbmVkIGluIHRoZSBjbGFzcy4KKyAgICAgICAgICAgICAgICBJZiBkZXNpcmVkLCB5b3VyIHJlY2lwZSBjYW4gYWRkIHRvIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZSAiX3ByZXBlbmQiIG9yICJfYXBwZW5kIiBvcGVyYXRpb25zCisgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LCBvciBpdCBjYW4gcmVkZWZpbmUgdGhlIGZ1bmN0aW9uIGNvbXBsZXRlbHkuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgaXQgcmVkZWZpbmVzIHRoZSBmdW5jdGlvbiwgdGhlcmUgaXMKKyAgICAgICAgICAgICAgICBubyBtZWFucyAgZm9yIGl0IHRvIGNhbGwgdGhlIGNsYXNzIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5FWFBPUlRfRlVOQ1RJT05TPC9maWxlbmFtZT4gcHJvdmlkZXMgYSBtZWNoYW5pc20KKyAgICAgICAgICAgICAgICB0aGF0IGVuYWJsZXMgdGhlIHJlY2lwZSdzIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIHRvIGNhbGwKKyAgICAgICAgICAgICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIG1ha2UgdXNlIG9mIHRoaXMgdGVjaG5pcXVlLCB5b3UgbmVlZCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgdGhpbmdzIGluIHBsYWNlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjbGFzcyBuZWVkcyB0byBkZWZpbmUgdGhlIGZ1bmN0aW9uIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5jbGFzc25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT5fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZnVuY3Rpb25uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIGNsYXNzIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXIuYmJjbGFzczwvZmlsZW5hbWU+IGFuZCBhIGZ1bmN0aW9uIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZm9vPC9maWxlbmFtZT4sIHRoZSBjbGFzcyBtdXN0IGRlZmluZSB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJhcl9kb19mb28KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgbmVlZHMgdG8gY29udGFpbiB0aGUgPGZpbGVuYW1lPkVYUE9SVF9GVU5DVElPTlM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVYUE9SVF9GVU5DVElPTlMgPHJlcGxhY2VhYmxlPmZ1bmN0aW9ubmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY29udGludWluZyB3aXRoIHRoZSBzYW1lIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGluIHRoZSA8ZmlsZW5hbWU+YmFyLmJiY2xhc3M8L2ZpbGVuYW1lPiB3b3VsZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRVhQT1JUX0ZVTkNUSU9OUyBkb19mb28KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBjYWxsIHRoZSBmdW5jdGlvbiBhcHByb3ByaWF0ZWx5IGZyb20gd2l0aGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgc2FtZSBleGFtcGxlLCBpZiB5b3VyIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gY2FsbCB0aGUgY2xhc3MgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBzaG91bGQgY2FsbCA8ZmlsZW5hbWU+YmFyX2RvX2ZvbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1pbmcgPGZpbGVuYW1lPmRvX2ZvbzwvZmlsZW5hbWU+IHdhcyBhIHNoZWxsIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkVYUE9SVF9GVU5DVElPTlM8L2ZpbGVuYW1lPiB3YXMgdXNlZCBhcyBhYm92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUncyBmdW5jdGlvbiBjb3VsZCBjb25kaXRpb25hbGx5IGNhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19mb28oKSB7CisgICAgICAgICAgICAgaWYgWyBzb21lY29uZGl0aW9uIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICBiYXJfZG9fZm9vCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIyBEbyBzb21ldGhpbmcgZWxzZQorICAgICAgICAgICAgIGZpCisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGNhbGwgeW91ciBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiBhcyBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIHJlY2lwZSwgY2FsbCBpdCBhcyA8ZmlsZW5hbWU+ZG9fZm9vPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBXaXRoIHRoZXNlIGNvbmRpdGlvbnMgbWV0LCB5b3VyIHNpbmdsZSByZWNpcGUKKyAgICAgICAgICAgICAgICBjYW4gZnJlZWx5IGNob29zZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGFzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGZpbGUgYW5kIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpbiB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHNldCB1cCB0aGVzZSBjb25kaXRpb25zLCB5b3UgYXJlIGxpbWl0ZWQgdG8gdXNpbmcgb25lIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgb3IgdGhlIG90aGVyLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Rhc2tzJz4KKyAgICAgICAgPHRpdGxlPlRhc2tzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRhc2tzIGFyZSBCaXRCYWtlIGV4ZWN1dGlvbiB1bml0cyB0aGF0IG1ha2UgdXAgdGhlCisgICAgICAgICAgICBzdGVwcyB0aGF0IEJpdEJha2UgY2FuIHJ1biBmb3IgYSBnaXZlbiByZWNpcGUuCisgICAgICAgICAgICBUYXNrcyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gcmVjaXBlcyBhbmQgY2xhc3NlcworICAgICAgICAgICAgKGkuZS4gaW4gPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzIGFuZCBmaWxlcworICAgICAgICAgICAgaW5jbHVkZWQgb3IgaW5oZXJpdGVkIGZyb20gPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlcykuCisgICAgICAgICAgICBCeSBjb252ZW50aW9uLCB0YXNrcyBoYXZlIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCAiZG9fIi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdwcm9tb3RpbmctYS1mdW5jdGlvbi10by1hLXRhc2snPgorICAgICAgICAgICAgPHRpdGxlPlByb21vdGluZyBhIEZ1bmN0aW9uIHRvIGEgVGFzazwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRhc2tzIGFyZSBlaXRoZXIKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzaGVsbC1mdW5jdGlvbnMnPnNoZWxsIGZ1bmN0aW9uczwvbGluaz4gb3IKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXN0eWxlLXB5dGhvbi1mdW5jdGlvbnMnPkJpdEJha2Utc3R5bGUgUHl0aG9uIGZ1bmN0aW9uczwvbGluaz4KKyAgICAgICAgICAgICAgICB0aGF0IGhhdmUgYmVlbiBwcm9tb3RlZCB0byB0YXNrcyBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWRkdGFzazwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hZGR0YXNrPC9maWxlbmFtZT4gY29tbWFuZCBjYW4gYWxzbworICAgICAgICAgICAgICAgIG9wdGlvbmFsbHkgZGVzY3JpYmUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlCisgICAgICAgICAgICAgICAgdGFzayBhbmQgb3RoZXIgdGFza3MuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGRlZmluZSBhIHRhc2sKKyAgICAgICAgICAgICAgICBhbmQgZGVjbGFyZSBzb21lIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHB5dGhvbiBkb19wcmludGRhdGUgKCkgeworICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgIHByaW50IHRpbWUuc3RyZnRpbWUoJyVZJW0lZCcsIHRpbWUuZ210aW1lKCkpCisgICAgIH0KKyAgICAgYWRkdGFzayBwcmludGRhdGUgYWZ0ZXIgZG9fZmV0Y2ggYmVmb3JlIGRvX2J1aWxkCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCB0byA8ZmlsZW5hbWU+YWRkdGFzazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIHByb21vdGUgdG8KKyAgICAgICAgICAgICAgICBhIHRhc2suCisgICAgICAgICAgICAgICAgSWYgdGhlIG5hbWUgZG9lcyBub3Qgc3RhcnQgd2l0aCAiZG9fIiwgImRvXyIgaXMKKyAgICAgICAgICAgICAgICBpbXBsaWNpdGx5IGFkZGVkLCB3aGljaCBlbmZvcmNlcyB0aGUgY29udmVudGlvbiB0aGF0CisgICAgICAgICAgICAgICAgYWxsIHRhc2sgbmFtZXMgc3RhcnQgd2l0aCAiZG9fIi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmludGRhdGU8L2ZpbGVuYW1lPiB0YXNrIGJlY29tZXMgYQorICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgb2YgdGhlIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGFzaywgd2hpY2ggaXMgdGhlIGRlZmF1bHQgdGFzayAoaS5lLiB0aGUgdGFzayBydW4gYnkKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHVubGVzcworICAgICAgICAgICAgICAgIGFub3RoZXIgdGFzayBpcyBzcGVjaWZpZWQgZXhwbGljaXRseSkuCisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgPGZpbGVuYW1lPmRvX3ByaW50ZGF0ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGFzayBiZWNvbWVzIGRlcGVuZGVudCB1cG9uIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgUnVubmluZyB0aGUgPGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgIHJlc3VsdHMgaW4gdGhlIDxmaWxlbmFtZT5kb19wcmludGRhdGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2sgcnVubmluZyBmaXJzdC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHRyeSBvdXQgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHlvdSBtaWdodCBzZWUgdGhhdAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRvX3ByaW50ZGF0ZTwvZmlsZW5hbWU+IHRhc2sgaXMgb25seSBydW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IHRpbWUgeW91IGJ1aWxkIHRoZSByZWNpcGUgd2l0aAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGJlY2F1c2UgQml0QmFrZSBjb25zaWRlcnMgdGhlIHRhc2sgInVwLXRvLWRhdGUiCisgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoYXQgaW5pdGlhbCBydW4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZvcmNlIHRoZSB0YXNrIHRvIGFsd2F5cyBiZSByZXJ1biBmb3IKKyAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGF0aW9uIHB1cnBvc2VzLCB5b3UgY2FuIG1ha2UgQml0QmFrZSBhbHdheXMKKyAgICAgICAgICAgICAgICAgICAgY29uc2lkZXIgdGhlIHRhc2sgIm91dC1vZi1kYXRlIiBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPls8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+bm9zdGFtcDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT5dPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZmxhZywgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19wcmludGRhdGVbbm9zdGFtcF0gPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZXhwbGljaXRseSBydW4gdGhlIHRhc2sgYW5kIHByb3ZpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbiBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4gLWMgcHJpbnRkYXRlIC1mCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBtYW51YWxseSBzZWxlY3RpbmcgYSB0YXNrIHRvIHJ1biB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Jm5ic3A7PGZpbGVuYW1lPi1jPC9maWxlbmFtZT4mbmJzcDs8cmVwbGFjZWFibGU+dGFzazwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHlvdSBjYW4gb21pdCB0aGUgImRvXyIgcHJlZml4IGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHRhc2sgbmFtZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBtaWdodCB3b25kZXIgYWJvdXQgdGhlIHByYWN0aWNhbCBlZmZlY3RzIG9mIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFkZHRhc2s8L2ZpbGVuYW1lPiB3aXRob3V0IHNwZWNpZnlpbmcgYW55CisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGFzIGlzIGRvbmUgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYWRkdGFzayBwcmludGRhdGUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCBhc3N1bWluZyBkZXBlbmRlbmNpZXMgaGF2ZSBub3QgYmVlbgorICAgICAgICAgICAgICAgIGFkZGVkIHRocm91Z2ggc29tZSBvdGhlciBtZWFucywgdGhlIG9ubHkgd2F5IHRvIHJ1bgorICAgICAgICAgICAgICAgIHRoZSB0YXNrIGlzIGJ5IGV4cGxpY2l0bHkgc2VsZWN0aW5nIGl0IHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Jm5ic3A7PGZpbGVuYW1lPi1jIHByaW50ZGF0ZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19saXN0dGFza3M8L2ZpbGVuYW1lPiB0YXNrIHRvIGxpc3QgYWxsIHRhc2tzCisgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiBhIHJlY2lwZSBhcyBzaG93biBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+IC1jIGxpc3R0YXNrcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0YXNrIGRlcGVuZGVuY2llcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXBlbmRlbmNpZXMnPkRlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd2YXJpYWJsZS1mbGFncyc+VmFyaWFibGUgRmxhZ3M8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlIGZsYWdzIHlvdSBjYW4gdXNlIHdpdGgKKyAgICAgICAgICAgICAgICB0YXNrcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZWxldGluZy1hLXRhc2snPgorICAgICAgICAgICAgPHRpdGxlPkRlbGV0aW5nIGEgVGFzazwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIHdlbGwgYXMgYmVpbmcgYWJsZSB0byBhZGQgdGFza3MsIHlvdSBjYW4gZGVsZXRlIHRoZW0uCisgICAgICAgICAgICAgICAgU2ltcGx5IHVzZSB0aGUgPGZpbGVuYW1lPmRlbHRhc2s8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgZGVsZXRlIGEgdGFzay4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gZGVsZXRlIHRoZSBleGFtcGxlIHRhc2sgdXNlZCBpbiB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICBzZWN0aW9ucywgeW91IHdvdWxkIHVzZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRlbHRhc2sgcHJpbnRkYXRlCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIElmIHlvdSBkZWxldGUgYSB0YXNrIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGVsdGFzazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZCBhbmQgdGhlIHRhc2sgaGFzIGRlcGVuZGVuY2llcywgdGhlIGRlcGVuZGVuY2llcyBhcmUKKyAgICAgICAgICAgICAgICBub3QgcmVjb25uZWN0ZWQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgdGhyZWUgdGFza3MgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fYTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG9fYjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCA8ZmlsZW5hbWU+ZG9fYzwvZmlsZW5hbWU+IGlzIGRlcGVuZGVudCBvbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19iPC9maWxlbmFtZT4sIHdoaWNoIGluIHR1cm4gaXMgZGVwZW5kZW50IG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2E8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBHaXZlbiB0aGlzIHNjZW5hcmlvLCBpZiB5b3UgdXNlIDxmaWxlbmFtZT5kZWx0YXNrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0byBkZWxldGUgPGZpbGVuYW1lPmRvX2I8L2ZpbGVuYW1lPiwgdGhlIGltcGxpY2l0IGRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAgYmV0d2VlbiA8ZmlsZW5hbWU+ZG9fYzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19hPC9maWxlbmFtZT4gdGhyb3VnaCA8ZmlsZW5hbWU+ZG9fYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgbm8gbG9uZ2VyIGV4aXN0cywgYW5kIDxmaWxlbmFtZT5kb19jPC9maWxlbmFtZT4gZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgYXJlIG5vdCB1cGRhdGVkIHRvIGluY2x1ZGUgPGZpbGVuYW1lPmRvX2E8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaHVzLCA8ZmlsZW5hbWU+ZG9fYzwvZmlsZW5hbWU+IGlzIGZyZWUgdG8gcnVuIGJlZm9yZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19hPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGRlcGVuZGVuY2llcyBzdWNoIGFzIHRoZXNlIHRvIHJlbWFpbiBpbnRhY3QsIHVzZQorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+W25vZXhlY108L2ZpbGVuYW1lPiB2YXJmbGFnIHRvIGRpc2FibGUgdGhlIHRhc2sKKyAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGVsdGFzazwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KKyAgICAgICAgICAgICAgICBkZWxldGUgaXQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19iW25vZXhlY10gPSAiMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncGFzc2luZy1pbmZvcm1hdGlvbi1pbnRvLXRoZS1idWlsZC10YXNrLWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5QYXNzaW5nIEluZm9ybWF0aW9uIEludG8gdGhlIEJ1aWxkIFRhc2sgRW52aXJvbm1lbnQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHJ1bm5pbmcgYSB0YXNrLCBCaXRCYWtlIHRpZ2h0bHkgY29udHJvbHMgdGhlIHNoZWxsIGV4ZWN1dGlvbgorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IG9mIHRoZSBidWlsZCB0YXNrcyB0byBtYWtlCisgICAgICAgICAgICAgICAgc3VyZSB1bndhbnRlZCBjb250YW1pbmF0aW9uIGZyb20gdGhlIGJ1aWxkIG1hY2hpbmUgY2Fubm90CisgICAgICAgICAgICAgICAgaW5mbHVlbmNlIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgQml0QmFrZSBjbGVhbnMgdGhlIGVudmlyb25tZW50IHRvIGluY2x1ZGUgb25seSB0aG9zZQorICAgICAgICAgICAgICAgICAgICB0aGluZ3MgZXhwb3J0ZWQgb3IgbGlzdGVkIGluIGl0cyB3aGl0ZWxpc3QgdG8gZW5zdXJlIHRoYXQgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGlzIHJlcHJvZHVjaWJsZSBhbmQgY29uc2lzdGVudC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcmV2ZW50IHRoaXMgImNsZWFuaW5nIiBieSBzZXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfUFJFU0VSVkVfRU5WJz48ZmlsZW5hbWU+QkJfUFJFU0VSVkVfRU5WPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGlmIHlvdSBkbyB3YW50IHNvbWV0aGluZyB0byBnZXQgcGFzc2VkIGludG8gdGhlCisgICAgICAgICAgICAgICAgYnVpbGQgdGFzayBlbnZpcm9ubWVudCwgeW91IG11c3QgdGFrZSB0aGVzZSB0d28gc3RlcHM6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUZWxsIEJpdEJha2UgdG8gbG9hZCB3aGF0IHlvdSB3YW50IGZyb20gdGhlIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkYXRhc3RvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHNvIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfRU5WX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX0VOVl9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX0VOVl9FWFRSQVdISVRFJz48ZmlsZW5hbWU+QkJfRU5WX0VYVFJBV0hJVEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhc3N1bWUgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgYnVpbGQgc3lzdGVtIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2luZyB5b3VyIDxmaWxlbmFtZT4kSE9NRS8uY2NhY2hlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCAid2hpdGVsaXN0cyIgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q0NBQ0hFX0RJUjwvZmlsZW5hbWU+IGNhdXNpbmcgQml0QmFrZSB0byBhbGxvdyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbnRvIHRoZSBkYXRhc3RvcmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBCQl9FTlZfRVhUUkFXSElURT0iJEJCX0VOVl9FWFRSQVdISVRFIENDQUNIRV9ESVIiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRlbGwgQml0QmFrZSB0byBleHBvcnQgd2hhdCB5b3UgaGF2ZSBsb2FkZWQgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzdG9yZSB0byB0aGUgdGFzayBlbnZpcm9ubWVudCBvZiBldmVyeSBydW5uaW5nIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBMb2FkaW5nIHNvbWV0aGluZyBmcm9tIHRoZSBlbnZpcm9ubWVudCBpbnRvIHRoZSBkYXRhc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2aW91cyBzdGVwKSBvbmx5IG1ha2VzIGl0IGF2YWlsYWJsZSBpbiB0aGUgZGF0YXN0b3JlLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gZXhwb3J0IGl0IHRvIHRoZSB0YXNrIGVudmlyb25tZW50IG9mIGV2ZXJ5IHJ1bm5pbmcgdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBhIGNvbW1hbmQgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nIGluIHlvdXIgbG9jYWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IG9yIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBDQ0FDSEVfRElSCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHNpZGUgZWZmZWN0IG9mIHRoZSBwcmV2aW91cyBzdGVwcyBpcyB0aGF0IEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzIHRoZSB2YXJpYWJsZSBhcyBhIGRlcGVuZGVuY3kgb2YgdGhlIGJ1aWxkIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGluZ3MgbGlrZSB0aGUgc2V0c2NlbmUgY2hlY2tzdW1zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGRvaW5nIHNvIHJlc3VsdHMgaW4gdW5uZWNlc3NhcnkgcmVidWlsZHMgb2YgdGFza3MsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QgdGhlIHZhcmlhYmxlIHNvIHRoYXQgdGhlIHNldHNjZW5lIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzIHRoZSBkZXBlbmRlbmN5IHdoZW4gaXQgY3JlYXRlcyBjaGVja3N1bXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzLCBpdCBpcyB1c2VmdWwgdG8gYmUgYWJsZSB0byBvYnRhaW4gaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICBmcm9tIHRoZSBvcmlnaW5hbCBleGVjdXRpb24gZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgQml0QmFrZSBzYXZlcyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGVudmlyb25tZW50IGludG8KKyAgICAgICAgICAgICAgICBhIHNwZWNpYWwgdmFyaWFibGUgbmFtZWQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfT1JJR0VOVic+PGZpbGVuYW1lPkJCX09SSUdFTlY8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+QkJfT1JJR0VOVjwvZmlsZW5hbWU+IHZhcmlhYmxlIHJldHVybnMgYSBkYXRhc3RvcmUKKyAgICAgICAgICAgICAgICBvYmplY3QgdGhhdCBjYW4gYmUgcXVlcmllZCB1c2luZyB0aGUgc3RhbmRhcmQgZGF0YXN0b3JlIG9wZXJhdG9ycworICAgICAgICAgICAgICAgIHN1Y2ggYXMgPGZpbGVuYW1lPmdldFZhcigsIEZhbHNlKTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBkYXRhc3RvcmUgb2JqZWN0IGlzIHVzZWZ1bCwgZm9yIGV4YW1wbGUsIHRvIGZpbmQgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1BMQVk8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBvcmlnZW52ID0gZC5nZXRWYXIoIkJCX09SSUdFTlYiLCBGYWxzZSkKKyAgICAgYmFyID0gb3JpZ2Vudi5nZXRWYXIoIkJBUiIsIEZhbHNlKQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSByZXR1cm5zIDxmaWxlbmFtZT5CQVI8L2ZpbGVuYW1lPiBmcm9tIHRoZSBvcmlnaW5hbAorICAgICAgICAgICAgICAgIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd2YXJpYWJsZS1mbGFncyc+CisgICAgICAgIDx0aXRsZT5WYXJpYWJsZSBGbGFnczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBWYXJpYWJsZSBmbGFncyAodmFyZmxhZ3MpIGhlbHAgY29udHJvbCBhIHRhc2sncyBmdW5jdGlvbmFsaXR5CisgICAgICAgICAgICBhbmQgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgQml0QmFrZSByZWFkcyBhbmQgd3JpdGVzIHZhcmZsYWdzIHRvIHRoZSBkYXRhc3RvcmUgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgY29tbWFuZCBmb3JtczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPnZhcmlhYmxlPC9yZXBsYWNlYWJsZT4gPSBkLmdldFZhckZsYWdzKCI8cmVwbGFjZWFibGU+dmFyaWFibGU8L3JlcGxhY2VhYmxlPiIpCisgICAgIHNlbGYuZC5zZXRWYXJGbGFncygiRk9PIiwgeyJmdW5jIjogVHJ1ZX0pCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4gd29ya2luZyB3aXRoIHZhcmZsYWdzLCB0aGUgc2FtZSBzeW50YXgsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZgorICAgICAgICAgICAgb3ZlcnJpZGVzLCBhcHBsaWVzLgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBjYW4gc2V0LCBhcHBlbmQsIGFuZCBwcmVwZW5kIHZhcmZsYWdzIGp1c3QgbGlrZQorICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ZhcmlhYmxlLWZsYWctc3ludGF4Jz5WYXJpYWJsZSBGbGFnIFN5bnRheDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGZvciBkZXRhaWxzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIGhhcyBhIGRlZmluZWQgc2V0IG9mIHZhcmZsYWdzIGF2YWlsYWJsZSBmb3IgcmVjaXBlcyBhbmQKKyAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICBUYXNrcyBzdXBwb3J0IGEgbnVtYmVyIG9mIHRoZXNlIGZsYWdzIHdoaWNoIGNvbnRyb2wgdmFyaW91cworICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFzazoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W2NsZWFuZGlyc108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBFbXB0eSBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFzayBydW5zLgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyB0aGF0IGFscmVhZHkgZXhpc3QgYXJlIHJlbW92ZWQgYW5kIHJlY3JlYXRlZAorICAgICAgICAgICAgICAgICAgICB0byBlbXB0eSB0aGVtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bZGVwZW5kc108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9scyBpbnRlci10YXNrIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naW50ZXItdGFzay1kZXBlbmRlbmNpZXMnPkludGVyLVRhc2sgRGVwZW5kZW5jaWVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W2RlcHRhc2tdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgdGFzayBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnVpbGQtZGVwZW5kZW5jaWVzJz5CdWlsZCBEZXBlbmRlbmNpZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bZGlyc108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSB0aGUgdGFzayBydW5zLgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyB0aGF0IGFscmVhZHkgZXhpc3QgYXJlIGxlZnQgYXMgaXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXN0IGRpcmVjdG9yeSBsaXN0ZWQgaXMgdXNlZCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPltsb2NrZmlsZXNdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBvbmUgb3IgbW9yZSBsb2NrZmlsZXMgdG8gbG9jayB3aGlsZSB0aGUgdGFzaworICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZXMuCisgICAgICAgICAgICAgICAgICAgICBPbmx5IG9uZSB0YXNrIG1heSBob2xkIGEgbG9ja2ZpbGUsIGFuZCBhbnkgdGFzayB0aGF0CisgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0cyB0byBsb2NrIGFuIGFscmVhZHkgbG9ja2VkIGZpbGUgd2lsbCBibG9jayB1bnRpbAorICAgICAgICAgICAgICAgICAgICAgdGhlIGxvY2sgaXMgcmVsZWFzZWQuCisgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIGZsYWcgdG8gYWNjb21wbGlzaCBtdXR1YWwKKyAgICAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W25vZXhlY108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNldCB0byAiMSIsIG1hcmtzIHRoZSB0YXNrIGFzIGJlaW5nIGVtcHR5LCB3aXRoCisgICAgICAgICAgICAgICAgICAgIG5vIGV4ZWN1dGlvbiByZXF1aXJlZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5bbm9leGVjXTwvZmlsZW5hbWU+IGZsYWcgdG8gc2V0IHVwCisgICAgICAgICAgICAgICAgICAgIHRhc2tzIGFzIGRlcGVuZGVuY3kgcGxhY2Vob2xkZXJzLCBvciB0byBkaXNhYmxlIHRhc2tzIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgZWxzZXdoZXJlIHRoYXQgYXJlIG5vdCBuZWVkZWQgaW4gYSBwYXJ0aWN1bGFyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W25vc3RhbXBdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzZXQgdG8gIjEiLCB0ZWxscyBCaXRCYWtlIHRvIG5vdCBnZW5lcmF0ZSBhIHN0YW1wCisgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIGEgdGFzaywgd2hpY2ggaW1wbGllcyB0aGUgdGFzayBzaG91bGQgYWx3YXlzCisgICAgICAgICAgICAgICAgICAgIGJlIGV4ZWN1dGVkLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Q2F1dGlvbjwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgdGFzayB0aGF0IGRlcGVuZHMgKHBvc3NpYmx5IGluZGlyZWN0bHkpIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5bbm9zdGFtcF08L2ZpbGVuYW1lPiB0YXNrIHdpbGwgYWx3YXlzIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlZCBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjYW4gY2F1c2UgdW5uZWNlc3NhcnkgcmVidWlsZGluZyBpZiB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgY2FyZWZ1bC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bbnVtYmVyX3RocmVhZHNdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTGltaXRzIHRhc2tzIHRvIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB0aHJlYWRzCisgICAgICAgICAgICAgICAgICAgIGR1cmluZyBleGVjdXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyZmxhZyBpcyB1c2VmdWwgd2hlbiB5b3VyIGJ1aWxkIGhvc3QgaGFzIGEgbGFyZ2UgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIG9mIGNvcmVzIGJ1dCBjZXJ0YWluIHRhc2tzIG5lZWQgdG8gYmUgcmF0ZS1saW1pdGVkIGR1ZSB0byB2YXJpb3VzCisgICAgICAgICAgICAgICAgICAgIGtpbmRzIG9mIHJlc291cmNlIGNvbnN0cmFpbnRzIChlLmcuIHRvIGF2b2lkIG5ldHdvcmsgdGhyb3R0bGluZykuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5udW1iZXJfdGhyZWFkczwvZmlsZW5hbWU+IHdvcmtzIHNpbWlsYXJseSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX05VTUJFUl9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYnV0IGlzIHRhc2stc3BlY2lmaWMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNldCB0aGUgdmFsdWUgZ2xvYmFsbHkuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIG1ha2VzIHN1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+IHRhc2sgdXNlcyBubyBtb3JlIHRoYW4gdHdvCisgICAgICAgICAgICAgICAgICAgIHNpbXVsdGFuZW91cyBleGVjdXRpb24gdGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19mZXRjaFtudW1iZXJfdGhyZWFkc10gPSAiMiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+V2FybmluZ3M8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhlIHZhcmZsYWcgaW4gaW5kaXZpZHVhbCByZWNpcGVzIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIGdsb2JhbGx5IGNhbiByZXN1bHQgaW4gdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSB2YXJmbGFnIHRvIGEgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSB1c2VkIGluIHRoZSA8ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjYXVzZXMgPGZpbGVuYW1lPm51bWJlcl90aHJlYWRzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaGF2ZSBubyBlZmZlY3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W3Bvc3RmdW5jc108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bcHJlZnVuY3NdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlIHRhc2sgZXhlY3V0ZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPltyZGVwZW5kc108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9scyBpbnRlci10YXNrIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ludGVyLXRhc2stZGVwZW5kZW5jaWVzJz5JbnRlci1UYXNrIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPltyZGVwdGFza108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9scyB0YXNrIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3J1bnRpbWUtZGVwZW5kZW5jaWVzJz5SdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPltyZWNpZGVwdGFza108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNldCBpbiBjb25qdW5jdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNyZGVwdGFzazwvZmlsZW5hbWU+LCBzcGVjaWZpZXMgYSB0YXNrIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGluc3BlY3RlZCBmb3IgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPltyZWNyZGVwdGFza108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9scyB0YXNrIHJlY3Vyc2l2ZSBydW50aW1lIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWN1cnNpdmUtZGVwZW5kZW5jaWVzJz5SZWN1cnNpdmUgRGVwZW5kZW5jaWVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W3N0YW1wLWV4dHJhLWluZm9dPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRXh0cmEgc3RhbXAgaW5mb3JtYXRpb24gdG8gYXBwZW5kIHRvIHRoZSB0YXNrJ3Mgc3RhbXAuCisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIE9wZW5FbWJlZGRlZCB1c2VzIHRoaXMgZmxhZyB0byBhbGxvdworICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bdW1hc2tdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVtYXNrIHRvIHJ1biB0aGUgdGFzayB1bmRlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2V2ZXJhbCB2YXJmbGFncyBhcmUgdXNlZnVsIGZvciBjb250cm9sbGluZyBob3cgc2lnbmF0dXJlcyBhcmUKKyAgICAgICAgICAgIGNhbGN1bGF0ZWQgZm9yIHZhcmlhYmxlcy4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgcHJvY2Vzcywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NoZWNrc3Vtcyc+Q2hlY2tzdW1zIChTaWduYXR1cmVzKTwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bdmFyZGVwc108L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0byBhZGQgdG8gYSB2YXJpYWJsZSdzIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIGl0cyBzaWduYXR1cmUuCisgICAgICAgICAgICAgICAgICAgIEFkZGluZyB2YXJpYWJsZXMgdG8gdGhpcyBsaXN0IGlzIHVzZWZ1bCwgZm9yIGV4YW1wbGUsIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgYSBmdW5jdGlvbiByZWZlcnMgdG8gYSB2YXJpYWJsZSBpbiBhIG1hbm5lciB0aGF0CisgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IGFsbG93IEJpdEJha2UgdG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgdmFyaWFibGUgaXMgcmVmZXJyZWQgdG8uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPlt2YXJkZXBzZXhjbHVkZV08L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBhIHZhcmlhYmxlJ3MgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcHVycG9zZXMgb2YgY2FsY3VsYXRpbmcgaXRzIHNpZ25hdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W3ZhcmRlcHZhbHVlXTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHNldCwgaW5zdHJ1Y3RzIEJpdEJha2UgdG8gaWdub3JlIHRoZSBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGFuZCBpbnN0ZWFkIHVzZSB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHZhcmlhYmxlJ3Mgc2lnbmF0dXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5bdmFyZGVwdmFsdWVleGNsdWRlXTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIHBpcGUtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncyB0byBleGNsdWRlCisgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHZhcmlhYmxlJ3MgdmFsdWUgd2hlbiBjYWxjdWxhdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUncyBzaWduYXR1cmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZXZlbnRzJz4KKyAgICAgICAgPHRpdGxlPkV2ZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIGFsbG93cyBpbnN0YWxsYXRpb24gb2YgZXZlbnQgaGFuZGxlcnMgd2l0aGluIHJlY2lwZQorICAgICAgICAgICAgYW5kIGNsYXNzIGZpbGVzLgorICAgICAgICAgICAgRXZlbnRzIGFyZSB0cmlnZ2VyZWQgYXQgY2VydGFpbiBwb2ludHMgZHVyaW5nIG9wZXJhdGlvbiwgc3VjaAorICAgICAgICAgICAgYXMgdGhlIGJlZ2lubmluZyBvZiBvcGVyYXRpb24gYWdhaW5zdCBhIGdpdmVuIHJlY2lwZQorICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiksIHRoZSBzdGFydCBvZiBhIGdpdmVuIHRhc2ssCisgICAgICAgICAgICBhIHRhc2sgZmFpbHVyZSwgYSB0YXNrIHN1Y2Nlc3MsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgIFRoZSBpbnRlbnQgaXMgdG8gbWFrZSBpdCBlYXN5IHRvIGRvIHRoaW5ncyBsaWtlIGVtYWlsCisgICAgICAgICAgICBub3RpZmljYXRpb24gb24gYnVpbGQgZmFpbHVyZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGV2ZW50IGhhbmRsZXIgdGhhdCBwcmludHMgdGhlIG5hbWUKKyAgICAgICAgICAgIG9mIHRoZSBldmVudCBhbmQgdGhlIGNvbnRlbnQgb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRTwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBhZGRoYW5kbGVyIG15Y2xhc3NfZXZlbnRoYW5kbGVyCisgICAgIHB5dGhvbiBteWNsYXNzX2V2ZW50aGFuZGxlcigpIHsKKyAgICAgICAgIGZyb20gYmIuZXZlbnQgaW1wb3J0IGdldE5hbWUKKyAgICAgICAgIHByaW50KCJUaGUgbmFtZSBvZiB0aGUgRXZlbnQgaXMgJXMiICUgZ2V0TmFtZShlKSkKKyAgICAgICAgIHByaW50KCJUaGUgZmlsZSB3ZSBydW4gZm9yIGlzICVzIiAlIGQuZ2V0VmFyKCdGSUxFJykpCisgICAgIH0KKyAgICAgbXljbGFzc19ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5CdWlsZFN0YXJ0ZWQgYmIuZXZlbnQuQnVpbGRDb21wbGV0ZWQiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgYW4gZXZlbnRtYXNrIGhhcyBiZWVuIHNldCBzbyB0aGF0CisgICAgICAgICAgICB0aGUgaGFuZGxlciBvbmx5IHNlZXMgdGhlICJCdWlsZFN0YXJ0ZWQiIGFuZCAiQnVpbGRDb21wbGV0ZWQiCisgICAgICAgICAgICBldmVudHMuCisgICAgICAgICAgICBUaGlzIGV2ZW50IGhhbmRsZXIgZ2V0cyBjYWxsZWQgZXZlcnkgdGltZSBhbiBldmVudCBtYXRjaGluZworICAgICAgICAgICAgdGhlIGV2ZW50bWFzayBpcyB0cmlnZ2VyZWQuCisgICAgICAgICAgICBBIGdsb2JhbCB2YXJpYWJsZSAiZSIgaXMgZGVmaW5lZCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgY3VycmVudAorICAgICAgICAgICAgZXZlbnQuCisgICAgICAgICAgICBXaXRoIHRoZSA8ZmlsZW5hbWU+Z2V0TmFtZShlKTwvZmlsZW5hbWU+IG1ldGhvZCwgeW91IGNhbiBnZXQKKyAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0cmlnZ2VyZWQgZXZlbnQuCisgICAgICAgICAgICBUaGUgZ2xvYmFsIGRhdGFzdG9yZSBpcyBhdmFpbGFibGUgYXMgImQiLgorICAgICAgICAgICAgSW4gbGVnYWN5IGNvZGUsIHlvdSBtaWdodCBzZWUgImUuZGF0YSIgdXNlZCB0byBnZXQgdGhlIGRhdGFzdG9yZS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHJlYWxpemUgdGhhdCAiZS5kYXRhIiBpcyBkZXByZWNhdGVkIGFuZCB5b3Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgImQiIGdvaW5nIGZvcndhcmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjb250ZXh0IG9mIHRoZSBkYXRhc3RvcmUgaXMgYXBwcm9wcmlhdGUgdG8gdGhlIGV2ZW50CisgICAgICAgICAgICBpbiBxdWVzdGlvbi4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCAiQnVpbGRTdGFydGVkIiBhbmQgIkJ1aWxkQ29tcGxldGVkIiBldmVudHMgcnVuCisgICAgICAgICAgICBiZWZvcmUgYW55IHRhc2tzIGFyZSBleGVjdXRlZCBzbyB3b3VsZCBiZSBpbiB0aGUgZ2xvYmFsCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRhdGFzdG9yZSBuYW1lc3BhY2UuCisgICAgICAgICAgICBObyByZWNpcGUtc3BlY2lmaWMgbWV0YWRhdGEgZXhpc3RzIGluIHRoYXQgbmFtZXNwYWNlLgorICAgICAgICAgICAgVGhlICJCdWlsZFN0YXJ0ZWQiIGFuZCAiQnVpbGRDb21wbGV0ZWQiIGV2ZW50cyBhbHNvIHJ1biBpbgorICAgICAgICAgICAgdGhlIG1haW4gY29va2VyL3NlcnZlciBwcm9jZXNzIHJhdGhlciB0aGFuIGFueSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAgICAgIFRodXMsIGFueSBjaGFuZ2VzIG1hZGUgdG8gdGhlIGRhdGFzdG9yZSB3b3VsZCBiZSBzZWVuIGJ5IG90aGVyCisgICAgICAgICAgICBjb29rZXIvc2VydmVyIGV2ZW50cyB3aXRoaW4gdGhlIGN1cnJlbnQgYnVpbGQgYnV0IG5vdCBzZWVuCisgICAgICAgICAgICBvdXRzaWRlIG9mIHRoYXQgYnVpbGQgb3IgaW4gYW55IHdvcmtlciBjb250ZXh0LgorICAgICAgICAgICAgVGFzayBldmVudHMgcnVuIGluIHRoZSBhY3R1YWwgdGFza3MgaW4gcXVlc3Rpb24gY29uc2VxdWVudGx5CisgICAgICAgICAgICBoYXZlIHJlY2lwZS1zcGVjaWZpYyBhbmQgdGFzay1zcGVjaWZpYyBjb250ZW50cy4KKyAgICAgICAgICAgIFRoZXNlIGV2ZW50cyBydW4gaW4gdGhlIHdvcmtlciBjb250ZXh0IGFuZCBhcmUgZGlzY2FyZGVkIGF0CisgICAgICAgICAgICB0aGUgZW5kIG9mIHRhc2sgZXhlY3V0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdXJpbmcgYSBzdGFuZGFyZCBidWlsZCwgdGhlIGZvbGxvd2luZyBjb21tb24gZXZlbnRzIG1pZ2h0CisgICAgICAgICAgICBvY2N1ci4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXZlbnRzIGFyZSB0aGUgbW9zdCBjb21tb24ga2luZHMgb2YgZXZlbnRzIHRoYXQKKyAgICAgICAgICAgIG1vc3QgbWV0YWRhdGEgbWlnaHQgaGF2ZSBhbiBpbnRlcmVzdCBpbiB2aWV3aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5Db25maWdQYXJzZWQoKTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGaXJlZCB3aGVuIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb247IHdoaWNoIGNvbnNpc3RzIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGFuZCBhbnkgZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gc3RhdGVtZW50czsgaGFzIGJlZW4gcGFyc2VkLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBtdWx0aXBsZSBzdWNoIGV2ZW50cyB3aGVuIGVhY2ggb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHdvcmtlcnMgcGFyc2UgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBvciBpZiB0aGUgc2VydmVyCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgY29uZmlndXJhdGlvbiBhbmQgcmVwYXJzZXMuCisgICAgICAgICAgICAgICAgICAgIEFueSBnaXZlbiBkYXRhc3RvcmUgb25seSBoYXMgb25lIHN1Y2ggZXZlbnQgZXhlY3V0ZWQKKyAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCBpdCwgaG93ZXZlci4KKyAgICAgICAgICAgICAgICAgICAgSWYKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZGU9J3Zhci1iYi1CQl9JTlZBTElEQ09ORic+PGZpbGVuYW1lPkJCX0lOVkFMSURDT05GPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCBpbiB0aGUgZGF0YXN0b3JlIGJ5IHRoZSBldmVudCBoYW5kbGVyLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpcyByZXBhcnNlZCBhbmQgYSBuZXcgZXZlbnQgdHJpZ2dlcmVkLAorICAgICAgICAgICAgICAgICAgICBhbGxvd2luZyB0aGUgbWV0YWRhdGEgdG8gdXBkYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmV2ZW50LkhlYXJ0YmVhdEV2ZW50KCk8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRmlyZXMgYXQgcmVndWxhciB0aW1lIGludGVydmFscyBvZiBvbmUgc2Vjb25kLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgaW50ZXJ2YWwgdGltZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0hFQVJUQkVBVF9FVkVOVDwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZXZlbnQncyAidGltZSIgYXR0cmlidXRlIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGltZS50aW1lKCk8L2ZpbGVuYW1lPiB2YWx1ZSB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICBldmVudCBpcyB0cmlnZ2VyZWQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXZlbnQgaXMgdXNlZnVsIGZvciBhY3Rpdml0aWVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHN0YXRlIG1vbml0b3JpbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmV2ZW50LlBhcnNlU3RhcnRlZCgpPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZpcmVkIHdoZW4gQml0QmFrZSBpcyBhYm91dCB0byBzdGFydCBwYXJzaW5nIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXZlbnQncyAidG90YWwiIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBCaXRCYWtlIHBsYW5zIHRvIHBhcnNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5QYXJzZVByb2dyZXNzKCk8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRmlyZWQgYXMgcGFyc2luZyBwcm9ncmVzc2VzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV2ZW50J3MgImN1cnJlbnQiIGF0dHJpYnV0ZSBpcyB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgcGFyc2VkIGFzIHdlbGwgYXMgdGhlICJ0b3RhbCIgYXR0cmlidXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5QYXJzZUNvbXBsZXRlZCgpPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZpcmVkIHdoZW4gcGFyc2luZyBpcyBjb21wbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBldmVudCdzICJjYWNoZWQiLCAicGFyc2VkIiwgInNraXBwZWQiLCAidmlydHVhbHMiLAorICAgICAgICAgICAgICAgICAgICAibWFza2VkIiwgYW5kICJlcnJvcnMiIGF0dHJpYnV0ZXMgcHJvdmlkZSBzdGF0aXN0aWNzCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcGFyc2luZyByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5CdWlsZFN0YXJ0ZWQoKTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGaXJlZCB3aGVuIGEgbmV3IGJ1aWxkIHN0YXJ0cy4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaXJlcyBtdWx0aXBsZSAiQnVpbGRTdGFydGVkIiBldmVudHMgKG9uZSBwZXIgY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBtdWx0aXBsZSBjb25maWd1cmF0aW9uIChtdWx0aWNvbmZpZykgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuVGFza1N0YXJ0ZWQoKTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGaXJlZCB3aGVuIGEgdGFzayBzdGFydHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXZlbnQncyAidGFza2ZpbGUiIGF0dHJpYnV0ZSBwb2ludHMgdG8gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHRoZSB0YXNrIG9yaWdpbmF0ZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSAidGFza25hbWUiIGF0dHJpYnV0ZSwgd2hpY2ggaXMgdGhlIHRhc2sncyBuYW1lLAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyB0aGUgPGZpbGVuYW1lPmRvXzwvZmlsZW5hbWU+IHByZWZpeCwgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAibG9nZmlsZSIgYXR0cmlidXRlIHBvaW50IHRvIHdoZXJlIHRoZSB0YXNrJ3Mgb3V0cHV0IGlzCisgICAgICAgICAgICAgICAgICAgIHN0b3JlZC4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgdGhlICJ0aW1lIiBhdHRyaWJ1dGUgaXMgdGhlIHRhc2sncyBleGVjdXRpb24gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuVGFza0ludmFsaWQoKTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGaXJlZCBpZiBCaXRCYWtlIHRyaWVzIHRvIGV4ZWN1dGUgYSB0YXNrIHRoYXQgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQoKTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGaXJlZCBmb3Igc2V0c2NlbmUgdGFza3MgdGhhdCBmYWlsIGFuZCBzaG91bGQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgIHByZXNlbnRlZCB0byB0aGUgdXNlciB2ZXJib3NlbHkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLlRhc2tGYWlsZWQoKTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBGaXJlZCBmb3Igbm9ybWFsIHRhc2tzIHRoYXQgZmFpbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuVGFza1N1Y2NlZWRlZCgpPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZpcmVkIHdoZW4gYSB0YXNrIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKCk8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRmlyZWQgd2hlbiBhIGJ1aWxkIGZpbmlzaGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5jb29rZXIuQ29va2VyRXhpdCgpPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZpcmVkIHdoZW4gdGhlIEJpdEJha2Ugc2VydmVyL2Nvb2tlciBzaHV0cyBkb3duLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV2ZW50IGlzIHVzdWFsbHkgb25seSBzZWVuIGJ5IHRoZSBVSXMgYXMgYQorICAgICAgICAgICAgICAgICAgICBzaWduIHRoZXkgc2hvdWxkIGFsc28gc2h1dGRvd24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgbmV4dCBsaXN0IG9mIGV4YW1wbGUgZXZlbnRzIG9jY3VyIGJhc2VkIG9uIHNwZWNpZmljCisgICAgICAgICAgICByZXF1ZXN0cyB0byB0aGUgc2VydmVyLgorICAgICAgICAgICAgVGhlc2UgZXZlbnRzIGFyZSBvZnRlbiB1c2VkIHRvIGNvbW11bmljYXRlIGxhcmdlciBwaWVjZXMgb2YKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIGZyb20gdGhlIEJpdEJha2Ugc2VydmVyIHRvIG90aGVyIHBhcnRzIG9mCisgICAgICAgICAgICBCaXRCYWtlIHN1Y2ggYXMgdXNlciBpbnRlcmZhY2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uU3RhcnRlZCgpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZXZlbnQuVHJlZURhdGFQcmVwYXJhdGlvblByb2dyZXNzKCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uQ29tcGxldGVkKCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkKCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5Db3JlQmFzZUZpbGVzRm91bmQoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmV2ZW50LkNvbmZpZ0ZpbGVQYXRoRm91bmQoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmV2ZW50LkZpbGVzTWF0Y2hpbmdGb3VuZCgpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZXZlbnQuQ29uZmlnRmlsZXNGb3VuZCgpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZXZlbnQuVGFyZ2V0c1RyZWVHZW5lcmF0ZWQoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndmFyaWFudHMtY2xhc3MtZXh0ZW5zaW9uLW1lY2hhbmlzbSc+CisgICAgICAgIDx0aXRsZT5WYXJpYW50cyAtIENsYXNzIEV4dGVuc2lvbiBNZWNoYW5pc208L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBzdXBwb3J0cyB0d28gZmVhdHVyZXMgdGhhdCBmYWNpbGl0YXRlIGNyZWF0aW5nCisgICAgICAgICAgICBmcm9tIGEgc2luZ2xlIHJlY2lwZSBmaWxlIG11bHRpcGxlIGluY2FybmF0aW9ucyBvZiB0aGF0CisgICAgICAgICAgICByZWNpcGUgZmlsZSB3aGVyZSBhbGwgaW5jYXJuYXRpb25zIGFyZSBidWlsZGFibGUuCisgICAgICAgICAgICBUaGVzZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCQ0xBU1NFWFRFTkQnPjxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlZFUlNJT05TJz48ZmlsZW5hbWU+QkJWRVJTSU9OUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIG1lY2hhbmlzbSBmb3IgdGhpcyBjbGFzcyBleHRlbnNpb24gaXMgZXh0cmVtZWx5CisgICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAgICAgICAgIFVzdWFsbHksIHRoZSByZWNpcGUncworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgd291bGQgbmVlZCB0byBiZSBtb2RpZmllZCBieSB0aGUgZXh0ZW5zaW9uIGNsYXNzLgorICAgICAgICAgICAgICAgIEZvciBzcGVjaWZpYyBleGFtcGxlcywgc2VlIHRoZSBPRS1Db3JlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5tdWx0aWxpYjwvZmlsZW5hbWU+IGNsYXNzZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPkJCQ0xBU1NFWFRFTkQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgY2xhc3NlcyB1c2VkIHRvICJleHRlbmQiIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm9yIGVhY2ggdmFyaWFudC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgcmVzdWx0cyBpbiBhIHNlY29uZCBpbmNhcm5hdGlvbiBvZiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICByZWNpcGUgYmVpbmcgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY29uZCBpbmNhcm5hdGlvbiB3aWxsIGhhdmUgdGhlICJuYXRpdmUiIGNsYXNzIGluaGVyaXRlZC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPkJCVkVSU0lPTlM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGFsbG93cyBhIHNpbmdsZSByZWNpcGUgdG8gYnVpbGQgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGZyb20gYSBzaW5nbGUgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGNvbmRpdGlvbmFsIG1ldGFkYXRhCisgICAgICAgICAgICAgICAgICAgICh1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLU9WRVJSSURFUyc+PGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20pIGZvciBhIHNpbmdsZSB2ZXJzaW9uLCBvciBhbiBvcHRpb25hbGx5IG5hbWVkIHJhbmdlIG9mIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJWRVJTSU9OUyA9ICIxLjAgMi4wIGdpdCIKKyAgICAgU1JDX1VSSV9naXQgPSAiZ2l0Oi8vc29tZXVybC9zb21lcGF0aC5naXQiCisKKyAgICAgQkJWRVJTSU9OUyA9ICIxLjAuWzAtNl06MS4wLjArIFwgMS4wLls3LTldOjEuMC43KyIKKyAgICAgU1JDX1VSSV9hcHBlbmRfMS4wLjcrID0gImZpbGU6Ly9zb21lX3BhdGNoX3doaWNoX3RoZV9uZXdfdmVyc2lvbnNfbmVlZC5wYXRjaDtwYXRjaD0xIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSByYW5nZSBkZWZhdWx0cyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gT3BlbkVtYmVkZGVkLCB0aGUgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjAuMCsuYmI8L2ZpbGVuYW1lPiBjcmVhdGVzIGEgZGVmYXVsdCBuYW1lIHJhbmdlCisgICAgICAgICAgICAgICAgICAgIG9mIDxmaWxlbmFtZT4xLjAuMCs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGUgcmFuZ2UgbmFtZSBpcyBub3Qgb25seSBwbGFjZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byBvdmVycmlkZXMsIGJ1dCBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIGZvciB0aGUgbWV0YWRhdGEgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSB2YXJpYWJsZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgcmVjaXBlIHZlcnNpb25zIGZvciB1c2UgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiBzZWFyY2ggcGF0aHMKKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RlcGVuZGVuY2llcyc+CisgICAgICAgIDx0aXRsZT5EZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gYWxsb3cgZm9yIGVmZmljaWVudCBwYXJhbGxlbCBwcm9jZXNzaW5nLCBCaXRCYWtlIGhhbmRsZXMKKyAgICAgICAgICAgIGRlcGVuZGVuY2llcyBhdCB0aGUgdGFzayBsZXZlbC4KKyAgICAgICAgICAgIERlcGVuZGVuY2llcyBjYW4gZXhpc3QgYm90aCBiZXR3ZWVuIHRhc2tzIHdpdGhpbiBhIHNpbmdsZSByZWNpcGUKKyAgICAgICAgICAgIGFuZCBiZXR3ZWVuIHRhc2tzIGluIGRpZmZlcmVudCByZWNpcGVzLgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiBlYWNoOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Rm9yIHRhc2tzIHdpdGhpbiBhIHNpbmdsZSByZWNpcGUsIGEKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgbWlnaHQgbmVlZCB0byBjb21wbGV0ZSBiZWZvcmUgaXRzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gdGFzayBjYW4gcnVuLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Rm9yIHRhc2tzIGluIGRpZmZlcmVudCByZWNpcGVzLCBvbmUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgbWlnaHQgcmVxdWlyZSBhbm90aGVyIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB0byBmaW5pc2ggZmlyc3Qgc3VjaCB0aGF0IHRoZSBsaWJyYXJpZXMgYW5kIGhlYWRlcnMKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgdGhlIG90aGVyIHJlY2lwZSBhcmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBzZXZlcmFsIHdheXMgdG8gZGVjbGFyZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgUmVtZW1iZXIsIGV2ZW4gdGhvdWdoIGRlcGVuZGVuY2llcyBhcmUgZGVjbGFyZWQgaW4gZGlmZmVyZW50IHdheXMsIHRoZXkKKyAgICAgICAgICAgICBhcmUgYWxsIHNpbXBseSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0YXNrcy4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGVwZW5kZW5jaWVzLWludGVybmFsLXRvLXRoZS1iYi1maWxlJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZXBlbmRlbmNpZXMgSW50ZXJuYWwgdG8gdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+YWRkdGFzazwvZmlsZW5hbWU+IGRpcmVjdGl2ZQorICAgICAgICAgICAgICAgIHRvIG1hbmFnZSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgaW50ZXJuYWwgdG8gYSBnaXZlbiByZWNpcGUKKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+YWRkdGFzazwvZmlsZW5hbWU+IGRpcmVjdGl2ZSB0bworICAgICAgICAgICAgICAgIGluZGljYXRlIHdoZW4gYSB0YXNrIGlzIGRlcGVuZGVudCBvbiBvdGhlciB0YXNrcyBvciB3aGVuCisgICAgICAgICAgICAgICAgb3RoZXIgdGFza3MgZGVwZW5kIG9uIHRoYXQgcmVjaXBlLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGFkZHRhc2sgcHJpbnRkYXRlIGFmdGVyIGRvX2ZldGNoIGJlZm9yZSBkb19idWlsZAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+ZG9fcHJpbnRkYXRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0YXNrIGRlcGVuZHMgb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4gdGFzaywgYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+IHRhc2sgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uIG9mIHRoZSA8ZmlsZW5hbWU+ZG9fcHJpbnRkYXRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgIDxub3RlPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYSB0YXNrIHRvIHJ1biwgaXQgbXVzdCBiZSBhIGRpcmVjdCBvciBpbmRpcmVjdAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IG9mIHNvbWUgb3RoZXIgdGFzayB0aGF0IGlzIHNjaGVkdWxlZCB0bworICAgICAgICAgICAgICAgICAgICBydW4uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbGx1c3RyYXRpb24sIGhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hZGR0YXNrIG15dGFzayBiZWZvcmUgZG9fY29uZmlndXJlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZXMgPGZpbGVuYW1lPmRvX215dGFzazwvZmlsZW5hbWU+IHRvIHJ1biBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4gcnVucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IDxmaWxlbmFtZT5kb19teXRhc2s8L2ZpbGVuYW1lPiBzdGlsbCBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVucyBpZiBpdHMgPGxpbmsgbGlua2VuZD0nY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIGl0IHdhcyBydW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyB0byB0aGUgaW5wdXQgY2hlY2tzdW0gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fbXl0YXNrPC9maWxlbmFtZT4gYWxzbyBpbmRpcmVjdGx5IGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IHRvIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFkZHRhc2sgbXl0YXNrIGFmdGVyIGRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgaXRzZWxmIG5ldmVyIGNhdXNlcyA8ZmlsZW5hbWU+ZG9fbXl0YXNrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBydW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX215dGFzazwvZmlsZW5hbWU+IGNhbiBzdGlsbCBiZSBydW4gbWFudWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiAtYyBteXRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjbGFyaW5nIDxmaWxlbmFtZT5kb19teXRhc2s8L2ZpbGVuYW1lPiBhcyBhIGRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBzb21lIG90aGVyIHRhc2sgdGhhdCBpcyBzY2hlZHVsZWQgdG8gcnVuIGFsc28gY2F1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgdG8gcnVuLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3MsIHRoZSB0YXNrIHJ1bnMgYWZ0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZCBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbWFuYWdlIGJ1aWxkIHRpbWUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+W2RlcHRhc2tdPC9maWxlbmFtZT4gdmFyZmxhZyBmb3IgdGFza3MKKyAgICAgICAgICAgICAgICBzaWduaWZpZXMgdGhlIHRhc2sgb2YgZWFjaAorICAgICAgICAgICAgICAgIGl0ZW0gbGlzdGVkIGluIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gdGhhdCBtdXN0CisgICAgICAgICAgICAgICAgY29tcGxldGUgYmVmb3JlIHRoYXQgdGFzayBjYW4gYmUgZXhlY3V0ZWQuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fY29uZmlndXJlW2RlcHRhc2tdID0gImRvX3BvcHVsYXRlX3N5c3Jvb3QiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0YXNrIG9mIGVhY2ggaXRlbSBpbiA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IG11c3QgY29tcGxldGUgYmVmb3JlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IGNhbiBleGVjdXRlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3J1bnRpbWUtZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5SdW50aW1lIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPiwgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdG8gbWFuYWdlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFyaWFibGUgbGlzdHMgcnVudGltZQorICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhvc2UgcGFja2FnZXMgY2FuIGhhdmUgPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT4gcnVudGltZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5bcmRlcHRhc2tdPC9maWxlbmFtZT4gZmxhZyBmb3IgdGFza3MgaXMgdXNlZCB0bworICAgICAgICAgICAgICAgIHNpZ25pZnkgdGhlIHRhc2sgb2YgZWFjaAorICAgICAgICAgICAgICAgIGl0ZW0gcnVudGltZSBkZXBlbmRlbmN5IHdoaWNoIG11c3QgaGF2ZSBjb21wbGV0ZWQgYmVmb3JlIHRoYXQKKyAgICAgICAgICAgICAgICB0YXNrIGNhbiBiZSBleGVjdXRlZC4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2VfcWFbcmRlcHRhc2tdID0gImRvX3BhY2thZ2VkYXRhIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGFzayBvZiBlYWNoIGl0ZW0gaW4gPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4gbXVzdCBoYXZlCisgICAgICAgICAgICAgICAgY29tcGxldGVkIGJlZm9yZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV9xYTwvZmlsZW5hbWU+IGNhbiBleGVjdXRlLgorICAgICAgICAgICAgICAgIEFsdGhvdWdoIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IGNvbnRhaW5zIGVudHJpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY3kgbmFtZXNwYWNlLCBCaXRCYWtlIGtub3dzIGhvdyB0byBtYXAgdGhlbSBiYWNrCisgICAgICAgICAgICAgICAgdG8gdGhlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSBuYW1lc3BhY2UsIGluIHdoaWNoIHRoZSB0YXNrcyBhcmUgZGVmaW5lZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZWN1cnNpdmUtZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5SZWN1cnNpdmUgRGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+W3JlY3JkZXB0YXNrXTwvZmlsZW5hbWU+IGZsYWcgdG8gbWFuYWdlCisgICAgICAgICAgICAgICAgcmVjdXJzaXZlIHRhc2sgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIEJpdEJha2UgbG9va3MgdGhyb3VnaCB0aGUgYnVpbGQtdGltZSBhbmQgcnVudGltZQorICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBvZiB0aGUgY3VycmVudCByZWNpcGUsIGxvb2tzIHRocm91Z2gKKyAgICAgICAgICAgICAgICB0aGUgdGFzaydzIGludGVyLXRhc2sKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMsIGFuZCB0aGVuIGFkZHMgZGVwZW5kZW5jaWVzIGZvciB0aGUKKyAgICAgICAgICAgICAgICBsaXN0ZWQgdGFzay4KKyAgICAgICAgICAgICAgICBPbmNlIEJpdEJha2UgaGFzIGFjY29tcGxpc2hlZCB0aGlzLCBpdCByZWN1cnNpdmVseSB3b3JrcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgdGhlIGRlcGVuZGVuY2llcyBvZiB0aG9zZSB0YXNrcy4KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmUgcGFzc2VzIGNvbnRpbnVlIHVudGlsIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGRpc2NvdmVyZWQKKyAgICAgICAgICAgICAgICBhbmQgYWRkZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+W3JlY3JkZXB0YXNrXTwvZmlsZW5hbWU+IGZsYWcgaXMgbW9zdCBjb21tb25seQorICAgICAgICAgICAgICAgIHVzZWQgaW4gaGlnaC1sZXZlbAorICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBuZWVkIHRvIHdhaXQgZm9yIHNvbWUgdGFzayB0byBmaW5pc2ggImdsb2JhbGx5Ii4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPmltYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPiBoYXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2VkYXRhIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIHN0YXRlbWVudCBzYXlzIHRoYXQgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGFzayBvZiB0aGUgY3VycmVudCByZWNpcGUgYW5kIGFsbCByZWNpcGVzIHJlYWNoYWJsZQorICAgICAgICAgICAgICAgIChieSB3YXkgb2YgZGVwZW5kZW5jaWVzKSBmcm9tIHRoZQorICAgICAgICAgICAgICAgIGltYWdlIHJlY2lwZSBtdXN0IHJ1biBiZWZvcmUgdGhlIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2sgY2FuIHJ1bi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSBhbGxvd3MgYSB0YXNrIHRvIHJlY3Vyc2l2ZWx5IGRlcGVuZCBvbiBpdHNlbGYgYnkKKyAgICAgICAgICAgICAgICByZWZlcmVuY2luZyBpdHNlbGYgaW4gdGhlIHRhc2sgbGlzdDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2FbcmVjcmRlcHRhc2tdID0gImRvX2EgZG9fYiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSW4gdGhlIHNhbWUgd2F5IGFzIGJlZm9yZSwgdGhpcyBtZWFucyB0aGF0IHRoZSA8ZmlsZW5hbWU+ZG9fYTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5kb19iPC9maWxlbmFtZT4gdGFza3Mgb2YgdGhlIGN1cnJlbnQgcmVjaXBlIGFuZCBhbGwKKyAgICAgICAgICAgICAgICByZWNpcGVzIHJlYWNoYWJsZSAoYnkgd2F5IG9mIGRlcGVuZGVuY2llcykgZnJvbSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgbXVzdCBydW4gYmVmb3JlIHRoZSA8ZmlsZW5hbWU+ZG9fYTwvZmlsZW5hbWU+IHRhc2sgY2FuIHJ1bi4gSW4gdGhpcworICAgICAgICAgICAgICAgIGNhc2UgQml0QmFrZSB3aWxsIGlnbm9yZSB0aGUgY3VycmVudCByZWNpcGUncyA8ZmlsZW5hbWU+ZG9fYTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGFzayBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGl0c2VsZi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbnRlci10YXNrLWRlcGVuZGVuY2llcyc+CisgICAgICAgICAgICA8dGl0bGU+SW50ZXItVGFzayBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIDxmaWxlbmFtZT5bZGVwZW5kc108L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZsYWcgaW4gYSBtb3JlIGdlbmVyaWMgZm9ybQorICAgICAgICAgICAgICAgIHRvIG1hbmFnZSBpbnRlci10YXNrIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICBUaGlzIG1vcmUgZ2VuZXJpYyBmb3JtIGFsbG93cyBmb3IgaW50ZXItZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgIGNoZWNrcyBmb3Igc3BlY2lmaWMgdGFza3MgcmF0aGVyIHRoYW4gY2hlY2tzIGZvcgorICAgICAgICAgICAgICAgIHRoZSBkYXRhIGluIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fcGF0Y2hbZGVwZW5kc10gPSAicXVpbHQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSB0YXJnZXQgPGZpbGVuYW1lPnF1aWx0LW5hdGl2ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgbXVzdCBoYXZlIGNvbXBsZXRlZCBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4gdGFzayBjYW4gZXhlY3V0ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5bcmRlcGVuZHNdPC9maWxlbmFtZT4gZmxhZyB3b3JrcyBpbiBhIHNpbWlsYXIKKyAgICAgICAgICAgICAgICB3YXkgYnV0IHRha2VzIHRhcmdldHMKKyAgICAgICAgICAgICAgICBpbiB0aGUgcnVudGltZSBuYW1lc3BhY2UgaW5zdGVhZCBvZiB0aGUgYnVpbGQtdGltZSBkZXBlbmRlbmN5CisgICAgICAgICAgICAgICAgbmFtZXNwYWNlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Z1bmN0aW9ucy15b3UtY2FuLWNhbGwtZnJvbS13aXRoaW4tcHl0aG9uJz4KKyAgICAgICAgPHRpdGxlPkZ1bmN0aW9ucyBZb3UgQ2FuIENhbGwgRnJvbSBXaXRoaW4gUHl0aG9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgcHJvdmlkZXMgbWFueSBmdW5jdGlvbnMgeW91IGNhbiBjYWxsIGZyb20KKyAgICAgICAgICAgIHdpdGhpbiBQeXRob24gZnVuY3Rpb25zLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxpc3RzIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25zLAorICAgICAgICAgICAgYW5kIG1lbnRpb25zIHdoZXJlIHRvIGZpbmQgb3RoZXJzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Z1bmN0aW9ucy1mb3ItYWNjZXNzaW5nLWRhdGFzdG9yZS12YXJpYWJsZXMnPgorICAgICAgICAgICAgPHRpdGxlPkZ1bmN0aW9ucyBmb3IgQWNjZXNzaW5nIERhdGFzdG9yZSBWYXJpYWJsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBvZnRlbiBuZWNlc3NhcnkgdG8gYWNjZXNzIHZhcmlhYmxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGRhdGFzdG9yZSB1c2luZyBQeXRob24gZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIFRoZSBCaXRCYWtlIGRhdGFzdG9yZSBoYXMgYW4gQVBJIHRoYXQgYWxsb3dzIHlvdSB0aGlzCisgICAgICAgICAgICAgICAgYWNjZXNzLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIGF2YWlsYWJsZSBvcGVyYXRpb25zOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0nbm9uZSc+CisgICAgICAgICAgICAgICAgICAgIDx0Z3JvdXAgY29scz0nMicgYWxpZ249J2xlZnQnIGNvbHNlcD0nMScgcm93c2VwPScxJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9J2MxJyBjb2x3aWR0aD0nMSonLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9J2MyJyBjb2x3aWR0aD0nMSonLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxlbXBoYXNpcz5PcGVyYXRpb248L2VtcGhhc2lzPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGVtcGhhc2lzPkRlc2NyaXB0aW9uPC9lbXBoYXNpcz48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxmaWxlbmFtZT5kLmdldFZhcigiWCIsIGV4cGFuZCk8L2ZpbGVuYW1lPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+UmV0dXJucyB0aGUgdmFsdWUgb2YgdmFyaWFibGUgIlgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgImV4cGFuZD1UcnVlIiBleHBhbmRzIHRoZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybnMgIk5vbmUiIGlmIHRoZSB2YXJpYWJsZSAiWCIgZG9lcyBub3QgZXhpc3QuPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxmaWxlbmFtZT5kLnNldFZhcigiWCIsICJ2YWx1ZSIpPC9maWxlbmFtZT48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlNldHMgdGhlIHZhcmlhYmxlICJYIiB0byAidmFsdWUiLjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZC5hcHBlbmRWYXIoIlgiLCAidmFsdWUiKTwvZmlsZW5hbWU+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5BZGRzICJ2YWx1ZSIgdG8gdGhlIGVuZCBvZiB0aGUgdmFyaWFibGUgIlgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0cyBsaWtlIDxmaWxlbmFtZT5kLnNldFZhcigiWCIsICJ2YWx1ZSIpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSB2YXJpYWJsZSAiWCIgZG9lcyBub3QgZXhpc3QuPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxmaWxlbmFtZT5kLnByZXBlbmRWYXIoIlgiLCAidmFsdWUiKTwvZmlsZW5hbWU+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5BZGRzICJ2YWx1ZSIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2YXJpYWJsZSAiWCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RzIGxpa2UgPGZpbGVuYW1lPmQuc2V0VmFyKCJYIiwgInZhbHVlIik8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHZhcmlhYmxlICJYIiBkb2VzIG5vdCBleGlzdC48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGZpbGVuYW1lPmQuZGVsVmFyKCJYIik8L2ZpbGVuYW1lPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+RGVsZXRlcyB0aGUgdmFyaWFibGUgIlgiIGZyb20gdGhlIGRhdGFzdG9yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXMgbm90aGluZyBpZiB0aGUgdmFyaWFibGUgIlgiIGRvZXMgbm90IGV4aXN0LjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZC5yZW5hbWVWYXIoIlgiLCAiWSIpPC9maWxlbmFtZT48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlJlbmFtZXMgdGhlIHZhcmlhYmxlICJYIiB0byAiWSIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2VzIG5vdGhpbmcgaWYgdGhlIHZhcmlhYmxlICJYIiBkb2VzIG5vdCBleGlzdC48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGZpbGVuYW1lPmQuZ2V0VmFyRmxhZygiWCIsIGZsYWcsIGV4cGFuZCk8L2ZpbGVuYW1lPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+UmV0dXJucyB0aGUgdmFsdWUgb2YgdmFyaWFibGUgIlgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgImV4cGFuZD1UcnVlIiBleHBhbmRzIHRoZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybnMgIk5vbmUiIGlmIGVpdGhlciB0aGUgdmFyaWFibGUgIlgiIG9yIHRoZSBuYW1lZCBmbGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2VzIG5vdCBleGlzdC48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGZpbGVuYW1lPmQuc2V0VmFyRmxhZygiWCIsIGZsYWcsICJ2YWx1ZSIpPC9maWxlbmFtZT48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlNldHMgdGhlIG5hbWVkIGZsYWcgZm9yIHZhcmlhYmxlICJYIiB0byAidmFsdWUiLjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZC5hcHBlbmRWYXJGbGFnKCJYIiwgZmxhZywgInZhbHVlIik8L2ZpbGVuYW1lPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+QXBwZW5kcyAidmFsdWUiIHRvIHRoZSBuYW1lZCBmbGFnIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgIlgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0cyBsaWtlIDxmaWxlbmFtZT5kLnNldFZhckZsYWcoIlgiLCBmbGFnLCAidmFsdWUiKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgbmFtZWQgZmxhZyBkb2VzIG5vdCBleGlzdC48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGZpbGVuYW1lPmQucHJlcGVuZFZhckZsYWcoIlgiLCBmbGFnLCAidmFsdWUiKTwvZmlsZW5hbWU+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5QcmVwZW5kcyAidmFsdWUiIHRvIHRoZSBuYW1lZCBmbGFnIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGUgIlgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0cyBsaWtlIDxmaWxlbmFtZT5kLnNldFZhckZsYWcoIlgiLCBmbGFnLCAidmFsdWUiKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgbmFtZWQgZmxhZyBkb2VzIG5vdCBleGlzdC48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGZpbGVuYW1lPmQuZGVsVmFyRmxhZygiWCIsIGZsYWcpPC9maWxlbmFtZT48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkRlbGV0ZXMgdGhlIG5hbWVkIGZsYWcgb24gdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWCIgZnJvbSB0aGUgZGF0YXN0b3JlLjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZC5zZXRWYXJGbGFncygiWCIsIGZsYWdzZGljdCk8L2ZpbGVuYW1lPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+U2V0cyB0aGUgZmxhZ3Mgc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmZsYWdzZGljdCgpPC9maWxlbmFtZT4gcGFyYW1ldGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldFZhckZsYWdzPC9maWxlbmFtZT4gZG9lcyBub3QgY2xlYXIgcHJldmlvdXMgZmxhZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGluayBvZiB0aGlzIG9wZXJhdGlvbiBhcyA8ZmlsZW5hbWU+YWRkVmFyRmxhZ3M8L2ZpbGVuYW1lPi48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGZpbGVuYW1lPmQuZ2V0VmFyRmxhZ3MoIlgiKTwvZmlsZW5hbWU+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5SZXR1cm5zIGEgPGZpbGVuYW1lPmZsYWdzZGljdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZmxhZ3MgZm9yIHRoZSB2YXJpYWJsZSAiWCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5zICJOb25lIiBpZiB0aGUgdmFyaWFibGUgIlgiIGRvZXMgbm90IGV4aXN0LjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZC5kZWxWYXJGbGFncygiWCIpPC9maWxlbmFtZT48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkRlbGV0ZXMgYWxsIHRoZSBmbGFncyBmb3IgdGhlIHZhcmlhYmxlICJYIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXMgbm90aGluZyBpZiB0aGUgdmFyaWFibGUgIlgiIGRvZXMgbm90IGV4aXN0LjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZC5leHBhbmQoZXhwcmVzc2lvbik8L2ZpbGVuYW1lPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+RXhwYW5kcyB2YXJpYWJsZSByZWZlcmVuY2VzIGluIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBleHByZXNzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlcyB0byB2YXJpYWJsZXMgdGhhdCBkbyBub3QgZXhpc3QgYXJlIGxlZnQgYXMgaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPmQuZXhwYW5kKCJmb28gJHtYfSIpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZHMgdG8gdGhlIGxpdGVyYWwgc3RyaW5nICJmb28gJHtYfSIgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSAiWCIgZG9lcyBub3QgZXhpc3QuPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICAgICAgICAgIDwvdGdyb3VwPgorICAgICAgICAgICAgICAgIDwvaW5mb3JtYWx0YWJsZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdvdGhlci1mdW5jdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPk90aGVyIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjYWxsZWQKKyAgICAgICAgICAgICAgICBmcm9tIFB5dGhvbiBieSBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmI8L2ZpbGVuYW1lPiBtb2R1bGUsIHdoaWNoIGlzIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvbGliL2JiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvbGliL2JiL3V0aWxzLnB5PC9maWxlbmFtZT4gaW5jbHVkZXMKKyAgICAgICAgICAgICAgICB0aGUgY29tbW9ubHkgdXNlZCBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIudXRpbHMuY29udGFpbnMoKTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi51dGlscy5ta2RpcmhpZXIoKTwvZmlsZW5hbWU+LCB3aGljaCBjb21lCisgICAgICAgICAgICAgICAgd2l0aCBkb2NzdHJpbmdzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Rhc2stY2hlY2tzdW1zLWFuZC1zZXRzY2VuZSc+CisgICAgICAgIDx0aXRsZT5UYXNrIENoZWNrc3VtcyBhbmQgU2V0c2NlbmU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB1c2VzIGNoZWNrc3VtcyAob3Igc2lnbmF0dXJlcykgYWxvbmcgd2l0aCB0aGUgc2V0c2NlbmUKKyAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcnVuLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgcHJvY2Vzcy4KKyAgICAgICAgICAgIFRvIGhlbHAgdW5kZXJzdGFuZCBob3cgQml0QmFrZSBkb2VzIHRoaXMsIHRoZSBzZWN0aW9uIGFzc3VtZXMgYW4KKyAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBtZXRhZGF0YS1iYXNlZCBleGFtcGxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGVzZSBjaGVja3N1bXMgYXJlIHN0b3JlZCBpbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNUQU1QJz48ZmlsZW5hbWU+U1RBTVA8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICBZb3UgY2FuIGV4YW1pbmUgdGhlIGNoZWNrc3VtcyB1c2luZyB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlLWR1bXBzaWdzCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGNvbW1hbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlIGRhdGEgaW4gYSByZWFkYWJsZSBmb3JtYXQKKyAgICAgICAgICAgIHRoYXQgYWxsb3dzIHlvdSB0byBleGFtaW5lIHRoZSBpbnB1dHMgdXNlZCB3aGVuIHRoZQorICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgc2lnbmF0dXJlcy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2luZyA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnczwvZmlsZW5hbWU+CisgICAgICAgICAgICBhbGxvd3MgeW91IHRvIGV4YW1pbmUgdGhlIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhc2sncyDigJxzaWdkYXRh4oCdIGZvciBhIEMgYXBwbGljYXRpb24gKGUuZy4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgUnVubmluZyB0aGUgY29tbWFuZCBhbHNvIHJldmVhbHMgdGhhdCB0aGUg4oCcQ0PigJ0gdmFyaWFibGUgaXMgcGFydCBvZgorICAgICAgICAgICAgdGhlIGlucHV0cyB0aGF0IGFyZSBoYXNoZWQuCisgICAgICAgICAgICBBbnkgY2hhbmdlcyB0byB0aGlzIHZhcmlhYmxlIHdvdWxkIGludmFsaWRhdGUgdGhlIHN0YW1wIGFuZAorICAgICAgICAgICAgY2F1c2UgdGhlIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gdGFzayB0byBydW4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgcmVsYXRlZCB2YXJpYWJsZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGZpbGVuYW1lPkJCX0hBU0hDSEVDS19GVU5DVElPTjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBjYWxsIGR1cmluZworICAgICAgICAgICAgICAgICAgICB0aGUgInNldHNjZW5lIiBwYXJ0IG9mIHRoZSB0YXNrJ3MgZXhlY3V0aW9uIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIHZhbGlkYXRlIHRoZSBsaXN0IG9mIHRhc2sgaGFzaGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9TRVRTQ0VORV9ERVBWQUxJRCc+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX0RFUFZBTElEPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBmdW5jdGlvbiBCaXRCYWtlIGNhbGxzIHRoYXQgZGV0ZXJtaW5lcworICAgICAgICAgICAgICAgICAgICB3aGV0aGVyIEJpdEJha2UgcmVxdWlyZXMgYSBzZXRzY2VuZSBkZXBlbmRlbmN5IHRvCisgICAgICAgICAgICAgICAgICAgIGJlIG1ldC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMic+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTjI8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRvIGNhbGwgdGhhdCB2ZXJpZmllcyB0aGUgbGlzdCBvZgorICAgICAgICAgICAgICAgICAgICBwbGFubmVkIHRhc2sgZXhlY3V0aW9uIGJlZm9yZSB0aGUgbWFpbiB0YXNrIGV4ZWN1dGlvbgorICAgICAgICAgICAgICAgICAgICBoYXBwZW5zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9TVEFNUF9QT0xJQ1knPjxmaWxlbmFtZT5CQl9TVEFNUF9QT0xJQ1k8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIG1vZGUgZm9yIGNvbXBhcmluZyB0aW1lc3RhbXBzIG9mIHN0YW1wIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9TVEFNUF9XSElURUxJU1QnPjxmaWxlbmFtZT5CQl9TVEFNUF9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHN0YW1wIGZpbGVzIHRoYXQgYXJlIGxvb2tlZCBhdCB3aGVuIHRoZSBzdGFtcCBwb2xpY3kKKyAgICAgICAgICAgICAgICAgICAgaXMgIndoaXRlbGlzdCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX1RBU0tIQVNIJz48ZmlsZW5hbWU+QkJfVEFTS0hBU0g8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIFdpdGhpbiBhbiBleGVjdXRpbmcgdGFzaywgdGhpcyB2YXJpYWJsZSBob2xkcyB0aGUgaGFzaAorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdGFzayBhcyByZXR1cm5lZCBieSB0aGUgY3VycmVudGx5IGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgcGF0aCB0byBjcmVhdGUgc3RhbXAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNUQU1QQ0xFQU4nPjxmaWxlbmFtZT5TVEFNUENMRUFOPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBBZ2FpbiwgdGhlIGJhc2UgcGF0aCB0byBjcmVhdGUgc3RhbXAgZmlsZXMgYnV0IGNhbiB1c2Ugd2lsZGNhcmRzCisgICAgICAgICAgICAgICAgICAgIGZvciBtYXRjaGluZyBhIHJhbmdlIG9mIGZpbGVzIGZvciBjbGVhbiBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dpbGRjYXJkLXN1cHBvcnQtaW4tdmFyaWFibGVzJz4KKyAgICAgICAgPHRpdGxlPldpbGRjYXJkIFN1cHBvcnQgaW4gVmFyaWFibGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFN1cHBvcnQgZm9yIHdpbGRjYXJkIHVzZSBpbiB2YXJpYWJsZXMgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICAgIGNvbnRleHQgaW4gd2hpY2ggaXQgaXMgdXNlZC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBzb21lIHZhcmlhYmxlcyBhbmQgZmlsZSBuYW1lcyBhbGxvdyBsaW1pdGVkIHVzZSBvZgorICAgICAgICAgICAgd2lsZGNhcmRzIHRocm91Z2ggdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBhbmQKKyAgICAgICAgICAgICI8ZmlsZW5hbWU+KjwvZmlsZW5hbWU+IiBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgT3RoZXIgdmFyaWFibGVzIG9yIG5hbWVzIHN1cHBvcnQgUHl0aG9uJ3MKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9nbG9iLmh0bWwnPjxmaWxlbmFtZT5nbG9iPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgc3ludGF4LAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2ZubWF0Y2guaHRtbCNtb2R1bGUtZm5tYXRjaCc+PGZpbGVuYW1lPmZubWF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBzeW50YXgsIG9yCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvcmUuaHRtbCNyZSc+PGZpbGVuYW1lPlJlZ3VsYXIgRXhwcmVzc2lvbiAocmUpPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgc3ludGF4LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdmFyaWFibGVzIHRoYXQgaGF2ZSB3aWxkY2FyZCBzdXBvcnQsIHRoZQorICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgd2hpY2ggZm9ybSBvZiB3aWxkY2FyZCwgaXRzCisgICAgICAgICAgICB1c2UsIGFuZCBpdHMgbGltaXRhdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKzwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMucnN0IGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy5yc3QKaW5kZXggNzRhM2ViOC4uZmIxYjM1MyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy5yc3QKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKIAogLi4gZ2xvc3Nhcnk6OgogCi0gICA6dGVybTpgQVNTVU1FX1BST1ZJREVEYAorICAgQVNTVU1FX1BST1ZJREVECiAgICAgICBMaXN0cyByZWNpcGUgbmFtZXMgKDp0ZXJtOmBQTmAgdmFsdWVzKSBCaXRCYWtlIGRvZXMgbm90CiAgICAgICBhdHRlbXB0IHRvIGJ1aWxkLiBJbnN0ZWFkLCBCaXRCYWtlIGFzc3VtZXMgdGhlc2UgcmVjaXBlcyBoYXZlIGFscmVhZHkKICAgICAgIGJlZW4gYnVpbHQuCkBAIC0zOSwxMSArMzksMTEgQEAKICAgICAgIHdoZW4gc3BlY2lmaWVkIGFsbG93cyBmb3IgdGhlIEdpdCBiaW5hcnkgZnJvbSB0aGUgaG9zdCB0byBiZSB1c2VkCiAgICAgICByYXRoZXIgdGhhbiBidWlsZGluZyBgYGdpdC1uYXRpdmVgYC4KIAotICAgOnRlcm06YEJgCisgICBCCiAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIEJpdEJha2UgZXhlY3V0ZXMgZnVuY3Rpb25zIGR1cmluZyBhIHJlY2lwZSdzCiAgICAgICBidWlsZCBwcm9jZXNzLgogCi0gICA6dGVybTpgQkJfQUxMT1dFRF9ORVRXT1JLU2AKKyAgIEJCX0FMTE9XRURfTkVUV09SS1MKICAgICAgIFNwZWNpZmllcyBhIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIGhvc3RzIHRoYXQgdGhlIGZldGNoZXIgaXMgYWxsb3dlZAogICAgICAgdG8gdXNlIHRvIG9idGFpbiB0aGUgcmVxdWlyZWQgc291cmNlIGNvZGUuIEZvbGxvd2luZyBhcmUKICAgICAgIGNvbnNpZGVyYXRpb25zIHN1cnJvdW5kaW5nIHRoaXMgdmFyaWFibGU6CkBAIC04MywxNSArODMsMTUgQEAKICAgICAgIGZldGNoZXIgZG9lcyBub3QgYXR0ZW1wdCB0byB1c2UgdGhlIGhvc3QgbGlzdGVkIGluIGBgU1JDX1VSSWBgIGFmdGVyCiAgICAgICBhIHN1Y2Nlc3NmdWwgZmV0Y2ggZnJvbSB0aGUgYGBQUkVNSVJST1JTYGAgb2NjdXJzLgogCi0gICA6dGVybTpgQkJfQ09OU09MRUxPR2AKKyAgIEJCX0NPTlNPTEVMT0cKICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byBhIGxvZyBmaWxlIGludG8gd2hpY2ggQml0QmFrZSdzIHVzZXIgaW50ZXJmYWNlCiAgICAgICB3cml0ZXMgb3V0cHV0IGR1cmluZyB0aGUgYnVpbGQuCiAKLSAgIDp0ZXJtOmBCQl9DVVJSRU5UVEFTS2AKKyAgIEJCX0NVUlJFTlRUQVNLCiAgICAgICBDb250YWlucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzay4gVGhlIG5hbWUgZG9lcyBub3QKICAgICAgIGluY2x1ZGUgdGhlIGBgZG9fYGAgcHJlZml4LgogCi0gICA6dGVybTpgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZYAorICAgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZCiAgICAgICBEZWZpbmVzIGhvdyBCaXRCYWtlIGhhbmRsZXMgc2l0dWF0aW9ucyB3aGVyZSBhbiBhcHBlbmQgZmlsZQogICAgICAgKGBgLmJiYXBwZW5kYGApIGhhcyBubyBjb3JyZXNwb25kaW5nIHJlY2lwZSBmaWxlIChgYC5iYmBgKS4gVGhpcwogICAgICAgY29uZGl0aW9uIG9mdGVuIG9jY3VycyB3aGVuIGxheWVycyBnZXQgb3V0IG9mIHN5bmMgKGUuZy4gYGBvZS1jb3JlYGAKQEAgLTEwMywxMiArMTAzLDEyIEBACiAgICAgICBnaXZlbiBzb21ldGhpbmcgaXMgb3V0IG9mIHN5bmMuIEl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHdoZW4geW91cgogICAgICAgY2hhbmdlcyBhcmUgbm8gbG9uZ2VyIGJlaW5nIGFwcGxpZWQuCiAKLSAgIDp0ZXJtOmBCQl9ERUZBVUxUX1RBU0tgCisgICBCQl9ERUZBVUxUX1RBU0sKICAgICAgIFRoZSBkZWZhdWx0IHRhc2sgdG8gdXNlIHdoZW4gbm9uZSBpcyBzcGVjaWZpZWQgKGUuZy4gd2l0aCB0aGUgYGAtY2BgCiAgICAgICBjb21tYW5kIGxpbmUgb3B0aW9uKS4gVGhlIHRhc2sgbmFtZSBzcGVjaWZpZWQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZQogICAgICAgYGBkb19gYCBwcmVmaXguCiAKLSAgIDp0ZXJtOmBCQl9ESVNLTU9OX0RJUlNgCisgICBCQl9ESVNLTU9OX0RJUlMKICAgICAgIE1vbml0b3JzIGRpc2sgc3BhY2UgYW5kIGF2YWlsYWJsZSBpbm9kZXMgZHVyaW5nIHRoZSBidWlsZCBhbmQgYWxsb3dzCiAgICAgICB5b3UgdG8gY29udHJvbCB0aGUgYnVpbGQgYmFzZWQgb24gdGhlc2UgcGFyYW1ldGVycy4KIApAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICBmcmVlIGlub2RlcyBpbiB0aGUgYGAke1RNUERJUn1gYCBkaXJlY3RvcnkgZHJvcHMgYmVsb3cgMTAwIEtieXRlcy4gTm8KICAgICAgIGRpc2sgc3BhY2UgbW9uaXRvcmluZyBmb3IgdGhlIGRpcmVjdG9yeSBpdHNlbGYgb2NjdXJzIGluIHRoaXMgY2FzZS4KIAotICAgOnRlcm06YEJCX0RJU0tNT05fV0FSTklOVEVSVkFMYAorICAgQkJfRElTS01PTl9XQVJOSU5URVJWQUwKICAgICAgIERlZmluZXMgdGhlIGRpc2sgc3BhY2UgYW5kIGZyZWUgaW5vZGUgd2FybmluZyBpbnRlcnZhbHMuCiAKICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBgYEJCX0RJU0tNT05fV0FSTklOVEVSVkFMYGAgdmFyaWFibGUsIHlvdQpAQCAtMjE4LDcgKzIxOCw3IEBACiAgICAgICBiYXNlZCBvbiB0aGUgaW50ZXJ2YWwgb2NjdXIgZWFjaCB0aW1lIGEgcmVzcGVjdGl2ZSBpbnRlcnZhbCBpcwogICAgICAgcmVhY2hlZCBiZXlvbmQgdGhlIGluaXRpYWwgd2FybmluZyAoaS5lLiAxIEdieXRlcyBhbmQgMTAwIEtieXRlcykuCiAKLSAgIDp0ZXJtOmBCQl9FTlZfV0hJVEVMSVNUYAorICAgQkJfRU5WX1dISVRFTElTVAogICAgICAgU3BlY2lmaWVzIHRoZSBpbnRlcm5hbCB3aGl0ZWxpc3Qgb2YgdmFyaWFibGVzIHRvIGFsbG93IHRocm91Z2ggZnJvbQogICAgICAgdGhlIGV4dGVybmFsIGVudmlyb25tZW50IGludG8gQml0QmFrZSdzIGRhdGFzdG9yZS4gSWYgdGhlIHZhbHVlIG9mCiAgICAgICB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZwpAQCAtMjMwLDcgKzIzMCw3IEBACiAgICAgICAgICBZb3UgbXVzdCBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgZXh0ZXJuYWwgZW52aXJvbm1lbnQgaW4gb3JkZXIKICAgICAgICAgIGZvciBpdCB0byB3b3JrLgogCi0gICA6dGVybTpgQkJfRU5WX0VYVFJBV0hJVEVgCisgICBCQl9FTlZfRVhUUkFXSElURQogICAgICAgU3BlY2lmaWVzIGFuIGFkZGl0aW9uYWwgc2V0IG9mIHZhcmlhYmxlcyB0byBhbGxvdyB0aHJvdWdoICh3aGl0ZWxpc3QpCiAgICAgICBmcm9tIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCBpbnRvIEJpdEJha2UncyBkYXRhc3RvcmUuIFRoaXMgbGlzdCBvZgogICAgICAgdmFyaWFibGVzIGFyZSBvbiB0b3Agb2YgdGhlIGludGVybmFsIGxpc3Qgc2V0IGluCkBAIC0yNDEsMTkgKzI0MSwxOSBAQAogICAgICAgICAgWW91IG11c3Qgc2V0IHRoaXMgdmFyaWFibGUgaW4gdGhlIGV4dGVybmFsIGVudmlyb25tZW50IGluIG9yZGVyCiAgICAgICAgICBmb3IgaXQgdG8gd29yay4KIAotICAgOnRlcm06YEJCX0ZFVENIX1BSRU1JUlJPUk9OTFlgCisgICBCQl9GRVRDSF9QUkVNSVJST1JPTkxZCiAgICAgICBXaGVuIHNldCB0byAiMSIsIGNhdXNlcyBCaXRCYWtlJ3MgZmV0Y2hlciBtb2R1bGUgdG8gb25seSBzZWFyY2gKICAgICAgIDp0ZXJtOmBQUkVNSVJST1JTYCBmb3IgZmlsZXMuIEJpdEJha2Ugd2lsbCBub3QKICAgICAgIHNlYXJjaCB0aGUgbWFpbiA6dGVybTpgU1JDX1VSSWAgb3IKICAgICAgIDp0ZXJtOmBNSVJST1JTYC4KIAotICAgOnRlcm06YEJCX0ZJTEVOQU1FYAorICAgQkJfRklMRU5BTUUKICAgICAgIENvbnRhaW5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgcmVjaXBlIHRoYXQgb3ducyB0aGUgY3VycmVudGx5IHJ1bm5pbmcKICAgICAgIHRhc2suIEZvciBleGFtcGxlLCBpZiB0aGUgYGBkb19mZXRjaGBgIHRhc2sgdGhhdCByZXNpZGVzIGluIHRoZQogICAgICAgYGBteS1yZWNpcGUuYmJgYCBpcyBleGVjdXRpbmcsIHRoZSBgYEJCX0ZJTEVOQU1FYGAgdmFyaWFibGUgY29udGFpbnMKICAgICAgICIvZm9vL3BhdGgvbXktcmVjaXBlLmJiIi4KIAotICAgOnRlcm06YEJCRklMRVNfRFlOQU1JQ2AKKyAgIEJCRklMRVNfRFlOQU1JQwogICAgICAgQWN0aXZhdGVzIGNvbnRlbnQgZGVwZW5kaW5nIG9uIHByZXNlbmNlIG9mIGlkZW50aWZpZWQgbGF5ZXJzLiAgWW91CiAgICAgICBpZGVudGlmeSB0aGUgbGF5ZXJzIGJ5IHRoZSBjb2xsZWN0aW9ucyB0aGF0IHRoZSBsYXllcnMgZGVmaW5lLgogCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgIC93b3JrL215LWxheWVyL2JiYXBwZW5kcy9tZXRhLXNlY3VyaXR5LWlzYWZ3LyovKi8qLmJiYXBwZW5kCiAgICAgICAgICAvd29yay9teS1sYXllci9iYmFwcGVuZHMvb3BlbmVtYmVkZGVkLWNvcmUvbWV0YS8qLyovKi5iYmFwcGVuZAogCi0gICA6dGVybTpgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTYAorICAgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTCiAgICAgICBDYXVzZXMgdGFyYmFsbHMgb2YgdGhlIEdpdCByZXBvc2l0b3JpZXMsIGluY2x1ZGluZyB0aGUgR2l0IG1ldGFkYXRhLAogICAgICAgdG8gYmUgcGxhY2VkIGluIHRoZSA6dGVybTpgRExfRElSYCBkaXJlY3RvcnkuIEFueW9uZQogICAgICAgd2lzaGluZyB0byBjcmVhdGUgYSBzb3VyY2UgbWlycm9yIHdvdWxkIHdhbnQgdG8gZW5hYmxlIHRoaXMgdmFyaWFibGUuCkBAIC0zMDIsNyArMzAyLDcgQEAKIAogICAgICAgICAgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiCiAKLSAgIDp0ZXJtOmBCQl9IQVNIQ09ORklHX1dISVRFTElTVGAKKyAgIEJCX0hBU0hDT05GSUdfV0hJVEVMSVNUCiAgICAgICBMaXN0cyB2YXJpYWJsZXMgdGhhdCBhcmUgZXhjbHVkZWQgZnJvbSBiYXNlIGNvbmZpZ3VyYXRpb24gY2hlY2tzdW0sCiAgICAgICB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgY2FjaGUgY2FuIGJlIHJldXNlZC4KIApAQCAtMzE0LDE0ICszMTQsMTQgQEAKICAgICAgIGFuZCBgYERBVEVgYCBiZWNhdXNlIHRoZXNlIHZhcmlhYmxlcyBhcmUgYWx3YXlzIGNoYW5naW5nLiBJZiB5b3UgZGlkCiAgICAgICBub3QgZXhjbHVkZSB0aGVtLCBCaXRCYWtlIHdvdWxkIG5ldmVyIHJldXNlIHRoZSBjYWNoZS4KIAotICAgOnRlcm06YEJCX0hBU0hCQVNFX1dISVRFTElTVGAKKyAgIEJCX0hBU0hCQVNFX1dISVRFTElTVAogICAgICAgTGlzdHMgdmFyaWFibGVzIHRoYXQgYXJlIGV4Y2x1ZGVkIGZyb20gY2hlY2tzdW0gYW5kIGRlcGVuZGVuY3kgZGF0YS4KICAgICAgIFZhcmlhYmxlcyB0aGF0IGFyZSBleGNsdWRlZCBjYW4gdGhlcmVmb3JlIGNoYW5nZSB3aXRob3V0IGFmZmVjdGluZwogICAgICAgdGhlIGNoZWNrc3VtIG1lY2hhbmlzbS4gQSBjb21tb24gZXhhbXBsZSB3b3VsZCBiZSB0aGUgdmFyaWFibGUgZm9yCiAgICAgICB0aGUgcGF0aCBvZiB0aGUgYnVpbGQuIEJpdEJha2UncyBvdXRwdXQgc2hvdWxkIG5vdCAoYW5kIHVzdWFsbHkgZG9lcwogICAgICAgbm90KSBkZXBlbmQgb24gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCB3YXMgYnVpbHQuCiAKLSAgIDp0ZXJtOmBCQl9IQVNIQ0hFQ0tfRlVOQ1RJT05gCisgICBCQl9IQVNIQ0hFQ0tfRlVOQ1RJT04KICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gY2FsbCBkdXJpbmcgdGhlICJzZXRzY2VuZSIgcGFydAogICAgICAgb2YgdGhlIHRhc2sncyBleGVjdXRpb24gaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlIGxpc3Qgb2YgdGFzayBoYXNoZXMuCiAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgbGlzdCBvZiBzZXRzY2VuZSB0YXNrcyB0aGF0IHNob3VsZCBiZQpAQCAtMzM1LDE5ICszMzUsMTkgQEAKICAgICAgIEhvd2V2ZXIsIHRoZSBtb3JlIGFjY3VyYXRlIHRoZSBkYXRhIHJldHVybmVkLCB0aGUgbW9yZSBlZmZpY2llbnQgdGhlCiAgICAgICBidWlsZCB3aWxsIGJlLgogCi0gICA6dGVybTpgQkJfSU5WQUxJRENPTkZgCisgICBCQl9JTlZBTElEQ09ORgogICAgICAgVXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYENvbmZpZ1BhcnNlZGBgIGV2ZW50IHRvIHRyaWdnZXIKICAgICAgIHJlLXBhcnNpbmcgdGhlIGJhc2UgbWV0YWRhdGEgKGkuZS4gYWxsIHRoZSByZWNpcGVzKS4gVGhlCiAgICAgICBgYENvbmZpZ1BhcnNlZGBgIGV2ZW50IGNhbiBzZXQgdGhlIHZhcmlhYmxlIHRvIHRyaWdnZXIgdGhlIHJlLXBhcnNlLgogICAgICAgWW91IG11c3QgYmUgY2FyZWZ1bCB0byBhdm9pZCByZWN1cnNpdmUgbG9vcHMgd2l0aCB0aGlzIGZ1bmN0aW9uYWxpdHkuCiAKLSAgIDp0ZXJtOmBCQl9MT0dDT05GSUdgCisgICBCQl9MT0dDT05GSUcKICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGNvbmZpZyBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHVzZXIgbG9nZ2luZwogICAgICAgY29uZmlndXJhdGlvbi4gU2VlCiAgICAgICA6cmVmOmBiaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uOmxvZ2dpbmdgCiAgICAgICBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogCi0gICA6dGVybTpgQkJfTE9HRk1UYAorICAgQkJfTE9HRk1UCiAgICAgICBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGxvZyBmaWxlcyBzYXZlZCBpbnRvCiAgICAgICBgYCR7YGBcIDp0ZXJtOmBUYFwgYGB9YGAuIEJ5IGRlZmF1bHQsIHRoZSBgYEJCX0xPR0ZNVGBgCiAgICAgICB2YXJpYWJsZSBpcyB1bmRlZmluZWQgYW5kIHRoZSBsb2cgZmlsZSBuYW1lcyBnZXQgY3JlYXRlZCB1c2luZyB0aGUKQEAgLTM1OCwxMyArMzU4LDEzIEBACiAgICAgICBJZiB5b3Ugd2FudCB0byBmb3JjZSBsb2cgZmlsZXMgdG8gdGFrZSBhIHNwZWNpZmljIG5hbWUsIHlvdSBjYW4gc2V0IHRoaXMKICAgICAgIHZhcmlhYmxlIGluIGEgY29uZmlndXJhdGlvbiBmaWxlLgogCi0gICA6dGVybTpgQkJfTklDRV9MRVZFTGAKKyAgIEJCX05JQ0VfTEVWRUwKICAgICAgIEFsbG93cyBCaXRCYWtlIHRvIHJ1biBhdCBhIHNwZWNpZmljIHByaW9yaXR5IChpLmUuIG5pY2UgbGV2ZWwpLgogICAgICAgU3lzdGVtIHBlcm1pc3Npb25zIHVzdWFsbHkgbWVhbiB0aGF0IEJpdEJha2UgY2FuIHJlZHVjZSBpdHMgcHJpb3JpdHkKICAgICAgIGJ1dCBub3QgcmFpc2UgaXQgYWdhaW4uIFNlZSA6dGVybTpgQkJfVEFTS19OSUNFX0xFVkVMYCBmb3IKICAgICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBCQl9OT19ORVRXT1JLYAorICAgQkJfTk9fTkVUV09SSwogICAgICAgRGlzYWJsZXMgbmV0d29yayBhY2Nlc3MgaW4gdGhlIEJpdEJha2UgZmV0Y2hlciBtb2R1bGVzLiBXaXRoIHRoaXMKICAgICAgIGFjY2VzcyBkaXNhYmxlZCwgYW55IGNvbW1hbmQgdGhhdCBhdHRlbXB0cyB0byBhY2Nlc3MgdGhlIG5ldHdvcmsKICAgICAgIGJlY29tZXMgYW4gZXJyb3IuCkBAIC0zNzMsMTYgKzM3MywxNiBAQAogICAgICAgcnVubmluZyBidWlsZHMgd2hlbiBub3QgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldCwgYW5kIHdoZW4gb3BlcmF0aW5nCiAgICAgICBpbiBjZXJ0YWluIGtpbmRzIG9mIGZpcmV3YWxsIGVudmlyb25tZW50cy4KIAotICAgOnRlcm06YEJCX05VTUJFUl9USFJFQURTYAorICAgQkJfTlVNQkVSX1RIUkVBRFMKICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcyBCaXRCYWtlIHNob3VsZCBydW4gaW4gcGFyYWxsZWwgYXQgYW55IG9uZQogICAgICAgdGltZS4gSWYgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBzdXBwb3J0cyBtdWx0aXBsZSBjb3JlcywgYSBnb29kCiAgICAgICBydWxlIG9mIHRodW1iIGlzIHRvIHNldCB0aGlzIHZhcmlhYmxlIHRvIHR3aWNlIHRoZSBudW1iZXIgb2YgY29yZXMuCiAKLSAgIDp0ZXJtOmBCQl9OVU1CRVJfUEFSU0VfVEhSRUFEU2AKKyAgIEJCX05VTUJFUl9QQVJTRV9USFJFQURTCiAgICAgICBTZXRzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBCaXRCYWtlIHVzZXMgd2hlbiBwYXJzaW5nLiBCeSBkZWZhdWx0LCB0aGUKICAgICAgIG51bWJlciBvZiB0aHJlYWRzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY29yZXMgb24gdGhlIHN5c3RlbS4KIAotICAgOnRlcm06YEJCX09SSUdFTlZgCisgICBCQl9PUklHRU5WCiAgICAgICBDb250YWlucyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGV4dGVybmFsIGVudmlyb25tZW50IGluIHdoaWNoIEJpdEJha2UKICAgICAgIHdhcyBydW4uIFRoZSBjb3B5IGlzIHRha2VuIGJlZm9yZSBhbnkgd2hpdGVsaXN0ZWQgdmFyaWFibGUgdmFsdWVzIGFyZQogICAgICAgZmlsdGVyZWQgaW50byBCaXRCYWtlJ3MgZGF0YXN0b3JlLgpAQCAtMzkyLDcgKzM5Miw3IEBACiAgICAgICAgICBUaGUgY29udGVudHMgb2YgdGhpcyB2YXJpYWJsZSBpcyBhIGRhdGFzdG9yZSBvYmplY3QgdGhhdCBjYW4gYmUKICAgICAgICAgIHF1ZXJpZWQgdXNpbmcgdGhlIG5vcm1hbCBkYXRhc3RvcmUgb3BlcmF0aW9ucy4KIAotICAgOnRlcm06YEJCX1BSRVNFUlZFX0VOVmAKKyAgIEJCX1BSRVNFUlZFX0VOVgogICAgICAgRGlzYWJsZXMgd2hpdGVsaXN0aW5nIGFuZCBpbnN0ZWFkIGFsbG93cyBhbGwgdmFyaWFibGVzIHRocm91Z2ggZnJvbQogICAgICAgdGhlIGV4dGVybmFsIGVudmlyb25tZW50IGludG8gQml0QmFrZSdzIGRhdGFzdG9yZS4KIApAQCAtNDAxLDcgKzQwMSw3IEBACiAgICAgICAgICBZb3UgbXVzdCBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgZXh0ZXJuYWwgZW52aXJvbm1lbnQgaW4gb3JkZXIKICAgICAgICAgIGZvciBpdCB0byB3b3JrLgogCi0gICA6dGVybTpgQkJfUlVORk1UYAorICAgQkJfUlVORk1UCiAgICAgICBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGV4ZWN1dGFibGUgc2NyaXB0IGZpbGVzIChpLmUuIHJ1biBmaWxlcykKICAgICAgIHNhdmVkIGludG8gYGAke2BgXCA6dGVybTpgVGBcIGBgfWBgLiBCeSBkZWZhdWx0LCB0aGUKICAgICAgIGBgQkJfUlVORk1UYGAgdmFyaWFibGUgaXMgdW5kZWZpbmVkIGFuZCB0aGUgcnVuIGZpbGUgbmFtZXMgZ2V0CkBAIC00MTIsMTIgKzQxMiwxMiBAQAogICAgICAgSWYgeW91IHdhbnQgdG8gZm9yY2UgcnVuIGZpbGVzIHRvIHRha2UgYSBzcGVjaWZpYyBuYW1lLCB5b3UgY2FuIHNldCB0aGlzCiAgICAgICB2YXJpYWJsZSBpbiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KIAotICAgOnRlcm06YEJCX1JVTlRBU0tgCisgICBCQl9SVU5UQVNLCiAgICAgICBDb250YWlucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrLiBUaGUgdmFsdWUgaW5jbHVkZXMKICAgICAgIHRoZSAiZG9cXyIgcHJlZml4LiBGb3IgZXhhbXBsZSwgaWYgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBpcwogICAgICAgYGBkb19jb25maWdgYCwgdGhlIHZhbHVlIGlzICJkb19jb25maWciLgogCi0gICA6dGVybTpgQkJfU0NIRURVTEVSYAorICAgQkJfU0NIRURVTEVSCiAgICAgICBTZWxlY3RzIHRoZSBuYW1lIG9mIHRoZSBzY2hlZHVsZXIgdG8gdXNlIGZvciB0aGUgc2NoZWR1bGluZyBvZgogICAgICAgQml0QmFrZSB0YXNrcy4gVGhyZWUgb3B0aW9ucyBleGlzdDoKIApAQCAtNDMxLDE0ICs0MzEsMTQgQEAKICAgICAgIC0gICpjb21wbGV0aW9uKiAtIENhdXNlcyB0aGUgc2NoZWR1bGVyIHRvIHRyeSB0byBjb21wbGV0ZSBhIGdpdmVuCiAgICAgICAgICByZWNpcGUgb25jZSBpdHMgYnVpbGQgaGFzIHN0YXJ0ZWQuCiAKLSAgIDp0ZXJtOmBCQl9TQ0hFRFVMRVJTYAorICAgQkJfU0NIRURVTEVSUwogICAgICAgRGVmaW5lcyBjdXN0b20gc2NoZWR1bGVycyB0byBpbXBvcnQuIEN1c3RvbSBzY2hlZHVsZXJzIG5lZWQgdG8gYmUKICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgYGBSdW5RdWV1ZVNjaGVkdWxlcmBgIGNsYXNzLgogCiAgICAgICBGb3IgaW5mb3JtYXRpb24gaG93IHRvIHNlbGVjdCBhIHNjaGVkdWxlciwgc2VlIHRoZQogICAgICAgOnRlcm06YEJCX1NDSEVEVUxFUmAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBCQl9TRVRTQ0VORV9ERVBWQUxJRGAKKyAgIEJCX1NFVFNDRU5FX0RFUFZBTElECiAgICAgICBTcGVjaWZpZXMgYSBmdW5jdGlvbiBCaXRCYWtlIGNhbGxzIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIEJpdEJha2UKICAgICAgIHJlcXVpcmVzIGEgc2V0c2NlbmUgZGVwZW5kZW5jeSB0byBiZSBtZXQuCiAKQEAgLTQ0OCw3ICs0NDgsNyBAQAogICAgICAgVGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSB0aGlzIHZhcmlhYmxlIHJldHVybnMgYSAiVHJ1ZSIgb3IgIkZhbHNlIgogICAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgbWV0LgogCi0gICA6dGVybTpgQkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMmAKKyAgIEJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTjIKICAgICAgIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRvIGNhbGwgdGhhdCB2ZXJpZmllcyB0aGUgbGlzdCBvZiBwbGFubmVkIHRhc2sKICAgICAgIGV4ZWN1dGlvbiBiZWZvcmUgdGhlIG1haW4gdGFzayBleGVjdXRpb24gaGFwcGVucy4gVGhlIGZ1bmN0aW9uIGlzCiAgICAgICBjYWxsZWQgb25jZSBCaXRCYWtlIGhhcyBhIGxpc3Qgb2Ygc2V0c2NlbmUgdGFza3MgdGhhdCBoYXZlIHJ1biBhbmQKQEAgLTQ1OSw3ICs0NTksNyBAQAogICAgICAgdGhlIGZ1bmN0aW9uIGNhbiBmb3JjZSBCaXRCYWtlIHRvIHJ1biB0aGUgdGFzaywgd2hpY2ggaXMgbmVjZXNzYXJ5CiAgICAgICB1bmRlciBjZXJ0YWluIG1ldGFkYXRhIGRlZmluZWQgY2lyY3Vtc3RhbmNlcy4KIAotICAgOnRlcm06YEJCX1NJR05BVFVSRV9FWENMVURFX0ZMQUdTYAorICAgQkJfU0lHTkFUVVJFX0VYQ0xVREVfRkxBR1MKICAgICAgIExpc3RzIHZhcmlhYmxlIGZsYWdzICh2YXJmbGFncykgdGhhdCBjYW4gYmUgc2FmZWx5IGV4Y2x1ZGVkIGZyb20KICAgICAgIGNoZWNrc3VtIGFuZCBkZXBlbmRlbmN5IGRhdGEgZm9yIGtleXMgaW4gdGhlIGRhdGFzdG9yZS4gV2hlbgogICAgICAgZ2VuZXJhdGluZyBjaGVja3N1bSBvciBkZXBlbmRlbmN5IGRhdGEgZm9yIGtleXMgaW4gdGhlIGRhdGFzdG9yZSwgdGhlCkBAIC00NjksNyArNDY5LDcgQEAKICAgICAgICI6cmVmOmBiaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGE6dmFyaWFibGUgZmxhZ3NgIgogICAgICAgc2VjdGlvbi4KIAotICAgOnRlcm06YEJCX1NJR05BVFVSRV9IQU5ETEVSYAorICAgQkJfU0lHTkFUVVJFX0hBTkRMRVIKICAgICAgIERlZmluZXMgdGhlIG5hbWUgb2YgdGhlIHNpZ25hdHVyZSBoYW5kbGVyIEJpdEJha2UgdXNlcy4gVGhlIHNpZ25hdHVyZQogICAgICAgaGFuZGxlciBkZWZpbmVzIHRoZSB3YXkgc3RhbXAgZmlsZXMgYXJlIGNyZWF0ZWQgYW5kIGhhbmRsZWQsIGlmIGFuZAogICAgICAgaG93IHRoZSBzaWduYXR1cmUgaXMgaW5jb3Jwb3JhdGVkIGludG8gdGhlIHN0YW1wcywgYW5kIGhvdyB0aGUKQEAgLTQ3OCw3ICs0NzgsNyBAQAogICAgICAgQSBuZXcgc2lnbmF0dXJlIGhhbmRsZXIgY2FuIGJlIGFkZGVkIGJ5IGluamVjdGluZyBhIGNsYXNzIGRlcml2ZWQKICAgICAgIGZyb20gdGhlIGBgU2lnbmF0dXJlR2VuZXJhdG9yYGAgY2xhc3MgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KIAotICAgOnRlcm06YEJCX1NSQ1JFVl9QT0xJQ1lgCisgICBCQl9TUkNSRVZfUE9MSUNZCiAgICAgICBEZWZpbmVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZmV0Y2hlciB3aGVuIGl0IGludGVyYWN0cyB3aXRoIHNvdXJjZQogICAgICAgY29udHJvbCBzeXN0ZW1zIGFuZCBkeW5hbWljIHNvdXJjZSByZXZpc2lvbnMuIFRoZQogICAgICAgYGBCQl9TUkNSRVZfUE9MSUNZYGAgdmFyaWFibGUgaXMgdXNlZnVsIHdoZW4gd29ya2luZyB3aXRob3V0IGEKQEAgLTQ5Miw3ICs0OTIsNyBAQAogICAgICAgLSAgKmNsZWFyKiAtIFF1ZXJpZXMgdGhlIHNvdXJjZSBjb250cm9scyBzeXN0ZW0gZXZlcnkgdGltZS4gV2l0aCB0aGlzCiAgICAgICAgICBwb2xpY3ksIHRoZXJlIGlzIG5vIGNhY2hlLiBUaGUgImNsZWFyIiBwb2xpY3kgaXMgdGhlIGRlZmF1bHQuCiAKLSAgIDp0ZXJtOmBCQl9TVEFNUF9QT0xJQ1lgCisgICBCQl9TVEFNUF9QT0xJQ1kKICAgICAgIERlZmluZXMgdGhlIG1vZGUgdXNlZCBmb3IgaG93IHRpbWVzdGFtcHMgb2Ygc3RhbXAgZmlsZXMgYXJlIGNvbXBhcmVkLgogICAgICAgWW91IGNhbiBzZXQgdGhlIHZhcmlhYmxlIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1vZGVzOgogCkBAIC01MTAsMTggKzUxMCwxOCBAQAogICAgICAgICAgU3RhbXAgcG9saWNpZXMgYXJlIGxhcmdlbHkgb2Jzb2xldGUgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mCiAgICAgICAgICBzZXRzY2VuZSB0YXNrcy4KIAotICAgOnRlcm06YEJCX1NUQU1QX1dISVRFTElTVGAKKyAgIEJCX1NUQU1QX1dISVRFTElTVAogICAgICAgTGlzdHMgZmlsZXMgd2hvc2Ugc3RhbXAgZmlsZSB0aW1lc3RhbXBzIGFyZSBjb21wYXJlZCB3aGVuIHRoZSBzdGFtcAogICAgICAgcG9saWN5IG1vZGUgaXMgc2V0IHRvICJ3aGl0ZWxpc3QiLiBGb3IgaW5mb3JtYXRpb24gb24gc3RhbXAgcG9saWNpZXMsCiAgICAgICBzZWUgdGhlIDp0ZXJtOmBCQl9TVEFNUF9QT0xJQ1lgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgQkJfU1RSSUNUX0NIRUNLU1VNYAorICAgQkJfU1RSSUNUX0NIRUNLU1VNCiAgICAgICBTZXRzIGEgbW9yZSBzdHJpY3QgY2hlY2tzdW0gbWVjaGFuaXNtIGZvciBub24tbG9jYWwgVVJMcy4gU2V0dGluZwogICAgICAgdGhpcyB2YXJpYWJsZSB0byBhIHZhbHVlIGNhdXNlcyBCaXRCYWtlIHRvIHJlcG9ydCBhbiBlcnJvciBpZiBpdAogICAgICAgZW5jb3VudGVycyBhIG5vbi1sb2NhbCBVUkwgdGhhdCBkb2VzIG5vdCBoYXZlIGF0IGxlYXN0IG9uZSBjaGVja3N1bQogICAgICAgc3BlY2lmaWVkLgogCi0gICA6dGVybTpgQkJfVEFTS19JT05JQ0VfTEVWRUxgCisgICBCQl9UQVNLX0lPTklDRV9MRVZFTAogICAgICAgQWxsb3dzIGFkanVzdG1lbnQgb2YgYSB0YXNrJ3MgSW5wdXQvT3V0cHV0IHByaW9yaXR5LiBEdXJpbmcKICAgICAgIEF1dG9idWlsZGVyIHRlc3RpbmcsIHJhbmRvbSBmYWlsdXJlcyBjYW4gb2NjdXIgZm9yIHRhc2tzIGR1ZSB0byBJL08KICAgICAgIHN0YXJ2YXRpb24uIFRoZXNlIGZhaWx1cmVzIG9jY3VyIGR1cmluZyB2YXJpb3VzIFFFTVUgcnVudGltZQpAQCAtNTUzLDkgKzU1Myw5IEBACiAgICAgICAgICBkZXZpY2UuIFRvIHNlbGVjdCB0aGUgc2NoZWR1bGVyLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm0gd2hlcmUKICAgICAgICAgIGRldmljZSBpcyB0aGUgZGV2aWNlIChlLmcuIHNkYSwgc2RiLCBhbmQgc28gZm9ydGgpOiA6OgogCi0gICAgICAgICAgICAkIHN1ZG8gc2ggLWMgImVjaG8gY2ZxID4gL3N5cy9ibG9jay9kZXZpY2UvcXVldS9zY2hlZHVsZXIiCisgICAgICAgICAgICAkIHN1ZG8gc2ggLWMg4oCcZWNobyBjZnEgPiAvc3lzL2Jsb2NrL2RldmljZS9xdWV1L3NjaGVkdWxlcgogCi0gICA6dGVybTpgQkJfVEFTS19OSUNFX0xFVkVMYAorICAgQkJfVEFTS19OSUNFX0xFVkVMCiAgICAgICBBbGxvd3Mgc3BlY2lmaWMgdGFza3MgdG8gY2hhbmdlIHRoZWlyIHByaW9yaXR5IChpLmUuIG5pY2UgbGV2ZWwpLgogCiAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIGluIGNvbWJpbmF0aW9uIHdpdGggdGFzayBvdmVycmlkZXMgdG8gcmFpc2UKQEAgLTU2NCwyMiArNTY0LDIyIEBACiAgICAgICBpbiBpbWFnZXMgaXMgZ2l2ZW4gYSBoaWdoZXIgcHJpb3JpdHkgYXMgY29tcGFyZWQgdG8gYnVpbGQgdGFza3MgdG8KICAgICAgIGVuc3VyZSB0aGF0IGltYWdlcyBkbyBub3Qgc3VmZmVyIHRpbWVvdXRzIG9uIGxvYWRlZCBzeXN0ZW1zLgogCi0gICA6dGVybTpgQkJfVEFTS0hBU0hgCisgICBCQl9UQVNLSEFTSAogICAgICAgV2l0aGluIGFuIGV4ZWN1dGluZyB0YXNrLCB0aGlzIHZhcmlhYmxlIGhvbGRzIHRoZSBoYXNoIG9mIHRoZSB0YXNrIGFzCiAgICAgICByZXR1cm5lZCBieSB0aGUgY3VycmVudGx5IGVuYWJsZWQgc2lnbmF0dXJlIGdlbmVyYXRvci4KIAotICAgOnRlcm06YEJCX1ZFUkJPU0VfTE9HU2AKKyAgIEJCX1ZFUkJPU0VfTE9HUwogICAgICAgQ29udHJvbHMgaG93IHZlcmJvc2UgQml0QmFrZSBpcyBkdXJpbmcgYnVpbGRzLiBJZiBzZXQsIHNoZWxsIHNjcmlwdHMKICAgICAgIGVjaG8gY29tbWFuZHMgYW5kIHNoZWxsIHNjcmlwdCBvdXRwdXQgYXBwZWFycyBvbiBzdGFuZGFyZCBvdXQKICAgICAgIChzdGRvdXQpLgogCi0gICA6dGVybTpgQkJfV09SS0VSQ09OVEVYVGAKKyAgIEJCX1dPUktFUkNPTlRFWFQKICAgICAgIFNwZWNpZmllcyBpZiB0aGUgY3VycmVudCBjb250ZXh0IGlzIGV4ZWN1dGluZyBhIHRhc2suIEJpdEJha2Ugc2V0cwogICAgICAgdGhpcyB2YXJpYWJsZSB0byAiMSIgd2hlbiBhIHRhc2sgaXMgYmVpbmcgZXhlY3V0ZWQuIFRoZSB2YWx1ZSBpcyBub3QKICAgICAgIHNldCB3aGVuIHRoZSB0YXNrIGlzIGluIHNlcnZlciBjb250ZXh0IGR1cmluZyBwYXJzaW5nIG9yIGV2ZW50CiAgICAgICBoYW5kbGluZy4KIAotICAgOnRlcm06YEJCQ0xBU1NFWFRFTkRgCisgICBCQkNMQVNTRVhURU5ECiAgICAgICBBbGxvd3MgeW91IHRvIGV4dGVuZCBhIHJlY2lwZSBzbyB0aGF0IGl0IGJ1aWxkcyB2YXJpYW50cyBvZiB0aGUKICAgICAgIHNvZnR3YXJlLiBTb21lIGV4YW1wbGVzIG9mIHRoZXNlIHZhcmlhbnRzIGZvciByZWNpcGVzIGZyb20gdGhlCiAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YSBhcmUgIm5hdGl2ZXMiIHN1Y2ggYXMgYGBxdWlsdC1uYXRpdmVgYCwKQEAgLTYxMSw3ICs2MTEsNyBAQAogICAgICAgICAgc2luY2UgYGBpbmNsdWRlYGAgc3RhdGVtZW50cyBhcmUgcHJvY2Vzc2VkIHdoZW4gdGhlIHJlY2lwZSBpcwogICAgICAgICAgcGFyc2VkLgogCi0gICA6dGVybTpgQkJERUJVR2AKKyAgIEJCREVCVUcKICAgICAgIFNldHMgdGhlIEJpdEJha2UgZGVidWcgb3V0cHV0IGxldmVsIHRvIGEgc3BlY2lmaWMgdmFsdWUgYXMKICAgICAgIGluY3JlbWVudGVkIGJ5IHRoZSBgYC1EYGAgY29tbWFuZCBsaW5lIG9wdGlvbi4KIApAQCAtNjIwLDE5ICs2MjAsMTkgQEAKICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlIGluIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCBpbiBvcmRlcgogICAgICAgICAgZm9yIGl0IHRvIHdvcmsuCiAKLSAgIDp0ZXJtOmBCQkZJTEVfQ09MTEVDVElPTlNgCisgICBCQkZJTEVfQ09MTEVDVElPTlMKICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiBjb25maWd1cmVkIGxheWVycy4gVGhlc2UgbmFtZXMgYXJlIHVzZWQgdG8gZmluZAogICAgICAgdGhlIG90aGVyIGBgQkJGSUxFXypgYCB2YXJpYWJsZXMuIFR5cGljYWxseSwgZWFjaCBsYXllciBhcHBlbmRzIGl0cwogICAgICAgbmFtZSB0byB0aGlzIHZhcmlhYmxlIGluIGl0cyBgYGNvbmYvbGF5ZXIuY29uZmBgIGZpbGUuCiAKLSAgIDp0ZXJtOmBCQkZJTEVfUEFUVEVSTmAKKyAgIEJCRklMRV9QQVRURVJOCiAgICAgICBWYXJpYWJsZSB0aGF0IGV4cGFuZHMgdG8gbWF0Y2ggZmlsZXMgZnJvbQogICAgICAgOnRlcm06YEJCRklMRVNgIGluIGEgcGFydGljdWxhciBsYXllci4gVGhpcwogICAgICAgdmFyaWFibGUgaXMgdXNlZCBpbiB0aGUgYGBjb25mL2xheWVyLmNvbmZgYCBmaWxlIGFuZCBtdXN0IGJlIHN1ZmZpeGVkCiAgICAgICB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllciAoZS5nLgogICAgICAgYGBCQkZJTEVfUEFUVEVSTl9lbWVubG93YGApLgogCi0gICA6dGVybTpgQkJGSUxFX1BSSU9SSVRZYAorICAgQkJGSUxFX1BSSU9SSVRZCiAgICAgICBBc3NpZ25zIHRoZSBwcmlvcml0eSBmb3IgcmVjaXBlIGZpbGVzIGluIGVhY2ggbGF5ZXIuCiAKICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHNhbWUgcmVjaXBlIGFwcGVhcnMKQEAgLTY1OCw3ICs2NTgsNyBAQAogICAgICAgICAgWW91IGNhbiB1c2UgdGhlIGNvbW1hbmQgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgdG8gbGlzdCBhbGwKICAgICAgICAgIGNvbmZpZ3VyZWQgbGF5ZXJzIGFsb25nIHdpdGggdGhlaXIgcHJpb3JpdGllcy4KIAotICAgOnRlcm06YEJCRklMRVNgCisgICBCQkZJTEVTCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJlY2lwZSBmaWxlcyBCaXRCYWtlIHVzZXMgdG8gYnVpbGQKICAgICAgIHNvZnR3YXJlLgogCkBAIC02NjcsMjEgKzY2NywyMSBAQAogICAgICAgRm9yIGRldGFpbHMgb24gdGhlIHN5bnRheCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGJ5IGZvbGxvd2luZyB0aGUKICAgICAgIHByZXZpb3VzIGxpbmsuCiAKLSAgIDp0ZXJtOmBCQklOQ0xVREVEYAorICAgQkJJTkNMVURFRAogICAgICAgQ29udGFpbnMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwgb2YgYWxsIGZpbGVzIHRoYXQgQml0QmFrZSdzCiAgICAgICBwYXJzZXIgaW5jbHVkZWQgZHVyaW5nIHBhcnNpbmcgb2YgdGhlIGN1cnJlbnQgZmlsZS4KIAotICAgOnRlcm06YEJCSU5DTFVERUxPR1NgCisgICBCQklOQ0xVREVMT0dTCiAgICAgICBJZiBzZXQgdG8gYSB2YWx1ZSwgZW5hYmxlcyBwcmludGluZyB0aGUgdGFzayBsb2cgd2hlbiByZXBvcnRpbmcgYQogICAgICAgZmFpbGVkIHRhc2suCiAKLSAgIDp0ZXJtOmBCQklOQ0xVREVMT0dTX0xJTkVTYAorICAgQkJJTkNMVURFTE9HU19MSU5FUwogICAgICAgSWYgOnRlcm06YEJCSU5DTFVERUxPR1NgIGlzIHNldCwgc3BlY2lmaWVzCiAgICAgICB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgZnJvbSB0aGUgdGFzayBsb2cgZmlsZSB0byBwcmludCB3aGVuCiAgICAgICByZXBvcnRpbmcgYSBmYWlsZWQgdGFzay4gSWYgeW91IGRvIG5vdCBzZXQgYGBCQklOQ0xVREVMT0dTX0xJTkVTYGAsCiAgICAgICB0aGUgZW50aXJlIGxvZyBpcyBwcmludGVkLgogCi0gICA6dGVybTpgQkJMQVlFUlNgCisgICBCQkxBWUVSUwogICAgICAgTGlzdHMgdGhlIGxheWVycyB0byBlbmFibGUgZHVyaW5nIHRoZSBidWlsZC4gVGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkCiAgICAgICBpbiB0aGUgYGBiYmxheWVycy5jb25mYGAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCiAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6IDo6CkBAIC02OTYsMTIgKzY5NiwxMiBAQAogICAgICAgVGhpcyBleGFtcGxlIGVuYWJsZXMgZm91ciBsYXllcnMsIG9uZSBvZiB3aGljaCBpcyBhIGN1c3RvbSwgdXNlci1kZWZpbmVkCiAgICAgICBsYXllciBuYW1lZCBgYG1ldGEtbXlrZXJuZWxgYC4KIAotICAgOnRlcm06YEJCTEFZRVJTX0ZFVENIX0RJUmAKKyAgIEJCTEFZRVJTX0ZFVENIX0RJUgogICAgICAgU2V0cyB0aGUgYmFzZSBsb2NhdGlvbiB3aGVyZSBsYXllcnMgYXJlIHN0b3JlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQKICAgICAgIGluIGNvbmp1bmN0aW9uIHdpdGggYGBiaXRiYWtlLWxheWVycyBsYXllcmluZGV4LWZldGNoYGAgYW5kIHRlbGxzCiAgICAgICBgYGJpdGJha2UtbGF5ZXJzYGAgd2hlcmUgdG8gcGxhY2UgdGhlIGZldGNoZWQgbGF5ZXJzLgogCi0gICA6dGVybTpgQkJNQVNLYAorICAgQkJNQVNLCiAgICAgICBQcmV2ZW50cyBCaXRCYWtlIGZyb20gcHJvY2Vzc2luZyByZWNpcGVzIGFuZCByZWNpcGUgYXBwZW5kIGZpbGVzLgogCiAgICAgICBZb3UgY2FuIHVzZSB0aGUgYGBCQk1BU0tgYCB2YXJpYWJsZSB0byAiaGlkZSIgdGhlc2UgYGAuYmJgYCBhbmQKQEAgLTczNyw3ICs3MzcsNyBAQAogICAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIGEgZGlyZWN0b3J5IG5hbWUsIHVzZSB0aGUgdHJhaWxpbmcgc2xhc2ggY2hhcmFjdGVyCiAgICAgICAgICB0byBlbnN1cmUgeW91IG1hdGNoIGp1c3QgdGhhdCBkaXJlY3RvcnkgbmFtZS4KIAotICAgOnRlcm06YEJCTVVMVElDT05GSUdgCisgICBCQk1VTFRJQ09ORklHCiAgICAgICBFbmFibGVzIEJpdEJha2UgdG8gcGVyZm9ybSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkcyBhbmQgbGlzdHMKICAgICAgIGVhY2ggc2VwYXJhdGUgY29uZmlndXJhdGlvbiAobXVsdGljb25maWcpLiBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlCiAgICAgICB0byBjYXVzZSBCaXRCYWtlIHRvIGJ1aWxkIG11bHRpcGxlIHRhcmdldHMgd2hlcmUgZWFjaCB0YXJnZXQgaGFzIGEKQEAgLTc1OCw3ICs3NTgsNyBAQAogICAgICAgIjpyZWY6YGJpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRybzpleGVjdXRpbmcgYSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkYCIKICAgICAgIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBCQlBBVEhgCisgICBCQlBBVEgKICAgICAgIFVzZWQgYnkgQml0QmFrZSB0byBsb2NhdGUgY2xhc3MgKGBgLmJiY2xhc3NgYCkgYW5kIGNvbmZpZ3VyYXRpb24KICAgICAgIChgYC5jb25mYGApIGZpbGVzLiBUaGlzIHZhcmlhYmxlIGlzIGFuYWxvZ291cyB0byB0aGUgYGBQQVRIYGAKICAgICAgIHZhcmlhYmxlLgpAQCAtNzcyLDE1ICs3NzIsMTUgQEAKICAgICAgICAgICQgZXhwb3J0IEJCUEFUSAogICAgICAgICAgJCBiaXRiYWtlIHRhcmdldAogCi0gICA6dGVybTpgQkJTRVJWRVJgCisgICBCQlNFUlZFUgogICAgICAgUG9pbnRzIHRvIHRoZSBzZXJ2ZXIgdGhhdCBydW5zIG1lbW9yeS1yZXNpZGVudCBCaXRCYWtlLiBUaGUgdmFyaWFibGUKICAgICAgIGlzIG9ubHkgdXNlZCB3aGVuIHlvdSBlbXBsb3kgbWVtb3J5LXJlc2lkZW50IEJpdEJha2UuCiAKLSAgIDp0ZXJtOmBCQlRBUkdFVFNgCisgICBCQlRBUkdFVFMKICAgICAgIEFsbG93cyB5b3UgdG8gdXNlIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGFkZCB0byB0aGUgbGlzdCBvZgogICAgICAgY29tbWFuZC1saW5lIHRhcmdldCByZWNpcGVzIHlvdSB3YW50IHRvIGJ1aWxkLgogCi0gICA6dGVybTpgQkJWRVJTSU9OU2AKKyAgIEJCVkVSU0lPTlMKICAgICAgIEFsbG93cyBhIHNpbmdsZSByZWNpcGUgdG8gYnVpbGQgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYSBwcm9qZWN0IGZyb20gYQogICAgICAgc2luZ2xlIHJlY2lwZSBmaWxlLiBZb3UgYWxzbyBhYmxlIHRvIHNwZWNpZnkgY29uZGl0aW9uYWwgbWV0YWRhdGEKICAgICAgIHVzaW5nIHRoZSA6dGVybTpgT1ZFUlJJREVTYCBtZWNoYW5pc20gZm9yIGEKQEAgLTc5MCw3ICs3OTAsNyBAQAogICAgICAgIjpyZWY6YGJpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YTp2YXJpYW50cyAtIGNsYXNzIGV4dGVuc2lvbiBtZWNoYW5pc21gIgogICAgICAgc2VjdGlvbi4KIAotICAgOnRlcm06YEJJVEJBS0VfVUlgCisgICBCSVRCQUtFX1VJCiAgICAgICBVc2VkIHRvIHNwZWNpZnkgdGhlIFVJIG1vZHVsZSB0byB1c2Ugd2hlbiBydW5uaW5nIEJpdEJha2UuIFVzaW5nIHRoaXMKICAgICAgIHZhcmlhYmxlIGlzIGVxdWl2YWxlbnQgdG8gdXNpbmcgdGhlIGBgLXVgYCBjb21tYW5kLWxpbmUgb3B0aW9uLgogCkBAIC03OTksMjMgKzc5OSwyMyBAQAogICAgICAgICAgWW91IG11c3Qgc2V0IHRoaXMgdmFyaWFibGUgaW4gdGhlIGV4dGVybmFsIGVudmlyb25tZW50IGluIG9yZGVyCiAgICAgICAgICBmb3IgaXQgdG8gd29yay4KIAotICAgOnRlcm06YEJVSUxETkFNRWAKKyAgIEJVSUxETkFNRQogICAgICAgQSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBidWlsZC4gVGhlIG5hbWUgZGVmYXVsdHMgdG8gYSBkYXRldGltZSBzdGFtcAogICAgICAgb2Ygd2hlbiB0aGUgYnVpbGQgd2FzIHN0YXJ0ZWQgYnV0IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBtZXRhZGF0YS4KIAotICAgOnRlcm06YEJaUkRJUmAKKyAgIEJaUkRJUgogICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBmaWxlcyBjaGVja2VkIG91dCBvZiBhIEJhemFhciBzeXN0ZW0gYXJlCiAgICAgICBzdG9yZWQuCiAKLSAgIDp0ZXJtOmBDQUNIRWAKKyAgIENBQ0hFCiAgICAgICBTcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBCaXRCYWtlIHVzZXMgdG8gc3RvcmUgYSBjYWNoZSBvZiB0aGUgbWV0YWRhdGEKICAgICAgIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgcGFyc2VkIGV2ZXJ5IHRpbWUgQml0QmFrZSBpcyBzdGFydGVkLgogCi0gICA6dGVybTpgQ1ZTRElSYAorICAgQ1ZTRElSCiAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGZpbGVzIGNoZWNrZWQgb3V0IHVuZGVyIHRoZSBDVlMgc3lzdGVtIGFyZQogICAgICAgc3RvcmVkLgogCi0gICA6dGVybTpgREVGQVVMVF9QUkVGRVJFTkNFYAorICAgREVGQVVMVF9QUkVGRVJFTkNFCiAgICAgICBTcGVjaWZpZXMgYSB3ZWFrIGJpYXMgZm9yIHJlY2lwZSBzZWxlY3Rpb24gcHJpb3JpdHkuCiAKICAgICAgIFRoZSBtb3N0IGNvbW1vbiB1c2FnZSBvZiB0aGlzIGlzIHZhcmlhYmxlIGlzIHRvIHNldCBpdCB0byAiLTEiIHdpdGhpbgpAQCAtODMwLDcgKzgzMCw3IEBACiAgICAgICAgICA6dGVybTpgQkJGSUxFX1BSSU9SSVRZYCBpZiB0aGF0IHZhcmlhYmxlIGlzIGRpZmZlcmVudCBiZXR3ZWVuIHR3bwogICAgICAgICAgbGF5ZXJzIHRoYXQgY29udGFpbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcmVjaXBlLgogCi0gICA6dGVybTpgREVQRU5EU2AKKyAgIERFUEVORFMKICAgICAgIExpc3RzIGEgcmVjaXBlJ3MgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgKGkuZS4gb3RoZXIgcmVjaXBlIGZpbGVzKS4KIAogICAgICAgQ29uc2lkZXIgdGhpcyBzaW1wbGUgZXhhbXBsZSBmb3IgdHdvIHJlY2lwZXMgbmFtZWQgImEiIGFuZCAiYiIgdGhhdApAQCAtODQ3LDE2ICs4NDcsMTYgQEAKICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBydW50aW1lIGRlcGVuZGVuY2llcywgc2VlIHRoZSA6dGVybTpgUkRFUEVORFNgCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YERFU0NSSVBUSU9OYAorICAgREVTQ1JJUFRJT04KICAgICAgIEEgbG9uZyBkZXNjcmlwdGlvbiBmb3IgdGhlIHJlY2lwZS4KIAotICAgOnRlcm06YERMX0RJUmAKKyAgIERMX0RJUgogICAgICAgVGhlIGNlbnRyYWwgZG93bmxvYWQgZGlyZWN0b3J5IHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc3RvcmUKICAgICAgIGRvd25sb2Fkcy4gQnkgZGVmYXVsdCwgYGBETF9ESVJgYCBnZXRzIGZpbGVzIHN1aXRhYmxlIGZvciBtaXJyb3JpbmcgZm9yCiAgICAgICBldmVyeXRoaW5nIGV4Y2VwdCBHaXQgcmVwb3NpdG9yaWVzLiBJZiB5b3Ugd2FudCB0YXJiYWxscyBvZiBHaXQKICAgICAgIHJlcG9zaXRvcmllcywgdXNlIHRoZSA6dGVybTpgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTYCB2YXJpYWJsZS4KIAotICAgOnRlcm06YEVYQ0xVREVfRlJPTV9XT1JMRGAKKyAgIEVYQ0xVREVfRlJPTV9XT1JMRAogICAgICAgRGlyZWN0cyBCaXRCYWtlIHRvIGV4Y2x1ZGUgYSByZWNpcGUgZnJvbSB3b3JsZCBidWlsZHMgKGkuZS4KICAgICAgIGBgYml0YmFrZSB3b3JsZGBgKS4gRHVyaW5nIHdvcmxkIGJ1aWxkcywgQml0QmFrZSBsb2NhdGVzLCBwYXJzZXMgYW5kCiAgICAgICBidWlsZHMgYWxsIHJlY2lwZXMgZm91bmQgaW4gZXZlcnkgbGF5ZXIgZXhwb3NlZCBpbiB0aGUKQEAgLTg3Miw2OCArODcyLDY4IEBACiAgICAgICAgICByZWNpcGUgdG8gYGBFWENMVURFX0ZST01fV09STERgYCBvbmx5IGVuc3VyZXMgdGhhdCB0aGUgcmVjaXBlIGlzIG5vdAogICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgbGlzdCBvZiBidWlsZCB0YXJnZXRzIGluIGEgd29ybGQgYnVpbGQuCiAKLSAgIDp0ZXJtOmBGQUtFUk9PVGAKKyAgIEZBS0VST09UCiAgICAgICBDb250YWlucyB0aGUgY29tbWFuZCB0byB1c2Ugd2hlbiBydW5uaW5nIGEgc2hlbGwgc2NyaXB0IGluIGEgZmFrZXJvb3QKICAgICAgIGVudmlyb25tZW50LiBUaGUgYGBGQUtFUk9PVGBgIHZhcmlhYmxlIGlzIG9ic29sZXRlIGFuZCBoYXMgYmVlbgogICAgICAgcmVwbGFjZWQgYnkgdGhlIG90aGVyIGBgRkFLRVJPT1QqYGAgdmFyaWFibGVzLiBTZWUgdGhlc2UgZW50cmllcyBpbgogICAgICAgdGhlIGdsb3NzYXJ5IGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgRkFLRVJPT1RCQVNFRU5WYAorICAgRkFLRVJPT1RCQVNFRU5WCiAgICAgICBMaXN0cyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IHdoZW4gZXhlY3V0aW5nIHRoZSBjb21tYW5kIGRlZmluZWQKICAgICAgIGJ5IDp0ZXJtOmBGQUtFUk9PVENNRGAgdGhhdCBzdGFydHMgdGhlCiAgICAgICBiaXRiYWtlLXdvcmtlciBwcm9jZXNzIGluIHRoZSBmYWtlcm9vdCBlbnZpcm9ubWVudC4KIAotICAgOnRlcm06YEZBS0VST09UQ01EYAorICAgRkFLRVJPT1RDTUQKICAgICAgIENvbnRhaW5zIHRoZSBjb21tYW5kIHRoYXQgc3RhcnRzIHRoZSBiaXRiYWtlLXdvcmtlciBwcm9jZXNzIGluIHRoZQogICAgICAgZmFrZXJvb3QgZW52aXJvbm1lbnQuCiAKLSAgIDp0ZXJtOmBGQUtFUk9PVERJUlNgCisgICBGQUtFUk9PVERJUlMKICAgICAgIExpc3RzIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSBiZWZvcmUgcnVubmluZyBhIHRhc2sgaW4gdGhlIGZha2Vyb290CiAgICAgICBlbnZpcm9ubWVudC4KIAotICAgOnRlcm06YEZBS0VST09URU5WYAorICAgRkFLRVJPT1RFTlYKICAgICAgIExpc3RzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgd2hlbiBydW5uaW5nIGEgdGFzayBpbiB0aGUKICAgICAgIGZha2Vyb290IGVudmlyb25tZW50LiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBlbnZpcm9ubWVudAogICAgICAgdmFyaWFibGVzIGFuZCB0aGUgZmFrZXJvb3QgZW52aXJvbm1lbnQsIHNlZSB0aGUKICAgICAgIDp0ZXJtOmBGQUtFUk9PVEJBU0VFTlZgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgRkFLRVJPT1ROT0VOVmAKKyAgIEZBS0VST09UTk9FTlYKICAgICAgIExpc3RzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgd2hlbiBydW5uaW5nIGEgdGFzayB0aGF0IGlzIG5vdCBpbgogICAgICAgdGhlIGZha2Vyb290IGVudmlyb25tZW50LiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBlbnZpcm9ubWVudAogICAgICAgdmFyaWFibGVzIGFuZCB0aGUgZmFrZXJvb3QgZW52aXJvbm1lbnQsIHNlZSB0aGUKICAgICAgIDp0ZXJtOmBGQUtFUk9PVEVOVmAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBGRVRDSENNRGAKKyAgIEZFVENIQ01ECiAgICAgICBEZWZpbmVzIHRoZSBjb21tYW5kIHRoZSBCaXRCYWtlIGZldGNoZXIgbW9kdWxlIGV4ZWN1dGVzIHdoZW4gcnVubmluZwogICAgICAgZmV0Y2ggb3BlcmF0aW9ucy4gWW91IG5lZWQgdG8gdXNlIGFuIG92ZXJyaWRlIHN1ZmZpeCB3aGVuIHlvdSB1c2UgdGhlCiAgICAgICB2YXJpYWJsZSAoZS5nLiBgYEZFVENIQ01EX2dpdGBgIG9yIGBgRkVUQ0hDTURfc3ZuYGApLgogCi0gICA6dGVybTpgRklMRWAKKyAgIEZJTEUKICAgICAgIFBvaW50cyBhdCB0aGUgY3VycmVudCBmaWxlLiBCaXRCYWtlIHNldHMgdGhpcyB2YXJpYWJsZSBkdXJpbmcgdGhlCiAgICAgICBwYXJzaW5nIHByb2Nlc3MgdG8gaWRlbnRpZnkgdGhlIGZpbGUgYmVpbmcgcGFyc2VkLiBCaXRCYWtlIGFsc28gc2V0cwogICAgICAgdGhpcyB2YXJpYWJsZSB3aGVuIGEgcmVjaXBlIGlzIGJlaW5nIGV4ZWN1dGVkIHRvIGlkZW50aWZ5IHRoZSByZWNpcGUKICAgICAgIGZpbGUuCiAKLSAgIDp0ZXJtOmBGSUxFU1BBVEhgCisgICBGSUxFU1BBVEgKICAgICAgIFNwZWNpZmllcyBkaXJlY3RvcmllcyBCaXRCYWtlIHVzZXMgd2hlbiBzZWFyY2hpbmcgZm9yIHBhdGNoZXMgYW5kCiAgICAgICBmaWxlcy4gVGhlICJsb2NhbCIgZmV0Y2hlciBtb2R1bGUgdXNlcyB0aGVzZSBkaXJlY3RvcmllcyB3aGVuCiAgICAgICBoYW5kbGluZyBgYGZpbGU6Ly9gYCBVUkxzLiBUaGUgdmFyaWFibGUgYmVoYXZlcyBsaWtlIGEgc2hlbGwgYGBQQVRIYGAKICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlLiBUaGUgdmFsdWUgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZgogICAgICAgZGlyZWN0b3JpZXMgdGhhdCBhcmUgc2VhcmNoZWQgbGVmdC10by1yaWdodCBpbiBvcmRlci4KIAotICAgOnRlcm06YEdJVERJUmAKKyAgIEdJVERJUgogICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSBpcyBzdG9yZWQKICAgICAgIHdoZW4gaXQgaXMgY2xvbmVkLgogCi0gICA6dGVybTpgSEdESVJgCisgICBIR0RJUgogICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBmaWxlcyBjaGVja2VkIG91dCBvZiBhIE1lcmN1cmlhbCBzeXN0ZW0gYXJlCiAgICAgICBzdG9yZWQuCiAKLSAgIDp0ZXJtOmBIT01FUEFHRWAKKyAgIEhPTUVQQUdFCiAgICAgICBXZWJzaXRlIHdoZXJlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvZnR3YXJlIHRoZSByZWNpcGUgaXMKICAgICAgIGJ1aWxkaW5nIGNhbiBiZSBmb3VuZC4KIAotICAgOnRlcm06YElOSEVSSVRgCisgICBJTkhFUklUCiAgICAgICBDYXVzZXMgdGhlIG5hbWVkIGNsYXNzIG9yIGNsYXNzZXMgdG8gYmUgaW5oZXJpdGVkIGdsb2JhbGx5LiBBbm9ueW1vdXMKICAgICAgIGZ1bmN0aW9ucyBpbiB0aGUgY2xhc3Mgb3IgY2xhc3NlcyBhcmUgbm90IGV4ZWN1dGVkIGZvciB0aGUgYmFzZQogICAgICAgY29uZmlndXJhdGlvbiBhbmQgaW4gZWFjaCBpbmRpdmlkdWFsIHJlY2lwZS4gVGhlIE9wZW5FbWJlZGRlZCBidWlsZApAQCAtOTQzLDcgKzk0Myw3IEBACiAgICAgICAiOnJlZjpgYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhOlxgXGBpbmhlcml0XGBcYCBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZWAiCiAgICAgICBzZWN0aW9uLgogCi0gICA6dGVybTpgTEFZRVJERVBFTkRTYAorICAgTEFZRVJERVBFTkRTCiAgICAgICBMaXN0cyB0aGUgbGF5ZXJzLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB1cG9uIHdoaWNoIHRoaXMgcmVjaXBlCiAgICAgICBkZXBlbmRzLiBPcHRpb25hbGx5LCB5b3UgY2FuIHNwZWNpZnkgYSBzcGVjaWZpYyBsYXllciB2ZXJzaW9uIGZvciBhCiAgICAgICBkZXBlbmRlbmN5IGJ5IGFkZGluZyBpdCB0byB0aGUgZW5kIG9mIHRoZSBsYXllciBuYW1lIHdpdGggYSBjb2xvbiwKQEAgLTk1NiwyMCArOTU2LDIwIEBACiAgICAgICB1c2UgdGhlIHNwZWNpZmljIGxheWVyIG5hbWUgYXMgYSBzdWZmaXggdG8gdGhlIHZhcmlhYmxlIChlLmcuCiAgICAgICBgYExBWUVSREVQRU5EU19teWxheWVyYGApLgogCi0gICA6dGVybTpgTEFZRVJESVJgCisgICBMQVlFUkRJUgogICAgICAgV2hlbiB1c2VkIGluc2lkZSB0aGUgYGBsYXllci5jb25mYGAgY29uZmlndXJhdGlvbiBmaWxlLCB0aGlzIHZhcmlhYmxlCiAgICAgICBwcm92aWRlcyB0aGUgcGF0aCBvZiB0aGUgY3VycmVudCBsYXllci4gVGhpcyB2YXJpYWJsZSBpcyBub3QKICAgICAgIGF2YWlsYWJsZSBvdXRzaWRlIG9mIGBgbGF5ZXIuY29uZmBgIGFuZCByZWZlcmVuY2VzIGFyZSBleHBhbmRlZAogICAgICAgaW1tZWRpYXRlbHkgd2hlbiBwYXJzaW5nIG9mIHRoZSBmaWxlIGNvbXBsZXRlcy4KIAotICAgOnRlcm06YExBWUVSRElSX1JFYAorICAgTEFZRVJESVJfUkUKICAgICAgIFdoZW4gdXNlZCBpbnNpZGUgdGhlIGBgbGF5ZXIuY29uZmBgIGNvbmZpZ3VyYXRpb24gZmlsZSwgdGhpcyB2YXJpYWJsZQogICAgICAgcHJvdmlkZXMgdGhlIHBhdGggb2YgdGhlIGN1cnJlbnQgbGF5ZXIsIGVzY2FwZWQgZm9yIHVzZSBpbiBhIHJlZ3VsYXIKICAgICAgIGV4cHJlc3Npb24gKDp0ZXJtOmBCQkZJTEVfUEFUVEVSTmApLiBUaGlzCiAgICAgICB2YXJpYWJsZSBpcyBub3QgYXZhaWxhYmxlIG91dHNpZGUgb2YgYGBsYXllci5jb25mYGAgYW5kIHJlZmVyZW5jZXMKICAgICAgIGFyZSBleHBhbmRlZCBpbW1lZGlhdGVseSB3aGVuIHBhcnNpbmcgb2YgdGhlIGZpbGUgY29tcGxldGVzLgogCi0gICA6dGVybTpgTEFZRVJWRVJTSU9OYAorICAgTEFZRVJWRVJTSU9OCiAgICAgICBPcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiBhIGxheWVyIGFzIGEgc2luZ2xlIG51bWJlci4gWW91CiAgICAgICBjYW4gdXNlIHRoaXMgdmFyaWFibGUgd2l0aGluCiAgICAgICA6dGVybTpgTEFZRVJERVBFTkRTYCBmb3IgYW5vdGhlciBsYXllciBpbgpAQCAtOTc5LDEwICs5NzksMTAgQEAKICAgICAgIHVzZSB0aGUgc3BlY2lmaWMgbGF5ZXIgbmFtZSBhcyBhIHN1ZmZpeCB0byB0aGUgdmFyaWFibGUgKGUuZy4KICAgICAgIGBgTEFZRVJERVBFTkRTX215bGF5ZXJgYCkuCiAKLSAgIDp0ZXJtOmBMSUNFTlNFYAorICAgTElDRU5TRQogICAgICAgVGhlIGxpc3Qgb2Ygc291cmNlIGxpY2Vuc2VzIGZvciB0aGUgcmVjaXBlLgogCi0gICA6dGVybTpgTUlSUk9SU2AKKyAgIE1JUlJPUlMKICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIHBhdGhzIGZyb20gd2hpY2ggQml0QmFrZSBnZXRzIHNvdXJjZSBjb2RlLiBXaGVuCiAgICAgICB0aGUgYnVpbGQgc3lzdGVtIHNlYXJjaGVzIGZvciBzb3VyY2UgY29kZSwgaXQgZmlyc3QgdHJpZXMgdGhlIGxvY2FsCiAgICAgICBkb3dubG9hZCBkaXJlY3RvcnkuIElmIHRoYXQgbG9jYXRpb24gZmFpbHMsIHRoZSBidWlsZCBzeXN0ZW0gdHJpZXMKQEAgLTk5MCw3ICs5OTAsNyBAQAogICAgICAgdXBzdHJlYW0gc291cmNlLCBhbmQgdGhlbiBsb2NhdGlvbnMgc3BlY2lmaWVkIGJ5IGBgTUlSUk9SU2BgIGluIHRoYXQKICAgICAgIG9yZGVyLgogCi0gICA6dGVybTpgTVVMVElfUFJPVklERVJfV0hJVEVMSVNUYAorICAgTVVMVElfUFJPVklERVJfV0hJVEVMSVNUCiAgICAgICBBbGxvd3MgeW91IHRvIHN1cHByZXNzIEJpdEJha2Ugd2FybmluZ3MgY2F1c2VkIHdoZW4gYnVpbGRpbmcgdHdvCiAgICAgICBzZXBhcmF0ZSByZWNpcGVzIHRoYXQgcHJvdmlkZSB0aGUgc2FtZSBvdXRwdXQuCiAKQEAgLTEwMDMsNyArMTAwMyw3IEBACiAgICAgICBUbyB1c2UgdGhlIHZhcmlhYmxlLCBsaXN0IHByb3ZpZGVyIG5hbWVzIChlLmcuIHJlY2lwZSBuYW1lcywKICAgICAgIGBgdmlydHVhbC9rZXJuZWxgYCwgYW5kIHNvIGZvcnRoKS4KIAotICAgOnRlcm06YE9WRVJSSURFU2AKKyAgIE9WRVJSSURFUwogICAgICAgQml0QmFrZSB1c2VzIGBgT1ZFUlJJREVTYGAgdG8gY29udHJvbCB3aGF0IHZhcmlhYmxlcyBhcmUgb3ZlcnJpZGRlbgogICAgICAgYWZ0ZXIgQml0QmFrZSBwYXJzZXMgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KIApAQCAtMTAxMywxNCArMTAxMywxNCBAQAogICAgICAgIjpyZWY6YGJpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YTpjb25kaXRpb25hbCBzeW50YXgKICAgICAgIChvdmVycmlkZXMpYCIgc2VjdGlvbi4KIAotICAgOnRlcm06YFA0RElSYAorICAgUDRESVIKICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYSBsb2NhbCBjb3B5IG9mIGEgUGVyZm9yY2UgZGVwb3QgaXMgc3RvcmVkCiAgICAgICB3aGVuIGl0IGlzIGZldGNoZWQuCiAKLSAgIDp0ZXJtOmBQQUNLQUdFU2AKKyAgIFBBQ0tBR0VTCiAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyB0aGUgcmVjaXBlIGNyZWF0ZXMuCiAKLSAgIDp0ZXJtOmBQQUNLQUdFU19EWU5BTUlDYAorICAgUEFDS0FHRVNfRFlOQU1JQwogICAgICAgQSBwcm9taXNlIHRoYXQgeW91ciByZWNpcGUgc2F0aXNmaWVzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGZvcgogICAgICAgb3B0aW9uYWwgbW9kdWxlcyB0aGF0IGFyZSBmb3VuZCBpbiBvdGhlciByZWNpcGVzLgogICAgICAgYGBQQUNLQUdFU19EWU5BTUlDYGAgZG9lcyBub3QgYWN0dWFsbHkgc2F0aXNmeSB0aGUgZGVwZW5kZW5jaWVzLCBpdApAQCAtMTAzMCwyOSArMTAzMCwyOSBAQAogICAgICAgYGBQQUNLQUdFU19EWU5BTUlDYGAgdmFyaWFibGUsIGJ1dCBhIHBhY2thZ2Ugd2l0aCB0aGUgbW9kdWxlIG5hbWUgaXMKICAgICAgIG5ldmVyIGFjdHVhbGx5IHByb2R1Y2VkLCB0aGVuIHRoZSBvdGhlciBwYWNrYWdlIHdpbGwgYmUgYnJva2VuLgogCi0gICA6dGVybTpgUEVgCisgICBQRQogICAgICAgVGhlIGVwb2NoIG9mIHRoZSByZWNpcGUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFyaWFibGUgaXMgdW5zZXQuIFRoZQogICAgICAgdmFyaWFibGUgaXMgdXNlZCB0byBtYWtlIHVwZ3JhZGVzIHBvc3NpYmxlIHdoZW4gdGhlIHZlcnNpb25pbmcgc2NoZW1lCiAgICAgICBjaGFuZ2VzIGluIHNvbWUgYmFja3dhcmRzIGluY29tcGF0aWJsZSB3YXkuCiAKLSAgIDp0ZXJtOmBQRVJTSVNURU5UX0RJUmAKKyAgIFBFUlNJU1RFTlRfRElSCiAgICAgICBTcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBCaXRCYWtlIHVzZXMgdG8gc3RvcmUgZGF0YSB0aGF0IHNob3VsZCBiZQogICAgICAgcHJlc2VydmVkIGJldHdlZW4gYnVpbGRzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZGF0YSBzdG9yZWQgaXMgdGhlIGRhdGEKICAgICAgIHRoYXQgdXNlcyBCaXRCYWtlJ3MgcGVyc2lzdGVudCBkYXRhIEFQSSBhbmQgdGhlIGRhdGEgdXNlZCBieSB0aGUgUFIKICAgICAgIFNlcnZlciBhbmQgUFIgU2VydmljZS4KIAotICAgOnRlcm06YFBGYAorICAgUEYKICAgICAgIFNwZWNpZmllcyB0aGUgcmVjaXBlIG9yIHBhY2thZ2UgbmFtZSBhbmQgaW5jbHVkZXMgYWxsIHZlcnNpb24gYW5kCiAgICAgICByZXZpc2lvbiBudW1iZXJzIChpLmUuIGBgZWdsaWJjLTIuMTMtcjIwK3N2bnIxNTUwOC9gYCBhbmQKICAgICAgIGBgYmFzaC00LjItcjEvYGApLgogCi0gICA6dGVybTpgUE5gCisgICBQTgogICAgICAgVGhlIHJlY2lwZSBuYW1lLgogCi0gICA6dGVybTpgUFJgCisgICBQUgogICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUuCiAKLSAgIDp0ZXJtOmBQUkVGRVJSRURfUFJPVklERVJgCisgICBQUkVGRVJSRURfUFJPVklERVIKICAgICAgIERldGVybWluZXMgd2hpY2ggcmVjaXBlIHNob3VsZCBiZSBnaXZlbiBwcmVmZXJlbmNlIHdoZW4gbXVsdGlwbGUKICAgICAgIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLiBZb3Ugc2hvdWxkIGFsd2F5cyBzdWZmaXggdGhlIHZhcmlhYmxlCiAgICAgICB3aXRoIHRoZSBuYW1lIG9mIHRoZSBwcm92aWRlZCBpdGVtLCBhbmQgeW91IHNob3VsZCBzZXQgaXQgdG8gdGhlCkBAIC0xMDYzLDcgKzEwNjMsNyBAQAogICAgICAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA9ICJ4c2VydmVyLXhmODYiCiAgICAgICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbCA/PSAibWVzYSIKIAotICAgOnRlcm06YFBSRUZFUlJFRF9QUk9WSURFUlNgCisgICBQUkVGRVJSRURfUFJPVklERVJTCiAgICAgICBEZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZSBmb3IgY2FzZXMgd2hlcmUKICAgICAgIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLiBGdW5jdGlvbmFsbHksCiAgICAgICBgYFBSRUZFUlJFRF9QUk9WSURFUlNgYCBpcyBpZGVudGljYWwgdG8KQEAgLTEwNzgsNyArMTA3OCw3IEBACiAgICAgICAgICBQUkVGRVJSRURfUFJPVklERVJfeHh4ID0gInl5eSIKICAgICAgICAgIFBSRUZFUlJFRF9QUk9WSURFUl9hYWEgPSAiYmJiIgogCi0gICA6dGVybTpgUFJFRkVSUkVEX1ZFUlNJT05gCisgICBQUkVGRVJSRURfVkVSU0lPTgogICAgICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIHZlcnNpb25zIG9mIHJlY2lwZXMgYXZhaWxhYmxlLCB0aGlzIHZhcmlhYmxlCiAgICAgICBkZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZS4gWW91IG11c3QgYWx3YXlzCiAgICAgICBzdWZmaXggdGhlIHZhcmlhYmxlIHdpdGggdGhlIDp0ZXJtOmBQTmAgeW91IHdhbnQgdG8KQEAgLTExMDAsNyArMTEwMCw3IEBACiAgICAgICAgICBlbmQgb2YgdGhlIHN0cmluZy4gWW91IGNhbm5vdCB1c2UgdGhlIHdpbGRjYXJkIGNoYXJhY3RlciBpbiBhbnkgb3RoZXIKICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBzdHJpbmcuCiAKLSAgIDp0ZXJtOmBQUkVNSVJST1JTYAorICAgUFJFTUlSUk9SUwogICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgZnJvbSB3aGljaCBCaXRCYWtlIGdldHMgc291cmNlIGNvZGUuIFdoZW4KICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gc2VhcmNoZXMgZm9yIHNvdXJjZSBjb2RlLCBpdCBmaXJzdCB0cmllcyB0aGUgbG9jYWwKICAgICAgIGRvd25sb2FkIGRpcmVjdG9yeS4gSWYgdGhhdCBsb2NhdGlvbiBmYWlscywgdGhlIGJ1aWxkIHN5c3RlbSB0cmllcwpAQCAtMTEyMiw3ICsxMTIyLDcgQEAKICAgICAgIHVzZSBgYGZpbGU6Ly9gYCBVUkxzIHRvIHBvaW50IHRvIGxvY2FsIGRpcmVjdG9yaWVzIG9yIG5ldHdvcmsgc2hhcmVzIGFzCiAgICAgICB3ZWxsLgogCi0gICA6dGVybTpgUFJPVklERVNgCisgICBQUk9WSURFUwogICAgICAgQSBsaXN0IG9mIGFsaWFzZXMgYnkgd2hpY2ggYSBwYXJ0aWN1bGFyIHJlY2lwZSBjYW4gYmUga25vd24uIEJ5CiAgICAgICBkZWZhdWx0LCBhIHJlY2lwZSdzIG93biBgYFBOYGAgaXMgaW1wbGljaXRseSBhbHJlYWR5IGluIGl0cwogICAgICAgYGBQUk9WSURFU2BgIGxpc3QuIElmIGEgcmVjaXBlIHVzZXMgYGBQUk9WSURFU2BgLCB0aGUgYWRkaXRpb25hbApAQCAtMTE1MSw3ICsxMTUxLDcgQEAKICAgICAgICJ2aXJ0dWFsL2Z1bmN0aW9uIiAoZS5nLiAidmlydHVhbC9rZXJuZWwiKS4gVGhlIHNsYXNoIGlzIHNpbXBseSBwYXJ0CiAgICAgICBvZiB0aGUgbmFtZSBhbmQgaGFzIG5vIHN5bnRhY3RpY2FsIHNpZ25pZmljYW5jZS4KIAotICAgOnRlcm06YFBSU0VSVl9IT1NUYAorICAgUFJTRVJWX0hPU1QKICAgICAgIFRoZSBuZXR3b3JrIGJhc2VkIDp0ZXJtOmBQUmAgc2VydmljZSBob3N0IGFuZCBwb3J0LgogCiAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBob3cgdGhlIGBgUFJTRVJWX0hPU1RgYCB2YXJpYWJsZSBpcyBzZXQ6IDo6CkBAIC0xMTYyLDEwICsxMTYyLDEwIEBACiAgICAgICBzZXJ2aWNlLiBZb3UgY2FuIHNldCBgYFBSU0VSVl9IT1NUYGAgdG8gb3RoZXIgdmFsdWVzIHRvIHVzZSBhIHJlbW90ZSBQUgogICAgICAgc2VydmljZS4KIAotICAgOnRlcm06YFBWYAorICAgUFYKICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUuCiAKLSAgIDp0ZXJtOmBSREVQRU5EU2AKKyAgIFJERVBFTkRTCiAgICAgICBMaXN0cyBhIHBhY2thZ2UncyBydW50aW1lIGRlcGVuZGVuY2llcyAoaS5lLiBvdGhlciBwYWNrYWdlcykgdGhhdAogICAgICAgbXVzdCBiZSBpbnN0YWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBidWlsdCBwYWNrYWdlIHRvIHJ1biBjb3JyZWN0bHkuIElmCiAgICAgICBhIHBhY2thZ2UgaW4gdGhpcyBsaXN0IGNhbm5vdCBiZSBmb3VuZCBkdXJpbmcgdGhlIGJ1aWxkLCB5b3Ugd2lsbCBnZXQKQEAgLTEyMDYsMTEgKzEyMDYsMTEgQEAKICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgc2VlIHRoZSA6dGVybTpgREVQRU5EU2AKICAgICAgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgUkVQT0RJUmAKKyAgIFJFUE9ESVIKICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYSBsb2NhbCBjb3B5IG9mIGEgYGBnb29nbGUtcmVwb2BgIGRpcmVjdG9yeSBpcwogICAgICAgc3RvcmVkIHdoZW4gaXQgaXMgc3luY2VkLgogCi0gICA6dGVybTpgUlBST1ZJREVTYAorICAgUlBST1ZJREVTCiAgICAgICBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lIGFsaWFzZXMgdGhhdCBhIHBhY2thZ2UgYWxzbyBwcm92aWRlcy4gVGhlc2UKICAgICAgIGFsaWFzZXMgYXJlIHVzZWZ1bCBmb3Igc2F0aXNmeWluZyBydW50aW1lIGRlcGVuZGVuY2llcyBvZiBvdGhlcgogICAgICAgcGFja2FnZXMgYm90aCBkdXJpbmcgdGhlIGJ1aWxkIGFuZCBvbiB0aGUgdGFyZ2V0IChhcyBzcGVjaWZpZWQgYnkKQEAgLTEyMjIsNyArMTIyMiw3IEBACiAKICAgICAgICAgIFJQUk9WSURFU18ke1BOfSA9ICJ3aWRnZXQtYWJpLTIiCiAKLSAgIDp0ZXJtOmBSUkVDT01NRU5EU2AKKyAgIFJSRUNPTU1FTkRTCiAgICAgICBBIGxpc3Qgb2YgcGFja2FnZXMgdGhhdCBleHRlbmRzIHRoZSB1c2FiaWxpdHkgb2YgYSBwYWNrYWdlIGJlaW5nCiAgICAgICBidWlsdC4gVGhlIHBhY2thZ2UgYmVpbmcgYnVpbHQgZG9lcyBub3QgZGVwZW5kIG9uIHRoaXMgbGlzdCBvZgogICAgICAgcGFja2FnZXMgaW4gb3JkZXIgdG8gc3VjY2Vzc2Z1bGx5IGJ1aWxkLCBidXQgbmVlZHMgdGhlbSBmb3IgdGhlCkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBACiAKICAgICAgICAgIFJSRUNPTU1FTkRTXyR7UE59ID0gImZvbyAoPj0gMS4yKSIKIAotICAgOnRlcm06YFNFQ1RJT05gCisgICBTRUNUSU9OCiAgICAgICBUaGUgc2VjdGlvbiBpbiB3aGljaCBwYWNrYWdlcyBzaG91bGQgYmUgY2F0ZWdvcml6ZWQuCiAKLSAgIDp0ZXJtOmBTUkNfVVJJYAorICAgU1JDX1VSSQogICAgICAgVGhlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIC0gbG9jYWwgb3IgcmVtb3RlLiBUaGlzIHZhcmlhYmxlIHRlbGxzCiAgICAgICBCaXRCYWtlIHdoaWNoIGJpdHMgdG8gcHVsbCBmb3IgdGhlIGJ1aWxkIGFuZCBob3cgdG8gcHVsbCB0aGVtLiBGb3IKICAgICAgIGV4YW1wbGUsIGlmIHRoZSByZWNpcGUgb3IgYXBwZW5kIGZpbGUgbmVlZHMgdG8gZmV0Y2ggYSBzaW5nbGUgdGFyYmFsbApAQCAtMTMxNiwxMiArMTMxNiwxMiBAQAogICAgICAgLSAgYGBkb3dubG9hZGZpbGVuYW1lYGAgOiBTcGVjaWZpZXMgdGhlIGZpbGVuYW1lIHVzZWQgd2hlbiBzdG9yaW5nCiAgICAgICAgICB0aGUgZG93bmxvYWRlZCBmaWxlLgogCi0gICA6dGVybTpgU1JDREFURWAKKyAgIFNSQ0RBVEUKICAgICAgIFRoZSBkYXRlIG9mIHRoZSBzb3VyY2UgY29kZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLiBUaGlzIHZhcmlhYmxlCiAgICAgICBhcHBsaWVzIG9ubHkgaWYgdGhlIHNvdXJjZSB3YXMgZmV0Y2hlZCBmcm9tIGEgU291cmNlIENvZGUgTWFuYWdlcgogICAgICAgKFNDTSkuCiAKLSAgIDp0ZXJtOmBTUkNSRVZgCisgICBTUkNSRVYKICAgICAgIFRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4gVGhpcwogICAgICAgdmFyaWFibGUgYXBwbGllcyBvbmx5IHdoZW4gdXNpbmcgU3VidmVyc2lvbiwgR2l0LCBNZXJjdXJpYWwgYW5kCiAgICAgICBCYXphYXIuIElmIHlvdSB3YW50IHRvIGJ1aWxkIGEgZml4ZWQgcmV2aXNpb24gYW5kIHlvdSB3YW50IHRvIGF2b2lkCkBAIC0xMzI5LDcgKzEzMjksNyBAQAogICAgICAgeW91ciByZWNpcGUsIHlvdSBzaG91bGQgc3BlY2lmeSBhIGBgU1JDUkVWYGAgdGhhdCBpcyBhIGZ1bGwgcmV2aXNpb24KICAgICAgIGlkZW50aWZpZXIgYW5kIG5vdCBqdXN0IGEgdGFnLgogCi0gICA6dGVybTpgU1JDUkVWX0ZPUk1BVGAKKyAgIFNSQ1JFVl9GT1JNQVQKICAgICAgIEhlbHBzIGNvbnN0cnVjdCB2YWxpZCA6dGVybTpgU1JDUkVWYCB2YWx1ZXMgd2hlbgogICAgICAgbXVsdGlwbGUgc291cmNlIGNvbnRyb2xsZWQgVVJMcyBhcmUgdXNlZCBpbgogICAgICAgOnRlcm06YFNSQ19VUklgLgpAQCAtMTM0MywzMCArMTM0MywzMCBAQAogICAgICAgYGBBVVRPSU5DYGAgcGxhY2Vob2xkZXIgaXMgYWRkZWQgYW5kIGlmIG5lZWRlZC4gQW5kLCB0aGlzIHBsYWNlaG9sZGVyCiAgICAgICBpcyBwbGFjZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBzdHJpbmcuCiAKLSAgIDp0ZXJtOmBTVEFNUGAKKyAgIFNUQU1QCiAgICAgICBTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHRvIGNyZWF0ZSByZWNpcGUgc3RhbXAgZmlsZXMuIFRoZSBwYXRoCiAgICAgICB0byBhbiBhY3R1YWwgc3RhbXAgZmlsZSBpcyBjb25zdHJ1Y3RlZCBieSBldmFsdWF0aW5nIHRoaXMgc3RyaW5nIGFuZAogICAgICAgdGhlbiBhcHBlbmRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YFNUQU1QQ0xFQU5gCisgICBTVEFNUENMRUFOCiAgICAgICBTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHRvIGNyZWF0ZSByZWNpcGUgc3RhbXAgZmlsZXMuIFVubGlrZSB0aGUKICAgICAgIDp0ZXJtOmBTVEFNUGAgdmFyaWFibGUsIGBgU1RBTVBDTEVBTmBgIGNhbiBjb250YWluCiAgICAgICB3aWxkY2FyZHMgdG8gbWF0Y2ggdGhlIHJhbmdlIG9mIGZpbGVzIGEgY2xlYW4gb3BlcmF0aW9uIHNob3VsZAogICAgICAgcmVtb3ZlLiBCaXRCYWtlIHVzZXMgYSBjbGVhbiBvcGVyYXRpb24gdG8gcmVtb3ZlIGFueSBvdGhlciBzdGFtcHMgaXQKICAgICAgIHNob3VsZCBiZSByZW1vdmluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHN0YW1wLgogCi0gICA6dGVybTpgU1VNTUFSWWAKKyAgIFNVTU1BUlkKICAgICAgIEEgc2hvcnQgc3VtbWFyeSBmb3IgdGhlIHJlY2lwZSwgd2hpY2ggaXMgNzIgY2hhcmFjdGVycyBvciBsZXNzLgogCi0gICA6dGVybTpgU1ZORElSYAorICAgU1ZORElSCiAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGZpbGVzIGNoZWNrZWQgb3V0IG9mIGEgU3VidmVyc2lvbiBzeXN0ZW0gYXJlCiAgICAgICBzdG9yZWQuCiAKLSAgIDp0ZXJtOmBUYAorICAgVAogICAgICAgUG9pbnRzIHRvIGEgZGlyZWN0b3J5IHdlcmUgQml0QmFrZSBwbGFjZXMgdGVtcG9yYXJ5IGZpbGVzLCB3aGljaAogICAgICAgY29uc2lzdCBtb3N0bHkgb2YgdGFzayBsb2dzIGFuZCBzY3JpcHRzLCB3aGVuIGJ1aWxkaW5nIGEgcGFydGljdWxhcgogICAgICAgcmVjaXBlLgogCi0gICA6dGVybTpgVE9QRElSYAorICAgVE9QRElSCiAgICAgICBQb2ludHMgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gQml0QmFrZSBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcwogICAgICAgdmFyaWFibGUuCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbCBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMjliMjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbApAQCAtMCwwICsxLDI1MzcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzwhLS0gRHVtbXkgY2hhcHRlciAtLT4KKzxjaGFwdGVyIGlkPSdyZWYtYmItdmFyaWFibGVzLWdsb3MnPgorCis8dGl0bGU+VmFyaWFibGVzIEdsb3NzYXJ5PC90aXRsZT4KKworPHBhcmE+CisgICAgVGhpcyBjaGFwdGVyIGxpc3RzIGNvbW1vbiB2YXJpYWJsZXMgdXNlZCBieSBCaXRCYWtlIGFuZCBnaXZlcyBhbiBvdmVydmlldworICAgIG9mIHRoZWlyIGZ1bmN0aW9uIGFuZCBjb250ZW50cy4KKzwvcGFyYT4KKworPG5vdGU+CisgICAgRm9sbG93aW5nIGFyZSBzb21lIHBvaW50cyByZWdhcmRpbmcgdGhlIHZhcmlhYmxlcyBsaXN0ZWQgaW4gdGhpcyBnbG9zc2FyeToKKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHZhcmlhYmxlcyBsaXN0ZWQgaW4gdGhpcyBnbG9zc2FyeQorICAgICAgICAgICAgYXJlIHNwZWNpZmljIHRvIEJpdEJha2UuCisgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBkZXNjcmlwdGlvbnMgYXJlIGxpbWl0ZWQgdG8gdGhhdCBjb250ZXh0LgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbHNvLCB2YXJpYWJsZXMgZXhpc3QgaW4gb3RoZXIgc3lzdGVtcyB0aGF0IHVzZSBCaXRCYWtlCisgICAgICAgICAgICAoZS5nLiBUaGUgWW9jdG8gUHJvamVjdCBhbmQgT3BlbkVtYmVkZGVkKSB0aGF0IGhhdmUgbmFtZXMgaWRlbnRpY2FsCisgICAgICAgICAgICB0byB0aG9zZSBmb3VuZCBpbiB0aGlzIGdsb3NzYXJ5LgorICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHRoZSB2YXJpYWJsZXMgaW4gdGhvc2Ugc3lzdGVtcyBleHRlbmQgdGhlCisgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IG9mIHRoZSB2YXJpYWJsZSBhcyBpdCBpcyBkZXNjcmliZWQgaGVyZSBpbgorICAgICAgICAgICAgdGhpcyBnbG9zc2FyeS4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmluYWxseSwgdGhlcmUgYXJlIHZhcmlhYmxlcyBtZW50aW9uZWQgaW4gdGhpcworICAgICAgICAgICAgZ2xvc3NhcnkgdGhhdCBkbyBub3QgYXBwZWFyIGluIHRoZSBCaXRCYWtlIGdsb3NzYXJ5LgorICAgICAgICAgICAgVGhlc2Ugb3RoZXIgdmFyaWFibGVzIGFyZSB2YXJpYWJsZXMgdXNlZCBpbiBzeXN0ZW1zIHRoYXQgdXNlCisgICAgICAgICAgICBCaXRCYWtlLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+Cis8L25vdGU+CisKKzxnbG9zc2FyeSBpZD0ncmVmLWJiLXZhcmlhYmxlcy1nbG9zc2FyeSc+CisKKyAgICA8cGFyYT4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQVNTVU1FX1BST1ZJREVEJz5BPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CJz5CPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1DQUNIRSc+QzwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItREVGQVVMVF9QUkVGRVJFTkNFJz5EPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1FWENMVURFX0ZST01fV09STEQnPkU8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUZBS0VST09UJz5GPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1HSVRESVInPkc8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUhHRElSJz5IPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1JTkhFUklUJz5JPC9saW5rPgorPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS1qJz5KPC9saW5rPiAtLT4KKzwhLS0gICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtBUkNIJz5LPC9saW5rPiAtLT4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItTEFZRVJERVBFTkRTJz5MPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1NSVJST1JTJz5NPC9saW5rPgorPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS1uJz5OPC9saW5rPiAtLT4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItT1ZFUlJJREVTJz5PPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QNERJUic+UDwvbGluaz4KKzwhLS0gICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVFNQUtFX1BST0ZJTEVTJz5RPC9saW5rPiAtLT4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUkRFUEVORFMnPlI8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNFQ1RJT04nPlM8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVQnPlQ8L2xpbms+Cis8IS0tICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9DT05GSUcnPlU8L2xpbms+IC0tPgorPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS12Jz5WPC9saW5rPiAtLT4KKzwhLS0gICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdBUk5fUUEnPlc8L2xpbms+IC0tPgorPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS14Jz5YPC9saW5rPiAtLT4KKzwhLS0gICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItZ2xvc3NhcnkteSc+WTwvbGluaz4gLS0+Cis8IS0tICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWdsb3NzYXJ5LXonPlo8L2xpbms+LS0+CisgICAgPC9wYXJhPgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItYmItZ2xvc3NhcnktYSc+PHRpdGxlPkE8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQVNTVU1FX1BST1ZJREVEJz48Z2xvc3N0ZXJtPkFTU1VNRV9QUk9WSURFRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyByZWNpcGUgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlcykgQml0QmFrZSBkb2VzIG5vdCBhdHRlbXB0IHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkLCBCaXRCYWtlIGFzc3VtZXMgdGhlc2UgcmVjaXBlcyBoYXZlIGFscmVhZHkgYmVlbgorICAgICAgICAgICAgICAgICAgICBidWlsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gT3BlbkVtYmVkZGVkLUNvcmUsIDxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBtb3N0bHkgc3BlY2lmaWVzIG5hdGl2ZSB0b29scyB0aGF0IHNob3VsZCBub3QgYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgaXMgPGZpbGVuYW1lPmdpdC1uYXRpdmU8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBzcGVjaWZpZWQgYWxsb3dzIGZvciB0aGUgR2l0IGJpbmFyeSBmcm9tIHRoZSBob3N0IHRvCisgICAgICAgICAgICAgICAgICAgIGJlIHVzZWQgcmF0aGVyIHRoYW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC1uYXRpdmU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1iYi1nbG9zc2FyeS1iJz48dGl0bGU+QjwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CJz48Z2xvc3N0ZXJtPkI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBCaXRCYWtlIGV4ZWN1dGVzIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICBkdXJpbmcgYSByZWNpcGUncyBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0FMTE9XRURfTkVUV09SS1MnPjxnbG9zc3Rlcm0+QkJfQUxMT1dFRF9ORVRXT1JLUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBzcGFjZS1kZWxpbWl0ZWQgbGlzdCBvZiBob3N0cyB0aGF0IHRoZSBmZXRjaGVyCisgICAgICAgICAgICAgICAgICAgIGlzIGFsbG93ZWQgdG8gdXNlIHRvIG9idGFpbiB0aGUgcmVxdWlyZWQgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgY29uc2lkZXJhdGlvbnMgc3Vycm91bmRpbmcgdGhpcyB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGhvc3QgbGlzdCBpcyBvbmx5IHVzZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfTk9fTkVUV09SSyc+PGZpbGVuYW1lPkJCX05PX05FVFdPUks8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBlaXRoZXIgbm90IHNldCBvciBzZXQgdG8gIjAiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbWl0ZWQgc3VwcG9ydCBmb3IgdGhlICI8ZmlsZW5hbWU+KjwvZmlsZW5hbWU+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkIGNoYXJhY3RlciBmb3IgbWF0Y2hpbmcgYWdhaW5zdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgaG9zdCBuYW1lcyBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2V0dGluZyBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC5nbnUub3JnPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZ0cC5nbnUub3JnPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb28uZ2l0LmdudS5vcmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX0FMTE9XRURfTkVUV09SS1MgPSAiKi5nbnUub3JnIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+SW1wb3J0YW50PC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHVzZSBvZiB0aGUgIjxmaWxlbmFtZT4qPC9maWxlbmFtZT4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciBvbmx5IHdvcmtzIGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBob3N0IG5hbWUgYW5kIGl0IG11c3QgYmUgaXNvbGF0ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBob3N0IG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgaW4gYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIGxvY2F0aW9uIG9mIHRoZSBuYW1lIG9yIGNvbWJpbmVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyb250IHBhcnQgb2YgdGhlIG5hbWUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBleGFtcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5mb28uYmFyPC9maWxlbmFtZT4gaXMgc3VwcG9ydGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSA8ZmlsZW5hbWU+KmFhLmZvby5iYXI8L2ZpbGVuYW1lPiBpcyBub3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWlycm9ycyBub3QgaW4gdGhlIGhvc3QgbGlzdCBhcmUgc2tpcHBlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZWQgaW4gZGVidWcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ZW1wdHMgdG8gYWNjZXNzIG5ldHdvcmtzIG5vdCBpbiB0aGUgaG9zdCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2UgYSBmYWlsdXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPkJCX0FMTE9XRURfTkVUV09SS1M8L2ZpbGVuYW1lPiBpbgorICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QUkVNSVJST1JTJz48ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyB2ZXJ5IHVzZWZ1bC4KKyAgICAgICAgICAgICAgICAgICAgQWRkaW5nIHRoZSBob3N0IHlvdSB3YW50IHRvIHVzZSB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+IHJlc3VsdHMgaW4gdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGZldGNoZWQgZnJvbSBhbiBhbGxvd2VkIGxvY2F0aW9uIGFuZCBhdm9pZHMgcmFpc2luZworICAgICAgICAgICAgICAgICAgICBhbiBlcnJvciB3aGVuIGEgaG9zdCB0aGF0IGlzIG5vdCBhbGxvd2VkIGlzIGluIGEKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHRoZSBmZXRjaGVyIGRvZXMgbm90IGF0dGVtcHQgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICBob3N0IGxpc3RlZCBpbiA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGFmdGVyIGEKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bCBmZXRjaCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+IG9jY3Vycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9DT05TT0xFTE9HJz48Z2xvc3N0ZXJtPkJCX0NPTlNPTEVMT0c8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIGEgbG9nIGZpbGUgaW50byB3aGljaCBCaXRCYWtlJ3MgdXNlcgorICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2Ugd3JpdGVzIG91dHB1dCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0NVUlJFTlRUQVNLJz48Z2xvc3N0ZXJtPkJCX0NVUlJFTlRUQVNLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrLgorICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBkb2VzIG5vdCBpbmNsdWRlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fPC9maWxlbmFtZT4gcHJlZml4LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0RBTkdMSU5HQVBQRU5EU19XQVJOT05MWSc+PGdsb3NzdGVybT5CQl9EQU5HTElOR0FQUEVORFNfV0FSTk9OTFk8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBob3cgQml0QmFrZSBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgYW4gYXBwZW5kCisgICAgICAgICAgICAgICAgICAgIGZpbGUgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgaGFzIG5vCisgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29uZGl0aW9uIG9mdGVuIG9jY3VycyB3aGVuIGxheWVycyBnZXQgb3V0IG9mIHN5bmMKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPm9lLWNvcmU8L2ZpbGVuYW1lPiBidW1wcyBhCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB2ZXJzaW9uIGFuZCB0aGUgb2xkIHJlY2lwZSBubyBsb25nZXIgZXhpc3RzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgbGF5ZXIgaGFzIG5vdCBiZWVuIHVwZGF0ZWQgdG8gdGhlIG5ldyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSByZWNpcGUgeWV0KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgZmF0YWwgYmVoYXZpb3IgaXMgc2FmZXN0IGJlY2F1c2UgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNhbmUgcmVhY3Rpb24gZ2l2ZW4gc29tZXRoaW5nIGlzIG91dCBvZiBzeW5jLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhbGl6ZSB3aGVuIHlvdXIgY2hhbmdlcyBhcmUgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfREVGQVVMVF9UQVNLJz48Z2xvc3N0ZXJtPkJCX0RFRkFVTFRfVEFTSzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB0YXNrIHRvIHVzZSB3aGVuIG5vbmUgaXMgc3BlY2lmaWVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZSBvcHRpb24pLgorICAgICAgICAgICAgICAgICAgICBUaGUgdGFzayBuYW1lIHNwZWNpZmllZCBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb188L2ZpbGVuYW1lPiBwcmVmaXguCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfRElTS01PTl9ESVJTJz48Z2xvc3N0ZXJtPkJCX0RJU0tNT05fRElSUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBNb25pdG9ycyBkaXNrIHNwYWNlIGFuZCBhdmFpbGFibGUgaW5vZGVzIGR1cmluZyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgYnVpbGQgYmFzZWQgb24gdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGlzayBzcGFjZSBtb25pdG9yaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB1c2UgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX0RJU0tNT05fRElSUyA9ICImbHQ7YWN0aW9uJmd0OywmbHQ7ZGlyJmd0OywmbHQ7dGhyZXNob2xkJmd0OyBbLi4uXSIKKworICAgICB3aGVyZToKKworICAgICAgICAmbHQ7YWN0aW9uJmd0OyBpczoKKyAgICAgICAgICAgQUJPUlQ6ICAgICBJbW1lZGlhdGVseSBhYm9ydCB0aGUgYnVpbGQgd2hlbgorICAgICAgICAgICAgICAgICAgICAgIGEgdGhyZXNob2xkIGlzIGJyb2tlbi4KKyAgICAgICAgICAgU1RPUFRBU0tTOiBTdG9wIHRoZSBidWlsZCBhZnRlciB0aGUgY3VycmVudGx5CisgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW5nIHRhc2tzIGhhdmUgZmluaXNoZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICAgIGEgdGhyZXNob2xkIGlzIGJyb2tlbi4KKyAgICAgICAgICAgV0FSTjogICAgICBJc3N1ZSBhIHdhcm5pbmcgYnV0IGNvbnRpbnVlIHRoZQorICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHdoZW4gYSB0aHJlc2hvbGQgaXMgYnJva2VuLgorICAgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgd2FybmluZ3MgYXJlIGlzc3VlZCBhcworICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX0RJU0tNT05fV0FSTklOVEVSVkFMJz5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvbGluaz4gdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBiZSBkZWZpbmVkLgorCisgICAgICAgICZsdDtkaXImZ3Q7IGlzOgorICAgICAgICAgICBBbnkgZGlyZWN0b3J5IHlvdSBjaG9vc2UuIFlvdSBjYW4gc3BlY2lmeSBvbmUgb3IKKyAgICAgICAgICAgbW9yZSBkaXJlY3RvcmllcyB0byBtb25pdG9yIGJ5IHNlcGFyYXRpbmcgdGhlCisgICAgICAgICAgIGdyb3VwaW5ncyB3aXRoIGEgc3BhY2UuICBJZiB0d28gZGlyZWN0b3JpZXMgYXJlCisgICAgICAgICAgIG9uIHRoZSBzYW1lIGRldmljZSwgb25seSB0aGUgZmlyc3QgZGlyZWN0b3J5CisgICAgICAgICAgIGlzIG1vbml0b3JlZC4KKworICAgICAgICAmbHQ7dGhyZXNob2xkJmd0OyBpczoKKyAgICAgICAgICAgRWl0aGVyIHRoZSBtaW5pbXVtIGF2YWlsYWJsZSBkaXNrIHNwYWNlLAorICAgICAgICAgICB0aGUgbWluaW11bSBudW1iZXIgb2YgZnJlZSBpbm9kZXMsIG9yCisgICAgICAgICAgIGJvdGguICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZS4gIFRvCisgICAgICAgICAgIG9taXQgb25lIG9yIHRoZSBvdGhlciwgc2ltcGx5IG9taXQgdGhlIHZhbHVlLgorICAgICAgICAgICBTcGVjaWZ5IHRoZSB0aHJlc2hvbGQgdXNpbmcgRywgTSwgSyBmb3IgR2J5dGVzLAorICAgICAgICAgICBNYnl0ZXMsIGFuZCBLYnl0ZXMsIHJlc3BlY3RpdmVseS4gSWYgeW91IGRvCisgICAgICAgICAgIG5vdCBzcGVjaWZ5IEcsIE0sIG9yIEssIEtieXRlcyBpcyBhc3N1bWVkIGJ5CisgICAgICAgICAgIGRlZmF1bHQuICBEbyBub3QgdXNlIEdCLCBNQiwgb3IgS0IuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9ESVNLTU9OX0RJUlMgPSAiQUJPUlQsJHtUTVBESVJ9LDFHLDEwMEsgV0FSTiwke1NTVEFURV9ESVJ9LDFHLDEwMEsiCisgICAgIEJCX0RJU0tNT05fRElSUyA9ICJTVE9QVEFTS1MsJHtUTVBESVJ9LDFHIgorICAgICBCQl9ESVNLTU9OX0RJUlMgPSAiQUJPUlQsJHtUTVBESVJ9LCwxMDBLIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBleGFtcGxlIHdvcmtzIG9ubHkgaWYgeW91IGFsc28gc2V0CisgICAgICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfRElTS01PTl9XQVJOSU5URVJWQUwnPjxmaWxlbmFtZT5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvIGltbWVkaWF0ZWx5CisgICAgICAgICAgICAgICAgICAgIGFib3J0IHdoZW4gZWl0aGVyIHRoZSBkaXNrIHNwYWNlIGluIDxmaWxlbmFtZT4ke1RNUERJUn08L2ZpbGVuYW1lPiBkcm9wcworICAgICAgICAgICAgICAgICAgICBiZWxvdyAxIEdieXRlIG9yIHRoZSBhdmFpbGFibGUgZnJlZSBpbm9kZXMgZHJvcHMgYmVsb3cKKyAgICAgICAgICAgICAgICAgICAgMTAwIEtieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0d28gZGlyZWN0b3JpZXMgYXJlIHByb3ZpZGVkIHdpdGggdGhlIHZhcmlhYmxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGFsc28gaXNzdWVzIGEKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZyB3aGVuIHRoZSBkaXNrIHNwYWNlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTU1RBVEVfRElSfTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBkcm9wcworICAgICAgICAgICAgICAgICAgICBiZWxvdyAxIEdieXRlIG9yIHRoZSBudW1iZXIgb2YgZnJlZSBpbm9kZXMgZHJvcHMKKyAgICAgICAgICAgICAgICAgICAgYmVsb3cgMTAwIEtieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCB3YXJuaW5ncyBhcmUgaXNzdWVkIGR1cmluZyBpbnRlcnZhbHMgYXMKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieSB0aGUgPGZpbGVuYW1lPkJCX0RJU0tNT05fV0FSTklOVEVSVkFMPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgZXhhbXBsZSBzdG9wcyB0aGUgYnVpbGQgYWZ0ZXIgYWxsIGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICBleGVjdXRpbmcgdGFza3MgY29tcGxldGUgd2hlbiB0aGUgbWluaW11bSBkaXNrIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+JHtUTVBESVJ9PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGRyb3BzIGJlbG93IDEgR2J5dGUuCisgICAgICAgICAgICAgICAgICAgIE5vIGRpc2sgbW9uaXRvcmluZyBvY2N1cnMgZm9yIHRoZSBmcmVlIGlub2RlcyBpbiB0aGlzIGNhc2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBleGFtcGxlIGltbWVkaWF0ZWx5IGFib3J0cyB0aGUgYnVpbGQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGZyZWUgaW5vZGVzIGluIHRoZSA8ZmlsZW5hbWU+JHtUTVBESVJ9PC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGRyb3BzIGJlbG93IDEwMCBLYnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIE5vIGRpc2sgc3BhY2UgbW9uaXRvcmluZyBmb3IgdGhlIGRpcmVjdG9yeSBpdHNlbGYgb2NjdXJzCisgICAgICAgICAgICAgICAgICAgIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTCc+PGdsb3NzdGVybT5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBkaXNrIHNwYWNlIGFuZCBmcmVlIGlub2RlIHdhcm5pbmcgaW50ZXJ2YWxzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0RJU0tNT05fV0FSTklOVEVSVkFMPC9maWxlbmFtZT4gdmFyaWFibGUsIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIGFsc28gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfRElTS01PTl9ESVJTJz48ZmlsZW5hbWU+QkJfRElTS01PTl9ESVJTPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGFuZCBkZWZpbmUgaXRzIGFjdGlvbiBhcyAiV0FSTiIuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHN1YnNlcXVlbnQgd2FybmluZ3MgYXJlIGlzc3VlZCBlYWNoIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgZGlzayBzcGFjZSBvciBudW1iZXIgb2YgZnJlZSBpbm9kZXMgZnVydGhlciByZWR1Y2VzIGJ5CisgICAgICAgICAgICAgICAgICAgIHRoZSByZXNwZWN0aXZlIGludGVydmFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSA8ZmlsZW5hbWU+QkJfRElTS01PTl9XQVJOSU5URVJWQUw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgeW91IGRvIHVzZSA8ZmlsZW5hbWU+QkJfRElTS01PTl9ESVJTPC9maWxlbmFtZT4gd2l0aAorICAgICAgICAgICAgICAgICAgICB0aGUgIldBUk4iIGFjdGlvbiwgdGhlIGRpc2sgbW9uaXRvcmluZyBpbnRlcnZhbCBkZWZhdWx0cyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX0RJU0tNT05fV0FSTklOVEVSVkFMID0gIjUwTSw1SyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgdGhlIHZhcmlhYmxlIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlLAorICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX0RJU0tNT05fV0FSTklOVEVSVkFMID0gIiZsdDtkaXNrX3NwYWNlX2ludGVydmFsJmd0OywmbHQ7ZGlza19pbm9kZV9pbnRlcnZhbCZndDsiCisKKyAgICAgd2hlcmU6CisKKyAgICAgICAgJmx0O2Rpc2tfc3BhY2VfaW50ZXJ2YWwmZ3Q7IGlzOgorICAgICAgICAgICBBbiBpbnRlcnZhbCBvZiBtZW1vcnkgZXhwcmVzc2VkIGluIGVpdGhlcgorICAgICAgICAgICBHLCBNLCBvciBLIGZvciBHYnl0ZXMsIE1ieXRlcywgb3IgS2J5dGVzLAorICAgICAgICAgICByZXNwZWN0aXZlbHkuIFlvdSBjYW5ub3QgdXNlIEdCLCBNQiwgb3IgS0IuCisKKyAgICAgICAgJmx0O2Rpc2tfaW5vZGVfaW50ZXJ2YWwmZ3Q7IGlzOgorICAgICAgICAgICBBbiBpbnRlcnZhbCBvZiBmcmVlIGlub2RlcyBleHByZXNzZWQgaW4gZWl0aGVyCisgICAgICAgICAgIEcsIE0sIG9yIEsgZm9yIEdieXRlcywgTWJ5dGVzLCBvciBLYnl0ZXMsCisgICAgICAgICAgIHJlc3BlY3RpdmVseS4gWW91IGNhbm5vdCB1c2UgR0IsIE1CLCBvciBLQi4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfRElTS01PTl9ESVJTID0gIldBUk4sJHtTU1RBVEVfRElSfSwxRywxMDBLIgorICAgICBCQl9ESVNLTU9OX1dBUk5JTlRFUlZBTCA9ICI1ME0sNUsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgdmFyaWFibGVzIGNhdXNlIEJpdEJha2UgdG8KKyAgICAgICAgICAgICAgICAgICAgaXNzdWUgc3Vic2VxdWVudCB3YXJuaW5ncyBlYWNoIHRpbWUgdGhlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICBkaXNrIHNwYWNlIGZ1cnRoZXIgcmVkdWNlcyBieSA1MCBNYnl0ZXMgb3IgdGhlIG51bWJlcgorICAgICAgICAgICAgICAgICAgICBvZiBmcmVlIGlub2RlcyBmdXJ0aGVyIHJlZHVjZXMgYnkgNSBLYnl0ZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1NTVEFURV9ESVJ9PC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBTdWJzZXF1ZW50IHdhcm5pbmdzIGJhc2VkIG9uIHRoZSBpbnRlcnZhbCBvY2N1ciBlYWNoIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgYSByZXNwZWN0aXZlIGludGVydmFsIGlzIHJlYWNoZWQgYmV5b25kIHRoZSBpbml0aWFsIHdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gMSBHYnl0ZXMgYW5kIDEwMCBLYnl0ZXMpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0VOVl9XSElURUxJU1QnPjxnbG9zc3Rlcm0+QkJfRU5WX1dISVRFTElTVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGludGVybmFsIHdoaXRlbGlzdCBvZiB2YXJpYWJsZXMgdG8gYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCBmcm9tIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCBpbnRvIEJpdEJha2UncworICAgICAgICAgICAgICAgICAgICBkYXRhc3RvcmUuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBsaXN0IGlzIHVzZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9QUkVTRVJWRV9FTlYnPjxmaWxlbmFtZT5CQl9QUkVTRVJWRV9FTlY8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9FTlZfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfRU5WX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9FTlZfRVhUUkFXSElURSc+PGZpbGVuYW1lPkJCX0VOVl9FWFRSQVdISVRFPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlIGluIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgZm9yIGl0IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9FTlZfRVhUUkFXSElURSc+PGdsb3NzdGVybT5CQl9FTlZfRVhUUkFXSElURTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYW4gYWRkaXRpb25hbCBzZXQgb2YgdmFyaWFibGVzIHRvIGFsbG93IHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgKHdoaXRlbGlzdCkgZnJvbSB0aGUgZXh0ZXJuYWwgZW52aXJvbm1lbnQgaW50byBCaXRCYWtlJ3MKKyAgICAgICAgICAgICAgICAgICAgZGF0YXN0b3JlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3Qgb2YgdmFyaWFibGVzIGFyZSBvbiB0b3Agb2YgdGhlIGludGVybmFsIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgc2V0IGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9FTlZfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfRU5WX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgZXh0ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGluIG9yZGVyIGZvciBpdCB0byB3b3JrLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfRkVUQ0hfUFJFTUlSUk9ST05MWSc+PGdsb3NzdGVybT5CQl9GRVRDSF9QUkVNSVJST1JPTkxZPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0IHRvICIxIiwgY2F1c2VzIEJpdEJha2UncyBmZXRjaGVyIG1vZHVsZSB0byBvbmx5CisgICAgICAgICAgICAgICAgICAgIHNlYXJjaAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHdpbGwgbm90IHNlYXJjaCB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0ZJTEVOQU1FJz48Z2xvc3N0ZXJtPkJCX0ZJTEVOQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgcmVjaXBlIHRoYXQgb3ducyB0aGUgY3VycmVudGx5CisgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiB0YXNrIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm15LXJlY2lwZS5iYjwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGluZywgdGhlIDxmaWxlbmFtZT5CQl9GSUxFTkFNRTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zICIvZm9vL3BhdGgvbXktcmVjaXBlLmJiIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxnbG9zc3Rlcm0+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENhdXNlcyB0YXJiYWxscyBvZiB0aGUgR2l0IHJlcG9zaXRvcmllcywgaW5jbHVkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBHaXQgbWV0YWRhdGEsIHRvIGJlIHBsYWNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIEFueW9uZSB3aXNoaW5nIHRvIGNyZWF0ZSBhIHNvdXJjZSBtaXJyb3Igd291bGQgd2FudCB0bworICAgICAgICAgICAgICAgICAgICBlbmFibGUgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGNyZWF0aW5nIGFuZCBwbGFjaW5nIHRhcmJhbGxzIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBHaXQgcmVwb3NpdG9yaWVzIGlzIG5vdCB0aGUgZGVmYXVsdCBhY3Rpb24gYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0hBU0hDT05GSUdfV0hJVEVMSVNUJz48Z2xvc3N0ZXJtPkJCX0hBU0hDT05GSUdfV0hJVEVMSVNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHZhcmlhYmxlcyB0aGF0IGFyZSBleGNsdWRlZCBmcm9tIGJhc2UgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSwgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGNhY2hlIGNhbgorICAgICAgICAgICAgICAgICAgICBiZSByZXVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uZSBvZiB0aGUgd2F5cyBCaXRCYWtlIGRldGVybWluZXMgd2hldGhlciB0byByZS1wYXJzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFpbiBtZXRhZGF0YSBpcyB0aHJvdWdoIGNoZWNrc3VtcyBvZiB0aGUgdmFyaWFibGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBkYXRhc3RvcmUgb2YgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBkYXRhLgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdmFyaWFibGVzIHRoYXQgeW91IHR5cGljYWxseSB3YW50IHRvIGV4Y2x1ZGUgd2hlbgorICAgICAgICAgICAgICAgICAgICBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byByZS1wYXJzZSBhbmQgdGh1cyByZWJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICBjYWNoZS4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgeW91IHdvdWxkIHVzdWFsbHkgZXhjbHVkZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VElNRTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+REFURTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhlc2UgdmFyaWFibGVzIGFyZSBhbHdheXMgY2hhbmdpbmcuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkaWQgbm90IGV4Y2x1ZGUgdGhlbSwgQml0QmFrZSB3b3VsZCBuZXZlciByZXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY2FjaGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfSEFTSEJBU0VfV0hJVEVMSVNUJz48Z2xvc3N0ZXJtPkJCX0hBU0hCQVNFX1dISVRFTElTVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyB2YXJpYWJsZXMgdGhhdCBhcmUgZXhjbHVkZWQgZnJvbSBjaGVja3N1bSBhbmQKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBkYXRhLgorICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZXMgdGhhdCBhcmUgZXhjbHVkZWQgY2FuIHRoZXJlZm9yZSBjaGFuZ2Ugd2l0aG91dAorICAgICAgICAgICAgICAgICAgICBhZmZlY3RpbmcgdGhlIGNoZWNrc3VtIG1lY2hhbmlzbS4KKyAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gZXhhbXBsZSB3b3VsZCBiZSB0aGUgdmFyaWFibGUgZm9yIHRoZSBwYXRoIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSdzIG91dHB1dCBzaG91bGQgbm90IChhbmQgdXN1YWxseSBkb2VzIG5vdCkgZGVwZW5kCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgd2FzIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGdsb3NzdGVybT5CQl9IQVNIQ0hFQ0tfRlVOQ1RJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBjYWxsIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgInNldHNjZW5lIiBwYXJ0IG9mIHRoZSB0YXNrJ3MgZXhlY3V0aW9uIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlIHRoZSBsaXN0IG9mIHRhc2sgaGFzaGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgbGlzdCBvZiBzZXRzY2VuZSB0YXNrcyB0aGF0IHNob3VsZAorICAgICAgICAgICAgICAgICAgICBiZSBleGVjdXRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCBpbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb2RlLCB0aGUgb2JqZWN0aXZlCisgICAgICAgICAgICAgICAgICAgIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGEgZ2l2ZW4gc2V0c2NlbmUgZnVuY3Rpb24gaXMgbGlrZWx5CisgICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgb3Igbm90LgorICAgICAgICAgICAgICAgICAgICBJdCdzIGVhc2llciB0byBjaGVjayB0aGUgbGlzdCBvZiBzZXRzY2VuZSBmdW5jdGlvbnMgaW4KKyAgICAgICAgICAgICAgICAgICAgb25lIHBhc3MgdGhhbiB0byBjYWxsIG1hbnkgaW5kaXZpZHVhbCB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJldHVybmVkIGxpc3QgbmVlZCBub3QgYmUgY29tcGxldGVseSBhY2N1cmF0ZS4KKyAgICAgICAgICAgICAgICAgICAgQSBnaXZlbiBzZXRzY2VuZSB0YXNrIGNhbiBzdGlsbCBsYXRlciBmYWlsLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgbW9yZSBhY2N1cmF0ZSB0aGUgZGF0YSByZXR1cm5lZCwgdGhlIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgZWZmaWNpZW50IHRoZSBidWlsZCB3aWxsIGJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0lOVkFMSURDT05GJz48Z2xvc3N0ZXJtPkJCX0lOVkFMSURDT05GPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNvbmZpZ1BhcnNlZDwvZmlsZW5hbWU+IGV2ZW50IHRvIHRyaWdnZXIKKyAgICAgICAgICAgICAgICAgICAgcmUtcGFyc2luZyB0aGUgYmFzZSBtZXRhZGF0YSAoaS5lLiBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMpLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkNvbmZpZ1BhcnNlZDwvZmlsZW5hbWU+IGV2ZW50IGNhbiBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHRyaWdnZXIgdGhlIHJlLXBhcnNlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBiZSBjYXJlZnVsIHRvIGF2b2lkIHJlY3Vyc2l2ZSBsb29wcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9MT0dDT05GSUcnPjxnbG9zc3Rlcm0+QkJfTE9HQ09ORklHPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGNvbmZpZyBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZyBjb25maWd1cmF0aW9uLiBTZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ibG9nZ2luZyI+TG9nZ2luZzwvbGluaz4gZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9MT0dGTVQnPjxnbG9zc3Rlcm0+QkJfTE9HRk1UPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgbG9nIGZpbGVzIHNhdmVkIGludG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItYmItVCc+PGZpbGVuYW1lPlQ8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPkJCX0xPR0ZNVDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGlzIHVuZGVmaW5lZCBhbmQgdGhlIGxvZyBmaWxlIG5hbWVzIGdldCBjcmVhdGVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBsb2cue3Rhc2t9LntwaWR9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZm9yY2UgbG9nIGZpbGVzIHRvIHRha2UgYSBzcGVjaWZpYyBuYW1lLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNldCB0aGlzIHZhcmlhYmxlIGluIGEgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX05JQ0VfTEVWRUwnPjxnbG9zc3Rlcm0+QkJfTklDRV9MRVZFTDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGxvd3MgQml0QmFrZSB0byBydW4gYXQgYSBzcGVjaWZpYyBwcmlvcml0eQorICAgICAgICAgICAgICAgICAgICAoaS5lLiBuaWNlIGxldmVsKS4KKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtIHBlcm1pc3Npb25zIHVzdWFsbHkgbWVhbiB0aGF0IEJpdEJha2UgY2FuIHJlZHVjZSBpdHMKKyAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkgYnV0IG5vdCByYWlzZSBpdCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9UQVNLX05JQ0VfTEVWRUwnPjxmaWxlbmFtZT5CQl9UQVNLX05JQ0VfTEVWRUw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfTk9fTkVUV09SSyc+PGdsb3NzdGVybT5CQl9OT19ORVRXT1JLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERpc2FibGVzIG5ldHdvcmsgYWNjZXNzIGluIHRoZSBCaXRCYWtlIGZldGNoZXIgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIGFjY2VzcyBkaXNhYmxlZCwgYW55IGNvbW1hbmQgdGhhdCBhdHRlbXB0cyB0bworICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdGhlIG5ldHdvcmsgYmVjb21lcyBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsaW5nIG5ldHdvcmsgYWNjZXNzIGlzIHVzZWZ1bCBmb3IgdGVzdGluZyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgbWlycm9ycywgcnVubmluZyBidWlsZHMgd2hlbiBub3QgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHdoZW4gb3BlcmF0aW5nIGluIGNlcnRhaW4ga2luZHMgb2YgZmlyZXdhbGwKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX05VTUJFUl9USFJFQURTJz48Z2xvc3N0ZXJtPkJCX05VTUJFUl9USFJFQURTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcyBCaXRCYWtlIHNob3VsZCBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgICAgICAgICAgICAgYXQgYW55IG9uZSB0aW1lLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIHN1cHBvcnRzIG11bHRpcGxlIGNvcmVzLAorICAgICAgICAgICAgICAgICAgICBhIGdvb2QgcnVsZSBvZiB0aHVtYiBpcyB0byBzZXQgdGhpcyB2YXJpYWJsZSB0byB0d2ljZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGNvcmVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48Z2xvc3N0ZXJtPkJCX05VTUJFUl9QQVJTRV9USFJFQURTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNldHMgdGhlIG51bWJlciBvZiB0aHJlYWRzIEJpdEJha2UgdXNlcyB3aGVuIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIG9mIGNvcmVzIG9uIHRoZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfT1JJR0VOVic+PGdsb3NzdGVybT5CQl9PUklHRU5WPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZXh0ZXJuYWwgZW52aXJvbm1lbnQgaW4KKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggQml0QmFrZSB3YXMgcnVuLgorICAgICAgICAgICAgICAgICAgICBUaGUgY29weSBpcyB0YWtlbiBiZWZvcmUgYW55IHdoaXRlbGlzdGVkIHZhcmlhYmxlIHZhbHVlcworICAgICAgICAgICAgICAgICAgICBhcmUgZmlsdGVyZWQgaW50byBCaXRCYWtlJ3MgZGF0YXN0b3JlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb250ZW50cyBvZiB0aGlzIHZhcmlhYmxlIGlzIGEgZGF0YXN0b3JlIG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgcXVlcmllZCB1c2luZyB0aGUgbm9ybWFsIGRhdGFzdG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1BSRVNFUlZFX0VOVic+PGdsb3NzdGVybT5CQl9QUkVTRVJWRV9FTlY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsZXMgd2hpdGVsaXN0aW5nIGFuZCBpbnN0ZWFkIGFsbG93cyBhbGwgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggZnJvbSB0aGUgZXh0ZXJuYWwgZW52aXJvbm1lbnQgaW50byBCaXRCYWtlJ3MKKyAgICAgICAgICAgICAgICAgICAgZGF0YXN0b3JlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlIGluIHRoZSBleHRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgaW4gb3JkZXIgZm9yIGl0IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9SVU5GTVQnPjxnbG9zc3Rlcm0+QkJfUlVORk1UPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZXhlY3V0YWJsZSBzY3JpcHQgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gcnVuIGZpbGVzKSBzYXZlZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLWJiLVQnPjxmaWxlbmFtZT5UPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5CQl9SVU5GTVQ8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpcyB1bmRlZmluZWQgYW5kIHRoZSBydW4gZmlsZSBuYW1lcyBnZXQgY3JlYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcnVuLnt0YXNrfS57cGlkfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZvcmNlIHJ1biBmaWxlcyB0byB0YWtlIGEgc3BlY2lmaWMgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBpbiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9SVU5UQVNLJz48Z2xvc3N0ZXJtPkJCX1JVTlRBU0s8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGluY2x1ZGVzIHRoZSAiZG9fIiBwcmVmaXguCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWc8L2ZpbGVuYW1lPiwgdGhlIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgICJkb19jb25maWciLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1NDSEVEVUxFUic+PGdsb3NzdGVybT5CQl9TQ0hFRFVMRVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0cyB0aGUgbmFtZSBvZiB0aGUgc2NoZWR1bGVyIHRvIHVzZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxpbmcgb2YgQml0QmFrZSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgVGhyZWUgb3B0aW9ucyBleGlzdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+YmFzaWM8L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2ljIGZyYW1ld29yayBmcm9tIHdoaWNoIGV2ZXJ5dGhpbmcgZGVyaXZlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGlzIG9wdGlvbiBjYXVzZXMgdGFza3MgdG8gYmUgb3JkZXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNhbGx5IGFzIHRoZXkgYXJlIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c3BlZWQ8L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0ZXMgdGFza3MgZmlyc3QgdGhhdCBoYXZlIG1vcmUgdGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgInNwZWVkIiBvcHRpb24gaXMgdGhlIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNvbXBsZXRpb248L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2F1c2VzIHRoZSBzY2hlZHVsZXIgdG8gdHJ5IHRvIGNvbXBsZXRlIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgb25jZSBpdHMgYnVpbGQgaGFzIHN0YXJ0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1NDSEVEVUxFUlMnPjxnbG9zc3Rlcm0+QkJfU0NIRURVTEVSUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGN1c3RvbSBzY2hlZHVsZXJzIHRvIGltcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIHNjaGVkdWxlcnMgbmVlZCB0byBiZSBkZXJpdmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SdW5RdWV1ZVNjaGVkdWxlcjwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gaG93IHRvIHNlbGVjdCBhIHNjaGVkdWxlciwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfU0NIRURVTEVSJz48ZmlsZW5hbWU+QkJfU0NIRURVTEVSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1NFVFNDRU5FX0RFUFZBTElEJz48Z2xvc3N0ZXJtPkJCX1NFVFNDRU5FX0RFUFZBTElEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGZ1bmN0aW9uIEJpdEJha2UgY2FsbHMgdGhhdCBkZXRlcm1pbmVzCisgICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgQml0QmFrZSByZXF1aXJlcyBhIHNldHNjZW5lIGRlcGVuZGVuY3kgdG8gYmUgbWV0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHJ1bm5pbmcgYSBzZXRzY2VuZSB0YXNrLCBCaXRCYWtlIG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgIGtub3cgd2hpY2ggZGVwZW5kZW5jaWVzIG9mIHRoYXQgc2V0c2NlbmUgdGFzayBhbHNvIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgcnVuLgorICAgICAgICAgICAgICAgICAgICBXaGV0aGVyIGRlcGVuZGVuY2llcyBhbHNvIG5lZWQgdG8gYmUgcnVuIGlzIGhpZ2hseQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgb24gdGhlIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoaXMgdmFyaWFibGUgcmV0dXJucyBhCisgICAgICAgICAgICAgICAgICAgICJUcnVlIiBvciAiRmFsc2UiIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBkZXBlbmRlbmN5IG5lZWRzCisgICAgICAgICAgICAgICAgICAgIHRvIGJlIG1ldC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yJz48Z2xvc3N0ZXJtPkJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTjI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGF0IHZlcmlmaWVzIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBsYW5uZWQgdGFzayBleGVjdXRpb24gYmVmb3JlIHRoZSBtYWluIHRhc2sgZXhlY3V0aW9uCisgICAgICAgICAgICAgICAgICAgIGhhcHBlbnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBCaXRCYWtlIGhhcyBhIGxpc3Qgb2Ygc2V0c2NlbmUKKyAgICAgICAgICAgICAgICAgICAgdGFza3MgdGhhdCBoYXZlIHJ1biBhbmQgZWl0aGVyIHN1Y2NlZWRlZCBvciBmYWlsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBhbGxvd3MgZm9yIGEgdGFzayBsaXN0IGNoZWNrIHRvIHNlZSBpZiB0aGV5CisgICAgICAgICAgICAgICAgICAgIG1ha2Ugc2Vuc2UuCisgICAgICAgICAgICAgICAgICAgIEV2ZW4gaWYgQml0QmFrZSB3YXMgcGxhbm5pbmcgdG8gc2tpcCBhIHRhc2ssIHRoZQorICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FuIGZvcmNlIEJpdEJha2UgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZSB0YXNrLCB3aGljaCBpcyBuZWNlc3NhcnkgdW5kZXIgY2VydGFpbiBtZXRhZGF0YQorICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGNpcmN1bXN0YW5jZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfU0lHTkFUVVJFX0VYQ0xVREVfRkxBR1MnPjxnbG9zc3Rlcm0+QkJfU0lHTkFUVVJFX0VYQ0xVREVfRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgdmFyaWFibGUgZmxhZ3MgKHZhcmZsYWdzKQorICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSBzYWZlbHkgZXhjbHVkZWQgZnJvbSBjaGVja3N1bQorICAgICAgICAgICAgICAgICAgICBhbmQgZGVwZW5kZW5jeSBkYXRhIGZvciBrZXlzIGluIHRoZSBkYXRhc3RvcmUuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gZ2VuZXJhdGluZyBjaGVja3N1bSBvciBkZXBlbmRlbmN5IGRhdGEgZm9yIGtleXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGRhdGFzdG9yZSwgdGhlIGZsYWdzIHNldCBhZ2FpbnN0IHRoYXQga2V5IGFyZSBub3JtYWxseQorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiB0aGUgY2hlY2tzdW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZhcmZsYWdzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd2YXJpYWJsZS1mbGFncyc+VmFyaWFibGUgRmxhZ3M8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1NJR05BVFVSRV9IQU5ETEVSJz48Z2xvc3N0ZXJtPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIG5hbWUgb2YgdGhlIHNpZ25hdHVyZSBoYW5kbGVyIEJpdEJha2UgdXNlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNpZ25hdHVyZSBoYW5kbGVyIGRlZmluZXMgdGhlIHdheSBzdGFtcCBmaWxlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhbmQgaGFuZGxlZCwgaWYgYW5kIGhvdyB0aGUgc2lnbmF0dXJlIGlzCisgICAgICAgICAgICAgICAgICAgIGluY29ycG9yYXRlZCBpbnRvIHRoZSBzdGFtcHMsIGFuZCBob3cgdGhlIHNpZ25hdHVyZQorICAgICAgICAgICAgICAgICAgICBpdHNlbGYgaXMgZ2VuZXJhdGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIG5ldyBzaWduYXR1cmUgaGFuZGxlciBjYW4gYmUgYWRkZWQgYnkgaW5qZWN0aW5nIGEgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U2lnbmF0dXJlR2VuZXJhdG9yPC9maWxlbmFtZT4gY2xhc3MgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsIG5hbWVzcGFjZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9TUkNSRVZfUE9MSUNZJz48Z2xvc3N0ZXJtPkJCX1NSQ1JFVl9QT0xJQ1k8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGZldGNoZXIgd2hlbiBpdCBpbnRlcmFjdHMgd2l0aAorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29udHJvbCBzeXN0ZW1zIGFuZCBkeW5hbWljIHNvdXJjZSByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+QkJfU1JDUkVWX1BPTElDWTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgIHVzZWZ1bCB3aGVuIHdvcmtpbmcgd2l0aG91dCBhIG5ldHdvcmsuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBjYW4gYmUgc2V0IHVzaW5nIG9uZSBvZiB0d28gcG9saWNpZXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNhY2hlPC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldGFpbnMgdGhlIHZhbHVlIHRoZSBzeXN0ZW0gb2J0YWluZWQgcHJldmlvdXNseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBzb3VyY2UgY29udHJvbCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIHRpbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNsZWFyPC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJpZXMgdGhlIHNvdXJjZSBjb250cm9scyBzeXN0ZW0gZXZlcnkgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgcG9saWN5LCB0aGVyZSBpcyBubyBjYWNoZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgImNsZWFyIiBwb2xpY3kgaXMgdGhlIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1NUQU1QX1BPTElDWSc+PGdsb3NzdGVybT5CQl9TVEFNUF9QT0xJQ1k8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbW9kZSB1c2VkIGZvciBob3cgdGltZXN0YW1wcyBvZiBzdGFtcCBmaWxlcworICAgICAgICAgICAgICAgICAgICBhcmUgY29tcGFyZWQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoZSB2YXJpYWJsZSB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyBtb2RlczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+cGVyZmlsZTwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgY29tcGFyaXNvbnMgYXJlIG9ubHkgbWFkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gdGltZXN0YW1wcyBvZiBhIHNwZWNpZmljIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmZ1bGw8L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGNvbXBhcmlzb25zIGFyZSBtYWRlIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPndoaXRlbGlzdDwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZGVudGljYWwgdG8gImZ1bGwiIG1vZGUgZXhjZXB0IHRpbWVzdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmlzb25zIGFyZSBtYWRlIGZvciByZWNpcGVzIGxpc3RlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfU1RBTVBfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfU1RBTVBfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YW1wIHBvbGljaWVzIGFyZSBsYXJnZWx5IG9ic29sZXRlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y3Rpb24gb2Ygc2V0c2NlbmUgdGFza3MuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9TVEFNUF9XSElURUxJU1QnPjxnbG9zc3Rlcm0+QkJfU1RBTVBfV0hJVEVMSVNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIGZpbGVzIHdob3NlIHN0YW1wIGZpbGUgdGltZXN0YW1wcyBhcmUgY29tcGFyZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICB0aGUgc3RhbXAgcG9saWN5IG1vZGUgaXMgc2V0IHRvICJ3aGl0ZWxpc3QiLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc3RhbXAgcG9saWNpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX1NUQU1QX1BPTElDWSc+PGZpbGVuYW1lPkJCX1NUQU1QX1BPTElDWTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9TVFJJQ1RfQ0hFQ0tTVU0nPjxnbG9zc3Rlcm0+QkJfU1RSSUNUX0NIRUNLU1VNPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNldHMgYSBtb3JlIHN0cmljdCBjaGVja3N1bSBtZWNoYW5pc20gZm9yIG5vbi1sb2NhbCBVUkxzLgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYSB2YWx1ZSBjYXVzZXMgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICB0byByZXBvcnQgYW4gZXJyb3IgaWYgaXQgZW5jb3VudGVycyBhIG5vbi1sb2NhbCBVUkwKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkb2VzIG5vdCBoYXZlIGF0IGxlYXN0IG9uZSBjaGVja3N1bSBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfVEFTS19JT05JQ0VfTEVWRUwnPjxnbG9zc3Rlcm0+QkJfVEFTS19JT05JQ0VfTEVWRUw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWxsb3dzIGFkanVzdG1lbnQgb2YgYSB0YXNrJ3MgSW5wdXQvT3V0cHV0IHByaW9yaXR5LgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgQXV0b2J1aWxkZXIgdGVzdGluZywgcmFuZG9tIGZhaWx1cmVzIGNhbiBvY2N1cgorICAgICAgICAgICAgICAgICAgICBmb3IgdGFza3MgZHVlIHRvIEkvTyBzdGFydmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmYWlsdXJlcyBvY2N1ciBkdXJpbmcgdmFyaW91cyBRRU1VIHJ1bnRpbWUgdGltZW91dHMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+QkJfVEFTS19JT05JQ0VfTEVWRUw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBhZGp1c3QgdGhlIEkvTyBwcmlvcml0eSBvZiB0aGVzZSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHdvcmtzIHNpbWlsYXJseSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9UQVNLX05JQ0VfTEVWRUwnPjxmaWxlbmFtZT5CQl9UQVNLX05JQ0VfTEVWRUw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGV4Y2VwdCB3aXRoIGEgdGFzaydzIEkvTyBwcmlvcml0aWVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9UQVNLX0lPTklDRV9MRVZFTCA9ICI8cmVwbGFjZWFibGU+Y2xhc3M8L3JlcGxhY2VhYmxlPi48cmVwbGFjZWFibGU+cHJpbzwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciA8cmVwbGFjZWFibGU+Y2xhc3M8L3JlcGxhY2VhYmxlPiwgdGhlIGRlZmF1bHQgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgIjIiLCB3aGljaCBpcyBhIGJlc3QgZWZmb3J0LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSAiMSIgZm9yIHJlYWx0aW1lIGFuZCAiMyIgZm9yIGlkbGUuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSByZWFsdGltZSwgeW91IG11c3QgaGF2ZSBzdXBlcnVzZXIKKyAgICAgICAgICAgICAgICAgICAgcHJpdmlsZWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIDxyZXBsYWNlYWJsZT5wcmlvPC9yZXBsYWNlYWJsZT4sIHlvdSBjYW4gdXNlIGFueQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBmcm9tICIwIiwgd2hpY2ggaXMgdGhlIGhpZ2hlc3QgcHJpb3JpdHksIHRvICI3IiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIGxvd2VzdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIjQiLgorICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgYW55IHNwZWNpYWwgcHJpdmlsZWdlcyB0byB1c2UgdGhpcyByYW5nZQorICAgICAgICAgICAgICAgICAgICBvZiBwcmlvcml0eSB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHlvdXIgSS9PIHByaW9yaXR5IHNldHRpbmdzIHRvIHRha2UgZWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdGhlIENvbXBsZXRlbHkgRmFpciBRdWV1aW5nIChDRlEpIFNjaGVkdWxlcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgZm9yIHRoZSBiYWNraW5nIGJsb2NrIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHNlbGVjdCB0aGUgc2NoZWR1bGVyLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIDxyZXBsYWNlYWJsZT5kZXZpY2U8L3JlcGxhY2VhYmxlPiBpcyB0aGUgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBzZGEsIHNkYiwgYW5kIHNvIGZvcnRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICQgc3VkbyBzaCAtYyDigJxlY2hvIGNmcSA+IC9zeXMvYmxvY2svPHJlcGxhY2VhYmxlPmRldmljZTwvcmVwbGFjZWFibGU+L3F1ZXUvc2NoZWR1bGVyCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9UQVNLX05JQ0VfTEVWRUwnPjxnbG9zc3Rlcm0+QkJfVEFTS19OSUNFX0xFVkVMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFsbG93cyBzcGVjaWZpYyB0YXNrcyB0byBjaGFuZ2UgdGhlaXIgcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gbmljZSBsZXZlbCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgaW4gY29tYmluYXRpb24gd2l0aCB0YXNrCisgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlcyB0byByYWlzZSBvciBsb3dlciBwcmlvcml0aWVzIG9mIHNwZWNpZmljIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGF1dG9idWlsZGVyLCBRRU1VIGVtdWxhdGlvbiBpbiBpbWFnZXMgaXMgZ2l2ZW4gYSBoaWdoZXIKKyAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkgYXMgY29tcGFyZWQgdG8gYnVpbGQgdGFza3MgdG8gZW5zdXJlIHRoYXQgaW1hZ2VzCisgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBzdWZmZXIgdGltZW91dHMgb24gbG9hZGVkIHN5c3RlbXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJfVEFTS0hBU0gnPjxnbG9zc3Rlcm0+QkJfVEFTS0hBU0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aGluIGFuIGV4ZWN1dGluZyB0YXNrLCB0aGlzIHZhcmlhYmxlIGhvbGRzIHRoZSBoYXNoCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXNrIGFzIHJldHVybmVkIGJ5IHRoZSBjdXJyZW50bHkgZW5hYmxlZAorICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUgZ2VuZXJhdG9yLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX1ZFUkJPU0VfTE9HUyc+PGdsb3NzdGVybT5CQl9WRVJCT1NFX0xPR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgaG93IHZlcmJvc2UgQml0QmFrZSBpcyBkdXJpbmcgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICBJZiBzZXQsIHNoZWxsIHNjcmlwdHMgZWNobyBjb21tYW5kcyBhbmQgc2hlbGwgc2NyaXB0IG91dHB1dAorICAgICAgICAgICAgICAgICAgICBhcHBlYXJzIG9uIHN0YW5kYXJkIG91dCAoc3Rkb3V0KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9XT1JLRVJDT05URVhUJz48Z2xvc3N0ZXJtPkJCX1dPUktFUkNPTlRFWFQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgZXhlY3V0aW5nIGEgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBzZXRzIHRoaXMgdmFyaWFibGUgdG8gIjEiIHdoZW4gYSB0YXNrIGlzCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGV4ZWN1dGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgbm90IHNldCB3aGVuIHRoZSB0YXNrIGlzIGluIHNlcnZlciBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgIGR1cmluZyBwYXJzaW5nIG9yIGV2ZW50IGhhbmRsaW5nLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJDTEFTU0VYVEVORCc+PGdsb3NzdGVybT5CQkNMQVNTRVhURU5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFsbG93cyB5b3UgdG8gZXh0ZW5kIGEgcmVjaXBlIHNvIHRoYXQgaXQgYnVpbGRzIHZhcmlhbnRzCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlcyBvZiB0aGVzZSB2YXJpYW50cyBmb3IgcmVjaXBlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YSBhcmUgIm5hdGl2ZXMiIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnF1aWx0LW5hdGl2ZTwvZmlsZW5hbWU+LCB3aGljaCBpcyBhIGNvcHkgb2YKKyAgICAgICAgICAgICAgICAgICAgUXVpbHQgYnVpbHQgdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW07ICJjcm9zc2VzIiBzdWNoCisgICAgICAgICAgICAgICAgICAgIGFzIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgYSBjb21waWxlcgorICAgICAgICAgICAgICAgICAgICBidWlsdCB0byBydW4gb24gdGhlIGJ1aWxkIG1hY2hpbmUgYnV0IHByb2R1Y2VzIGJpbmFyaWVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgcnVuIG9uIHRoZSB0YXJnZXQgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjsKKyAgICAgICAgICAgICAgICAgICAgIm5hdGl2ZXNkayIsIHdoaWNoIHRhcmdldHMgdGhlIFNESyBtYWNoaW5lIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjsgYW5kICJtdWxpdGxpYnMiIGluIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+bXVsdGlsaWI6PC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXVsdGlsaWJfbmFtZTwvcmVwbGFjZWFibGU+Ii4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gYnVpbGQgYSBkaWZmZXJlbnQgdmFyaWFudCBvZiB0aGUgcmVjaXBlIHdpdGggYSBtaW5pbWFsCisgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBjb2RlLCBpdCB1c3VhbGx5IGlzIGFzIHNpbXBsZSBhcyBhZGRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0d28gZXhhbXBsZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSAibmF0aXZlIiB2YXJpYW50cyBhcmUgZnJvbSB0aGUgT3BlbkVtYmVkZGVkLUNvcmUKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJDTEFTU0VYVEVORCA9KyAibmF0aXZlIG5hdGl2ZXNkayIKKyAgICAgQkJDTEFTU0VYVEVORCA9KyAibXVsdGlsaWI6PHJlcGxhY2VhYmxlPm11bHRpbGliX25hbWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxseSwgdGhlIDxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbSBnZW5lcmF0ZXMgcmVjaXBlIHZhcmlhbnRzIGJ5IHJld3JpdGluZworICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIGFuZCBhcHBseWluZyBvdmVycmlkZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9jbGFzcy1uYXRpdmU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBnZW5lcmF0ZSBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGEgcmVjaXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgYQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvbiAiZm9vIiBpcyByZXdyaXR0ZW4gdG8gYSA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBvbiAiZm9vLW5hdGl2ZSIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRXZlbiB3aGVuIHVzaW5nIDxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT4sIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGlzIG9ubHkgcGFyc2VkIG9uY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBQYXJzaW5nIG9uY2UgYWRkcyBzb21lIGxpbWl0YXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGl0IGlzIG5vdCBwb3NzaWJsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBhIGRpZmZlcmVudCBmaWxlIGRlcGVuZGluZyBvbiB0aGUgdmFyaWFudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmNlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gc3RhdGVtZW50cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB3aGVuIHRoZSByZWNpcGUgaXMgcGFyc2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCREVCVUcnPjxnbG9zc3Rlcm0+QkJERUJVRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXRzIHRoZSBCaXRCYWtlIGRlYnVnIG91dHB1dCBsZXZlbCB0byBhIHNwZWNpZmljIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGFzIGluY3JlbWVudGVkIGJ5IHRoZSA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPiBjb21tYW5kIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlIGluIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgZm9yIGl0IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJGSUxFX0NPTExFQ1RJT05TJz48Z2xvc3N0ZXJtPkJCRklMRV9DT0xMRUNUSU9OUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPkxpc3RzIHRoZSBuYW1lcyBvZiBjb25maWd1cmVkIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgbmFtZXMgYXJlIHVzZWQgdG8gZmluZCB0aGUgb3RoZXIgPGZpbGVuYW1lPkJCRklMRV8qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIGVhY2ggbGF5ZXIgYXBwZW5kcyBpdHMgbmFtZSB0byB0aGlzIHZhcmlhYmxlIGluIGl0cworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQkZJTEVfUEFUVEVSTic+PGdsb3NzdGVybT5CQkZJTEVfUEFUVEVSTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPlZhcmlhYmxlIHRoYXQgZXhwYW5kcyB0byBtYXRjaCBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQkZJTEVTJz48ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbiBhIHBhcnRpY3VsYXIgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kIG11c3QKKyAgICAgICAgICAgICAgICAgICAgYmUgc3VmZml4ZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMgbGF5ZXIgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCRklMRV9QQVRURVJOX2VtZW5sb3c8L2ZpbGVuYW1lPikuPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJGSUxFX1BSSU9SSVRZJz48Z2xvc3N0ZXJtPkJCRklMRV9QUklPUklUWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPkFzc2lnbnMgdGhlIHByaW9yaXR5IGZvciByZWNpcGUgZmlsZXMgaW4gZWFjaCBsYXllci48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2FtZSByZWNpcGUgYXBwZWFycyBpbgorICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25lIGxheWVyLgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBwcmlvcml0aXplIGEKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgYWdhaW5zdCBvdGhlciBsYXllcnMgdGhhdCBjb250YWluIHRoZSBzYW1lIHJlY2lwZSAtIGVmZmVjdGl2ZWx5CisgICAgICAgICAgICAgICAgICAgIGxldHRpbmcgeW91IGNvbnRyb2wgdGhlIHByZWNlZGVuY2UgZm9yIHRoZSBtdWx0aXBsZSBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmVjZWRlbmNlIGVzdGFibGlzaGVkIHRocm91Z2ggdGhpcyB2YXJpYWJsZSBzdGFuZHMgcmVnYXJkbGVzcyBvZiBhCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSdzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlKS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgbGF5ZXIgdGhhdCBoYXMgYSByZWNpcGUgd2l0aCBhIGhpZ2hlciA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiB2YWx1ZSBidXQgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRoZSA8ZmlsZW5hbWU+QkJGSUxFX1BSSU9SSVRZPC9maWxlbmFtZT4gaXMgc2V0IHRvIGhhdmUgYSBsb3dlciBwcmVjZWRlbmNlIHN0aWxsIGhhcyBhCisgICAgICAgICAgICAgICAgICAgIGxvd2VyIHByZWNlZGVuY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPkEgbGFyZ2VyIHZhbHVlIGZvciB0aGUgPGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+IHZhcmlhYmxlIHJlc3VsdHMgaW4gYSBoaWdoZXIKKyAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSB2YWx1ZSA2IGhhcyBhIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gdGhlIHZhbHVlIDUuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSA8ZmlsZW5hbWU+QkJGSUxFX1BSSU9SSVRZPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgc2V0IGJhc2VkIG9uIGxheWVyCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyAoc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLWJiLUxBWUVSREVQRU5EUyc+TEFZRVJERVBFTkRTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBwcmlvcml0eSwgaWYgdW5zcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGF5ZXIgd2l0aCBubyBkZXBlbmRlbmNpZXMsIGlzIHRoZSBsb3dlc3QgZGVmaW5lZCBwcmlvcml0eSArIDEKKyAgICAgICAgICAgICAgICAgICAgKG9yIDEgaWYgbm8gcHJpb3JpdGllcyBhcmUgZGVmaW5lZCkuPC9wYXJhPgorICAgICAgICAgICAgICAgIDx0aXA+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjb21tYW5kIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBzaG93LWxheWVyczwvZmlsZW5hbWU+IHRvIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgYWxsIGNvbmZpZ3VyZWQgbGF5ZXJzIGFsb25nIHdpdGggdGhlaXIgcHJpb3JpdGllcy4KKyAgICAgICAgICAgICAgICA8L3RpcD4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCRklMRVMnPjxnbG9zc3Rlcm0+QkJGSUxFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJlY2lwZSBmaWxlcyBCaXRCYWtlIHVzZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gc3BlY2lmeWluZyByZWNpcGUgZmlsZXMsIHlvdSBjYW4gcGF0dGVybiBtYXRjaCB1c2luZworICAgICAgICAgICAgICAgICAgICBQeXRob24ncworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvZ2xvYi5odG1sJz48ZmlsZW5hbWU+Z2xvYjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgc3ludGF4LgorICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgc3ludGF4LCBzZWUgdGhlIGRvY3VtZW50YXRpb24gYnkKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZSBwcmV2aW91cyBsaW5rLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCRklMRVNfRFlOQU1JQyc+PGdsb3NzdGVybT5CQkZJTEVTX0RZTkFNSUM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCRklMRVNfRFlOQU1JQ1tkb2NdID0gIkFjdGl2YXRlcyBjb250ZW50IGRlcGVuZGluZyBvbiBwcmVzZW5jZSBvZiBpZGVudGlmaWVkIGxheWVycy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFjdGl2YXRlcyBjb250ZW50IGRlcGVuZGluZyBvbiBwcmVzZW5jZSBvZiBpZGVudGlmaWVkIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGlkZW50aWZ5IHRoZSBsYXllcnMgYnkgdGhlIGNvbGxlY3Rpb25zIHRoYXQgdGhlIGxheWVycworICAgICAgICAgICAgICAgICAgICBkZWZpbmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPkJCRklMRVNfRFlOQU1JQzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGF2b2lkIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcyB3aG9zZQorICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGlzIGluIGEgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhdHRlbXB0cyB0byBtb2RpZnkgb3RoZXIgbGF5ZXJzIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGJ1dCBkb2VzIG5vdCB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBhIGhhcmQgZGVwZW5kZW5jeSBvbiB0aG9zZSBvdGhlciBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSB5b3UgY2FuIHByZWZpeCB0aGUgcnVsZSB3aXRoICIhIiB0byBhZGQgCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGluIGNhc2UgYSBsYXllciBpcyBub3QgcHJlc2VudC4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgYXZvaWQgaGFyZCBkZXBlbmRlbmN5IG9uIHRob3NlIG90aGVyIGxheWVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgZm9ybSBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCRklMRVNfRFlOQU1JQzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Y29sbGVjdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPmZpbGVuYW1lX3BhdHRlcm48L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpZGVudGlmaWVzIHR3byBjb2xsZWN0aW9uIG5hbWVzIGFuZAorICAgICAgICAgICAgICAgICAgICB0d28gZmlsZW5hbWUgcGF0dGVybnM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJCRklMRVNfRFlOQU1JQyArPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW5nLWxheWVyOiR7TEFZRVJESVJ9L2JiYXBwZW5kcy9tZXRhLWNsYW5nLyovKi8qLmJiYXBwZW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlOiR7TEFZRVJESVJ9L2JiYXBwZW5kcy9vcGVuZW1iZWRkZWQtY29yZS9tZXRhLyovKi8qLmJiYXBwZW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBjb2xsZWN0aW9uIG5hbWUgaXMgcHJlZml4ZWQgd2l0aCAiISIgaXQgd2lsbCBhZGQgdGhlIGZpbGUgcGF0dGVybiBpbiBjYXNlCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciBpcyBhYnNlbnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJCRklMRVNfRFlOQU1JQyArPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjbGFuZy1sYXllcjoke0xBWUVSRElSfS9iYWNrZmlsbC9tZXRhLWNsYW5nLyovKi8qLmJiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgc2hvd3MgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IG9jY3VycworICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGludmFsaWQgZW50cmllcyBhcmUgZm91bmQsIHdoaWNoIGNhdXNlIHBhcnNpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgYWJvcnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgRVJST1I6IEJCRklMRVNfRFlOQU1JQyBlbnRyaWVzIG11c3QgYmUgb2YgdGhlIGZvcm0geyF9Jmx0O2NvbGxlY3Rpb24gbmFtZSZndDs6Jmx0O2ZpbGVuYW1lIHBhdHRlcm4mZ3Q7LCBub3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAvd29yay9teS1sYXllci9iYmFwcGVuZHMvbWV0YS1zZWN1cml0eS1pc2Fmdy8qLyovKi5iYmFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgL3dvcmsvbXktbGF5ZXIvYmJhcHBlbmRzL29wZW5lbWJlZGRlZC1jb3JlL21ldGEvKi8qLyouYmJhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCSU5DTFVERUQnPjxnbG9zc3Rlcm0+QkJJTkNMVURFRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb250YWlucyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBvZiBhbGwgZmlsZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlJ3MgcGFyc2VyIGluY2x1ZGVkIGR1cmluZyBwYXJzaW5nIG9mIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJJTkNMVURFTE9HUyc+PGdsb3NzdGVybT5CQklOQ0xVREVMT0dTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byBhIHZhbHVlLCBlbmFibGVzIHByaW50aW5nIHRoZSB0YXNrIGxvZyB3aGVuCisgICAgICAgICAgICAgICAgICAgIHJlcG9ydGluZyBhIGZhaWxlZCB0YXNrLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCSU5DTFVERUxPR1NfTElORVMnPjxnbG9zc3Rlcm0+QkJJTkNMVURFTE9HU19MSU5FUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJJTkNMVURFTE9HUyc+PGZpbGVuYW1lPkJCSU5DTFVERUxPR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0LCBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIHRhc2sgbG9nIGZpbGUgdG8gcHJpbnQgd2hlbiByZXBvcnRpbmcgYSBmYWlsZWQgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzZXQgPGZpbGVuYW1lPkJCSU5DTFVERUxPR1NfTElORVM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGVudGlyZSBsb2cgaXMgcHJpbnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQkxBWUVSUyc+PGdsb3NzdGVybT5CQkxBWUVSUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPkxpc3RzIHRoZSBsYXllcnMgdG8gZW5hYmxlIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiB0aGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTEFZRVJTID0gIiBcCisgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhIFwKKyAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEteW9jdG8gXAorICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS15b2N0by1ic3AgXAorICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS1teWtlcm5lbCBcCisgICAgICAgIgorCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGVuYWJsZXMgZm91ciBsYXllcnMsIG9uZSBvZiB3aGljaCBpcyBhIGN1c3RvbSwgdXNlci1kZWZpbmVkIGxheWVyCisgICAgICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5tZXRhLW15a2VybmVsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJMQVlFUlNfRkVUQ0hfRElSJz48Z2xvc3N0ZXJtPkJCTEFZRVJTX0ZFVENIX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXRzIHRoZSBiYXNlIGxvY2F0aW9uIHdoZXJlIGxheWVycyBhcmUgc3RvcmVkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBsYXllcmluZGV4LWZldGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIHRlbGxzIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHdoZXJlIHRvIHBsYWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSBmZXRjaGVkIGxheWVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQk1BU0snPjxnbG9zc3Rlcm0+QkJNQVNLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFByZXZlbnRzIEJpdEJha2UgZnJvbSBwcm9jZXNzaW5nIHJlY2lwZXMgYW5kIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+QkJNQVNLPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgdG8gImhpZGUiIHRoZXNlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGlnbm9yZXMgYW55IHJlY2lwZSBvciByZWNpcGUgYXBwZW5kIGZpbGVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYW55IG9mIHRoZSBleHByZXNzaW9ucy4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYXMgaWYgQml0QmFrZSBkb2VzIG5vdCBzZWUgdGhlbSBhdCBhbGwuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgbWF0Y2hpbmcgZmlsZXMgYXJlIG5vdCBwYXJzZWQgb3Igb3RoZXJ3aXNlCisgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlcyB5b3UgcHJvdmlkZSBhcmUgcGFzc2VkIHRvIFB5dGhvbidzIHJlZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgc3ludGF4IGZvbGxvd3MgUHl0aG9uJ3MgUmVndWxhcgorICAgICAgICAgICAgICAgICAgICBFeHByZXNzaW9uIChyZSkgc3ludGF4LgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhwcmVzc2lvbnMgYXJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIGZ1bGwgcGF0aHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgY29tcGxldGUgc3ludGF4IGluZm9ybWF0aW9uLCBzZWUgUHl0aG9uJ3MKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9yZS5odG1sI3JlJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHVzZXMgYSBjb21wbGV0ZSByZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgdG8gdGVsbCBCaXRCYWtlIHRvIGlnbm9yZSBhbGwgcmVjaXBlIGFuZCByZWNpcGUgYXBwZW5kCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS10aS9yZWNpcGVzLW1pc2MvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTUFTSyA9ICJtZXRhLXRpL3JlY2lwZXMtbWlzYy8iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gbWFzayBvdXQgbXVsdGlwbGUgZGlyZWN0b3JpZXMgb3IgcmVjaXBlcywKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcmFnbWVudHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIG1hc2tzIG91dCBtdWx0aXBsZSBkaXJlY3RvcmllcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCByZWNpcGVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTUFTSyArPSAiL21ldGEtdGkvcmVjaXBlcy1taXNjLyBtZXRhLXRpL3JlY2lwZXMtdGkvcGFja2FnZWdyb3VwLyIKKyAgICAgQkJNQVNLICs9ICIvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvIgorICAgICBCQk1BU0sgKz0gIi9tZXRhLWZvby8uKi9vcGVubGRhcCIKKyAgICAgQkJNQVNLICs9ICJvcGVuY3YuKlwuYmJhcHBlbmQiCisgICAgIEJCTUFTSyArPSAibHptYSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gc3BlY2lmeWluZyBhIGRpcmVjdG9yeSBuYW1lLCB1c2UgdGhlIHRyYWlsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBzbGFzaCBjaGFyYWN0ZXIgdG8gZW5zdXJlIHlvdSBtYXRjaCBqdXN0IHRoYXQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJNVUxUSUNPTkZJRyc+PGdsb3NzdGVybT5CQk1VTFRJQ09ORklHPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQk1VTFRJQ09ORklHW2RvY10gPSAiRW5hYmxlcyBCaXRCYWtlIHRvIHBlcmZvcm0gbXVsdGlwbGUgY29uZmlndXJhdGlvbiBidWlsZHMgYW5kIGxpc3RzIGVhY2ggc2VwYXJhdGUgY29uZmlndXJhdGlvbiAobXVsdGljb25maWcpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgQml0QmFrZSB0byBwZXJmb3JtIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gYnVpbGRzCisgICAgICAgICAgICAgICAgICAgIGFuZCBsaXN0cyBlYWNoIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gKG11bHRpY29uZmlnKS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyB2YXJpYWJsZSB0byBjYXVzZSBCaXRCYWtlIHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHRhcmdldHMgd2hlcmUgZWFjaCB0YXJnZXQgaGFzIGEgc2VwYXJhdGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lIDxmaWxlbmFtZT5CQk1VTFRJQ09ORklHPC9maWxlbmFtZT4gaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGxpbmUgc3BlY2lmaWVzIHRocmVlCisgICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlncywgZWFjaCBoYXZpbmcgYSBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJNVUxUSUZPTkZJRyA9ICJjb25maWdBIGNvbmZpZ0IgY29uZmlnQyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBFYWNoIGNvbmZpZ3VyYXRpb24gZmlsZSB5b3UgdXNlIG11c3QgcmVzaWRlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3Rvcnkgd2l0aGluIGEgZGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL211bHRpY29uZmlnPC9maWxlbmFtZT4gKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL211bHRpY29uZmlnL2NvbmZpZ0EuY29uZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCTVVMVElDT05GSUc8L2ZpbGVuYW1lPiBpbiBhbiBlbnZpcm9ubWVudCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGJ1aWxkaW5nIHRhcmdldHMgd2l0aCBtdWx0aXBsZSBjb25maWd1cmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZXhlY3V0aW5nLWEtbXVsdGlwbGUtY29uZmlndXJhdGlvbi1idWlsZCc+RXhlY3V0aW5nIGEgTXVsdGlwbGUgQ29uZmlndXJhdGlvbiBCdWlsZDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJQQVRIJz48Z2xvc3N0ZXJtPkJCUEFUSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2VkIGJ5IEJpdEJha2UgdG8gbG9jYXRlIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgYW5kIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+KSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBhbmFsb2dvdXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gQml0QmFrZSBmcm9tIGEgZGlyZWN0b3J5IG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgYmUgc3VyZSB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IHRvIHBvaW50IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgYXMgeW91IHdvdWxkIGFueSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlbiBydW4gQml0QmFrZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIEJCUEFUSD0iPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+IgorICAgICAkIGV4cG9ydCBCQlBBVEgKKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJTRVJWRVInPjxnbG9zc3Rlcm0+QkJTRVJWRVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBzZXJ2ZXIgdGhhdCBydW5zIG1lbW9yeS1yZXNpZGVudCBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgaXMgb25seSB1c2VkIHdoZW4geW91IGVtcGxveSBtZW1vcnktcmVzaWRlbnQKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQlRBUkdFVFMnPjxnbG9zc3Rlcm0+QkJUQVJHRVRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFsbG93cyB5b3UgdG8gdXNlIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGFkZCB0byB0aGUgbGlzdAorICAgICAgICAgICAgICAgICAgICBvZiBjb21tYW5kLWxpbmUgdGFyZ2V0IHJlY2lwZXMgeW91IHdhbnQgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQkJWRVJTSU9OUyc+PGdsb3NzdGVybT5CQlZFUlNJT05TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFsbG93cyBhIHNpbmdsZSByZWNpcGUgdG8gYnVpbGQgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGZyb20gYSBzaW5nbGUgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBhbHNvIGFibGUgdG8gc3BlY2lmeSBjb25kaXRpb25hbCBtZXRhZGF0YQorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLU9WRVJSSURFUyc+PGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20gZm9yIGEgc2luZ2xlIHZlcnNpb24gb3IgZm9yIGFuIG9wdGlvbmFsbHkgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2Ugb2YgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5CQlZFUlNJT05TPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ZhcmlhbnRzLWNsYXNzLWV4dGVuc2lvbi1tZWNoYW5pc20nPlZhcmlhbnRzIC0gQ2xhc3MgRXh0ZW5zaW9uIE1lY2hhbmlzbTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItQklUQkFLRV9VSSc+PGdsb3NzdGVybT5CSVRCQUtFX1VJPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgdG8gc3BlY2lmeSB0aGUgVUkgbW9kdWxlIHRvIHVzZSB3aGVuIHJ1bm5pbmcgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyB2YXJpYWJsZSBpcyBlcXVpdmFsZW50IHRvIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXU8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlIGluIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgZm9yIGl0IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CVUlMRE5BTUUnPjxnbG9zc3Rlcm0+QlVJTEROQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgbmFtZSBhc3NpZ25lZCB0byB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIGRlZmF1bHRzIHRvIGEgZGF0ZXRpbWUgc3RhbXAgb2Ygd2hlbiB0aGUgYnVpbGQgd2FzCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQgYnV0IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CWlJESVInPjxnbG9zc3Rlcm0+QlpSRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZmlsZXMgY2hlY2tlZCBvdXQgb2YgYSBCYXphYXIKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGFyZSBzdG9yZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LWMnPjx0aXRsZT5DPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUNBQ0hFJz48Z2xvc3N0ZXJtPkNBQ0hFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IEJpdEJha2UgdXNlcyB0byBzdG9yZSBhIGNhY2hlCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBtZXRhZGF0YSBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHBhcnNlZCBldmVyeQorICAgICAgICAgICAgICAgICAgICB0aW1lIEJpdEJha2UgaXMgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1DVlNESVInPjxnbG9zc3Rlcm0+Q1ZTRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZmlsZXMgY2hlY2tlZCBvdXQgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgICAgIENWUyBzeXN0ZW0gYXJlIHN0b3JlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItYmItZ2xvc3NhcnktZCc+PHRpdGxlPkQ8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItREVGQVVMVF9QUkVGRVJFTkNFJz48Z2xvc3N0ZXJtPkRFRkFVTFRfUFJFRkVSRU5DRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB3ZWFrIGJpYXMgZm9yIHJlY2lwZSBzZWxlY3Rpb24gcHJpb3JpdHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNhZ2Ugb2YgdGhpcyBpcyB2YXJpYWJsZSBpcyB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgaXQgdG8gIi0xIiB3aXRoaW4gYSByZWNpcGUgZm9yIGEgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiBhCisgICAgICAgICAgICAgICAgICAgIHBpZWNlIG9mIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgdmFyaWFibGUgaW4gdGhpcyB3YXkgY2F1c2VzIHRoZSBzdGFibGUgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcmVjaXBlIHRvIGJ1aWxkIGJ5IGRlZmF1bHQgaW4gdGhlIGFic2VuY2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QUkVGRVJSRURfVkVSU0lPTic+UFJFRkVSUkVEX1ZFUlNJT048L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZCB0byBidWlsZCB0aGUgZGV2ZWxvcG1lbnQgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiaWFzIHByb3ZpZGVkIGJ5IDxmaWxlbmFtZT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyB3ZWFrIGFuZCBpcyBvdmVycmlkZGVuIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItYmItQkJGSUxFX1BSSU9SSVRZJz5CQkZJTEVfUFJJT1JJVFk8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCB2YXJpYWJsZSBpcyBkaWZmZXJlbnQgYmV0d2VlbiB0d28gbGF5ZXJzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLURFUEVORFMnPjxnbG9zc3Rlcm0+REVQRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyBhIHJlY2lwZSdzIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIChpLmUuIG90aGVyIHJlY2lwZSBmaWxlcykuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoaXMgc2ltcGxlIGV4YW1wbGUgZm9yIHR3byByZWNpcGVzIG5hbWVkICJhIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgImIiIHRoYXQgcHJvZHVjZSBzaW1pbGFybHkgbmFtZWQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGFwcGVhcnMgaW4gdGhlICJhIiByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgREVQRU5EUyA9ICJiIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEhlcmUsIHRoZSBkZXBlbmRlbmN5IGlzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IHRhc2sgZm9yIHJlY2lwZSAiYSIKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9mIHJlY2lwZSAiYiIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWVhbnMgYW55dGhpbmcgdGhhdCByZWNpcGUgImIiIHB1dHMgaW50byBzeXNyb290CisgICAgICAgICAgICAgICAgICAgIGlzIGF2YWlsYWJsZSB3aGVuIHJlY2lwZSAiYSIgaXMgY29uZmlndXJpbmcgaXRzZWxmLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gcnVudGltZSBkZXBlbmRlbmNpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItREVTQ1JJUFRJT04nPjxnbG9zc3Rlcm0+REVTQ1JJUFRJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBsb25nIGRlc2NyaXB0aW9uIGZvciB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLURMX0RJUic+PGdsb3NzdGVybT5ETF9ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNlbnRyYWwgZG93bmxvYWQgZGlyZWN0b3J5IHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgdG8KKyAgICAgICAgICAgICAgICAgICAgc3RvcmUgZG93bmxvYWRzLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gZ2V0cyBmaWxlcworICAgICAgICAgICAgICAgICAgICBzdWl0YWJsZSBmb3IgbWlycm9yaW5nIGZvciBldmVyeXRoaW5nIGV4Y2VwdCBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0YXJiYWxscyBvZiBHaXQgcmVwb3NpdG9yaWVzLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKworICAgICAgICA8L2dsb3NzZW50cnk+CisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LWUnPjx0aXRsZT5FPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUVYQ0xVREVfRlJPTV9XT1JMRCc+PGdsb3NzdGVybT5FWENMVURFX0ZST01fV09STEQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0cyBCaXRCYWtlIHRvIGV4Y2x1ZGUgYSByZWNpcGUgZnJvbSB3b3JsZCBidWlsZHMgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2Ugd29ybGQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyB3b3JsZCBidWlsZHMsIEJpdEJha2UgbG9jYXRlcywgcGFyc2VzIGFuZCBidWlsZHMgYWxsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgZm91bmQgaW4gZXZlcnkgbGF5ZXIgZXhwb3NlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGV4Y2x1ZGUgYSByZWNpcGUgZnJvbSBhIHdvcmxkIGJ1aWxkIHVzaW5nIHRoaXMgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgIHNldCB0aGUgdmFyaWFibGUgdG8gIjEiIGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgYWRkZWQgdG8gPGZpbGVuYW1lPkVYQ0xVREVfRlJPTV9XT1JMRDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG1heSBzdGlsbCBiZSBidWlsdCBkdXJpbmcgYSB3b3JsZCBidWlsZCBpbiBvcmRlciB0byBzYXRpc2Z5CisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBvZiBvdGhlciByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBBZGRpbmcgYSByZWNpcGUgdG8gPGZpbGVuYW1lPkVYQ0xVREVfRlJPTV9XT1JMRDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9ubHkgZW5zdXJlcyB0aGF0IHRoZSByZWNpcGUgaXMgbm90IGV4cGxpY2l0bHkgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGxpc3Qgb2YgYnVpbGQgdGFyZ2V0cyBpbiBhIHdvcmxkIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1iYi1nbG9zc2FyeS1mJz48dGl0bGU+RjwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1GQUtFUk9PVCc+PGdsb3NzdGVybT5GQUtFUk9PVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgdGhlIGNvbW1hbmQgdG8gdXNlIHdoZW4gcnVubmluZyBhIHNoZWxsIHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgaW4gYSBmYWtlcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RkFLRVJPT1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBvYnNvbGV0ZQorICAgICAgICAgICAgICAgICAgICAgYW5kIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZBS0VST09UKjwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGVzZSBlbnRyaWVzIGluIHRoZSBnbG9zc2FyeSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1GQUtFUk9PVEJBU0VFTlYnPjxnbG9zc3Rlcm0+RkFLRVJPT1RCQVNFRU5WPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICBMaXN0cyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IHdoZW4gZXhlY3V0aW5nCisgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItRkFLRVJPT1RDTUQnPjxmaWxlbmFtZT5GQUtFUk9PVENNRDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgdGhhdCBzdGFydHMgdGhlIGJpdGJha2Utd29ya2VyIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmYWtlcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1GQUtFUk9PVENNRCc+PGdsb3NzdGVybT5GQUtFUk9PVENNRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgdGhlIGNvbW1hbmQgdGhhdCBzdGFydHMgdGhlIGJpdGJha2Utd29ya2VyCisgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIGluIHRoZSBmYWtlcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1GQUtFUk9PVERJUlMnPjxnbG9zc3Rlcm0+RkFLRVJPT1RESVJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICBMaXN0cyBkaXJlY3RvcmllcyB0byBjcmVhdGUgYmVmb3JlIHJ1bm5pbmcgYSB0YXNrIGluCisgICAgICAgICAgICAgICAgICAgICB0aGUgZmFrZXJvb3QgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItRkFLRVJPT1RFTlYnPjxnbG9zc3Rlcm0+RkFLRVJPT1RFTlY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIExpc3RzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgd2hlbiBydW5uaW5nIGEgdGFzaworICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGZha2Vyb290IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgdGhlIGZha2Vyb290IGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItRkFLRVJPT1RCQVNFRU5WJz48ZmlsZW5hbWU+RkFLRVJPT1RCQVNFRU5WPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1GQUtFUk9PVE5PRU5WJz48Z2xvc3N0ZXJtPkZBS0VST09UTk9FTlY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIExpc3RzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgd2hlbiBydW5uaW5nIGEgdGFzaworICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBub3QgaW4gdGhlIGZha2Vyb290IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgdGhlIGZha2Vyb290IGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItRkFLRVJPT1RFTlYnPjxmaWxlbmFtZT5GQUtFUk9PVEVOVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItRkVUQ0hDTUQnPjxnbG9zc3Rlcm0+RkVUQ0hDTUQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgY29tbWFuZCB0aGUgQml0QmFrZSBmZXRjaGVyIG1vZHVsZQorICAgICAgICAgICAgICAgICAgICBleGVjdXRlcyB3aGVuIHJ1bm5pbmcgZmV0Y2ggb3BlcmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gdXNlIGFuIG92ZXJyaWRlIHN1ZmZpeCB3aGVuIHlvdSB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIChlLmcuIDxmaWxlbmFtZT5GRVRDSENNRF9naXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+RkVUQ0hDTURfc3ZuPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUZJTEUnPjxnbG9zc3Rlcm0+RklMRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgYXQgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBzZXRzIHRoaXMgdmFyaWFibGUgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgdG8gaWRlbnRpZnkgdGhlIGZpbGUgYmVpbmcgcGFyc2VkLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGFsc28gc2V0cyB0aGlzIHZhcmlhYmxlIHdoZW4gYSByZWNpcGUgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZWQgdG8gaWRlbnRpZnkgdGhlIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUZJTEVTUEFUSCc+PGdsb3NzdGVybT5GSUxFU1BBVEg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGRpcmVjdG9yaWVzIEJpdEJha2UgdXNlcyB3aGVuIHNlYXJjaGluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcyBhbmQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSAibG9jYWwiIGZldGNoZXIgbW9kdWxlIHVzZXMgdGhlc2UgZGlyZWN0b3JpZXMgd2hlbgorICAgICAgICAgICAgICAgICAgICBoYW5kbGluZyA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+IFVSTHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBiZWhhdmVzIGxpa2UgYSBzaGVsbCA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIGFyZSBzZWFyY2hlZCBsZWZ0LXRvLXJpZ2h0IGluIG9yZGVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LWcnPjx0aXRsZT5HPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUdJVERJUic+PGdsb3NzdGVybT5HSVRESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBpcyBzdG9yZWQgd2hlbiBpdCBpcyBjbG9uZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworCisgICAgPGdsb3NzZGl2IGlkPSd2YXItYmItZ2xvc3NhcnktaCc+PHRpdGxlPkg8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItSEdESVInPjxnbG9zc3Rlcm0+SEdESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBmaWxlcyBjaGVja2VkIG91dCBvZiBhIE1lcmN1cmlhbAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gYXJlIHN0b3JlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1IT01FUEFHRSc+PGdsb3NzdGVybT5IT01FUEFHRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPldlYnNpdGUgd2hlcmUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc29mdHdhcmUgdGhlIHJlY2lwZSBpcyBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBjYW4gYmUgZm91bmQuPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LWknPjx0aXRsZT5JPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUlOSEVSSVQnPjxnbG9zc3Rlcm0+SU5IRVJJVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDYXVzZXMgdGhlIG5hbWVkIGNsYXNzIG9yIGNsYXNzZXMgdG8gYmUgaW5oZXJpdGVkIGdsb2JhbGx5LgorICAgICAgICAgICAgICAgICAgICBBbm9ueW1vdXMgZnVuY3Rpb25zIGluIHRoZSBjbGFzcyBvciBjbGFzc2VzCisgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgZXhlY3V0ZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBiYXNlIGNvbmZpZ3VyYXRpb24gYW5kIGluIGVhY2ggaW5kaXZpZHVhbCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlnbm9yZXMgY2hhbmdlcyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+IGluIGluZGl2aWR1YWwgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPiwgc2VlCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0iaW5oZXJpdC1jb25maWd1cmF0aW9uLWRpcmVjdGl2ZSI+PGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPiBDb25maWd1cmF0aW9uIERpcmVjdGl2ZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworPCEtLQorICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LWonPjx0aXRsZT5KPC90aXRsZT4KKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnktayc+PHRpdGxlPks8L3RpdGxlPgorICAgIDwvZ2xvc3NkaXY+CistLT4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LWwnPjx0aXRsZT5MPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUxBWUVSREVQRU5EUyc+PGdsb3NzdGVybT5MQVlFUkRFUEVORFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT5MaXN0cyB0aGUgbGF5ZXJzLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB1cG9uIHdoaWNoIHRoaXMgcmVjaXBlIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSBhIHNwZWNpZmljIGxheWVyIHZlcnNpb24gZm9yIGEgZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgICAgICBieSBhZGRpbmcgaXQgdG8gdGhlIGVuZCBvZiB0aGUgbGF5ZXIgbmFtZSB3aXRoIGEgY29sb24sIChlLmcuICJhbm90aGVybGF5ZXI6MyIKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgY29tcGFyZWQgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItTEFZRVJWRVJTSU9OJz48ZmlsZW5hbWU+TEFZRVJWRVJTSU9OPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPl9hbm90aGVybGF5ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiB0aGlzIGNhc2UpLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHByb2R1Y2VzIGFuIGVycm9yIGlmIGFueSBkZXBlbmRlbmN5IGlzIG1pc3Npbmcgb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIHZlcnNpb24gbnVtYmVycyBkbyBub3QgbWF0Y2ggZXhhY3RseSAoaWYgc3BlY2lmaWVkKS48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSB1c2UgdGhpcyB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gdXNlIHRoZSBzcGVjaWZpYyBsYXllciBuYW1lIGFzIGEgc3VmZml4CisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB2YXJpYWJsZSAoZS5nLiA8ZmlsZW5hbWU+TEFZRVJERVBFTkRTX215bGF5ZXI8L2ZpbGVuYW1lPikuPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItTEFZRVJESVInPjxnbG9zc3Rlcm0+TEFZRVJESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHVzZWQgaW5zaWRlIHRoZSA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgdGhpcyB2YXJpYWJsZSBwcm92aWRlcyB0aGUgcGF0aCBvZiB0aGUgY3VycmVudCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBub3QgYXZhaWxhYmxlIG91dHNpZGUgb2YgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgcmVmZXJlbmNlcyBhcmUgZXhwYW5kZWQgaW1tZWRpYXRlbHkgd2hlbiBwYXJzaW5nIG9mIHRoZSBmaWxlIGNvbXBsZXRlcy48L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1MQVlFUkRJUl9SRSc+PGdsb3NzdGVybT5MQVlFUkRJUl9SRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPldoZW4gdXNlZCBpbnNpZGUgdGhlIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmaWxlLCB0aGlzIHZhcmlhYmxlIHByb3ZpZGVzIHRoZSBwYXRoIG9mIHRoZSBjdXJyZW50IGxheWVyLAorICAgICAgICAgICAgICAgICAgICBlc2NhcGVkIGZvciB1c2UgaW4gYSByZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQkZJTEVfUEFUVEVSTic+PGZpbGVuYW1lPkJCRklMRV9QQVRURVJOPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBub3QgYXZhaWxhYmxlIG91dHNpZGUgb2YgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgcmVmZXJlbmNlcyBhcmUgZXhwYW5kZWQgaW1tZWRpYXRlbHkgd2hlbiBwYXJzaW5nIG9mIHRoZSBmaWxlIGNvbXBsZXRlcy48L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1MQVlFUlZFUlNJT04nPjxnbG9zc3Rlcm0+TEFZRVJWRVJTSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+T3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgYSBsYXllciBhcyBhIHNpbmdsZSBudW1iZXIuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1MQVlFUkRFUEVORFMnPjxmaWxlbmFtZT5MQVlFUkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGFub3RoZXIgbGF5ZXIgaW4gb3JkZXIgdG8gZGVwZW5kIG9uIGEgc3BlY2lmaWMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgbGF5ZXIuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoaXMgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBhbHNvIHVzZSB0aGUgc3BlY2lmaWMgbGF5ZXIgbmFtZSBhcyBhIHN1ZmZpeAorICAgICAgICAgICAgICAgICAgICB0byB0aGUgdmFyaWFibGUgKGUuZy4gPGZpbGVuYW1lPkxBWUVSREVQRU5EU19teWxheWVyPC9maWxlbmFtZT4pLjwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUxJQ0VOU0UnPjxnbG9zc3Rlcm0+TElDRU5TRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBzb3VyY2UgbGljZW5zZXMgZm9yIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LW0nPjx0aXRsZT5NPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLU1JUlJPUlMnPjxnbG9zc3Rlcm0+TUlSUk9SUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYWRkaXRpb25hbCBwYXRocyBmcm9tIHdoaWNoIEJpdEJha2UgZ2V0cyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgYnVpbGQgc3lzdGVtIHNlYXJjaGVzIGZvciBzb3VyY2UgY29kZSwgaXQgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgdHJpZXMgdGhlIGxvY2FsIGRvd25sb2FkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhhdCBsb2NhdGlvbiBmYWlscywgdGhlIGJ1aWxkIHN5c3RlbSB0cmllcyBsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSBzb3VyY2UsIGFuZCB0aGVuIGxvY2F0aW9ucyBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1JUlJPUlM8L2ZpbGVuYW1lPiBpbiB0aGF0IG9yZGVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLU1VTFRJX1BST1ZJREVSX1dISVRFTElTVCc+PGdsb3NzdGVybT5NVUxUSV9QUk9WSURFUl9XSElURUxJU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHlvdSB0byBzdXBwcmVzcyBCaXRCYWtlIHdhcm5pbmdzIGNhdXNlZCB3aGVuCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHR3byBzZXBhcmF0ZSByZWNpcGVzIHRoYXQgcHJvdmlkZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugbm9ybWFsbHkgaXNzdWVzIGEgd2FybmluZyB3aGVuIGJ1aWxkaW5nIHR3bworICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgcmVjaXBlcyB3aGVyZSBlYWNoIHByb3ZpZGVzIHRoZSBzYW1lIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzY2VuYXJpbyBpcyB1c3VhbGx5IHNvbWV0aGluZyB0aGUgdXNlciBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICB3YW50LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBjYXNlcyBkbyBleGlzdCB3aGVyZSBpdCBtYWtlcyBzZW5zZSwgcGFydGljdWxhcmx5CisgICAgICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4gbmFtZXNwYWNlLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIHRvIHN1cHByZXNzIEJpdEJha2UncyB3YXJuaW5ncy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSB2YXJpYWJsZSwgbGlzdCBwcm92aWRlciBuYW1lcyAoZS5nLgorICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZXMsIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKzwhLS0KKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS1uJz48dGl0bGU+TjwvdGl0bGU+CisgICAgPC9nbG9zc2Rpdj4KKy0tPgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItYmItZ2xvc3Nhcnktbyc+PHRpdGxlPk88L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItT1ZFUlJJREVTJz48Z2xvc3N0ZXJtPk9WRVJSSURFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+IHRvIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgd2hhdCB2YXJpYWJsZXMgYXJlIG92ZXJyaWRkZW4gYWZ0ZXIgQml0QmFrZSBwYXJzZXMKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgc2ltcGxlIGV4YW1wbGUgdGhhdCB1c2VzIGFuIG92ZXJyaWRlcworICAgICAgICAgICAgICAgICAgICBsaXN0IGJhc2VkIG9uIG1hY2hpbmUgYXJjaGl0ZWN0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBPVkVSUklERVMgPSAiYXJtOng4NjptaXBzOnBvd2VycGMiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZGl0aW9uYWwtc3ludGF4LW92ZXJyaWRlcyc+Q29uZGl0aW9uYWwgU3ludGF4IChPdmVycmlkZXMpPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LXAnPjx0aXRsZT5QPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVA0RElSJz48Z2xvc3N0ZXJtPlA0RElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYSBsb2NhbCBjb3B5IG9mIGEgUGVyZm9yY2UgZGVwb3QKKyAgICAgICAgICAgICAgICAgICAgaXMgc3RvcmVkIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1QQUNLQUdFUyc+PGdsb3NzdGVybT5QQUNLQUdFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBsaXN0IG9mIHBhY2thZ2VzIHRoZSByZWNpcGUgY3JlYXRlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1QQUNLQUdFU19EWU5BTUlDJz48Z2xvc3N0ZXJtPlBBQ0tBR0VTX0RZTkFNSUM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBwcm9taXNlIHRoYXQgeW91ciByZWNpcGUgc2F0aXNmaWVzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIGZvciBvcHRpb25hbCBtb2R1bGVzIHRoYXQgYXJlIGZvdW5kIGluIG90aGVyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgYWN0dWFsbHkgc2F0aXNmeSB0aGUgZGVwZW5kZW5jaWVzLCBpdCBvbmx5IHN0YXRlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hvdWxkIGJlIHNhdGlzZmllZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGEgaGFyZCwgcnVudGltZSBkZXBlbmRlbmN5CisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItYmItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgb2YgYW5vdGhlciBwYWNrYWdlIGlzIHNhdGlzZmllZCBkdXJpbmcgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGJ1dCBhIHBhY2thZ2Ugd2l0aCB0aGUgbW9kdWxlIG5hbWUgaXMgbmV2ZXIgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgcHJvZHVjZWQsIHRoZW4gdGhlIG90aGVyIHBhY2thZ2Ugd2lsbCBiZSBicm9rZW4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUEUnPjxnbG9zc3Rlcm0+UEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGVwb2NoIG9mIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgdmFyaWFibGUgaXMgdW5zZXQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyB1c2VkIHRvIG1ha2UgdXBncmFkZXMgcG9zc2libGUgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbmluZyBzY2hlbWUgY2hhbmdlcyBpbiBzb21lIGJhY2t3YXJkcyBpbmNvbXBhdGlibGUKKyAgICAgICAgICAgICAgICAgICAgd2F5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVBFUlNJU1RFTlRfRElSJz48Z2xvc3N0ZXJtPlBFUlNJU1RFTlRfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IEJpdEJha2UgdXNlcyB0byBzdG9yZSBkYXRhIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHByZXNlcnZlZCBiZXR3ZWVuIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGRhdGEgc3RvcmVkIGlzIHRoZSBkYXRhIHRoYXQgdXNlcworICAgICAgICAgICAgICAgICAgICBCaXRCYWtlJ3MgcGVyc2lzdGVudCBkYXRhIEFQSSBhbmQgdGhlIGRhdGEgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgUFIgU2VydmVyIGFuZCBQUiBTZXJ2aWNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVBGJz48Z2xvc3N0ZXJtPlBGPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcmVjaXBlIG9yIHBhY2thZ2UgbmFtZSBhbmQgaW5jbHVkZXMgYWxsIHZlcnNpb24gYW5kIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgIG51bWJlcnMgKGkuZS4gPGZpbGVuYW1lPmVnbGliYy0yLjEzLXIyMCtzdm5yMTU1MDgvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLTQuMi1yMS88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUE4nPjxnbG9zc3Rlcm0+UE48L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcmVjaXBlIG5hbWUuPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUFInPjxnbG9zc3Rlcm0+UFI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcmV2aXNpb24gb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSJz48Z2xvc3N0ZXJtPlBSRUZFUlJFRF9QUk9WSURFUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZSB3aGVuCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsd2F5cyBzdWZmaXggdGhlIHZhcmlhYmxlIHdpdGggdGhlIG5hbWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGl0ZW0sIGFuZCB5b3Ugc2hvdWxkIHNldCBpdCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSB0byB3aGljaCB5b3Ugd2FudCB0byBnaXZlIHByZWNlZGVuY2UuCisgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKKyAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA9ICJ4c2VydmVyLXhmODYiCisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmdsID89ICJtZXNhIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSUyc+PGdsb3NzdGVybT5QUkVGRVJSRURfUFJPVklERVJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERldGVybWluZXMgd2hpY2ggcmVjaXBlIHNob3VsZCBiZSBnaXZlbiBwcmVmZXJlbmNlIGZvcgorICAgICAgICAgICAgICAgICAgICBjYXNlcyB3aGVyZSBtdWx0aXBsZSByZWNpcGVzIHByb3ZpZGUgdGhlIHNhbWUgaXRlbS4KKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbGx5LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSUzwvZmlsZW5hbWU+IGlzIGlkZW50aWNhbCB0bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUlM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBsZXRzIHlvdSBkZWZpbmUgcHJlZmVyZW5jZXMgZm9yIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbnMgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUlMgPSAieHh4Onl5eSBhYWE6YmJiIC4uLiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZvcm0gaXMgYSBjb252ZW5pZW50IHJlcGxhY2VtZW50IGZvciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl94eHggPSAieXl5IgorICAgICBQUkVGRVJSRURfUFJPVklERVJfYWFhID0gImJiYiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVBSRUZFUlJFRF9WRVJTSU9OJz48Z2xvc3N0ZXJtPlBSRUZFUlJFRF9WRVJTSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiByZWNpcGVzIGF2YWlsYWJsZSwgdGhpcworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYWx3YXlzIHN1ZmZpeCB0aGUgdmFyaWFibGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgeW91IHdhbnQgdG8gc2VsZWN0LCBhbmQgeW91IHNob3VsZCBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nbHkgZm9yIHByZWNlZGVuY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBsaW1pdGVkIHdpbGRjYXJkIHVzZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgY2hhcmFjdGVyIHRvIG1hdGNoIGFueSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHNwZWNpZnlpbmcgdmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWluIGxvbmcgcmV2aXNpb24gbnVtYmVycyB0aGF0IHBvdGVudGlhbGx5IGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdHdvIGV4YW1wbGVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbiA9ICIyLjcuMyIKKyAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPSAiNC4xMiUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdXNlIG9mIHRoZSAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBsaW1pdGVkIGluIHRoYXQgaXQgb25seSB3b3JrcyBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgdGhlIHdpbGRjYXJkIGNoYXJhY3RlciBpbiBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1QUkVNSVJST1JTJz48Z2xvc3N0ZXJtPlBSRU1JUlJPUlM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgZnJvbSB3aGljaCBCaXRCYWtlIGdldHMgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhlIGJ1aWxkIHN5c3RlbSBzZWFyY2hlcyBmb3Igc291cmNlIGNvZGUsIGl0IGZpcnN0CisgICAgICAgICAgICAgICAgICAgIHRyaWVzIHRoZSBsb2NhbCBkb3dubG9hZCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHRoYXQgbG9jYXRpb24gZmFpbHMsIHRoZSBidWlsZCBzeXN0ZW0gdHJpZXMgbG9jYXRpb25zCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgPGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPiwgdGhlIHVwc3RyZWFtCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgYW5kIHRoZW4gbG9jYXRpb25zIHNwZWNpZmllZCBieQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItTUlSUk9SUyc+PGZpbGVuYW1lPk1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhhdCBvcmRlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugd291bGQgYWRkIGEgc3BlY2lmaWMgc2VydmVyIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIGF0dGVtcHQgYmVmb3JlIGFueSBvdGhlcnMgYnkgYWRkaW5nCisgICAgICAgICAgICAgICAgICAgIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgdG8geW91ciBjb25maWd1cmF0aW9uOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRU1JUlJPUlNfcHJlcGVuZCA9ICJcCisgICAgIGdpdDovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiBcCisgICAgIGZ0cDovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiBcCisgICAgIGh0dHA6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4gXAorICAgICBodHRwczovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGNhdXNlIHRoZSBidWlsZCBzeXN0ZW0gdG8gaW50ZXJjZXB0CisgICAgICAgICAgICAgICAgICAgIEdpdCwgRlRQLCBIVFRQLCBhbmQgSFRUUFMgcmVxdWVzdHMgYW5kIGRpcmVjdCB0aGVtIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aHR0cDovLzwvZmlsZW5hbWU+IHNvdXJjZXMgbWlycm9yLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+IFVSTHMgdG8gcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gbG9jYWwgZGlyZWN0b3JpZXMgb3IgbmV0d29yayBzaGFyZXMgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1QUk9WSURFUyc+PGdsb3NzdGVybT5QUk9WSURFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgYWxpYXNlcyBieSB3aGljaCBhIHBhcnRpY3VsYXIgcmVjaXBlIGNhbiBiZQorICAgICAgICAgICAgICAgICAgICBrbm93bi4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYSByZWNpcGUncyBvd24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1QTic+UE48L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgaW1wbGljaXRseSBhbHJlYWR5IGluIGl0cyA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBsaXN0LgorICAgICAgICAgICAgICAgICAgICBJZiBhIHJlY2lwZSB1c2VzIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBhbGlhc2VzIGFyZSBzeW5vbnltcyBmb3IgdGhlIHJlY2lwZSBhbmQgY2FuCisgICAgICAgICAgICAgICAgICAgIGJlIHVzZWZ1bCBzYXRpc2Z5aW5nIGRlcGVuZGVuY2llcyBvZiBvdGhlciByZWNpcGVzIGR1cmluZworICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItYmItREVQRU5EUyc+REVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IHN0YXRlbWVudCBmcm9tIGEgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGZpbGUgPGZpbGVuYW1lPmxpYmF2XzAuOC4xMS5iYjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBST1ZJREVTICs9ICJsaWJwb3N0cHJvYyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gc3RhdGVtZW50IHJlc3VsdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlICJsaWJhdiIgcmVjaXBlIGFsc28gYmVpbmcga25vd24gYXMgImxpYnBvc3Rwcm9jIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gcHJvdmlkaW5nIHJlY2lwZXMgdW5kZXIgYWx0ZXJuYXRlIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gbWVjaGFuaXNtIGlzIGFsc28gdXNlZAorICAgICAgICAgICAgICAgICAgICB0byBpbXBsZW1lbnQgdmlydHVhbCB0YXJnZXRzLgorICAgICAgICAgICAgICAgICAgICBBIHZpcnR1YWwgdGFyZ2V0IGlzIGEgbmFtZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IChlLmcuIGEgTGludXgga2VybmVsKS4KKyAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyB0aGF0IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gcXVlc3Rpb24gbGlzdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmlydHVhbCB0YXJnZXQgaW4gPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBkZXBlbmQgb24gdGhlIGZ1bmN0aW9uYWxpdHkgaW4gcXVlc3Rpb24gY2FuCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIHZpcnR1YWwgdGFyZ2V0IGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byBsZWF2ZSB0aGUgY2hvaWNlIG9mIHByb3ZpZGVyIG9wZW4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnZlbnRpb25hbGx5LCB2aXJ0dWFsIHRhcmdldHMgaGF2ZSBuYW1lcyBvbiB0aGUgZm9ybQorICAgICAgICAgICAgICAgICAgICAidmlydHVhbC9mdW5jdGlvbiIgKGUuZy4gInZpcnR1YWwva2VybmVsIikuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzbGFzaCBpcyBzaW1wbHkgcGFydCBvZiB0aGUgbmFtZSBhbmQgaGFzIG5vCisgICAgICAgICAgICAgICAgICAgIHN5bnRhY3RpY2FsIHNpZ25pZmljYW5jZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1QUlNFUlZfSE9TVCc+PGdsb3NzdGVybT5QUlNFUlZfSE9TVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbmV0d29yayBiYXNlZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlIGhvc3QgYW5kIHBvcnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGhvdyB0aGUgPGZpbGVuYW1lPlBSU0VSVl9IT1NUPC9maWxlbmFtZT4gdmFyaWFibGUgaXMKKyAgICAgICAgICAgICAgICAgICAgc2V0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSU0VSVl9IT1NUID0gImxvY2FsaG9zdDowIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGUgdmFyaWFibGUgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICBzdGFydCBhIGxvY2FsIFBSIHNlcnZpY2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IDxmaWxlbmFtZT5QUlNFUlZfSE9TVDwvZmlsZW5hbWU+IHRvIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyB0byB1c2UgYSByZW1vdGUgUFIgc2VydmljZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1QVic+PGdsb3NzdGVybT5QVjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKzwhLS0KKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS1xJz48dGl0bGU+UTwvdGl0bGU+CisgICAgPC9nbG9zc2Rpdj4KKy0tPgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItYmItZ2xvc3Nhcnktcic+PHRpdGxlPlI8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUkRFUEVORFMnPjxnbG9zc3Rlcm0+UkRFUEVORFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgYSBwYWNrYWdlJ3MgcnVudGltZSBkZXBlbmRlbmNpZXMgKGkuZS4gb3RoZXIgcGFja2FnZXMpCisgICAgICAgICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBpbnN0YWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBidWlsdCBwYWNrYWdlIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgIElmIGEgcGFja2FnZSBpbiB0aGlzIGxpc3QgY2Fubm90IGJlIGZvdW5kIGR1cmluZyB0aGUgYnVpbGQsCisgICAgICAgICAgICAgICAgICAgIHlvdSB3aWxsIGdldCBhIGJ1aWxkIGVycm9yLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcHBsaWVzCisgICAgICAgICAgICAgICAgICAgIHRvIHBhY2thZ2VzIGJlaW5nIGJ1aWx0LCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGluIGEgZm9ybSB3aXRoIGFuIGF0dGFjaGVkIHBhY2thZ2UgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGFyZSBidWlsZGluZyBhIGRldmVsb3BtZW50IHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkZXBlbmRzIG9uIHRoZSA8ZmlsZW5hbWU+cGVybDwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IHdvdWxkIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IHN0YXRlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGV4YW1wbGUsIHRoZSBkZXZlbG9wbWVudCBwYWNrYWdlIGRlcGVuZHMgb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5wZXJsPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgbmFtZSBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBzdXBwb3J0cyBzcGVjaWZ5aW5nIHZlcnNpb25lZCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgIEFsdGhvdWdoIHRoZSBzeW50YXggdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgcGFja2FnaW5nCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgQml0QmFrZSBoaWRlcyB0aGVzZSBkaWZmZXJlbmNlcyBmcm9tIHlvdS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBzeW50YXggdG8gc3BlY2lmeSB2ZXJzaW9ucyB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSREVQRU5EU18ke1BOfSA9ICI8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+KSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgPGZpbGVuYW1lPm9wZXJhdG9yPC9maWxlbmFtZT4sIHlvdSBjYW4gc3BlY2lmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgID0KKyAgICAgJmx0OworICAgICAmZ3Q7CisgICAgICZsdDs9CisgICAgICZndDs9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2V0cyB1cCBhIGRlcGVuZGVuY3kgb24gdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAxLjIgb3IgZ3JlYXRlciBvZiB0aGUgcGFja2FnZSA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkRFUEVORFNfJHtQTn0gPSAiZm9vICg+PSAxLjIpIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItUkVQT0RJUic+PGdsb3NzdGVybT5SRVBPRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYSBsb2NhbCBjb3B5IG9mIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdvb2dsZS1yZXBvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzIHN0b3JlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGl0IGlzIHN5bmNlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1SUFJPVklERVMnPjxnbG9zc3Rlcm0+UlBST1ZJREVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWUgYWxpYXNlcyB0aGF0IGEgcGFja2FnZSBhbHNvIHByb3ZpZGVzLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBhbGlhc2VzIGFyZSB1c2VmdWwgZm9yIHNhdGlzZnlpbmcgcnVudGltZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgb2Ygb3RoZXIgcGFja2FnZXMgYm90aCBkdXJpbmcgdGhlIGJ1aWxkIGFuZCBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIChhcyBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1SREVQRU5EUyc+UkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBwYWNrYWdlLWNvbnRyb2xsaW5nIHZhcmlhYmxlcywgeW91IG11c3QgYWx3YXlzCisgICAgICAgICAgICAgICAgICAgdXNlIHRoZSB2YXJpYWJsZSBpbiBjb25qdW5jdGlvbiB3aXRoIGEgcGFja2FnZSBuYW1lIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJQUk9WSURFU18ke1BOfSA9ICJ3aWRnZXQtYWJpLTIiCisgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVJSRUNPTU1FTkRTJz48Z2xvc3N0ZXJtPlJSRUNPTU1FTkRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBwYWNrYWdlcyB0aGF0IGV4dGVuZHMgdGhlIHVzYWJpbGl0eSBvZiBhIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlIGJlaW5nIGJ1aWx0IGRvZXMgbm90IGRlcGVuZCBvbiB0aGlzIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgaW4gb3JkZXIgdG8gc3VjY2Vzc2Z1bGx5IGJ1aWxkLCBidXQgbmVlZHMgdGhlbSBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIGV4dGVuZGVkIHVzYWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBydW50aW1lIGRlcGVuZGVuY2llcyBmb3IgcGFja2FnZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1SREVQRU5EUyc+UkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugc3VwcG9ydHMgc3BlY2lmeWluZyB2ZXJzaW9uZWQgcmVjb21tZW5kcy4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHN5bnRheCB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBCaXRCYWtlIGhpZGVzIHRoZXNlIGRpZmZlcmVuY2VzIGZyb20geW91LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHN5bnRheCB0byBzcGVjaWZ5IHZlcnNpb25zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJSRUNPTU1FTkRTXyR7UE59ID0gIjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZT5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4pIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciA8ZmlsZW5hbWU+b3BlcmF0b3I8L2ZpbGVuYW1lPiwgeW91IGNhbiBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPQorICAgICAmbHQ7CisgICAgICZndDsKKyAgICAgJmx0Oz0KKyAgICAgJmd0Oz0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBzZXRzIHVwIGEgcmVjb21tZW5kIG9uIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgMS4yIG9yIGdyZWF0ZXIgb2YgdGhlIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJSRUNPTU1FTkRTXyR7UE59ID0gImZvbyAoPj0gMS4yKSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1iYi1nbG9zc2FyeS1zJz48dGl0bGU+UzwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1TRUNUSU9OJz48Z2xvc3N0ZXJtPlNFQ1RJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgc2VjdGlvbiBpbiB3aGljaCBwYWNrYWdlcyBzaG91bGQgYmUgY2F0ZWdvcml6ZWQuPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItU1JDX1VSSSc+PGdsb3NzdGVybT5TUkNfVVJJPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IG9mIHNvdXJjZSBmaWxlcyAtIGxvY2FsIG9yIHJlbW90ZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSB0ZWxscyBCaXRCYWtlIHdoaWNoIGJpdHMKKyAgICAgICAgICAgICAgICAgICAgdG8gcHVsbCBmb3IgdGhlIGJ1aWxkIGFuZCBob3cgdG8gcHVsbCB0aGVtLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHJlY2lwZSBvciBhcHBlbmQgZmlsZSBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBmZXRjaCBhIHNpbmdsZSB0YXJiYWxsIGZyb20gdGhlIEludGVybmV0LCB0aGUgcmVjaXBlIG9yCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlIHVzZXMgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGVudHJ5IHRoYXQgc3BlY2lmaWVzIHRoYXQgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSByZWNpcGUgb3IgYXBwZW5kIGZpbGUgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgZmV0Y2ggYSB0YXJiYWxsIGFuZCBpbmNsdWRlIGEgY3VzdG9tIGZpbGUsIHRoZSByZWNpcGUgb3IKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kIGZpbGUgbmVlZHMgYW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICB0aGF0IHNwZWNpZmllcyBhbGwgdGhvc2Ugc291cmNlcy48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBsaXN0IGV4cGxhaW5zIHRoZSBhdmFpbGFibGUgVVJJIHByb3RvY29sczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZXRjaGVzIGZpbGVzLCB3aGljaCBhcmUgdXN1YWxseSBmaWxlcyBzaGlwcGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgbG9jYWwgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5ienI6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcyBmcm9tIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXphYXIgcmV2aXNpb24gY29udHJvbCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0Oi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJldmlzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPm9zYzovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBPU0MgKE9wZW5TVVNFIEJ1aWxkIHNlcnZpY2UpIHJldmlzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnJlcG86Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZXBvIChHaXQpIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5odHRwOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBJbnRlcm5ldCB1c2luZyBIVFRQLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+aHR0cHM6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIEludGVybmV0IHVzaW5nIEhUVFBTLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZnRwOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBJbnRlcm5ldCB1c2luZyBGVFAuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5jdnM6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBDVlMgcmV2aXNpb24gY29udHJvbCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+aGc6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBNZXJjdXJpYWwgKDxmaWxlbmFtZT5oZzwvZmlsZW5hbWU+KSByZXZpc2lvbiBjb250cm9sIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wNDovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIFBlcmZvcmNlICg8ZmlsZW5hbWU+cDQ8L2ZpbGVuYW1lPikgcmV2aXNpb24gY29udHJvbCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c3NoOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc2VjdXJlIHNoZWxsLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c3ZuOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgU3VidmVyc2lvbiAoPGZpbGVuYW1lPnN2bjwvZmlsZW5hbWU+KSByZXZpc2lvbiBjb250cm9sIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgb3B0aW9ucyB3b3J0aCBtZW50aW9uaW5nOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+dW5wYWNrPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IENvbnRyb2xzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hldGhlciBvciBub3QgdG8gdW5wYWNrIHRoZSBmaWxlIGlmIGl0IGlzIGFuIGFyY2hpdmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIHVucGFjayB0aGUgZmlsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN1YmRpcjwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIGZvciB1bnVzdWFsIHRhcmJhbGxzIG9yIG90aGVyIGFyY2hpdmVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgaGF2ZSB0aGVpciBmaWxlcyBhbHJlYWR5IGluIGEgc3ViZGlyZWN0b3J5IHdpdGhpbiB0aGUgYXJjaGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gU3BlY2lmaWVzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIHRvIGJlIHVzZWQgZm9yIGFzc29jaWF0aW9uIHdpdGggPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBjaGVja3N1bXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgZmlsZSBzcGVjaWZpZWQgaW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvd25sb2FkZmlsZW5hbWU8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gU3BlY2lmaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVuYW1lIHVzZWQgd2hlbiBzdG9yaW5nIHRoZSBkb3dubG9hZGVkIGZpbGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVNSQ0RBVEUnPjxnbG9zc3Rlcm0+U1JDREFURTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGF0ZSBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhcHBsaWVzIG9ubHkgaWYgdGhlIHNvdXJjZSB3YXMgZmV0Y2hlZCBmcm9tIGEgU291cmNlIENvZGUgTWFuYWdlciAoU0NNKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1TUkNSRVYnPjxnbG9zc3Rlcm0+U1JDUkVWPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhcHBsaWVzIG9ubHkgd2hlbiB1c2luZyBTdWJ2ZXJzaW9uLCBHaXQsIE1lcmN1cmlhbCBhbmQgQmF6YWFyLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBidWlsZCBhIGZpeGVkIHJldmlzaW9uIGFuZCB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBwZXJmb3JtaW5nIGEgcXVlcnkgb24gdGhlIHJlbW90ZSByZXBvc2l0b3J5IGV2ZXJ5IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBwYXJzZXMgeW91ciByZWNpcGUsIHlvdSBzaG91bGQgc3BlY2lmeSBhIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB0aGF0IGlzIGEKKyAgICAgICAgICAgICAgICAgICAgZnVsbCByZXZpc2lvbiBpZGVudGlmaWVyIGFuZCBub3QganVzdCBhIHRhZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1TUkNSRVZfRk9STUFUJz48Z2xvc3N0ZXJtPlNSQ1JFVl9GT1JNQVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVscHMgY29uc3RydWN0IHZhbGlkCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzIHdoZW4gbXVsdGlwbGUgc291cmNlIGNvbnRyb2xsZWQgVVJMcyBhcmUgdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzeXN0ZW0gbmVlZHMgaGVscCBjb25zdHJ1Y3RpbmcgdGhlc2UgdmFsdWVzIHVuZGVyIHRoZXNlCisgICAgICAgICAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMuCisgICAgICAgICAgICAgICAgICAgIEVhY2ggY29tcG9uZW50IGluIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzIGFzc2lnbmVkIGEgbmFtZSBhbmQgdGhlc2UgYXJlIHJlZmVyZW5jZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5TUkNSRVZfRk9STUFUPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgd2l0aCBVUkxzIG5hbWVkICJtYWNoaW5lIiBhbmQgIm1ldGEiLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIDxmaWxlbmFtZT5TUkNSRVZfRk9STUFUPC9maWxlbmFtZT4gY291bGQgbG9vaworICAgICAgICAgICAgICAgICAgICBsaWtlICJtYWNoaW5lX21ldGEiIGFuZCB0aG9zZSBuYW1lcyB3b3VsZCBoYXZlIHRoZSBTQ00KKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgc3Vic3RpdHV0ZWQgaW50byBlYWNoIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgICAgICBPbmx5IG9uZSA8ZmlsZW5hbWU+QVVUT0lOQzwvZmlsZW5hbWU+IHBsYWNlaG9sZGVyIGlzIGFkZGVkCisgICAgICAgICAgICAgICAgICAgIGFuZCBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIEFuZCwgdGhpcyBwbGFjZWhvbGRlciBpcyBwbGFjZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBzdHJpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItU1RBTVAnPjxnbG9zc3Rlcm0+U1RBTVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBiYXNlIHBhdGggdXNlZCB0byBjcmVhdGUgcmVjaXBlIHN0YW1wIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCB0byBhbiBhY3R1YWwgc3RhbXAgZmlsZSBpcyBjb25zdHJ1Y3RlZCBieSBldmFsdWF0aW5nIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGFuZCB0aGVuIGFwcGVuZGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVNUQU1QQ0xFQU4nPjxnbG9zc3Rlcm0+U1RBTVBDTEVBTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHRvIGNyZWF0ZSByZWNpcGUgc3RhbXAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFVubGlrZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVNUQU1QJz48ZmlsZW5hbWU+U1RBTVA8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIDxmaWxlbmFtZT5TVEFNUENMRUFOPC9maWxlbmFtZT4gY2FuIGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzIHRvIG1hdGNoIHRoZSByYW5nZSBvZiBmaWxlcyBhIGNsZWFuIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBzaG91bGQgcmVtb3ZlLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgYSBjbGVhbiBvcGVyYXRpb24gdG8gcmVtb3ZlIGFueSBvdGhlciBzdGFtcHMKKyAgICAgICAgICAgICAgICAgICAgaXQgc2hvdWxkIGJlIHJlbW92aW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgc3RhbXAuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItU1VNTUFSWSc+PGdsb3NzdGVybT5TVU1NQVJZPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgc2hvcnQgc3VtbWFyeSBmb3IgdGhlIHJlY2lwZSwgd2hpY2ggaXMgNzIgY2hhcmFjdGVycyBvciBsZXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVNWTkRJUic+PGdsb3NzdGVybT5TVk5ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBmaWxlcyBjaGVja2VkIG91dCBvZiBhIFN1YnZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGFyZSBzdG9yZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWJiLWdsb3NzYXJ5LXQnPjx0aXRsZT5UPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLVQnPjxnbG9zc3Rlcm0+VDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPlBvaW50cyB0byBhIGRpcmVjdG9yeSB3ZXJlIEJpdEJha2UgcGxhY2VzCisgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcywgd2hpY2ggY29uc2lzdCBtb3N0bHkgb2YgdGFzayBsb2dzIGFuZAorICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLCB3aGVuIGJ1aWxkaW5nIGEgcGFydGljdWxhciByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItYmItVE9QRElSJz48Z2xvc3N0ZXJtPlRPUERJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCis8IS0tCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktdSc+PHRpdGxlPlU8L3RpdGxlPgorICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS12Jz48dGl0bGU+VjwvdGl0bGU+CisgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnktdyc+PHRpdGxlPlc8L3RpdGxlPgorICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS14Jz48dGl0bGU+WDwvdGl0bGU+CisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LXknPjx0aXRsZT5ZPC90aXRsZT4KKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnkteic+PHRpdGxlPlo8L3RpdGxlPgorICAgIDwvZ2xvc3NkaXY+CistLT4KKworCis8L2dsb3NzYXJ5PgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1zdHlsZS5jc3MgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1zdHlsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkYTJhNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXN0eWxlLmNzcwpAQCAtMCwwICsxLDk4NCBAQAorLyoKKyAgIEdlbmVyaWMgWEhUTUwgLyBEb2NCb29rIFhIVE1MIENTUyBTdHlsZXNoZWV0LgorCisgICBCcm93c2VyIHdyYW5nbGluZyBhbmQgdHlwb2dyYXBoaWMgZGVzaWduIGJ5CisgICAgICBPeXZpbmQgS29sYXMgLyBwaXBwaW5AZ2ltcC5vcmcKKworICAgQ3VzdG9taXNlZCBmb3IgUG9reSBieQorICAgICAgTWF0dGhldyBBbGx1bSAvIG1hbGx1bUBvLWhhbmQuY29tCisKKyAgIFRoYW5rcyB0bzoKKyAgICAgTGlhbSBSLiBFLiBRdWluCisgICAgIFdpbGxpYW0gU2thZ2dzCisgICAgIEpha3ViIFN0ZWluZXIKKworICAgU3RydWN0dXJlCisgICAtLS0tLS0tLS0KKworICAgVGhlIHN0eWxlc2hlZXQgaXMgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisKKyAgICAgICBQb3NpdGlvbmluZworICAgICAgICAgIE1hcmdpbnMsIHBhZGRpbmdzLCB3aWR0aCwgZm9udC1zaXplLCBjbGVhcmluZy4KKyAgICAgICBEZWNvcmF0aW9ucworICAgICAgICAgIEJvcmRlcnMsIHN0eWxlCisgICAgICAgQ29sb3JzCisgICAgICAgICAgQ29sb3JzCisgICAgICAgR3JhcGhpY3MKKyAgICAgICAgICBHcmFwaGljYWwgYmFja2dyb3VuZHMKKyAgICAgICBOYXN0eSBJRSB0d2Vha3MKKyAgICAgICAgICBXb3JrYXJvdW5kcyBuZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluIGludGVybmV0IGV4cGxvcmVyLAorICAgICAgICAgIGN1cnJlbnRseSBtYWtlcyB0aGUgc3R5bGVzaGVldCBub24gdmFsaWRhdGluZywgYnV0IHVwIHVudGlsCisgICAgICAgICAgdGhpcyBwb2ludCBpdCBpcyB2YWxpZGF0aW5nLgorICAgICAgIE1vemlsbGEgZXh0ZW5zaW9ucworICAgICAgICAgIFRyYW5zcGFyZW5jeSBmb3IgZm9vdGVyCisJICBSb3VuZGVkIGNvcm5lcnMgb24gYm94ZXMKKworKi8KKworCisgIC8qKioqKioqKioqKioqKiogLworIC8gIFBvc2l0aW9uaW5nICAgLworLyAqKioqKioqKioqKioqKiovCisKK2JvZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYSwgU2Fucywgc2Fucy1zZXJpZjsKKworICBtaW4td2lkdGg6IDY0MHB4OworICB3aWR0aDogODAlOworICBtYXJnaW46ICAwZW0gYXV0bzsKKyAgcGFkZGluZzogMmVtIDVlbSA1ZW0gNWVtOworICBjb2xvcjogIzMzMzsKK30KKworaDEsaDIsaDMsaDQsaDUsaDYsaDcgeworICBmb250LWZhbWlseTogQXJpYWwsIFNhbnM7CisgIGNvbG9yOiAjMDA1NTdEOworICBjbGVhcjogYm90aDsKK30KKworaDEgeworICBmb250LXNpemU6IDJlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDJlbSAwZW0gMGVtIDBlbTsKK30KKworaDIuc3VidGl0bGUgeworICBtYXJnaW46IDAuMTBlbSAwZW0gMy4wZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS44ZW07CisgIHBhZGRpbmctbGVmdDogMjAlOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKK2gyIHsKKyAgbWFyZ2luOiAyZW0gMGVtIDAuNjZlbSAwZW07CisgIHBhZGRpbmc6IDAuNWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuNWVtOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDMuc3VidGl0bGUgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0Mi4xNCU7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitoMyB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDQgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTIwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g1IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNiB7CisgIG1hcmdpbjogMWVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5hdXRob3Jncm91cCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBwYWRkaW5nLXRvcDogMjU2cHg7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy9iaXRiYWtlLXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IC0xZW07CisgIG1hcmdpbi1sZWZ0OiAyNS41ZW07Cit9CisKKy5nbG9zc2FyeSBkZCBwLAorLnZhcmlhYmxlbGlzdCBkZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworZGl2IHAuY29weXJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmxlZ2Fsbm90aWNlIHAubGVnYWxub3RpY2UtdGl0bGUgeworICBtYXJnaW4tYm90dG9tOiAwZW07Cit9CisKK3AgeworICBsaW5lLWhlaWdodDogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKworfQorCitkbCB7CisgIHBhZGRpbmctdG9wOiAwZW07Cit9CisKK2hyIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKKworLm1lZGlhb2JqZWN0LAorLm1lZGlhb2JqZWN0Y28geworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2ltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKwordWwgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAxLjVlbTsKK30KKwordWwgbGkgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK3VsIGxpIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCit0YWJsZSB7CisgIHdpZHRoIDoxMDAlOworfQorCit0aCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKwordGQgeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3AgYVtpZF0geworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogMHB4OworICBkaXNwbGF5OiBpbmxpbmU7CisgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK2EgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK3ByZSB7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKK2E6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgLypmb250LXdlaWdodDogYm9sZDsqLworfQorCisvKiBUaGlzIHN0eWxlIGRlZmluZXMgaG93IHRoZSBwZXJtYWxpbmsgY2hhcmFjdGVyCisgICBhcHBlYXJzIGJ5IGl0c2VsZiBhbmQgd2hlbiBob3ZlcmVkIG92ZXIgd2l0aAorICAgdGhlIG1vdXNlLiAqLworCitbYWx0PSdQZXJtYWxpbmsnXSB7IGNvbG9yOiAjZWVlOyB9CitbYWx0PSdQZXJtYWxpbmsnXTpob3ZlciB7IGNvbG9yOiBibGFjazsgfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSB7CisgIG1hcmdpbjogMWVtIDBlbTsKKyAgcGFkZGluZzogMWVtOworICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cit9CisKKworZGl2LmluZm9ybWFsZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsdGFibGUgcC50aXRsZSBiLAorZGl2LmZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYudGFibGUgcC50aXRsZSBieworICAgIHBhZGRpbmctdG9wOiAwZW07CisgICAgbWFyZ2luLXRvcDogMGVtOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisubWVkaWFvYmplY3QgLmNhcHRpb24sCisubWVkaWFvYmplY3QgLmNhcHRpb24gcCAgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nLXRvcDogMC41ZW07CisgIHBhZGRpbmctYm90dG9tOiAwLjVlbTsKK30KKworLmVwaWdyYXBoIHsKKyAgcGFkZGluZy1sZWZ0OiA1NSU7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworLmVwaWdyYXBoIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuZXBpZ3JhcGggLnF1b3RlIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorLmVwaWdyYXBoIC5hdHRyaWJ1dGlvbiB7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK3NwYW4uYXBwbGljYXRpb24geworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogODAlOworICB3aGl0ZS1zcGFjZTogcHJlOworICBtYXJnaW46IDEuMzNlbSAwZW07CisgIHBhZGRpbmc6IDEuMzNlbTsKK30KKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIG1hcmdpbi10b3A6IDFlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworCit9CisKKy8qIGZvcmNlIGZ1bGwgd2lkdGggb2YgdGFibGUgd2l0aGluIGRpdiAqLworLnRpcCB0YWJsZSwKKy53YXJuaW5nIHRhYmxlLAorLmNhdXRpb24gdGFibGUsCisubm90ZSB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIHBhZGRpbmc6IDAuOGVtIDAuMGVtIDAuMGVtIDAuMGVtOworICBtYXJnaW4gOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50aXAgcCwKKy53YXJuaW5nIHAsCisuY2F1dGlvbiBwLAorLm5vdGUgcCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWNyb255bSB7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIHBhZGRpbmc6IDAuMDllbSAwLjNlbTsKKyAgbWFyZ2luOiAwZW07Cit9CisKKy5pdGVtaXplZGxpc3QgbGkgeworICBjbGVhcjogbm9uZTsKK30KKworLmZpbGVuYW1lIHsKKyAgZm9udC1zaXplOiBtZWRpdW07CisgIGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2U7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMGVtOworICB0b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNjZGY7CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgcG9zaXRpb246IGZpeGVkOworICBsZWZ0OiAwZW07CisgIGJvdHRvbTogMGVtOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICB3aWR0aDogMTAwJTsKK30KKworCitkaXYubmF2aGVhZGVyIHRkLAorZGl2Lm5hdmZvb3RlciB0ZCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRoIHsKKyAgLypmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMsIHNlcmlmOyovCisgIC8qZm9udC1zaXplOiB4LWxhcmdlOyovCisgIGZvbnQtc2l6ZTogODAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci10b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhIHsKKyAgY29sb3I6ICM3Nzc7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyogbm9ybWFsIHRleHQgaW4gdGhlIGZvb3RlciAqLworZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCB7CisgIGNvbG9yOiBibGFjazsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOnZpc2l0ZWQsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6dmlzaXRlZCB7CisgIGNvbG9yOiAjNDQ0OworfQorCisKKy8qIGxpbmtzIGluIGhlYWRlciBhbmQgZm9vdGVyICovCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6aG92ZXIsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGNvbG9yOiAjMzNhOworfQorCitkaXYubmF2aGVhZGVyIGhyLAorZGl2Lm5hdmZvb3RlciBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworLnFhbmRhc2V0IHRyLnF1ZXN0aW9uIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisucWFuZGFzZXQgdHIuYW5zd2VyIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorLmFuc3dlciB0ZCB7CisgIHBhZGRpbmctYm90dG9tOiAxLjVlbTsKK30KKworLmVtcGhhc2lzIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKworICAvKioqKioqKioqKioqKiAvCisgLyBkZWNvcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqLworCisudGl0bGVwYWdlIHsKK30KKworLnBhcnQgLnRpdGxlIHsKK30KKworLnN1YnRpdGxlIHsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qCitoMSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworaDIgeworICBib3JkZXItdG9wOiBzb2xpZCAwLjJlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoMyB7CisgIGJvcmRlci10b3A6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNCB7CisgIGJvcmRlcjogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g1IHsKKyAgYm9yZGVyOiAwZW07Cit9CisqLworCisucHJvZ3JhbWxpc3RpbmcgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKy5xdWVzdGlvbiB0ZCB7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KKworLmFuc3dlciB7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkOworfQorCisgIC8qKioqKioqKiogLworIC8gIGNvbG9ycyAgLworLyAqKioqKioqKiovCisKK2JvZHkgeworICBjb2xvcjogIzMzMzsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisKK2EgeworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKK30KKworYTpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNkZWRlZGU7Cit9CisKKworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDcsCitoOCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCitociB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworCisudGlwLCAud2FybmluZywgLmNhdXRpb24sIC5ub3RlIHsKKyAgYm9yZGVyLWNvbG9yOiAjZmZmOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOworfQorCisKKy53YXJuaW5nIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisudGlwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLm5vdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5MzI2NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbApAQCAtMCwwICsxLDg4IEBACis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIj4KKworPGJvb2sgaWQ9J2JpdGJha2UtdXNlci1tYW51YWwnIGxhbmc9J2VuJworICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIKKyAgICAgICAgeG1sbnM9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICAgICAgICA+CisgICAgPGJvb2tpbmZvPgorCisgICAgICAgIDxtZWRpYW9iamVjdD4KKyAgICAgICAgICAgIDxpbWFnZW9iamVjdD4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9J2ZpZ3VyZXMvYml0YmFrZS10aXRsZS5wbmcnCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nU1ZHJworICAgICAgICAgICAgICAgICAgICBhbGlnbj0nbGVmdCcgc2NhbGVmaXQ9JzEnIHdpZHRoPScxMDAlJy8+CisgICAgICAgICAgICA8L2ltYWdlb2JqZWN0PgorICAgICAgICA8L21lZGlhb2JqZWN0PgorCisgICAgICAgIDx0aXRsZT4KKyAgICAgICAgICAgIEJpdEJha2UgVXNlciBNYW51YWwKKyAgICAgICAgPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+UmljaGFyZCBQdXJkaWUsIENocmlzIExhcnNvbiwgYW5kIDwvZmlyc3RuYW1lPiA8c3VybmFtZT5QaGlsIEJsdW5kZWxsPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Qml0QmFrZSBDb21tdW5pdHk8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Yml0YmFrZS1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnPC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCis8IS0tCisjIEFkZCBpbiBzb21lIHJldmlzaW9uIGhpc3RvcnkgaWYgd2Ugd2FudCBpdCBoZXJlLgorICAgICAgICA8cmV2aGlzdG9yeT4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPngueDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPmRkIG1vbnRoIHllYXI8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5Tb21lIHJlbGV2ZW50IGNvbW1lbnQ8L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj54Lng8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5kZCBtb250aCB5ZWFyPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+U29tZSByZWxldmVudCBjb21tZW50PC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+eC54PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+ZGQgbW9udGggeWVhcjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlNvbWUgcmVsZXZlbnQgY29tbWVudDwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPngueDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPmRkIG1vbnRoIHllYXI8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5Tb21lIHJlbGV2ZW50IGNvbW1lbnQ8L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgPC9yZXZoaXN0b3J5PgorLS0+CisKKyAgICAgICAgPGNvcHlyaWdodD4KKyAgICAgICAgICAgIDx5ZWFyPjIwMDQtMjAxODwveWVhcj4KKyAgICAgICAgICAgIDxob2xkZXI+UmljaGFyZCBQdXJkaWU8L2hvbGRlcj4KKyAgICAgICAgICAgIDxob2xkZXI+Q2hyaXMgTGFyc29uPC9ob2xkZXI+CisgICAgICAgICAgICA8aG9sZGVyPmFuZCBQaGlsIEJsdW5kZWxsPC9ob2xkZXI+CisgICAgICAgIDwvY29weXJpZ2h0PgorCisgICAgICAgIDxsZWdhbG5vdGljZT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiBMaWNlbnNlLgorICAgICAgICAgICAgICAgIFRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgbGljZW5zZSwgdmlzaXQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8yLjUvIj5odHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8yLjUvPC91bGluaz4KKyAgICAgICAgICAgICAgICBvciBzZW5kIGEgbGV0dGVyIHRvIENyZWF0aXZlIENvbW1vbnMsIDQ0NCBDYXN0cm8gU3RyZWV0LAorICAgICAgICAgICAgICAgIFN1aXRlIDkwMCwgTW91bnRhaW4gVmlldywgQ2FsaWZvcm5pYSA5NDA0MSwgVVNBLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xlZ2Fsbm90aWNlPgorICAgIDwvYm9va2luZm8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJiaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0iYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0iYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImJpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImJpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sIi8+CisKKzwvYm9vaz4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9odG1sLmNzcyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9odG1sLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWVkZmQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2h0bWwuY3NzCkBAIC0wLDAgKzEsMjgxIEBACisvKiBGZXVpbGxlIGRlIHN0eWxlIERvY0Jvb2sgZHUgcHJvamV0IFRyYWR1Yy5vcmcgICAgICAgICAgICAgICAgKi8KKy8qIERvY0Jvb2sgQ1NTIHN0eWxlc2hlZXQgb2YgdGhlIFRyYWR1Yy5vcmcgcHJvamVjdCAgICAgICAgICAgICAqLworCisvKiAoYykgSmVhbi1QaGlsaXBwZSBHdelyYXJkIC0gMTQgYW/7dCAyMDA0ICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIChjKSBKZWFuLVBoaWxpcHBlIEd16XJhcmQgLSAxNCBBdWd1c3QgMjAwNCAgICAgICAgICAgICAgICAgICAqLworCisvKiBDZXR0ZSBmZXVpbGxlIGRlIHN0eWxlIGVzdCBsaWJyZSwgdm91cyBwb3V2ZXogbGEgICAgICAgICAgICAgKi8KKy8qIHJlZGlzdHJpYnVlciBldCBsYSBtb2RpZmllciBzZWxvbiBsZXMgdGVybWVzIGRlIGxhIExpY2VuY2UgICAqLworLyogQXJ0IExpYnJlLiBWb3VzIHRyb3V2ZXJleiB1biBleGVtcGxhaXJlIGRlIGNldHRlIExpY2VuY2Ugc3VyICovCisvKiBodHRwOi8vdGlncmVyYXllLm9yZy9QZXRpdC1ndWlkZS1kdS10cmFkdWN0ZXVyLmh0bWwjbGljZW5jZS1hcnQtbGlicmUgKi8KKworLyogVGhpcyB3b3JrIG9mIGFydCBpcyBmcmVlLCB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICovCisvKiBtb2RpZnkgaXQgYWNjb3JkaW5nIHRvIHRlcm1zIG9mIHRoZSBGcmVlIEFydCBsaWNlbnNlLiBZb3UgICAgKi8KKy8qIHdpbGwgZmluZCBhIHNwZWNpbWVuIG9mIHRoaXMgbGljZW5zZSBvbiB0aGUgQ29weWxlZnQgICAgICAgICAqLworLyogQXR0aXR1ZGUgd2ViIHNpdGU6IGh0dHA6Ly9hcnRsaWJyZS5vcmcgYXMgd2VsbCBhcyBvbiBvdGhlciAgICovCisvKiBzaXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFBsZWFzZSBub3RlIHRoYXQgdGhlIEZyZW5jaCB2ZXJzaW9uIG9mIHRoaXMgbGljZW5jZSBhcyBzaG93biAqLworLyogb24gaHR0cDovL3RpZ3JlcmF5ZS5vcmcvUGV0aXQtZ3VpZGUtZHUtdHJhZHVjdGV1ci5odG1sI2xpY2VuY2UtYXJ0LWxpYnJlICovCisvKiBpcyBvbmx5IG9mZmljaWFsIGxpY2VuY2Ugb2YgdGhpcyBkb2N1bWVudC4gVGhlIEVuZ2xpc2ggICAgICAgKi8KKy8qIGlzIG9ubHkgcHJvdmlkZWQgdG8gaGVscCB5b3UgdW5kZXJzdGFuZCB0aGlzIGxpY2VuY2UuICAgICAgICAqLworCisvKiBMYSBkZXJuaehyZSB2ZXJzaW9uIGRlIGNldHRlIGZldWlsbGUgZGUgc3R5bGUgZXN0IHRvdWpvdXJzICAgKi8KKy8qIGRpc3BvbmlibGUgc3VyoDogaHR0cDovL3RpZ3JlcmF5ZS5vcmcvc3R5bGUuY3NzICAgICAgICAgICAgICAqLworLyogRWxsZSBlc3Qg6WdhbGVtZW50IGRpc3BvbmlibGUgc3VyoDogICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBodHRwOi8vd3d3LnRyYWR1Yy5vcmcvZG9jcy9IT1dUTy9sZWN0dXJlL3N0eWxlLmNzcyAgICAgICAgICAgKi8KKworLyogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc3R5bGVzaGVldCBpcyBhdmFpbGFibGUgZnJvbTogICAgICovCisvKiBodHRwOi8vdGlncmVyYXllLm9yZy9zdHlsZS5jc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEl0IGlzIGFsc28gYXZhaWxhYmxlIG9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogaHR0cDovL3d3dy50cmFkdWMub3JnL2RvY3MvSE9XVE8vbGVjdHVyZS9zdHlsZS5jc3MgICAgICAgICAgICovCisKKy8qIE4naOlzaXRleiBwYXMg4CBlbnZveWVyIHZvcyBjb21tZW50YWlyZXMgZXQgY29ycmVjdGlvbnMg4CAgICAqLworLyogSmVhbi1QaGlsaXBwZSBHdelyYXJkIDxqZWFuLXBoaWxpcHBlLmd1ZXJhcmRAdGlncmVyYXllLm9yZz4gICovCisKKy8qIFBsZWFzZSBzZW5kIGZlZWRiYWNrIGFuZCBidWcgcmVwb3J0cyB0byAgICAgICAgICAgICAgICAgICAgICAqLworLyogSmVhbi1QaGlsaXBwZSBHdelyYXJkIDxqZWFuLXBoaWxpcHBlLmd1ZXJhcmRAdGlncmVyYXllLm9yZz4gICovCisKKy8qICRJZDogc3R5bGUuY3NzLHYgMS4xNCAyMDA0LzA5LzEwIDIwOjEyOjA5IGZldnJpZXIgRXhwIGZldnJpZXIgJCAqLworCisvKiBQculzZW50YXRpb24gZ+lu6XJhbGUgZHUgZG9jdW1lbnQgKi8KKy8qIE92ZXJhbGwgZG9jdW1lbnQgcHJlc2VudGF0aW9uICovCisKK2JvZHkgeworICAgIC8qCisgICAgZm9udC1mYW1pbHk6IEFwb2xsaW5lLCAiVVJXIFBhbGxhZGlvIEwiLCBHYXJhbW9uZCwgakdhcmFtb25kLAorICAgICAgICAgICAgICAgICAiQml0c3RyZWFtIEN5YmVyYml0IiwgIlBhbGF0aW5vIExpbm90eXBlIiwgc2VyaWY7CisgICAgICovCisgICAgbWFyZ2luOiA3JTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKworLyogVGFpbGxlIGR1IHRleHRlICovCisvKiBUZXh0IHNpemUgKi8KKworKiB7IGZvbnQtc2l6ZTogMTAwJTsgfQorCisvKiBHZXN0aW9uIGRlcyB0ZXh0ZXMgbWlzIGVuIHJlbGllZiBpbWJyaXF16XMgKi8KKy8qIEVtYmVkZGVkIGVtcGhhc2lzICovCisKK2VtIHsgZm9udC1zdHlsZTogaXRhbGljOyB9CitlbSBlbSB7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQorZW0gZW0gZW0geyBmb250LXN0eWxlOiBpdGFsaWM7IH0KKworLyogVGl0cmVzICovCisvKiBUaXRsZXMgKi8KKworaDEgeyBmb250LXNpemU6IDIwMCU7IGZvbnQtd2VpZ2h0OiA5MDA7IH0KK2gyIHsgZm9udC1zaXplOiAxNjAlOyBmb250LXdlaWdodDogOTAwOyB9CitoMyB7IGZvbnQtc2l6ZTogMTMwJTsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KK2g0IHsgZm9udC1zaXplOiAxMTUlOyBmb250LXdlaWdodDogYm9sZDsgfQoraDUgeyBmb250LXNpemU6IDEwOCU7IGZvbnQtd2VpZ2h0OiBib2xkOyB9CitoNiB7ICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KKworLyogTm9tIGRlIGZhbWlsbGUgZW4gcGV0aXRlcyBtYWp1c2N1bGVzICh1bmlxdWVtZW50IGVuIGZyYW7nYWlzKSAqLworLyogTGFzdCBuYW1lcyBpbiBzbWFsbCBjYXBzIChmb3IgRnJlbmNoIG9ubHkpICovCisKKypbY2xhc3N+PSJzdXJuYW1lIl06bGFuZyhmcikgeyBmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7IH0KKworLyogQmxvY3MgZGUgY2l0YXRpb24gKi8KKy8qIFF1b3RhdGlvbiBibG9jcyAqLworCitkaXZbY2xhc3N+PSJibG9ja3F1b3RlIl0geworICBib3JkZXI6IHNvbGlkIDJweCAjQUFBOworICBwYWRkaW5nOiA1cHg7CisgIG1hcmdpbjogNXB4OworfQorCitkaXZbY2xhc3N+PSJibG9ja3F1b3RlIl0gPiB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworLyogQmxvY3MgbGl06XJhdXigOiBmb25kIGdyaXMgY2xhaXIgKi8KKy8qIExpdGVyYWwgYmxvY3M6IGxpZ2h0IGdyYXkgYmFja2dyb3VuZCAqLworCisqW2NsYXNzfj0ibGl0ZXJhbGxheW91dCJdIHsKKyAgYmFja2dyb3VuZDogI2YwZjBmMDsKKyAgcGFkZGluZzogNXB4OworICBtYXJnaW46IDVweDsKK30KKworLyogUHJvZ3JhbW1lcyBldCBjYXB0dXJlcyB0ZXh0ZaA6IGZvbmQgYmxldSBjbGFpciAqLworLyogTGlzdGluZyBhbmQgdGV4dCBzY3JlZW4gc25hcHNob3RzOiBsaWdodCBibHVlIGJhY2tncm91bmQgKi8KKworKltjbGFzc349InByb2dyYW1saXN0aW5nIl0sICpbY2xhc3N+PSJzY3JlZW4iXSB7CisgIGJhY2tncm91bmQ6ICNmMGYwZmY7CisgIHBhZGRpbmc6IDVweDsKKyAgbWFyZ2luOiA1cHg7Cit9CisKKy8qIExlcyB0ZXh0ZXMg4CByZW1wbGFjZXIgc29udCBzdXJsaWdu6XMgZW4gdmVydCBw4mxlICovCisvKiBSZXBsYWNlYWJsZSB0ZXh0IGluIGhpZ2hsaWdodGVkIGluIHBhbGUgZ3JlZW4gKi8KKworKltjbGFzc349InJlcGxhY2VhYmxlIl0geyAKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOThmYjk4OworICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsgfQorCisvKiBUYWJsZXOgOiBmb25kcyBncmlzIGNsYWlyICYgYm9yZHMgc2ltcGxlcyAqLworLyogVGFibGVzOiBsaWdodCBncmF5IGJhY2tncm91bmQgYW5kIHNvbGlkIGJvcmRlcnMgKi8KKworKltjbGFzc349InRhYmxlIl0gKltjbGFzc349InRpdGxlIl0geyB3aWR0aDoxMDAlOyBib3JkZXI6IDBweDsgfQorCit0YWJsZSB7CisgICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKKyAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgIHBhZGRpbmc6IDJweDsKKyAgICBtYXJnaW46IDVweDsKK30KKworLyogTGlzdGVzIHNpbXBsZXMgZW4gc3R5bGUgdGFibGUgKi8KKy8qIFNpbXBsZXMgbGlzdHMgaW4gdGFibGUgcHJlc2VudGF0aW9uICovCisKK3RhYmxlW2NsYXNzfj0ic2ltcGxlbGlzdCJdIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOworICAgIG1hcmdpbjogNXB4OworICAgIGJvcmRlcjogc29saWQgMXB4ICNBQUE7Cit9CisKK3RhYmxlW2NsYXNzfj0ic2ltcGxlbGlzdCJdIHRkIHsKKyAgICBib3JkZXI6IHNvbGlkIDFweCAjQUFBOworfQorCisvKiBMZXMgdGFibGVzICovCisvKiBUYWJsZXMgKi8KKworKltjbGFzc349InRhYmxlIl0gdGFibGUgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7CisgICAgYm9yZGVyOiBzb2xpZCAxcHggI0FBQTsKK30KKypbY2xhc3N+PSJpbmZvcm1hbHRhYmxlIl0gdGFibGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOyB9CisKK3RoLHRkIHsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICBwYWRkaW5nOiAwLjFlbSAwLjNlbTsKKyAgICBlbXB0eS1jZWxsczogc2hvdzsgCit9CisKKy8qIEFsaWduZW1lbnQgZGVzIGNvbG9ubmVzICovCisvKiBDb2x1bm1zIGFsaWdubWVudCAqLworCit0ZFthbGlnbj1jZW50ZXJdICwgIHRoW2FsaWduPWNlbnRlcl0gIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9Cit0ZFthbGlnbj1yaWdodF0gLCAgIHRoW2FsaWduPXJpZ2h0XSAgIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KK3RkW2FsaWduPWxlZnRdICwgICAgdGhbYWxpZ249bGVmdF0gICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9Cit0ZFthbGlnbj1qdXN0aWZ5XSAsIHRoW2FsaWduPWp1c3RpZnldIHsgdGV4dC1hbGlnbjoganVzdGlmeTsgfQorCisvKiBQYXMgZGUgbWFyZ2UgYXV0b3VyIGRlcyBpbWFnZXMgKi8KKy8qIE5vIGluc2lkZSBtYXJnaW5zIGZvciBpbWFnZXMgKi8KKworaW1nIHsgYm9yZGVyOiAwOyB9CisKKy8qIExlcyBsaWVucyBuZSBzb250IHBhcyBzb3VsaWdu6XMgKi8KKy8qIE5vIHVuZGVybGluZXMgZm9yIGxpbmtzICovCisKKzpsaW5rICwgOnZpc2l0ZWQgLCA6YWN0aXZlIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CisKKy8qIFBydWRlbmNloDogY2FkcmUgamF1bmUgZXQgZm9uZCBqYXVuZSBjbGFpciAqLworLyogQ2F1dGlvbjogeWVsbG93IGJvcmRlciBhbmQgbGlnaHQgeWVsbG93IGJhY2tncm91bmQgKi8KKworKltjbGFzc349ImNhdXRpb24iXSB7CisgICAgYm9yZGVyOiBzb2xpZCAycHggeWVsbG93OworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CisgICAgcGFkZGluZzogMWVtIDZweCAxZW0gOworICAgIG1hcmdpbjogNXB4OworfQorCisqW2NsYXNzfj0iY2F1dGlvbiJdIHRoIHsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCit9CisKKypbY2xhc3N+PSJjYXV0aW9uIl0gdGFibGUgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKiBOb3RlIGltcG9ydGFudGWgOiBjYWRyZSBqYXVuZSBldCBmb25kIGphdW5lIGNsYWlyICovCisvKiBJbXBvcnRhbnQ6IHllbGxvdyBib3JkZXIgYW5kIGxpZ2h0IHllbGxvdyBiYWNrZ3JvdW5kICovCisKKypbY2xhc3N+PSJpbXBvcnRhbnQiXSB7CisgICAgYm9yZGVyOiBzb2xpZCAycHggeWVsbG93OworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CisgICAgcGFkZGluZzogMWVtIDZweCAxZW07CisgICAgbWFyZ2luOiA1cHg7Cit9CisKKypbY2xhc3N+PSJpbXBvcnRhbnQiXSB0aCB7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQorfQorCisqW2NsYXNzfj0iaW1wb3J0YW50Il0gdGFibGUgIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmUwOworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyogTWlzZSBlbiDpdmlkZW5jZaA6IHRleHRlIGzpZ+hyZW1lbnQgcGx1cyBncmFuZCAqLworLyogSGlnaGxpZ2h0czogc2xpZ2h0bHkgbGFyZ2VyIHRleHRzICovCisKKypbY2xhc3N+PSJoaWdobGlnaHRzIl0geworICAgIGZvbnQtc2l6ZTogIDExMCU7Cit9CisKKy8qIE5vdGWgOiBjYWRyZSBibGV1IGV0IGZvbmQgYmxldSBjbGFpciAqLworLyogTm90ZXM6IGJsdWUgYm9yZGVyIGFuZCBsaWdodCBibHVlIGJhY2tncm91bmQgKi8KKworKltjbGFzc349Im5vdGUiXSAgIHsKKyAgICBib3JkZXI6IHNvbGlkIDJweCAjNzA5OUM1OworICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZmY7CisgICAgcGFkZGluZzogMWVtIDZweCAxZW0gOworICAgIG1hcmdpbjogNXB4OworfQorCisqW2NsYXNzfj0ibm90ZSJdIHRoIHsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCit9CisKKypbY2xhc3N+PSJub3RlIl0gdGFibGUgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZmY7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKiBBc3R1Y2WgOiBjYWRyZSB2ZXJ0IGV0IGZvbmQgdmVydCBjbGFpciAqLworLyogVGlwOiBncmVlbiBib3JkZXIgYW5kIGxpZ2h0IGdyZWVuIGJhY2tncm91bmQgKi8KKworKltjbGFzc349InRpcCJdIHsKKyAgICBib3JkZXI6IHNvbGlkIDJweCAjMDBmZjAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGZmZmY7CisgICAgcGFkZGluZzogMWVtIDZweCAxZW0gOworICAgIG1hcmdpbjogNXB4OworfQorCisqW2NsYXNzfj0idGlwIl0gdGggeworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKypbY2xhc3N+PSJ0aXAiXSB0YWJsZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZmZmZjsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qIEF2ZXJ0aXNzZW1lbnSgOiBjYWRyZSByb3VnZSBldCBmb25kIHJvdWdlIGNsYWlyICovCisvKiBXYXJuaW5nOiByZWQgYm9yZGVyIGFuZCBsaWdodCByZWQgYmFja2dyb3VuZCAqLworCisqW2NsYXNzfj0id2FybmluZyJdIHsKKyAgICBib3JkZXI6IHNvbGlkIDJweCAjZmYwMDAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYwZjA7IAorICAgIHBhZGRpbmc6IDFlbSA2cHggMWVtIDsKKyAgICBtYXJnaW46IDVweDsKK30KKworKltjbGFzc349Indhcm5pbmciXSB0aCB7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKyAgICAgICAgICAgICAgICAgICAgCisKKypbY2xhc3N+PSJ3YXJuaW5nIl0gdGFibGUgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYwZjA7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKiBGaW4gKi8KKy8qIFRoZSBFbmQgKi8KKwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9jb25mLnB5IGIvcG9reS9iaXRiYWtlL2RvYy9jb25mLnB5CmluZGV4IDM1NGRmZjMuLjE5N2YyNzUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvY29uZi5weQorKysgYi9wb2t5L2JpdGJha2UvZG9jL2NvbmYucHkKQEAgLTczLDEzICs3Myw3IEBACiAjIFRoZSB0aGVtZSB0byB1c2UgZm9yIEhUTUwgYW5kIEhUTUwgSGVscCBwYWdlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKICMgYSBsaXN0IG9mIGJ1aWx0aW4gdGhlbWVzLgogIwotdHJ5OgotICAgIGltcG9ydCBzcGhpbnhfcnRkX3RoZW1lCi0gICAgaHRtbF90aGVtZSA9ICdzcGhpbnhfcnRkX3RoZW1lJwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHN5cy5zdGRlcnIud3JpdGUoIlRoZSBTcGhpbnggc3BoaW54X3J0ZF90aGVtZSBIVE1MIHRoZW1lIHdhcyBub3QgZm91bmQuXAotICAgIFxuUGxlYXNlIG1ha2Ugc3VyZSB0byBpbnN0YWxsIHRoZSBzcGhpbnhfcnRkX3RoZW1lIHB5dGhvbiBwYWNrYWdlLlxuIikKLSAgICBzeXMuZXhpdCgxKQoraHRtbF90aGVtZSA9ICdzcGhpbnhfcnRkX3RoZW1lJwogCiAjIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSBzdGF0aWMgZmlsZXMgKHN1Y2ggYXMgc3R5bGUgc2hlZXRzKSBoZXJlLAogIyByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4gVGhleSBhcmUgY29waWVkIGFmdGVyIHRoZSBidWlsdGluIHN0YXRpYyBmaWxlcywKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvcG9reS5lbnQgYi9wb2t5L2JpdGJha2UvZG9jL3Bva3kuZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZDljODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL3Bva3kuZW50CkBAIC0wLDAgKzEsNTEgQEAKKzwhRU5USVRZIERJU1RSTyAiMS40Ij4KKzwhRU5USVRZIERJU1RST19OQU1FICJ0YmQiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjEuNCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTiAiOC4wIj4KKzwhRU5USVRZIFlPQ1RPX1BPS1kgInBva3ktJkRJU1RST19OQU1FOy0mUE9LWVZFUlNJT047Ij4KKzwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMTMiPgorPCFFTlRJVFkgWU9DVE9fRExfVVJMICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgWU9DVE9fSE9NRV9VUkwgImh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZyI+Cis8IUVOVElUWSBZT0NUT19MSVNUU19VUkwgImh0dHA6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnIj4KKzwhRU5USVRZIFlPQ1RPX0JVR1pJTExBX1VSTCAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgWU9DVE9fV0lLSV9VUkwgImh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnIj4KKzwhRU5USVRZIFlPQ1RPX0FCX1VSTCAiaHR0cDovL2F1dG9idWlsZGVyLnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgWU9DVE9fR0lUX1VSTCAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnIj4KKzwhRU5USVRZIFlPQ1RPX0FEVFJFUE9fVVJMICJodHRwOi8vYWR0cmVwby55b2N0b3Byb2plY3Qub3JnIj4KKzwhRU5USVRZIE9FX0hPTUVfVVJMICJodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmciPgorPCFFTlRJVFkgT0VfTElTVFNfVVJMICJodHRwOi8vbGlzdHMubGludXh0b2dvLm9yZy9jZ2ktYmluL21haWxtYW4iPgorPCFFTlRJVFkgT0VfRE9DU19VUkwgImh0dHA6Ly9kb2NzLm9wZW5lbWJlZGRlZC5vcmciPgorPCFFTlRJVFkgT0hfSE9NRV9VUkwgImh0dHA6Ly9vLWhhbmQuY29tIj4KKzwhRU5USVRZIEJJVEJBS0VfSE9NRV9VUkwgImh0dHA6Ly9kZXZlbG9wZXIuYmVybGlvcy5kZS9wcm9qZWN0cy9iaXRiYWtlLyI+Cis8IUVOVElUWSBZT0NUT19ET0NTX1VSTCAiJllPQ1RPX0hPTUVfVVJMOy9kb2NzIj4KKzwhRU5USVRZIFlPQ1RPX1NPVVJDRVNfVVJMICImWU9DVE9fSE9NRV9VUkw7L3NvdXJjZXMvIj4KKzwhRU5USVRZIFlPQ1RPX0FCX1BPUlRfVVJMICImWU9DVE9fQUJfVVJMOzo4MDEwIj4KKzwhRU5USVRZIFlPQ1RPX0FCX05JR0hUTFlfVVJMICImWU9DVE9fQUJfVVJMOy9uaWdodGx5LyI+Cis8IUVOVElUWSBZT0NUT19QT0tZX1VSTCAiJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvcG9reS8iPgorPCFFTlRJVFkgWU9DVE9fUkVMRUFTRV9ETF9VUkwgIiZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87Ij4KKzwhRU5USVRZIFlPQ1RPX1RPT0xDSEFJTl9ETF9VUkwgIiZZT0NUT19SRUxFQVNFX0RMX1VSTDsvdG9vbGNoYWluLyI+Cis8IUVOVElUWSBZT0NUT19BRFRJTlNUQUxMRVJfRExfVVJMICImWU9DVE9fUkVMRUFTRV9ETF9VUkw7L2FkdF9pbnN0YWxsZXIiPgorPCFFTlRJVFkgWU9DVE9fUE9LWV9ETF9VUkwgIiZZT0NUT19SRUxFQVNFX0RMX1VSTDsvJllPQ1RPX1BPS1k7LnRhci5iejIiPgorPCFFTlRJVFkgWU9DVE9fTUFDSElORVNfRExfVVJMICImWU9DVE9fUkVMRUFTRV9ETF9VUkw7L21hY2hpbmVzIj4KKzwhRU5USVRZIFlPQ1RPX1FFTVVfRExfVVJMICImWU9DVE9fTUFDSElORVNfRExfVVJMOy9xZW11Ij4KKzwhRU5USVRZIFlPQ1RPX1BZVEhPTi1pNjg2X0RMX1VSTCAiJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvbWlzY3N1cHBvcnQvcHl0aG9uLW5hdGl2ZXNkay1zdGFuZGFsb25lLWk2ODYudGFyLmJ6MiI+Cis8IUVOVElUWSBZT0NUT19QWVRIT04teDg2XzY0X0RMX1VSTCAiJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvbWlzY3N1cHBvcnQvcHl0aG9uLW5hdGl2ZXNkay1zdGFuZGFsb25lLXg4Nl82NC50YXIuYnoyIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfUVNfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwiPgorPCFFTlRJVFkgWU9DVE9fRE9DU19BRFRfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYWR0LW1hbnVhbC9hZHQtbWFudWFsLmh0bWwiPgorPCFFTlRJVFkgWU9DVE9fRE9DU19SRUZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwiPgorPCFFTlRJVFkgWU9DVE9fRE9DU19CU1BfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfREVWX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfS0VSTkVMX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L2tlcm5lbC1tYW51YWwva2VybmVsLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0FEVFBBVEhfRElSICIvb3B0L3Bva3kvJkRJU1RSTzsiPgorPCFFTlRJVFkgWU9DVE9fUE9LWV9UQVJCQUxMICImWU9DVE9fUE9LWTsudGFyLmJ6MiI+Cis8IUVOVElUWSBPRV9JTklUX1BBVEggIiZZT0NUT19QT0tZOy9vZS1pbml0LWJ1aWxkLWVudiI+Cis8IUVOVElUWSBPRV9JTklUX0ZJTEUgIm9lLWluaXQtYnVpbGQtZW52Ij4KKzwhRU5USVRZIFVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayB3Z2V0IGdpdC1jb3JlIGRpZmZzdGF0IHVuemlwIHRleGluZm8gXAorICAgICBidWlsZC1lc3NlbnRpYWwgY2hycGF0aCI+Cis8IUVOVElUWSBGRURPUkFfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgImdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbiB1bnppcCBwZXJsIHBhdGNoIFwKKyAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZWdsaWJjLWRldmVsIHRleGluZm8gY2hycGF0aCBcCisgICAgIGNjYWNoZSI+Cis8IUVOVElUWSBPUEVOU1VTRV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAicHl0aG9uIGdjYyBnY2MtYysrIGdpdCBjaHJwYXRoIG1ha2Ugd2dldCBweXRob24teG1sIFwKKyAgICAgZGlmZnN0YXQgdGV4aW5mbyBweXRob24tY3Vyc2VzIj4KKzwhRU5USVRZIENFTlRPU19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uIHVuemlwIHBlcmwgcGF0Y2ggXAorICAgICBkaWZmdXRpbHMgZGlmZnN0YXQgZ2l0IGNwcCBnY2MgZ2NjLWMrKyBnbGliYy1kZXZlbCB0ZXhpbmZvIGNocnBhdGgiPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9zcGhpbngtc3RhdGljL3RoZW1lX292ZXJyaWRlcy5jc3MgYi9wb2t5L2JpdGJha2UvZG9jL3NwaGlueC1zdGF0aWMvdGhlbWVfb3ZlcnJpZGVzLmNzcwppbmRleCBlMzYyNjc3Li40ZmQ3NmExIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvZG9jL3NwaGlueC1zdGF0aWMvdGhlbWVfb3ZlcnJpZGVzLmNzcworKysgYi9wb2t5L2JpdGJha2UvZG9jL3NwaGlueC1zdGF0aWMvdGhlbWVfb3ZlcnJpZGVzLmNzcwpAQCAtNCw2ICs0LDggQEAKIAogYm9keSB7CiAgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTYW5zLCBzYW5zLXNlcmlmOworCisgIG1pbi13aWR0aDogNjQwcHg7CiAgIG1hcmdpbjogIDBlbSBhdXRvOwogICBjb2xvcjogIzMzMzsKIH0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvVmVyYS54bWwgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL1ZlcmEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjODIwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL1ZlcmEueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGZvbnQtbWV0cmljcyB0eXBlPSJUWVBFMCI+PGZvbnQtbmFtZT5CaXRzdHJlYW1WZXJhU2FuczwvZm9udC1uYW1lPjxlbWJlZC8+PGNhcC1oZWlnaHQ+NzI5PC9jYXAtaGVpZ2h0Pjx4LWhlaWdodD41NDY8L3gtaGVpZ2h0Pjxhc2NlbmRlcj45Mjg8L2FzY2VuZGVyPjxkZXNjZW5kZXI+LTIzNTwvZGVzY2VuZGVyPjxiYm94PjxsZWZ0Pi0xODM8L2xlZnQ+PGJvdHRvbT4tMjM1PC9ib3R0b20+PHJpZ2h0PjEyODc8L3JpZ2h0Pjx0b3A+OTI4PC90b3A+PC9iYm94PjxmbGFncz4zMjwvZmxhZ3M+PHN0ZW12PjA8L3N0ZW12PjxpdGFsaWNhbmdsZT4wPC9pdGFsaWNhbmdsZT48c3VidHlwZT5UWVBFMDwvc3VidHlwZT48bXVsdGlieXRlLWV4dHJhcz48Y2lkLXR5cGU+Q0lERm9udFR5cGUyPC9jaWQtdHlwZT48ZGVmYXVsdC13aWR0aD4wPC9kZWZhdWx0LXdpZHRoPjxiZnJhbmdlcz48YmYgZ2k9IjMiIHVlPSIxMjYiIHVzPSIzMiIvPjxiZiBnaT0iMTcyIiB1ZT0iMTYwIiB1cz0iMTYwIi8+PGJmIGdpPSIxNjMiIHVlPSIxNjEiIHVzPSIxNjEiLz48YmYgZ2k9IjEzMiIgdWU9IjE2MyIgdXM9IjE2MiIvPjxiZiBnaT0iMTg5IiB1ZT0iMTY0IiB1cz0iMTY0Ii8+PGJmIGdpPSIxNTAiIHVlPSIxNjUiIHVzPSIxNjUiLz48YmYgZ2k9IjIzMSIgdWU9IjE2NiIgdXM9IjE2NiIvPjxiZiBnaT0iMTM0IiB1ZT0iMTY3IiB1cz0iMTY3Ii8+PGJmIGdpPSIxNDIiIHVlPSIxNjgiIHVzPSIxNjgiLz48YmYgZ2k9IjEzOSIgdWU9IjE2OSIgdXM9IjE2OSIvPjxiZiBnaT0iMTU3IiB1ZT0iMTcwIiB1cz0iMTcwIi8+PGJmIGdpPSIxNjkiIHVlPSIxNzEiIHVzPSIxNzEiLz48YmYgZ2k9IjE2NCIgdWU9IjE3MiIgdXM9IjE3MiIvPjxiZiBnaT0iMjU2IiB1ZT0iMTczIiB1cz0iMTczIi8+PGJmIGdpPSIxMzgiIHVlPSIxNzQiIHVzPSIxNzQiLz48YmYgZ2k9IjIxNyIgdWU9IjE3NSIgdXM9IjE3NSIvPjxiZiBnaT0iMTMxIiB1ZT0iMTc2IiB1cz0iMTc2Ii8+PGJmIGdpPSIxNDciIHVlPSIxNzciIHVzPSIxNzciLz48YmYgZ2k9IjI0MSIgdWU9IjE3OSIgdXM9IjE3OCIvPjxiZiBnaT0iMTQxIiB1ZT0iMTgwIiB1cz0iMTgwIi8+PGJmIGdpPSIxNTEiIHVlPSIxODEiIHVzPSIxODEiLz48YmYgZ2k9IjEzNiIgdWU9IjE4MiIgdXM9IjE4MiIvPjxiZiBnaT0iMTk1IiB1ZT0iMTgzIiB1cz0iMTgzIi8+PGJmIGdpPSIyMjEiIHVlPSIxODQiIHVzPSIxODQiLz48YmYgZ2k9IjI0MCIgdWU9IjE4NSIgdXM9IjE4NSIvPjxiZiBnaT0iMTU4IiB1ZT0iMTg2IiB1cz0iMTg2Ii8+PGJmIGdpPSIxNzAiIHVlPSIxODciIHVzPSIxODciLz48YmYgZ2k9IjI0MyIgdWU9IjE5MCIgdXM9IjE4OCIvPjxiZiBnaT0iMTYyIiB1ZT0iMTkxIiB1cz0iMTkxIi8+PGJmIGdpPSIxNzMiIHVlPSIxOTIiIHVzPSIxOTIiLz48YmYgZ2k9IjIwMSIgdWU9IjE5MyIgdXM9IjE5MyIvPjxiZiBnaT0iMTk5IiB1ZT0iMTk0IiB1cz0iMTk0Ii8+PGJmIGdpPSIxNzQiIHVlPSIxOTUiIHVzPSIxOTUiLz48YmYgZ2k9Ijk4IiB1ZT0iMTk3IiB1cz0iMTk2Ii8+PGJmIGdpPSIxNDQiIHVlPSIxOTgiIHVzPSIxOTgiLz48YmYgZ2k9IjEwMCIgdWU9IjE5OSIgdXM9IjE5OSIvPjxiZiBnaT0iMjAzIiB1ZT0iMjAwIiB1cz0iMjAwIi8+PGJmIGdpPSIxMDEiIHVlPSIyMDEiIHVzPSIyMDEiLz48YmYgZ2k9IjIwMCIgdWU9IjIwMiIgdXM9IjIwMiIvPjxiZiBnaT0iMjAyIiB1ZT0iMjAzIiB1cz0iMjAzIi8+PGJmIGdpPSIyMDciIHVlPSIyMDQiIHVzPSIyMDQiLz48YmYgZ2k9IjIwNCIgdWU9IjIwNyIgdXM9IjIwNSIvPjxiZiBnaT0iMjMyIiB1ZT0iMjA4IiB1cz0iMjA4Ii8+PGJmIGdpPSIxMDIiIHVlPSIyMDkiIHVzPSIyMDkiLz48YmYgZ2k9IjIxMCIgdWU9IjIxMCIgdXM9IjIxMCIvPjxiZiBnaT0iMjA4IiB1ZT0iMjEyIiB1cz0iMjExIi8+PGJmIGdpPSIxNzUiIHVlPSIyMTMiIHVzPSIyMTMiLz48YmYgZ2k9IjEwMyIgdWU9IjIxNCIgdXM9IjIxNCIvPjxiZiBnaT0iMjM5IiB1ZT0iMjE1IiB1cz0iMjE1Ii8+PGJmIGdpPSIxNDUiIHVlPSIyMTYiIHVzPSIyMTYiLz48YmYgZ2k9IjIxMyIgdWU9IjIxNyIgdXM9IjIxNyIvPjxiZiBnaT0iMjExIiB1ZT0iMjE5IiB1cz0iMjE4Ii8+PGJmIGdpPSIxMDQiIHVlPSIyMjAiIHVzPSIyMjAiLz48YmYgZ2k9IjIzNCIgdWU9IjIyMSIgdXM9IjIyMSIvPjxiZiBnaT0iMjM2IiB1ZT0iMjIyIiB1cz0iMjIyIi8+PGJmIGdpPSIxMzciIHVlPSIyMjMiIHVzPSIyMjMiLz48YmYgZ2k9IjEwNiIgdWU9IjIyNCIgdXM9IjIyNCIvPjxiZiBnaT0iMTA1IiB1ZT0iMjI1IiB1cz0iMjI1Ii8+PGJmIGdpPSIxMDciIHVlPSIyMjYiIHVzPSIyMjYiLz48YmYgZ2k9IjEwOSIgdWU9IjIyNyIgdXM9IjIyNyIvPjxiZiBnaT0iMTA4IiB1ZT0iMjI4IiB1cz0iMjI4Ii8+PGJmIGdpPSIxMTAiIHVlPSIyMjkiIHVzPSIyMjkiLz48YmYgZ2k9IjE2MCIgdWU9IjIzMCIgdXM9IjIzMCIvPjxiZiBnaT0iMTExIiB1ZT0iMjMxIiB1cz0iMjMxIi8+PGJmIGdpPSIxMTMiIHVlPSIyMzIiIHVzPSIyMzIiLz48YmYgZ2k9IjExMiIgdWU9IjIzMyIgdXM9IjIzMyIvPjxiZiBnaT0iMTE0IiB1ZT0iMjM1IiB1cz0iMjM0Ii8+PGJmIGdpPSIxMTciIHVlPSIyMzYiIHVzPSIyMzYiLz48YmYgZ2k9IjExNiIgdWU9IjIzNyIgdXM9IjIzNyIvPjxiZiBnaT0iMTE4IiB1ZT0iMjM5IiB1cz0iMjM4Ii8+PGJmIGdpPSIyMzMiIHVlPSIyNDAiIHVzPSIyNDAiLz48YmYgZ2k9IjEyMCIgdWU9IjI0MSIgdXM9IjI0MSIvPjxiZiBnaT0iMTIyIiB1ZT0iMjQyIiB1cz0iMjQyIi8+PGJmIGdpPSIxMjEiIHVlPSIyNDMiIHVzPSIyNDMiLz48YmYgZ2k9IjEyMyIgdWU9IjI0NCIgdXM9IjI0NCIvPjxiZiBnaT0iMTI1IiB1ZT0iMjQ1IiB1cz0iMjQ1Ii8+PGJmIGdpPSIxMjQiIHVlPSIyNDYiIHVzPSIyNDYiLz48YmYgZ2k9IjE4NCIgdWU9IjI0NyIgdXM9IjI0NyIvPjxiZiBnaT0iMTYxIiB1ZT0iMjQ4IiB1cz0iMjQ4Ii8+PGJmIGdpPSIxMjciIHVlPSIyNDkiIHVzPSIyNDkiLz48YmYgZ2k9IjEyNiIgdWU9IjI1MCIgdXM9IjI1MCIvPjxiZiBnaT0iMTI4IiB1ZT0iMjUyIiB1cz0iMjUxIi8+PGJmIGdpPSIyMzUiIHVlPSIyNTMiIHVzPSIyNTMiLz48YmYgZ2k9IjIzNyIgdWU9IjI1NCIgdXM9IjI1NCIvPjxiZiBnaT0iMTg2IiB1ZT0iMjU1IiB1cz0iMjU1Ii8+PGJmIGdpPSIyNTEiIHVlPSIyNjMiIHVzPSIyNjIiLz48YmYgZ2k9IjI1MyIgdWU9IjI2OSIgdXM9IjI2OCIvPjxiZiBnaT0iMCIgdWU9IjI3MCIgdXM9IjI3MCIvPjxiZiBnaT0iMCIgdWU9IjI3MSIgdXM9IjI3MSIvPjxiZiBnaT0iMCIgdWU9IjI3MiIgdXM9IjI3MiIvPjxiZiBnaT0iMjU1IiB1ZT0iMjczIiB1cz0iMjczIi8+PGJmIGdpPSIyNDYiIHVlPSIyODciIHVzPSIyODYiLz48YmYgZ2k9IjI0OCIgdWU9IjMwNCIgdXM9IjMwNCIvPjxiZiBnaT0iMjE0IiB1ZT0iMzA1IiB1cz0iMzA1Ii8+PGJmIGdpPSIyMjUiIHVlPSIzMjIiIHVzPSIzMjEiLz48YmYgZ2k9IjE3NiIgdWU9IjMzOSIgdXM9IjMzOCIvPjxiZiBnaT0iMjQ5IiB1ZT0iMzUxIiB1cz0iMzUwIi8+PGJmIGdpPSIyMjciIHVlPSIzNTMiIHVzPSIzNTIiLz48YmYgZ2k9IjE4NyIgdWU9IjM3NiIgdXM9IjM3NiIvPjxiZiBnaT0iMjI5IiB1ZT0iMzgyIiB1cz0iMzgxIi8+PGJmIGdpPSIxNjYiIHVlPSI0MDIiIHVzPSI0MDIiLz48YmYgZ2k9IjIxNSIgdWU9IjcxMCIgdXM9IjcxMCIvPjxiZiBnaT0iMjI0IiB1ZT0iNzExIiB1cz0iNzExIi8+PGJmIGdpPSIyMTgiIHVlPSI3MzAiIHVzPSI3MjgiLz48YmYgZ2k9IjIyMyIgdWU9IjczMSIgdXM9IjczMSIvPjxiZiBnaT0iMjE2IiB1ZT0iNzMyIiB1cz0iNzMyIi8+PGJmIGdpPSIyMjIiIHVlPSI3MzMiIHVzPSI3MzMiLz48YmYgZ2k9IjE1OSIgdWU9IjkzNyIgdXM9IjkzNyIvPjxiZiBnaT0iMTU1IiB1ZT0iOTYwIiB1cz0iOTYwIi8+PGJmIGdpPSIxNzgiIHVlPSI4MjEyIiB1cz0iODIxMSIvPjxiZiBnaT0iMCIgdWU9IjgyMTMiIHVzPSI4MjEzIi8+PGJmIGdpPSIwIiB1ZT0iODIxNCIgdXM9IjgyMTQiLz48YmYgZ2k9IjAiIHVlPSI4MjE1IiB1cz0iODIxNSIvPjxiZiBnaT0iMTgyIiB1ZT0iODIxNyIgdXM9IjgyMTYiLz48YmYgZ2k9IjE5NiIgdWU9IjgyMTgiIHVzPSI4MjE4Ii8+PGJmIGdpPSIwIiB1ZT0iODIxOSIgdXM9IjgyMTkiLz48YmYgZ2k9IjE4MCIgdWU9IjgyMjEiIHVzPSI4MjIwIi8+PGJmIGdpPSIxOTciIHVlPSI4MjIyIiB1cz0iODIyMiIvPjxiZiBnaT0iMCIgdWU9IjgyMjMiIHVzPSI4MjIzIi8+PGJmIGdpPSIxMzAiIHVlPSI4MjI0IiB1cz0iODIyNCIvPjxiZiBnaT0iMTk0IiB1ZT0iODIyNSIgdXM9IjgyMjUiLz48YmYgZ2k9IjEzNSIgdWU9IjgyMjYiIHVzPSI4MjI2Ii8+PGJmIGdpPSIwIiB1ZT0iODIyNyIgdXM9IjgyMjciLz48YmYgZ2k9IjAiIHVlPSI4MjI4IiB1cz0iODIyOCIvPjxiZiBnaT0iMCIgdWU9IjgyMjkiIHVzPSI4MjI5Ii8+PGJmIGdpPSIxNzEiIHVlPSI4MjMwIiB1cz0iODIzMCIvPjxiZiBnaT0iMTk4IiB1ZT0iODI0MCIgdXM9IjgyNDAiLz48YmYgZ2k9IjE5MCIgdWU9IjgyNTAiIHVzPSI4MjQ5Ii8+PGJmIGdpPSIyNTgiIHVlPSI4MzY0IiB1cz0iODM2NCIvPjxiZiBnaT0iMTQwIiB1ZT0iODQ4MiIgdXM9Ijg0ODIiLz48YmYgZ2k9IjE1MiIgdWU9Ijg3MDYiIHVzPSI4NzA2Ii8+PGJmIGdpPSIwIiB1ZT0iODcwNyIgdXM9Ijg3MDciLz48YmYgZ2k9IjAiIHVlPSI4NzA4IiB1cz0iODcwOCIvPjxiZiBnaT0iMCIgdWU9Ijg3MDkiIHVzPSI4NzA5Ii8+PGJmIGdpPSIxNjgiIHVlPSI4NzEwIiB1cz0iODcxMCIvPjxiZiBnaT0iMTU0IiB1ZT0iODcxOSIgdXM9Ijg3MTkiLz48YmYgZ2k9IjAiIHVlPSI4NzIwIiB1cz0iODcyMCIvPjxiZiBnaT0iMTUzIiB1ZT0iODcyMSIgdXM9Ijg3MjEiLz48YmYgZ2k9IjIzOCIgdWU9Ijg3MjIiIHVzPSI4NzIyIi8+PGJmIGdpPSIwIiB1ZT0iODcyMyIgdXM9Ijg3MjMiLz48YmYgZ2k9IjAiIHVlPSI4NzI0IiB1cz0iODcyNCIvPjxiZiBnaT0iMTg4IiB1ZT0iODcyNSIgdXM9Ijg3MjUiLz48YmYgZ2k9IjAiIHVlPSI4NzI2IiB1cz0iODcyNiIvPjxiZiBnaT0iMCIgdWU9Ijg3MjciIHVzPSI4NzI3Ii8+PGJmIGdpPSIwIiB1ZT0iODcyOCIgdXM9Ijg3MjgiLz48YmYgZ2k9IjI1NyIgdWU9Ijg3MjkiIHVzPSI4NzI5Ii8+PGJmIGdpPSIxNjUiIHVlPSI4NzMwIiB1cz0iODczMCIvPjxiZiBnaT0iMCIgdWU9Ijg3MzEiIHVzPSI4NzMxIi8+PGJmIGdpPSIwIiB1ZT0iODczMiIgdXM9Ijg3MzIiLz48YmYgZ2k9IjAiIHVlPSI4NzMzIiB1cz0iODczMyIvPjxiZiBnaT0iMTQ2IiB1ZT0iODczNCIgdXM9Ijg3MzQiLz48YmYgZ2k9IjE1NiIgdWU9Ijg3NDciIHVzPSI4NzQ3Ii8+PGJmIGdpPSIxNjciIHVlPSI4Nzc2IiB1cz0iODc3NiIvPjxiZiBnaT0iMTQzIiB1ZT0iODgwMCIgdXM9Ijg4MDAiLz48YmYgZ2k9IjAiIHVlPSI4ODAxIiB1cz0iODgwMSIvPjxiZiBnaT0iMCIgdWU9Ijg4MDIiIHVzPSI4ODAyIi8+PGJmIGdpPSIwIiB1ZT0iODgwMyIgdXM9Ijg4MDMiLz48YmYgZ2k9IjE0OCIgdWU9Ijg4MDUiIHVzPSI4ODA0Ii8+PGJmIGdpPSIxODUiIHVlPSI5Njc0IiB1cz0iOTY3NCIvPjxiZiBnaT0iMTkyIiB1ZT0iNjQyNTgiIHVzPSI2NDI1NyIvPjxiZiBnaT0iMCIgdWU9IjY1NTM1IiB1cz0iNjU1MzUiLz48L2JmcmFuZ2VzPjxjaWQtd2lkdGhzIHN0YXJ0LWluZGV4PSIwIj48d3ggdz0iNjAwIi8+PHd4IHc9IjAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjMxNyIvPjx3eCB3PSI0MDAiLz48d3ggdz0iNDU5Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2MzYiLz48d3ggdz0iOTUwIi8+PHd4IHc9Ijc3OSIvPjx3eCB3PSIyNzQiLz48d3ggdz0iMzkwIi8+PHd4IHc9IjM5MCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iODM3Ii8+PHd4IHc9IjMxNyIvPjx3eCB3PSIzNjAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iMzM2Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI4MzciLz48d3ggdz0iODM3Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI1MzAiLz48d3ggdz0iMTAwMCIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjg2Ii8+PHd4IHc9IjY5OCIvPjx3eCB3PSI3NzAiLz48d3ggdz0iNjMxIi8+PHd4IHc9IjU3NSIvPjx3eCB3PSI3NzQiLz48d3ggdz0iNzUxIi8+PHd4IHc9IjI5NCIvPjx3eCB3PSIyOTQiLz48d3ggdz0iNjU1Ii8+PHd4IHc9IjU1NyIvPjx3eCB3PSI4NjIiLz48d3ggdz0iNzQ4Ii8+PHd4IHc9Ijc4NyIvPjx3eCB3PSI2MDMiLz48d3ggdz0iNzg3Ii8+PHd4IHc9IjY5NCIvPjx3eCB3PSI2MzQiLz48d3ggdz0iNjEwIi8+PHd4IHc9IjczMSIvPjx3eCB3PSI2ODQiLz48d3ggdz0iOTg4Ii8+PHd4IHc9IjY4NSIvPjx3eCB3PSI2MTAiLz48d3ggdz0iNjg1Ii8+PHd4IHc9IjM5MCIvPjx3eCB3PSIzMzYiLz48d3ggdz0iMzkwIi8+PHd4IHc9IjgzNyIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjYxMiIvPjx3eCB3PSI2MzQiLz48d3ggdz0iNTQ5Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSI2MTUiLz48d3ggdz0iMzUyIi8+PHd4IHc9IjYzNCIvPjx3eCB3PSI2MzMiLz48d3ggdz0iMjc3Ii8+PHd4IHc9IjI3NyIvPjx3eCB3PSI1NzkiLz48d3ggdz0iMjc3Ii8+PHd4IHc9Ijk3NCIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYzNCIvPjx3eCB3PSI2MzQiLz48d3ggdz0iNDExIi8+PHd4IHc9IjUyMCIvPjx3eCB3PSIzOTIiLz48d3ggdz0iNjMzIi8+PHd4IHc9IjU5MSIvPjx3eCB3PSI4MTciLz48d3ggdz0iNTkxIi8+PHd4IHc9IjU5MSIvPjx3eCB3PSI1MjQiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iODM3Ii8+PHd4IHc9IjY4NCIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjk4Ii8+PHd4IHc9IjYzMSIvPjx3eCB3PSI3NDgiLz48d3ggdz0iNzg3Ii8+PHd4IHc9IjczMSIvPjx3eCB3PSI2MTIiLz48d3ggdz0iNjEyIi8+PHd4IHc9IjYxMiIvPjx3eCB3PSI2MTIiLz48d3ggdz0iNjEyIi8+PHd4IHc9IjYxMiIvPjx3eCB3PSI1NDkiLz48d3ggdz0iNjE1Ii8+PHd4IHc9IjYxNSIvPjx3eCB3PSI2MTUiLz48d3ggdz0iNjE1Ii8+PHd4IHc9IjI3NyIvPjx3eCB3PSIyNzciLz48d3ggdz0iMjc3Ii8+PHd4IHc9IjI3NyIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSI2MTEiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNjMzIi8+PHd4IHc9IjYzMyIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1ODkiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYyOSIvPjx3eCB3PSIxMDAwIi8+PHd4IHc9IjEwMDAiLz48d3ggdz0iMTAwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjgzNyIvPjx3eCB3PSI5NzQiLz48d3ggdz0iNzg3Ii8+PHd4IHc9IjgzMyIvPjx3eCB3PSI4MzciLz48d3ggdz0iODM3Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjUxNyIvPjx3eCB3PSI2NzMiLz48d3ggdz0iNzU2Ii8+PHd4IHc9IjU4OCIvPjx3eCB3PSI1MjAiLz48d3ggdz0iNDcxIi8+PHd4IHc9IjQ3MSIvPjx3eCB3PSI3NjQiLz48d3ggdz0iOTgxIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSI1MzAiLz48d3ggdz0iNDAwIi8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2MzciLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2NjgiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSIxMDAwIi8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjg0Ii8+PHd4IHc9Ijc4NyIvPjx3eCB3PSIxMDY5Ii8+PHd4IHc9IjEwMjIiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjEwMDAiLz48d3ggdz0iNTE4Ii8+PHd4IHc9IjUxOCIvPjx3eCB3PSIzMTciLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI0OTQiLz48d3ggdz0iNTkxIi8+PHd4IHc9IjYxMCIvPjx3eCB3PSIxNjYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjM5OSIvPjx3eCB3PSIzOTkiLz48d3ggdz0iNjI5Ii8+PHd4IHc9IjYyOSIvPjx3eCB3PSI1MDAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjMxNyIvPjx3eCB3PSI1MTgiLz48d3ggdz0iMTM0MSIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjMxIi8+PHd4IHc9IjY4NCIvPjx3eCB3PSI2MzEiLz48d3ggdz0iNjMxIi8+PHd4IHc9IjI5NCIvPjx3eCB3PSIyOTQiLz48d3ggdz0iMjk0Ii8+PHd4IHc9IjI5NCIvPjx3eCB3PSI3ODciLz48d3ggdz0iNzg3Ii8+PHd4IHc9Ijc4NyIvPjx3eCB3PSI3MzEiLz48d3ggdz0iNzMxIi8+PHd4IHc9IjczMSIvPjx3eCB3PSIyNzciLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjU2MiIvPjx3eCB3PSIyODQiLz48d3ggdz0iNjM0Ii8+PHd4IHc9IjUyMCIvPjx3eCB3PSI2ODUiLz48d3ggdz0iNTI0Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI3NzQiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMCIvPjx3eCB3PSI1OTEiLz48d3ggdz0iNjA0Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSI4MzciLz48d3ggdz0iODM3Ii8+PHd4IHc9IjQwMCIvPjx3eCB3PSI0MDAiLz48d3ggdz0iNDAwIi8+PHd4IHc9Ijk2OSIvPjx3eCB3PSI5NjkiLz48d3ggdz0iOTY5Ii8+PHd4IHc9Ijc3NCIvPjx3eCB3PSI2MzQiLz48d3ggdz0iMjk0Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSI1MjAiLz48d3ggdz0iNjk4Ii8+PHd4IHc9IjU0OSIvPjx3eCB3PSI2OTgiLz48d3ggdz0iNTQ5Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSIzNjAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI0MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjwvY2lkLXdpZHRocz48L211bHRpYnl0ZS1leHRyYXM+PGtlcm5pbmcga3B4MT0iMjQ2Ij48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIzNSI+PHBhaXIga2Vybj0iLTE0MiIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNDYiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNDMiPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTYiPjxwYWlyIGtlcm49IjM2IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTE4IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTExOCIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSIzNiIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iMzYiIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTExOCIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSI1NSIga3B4Mj0iNDUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMjYiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjM3Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTEyIj48cGFpciBrZXJuPSItMTciIGtweDI9IjkxIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjEyMyI+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjkxIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjUxIj48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIxMyI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjYxIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIwOCI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE4NyI+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI2Ii8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0xMTgiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTEwOSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMTE0IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iNjgiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1MCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMDMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDgiLz48cGFpciBrZXJuPSItNzciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI3NiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTIwMiIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTE0IiBrcHgyPSIxMjgiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMTMiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTQ0Ij48cGFpciBrZXJuPSItNDAiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTkiPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1MCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMTUiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNzMiPjxwYWlyIGtlcm49IjMxIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTE0IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI0MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU0Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iODUiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI2OCIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTYwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xODMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI0OSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMjQiPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI5MSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTgxIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE2OSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOSIvPjxwYWlyIGtlcm49IjczIiBrcHgyPSIxNDQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQ1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyMzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjAxIj48cGFpciBrZXJuPSItMTciIGtweDI9IjI0NiIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iMjciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTEyMyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNjAiPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0yMDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDkiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iODUiPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMjU0Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4MCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjI1MiIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iNzAiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjExMSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgxIi8+PHBhaXIga2Vybj0iNDEiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTUxIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijc0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4NCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI2MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMzQiPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0yMDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDkiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTAwIj48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjEyMiI+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjkxIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNDciPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI2Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEwNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjIxMyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMjAyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iMjIiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIyMTEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMDkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49IjIyIiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0yNjIiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iMjIiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMjEyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTEwOSIga3B4Mj0iNTciLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI1NiIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMTAiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1OCI+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iODUiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMzUiIGtweDI9Ijg4Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjEwOCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMjEiIGtweDI9Ijc2Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyOCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxMDkiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjkyIi8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjExMCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTc0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjgyIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxODYiPjxwYWlyIGtlcm49Ii0xNDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTQ2IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE3NSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIwOSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjEwMyI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjgxIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iOTgiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjQ2Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjU4Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDMiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTIzIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzEiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49IjIyIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTgiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMTIiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjI5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI2MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMjkiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMzgiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTIxIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1NyI+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTg2IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTA2Ii8+PHBhaXIga2Vybj0iLTgxIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNjgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMzciPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjI3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDkiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTIwIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjQ5Ij48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9Ijk4Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIyNyI+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSI5OCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODYiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEwOCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgxIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI3NiIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTU1IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xNjAiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjgiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjAiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTA0Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNzIiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTk5Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjI0NiIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iMjciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTEyMyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTQiPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iOTgiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTgwIj48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjQ2Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0MyIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0xODgiIGtweDI9IjE0NCIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iNTkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjczIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0MSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI4NSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0NyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjEwIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjM3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMjAiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjUxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI1MyIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTM3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMzMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIzOSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMjM2Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0NSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0NiIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1MyI+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMDciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMjkiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI2OCIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItNDAiIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTI2Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMjgiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTA5Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMTAiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMzciPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMzMiPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyNTMiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjExIj48cGFpciBrZXJuPSItMTciIGtweDI9IjIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNzgiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMzAiIGtweDI9Ijg4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjUyIj48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTI1Ij48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI0MiI+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI1NSIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxNzAiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjEwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQ1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjkyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODkiLz48cGFpciBrZXJuPSItODYiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIzNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTc0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjExNSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI5MCI+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTEwNCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjM2Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjI0NiIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iMjciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTEyMyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTUiPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xNTUiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9Ijg2Ii8+PHBhaXIga2Vybj0iLTE1MSIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTE2OSIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSI3MCIvPjxwYWlyIGtlcm49Ii0xNDYiIGtweDI9Ijg1Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMTA5IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE2OSIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE2NSIga3B4Mj0iNjgiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0xNTUiIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9IjI1MCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xMTgiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9IjIyOCIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjI1NCIvPjxwYWlyIGtlcm49Ii0xNTEiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTE1MSIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSI5MCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE2OSIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTE1MSIga3B4Mj0iMTI3Ii8+PHBhaXIga2Vybj0iLTE2NSIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI3NiIvPjxwYWlyIGtlcm49Ii0xNTEiIGtweDI9IjEyOCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTE2NSIga3B4Mj0iMTA5Ii8+PHBhaXIga2Vybj0iLTE1NSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSIxMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMTQiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTAiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI5MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTE1Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjM5Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMjYiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMzYiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyOSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI0NSI+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE3MyI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjczIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjEwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0xMjMiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjU0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI1MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI0MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSI5MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTExIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI1NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI1MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjkyIi8+PHBhaXIga2Vybj0iMjIiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iODkiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTc0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE5NyI+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNDMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTE4MyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTQ0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjQxIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItMzUiIGtweDI9Ijg1Ii8+PHBhaXIga2Vybj0iLTE4MyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTE4MyIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMDAiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNDciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTIzIiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI4MSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii0xODMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIzNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI1MSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjUzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMzciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1MiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI0MiIvPjxwYWlyIGtlcm49Ii05NSIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSI1NSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjM5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMzYiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iNDUiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI0NiIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iOTIiPjxwYWlyIGtlcm49Ii0xNDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTQ2IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9Ijg5Ij48cGFpciBrZXJuPSItNzciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMjYiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNDYiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItMTA0IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMjEzIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjkiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjU4Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIyMTIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMTA0Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIyMTEiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwOCIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSI1NiIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxNzQiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjQ2Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjU4Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDMiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTIzIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzEiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49IjIyIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTgiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1NiI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjYxIi8+PC9rZXJuaW5nPjwvZm9udC1tZXRyaWNzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvVmVyYU1vQmQueG1sIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9WZXJhTW9CZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIzMzEwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvVmVyYU1vQmQueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGZvbnQtbWV0cmljcyBtZXRyaWNzLXZlcnNpb249IjIiIHR5cGU9IlRZUEUwIj48Zm9udC1uYW1lPkJpdHN0cmVhbVZlcmFTYW5zTW9uby1Cb2xkPC9mb250LW5hbWU+PGZ1bGwtbmFtZT5CaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8gQm9sZDwvZnVsbC1uYW1lPjxmYW1pbHktbmFtZT5CaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm88L2ZhbWlseS1uYW1lPjxlbWJlZC8+PGNhcC1oZWlnaHQ+NzI5PC9jYXAtaGVpZ2h0Pjx4LWhlaWdodD41NDY8L3gtaGVpZ2h0Pjxhc2NlbmRlcj43NTk8L2FzY2VuZGVyPjxkZXNjZW5kZXI+LTI0MDwvZGVzY2VuZGVyPjxiYm94PjxsZWZ0Pi0xOTwvbGVmdD48Ym90dG9tPi0yMzU8L2JvdHRvbT48cmlnaHQ+NjA1PC9yaWdodD48dG9wPjkyODwvdG9wPjwvYmJveD48ZmxhZ3M+MzQ8L2ZsYWdzPjxzdGVtdj4wPC9zdGVtdj48aXRhbGljYW5nbGU+MDwvaXRhbGljYW5nbGU+PHN1YnR5cGU+VFlQRTA8L3N1YnR5cGU+PG11bHRpYnl0ZS1leHRyYXM+PGNpZC10eXBlPkNJREZvbnRUeXBlMjwvY2lkLXR5cGU+PGRlZmF1bHQtd2lkdGg+MDwvZGVmYXVsdC13aWR0aD48YmZyYW5nZXM+PGJmIGdpPSIzIiB1ZT0iMTI2IiB1cz0iMzIiLz48YmYgZ2k9IjE3MiIgdWU9IjE2MCIgdXM9IjE2MCIvPjxiZiBnaT0iMTYzIiB1ZT0iMTYxIiB1cz0iMTYxIi8+PGJmIGdpPSIxMzIiIHVlPSIxNjMiIHVzPSIxNjIiLz48YmYgZ2k9IjE4OSIgdWU9IjE2NCIgdXM9IjE2NCIvPjxiZiBnaT0iMTUwIiB1ZT0iMTY1IiB1cz0iMTY1Ii8+PGJmIGdpPSIyMzEiIHVlPSIxNjYiIHVzPSIxNjYiLz48YmYgZ2k9IjEzNCIgdWU9IjE2NyIgdXM9IjE2NyIvPjxiZiBnaT0iMTQyIiB1ZT0iMTY4IiB1cz0iMTY4Ii8+PGJmIGdpPSIxMzkiIHVlPSIxNjkiIHVzPSIxNjkiLz48YmYgZ2k9IjE1NyIgdWU9IjE3MCIgdXM9IjE3MCIvPjxiZiBnaT0iMTY5IiB1ZT0iMTcxIiB1cz0iMTcxIi8+PGJmIGdpPSIxNjQiIHVlPSIxNzIiIHVzPSIxNzIiLz48YmYgZ2k9IjI1NiIgdWU9IjE3MyIgdXM9IjE3MyIvPjxiZiBnaT0iMTM4IiB1ZT0iMTc0IiB1cz0iMTc0Ii8+PGJmIGdpPSIyMTciIHVlPSIxNzUiIHVzPSIxNzUiLz48YmYgZ2k9IjEzMSIgdWU9IjE3NiIgdXM9IjE3NiIvPjxiZiBnaT0iMTQ3IiB1ZT0iMTc3IiB1cz0iMTc3Ii8+PGJmIGdpPSIyNDEiIHVlPSIxNzkiIHVzPSIxNzgiLz48YmYgZ2k9IjE0MSIgdWU9IjE4MCIgdXM9IjE4MCIvPjxiZiBnaT0iMTUxIiB1ZT0iMTgxIiB1cz0iMTgxIi8+PGJmIGdpPSIxMzYiIHVlPSIxODIiIHVzPSIxODIiLz48YmYgZ2k9IjE5NSIgdWU9IjE4MyIgdXM9IjE4MyIvPjxiZiBnaT0iMjIxIiB1ZT0iMTg0IiB1cz0iMTg0Ii8+PGJmIGdpPSIyNDAiIHVlPSIxODUiIHVzPSIxODUiLz48YmYgZ2k9IjE1OCIgdWU9IjE4NiIgdXM9IjE4NiIvPjxiZiBnaT0iMTcwIiB1ZT0iMTg3IiB1cz0iMTg3Ii8+PGJmIGdpPSIyNDMiIHVlPSIxOTAiIHVzPSIxODgiLz48YmYgZ2k9IjE2MiIgdWU9IjE5MSIgdXM9IjE5MSIvPjxiZiBnaT0iMTczIiB1ZT0iMTkyIiB1cz0iMTkyIi8+PGJmIGdpPSIyMDEiIHVlPSIxOTMiIHVzPSIxOTMiLz48YmYgZ2k9IjE5OSIgdWU9IjE5NCIgdXM9IjE5NCIvPjxiZiBnaT0iMTc0IiB1ZT0iMTk1IiB1cz0iMTk1Ii8+PGJmIGdpPSI5OCIgdWU9IjE5NyIgdXM9IjE5NiIvPjxiZiBnaT0iMTQ0IiB1ZT0iMTk4IiB1cz0iMTk4Ii8+PGJmIGdpPSIxMDAiIHVlPSIxOTkiIHVzPSIxOTkiLz48YmYgZ2k9IjIwMyIgdWU9IjIwMCIgdXM9IjIwMCIvPjxiZiBnaT0iMTAxIiB1ZT0iMjAxIiB1cz0iMjAxIi8+PGJmIGdpPSIyMDAiIHVlPSIyMDIiIHVzPSIyMDIiLz48YmYgZ2k9IjIwMiIgdWU9IjIwMyIgdXM9IjIwMyIvPjxiZiBnaT0iMjA3IiB1ZT0iMjA0IiB1cz0iMjA0Ii8+PGJmIGdpPSIyMDQiIHVlPSIyMDciIHVzPSIyMDUiLz48YmYgZ2k9IjIzMiIgdWU9IjIwOCIgdXM9IjIwOCIvPjxiZiBnaT0iMTAyIiB1ZT0iMjA5IiB1cz0iMjA5Ii8+PGJmIGdpPSIyMTAiIHVlPSIyMTAiIHVzPSIyMTAiLz48YmYgZ2k9IjIwOCIgdWU9IjIxMiIgdXM9IjIxMSIvPjxiZiBnaT0iMTc1IiB1ZT0iMjEzIiB1cz0iMjEzIi8+PGJmIGdpPSIxMDMiIHVlPSIyMTQiIHVzPSIyMTQiLz48YmYgZ2k9IjIzOSIgdWU9IjIxNSIgdXM9IjIxNSIvPjxiZiBnaT0iMTQ1IiB1ZT0iMjE2IiB1cz0iMjE2Ii8+PGJmIGdpPSIyMTMiIHVlPSIyMTciIHVzPSIyMTciLz48YmYgZ2k9IjIxMSIgdWU9IjIxOSIgdXM9IjIxOCIvPjxiZiBnaT0iMTA0IiB1ZT0iMjIwIiB1cz0iMjIwIi8+PGJmIGdpPSIyMzQiIHVlPSIyMjEiIHVzPSIyMjEiLz48YmYgZ2k9IjIzNiIgdWU9IjIyMiIgdXM9IjIyMiIvPjxiZiBnaT0iMTM3IiB1ZT0iMjIzIiB1cz0iMjIzIi8+PGJmIGdpPSIxMDYiIHVlPSIyMjQiIHVzPSIyMjQiLz48YmYgZ2k9IjEwNSIgdWU9IjIyNSIgdXM9IjIyNSIvPjxiZiBnaT0iMTA3IiB1ZT0iMjI2IiB1cz0iMjI2Ii8+PGJmIGdpPSIxMDkiIHVlPSIyMjciIHVzPSIyMjciLz48YmYgZ2k9IjEwOCIgdWU9IjIyOCIgdXM9IjIyOCIvPjxiZiBnaT0iMTEwIiB1ZT0iMjI5IiB1cz0iMjI5Ii8+PGJmIGdpPSIxNjAiIHVlPSIyMzAiIHVzPSIyMzAiLz48YmYgZ2k9IjExMSIgdWU9IjIzMSIgdXM9IjIzMSIvPjxiZiBnaT0iMTEzIiB1ZT0iMjMyIiB1cz0iMjMyIi8+PGJmIGdpPSIxMTIiIHVlPSIyMzMiIHVzPSIyMzMiLz48YmYgZ2k9IjExNCIgdWU9IjIzNSIgdXM9IjIzNCIvPjxiZiBnaT0iMTE3IiB1ZT0iMjM2IiB1cz0iMjM2Ii8+PGJmIGdpPSIxMTYiIHVlPSIyMzciIHVzPSIyMzciLz48YmYgZ2k9IjExOCIgdWU9IjIzOSIgdXM9IjIzOCIvPjxiZiBnaT0iMjMzIiB1ZT0iMjQwIiB1cz0iMjQwIi8+PGJmIGdpPSIxMjAiIHVlPSIyNDEiIHVzPSIyNDEiLz48YmYgZ2k9IjEyMiIgdWU9IjI0MiIgdXM9IjI0MiIvPjxiZiBnaT0iMTIxIiB1ZT0iMjQzIiB1cz0iMjQzIi8+PGJmIGdpPSIxMjMiIHVlPSIyNDQiIHVzPSIyNDQiLz48YmYgZ2k9IjEyNSIgdWU9IjI0NSIgdXM9IjI0NSIvPjxiZiBnaT0iMTI0IiB1ZT0iMjQ2IiB1cz0iMjQ2Ii8+PGJmIGdpPSIxODQiIHVlPSIyNDciIHVzPSIyNDciLz48YmYgZ2k9IjE2MSIgdWU9IjI0OCIgdXM9IjI0OCIvPjxiZiBnaT0iMTI3IiB1ZT0iMjQ5IiB1cz0iMjQ5Ii8+PGJmIGdpPSIxMjYiIHVlPSIyNTAiIHVzPSIyNTAiLz48YmYgZ2k9IjEyOCIgdWU9IjI1MiIgdXM9IjI1MSIvPjxiZiBnaT0iMjM1IiB1ZT0iMjUzIiB1cz0iMjUzIi8+PGJmIGdpPSIyMzciIHVlPSIyNTQiIHVzPSIyNTQiLz48YmYgZ2k9IjE4NiIgdWU9IjI1NSIgdXM9IjI1NSIvPjxiZiBnaT0iMjUxIiB1ZT0iMjYzIiB1cz0iMjYyIi8+PGJmIGdpPSIyNTMiIHVlPSIyNjkiIHVzPSIyNjgiLz48YmYgZ2k9IjAiIHVlPSIyNzAiIHVzPSIyNzAiLz48YmYgZ2k9IjAiIHVlPSIyNzEiIHVzPSIyNzEiLz48YmYgZ2k9IjAiIHVlPSIyNzIiIHVzPSIyNzIiLz48YmYgZ2k9IjI1NSIgdWU9IjI3MyIgdXM9IjI3MyIvPjxiZiBnaT0iMjQ2IiB1ZT0iMjg3IiB1cz0iMjg2Ii8+PGJmIGdpPSIyNDgiIHVlPSIzMDQiIHVzPSIzMDQiLz48YmYgZ2k9IjIxNCIgdWU9IjMwNSIgdXM9IjMwNSIvPjxiZiBnaT0iMjI1IiB1ZT0iMzIyIiB1cz0iMzIxIi8+PGJmIGdpPSIxNzYiIHVlPSIzMzkiIHVzPSIzMzgiLz48YmYgZ2k9IjI0OSIgdWU9IjM1MSIgdXM9IjM1MCIvPjxiZiBnaT0iMjI3IiB1ZT0iMzUzIiB1cz0iMzUyIi8+PGJmIGdpPSIxODciIHVlPSIzNzYiIHVzPSIzNzYiLz48YmYgZ2k9IjIyOSIgdWU9IjM4MiIgdXM9IjM4MSIvPjxiZiBnaT0iMTY2IiB1ZT0iNDAyIiB1cz0iNDAyIi8+PGJmIGdpPSIyMTUiIHVlPSI3MTAiIHVzPSI3MTAiLz48YmYgZ2k9IjIyNCIgdWU9IjcxMSIgdXM9IjcxMSIvPjxiZiBnaT0iMjE4IiB1ZT0iNzMwIiB1cz0iNzI4Ii8+PGJmIGdpPSIyMjMiIHVlPSI3MzEiIHVzPSI3MzEiLz48YmYgZ2k9IjIxNiIgdWU9IjczMiIgdXM9IjczMiIvPjxiZiBnaT0iMjIyIiB1ZT0iNzMzIiB1cz0iNzMzIi8+PGJmIGdpPSIxNTkiIHVlPSI5MzciIHVzPSI5MzciLz48YmYgZ2k9IjE1NSIgdWU9Ijk2MCIgdXM9Ijk2MCIvPjxiZiBnaT0iMTc4IiB1ZT0iODIxMiIgdXM9IjgyMTEiLz48YmYgZ2k9IjAiIHVlPSI4MjEzIiB1cz0iODIxMyIvPjxiZiBnaT0iMCIgdWU9IjgyMTQiIHVzPSI4MjE0Ii8+PGJmIGdpPSIwIiB1ZT0iODIxNSIgdXM9IjgyMTUiLz48YmYgZ2k9IjE4MiIgdWU9IjgyMTciIHVzPSI4MjE2Ii8+PGJmIGdpPSIxOTYiIHVlPSI4MjE4IiB1cz0iODIxOCIvPjxiZiBnaT0iMCIgdWU9IjgyMTkiIHVzPSI4MjE5Ii8+PGJmIGdpPSIxODAiIHVlPSI4MjIxIiB1cz0iODIyMCIvPjxiZiBnaT0iMTk3IiB1ZT0iODIyMiIgdXM9IjgyMjIiLz48YmYgZ2k9IjAiIHVlPSI4MjIzIiB1cz0iODIyMyIvPjxiZiBnaT0iMTMwIiB1ZT0iODIyNCIgdXM9IjgyMjQiLz48YmYgZ2k9IjE5NCIgdWU9IjgyMjUiIHVzPSI4MjI1Ii8+PGJmIGdpPSIxMzUiIHVlPSI4MjI2IiB1cz0iODIyNiIvPjxiZiBnaT0iMCIgdWU9IjgyMjciIHVzPSI4MjI3Ii8+PGJmIGdpPSIwIiB1ZT0iODIyOCIgdXM9IjgyMjgiLz48YmYgZ2k9IjAiIHVlPSI4MjI5IiB1cz0iODIyOSIvPjxiZiBnaT0iMTcxIiB1ZT0iODIzMCIgdXM9IjgyMzAiLz48YmYgZ2k9IjE5OCIgdWU9IjgyNDAiIHVzPSI4MjQwIi8+PGJmIGdpPSIxOTAiIHVlPSI4MjUwIiB1cz0iODI0OSIvPjxiZiBnaT0iMjU4IiB1ZT0iODM2NCIgdXM9IjgzNjQiLz48YmYgZ2k9IjE0MCIgdWU9Ijg0ODIiIHVzPSI4NDgyIi8+PGJmIGdpPSIxNTIiIHVlPSI4NzA2IiB1cz0iODcwNiIvPjxiZiBnaT0iMCIgdWU9Ijg3MDciIHVzPSI4NzA3Ii8+PGJmIGdpPSIwIiB1ZT0iODcwOCIgdXM9Ijg3MDgiLz48YmYgZ2k9IjAiIHVlPSI4NzA5IiB1cz0iODcwOSIvPjxiZiBnaT0iMTY4IiB1ZT0iODcxMCIgdXM9Ijg3MTAiLz48YmYgZ2k9IjE1NCIgdWU9Ijg3MTkiIHVzPSI4NzE5Ii8+PGJmIGdpPSIwIiB1ZT0iODcyMCIgdXM9Ijg3MjAiLz48YmYgZ2k9IjE1MyIgdWU9Ijg3MjEiIHVzPSI4NzIxIi8+PGJmIGdpPSIyMzgiIHVlPSI4NzIyIiB1cz0iODcyMiIvPjxiZiBnaT0iMCIgdWU9Ijg3MjMiIHVzPSI4NzIzIi8+PGJmIGdpPSIwIiB1ZT0iODcyNCIgdXM9Ijg3MjQiLz48YmYgZ2k9IjE4OCIgdWU9Ijg3MjUiIHVzPSI4NzI1Ii8+PGJmIGdpPSIwIiB1ZT0iODcyNiIgdXM9Ijg3MjYiLz48YmYgZ2k9IjAiIHVlPSI4NzI3IiB1cz0iODcyNyIvPjxiZiBnaT0iMCIgdWU9Ijg3MjgiIHVzPSI4NzI4Ii8+PGJmIGdpPSIyNTciIHVlPSI4NzI5IiB1cz0iODcyOSIvPjxiZiBnaT0iMTY1IiB1ZT0iODczMCIgdXM9Ijg3MzAiLz48YmYgZ2k9IjAiIHVlPSI4NzMxIiB1cz0iODczMSIvPjxiZiBnaT0iMCIgdWU9Ijg3MzIiIHVzPSI4NzMyIi8+PGJmIGdpPSIwIiB1ZT0iODczMyIgdXM9Ijg3MzMiLz48YmYgZ2k9IjE0NiIgdWU9Ijg3MzQiIHVzPSI4NzM0Ii8+PGJmIGdpPSIxNTYiIHVlPSI4NzQ3IiB1cz0iODc0NyIvPjxiZiBnaT0iMTY3IiB1ZT0iODc3NiIgdXM9Ijg3NzYiLz48YmYgZ2k9IjE0MyIgdWU9Ijg4MDAiIHVzPSI4ODAwIi8+PGJmIGdpPSIwIiB1ZT0iODgwMSIgdXM9Ijg4MDEiLz48YmYgZ2k9IjAiIHVlPSI4ODAyIiB1cz0iODgwMiIvPjxiZiBnaT0iMCIgdWU9Ijg4MDMiIHVzPSI4ODAzIi8+PGJmIGdpPSIxNDgiIHVlPSI4ODA1IiB1cz0iODgwNCIvPjxiZiBnaT0iMTg1IiB1ZT0iOTY3NCIgdXM9Ijk2NzQiLz48YmYgZ2k9IjE5MiIgdWU9IjY0MjU4IiB1cz0iNjQyNTciLz48YmYgZ2k9IjAiIHVlPSI2NTUzNSIgdXM9IjY1NTM1Ii8+PC9iZnJhbmdlcz48Y2lkLXdpZHRocyBzdGFydC1pbmRleD0iMCI+PHd4IHc9IjYwMiIvPjx3eCB3PSIwIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PC9jaWQtd2lkdGhzPjwvbXVsdGlieXRlLWV4dHJhcz48L2ZvbnQtbWV0cmljcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL1ZlcmFNb25vLnhtbCBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvVmVyYU1vbm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMGE4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL1ZlcmFNb25vLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pjxmb250LW1ldHJpY3MgbWV0cmljcy12ZXJzaW9uPSIyIiB0eXBlPSJUWVBFMCI+PGZvbnQtbmFtZT5CaXRzdHJlYW1WZXJhU2Fuc01vbm8tUm9tYW48L2ZvbnQtbmFtZT48ZnVsbC1uYW1lPkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubzwvZnVsbC1uYW1lPjxmYW1pbHktbmFtZT5CaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm88L2ZhbWlseS1uYW1lPjxlbWJlZC8+PGNhcC1oZWlnaHQ+NzI5PC9jYXAtaGVpZ2h0Pjx4LWhlaWdodD41NDY8L3gtaGVpZ2h0Pjxhc2NlbmRlcj43NTk8L2FzY2VuZGVyPjxkZXNjZW5kZXI+LTI0MDwvZGVzY2VuZGVyPjxiYm94PjxsZWZ0Pi00PC9sZWZ0Pjxib3R0b20+LTIzNTwvYm90dG9tPjxyaWdodD42MDU8L3JpZ2h0Pjx0b3A+OTI4PC90b3A+PC9iYm94PjxmbGFncz4zNDwvZmxhZ3M+PHN0ZW12PjA8L3N0ZW12PjxpdGFsaWNhbmdsZT4wPC9pdGFsaWNhbmdsZT48c3VidHlwZT5UWVBFMDwvc3VidHlwZT48bXVsdGlieXRlLWV4dHJhcz48Y2lkLXR5cGU+Q0lERm9udFR5cGUyPC9jaWQtdHlwZT48ZGVmYXVsdC13aWR0aD4wPC9kZWZhdWx0LXdpZHRoPjxiZnJhbmdlcz48YmYgZ2k9IjMiIHVlPSIxMjYiIHVzPSIzMiIvPjxiZiBnaT0iMTcyIiB1ZT0iMTYwIiB1cz0iMTYwIi8+PGJmIGdpPSIxNjMiIHVlPSIxNjEiIHVzPSIxNjEiLz48YmYgZ2k9IjEzMiIgdWU9IjE2MyIgdXM9IjE2MiIvPjxiZiBnaT0iMTg5IiB1ZT0iMTY0IiB1cz0iMTY0Ii8+PGJmIGdpPSIxNTAiIHVlPSIxNjUiIHVzPSIxNjUiLz48YmYgZ2k9IjIzMSIgdWU9IjE2NiIgdXM9IjE2NiIvPjxiZiBnaT0iMTM0IiB1ZT0iMTY3IiB1cz0iMTY3Ii8+PGJmIGdpPSIxNDIiIHVlPSIxNjgiIHVzPSIxNjgiLz48YmYgZ2k9IjEzOSIgdWU9IjE2OSIgdXM9IjE2OSIvPjxiZiBnaT0iMTU3IiB1ZT0iMTcwIiB1cz0iMTcwIi8+PGJmIGdpPSIxNjkiIHVlPSIxNzEiIHVzPSIxNzEiLz48YmYgZ2k9IjE2NCIgdWU9IjE3MiIgdXM9IjE3MiIvPjxiZiBnaT0iMjU2IiB1ZT0iMTczIiB1cz0iMTczIi8+PGJmIGdpPSIxMzgiIHVlPSIxNzQiIHVzPSIxNzQiLz48YmYgZ2k9IjIxNyIgdWU9IjE3NSIgdXM9IjE3NSIvPjxiZiBnaT0iMTMxIiB1ZT0iMTc2IiB1cz0iMTc2Ii8+PGJmIGdpPSIxNDciIHVlPSIxNzciIHVzPSIxNzciLz48YmYgZ2k9IjI0MSIgdWU9IjE3OSIgdXM9IjE3OCIvPjxiZiBnaT0iMTQxIiB1ZT0iMTgwIiB1cz0iMTgwIi8+PGJmIGdpPSIxNTEiIHVlPSIxODEiIHVzPSIxODEiLz48YmYgZ2k9IjEzNiIgdWU9IjE4MiIgdXM9IjE4MiIvPjxiZiBnaT0iMTk1IiB1ZT0iMTgzIiB1cz0iMTgzIi8+PGJmIGdpPSIyMjEiIHVlPSIxODQiIHVzPSIxODQiLz48YmYgZ2k9IjI0MCIgdWU9IjE4NSIgdXM9IjE4NSIvPjxiZiBnaT0iMTU4IiB1ZT0iMTg2IiB1cz0iMTg2Ii8+PGJmIGdpPSIxNzAiIHVlPSIxODciIHVzPSIxODciLz48YmYgZ2k9IjI0MyIgdWU9IjE5MCIgdXM9IjE4OCIvPjxiZiBnaT0iMTYyIiB1ZT0iMTkxIiB1cz0iMTkxIi8+PGJmIGdpPSIxNzMiIHVlPSIxOTIiIHVzPSIxOTIiLz48YmYgZ2k9IjIwMSIgdWU9IjE5MyIgdXM9IjE5MyIvPjxiZiBnaT0iMTk5IiB1ZT0iMTk0IiB1cz0iMTk0Ii8+PGJmIGdpPSIxNzQiIHVlPSIxOTUiIHVzPSIxOTUiLz48YmYgZ2k9Ijk4IiB1ZT0iMTk3IiB1cz0iMTk2Ii8+PGJmIGdpPSIxNDQiIHVlPSIxOTgiIHVzPSIxOTgiLz48YmYgZ2k9IjEwMCIgdWU9IjE5OSIgdXM9IjE5OSIvPjxiZiBnaT0iMjAzIiB1ZT0iMjAwIiB1cz0iMjAwIi8+PGJmIGdpPSIxMDEiIHVlPSIyMDEiIHVzPSIyMDEiLz48YmYgZ2k9IjIwMCIgdWU9IjIwMiIgdXM9IjIwMiIvPjxiZiBnaT0iMjAyIiB1ZT0iMjAzIiB1cz0iMjAzIi8+PGJmIGdpPSIyMDciIHVlPSIyMDQiIHVzPSIyMDQiLz48YmYgZ2k9IjIwNCIgdWU9IjIwNyIgdXM9IjIwNSIvPjxiZiBnaT0iMjMyIiB1ZT0iMjA4IiB1cz0iMjA4Ii8+PGJmIGdpPSIxMDIiIHVlPSIyMDkiIHVzPSIyMDkiLz48YmYgZ2k9IjIxMCIgdWU9IjIxMCIgdXM9IjIxMCIvPjxiZiBnaT0iMjA4IiB1ZT0iMjEyIiB1cz0iMjExIi8+PGJmIGdpPSIxNzUiIHVlPSIyMTMiIHVzPSIyMTMiLz48YmYgZ2k9IjEwMyIgdWU9IjIxNCIgdXM9IjIxNCIvPjxiZiBnaT0iMjM5IiB1ZT0iMjE1IiB1cz0iMjE1Ii8+PGJmIGdpPSIxNDUiIHVlPSIyMTYiIHVzPSIyMTYiLz48YmYgZ2k9IjIxMyIgdWU9IjIxNyIgdXM9IjIxNyIvPjxiZiBnaT0iMjExIiB1ZT0iMjE5IiB1cz0iMjE4Ii8+PGJmIGdpPSIxMDQiIHVlPSIyMjAiIHVzPSIyMjAiLz48YmYgZ2k9IjIzNCIgdWU9IjIyMSIgdXM9IjIyMSIvPjxiZiBnaT0iMjM2IiB1ZT0iMjIyIiB1cz0iMjIyIi8+PGJmIGdpPSIxMzciIHVlPSIyMjMiIHVzPSIyMjMiLz48YmYgZ2k9IjEwNiIgdWU9IjIyNCIgdXM9IjIyNCIvPjxiZiBnaT0iMTA1IiB1ZT0iMjI1IiB1cz0iMjI1Ii8+PGJmIGdpPSIxMDciIHVlPSIyMjYiIHVzPSIyMjYiLz48YmYgZ2k9IjEwOSIgdWU9IjIyNyIgdXM9IjIyNyIvPjxiZiBnaT0iMTA4IiB1ZT0iMjI4IiB1cz0iMjI4Ii8+PGJmIGdpPSIxMTAiIHVlPSIyMjkiIHVzPSIyMjkiLz48YmYgZ2k9IjE2MCIgdWU9IjIzMCIgdXM9IjIzMCIvPjxiZiBnaT0iMTExIiB1ZT0iMjMxIiB1cz0iMjMxIi8+PGJmIGdpPSIxMTMiIHVlPSIyMzIiIHVzPSIyMzIiLz48YmYgZ2k9IjExMiIgdWU9IjIzMyIgdXM9IjIzMyIvPjxiZiBnaT0iMTE0IiB1ZT0iMjM1IiB1cz0iMjM0Ii8+PGJmIGdpPSIxMTciIHVlPSIyMzYiIHVzPSIyMzYiLz48YmYgZ2k9IjExNiIgdWU9IjIzNyIgdXM9IjIzNyIvPjxiZiBnaT0iMTE4IiB1ZT0iMjM5IiB1cz0iMjM4Ii8+PGJmIGdpPSIyMzMiIHVlPSIyNDAiIHVzPSIyNDAiLz48YmYgZ2k9IjEyMCIgdWU9IjI0MSIgdXM9IjI0MSIvPjxiZiBnaT0iMTIyIiB1ZT0iMjQyIiB1cz0iMjQyIi8+PGJmIGdpPSIxMjEiIHVlPSIyNDMiIHVzPSIyNDMiLz48YmYgZ2k9IjEyMyIgdWU9IjI0NCIgdXM9IjI0NCIvPjxiZiBnaT0iMTI1IiB1ZT0iMjQ1IiB1cz0iMjQ1Ii8+PGJmIGdpPSIxMjQiIHVlPSIyNDYiIHVzPSIyNDYiLz48YmYgZ2k9IjE4NCIgdWU9IjI0NyIgdXM9IjI0NyIvPjxiZiBnaT0iMTYxIiB1ZT0iMjQ4IiB1cz0iMjQ4Ii8+PGJmIGdpPSIxMjciIHVlPSIyNDkiIHVzPSIyNDkiLz48YmYgZ2k9IjEyNiIgdWU9IjI1MCIgdXM9IjI1MCIvPjxiZiBnaT0iMTI4IiB1ZT0iMjUyIiB1cz0iMjUxIi8+PGJmIGdpPSIyMzUiIHVlPSIyNTMiIHVzPSIyNTMiLz48YmYgZ2k9IjIzNyIgdWU9IjI1NCIgdXM9IjI1NCIvPjxiZiBnaT0iMTg2IiB1ZT0iMjU1IiB1cz0iMjU1Ii8+PGJmIGdpPSIyNTEiIHVlPSIyNjMiIHVzPSIyNjIiLz48YmYgZ2k9IjI1MyIgdWU9IjI2OSIgdXM9IjI2OCIvPjxiZiBnaT0iMCIgdWU9IjI3MCIgdXM9IjI3MCIvPjxiZiBnaT0iMCIgdWU9IjI3MSIgdXM9IjI3MSIvPjxiZiBnaT0iMCIgdWU9IjI3MiIgdXM9IjI3MiIvPjxiZiBnaT0iMjU1IiB1ZT0iMjczIiB1cz0iMjczIi8+PGJmIGdpPSIyNDYiIHVlPSIyODciIHVzPSIyODYiLz48YmYgZ2k9IjI0OCIgdWU9IjMwNCIgdXM9IjMwNCIvPjxiZiBnaT0iMjE0IiB1ZT0iMzA1IiB1cz0iMzA1Ii8+PGJmIGdpPSIyMjUiIHVlPSIzMjIiIHVzPSIzMjEiLz48YmYgZ2k9IjE3NiIgdWU9IjMzOSIgdXM9IjMzOCIvPjxiZiBnaT0iMjQ5IiB1ZT0iMzUxIiB1cz0iMzUwIi8+PGJmIGdpPSIyMjciIHVlPSIzNTMiIHVzPSIzNTIiLz48YmYgZ2k9IjE4NyIgdWU9IjM3NiIgdXM9IjM3NiIvPjxiZiBnaT0iMjI5IiB1ZT0iMzgyIiB1cz0iMzgxIi8+PGJmIGdpPSIxNjYiIHVlPSI0MDIiIHVzPSI0MDIiLz48YmYgZ2k9IjIxNSIgdWU9IjcxMCIgdXM9IjcxMCIvPjxiZiBnaT0iMjI0IiB1ZT0iNzExIiB1cz0iNzExIi8+PGJmIGdpPSIyMTgiIHVlPSI3MzAiIHVzPSI3MjgiLz48YmYgZ2k9IjIyMyIgdWU9IjczMSIgdXM9IjczMSIvPjxiZiBnaT0iMjE2IiB1ZT0iNzMyIiB1cz0iNzMyIi8+PGJmIGdpPSIyMjIiIHVlPSI3MzMiIHVzPSI3MzMiLz48YmYgZ2k9IjE1OSIgdWU9IjkzNyIgdXM9IjkzNyIvPjxiZiBnaT0iMTU1IiB1ZT0iOTYwIiB1cz0iOTYwIi8+PGJmIGdpPSIxNzgiIHVlPSI4MjEyIiB1cz0iODIxMSIvPjxiZiBnaT0iMCIgdWU9IjgyMTMiIHVzPSI4MjEzIi8+PGJmIGdpPSIwIiB1ZT0iODIxNCIgdXM9IjgyMTQiLz48YmYgZ2k9IjAiIHVlPSI4MjE1IiB1cz0iODIxNSIvPjxiZiBnaT0iMTgyIiB1ZT0iODIxNyIgdXM9IjgyMTYiLz48YmYgZ2k9IjE5NiIgdWU9IjgyMTgiIHVzPSI4MjE4Ii8+PGJmIGdpPSIwIiB1ZT0iODIxOSIgdXM9IjgyMTkiLz48YmYgZ2k9IjE4MCIgdWU9IjgyMjEiIHVzPSI4MjIwIi8+PGJmIGdpPSIxOTciIHVlPSI4MjIyIiB1cz0iODIyMiIvPjxiZiBnaT0iMCIgdWU9IjgyMjMiIHVzPSI4MjIzIi8+PGJmIGdpPSIxMzAiIHVlPSI4MjI0IiB1cz0iODIyNCIvPjxiZiBnaT0iMTk0IiB1ZT0iODIyNSIgdXM9IjgyMjUiLz48YmYgZ2k9IjEzNSIgdWU9IjgyMjYiIHVzPSI4MjI2Ii8+PGJmIGdpPSIwIiB1ZT0iODIyNyIgdXM9IjgyMjciLz48YmYgZ2k9IjAiIHVlPSI4MjI4IiB1cz0iODIyOCIvPjxiZiBnaT0iMCIgdWU9IjgyMjkiIHVzPSI4MjI5Ii8+PGJmIGdpPSIxNzEiIHVlPSI4MjMwIiB1cz0iODIzMCIvPjxiZiBnaT0iMTk4IiB1ZT0iODI0MCIgdXM9IjgyNDAiLz48YmYgZ2k9IjE5MCIgdWU9IjgyNTAiIHVzPSI4MjQ5Ii8+PGJmIGdpPSIyNTgiIHVlPSI4MzY0IiB1cz0iODM2NCIvPjxiZiBnaT0iMTQwIiB1ZT0iODQ4MiIgdXM9Ijg0ODIiLz48YmYgZ2k9IjE1MiIgdWU9Ijg3MDYiIHVzPSI4NzA2Ii8+PGJmIGdpPSIwIiB1ZT0iODcwNyIgdXM9Ijg3MDciLz48YmYgZ2k9IjAiIHVlPSI4NzA4IiB1cz0iODcwOCIvPjxiZiBnaT0iMCIgdWU9Ijg3MDkiIHVzPSI4NzA5Ii8+PGJmIGdpPSIxNjgiIHVlPSI4NzEwIiB1cz0iODcxMCIvPjxiZiBnaT0iMTU0IiB1ZT0iODcxOSIgdXM9Ijg3MTkiLz48YmYgZ2k9IjAiIHVlPSI4NzIwIiB1cz0iODcyMCIvPjxiZiBnaT0iMTUzIiB1ZT0iODcyMSIgdXM9Ijg3MjEiLz48YmYgZ2k9IjIzOCIgdWU9Ijg3MjIiIHVzPSI4NzIyIi8+PGJmIGdpPSIwIiB1ZT0iODcyMyIgdXM9Ijg3MjMiLz48YmYgZ2k9IjAiIHVlPSI4NzI0IiB1cz0iODcyNCIvPjxiZiBnaT0iMTg4IiB1ZT0iODcyNSIgdXM9Ijg3MjUiLz48YmYgZ2k9IjAiIHVlPSI4NzI2IiB1cz0iODcyNiIvPjxiZiBnaT0iMCIgdWU9Ijg3MjciIHVzPSI4NzI3Ii8+PGJmIGdpPSIwIiB1ZT0iODcyOCIgdXM9Ijg3MjgiLz48YmYgZ2k9IjI1NyIgdWU9Ijg3MjkiIHVzPSI4NzI5Ii8+PGJmIGdpPSIxNjUiIHVlPSI4NzMwIiB1cz0iODczMCIvPjxiZiBnaT0iMCIgdWU9Ijg3MzEiIHVzPSI4NzMxIi8+PGJmIGdpPSIwIiB1ZT0iODczMiIgdXM9Ijg3MzIiLz48YmYgZ2k9IjAiIHVlPSI4NzMzIiB1cz0iODczMyIvPjxiZiBnaT0iMTQ2IiB1ZT0iODczNCIgdXM9Ijg3MzQiLz48YmYgZ2k9IjE1NiIgdWU9Ijg3NDciIHVzPSI4NzQ3Ii8+PGJmIGdpPSIxNjciIHVlPSI4Nzc2IiB1cz0iODc3NiIvPjxiZiBnaT0iMTQzIiB1ZT0iODgwMCIgdXM9Ijg4MDAiLz48YmYgZ2k9IjAiIHVlPSI4ODAxIiB1cz0iODgwMSIvPjxiZiBnaT0iMCIgdWU9Ijg4MDIiIHVzPSI4ODAyIi8+PGJmIGdpPSIwIiB1ZT0iODgwMyIgdXM9Ijg4MDMiLz48YmYgZ2k9IjE0OCIgdWU9Ijg4MDUiIHVzPSI4ODA0Ii8+PGJmIGdpPSIxODUiIHVlPSI5Njc0IiB1cz0iOTY3NCIvPjxiZiBnaT0iMTkyIiB1ZT0iNjQyNTgiIHVzPSI2NDI1NyIvPjxiZiBnaT0iMCIgdWU9IjY1NTM1IiB1cz0iNjU1MzUiLz48L2JmcmFuZ2VzPjxjaWQtd2lkdGhzIHN0YXJ0LWluZGV4PSIwIj48d3ggdz0iNjAyIi8+PHd4IHc9IjAiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48L2NpZC13aWR0aHM+PC9tdWx0aWJ5dGUtZXh0cmFzPjwvZm9udC1tZXRyaWNzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvY29tcG9uZW50LnRpdGxlLnhzbCBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvY29tcG9uZW50LnRpdGxlLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWVmMDQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsCkBAIC0wLDAgKzEsMzkgQEAKKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiCisgIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorICB4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCisgIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJkIj4KKyAgCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0iY29tcG9uZW50LnRpdGxlIj4KKyAgICA8eHNsOnBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iLiIvPgorICAgIAorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0ibGV2ZWwiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJhbmNlc3Rvcjo6ZDpzZWN0aW9uIj4KKyAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoYW5jZXN0b3I6OmQ6c2VjdGlvbikrMSIvPgorICAgICAgICA8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OmQ6c2VjdDUiPjY8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OmQ6c2VjdDQiPjU8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OmQ6c2VjdDMiPjQ8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OmQ6c2VjdDIiPjM8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OmQ6c2VjdDEiPjI8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6ZWxlbWVudCBuYW1lPSJoeyRsZXZlbCsxfSIgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj50aXRsZTwveHNsOmF0dHJpYnV0ZT4KKyAgICAgIDx4c2w6aWYgdGVzdD0iJGdlbmVyYXRlLmlkLmF0dHJpYnV0ZXMgPSAwIj4KKyAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFuY2hvciI+CisgICAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iJG5vZGUiLz4KKyAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0iY29uZGl0aW9uYWwiIHNlbGVjdD0iMCIvPgorICAgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgICAgPC94c2w6aWY+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IiRub2RlIiBtb2RlPSJvYmplY3QudGl0bGUubWFya3VwIj4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImFsbG93LWFuY2hvcnMiIHNlbGVjdD0iMSIvPgorICAgICAgPC94c2w6YXBwbHktdGVtcGxhdGVzPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBlcm1hbGluayI+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9IiRub2RlIi8+CisgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgIDwveHNsOmVsZW1lbnQ+CisgIDwveHNsOnRlbXBsYXRlPgorPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvZGItcGRmLnhzbCBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvZGItcGRmLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGQwNjVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9kYi1wZGYueHNsCkBAIC0wLDAgKzEsNjQgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KKyAgCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC9jdXJyZW50L2ZvL2RvY2Jvb2sueHNsIiAvPgorCisgIDwhLS0gY2hlY2sgcHJvamVjdC1wbGFuLnNoIGZvciBob3cgdGhpcyBpcyBnZW5lcmF0ZWQsIG5lZWRlZCB0byB0d2VhayAKKyAgICAgICB0aGUgY292ZXIgcGFnZSAgICAgCisgICAgLS0+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIvdG1wL3RpdGxlcGFnZS54c2wiLz4gCisKKyAgPCEtLSBUbyBmb3JjZSBhIHBhZ2UgYnJlYWsgaW4gZG9jdW1lbnQsIGkuZSBwZXIgc2VjdGlvbiBhZGQgYSAKKyAgICAgIDw/aGFyZC1wYWdlYnJlYWs/PiB0YWcuCisgIC0tPgorIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InByb2Nlc3NpbmctaW5zdHJ1Y3Rpb24oJ2hhcmQtcGFnZWJyZWFrJykiPgorICAgPGZvOmJsb2NrIGJyZWFrLWJlZm9yZT0ncGFnZScgLz4KKyA8L3hzbDp0ZW1wbGF0ZT4KKworICA8IS0tRml4IGZvciBkZWZ1YWx0IGluZGVudCBnZXR0aW5nIFRPQyBhbGwgd2llcmQuLgorICAgICAgU2VlIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vbWwvZG9jYm9vay1hcHBzLzIwMDUtcTEvbXNnMDA0NTUuaHRtbCAKKyAgICAgIEZJWE1FOiBtdXN0IGJlIGEgYmV0dGVyIGZpeAorICAgIC0tPgorICA8eHNsOnBhcmFtIG5hbWU9ImJvZHkuc3RhcnQuaW5kZW50IiBzZWxlY3Q9IicwJyIvPgorICA8IS0tPHhzbDpwYXJhbSBuYW1lPSJ0aXRsZS5tYXJnaW4ubGVmdCIgc2VsZWN0PSInMCciLz4tLT4KKworICA8IS0tIHN0b3AgbG9uZy1pc2ggaGVhZGVyIHRpdGxlcyBnZXR0aW5nIHdyYXBwZWQgLS0+CisgIDx4c2w6cGFyYW0gbmFtZT0iaGVhZGVyLmNvbHVtbi53aWR0aHMiPjEgMTAgMTwveHNsOnBhcmFtPgorCisgIDwhLS0gY3VzdG9taXNlIGhlYWRlcnMgYW5kIGZvb3RlcnMgYSBsaXR0bGUgLS0+IAorCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0iaGVhZC5zZXAucnVsZSI+CisgICA8eHNsOmlmIHRlc3Q9IiRoZWFkZXIucnVsZSAhPSAwIj4KKyAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyLWJvdHRvbS13aWR0aCI+MC41cHQ8L3hzbDphdHRyaWJ1dGU+CisgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9ImJvcmRlci1ib3R0b20tc3R5bGUiPnNvbGlkPC94c2w6YXR0cmlidXRlPgorICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXItYm90dG9tLWNvbG9yIj4jY2NjY2NjPC94c2w6YXR0cmlidXRlPgorICAgPC94c2w6aWY+CisgIDwveHNsOnRlbXBsYXRlPgorCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0iZm9vdC5zZXAucnVsZSI+CisgICAgPHhzbDppZiB0ZXN0PSIkZm9vdGVyLnJ1bGUgIT0gMCI+CisgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9ImJvcmRlci10b3Atd2lkdGgiPjAuNXB0PC94c2w6YXR0cmlidXRlPgorICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXItdG9wLXN0eWxlIj5zb2xpZDwveHNsOmF0dHJpYnV0ZT4KKyAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyLXRvcC1jb2xvciI+I2NjY2NjYzwveHNsOmF0dHJpYnV0ZT4KKyAgICA8L3hzbDppZj4KKyAgPC94c2w6dGVtcGxhdGU+CisKKyAgPHhzbDphdHRyaWJ1dGUtc2V0IG5hbWU9ImhlYWRlci5jb250ZW50LnByb3BlcnRpZXMiPgorICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4jY2NjY2NjPC94c2w6YXR0cmlidXRlPgorICA8L3hzbDphdHRyaWJ1dGUtc2V0PgorCisgIDx4c2w6YXR0cmlidXRlLXNldCBuYW1lPSJmb290ZXIuY29udGVudC5wcm9wZXJ0aWVzIj4KKyAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+I2NjY2NjYzwveHNsOmF0dHJpYnV0ZT4KKyAgPC94c2w6YXR0cmlidXRlLXNldD4KKworIAorICA8IS0tIGdlbmVyYWwgc2V0dGluZ3MgLS0+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJmb3AxLmV4dGVuc2lvbnMiIHNlbGVjdD0iMSI+PC94c2w6cGFyYW0+CisgIDx4c2w6cGFyYW0gbmFtZT0icGFwZXIudHlwZSIgc2VsZWN0PSInQTQnIj48L3hzbDpwYXJhbT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIj48L3hzbDpwYXJhbT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJib2R5LmZvbnQuZmFtaWx5IiBzZWxlY3Q9Iid2ZXJhc2FucyciPjwveHNsOnBhcmFtPgorICA8eHNsOnBhcmFtIG5hbWU9InRpdGxlLmZvbnQuZmFtaWx5IiBzZWxlY3Q9Iid2ZXJhc2FucyciPjwveHNsOnBhcmFtPgorICA8eHNsOnBhcmFtIG5hbWU9Im1vbm9zcGFjZS5mb250LmZhbWlseSIgc2VsZWN0PSIndmVyYW1vbm8nIj48L3hzbDpwYXJhbT4KKworPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvZGl2aXNpb24udGl0bGUueHNsIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4NDNiYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvZGl2aXNpb24udGl0bGUueHNsCkBAIC0wLDAgKzEsMjUgQEAKKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiCisgIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorICB4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCisgIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJkIj4KKyAgCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0iZGl2aXNpb24udGl0bGUiPgorICAgIDx4c2w6cGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSIuIi8+CisgICAgCisgICAgPGgxPgorICAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPnRpdGxlPC94c2w6YXR0cmlidXRlPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFuY2hvciI+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9IiRub2RlIi8+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJjb25kaXRpb25hbCIgc2VsZWN0PSIwIi8+CisgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIkbm9kZSIgbW9kZT0ib2JqZWN0LnRpdGxlLm1hcmt1cCI+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJhbGxvdy1hbmNob3JzIiBzZWxlY3Q9IjEiLz4KKyAgICAgIDwveHNsOmFwcGx5LXRlbXBsYXRlcz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwZXJtYWxpbmsiPgorICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSIkbm9kZSIvPgorICAgICAgPC94c2w6Y2FsbC10ZW1wbGF0ZT4KKyAgICA8L2gxPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvZm9wLWNvbmZpZy54bWwgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL2ZvcC1jb25maWcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5Y2M1Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL2ZvcC1jb25maWcueG1sCkBAIC0wLDAgKzEsNTggQEAKKzxmb3AgdmVyc2lvbj0iMS4wIj4KKworICA8IS0tIFN0cmljdCB1c2VyIGNvbmZpZ3VyYXRpb24gLS0+CisgIDxzdHJpY3QtY29uZmlndXJhdGlvbj50cnVlPC9zdHJpY3QtY29uZmlndXJhdGlvbj4KKworICA8IS0tIFN0cmljdCBGTyB2YWxpZGF0aW9uIC0tPgorICA8c3RyaWN0LXZhbGlkYXRpb24+dHJ1ZTwvc3RyaWN0LXZhbGlkYXRpb24+CisKKyAgIDwhLS0KKyAgICBTZXQgdGhlIGJhc2VEaXIgc28gY29tbW9uL29wZW5lZGhhbmQuc3ZnIHJlZmVyZW5jZXMgaW4gcGxhbnMgc3RpbGwKKyAgICB3b3JrIG9rLiBOb3RlLCByZWxhdGl2ZSBmaWxlIHJlZmVyZW5jZXMgdG8gY3VycmVudCBkaXIgc2hvdWxkIHN0aWxsIHdvcmsuCisgICAgLS0+CQorICA8YmFzZT4uLi90ZW1wbGF0ZTwvYmFzZT4KKyAgPGZvbnQtYmFzZT4uLi90ZW1wbGF0ZTwvZm9udC1iYXNlPgorIAorICA8IS0tIFNvdXJjZSByZXNvbHV0aW9uIGluIGRwaSAoZG90cy9waXhlbHMgcGVyIGluY2gpIGZvciBkZXRlcm1pbmluZyB0aGUKKyAgICAgICBzaXplIG9mIHBpeGVscyBpbiBTVkcgYW5kIGJpdG1hcCBpbWFnZXMsIGRlZmF1bHQ6IDcyZHBpIC0tPgorICA8IS0tIDxzb3VyY2UtcmVzb2x1dGlvbj43Mjwvc291cmNlLXJlc29sdXRpb24+IC0tPgorICA8IS0tIFRhcmdldCByZXNvbHV0aW9uIGluIGRwaSAoZG90cy9waXhlbHMgcGVyIGluY2gpIGZvciBzcGVjaWZ5aW5nIHRoZQorICAgICAgIHRhcmdldCByZXNvbHV0aW9uIGZvciBnZW5lcmF0ZWQgYml0bWFwcywgZGVmYXVsdDogNzJkcGkgLS0+CisgIDwhLS0gPHRhcmdldC1yZXNvbHV0aW9uPjcyPC90YXJnZXQtcmVzb2x1dGlvbj4gLS0+CisgCisgIDwhLS0gZGVmYXVsdCBwYWdlLWhlaWdodCBhbmQgcGFnZS13aWR0aCwgaW4gY2FzZQorICAgICAgIHZhbHVlIGlzIHNwZWNpZmllZCBhcyBhdXRvIC0tPgorICA8ZGVmYXVsdC1wYWdlLXNldHRpbmdzIGhlaWdodD0iMTFpbiIgd2lkdGg9IjguMjZpbiIvPiAKKyAKKyAgPCEtLSA8dXNlLWNhY2hlPmZhbHNlPC91c2UtY2FjaGU+IC0tPgorIAorICA8cmVuZGVyZXJzPgorICAgIDxyZW5kZXJlciBtaW1lPSJhcHBsaWNhdGlvbi9wZGYiPgorICAgICAgPGZvbnRzPgorICAgICAgICA8Zm9udCAgbWV0cmljcy1maWxlPSJWZXJhTW9uby54bWwiCisgICAgICAgICAgICAgICBrZXJuaW5nPSJ5ZXMiIAorICAgICAgICAgICAgICAgZW1iZWQtdXJsPSJWZXJhTW9uby50dGYiPgorICAgICAgICAgIDxmb250LXRyaXBsZXQgbmFtZT0idmVyYW1vbm8iIHN0eWxlPSJub3JtYWwiIHdlaWdodD0ibm9ybWFsIi8+CisgICAgICAgIDwvZm9udD4KKworICAgICAgICA8Zm9udCAgbWV0cmljcy1maWxlPSJWZXJhTW9CZC54bWwiCisgICAgICAgICAgICAgICBrZXJuaW5nPSJ5ZXMiIAorICAgICAgICAgICAgICAgZW1iZWQtdXJsPSJWZXJhTW9CZC50dGYiPgorICAgICAgICAgIDxmb250LXRyaXBsZXQgbmFtZT0idmVyYW1vbm8iIHN0eWxlPSJub3JtYWwiIHdlaWdodD0iYm9sZCIvPgorICAgICAgICA8L2ZvbnQ+CisKKyAgICAgICAgPGZvbnQgIG1ldHJpY3MtZmlsZT0iVmVyYS54bWwiCisgICAgICAgICAgICAgICBrZXJuaW5nPSJ5ZXMiIAorICAgICAgICAgICAgICAgZW1iZWQtdXJsPSJWZXJhLnR0ZiI+CisgICAgICAgICAgPGZvbnQtdHJpcGxldCBuYW1lPSJ2ZXJhc2FucyIgc3R5bGU9Im5vcm1hbCIgd2VpZ2h0PSJub3JtYWwiLz4KKyAgICAgICAgICA8Zm9udC10cmlwbGV0IG5hbWU9InZlcmFzYW5zIiBzdHlsZT0ibm9ybWFsIiB3ZWlnaHQ9ImJvbGQiLz4KKyAgICAgICAgICA8Zm9udC10cmlwbGV0IG5hbWU9InZlcmFzYW5zIiBzdHlsZT0iaXRhbGljIiB3ZWlnaHQ9Im5vcm1hbCIvPgorICAgICAgICAgIDxmb250LXRyaXBsZXQgbmFtZT0idmVyYXNhbnMiIHN0eWxlPSJpdGFsaWMiIHdlaWdodD0iYm9sZCIvPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIAorICAgICAgICA8YXV0by1kZXRlY3QvPgorICAgICAgPC9mb250cz4KKyAgICA8L3JlbmRlcmVyPgorICA8L3JlbmRlcmVycz4KKzwvZm9wPgorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzOTAwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbApAQCAtMCwwICsxLDIxIEBACis8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIgorICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKKyAgeG1sbnM6ZD0iaHR0cDovL2RvY2Jvb2sub3JnL25zL2RvY2Jvb2siCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgorICBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZCI+CisgIAorICA8eHNsOnRlbXBsYXRlIG5hbWU9ImZvcm1hbC5vYmplY3QuaGVhZGluZyI+CisgICAgPHhzbDpwYXJhbSBuYW1lPSJvYmplY3QiIHNlbGVjdD0iLiIvPgorICAgIDx4c2w6cGFyYW0gbmFtZT0idGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIkb2JqZWN0IiBtb2RlPSJvYmplY3QudGl0bGUubWFya3VwIj4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImFsbG93LWFuY2hvcnMiIHNlbGVjdD0iMSIvPgorICAgICAgPC94c2w6YXBwbHktdGVtcGxhdGVzPgorICAgIDwveHNsOnBhcmFtPgorICAgIDxwIGNsYXNzPSJ0aXRsZSI+CisgICAgICA8Yj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkdGl0bGUiLz48L2I+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icGVybWFsaW5rIj4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iJG9iamVjdCIvPgorICAgICAgPC94c2w6Y2FsbC10ZW1wbGF0ZT4KKyAgICA8L3A+CisgIDwveHNsOnRlbXBsYXRlPgorPC94c2w6c3R5bGVzaGVldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL2dsb3NzLXBlcm1hbGlua3MueHNsIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9nbG9zcy1wZXJtYWxpbmtzLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmY1ODExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9nbG9zcy1wZXJtYWxpbmtzLnhzbApAQCAtMCwwICsxLDE0IEBACis8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIg0KKyAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iDQorICB4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayINCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCisNCisgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Imdsb3NzZW50cnkvZ2xvc3N0ZXJtIj4NCisgICAgPHhzbDphcHBseS1pbXBvcnRzLz4NCisgICAgPHhzbDppZiB0ZXN0PSIkZ2VuZXJhdGUucGVybWFsaW5rICE9IDAiPg0KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwZXJtYWxpbmsiPg0KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iLi4iLz4NCisgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPg0KKyAgICA8L3hzbDppZj4NCisgIDwveHNsOnRlbXBsYXRlPg0KKzwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9wZXJtYWxpbmtzLnhzbCBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvcGVybWFsaW5rcy54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMWMxNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvcGVybWFsaW5rcy54c2wKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgorICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5wZXJtYWxpbmsiIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9InBlcm1hbGluay50ZXh0Ij7CtjwveHNsOnBhcmFtPgorCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0icGVybWFsaW5rIj4KKyAgICA8eHNsOnBhcmFtIG5hbWU9Im5vZGUiLz4KKworICAgIDx4c2w6aWYgdGVzdD0iJGdlbmVyYXRlLnBlcm1hbGluayAhPSAnMCciPgorICAgICAgPHNwYW4gY2xhc3M9InBlcm1hbGluayI+CisgICAgICAgIDxhIGFsdD0iUGVybWFsaW5rIiB0aXRsZT0iUGVybWFsaW5rIj4KKyAgICAgICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJocmVmIj4KKyAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJocmVmLnRhcmdldCI+CisgICAgICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJvYmplY3QiICBzZWxlY3Q9IiRub2RlIi8+CisgICAgICAgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgICAgICAgIDwveHNsOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8eHNsOmNvcHktb2Ygc2VsZWN0PSIkcGVybWFsaW5rLnRleHQiLz4KKyAgICAgICAgPC9hPgorICAgICAgPC9zcGFuPgorICAgIDwveHNsOmlmPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9zZWN0aW9uLnRpdGxlLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzZmZjlhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy90ZW1wbGF0ZS9zZWN0aW9uLnRpdGxlLnhzbApAQCAtMCwwICsxLDU1IEBACis8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIgorICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKKyAgeG1sbnM6ZD0iaHR0cDovL2RvY2Jvb2sub3JnL25zL2RvY2Jvb2siCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZCI+CisKKyAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0aW9uLnRpdGxlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InNlY3Rpb24iCisgICAgICBzZWxlY3Q9IihhbmNlc3Rvcjo6c2VjdGlvbiB8CisgICAgICAgICAgICAgICBhbmNlc3Rvcjo6c2ltcGxlc2VjdHwKKyAgICAgICAgICAgICAgIGFuY2VzdG9yOjpzZWN0MXwKKyAgICAgICAgICAgICAgIGFuY2VzdG9yOjpzZWN0MnwKKyAgICAgICAgICAgICAgIGFuY2VzdG9yOjpzZWN0M3wKKyAgICAgICAgICAgICAgIGFuY2VzdG9yOjpzZWN0NHwKKyAgICAgICAgICAgICAgIGFuY2VzdG9yOjpzZWN0NSlbbGFzdCgpXSIvPgorCisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZW5kZXJhcyI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9IiRzZWN0aW9uL0ByZW5kZXJhcyA9ICdzZWN0MSciPjE8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iJHNlY3Rpb24vQHJlbmRlcmFzID0gJ3NlY3QyJyI+MjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSIkc2VjdGlvbi9AcmVuZGVyYXMgPSAnc2VjdDMnIj4zPC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9IiRzZWN0aW9uL0ByZW5kZXJhcyA9ICdzZWN0NCciPjQ8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iJHNlY3Rpb24vQHJlbmRlcmFzID0gJ3NlY3Q1JyI+NTwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSInJyIvPjwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKworICAgIDx4c2w6dmFyaWFibGUgbmFtZT0ibGV2ZWwiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSIkcmVuZGVyYXMgIT0gJyciPgorICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkcmVuZGVyYXMiLz4KKyAgICAgICAgPC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+CisgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Rpb24ubGV2ZWwiPgorICAgICAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iJHNlY3Rpb24iLz4KKyAgICAgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgICAgICA8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisKKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdGlvbi5oZWFkaW5nIj4KKyAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJzZWN0aW9uIiBzZWxlY3Q9IiRzZWN0aW9uIi8+CisgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ibGV2ZWwiIHNlbGVjdD0iJGxldmVsIi8+CisgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0idGl0bGUiPgorICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IiRzZWN0aW9uIiBtb2RlPSJvYmplY3QudGl0bGUubWFya3VwIj4KKyAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0iYWxsb3ctYW5jaG9ycyIgc2VsZWN0PSIxIi8+CisgICAgICAgIDwveHNsOmFwcGx5LXRlbXBsYXRlcz4KKyAgICAgICAgPHhzbDppZiB0ZXN0PSIkbGV2ZWwgJmd0OyAwIj4KKyAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icGVybWFsaW5rIj4KKyAgICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9IiRzZWN0aW9uIi8+CisgICAgICAgICAgPC94c2w6Y2FsbC10ZW1wbGF0ZT4KKyAgICAgICAgPC94c2w6aWY+CisgICAgICA8L3hzbDp3aXRoLXBhcmFtPgorICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+CisgIDwveHNsOnRlbXBsYXRlPgorPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdGVtcGxhdGUvdGl0bGVwYWdlLnRlbXBsYXRlcy54bWwgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL3RpdGxlcGFnZS50ZW1wbGF0ZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZWMxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL3RlbXBsYXRlL3RpdGxlcGFnZS50ZW1wbGF0ZXMueG1sCkBAIC0wLDAgKzEsMTI1OSBAQAorPCFET0NUWVBFIHQ6dGVtcGxhdGVzIFsKKzwhRU5USVRZIGhzaXplMCAiMTBwdCI+Cis8IUVOVElUWSBoc2l6ZTEgIjEycHQiPgorPCFFTlRJVFkgaHNpemUyICIxNC40cHQiPgorPCFFTlRJVFkgaHNpemUzICIxNy4yOHB0Ij4KKzwhRU5USVRZIGhzaXplNCAiMjAuNzM2cHQiPgorPCFFTlRJVFkgaHNpemU1ICIyNC44ODMycHQiPgorPCFFTlRJVFkgaHNpemUwc3BhY2UgIjcuNXB0Ij4gPCEtLSAwLjc1ICogaHNpemUwIC0tPgorPCFFTlRJVFkgaHNpemUxc3BhY2UgIjlwdCI+IDwhLS0gMC43NSAqIGhzaXplMSAtLT4KKzwhRU5USVRZIGhzaXplMnNwYWNlICIxMC44cHQiPiA8IS0tIDAuNzUgKiBoc2l6ZTIgLS0+Cis8IUVOVElUWSBoc2l6ZTNzcGFjZSAiMTIuOTZwdCI+IDwhLS0gMC43NSAqIGhzaXplMyAtLT4KKzwhRU5USVRZIGhzaXplNHNwYWNlICIxNS41NTJwdCI+IDwhLS0gMC43NSAqIGhzaXplNCAtLT4KKzwhRU5USVRZIGhzaXplNXNwYWNlICIxOC42NjI0cHQiPiA8IS0tIDAuNzUgKiBoc2l6ZTUgLS0+CitdPgorPHQ6dGVtcGxhdGVzIHhtbG5zOnQ9Imh0dHA6Ly9ud2Fsc2guY29tL2RvY2Jvb2sveHNsL3RlbXBsYXRlLzEuMCIKKwkgICAgIHhtbG5zOnBhcmFtPSJodHRwOi8vbndhbHNoLmNvbS9kb2Nib29rL3hzbC90ZW1wbGF0ZS8xLjAvcGFyYW0iCisgICAgICAgICAgICAgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIKKyAgICAgICAgICAgICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+CisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgJElkOiB0aXRsZXBhZ2UudGVtcGxhdGVzLnhtbCx2IDEuMjMgMjAwMy8xMi8xNiAwMDozMDo0OSBib2JzdGF5dG9uIEV4cCAkCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERvY0Jvb2sgWFNMIFN0eWxlc2hlZXQgZGlzdHJpYnV0aW9uLgorICAgICBTZWUgLi4vUkVBRE1FIG9yIGh0dHA6Ly9kb2Nib29rLnNmLm5ldC8gZm9yIGNvcHlyaWdodAorICAgICBhbmQgb3RoZXIgaW5mb3JtYXRpb24uCisKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImFydGljbGUiIHQ6d3JhcHBlcj0iZm86YmxvY2siCisgICAgICAgICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iPgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iCisgICAgICAgICAgICAgdGV4dC1hbGlnbj0iY2VudGVyIj4KKworICAgIDxtZWRpYW9iamVjdC8+CisKKyAgICA8dGl0bGUgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmFydGljbGVbMV0iCisJICAga2VlcC13aXRoLW5leHQ9ImFsd2F5cyIKKwkgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisKKyAgICA8c3VidGl0bGUgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6YXJ0aWNsZVsxXSIKKwkgICBrZWVwLXdpdGgtbmV4dD0iYWx3YXlzIgorCSAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiCisJICAgZm9udC13ZWlnaHQ9ImJvbGQiCisgICAgICAgc3BhY2UtYWZ0ZXI9IjAuOGVtIi8+CisKKyAgICA8Y29ycGF1dGhvciBzcGFjZS1iZWZvcmU9IjAuNWVtIgorICAgICAgICAgICAgICAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiLz4KKyAgICA8YXV0aG9yZ3JvdXAgc3BhY2UtYmVmb3JlPSIwLjVlbSIKKyAgICAgICAgICAgICAgICAgZm9udC1zaXplPSImaHNpemUyOyIvPgorICAgIDxhdXRob3Igc3BhY2UtYmVmb3JlPSIwLjVlbSIKKyAgICAgICAgICAgIGZvbnQtc2l6ZT0iJmhzaXplMjsiCisgICAgICAgICAgICBzcGFjZS1hZnRlcj0iMC44ZW0iLz4KKworICAgIDxlbWFpbCBmb250LXNpemU9IiZoc2l6ZTI7Ii8+CisKKyAgICA8b3RoZXJjcmVkaXQgc3BhY2UtYmVmb3JlPSIwLjVlbSIvPgorICAgIDxyZWxlYXNlaW5mbyBzcGFjZS1iZWZvcmU9IjAuNWVtIi8+CisgICAgPGNvcHlyaWdodCBzcGFjZS1iZWZvcmU9IjAuNWVtIi8+CisgICAgPGxlZ2Fsbm90aWNlIHRleHQtYWxpZ249InN0YXJ0IgorICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdD0iMC41aW4iCisgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodD0iMC41aW4iCisgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5PSJ7JGJvZHkuZm9udHNldH0iLz4KKyAgICA8cHViZGF0ZSBzcGFjZS1iZWZvcmU9IjAuNWVtIi8+CisJPHBhcmE+PC9wYXJhPgorICAgIDxyZXZpc2lvbiBzcGFjZS1iZWZvcmU9IjAuNWVtIi8+CisgICAgPHJldmhpc3Rvcnkgc3BhY2UtYmVmb3JlPSIwLjVlbSIvPgorICAgIDxhYnN0cmFjdCBzcGFjZS1iZWZvcmU9IjAuNWVtIgorCSAgICAgIHRleHQtYWxpZ249InN0YXJ0IgorCSAgICAgIG1hcmdpbi1sZWZ0PSIwLjVpbiIKKyAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0PSIwLjVpbiIKKyAgICAgICAgICAgICAgZm9udC1mYW1pbHk9InskYm9keS5mb250c2V0fSIvPgorCisgICAgPHBhcmE+PC9wYXJhPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNldCIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJkaXZpc2lvbi50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OnNldFsxXSIKKwkgICAgIHRleHQtYWxpZ249ImNlbnRlciIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBzcGFjZS1iZWZvcmU9IiZoc2l6ZTVzcGFjZTsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICAgdGV4dC1hbGlnbj0iY2VudGVyIi8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJib29rIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKworICAgICAgPG1lZGlhb2JqZWN0Lz4KKworPCEtLQorCisjIElmIHlvdSBsZWF2ZSB0aGlzIGJsb2NrIG9mIGNvZGUgaW4gdGhlbiB0aGUgdGV4dCB0aXRsZSBpbiB0aGUKKyMgPHRpdGxlPkJpdEJha2UgVXNlciBNYW51YWw8L3RpdGxlPiBzdGF0ZW1lbnQgb2YgdGhlCisjIGJpdGJha2UtdXNlci1tYW51YWwueG1sIGZpbGUgaXMgcmVuZGVyZWQgb24gdGhlIHRpdGxlIHBhZ2UgYmVsb3cgdGhlCisjIGltYWdlLiAgQ29tbWVudGluZyBpdCBvdXQgZ2V0cyBpdCBvdXQgb2YgdGhlcmUgeWV0IGFsbG93cyBpdAorIyB0byBiZSByZXRhaW5lZCBpbiB0aGUgdGFiIHRleHQgZm9yIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlCisjIG1hbnVhbC4KKworICAgICAgPHRpdGxlCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJkaXZpc2lvbi50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmJvb2tbMV0iCisJICAgICB0ZXh0LWFsaWduPSJjZW50ZXIiCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgc3BhY2UtYmVmb3JlPSImaHNpemU1c3BhY2U7IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorLS0+CisgICAgICA8c3VidGl0bGUKKwkJdGV4dC1hbGlnbj0iY2VudGVyIgorCQlmb250LXNpemU9IiZoc2l6ZTQ7IgorCQlzcGFjZS1iZWZvcmU9IiZoc2l6ZTRzcGFjZTsiCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgICA8Y29ycGF1dGhvciBmb250LXNpemU9IiZoc2l6ZTM7IgorCQkgIGtlZXAtd2l0aC1uZXh0PSJhbHdheXMiCisJCSAgc3BhY2UtYmVmb3JlPSIyaW4iLz4KKyAgICAgIDxhdXRob3Jncm91cCBzcGFjZS1iZWZvcmU9IjJpbiIvPgorICAgICAgPGF1dGhvciBmb250LXNpemU9IiZoc2l6ZTM7IgorCSAgICAgIHNwYWNlLWJlZm9yZT0iJmhzaXplMnNwYWNlOyIKKwkgICAgICBrZWVwLXdpdGgtbmV4dD0iYWx3YXlzIi8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorPCEtLQorIyBJZiB5b3UgbGVhdmUgdGhpcyBibG9jayBvZiBjb2RlIGluIHRoZW4gdGhlIHRleHQgdGl0bGUgaW4gdGhlCisjIDx0aXRsZT5CaXRCYWtlIFVzZXIgTWFudWFsPC90aXRsZT4gc3RhdGVtZW50IG9mIHRoZQorIyBiaXRiYWtlLXVzZXItbWFudWFsLnhtbCBmaWxlIGlzIHJlbmRlcmVkIG9uIHRoZSB0aXRsZSBwYWdlIGJlbG93IHRoZQorIyBpbWFnZS4gIENvbW1lbnRpbmcgaXQgb3V0IGdldHMgaXQgb3V0IG9mIHRoZXJlIHlldCBhbGxvd3MgaXQKKyMgdG8gYmUgcmV0YWluZWQgaW4gdGhlIHRhYiB0ZXh0IGZvciB0aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZQorIyBtYW51YWwuCisKKyAgICAgIDx0aXRsZQorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iYm9vay52ZXJzby50aXRsZSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplMjsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CistLT4KKyAgICAgIDxjb3JwYXV0aG9yLz4KKyAgICAgIDxhdXRob3Jncm91cCB0Om5hbWVkLXRlbXBsYXRlPSJ2ZXJzby5hdXRob3Jncm91cCIvPgorICAgICAgPGF1dGhvci8+CisgICAgICA8b3RoZXJjcmVkaXQvPgorICAgICAgPHB1YmRhdGUgc3BhY2UtYmVmb3JlPSIxZW0iLz4KKyAgICAgIDxjb3B5cmlnaHQvPgorICAgICAgPGFic3RyYWN0Lz4KKyAgICAgIDxsZWdhbG5vdGljZSBmb250LXNpemU9IjhwdCIvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICAgIDxmbzpibG9jayBicmVhay1hZnRlcj0icGFnZSIvPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgICAgPGZvOmJsb2NrIGJyZWFrLWFmdGVyPSJwYWdlIi8+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0icGFydCIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJkaXZpc2lvbi50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OnBhcnRbMV0iCisJICAgICB0ZXh0LWFsaWduPSJjZW50ZXIiCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgc3BhY2UtYmVmb3JlPSImaHNpemU1c3BhY2U7IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIHRleHQtYWxpZ249ImNlbnRlciIKKwkgICAgICBmb250LXNpemU9IiZoc2l6ZTQ7IgorCSAgICAgIHNwYWNlLWJlZm9yZT0iJmhzaXplNHNwYWNlOyIKKwkgICAgICBmb250LXdlaWdodD0nYm9sZCcKKwkgICAgICBmb250LXN0eWxlPSdpdGFsaWMnCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJwYXJ0aW50cm8iIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICB0ZXh0LWFsaWduPSJjZW50ZXIiCisJICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICBzcGFjZS1iZWZvcmU9IjFlbSIKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIHRleHQtYWxpZ249ImNlbnRlciIKKwkgICAgICBmb250LXNpemU9IiZoc2l6ZTI7IgorCSAgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgIGZvbnQtc3R5bGU9Iml0YWxpYyIKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxjb3JwYXV0aG9yLz4KKyAgICA8YXV0aG9yZ3JvdXAvPgorICAgIDxhdXRob3IvPgorICAgIDxvdGhlcmNyZWRpdC8+CisgICAgPHJlbGVhc2VpbmZvLz4KKyAgICA8Y29weXJpZ2h0Lz4KKyAgICA8bGVnYWxub3RpY2UvPgorICAgIDxwdWJkYXRlLz4KKyAgICA8cmV2aXNpb24vPgorICAgIDxyZXZoaXN0b3J5Lz4KKyAgICA8YWJzdHJhY3QvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InJlZmVyZW5jZSIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJkaXZpc2lvbi50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OnJlZmVyZW5jZVsxXSIKKwkgICAgIHRleHQtYWxpZ249ImNlbnRlciIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBzcGFjZS1iZWZvcmU9IiZoc2l6ZTVzcGFjZTsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICAgdGV4dC1hbGlnbj0iY2VudGVyIi8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0icmVmc3lub3BzaXNkaXYiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InJlZnNlY3Rpb24iIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InJlZnNlY3QxIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJyZWZzZWN0MiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0icmVmc2VjdDMiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0iZGVkaWNhdGlvbiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjpkZWRpY2F0aW9uWzFdIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJwcmVmYWNlIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OnByZWZhY2VbMV0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgICA8Y29ycGF1dGhvci8+CisgICAgICA8YXV0aG9yZ3JvdXAvPgorICAgICAgPGF1dGhvci8+CisgICAgICA8b3RoZXJjcmVkaXQvPgorICAgICAgPHJlbGVhc2VpbmZvLz4KKyAgICAgIDxjb3B5cmlnaHQvPgorICAgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICAgIDxwdWJkYXRlLz4KKyAgICAgIDxyZXZpc2lvbi8+CisgICAgICA8cmV2aGlzdG9yeS8+CisgICAgICA8YWJzdHJhY3QvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJjaGFwdGVyIiB0OndyYXBwZXI9ImZvOmJsb2NrIgorICAgICAgICAgICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSI+CisgICAgICA8dGl0bGUgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6Y2hhcHRlclsxXSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorCisgICAgICA8c3VidGl0bGUgc3BhY2UtYmVmb3JlPSIwLjVlbSIKKwkJZm9udC1zdHlsZT0iaXRhbGljIgorCQlmb250LXNpemU9IiZoc2l6ZTI7IgorCQlmb250LXdlaWdodD0iYm9sZCIvPgorCisgICAgICA8Y29ycGF1dGhvciAgc3BhY2UtYmVmb3JlPSIwLjVlbSIKKwkgICAgICAgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKyAgICAgICAgICAgICAgICAgICBmb250LXNpemU9IiZoc2l6ZTI7Ii8+CisKKyAgICAgIDxhdXRob3Jncm91cCBzcGFjZS1iZWZvcmU9IjAuNWVtIgorCSAgICAgICAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZT0iJmhzaXplMjsiLz4KKworICAgICAgPGF1dGhvciAgICAgIHNwYWNlLWJlZm9yZT0iMC41ZW0iCisJICAgICAgICAgICBzcGFjZS1hZnRlcj0iMC41ZW0iCisgICAgICAgICAgICAgICAgICAgZm9udC1zaXplPSImaHNpemUyOyIvPgorCisgICAgICA8b3RoZXJjcmVkaXQvPgorICAgICAgPHJlbGVhc2VpbmZvLz4KKyAgICAgIDxjb3B5cmlnaHQvPgorICAgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICAgIDxwdWJkYXRlLz4KKyAgICAgIDxyZXZpc2lvbi8+CisgICAgICA8cmV2aGlzdG9yeS8+CisgICAgICA8YWJzdHJhY3QvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJhcHBlbmRpeCIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmFwcGVuZGl4WzFdIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgICAgPGNvcnBhdXRob3IvPgorICAgICAgPGF1dGhvcmdyb3VwLz4KKyAgICAgIDxhdXRob3IvPgorICAgICAgPG90aGVyY3JlZGl0Lz4KKyAgICAgIDxyZWxlYXNlaW5mby8+CisgICAgICA8Y29weXJpZ2h0Lz4KKyAgICAgIDxsZWdhbG5vdGljZS8+CisgICAgICA8cHViZGF0ZS8+CisgICAgICA8cmV2aXNpb24vPgorICAgICAgPHJldmhpc3RvcnkvPgorICAgICAgPGFic3RyYWN0Lz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNlY3Rpb24iIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8c3VidGl0bGUKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxjb3JwYXV0aG9yLz4KKyAgICA8YXV0aG9yZ3JvdXAvPgorICAgIDxhdXRob3IvPgorICAgIDxvdGhlcmNyZWRpdC8+CisgICAgPHJlbGVhc2VpbmZvLz4KKyAgICA8Y29weXJpZ2h0Lz4KKyAgICA8bGVnYWxub3RpY2UvPgorICAgIDxwdWJkYXRlLz4KKyAgICA8cmV2aXNpb24vPgorICAgIDxyZXZoaXN0b3J5Lz4KKyAgICA8YWJzdHJhY3QvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNlY3QxIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJzZWN0MiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ic2VjdDMiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8c3VidGl0bGUKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxjb3JwYXV0aG9yLz4KKyAgICA8YXV0aG9yZ3JvdXAvPgorICAgIDxhdXRob3IvPgorICAgIDxvdGhlcmNyZWRpdC8+CisgICAgPHJlbGVhc2VpbmZvLz4KKyAgICA8Y29weXJpZ2h0Lz4KKyAgICA8bGVnYWxub3RpY2UvPgorICAgIDxwdWJkYXRlLz4KKyAgICA8cmV2aXNpb24vPgorICAgIDxyZXZoaXN0b3J5Lz4KKyAgICA8YWJzdHJhY3QvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNlY3Q0IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJzZWN0NSIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ic2ltcGxlc2VjdCIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJiaWJsaW9ncmFwaHkiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6YmlibGlvZ3JhcGh5WzFdIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJiaWJsaW9kaXYiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmJpYmxpb2RpdlsxXSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNDsiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisgICAgICA8c3VidGl0bGUKKwkJZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0iZ2xvc3NhcnkiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6Z2xvc3NhcnlbMV0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9Imdsb3NzZGl2IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZSB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjpnbG9zc2RpdlsxXSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNDsiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisgICAgICA8c3VidGl0bGUKKwkJZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0iaW5kZXgiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6aW5kZXhbMV0iCisgICAgICAgICAgICAgcGFyYW06cGFnZXdpZGU9IjEiCisJICAgICBtYXJnaW4tbGVmdD0iMHB0IgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8IS0tIFRoZSBpbmRleGRpdi50aXRsZSB0ZW1wbGF0ZSBpcyB1c2VkIHNvIHRoYXQgbWFudWFsIGFuZCAtLT4KKyAgPCEtLSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpbmRleGRpdiB0aXRsZXMgZ2V0IHRoZSBzYW1lIC0tPgorICA8IS0tIGZvcm1hdHRpbmcuIC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImluZGV4ZGl2IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZSB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iaW5kZXhkaXYudGl0bGUiCisJICAgICBwYXJhbTp0aXRsZT0idGl0bGUiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJzZXRpbmRleCIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjpzZXRpbmRleFsxXSIKKyAgICAgICAgICAgICBwYXJhbTpwYWdld2lkZT0iMSIKKwkgICAgIG1hcmdpbi1sZWZ0PSIwcHQiCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImNvbG9waG9uIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmNvbG9waG9uWzFdIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJ0YWJsZS5vZi5jb250ZW50cyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInVGFibGVvZkNvbnRlbnRzJyIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWluaW11bT0iMWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5vcHRpbXVtPSIxLjVlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWF4aW11bT0iMmVtIgorCSAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemUzOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ibGlzdC5vZi50YWJsZXMiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iZ2VudGV4dCIKKwkgICAgIHBhcmFtOmtleT0iJ0xpc3RvZlRhYmxlcyciCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1pbmltdW09IjFlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUub3B0aW11bT0iMS41ZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1heGltdW09IjJlbSIKKwkgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9Imxpc3Qub2YuZmlndXJlcyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInTGlzdG9mRmlndXJlcyciCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1pbmltdW09IjFlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUub3B0aW11bT0iMS41ZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1heGltdW09IjJlbSIKKwkgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9Imxpc3Qub2YuZXhhbXBsZXMiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iZ2VudGV4dCIKKwkgICAgIHBhcmFtOmtleT0iJ0xpc3RvZkV4YW1wbGVzJyIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWluaW11bT0iMWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5vcHRpbXVtPSIxLjVlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWF4aW11bT0iMmVtIgorCSAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemUzOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ibGlzdC5vZi5lcXVhdGlvbnMiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iZ2VudGV4dCIKKwkgICAgIHBhcmFtOmtleT0iJ0xpc3RvZkVxdWF0aW9ucyciCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1pbmltdW09IjFlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUub3B0aW11bT0iMS41ZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1heGltdW09IjJlbSIKKwkgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9Imxpc3Qub2YucHJvY2VkdXJlcyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInTGlzdG9mUHJvY2VkdXJlcyciCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1pbmltdW09IjFlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUub3B0aW11bT0iMS41ZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1heGltdW09IjJlbSIKKwkgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9Imxpc3Qub2YudW5rbm93bnMiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iZ2VudGV4dCIKKwkgICAgIHBhcmFtOmtleT0iJ0xpc3RvZlVua25vd24nIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5taW5pbXVtPSIxZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm9wdGltdW09IjEuNWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5tYXhpbXVtPSIyZW0iCisJICAgICBzcGFjZS1hZnRlcj0iMC41ZW0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTM7IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPC90OnRlbXBsYXRlcz4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvdG9vbHMvZG9jYm9vay10by1wZGYgYi9wb2t5L2JpdGJha2UvZG9jL3Rvb2xzL2RvY2Jvb2stdG8tcGRmCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU1OGRlZDllCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy90b29scy9kb2Nib29rLXRvLXBkZgpAQCAtMCwwICsxLDUxIEBACisjIS9iaW4vc2gKKwkKK2lmIFsgLXogIiQxIiAtbyAteiAiJDIiIF07IHRoZW4KKyAgIGVjaG8gInVzYWdlOiBbLXZdICQwIDxkb2Nib29rIGZpbGU+IDx0ZW1wbGF0ZWRpcj4iCisgICBlY2hvCisgICBlY2hvICIqTk9URSogeW91IG5lZWQgeHNsdHByb2MsIGZvcCBhbmQgbndhbHNoIGRvY2Jvb2sgc3R5bGVzaGVldHMiIAorICAgZWNobyAiICAgICAgIGluc3RhbGxlZCBmb3IgdGhpcyB0byB3b3JrISIKKyAgIGVjaG8KKyAgIGV4aXQgMAorZmkKKworRk89YGVjaG8gJDEgfCBzZWQgcy8ueG1sLy5mby9gIHx8IGV4aXQgMQorUERGPWBlY2hvICQxIHwgc2VkIHMvLnhtbC8ucGRmL2AgfHwgZXhpdCAxCitURU1QTEFURURJUj0kMgorCisjIworIyBUaGVzZSBVUkkgc2hvdWxkIGJlIHJld3JpdHRlbiBieSB5b3VyIGRpc3RyaWJ1dGlvbidzIHhtbCBjYXRhbG9nIHRvCisjIG1hdGNoIHlvdXIgbG9jYWx5IGluc3RhbGxlZCBYU0wgc3R5bGVzaGVldHMuCitYU0xfQkFTRV9VUkk9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC9jdXJyZW50IgorCisjIENyZWF0ZXMgYSB0ZW1wb3JhcnkgWFNMIHN0eWxlc2hlZXQgYmFzZWQgb24gdGl0bGVwYWdlLnhzbAoreHNsdHByb2MgLW8gL3RtcC90aXRsZXBhZ2UueHNsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkgLS14aW5jbHVkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRYU0xfQkFTRV9VUkkvdGVtcGxhdGUvdGl0bGVwYWdlLnhzbCBcCisgICAgICAgICAkVEVNUExBVEVESVIvdGl0bGVwYWdlLnRlbXBsYXRlcy54bWwgfHwgZXhpdCAxCisKKyMgQ3JlYXRlcyB0aGUgZmlsZSBuZWVkZWQgZm9yIEZPUAoreHNsdHByb2MgLS14aW5jbHVkZSAgICAgICAgICAgICAgICAgICAgXAorCSAtLXN0cmluZ3BhcmFtIGh5cGhlbmF0ZSBmYWxzZSBcCisJIC0tc3RyaW5ncGFyYW0gZm9ybWFsLnRpdGxlLnBsYWNlbWVudCAiZmlndXJlIGFmdGVyIiBcCisJIC0tc3RyaW5ncGFyYW0gdWxpbmsuc2hvdyAxIFwKKyAgICAgICAgIC0tc3RyaW5ncGFyYW0gIGJvZHkuZm9udC5tYXN0ZXIgIDkgXAorICAgICAgICAgLS1zdHJpbmdwYXJhbSAgdGl0bGUuZm9udC5tYXN0ZXIgIDExIFwKKyAgICAgICAgIC0tc3RyaW5ncGFyYW0gZHJhZnQud2F0ZXJtYXJrLmltYWdlICIkVEVNUExBVEVESVIvZHJhZnQucG5nIiBcCisgICAgICAgICAtLXN0cmluZ3BhcmFtICBjaGFwdGVyLmF1dG9sYWJlbCAxIFwKKyAgICAgICAgIC0tc3RyaW5ncGFyYW0gIGFwcGVuZGl4LmF1dG9sYWJlbCBBIFwKKyAgICAgICAgIC0tc3RyaW5ncGFyYW0gIHNlY3Rpb24uYXV0b2xhYmVsIDEgXAorICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwgMSBcCisgICAgICAgICAtLW91dHB1dCAkRk8gICAgICAgICAgICAgICBcCisgICAgICAgICAkVEVNUExBVEVESVIvZGItcGRmLnhzbCAgICBcCisJICQxICAgICAgICAgICAgICAgICB8fCBleGl0IDEKKworIyBJbnZva2VzIHRoZSBKYXZhIHZlcnNpb24gb2YgRk9QLiAgVXNlcyB0aGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZpbGUgY29tbW9uL2ZvcC1jb25maWcueG1sCitmb3AgLWMgJFRFTVBMQVRFRElSL2ZvcC1jb25maWcueG1sIC1mbyAkRk8gLXBkZiAkUERGICAgICAgIHx8IGV4aXQgMQorCitybSAtZiAkRk8KK3JtIC1mICAvdG1wL3RpdGxlcGFnZS54c2wKKworZWNobworZWNobyAiICMjIyMgU3VjY2VzcyEgJFBERiByZWFkeS4gIyMjIyIKK2VjaG8KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQppbmRleCBkZDc3Y2RkLi5mOGM2YTAzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5CkBAIC04MSwxMiArODEsOCBAQAogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbW1hbmRfbWV0aG9kKHNlbGYsIGNvbW1hbmRsaW5lKQogICAgICAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIGV4Yy5hcmdzWzBdCi0gICAgICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbiwgU3lzdGVtRXhpdCkgYXMgZXhjOgorICAgICAgICAgICAgZXhjZXB0IChFeGNlcHRpb24sIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgYmIuQkJIYW5kbGVkRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHN0YXJ0IHJldHVybmluZyByZWFsIGV4Y2VwdGlvbnMgaGVyZS4gVW50aWwgd2UgZG8sIHdlIGNhbid0Ci0gICAgICAgICAgICAgICAgICAgICMgdGVsbCBpZiBhbiBleGNlcHRpb24gaXMgYW4gaW5zdGFuY2Ugb2YgYmIuQkJIYW5kbGVkRXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCAiYmIuQkJIYW5kbGVkRXhjZXB0aW9uKClcbiIgKyB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCwgTm9uZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkKaW5kZXggYjI3YjRhZS4uYzdjYjM0ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9wcm9jZXNzLnB5CkBAIC0yMTcsNyArMjE3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWxfcmVwbHkuc2VuZChzZWxmLmNvb2tlci5jb21tYW5kLnJ1bkNvbW1hbmQoY29tbWFuZCkpCiAgICAgICAgICAgICAgICAgICAgIHNlcnZlcmxvZygiQ29tbWFuZCBDb21wbGV0ZWQiKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICBzZXJ2ZXJsb2coJ0V4Y2VwdGlvbiBpbiBzZXJ2ZXIgbWFpbiBldmVudCBsb29wIHJ1bm5pbmcgY29tbWFuZCAlcyAoJXMpJyAlIChjb21tYW5kLCBzdHIoZSkpKQogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5leGNlcHRpb24oJ0V4Y2VwdGlvbiBpbiBzZXJ2ZXIgbWFpbiBldmVudCBsb29wIHJ1bm5pbmcgY29tbWFuZCAlcyAoJXMpJyAlIChjb21tYW5kLCBzdHIoZSkpKQogCiAgICAgICAgICAgICBpZiBzZWxmLnhtbHJwYyBpbiByZWFkeToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQppbmRleCA3NjNjMzI5Li4yZmIxYmI3IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5CkBAIC00NjEsMTYgKzQ2MSw3IEBACiAgICAgICAgIGNvbW1hbmRsaW5lID0gW2NvbW1hbmRdCiAgICAgICAgIGlmIHBhcmFtczoKICAgICAgICAgICAgIGNvbW1hbmRsaW5lLmV4dGVuZChwYXJhbXMpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24uY29ubmVjdGlvbi5ydW5Db21tYW5kKGNvbW1hbmRsaW5lKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBldmVudCA9IHNlbGYud2FpdF9ldmVudCgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGV2ZW50OgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCA9PSAwIG9yIGV2ZW50LmxldmVsbm8gPiBsb2dnaW5nLklORk86Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5oYW5kbGUoZXZlbnQpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24uY29ubmVjdGlvbi5ydW5Db21tYW5kKGNvbW1hbmRsaW5lKQogICAgICAgICBpZiByZXN1bHRbMV06CiAgICAgICAgICAgICByYWlzZSBUaW5mb2lsQ29tbWFuZEZhaWxlZChyZXN1bHRbMV0pCiAgICAgICAgIHJldHVybiByZXN1bHRbMF0KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZSBiL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQppbmRleCA0ZDcyMWQzLi43ZDQwNThhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlCkBAIC0xLDM1ICsxLDM5MCBAQAotIyBNaW5pbWFsIG1ha2VmaWxlIGZvciBTcGhpbnggZG9jdW1lbnRhdGlvbgogIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCisjCisjIFRoaXMgaXMgYSBzaW5nbGUgTWFrZWZpbGUgdG8gaGFuZGxlIGFsbCBnZW5lcmF0ZWQgWW9jdG8gUHJvamVjdCBkb2N1bWVudHMsCisjIHdoaWNoIGluY2x1ZGVzIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGFuZCB0aGUgVG9hc3RlciBVc2VyIE1hbnVhbC4KKyMgVGhlIE1ha2VmaWxlIG5lZWRzIHRvIGxpdmUgaW4gdGhlIGRvY3VtZW50cyBkaXJlY3RvcnkgYW5kIGFsbCBmaWd1cmVzIHVzZWQKKyMgaW4gYW55IG1hbnVhbHMgbXVzdCBiZSAuUE5HIGZpbGVzIGFuZCBsaXZlIGluIHRoZSBpbmRpdmlkdWFsIGJvb2sncyBmaWd1cmVzCisjIGRpcmVjdG9yeSBhcyB3ZWxsIGFzIGluIHRoZSBmaWd1cmVzIGRpcmVjdG9yeSBmb3IgdGhlIG1lZ2EtbWFudWFsLgorIworIyBOb3RlIHRoYXQgdGhlIGZpZ3VyZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorIyBkaWZmZXIgZGVwZW5kaW5nIG9uIHRoZSBCUkFOQ0ggYmVpbmcgYnVpbHQuCisjCisjIFRoZSBNYWtlZmlsZSBoYXMgdGhlc2UgdGFyZ2V0czoKKyMgICAgYWxsOiAgICAgICBJZiB5b3UgbGVhdmUgb2ZmIHRoZSB0YXJnZXQgdGhlbiAiYWxsIiBpcyBpbXBsaWVkLgorIyAgICAgICAgICAgICAgIFlvdSB3aWxsIGdlbmVyYXRlIEhUTUwgYW5kIGEgdGFyYmFsbCBvZiBmaWxlcy4KKyMKKyMgICAgcGRmOglnZW5lcmF0ZXMgYSBQREYgdmVyc2lvbiBvZiBhIG1hbnVhbC4gIE5vdCB2YWxpZCBmb3IgdGhlCisjCQlRdWljayBTdGFydCBvciB0aGUgbWVnYS1tYW51YWwgKHNpbmdsZSwgbGFyZ2UgSFRNTCBmaWxlCisjCQljb21wcmlzZWQgb2YgYWxsIFlvY3RvIFByb2plY3QgbWFudWFscykuCisjICAgIGh0bWw6CWdlbmVyYXRlcyBhbiBIVE1MIHZlcnNpb24gb2YgYSBtYW51YWwuCisjICAgIHRhcmJhbGw6CWNyZWF0ZXMgYSB0YXJiYWxsIGZvciB0aGUgZG9jIGZpbGVzLgorIyAgICB2YWxpZGF0ZToJdmFsaWRhdGVzCisjICAgIHB1Ymxpc2g6CXB1c2hlcyBnZW5lcmF0ZWQgZmlsZXMgdG8gdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZQorIyAgICBjbGVhbjoJcmVtb3ZlcyBmaWxlcworIworIyBUaGUgTWFrZWZpbGUgY2FuIGdlbmVyYXRlIGFuIEhUTUwgYW5kIFBERiB2ZXJzaW9uIG9mIGV2ZXJ5IGRvY3VtZW50IGV4Y2VwdCB0aGUKKyMgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBhbmQgdGhlIHNpbmdsZSwgSFRNTCBtZWdhLW1hbnVhbCwgd2hpY2ggaXMgY29tcHJpc2VkCisjIG9mIGFsbCB0aGUgaW5kaXZpZHVhbCBZb2N0byBQcm9qZWN0IG1hbnVhbHMuICBZb3UgY2FuIGdlbmVyYXRlIHRoZXNlIHR3byBtYW51YWxzCisjIGluIEhUTUwgZm9ybSBvbmx5LiAgVGhlIHZhcmlhYmxlIERPQyBpbmRpY2F0ZXMgdGhlIGZvbGRlciBuYW1lIGZvciBhIGdpdmVuIG1hbnVhbC4KKyMgVGhlIHZhcmlhYmxlIFZFUiByZXByZXNlbnRzIHRoZSBkaXN0cm8gdmVyc2lvbiBvZiB0aGUgWW9jdG8gUmVsZWFzZSBmb3Igd2hpY2ggdGhlCisjIG1hbnVhbHMgYXJlIGJlaW5nIGdlbmVyYXRlZC4gIFRoZSB2YXJpYWJsZSBCUkFOQ0ggaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUKKyMgYnJhbmNoIChlZGlzb24gb3IgZGVuemlsKSBhbmQgaXMgdXNlZCBvbmx5IHdoZW4gRE9DPWRldi1tYW51YWwgb3IKKyMgRE9DPW1lZ2EtbWFudWFsLiAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgQlJBTkNILCB0aGUgZGVmYXVsdCBicmFuY2ggdXNlZAorIyB3aWxsIGJlIGZvciB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QgcmVsZWFzZS4gIElmIHlvdSBidWlsZCBmb3IgZWl0aGVyCisjIGVkaXNvbiBvciBkZW56aWwsIHlvdSBtdXN0IHVzZSBCUkFOQ0guIFlvdSBkbyBub3QgbmVlZCB0byB1c2UgQlJBTkNIIGZvcgorIyBhbnkgcmVsZWFzZSBiZXlvbmQgZGVuemlsLgorIworIyBUbyBidWlsZCBhIG1hbnVhbCwgeW91IG11c3QgaW52b2tlIE1ha2VmaWxlIHdpdGggdGhlIERPQyBhcmd1bWVudC4gIElmIHlvdQorIyBhcmUgZ29pbmcgdG8gcHVibGlzaCB0aGUgbWFudWFsLCB0aGVuIHlvdSBtdXN0IGludm9rZSBNYWtlZmlsZSB3aXRoIGJvdGggdGhlCisjIERPQyBhbmQgdGhlIFZFUiBhcmd1bWVudC4gIEZ1cnRoZXJtb3JlLCBpZiB5b3UgYXJlIGJ1aWxkaW5nIG9yIHB1Ymxpc2hpbmcKKyMgdGhlIGVkaXNvbiBvciBkZW56aWwgdmVyc2lvbnMgb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIG9yCisjIHRoZSBtZWdhLW1hbnVhbCwgeW91IG11c3QgYWxzbyB1c2UgdGhlIEJSQU5DSCBhcmd1bWVudC4KKyMKKyMgRXhhbXBsZXM6CisjCisjICAgICBtYWtlIERPQz1ic3AtZ3VpZGUKKyMgICAgIG1ha2UgaHRtbCBET0M9YnJpZWYteW9jdG9wcm9qZWN0cXMKKyMgICAgIG1ha2UgcGRmIERPQz1yZWYtbWFudWFsCisjICAgICBtYWtlIERPQz1kZXYtbWFudWFsIEJSQU5DSD1lZGlzb24KKyMgICAgIG1ha2UgRE9DPW1lZ2EtbWFudWFsIEJSQU5DSD1kZW56aWwKKyMKKyMgVGhlIGZpcnN0IGV4YW1wbGUgZ2VuZXJhdGVzIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIEJTUCBHdWlkZS4KKyMgVGhlIHNlY29uZCBleGFtcGxlIGdlbmVyYXRlcyB0aGUgSFRNTCB2ZXJzaW9uIG9ubHkgb2YgdGhlIFF1aWNrIFN0YXJ0LiAgTm90ZQorIyB0aGF0IHRoZSBRdWljayBTdGFydCBvbmx5IGhhcyBhbiBIVE1MIHZlcnNpb24gYXZhaWxhYmxlLiAgU28sIHRoZQorIyAnbWFrZSBET0M9YnJpZWYteW9jdG9wcm9qZWN0cXMnIGNvbW1hbmQgd291bGQgYmUgZXF1aXZhbGVudC4gVGhlIHRoaXJkIGV4YW1wbGUKKyMgZ2VuZXJhdGVzIGp1c3QgdGhlIFBERiB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisjIFRoZSBmb3VydGggZXhhbXBsZSBnZW5lcmF0ZXMgdGhlIEhUTUwgJ2VkaXNvbicgdmVyc2lvbiBvZiB0aGUgWVAgRGV2ZWxvcG1lbnQKKyMgVGFza3MgTWFudWFsLiAgVGhlIGxhc3QgZXhhbXBsZQorIyBnZW5lcmF0ZXMgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgbWVnYS1tYW51YWwgYW5kIHVzZXMgdGhlICdkZW56aWwnCisjIGJyYW5jaCB3aGVuIGNob29zaW5nIGZpZ3VyZXMgZm9yIHRoZSB0YXJiYWxsIG9mIGZpZ3VyZXMuICBBbnkgZXhhbXBsZSB0aGF0IGRvZXMKKyMgbm90IHVzZSB0aGUgQlJBTkNIIGFyZ3VtZW50IGJ1aWxkcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgc2V0LgorIworIyBUaGUgcHVibGlzaCB0YXJnZXQgcHVzaGVzIHRoZSBnZW5lcmF0ZWQgbWFudWFscyB0byB0aGUgWW9jdG8gUHJvamVjdAorIyB3ZWJzaXRlLiAgVW5sZXNzIHlvdSBhcmUgYSBkZXZlbG9wZXIgb24gdGhlIFlQIHRlYW0sIHlvdSB3aWxsIG5vdCBzdWNjZWVkIGluCisjIHB1c2hpbmcgbWFudWFscyB0byB0aGlzIHNlcnZlci4gIEFsbCBmaWxlcyBuZWVkZWQgZm9yIHRoZSBtYW51YWwncyBIVE1MIGZvcm0gYXJlCisjIHB1c2hlZC4KKyMKKyMgRXhhbXBsZXM6CisjCisjICAgIG1ha2UgcHVibGlzaCBET0M9YnNwLWd1aWRlIFZFUj0xLjcKKyMgICAgbWFrZSBwdWJsaXNoIERPQz1hZHQtbWFudWFsIFZFUj0xLjYKKyMgICAgbWFrZSBwdWJsaXNoIERPQz1kZXYtbWFudWFsIFZFUj0xLjEuMSBCUkFOQ0g9ZWRpc29uCisjICAgIG1ha2UgcHVibGlzaCBET0M9ZGV2LW1hbnVhbCBWRVI9MS4yIEJSQU5DSD1kZW56aWwKKyMKKyMgVGhlIGZpcnN0IGV4YW1wbGUgcHVibGlzaGVzIHRoZSAxLjcgdmVyc2lvbiBvZiBib3RoIHRoZSBQREYgYW5kIEhUTUwgdmVyc2lvbnMgb2YKKyMgdGhlIEJTUCBHdWlkZS4gIFRoZSBzZWNvbmQgZXhhbXBsZSBwdWJsaXNoZXMgdGhlIDEuNiB2ZXJzaW9uIG9mIGJvdGggdGhlIFBERiBhbmQKKyMgSFRNTCB2ZXJzaW9ucyBvZiB0aGUgQURUIE1hbnVhbC4gVGhlIHRoaXJkIGV4YW1wbGUgcHVibGlzaGVzIHRoZSAxLjEuMSB2ZXJzaW9uIG9mCisjIHRoZSBQREYgYW5kIEhUTUwgWVAgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciB0aGUgJ2VkaXNvbicgYnJhbmNoLiAgVGhlIGZvdXJ0aAorIyBleGFtcGxlIHB1Ymxpc2hlcyB0aGUgMS4yIHZlcnNpb24gb2YgdGhlIFBERiBhbmQgSFRNTCBZUCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyMgZm9yIHRoZSAnZGVuemlsJyBicmFuY2guCisjCisjIElOIE1FTU9SSUFNOiBUaGlzIGNvbW1lbnQgaXMgdG8gcmVtZW1iZXIgU2NvdHQgUmlmZW5iYXJrIChzY290dHJpZiksIHdob20gd2UgbG9zdAorIyBpbiBKYW51YXJ5LCAyMDIwLiBTY290dCB3YXMgdGhlIHByaW1hcnkgdGVjaG5pY2FsIHdyaXRlciBmb3IgdGhlIFlvY3RvIFByb2plY3QgZm9yCisjIG92ZXIgOSB5ZWFycy4gSW4gdGhhdCB0aW1lLCBoZSBjb250cmlidXRlZCBtYW55IHRob3VzYW5kcyBvZiBwYXRjaGVzLCBidWlsdCB0aGlzCisjIGRvY3VtZW50YXRpb24gdHJlZSwgYW5kIGVuYWJsZWQgdGVucyBvZiB0aG91c2FuZHMgb2YgZGV2ZWxvcGVycyB0byBzdWNjZWVkIHdpdGgKKyMgZW1iZWRkZWQgTGludXguIEhlIHJhbiB0aGlzIE1ha2VmaWxlIG1hbnkgdGhvdXNhbmRzIG9mIHRpbWVzLiBHb2RzcGVlZCwgRHVkZS4KIAotIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBhbmQgYWxzbwotIyBmcm9tIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGZpcnN0IHR3by4KLVNQSElOWE9QVFMgICAgPz0KLVNQSElOWEJVSUxEICAgPz0gc3BoaW54LWJ1aWxkCi1TT1VSQ0VESVIgICAgID0gLgotQlVJTERESVIgICAgICA9IF9idWlsZAotREVTVERJUiAgICAgICA9IGZpbmFsCitpZmVxICgkKERPQyksYnJpZWYteW9jdG9wcm9qZWN0cXMpCitYU0xUT1BUUyA9IC0tc3RyaW5ncGFyYW0gaHRtbC5zdHlsZXNoZWV0IGJyaWVmLXlvY3RvcHJvamVjdHFzLXN0eWxlLmNzcyBcCisgICAgICAgICAgIC0tc3RyaW5ncGFyYW0gIGNoYXB0ZXIuYXV0b2xhYmVsIDAgXAorICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBzZWN0aW9uLmF1dG9sYWJlbCAwIFwKKyAgICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwgMCBcCisgICAgICAgICAgIC0teGluY2x1ZGUKK0FMTFBSRVEgPSBodG1sIHRhcmJhbGwKK1RBUkZJTEVTID0gYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzIGJyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwgZmlndXJlcy9ieXBxcy10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZworTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbAorRklHVVJFUyA9IGZpZ3VyZXMKK1NUWUxFU0hFRVQgPSAkKERPQykvKi5jc3MKIAotaWZlcSAoJChzaGVsbCBpZiB3aGljaCAkKFNQSElOWEJVSUxEKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gZWNobyAxOyBlbHNlIGVjaG8gMDsgZmkpLDApCi0kKGVycm9yICJUaGUgJyQoU1BISU5YQlVJTEQpJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbnggaW5zdGFsbGVkIikKIGVuZGlmCiAKLSMgUHV0IGl0IGZpcnN0IHNvIHRoYXQgIm1ha2UiIHdpdGhvdXQgYXJndW1lbnQgaXMgbGlrZSAibWFrZSBoZWxwIi4KLWhlbHA6Ci0JQCQoU1BISU5YQlVJTEQpIC1NIGhlbHAgIiQoU09VUkNFRElSKSIgIiQoQlVJTERESVIpIiAkKFNQSElOWE9QVFMpICQoTykKK2lmZXEgKCQoRE9DKSxvdmVydmlldy1tYW51YWwpCitYU0xUT1BUUyA9IC0teGluY2x1ZGUKK0FMTFBSRVEgPSBodG1sIHRhcmJhbGwKK1RBUkZJTEVTID0gb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcyBvdmVydmlldy1tYW51YWwuaHRtbCBmaWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmcgZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyBmaWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIGZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgZmlndXJlcy9sYXllci1pbnB1dC5wbmcgZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBmaWd1cmVzL3BhdGNoaW5nLnBuZyBmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyBmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvaW1hZ2VzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvc2RrLnBuZworTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbAorRklHVVJFUyA9IGZpZ3VyZXMKK1NUWUxFU0hFRVQgPSAkKERPQykvKi5jc3MKIAotLlBIT05ZOiBoZWxwIE1ha2VmaWxlIGNsZWFuIHB1Ymxpc2gKK2VuZGlmCiAKLXB1Ymxpc2g6IE1ha2VmaWxlIGh0bWwgc2luZ2xlaHRtbAotCXJtIC1yZiAkKEJVSUxERElSKS8kKERFU1RESVIpLwotCW1rZGlyIC1wICQoQlVJTERESVIpLyQoREVTVERJUikvCi0JY3AgLXIgJChCVUlMRERJUikvaHRtbC8qICQoQlVJTERESVIpLyQoREVTVERJUikvCi0JY3AgJChCVUlMRERJUikvc2luZ2xlaHRtbC9pbmRleC5odG1sICQoQlVJTERESVIpLyQoREVTVERJUikvc2luZ2xlaW5kZXguaHRtbAotCXNlZCAtaSAtZSAnc0BpbmRleC5odG1sI0BzaW5nbGVpbmRleC5odG1sI0BnJyAkKEJVSUxERElSKS8kKERFU1RESVIpL3NpbmdsZWluZGV4Lmh0bWwKK2lmZXEgKCQoRE9DKSxic3AtZ3VpZGUpCitYU0xUT1BUUyA9IC0teGluY2x1ZGUKK0FMTFBSRVEgPSBodG1sIHRhcmJhbGwKK1RBUkZJTEVTID0gYnNwLXN0eWxlLmNzcyBic3AtZ3VpZGUuaHRtbCBmaWd1cmVzL2JzcC10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCisKK2VuZGlmCisKK2lmZXEgKCQoRE9DKSxkZXYtbWFudWFsKQorWFNMVE9QVFMgPSAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCB0YXJiYWxsCisjCisjIE5vdGUgdGhhdCB0aGUgdGFyZmlsZSBtaWdodCBwcm9kdWNlIHRoZSAiQ2Fubm90IHN0YXQ6IE5vIHN1Y2ggZmlsZSBvcgorIyBkaXJlY3RvcnkiIGVycm9yIG1lc3NhZ2UgZm9yIC5QTkcgZmlsZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgd2hlbiBidWlsZGluZworIyBhIHBhcnRpY3VsYXIgYnJhbmNoLiAgVGhlIGxpc3Qgb2YgZmlsZXMgaXMgYWxsLWluY2x1c2l2ZSBmb3IgYWxsIGJyYW5jaGVzLgorIyBOb3RlLCBpZiB5b3UgZG9uJ3QgcHJvdmlkZSBhIEJSQU5DSCBvcHRpb24sIGl0IGRlZmF1bHRzIHRvIHRoZSBsYXRlc3Qgc3R1ZmYuCisjIFRoaXMgd291bGQgYmUgYXBwcm9wcmlhdGUgZm9yICJtYXN0ZXIiIGJyYW5jaC4KKyMKKworVEFSRklMRVMgPSBkZXYtc3R5bGUuY3NzIGRldi1tYW51YWwuaHRtbCBmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9kZXYtdGl0bGUucG5nIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcmVjaXBlLXdvcmtmbG93LnBuZyBmaWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL211bHRpY29uZmlnX2ZpbGVzLnBuZyBmaWd1cmVzL2N1dGUtZmlsZXMtbnBtLWV4YW1wbGUucG5nCisKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCisKK2VuZGlmCisKK2lmZXEgKCQoRE9DKSxtZWdhLW1hbnVhbCkKK1hTTFRPUFRTID0gLS1zdHJpbmdwYXJhbSBodG1sLnN0eWxlc2hlZXQgbWVnYS1zdHlsZS5jc3MgXAorICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBjaGFwdGVyLmF1dG9sYWJlbCAxIFwKKyAgICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5hdXRvbGFiZWwgMSBcCisgICAgICAgICAgIC0tc3RyaW5ncGFyYW0gIHNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIDEgXAorICAgICAgICAgICAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCB0YXJiYWxsCisKK1RBUkZJTEVTID0gbWVnYS1tYW51YWwuaHRtbCBtZWdhLXN0eWxlLmNzcyBcCisgICAgICAgIGZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyBcCisJZmlndXJlcy91c2luZy1hLXByZS1idWlsdC1pbWFnZS5wbmcgXAorCWZpZ3VyZXMvcG9reS10aXRsZS5wbmcgZmlndXJlcy9idWlsZGhpc3RvcnkucG5nIFwKKyAgICAgICAgZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZyBcCisJZmlndXJlcy9zZGstdGl0bGUucG5nIGZpZ3VyZXMvYnNwLXRpdGxlLnBuZyBcCisJZmlndXJlcy9rZXJuZWwtZGV2LXRpdGxlLnBuZyBmaWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIFwKKwlmaWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgXAorICAgICAgICBmaWd1cmVzL2Rldi10aXRsZS5wbmcgXAorCWZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyBmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgXAorICAgICAgICBmaWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcgXAorCWZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgXAorCWZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvcHJvZmlsZS10aXRsZS5wbmcgZmlndXJlcy9rZXJuZWxzaGFyay1hbGwucG5nIFwKKyAgICAgICAgZmlndXJlcy9rZXJuZWxzaGFyay1jaG9vc2UtZXZlbnRzLnBuZyBcCisgICAgICAgIGZpZ3VyZXMva2VybmVsc2hhcmstaTkxNS1kaXNwbGF5LnBuZyBcCisgICAgICAgIGZpZ3VyZXMva2VybmVsc2hhcmstb3V0cHV0LWRpc3BsYXkucG5nIFwKKyAgICAgICAgZmlndXJlcy9vcHJvZmlsZXVpLWJ1c3lib3gucG5nIGZpZ3VyZXMvb3Byb2ZpbGV1aS1jb3B5LXRvLXVzZXIucG5nIFwKKyAgICAgICAgZmlndXJlcy9vcHJvZmlsZXVpLWRvd25sb2FkaW5nLnBuZyBmaWd1cmVzL29wcm9maWxldWktcHJvY2Vzc2VzLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvcGVyZi1wcm9iZS1kb19mb3JrLXByb2ZpbGUucG5nIFwKKyAgICAgICAgZmlndXJlcy9wZXJmLXJlcG9ydC1jeWNsZXMtdS5wbmcgXAorICAgICAgICBmaWd1cmVzL3BlcmYtc3lzdGVtd2lkZS5wbmcgZmlndXJlcy9wZXJmLXN5c3RlbXdpZGUtbGliYy5wbmcgXAorICAgICAgICBmaWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWFubm90YXRlLW1lbnUucG5nIFwKKyAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1hbm5vdGF0ZS11ZGhjcGMucG5nIFwKKyAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kZWJ1Z2luZm8ucG5nIFwKKyAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kc28tem9vbS5wbmcgXAorICAgICAgICBmaWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWRzby16b29tLW1lbnUucG5nIFwKKyAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1leHBhbmRlZC1zdHJpcHBlZC5wbmcgXAorICAgICAgICBmaWd1cmVzL3BlcmYtd2dldC1mbGF0LXN0cmlwcGVkLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS1mcm9tLXVzZXItZXhwYW5kZWQtc3RyaXBwZWQucG5nIFwKKyAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LXRvLXVzZXItZXhwYW5kZWQtZGVidWdpbmZvLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLXVucmVzb2x2ZWQtaGlkZGVuLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvcHlib290Y2hhcnRndWktbGludXgteW9jdG8ucG5nIFwKKyAgICAgICAgZmlndXJlcy9weWNoYXJ0LWxpbnV4LXlvY3RvLXJwbS5wbmcgXAorICAgICAgICBmaWd1cmVzL3B5Y2hhcnQtbGludXgteW9jdG8tcnBtLW5vc3RyaXAucG5nIFwKKyAgICAgICAgZmlndXJlcy9zY2hlZC13YWtldXAtcHJvZmlsZS5wbmcgZmlndXJlcy9zeXNwcm9mLWNhbGxlcnMucG5nIFwKKyAgICAgICAgZmlndXJlcy9zeXNwcm9mLWNvcHktZnJvbS11c2VyLnBuZyBmaWd1cmVzL3N5c3Byb2YtY29weS10by11c2VyLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgXAorCWZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBmaWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nIFwKKyAgICAgICAgZmlndXJlcy9sYXllci1pbnB1dC5wbmcgZmlndXJlcy9pbWFnZXMucG5nIGZpZ3VyZXMvc2RrLnBuZyBcCisJZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIGZpZ3VyZXMvcGF0Y2hpbmcucG5nIFwKKyAgICAgICAgZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgXAorCWZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyBcCisgICAgICAgIGZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9rZXktZGV2LWVsZW1lbnRzLnBuZ1wKKwlmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyBmaWd1cmVzL3JlY2lwZS13b3JrZmxvdy5wbmcgXAorCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgZmlndXJlcy9tZWdhLXRpdGxlLnBuZyBcCisJZmlndXJlcy90b2FzdGVyLXRpdGxlLnBuZyBmaWd1cmVzL2hvc3RlZC1zZXJ2aWNlLnBuZyBmaWd1cmVzL211bHRpY29uZmlnX2ZpbGVzLnBuZyBcCisJZmlndXJlcy9zaW1wbGUtY29uZmlndXJhdGlvbi5wbmcgZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIFwKKwlmaWd1cmVzL2NvbXBhdGlibGUtbGF5ZXJzLnBuZyBmaWd1cmVzL2ltcG9ydC1sYXllci5wbmcgZmlndXJlcy9uZXctcHJvamVjdC5wbmcgXAorCWZpZ3VyZXMvc2RrLWVudmlyb25tZW50LnBuZyBmaWd1cmVzL3Nkay1pbnN0YWxsZWQtc3RhbmRhcmQtc2RrLWRpcmVjdG9yeS5wbmcgXAorCWZpZ3VyZXMvc2RrLWRldnRvb2wtYWRkLWZsb3cucG5nIGZpZ3VyZXMvc2RrLWluc3RhbGxlZC1leHRlbnNpYmxlLXNkay1kaXJlY3RvcnkucG5nIFwKKwlmaWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBcCisJZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyBcCisJZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIGZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyBmaWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZyBcCisJZmlndXJlcy9iYl9tdWx0aWNvbmZpZ19maWxlcy5wbmcgZmlndXJlcy9iaXRiYWtlLXRpdGxlLnBuZyBmaWd1cmVzL2N1dGUtZmlsZXMtbnBtLWV4YW1wbGUucG5nCisKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCisKK2VuZGlmCisKK2lmZXEgKCQoRE9DKSxyZWYtbWFudWFsKQorWFNMVE9QVFMgPSAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCB0YXJiYWxsCitUQVJGSUxFUyA9IHJlZi1tYW51YWwuaHRtbCByZWYtc3R5bGUuY3NzIGZpZ3VyZXMvcG9reS10aXRsZS5wbmcgXAorCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCitlbmRpZgorCitpZmVxICgkKERPQyksc2RrLW1hbnVhbCkKK1hTTFRPUFRTID0gLS14aW5jbHVkZQorQUxMUFJFUSA9IGh0bWwgdGFyYmFsbAorVEFSRklMRVMgPSBzZGstbWFudWFsLmh0bWwgc2RrLXN0eWxlLmNzcyBmaWd1cmVzL3Nkay10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3Nkay1lbnZpcm9ubWVudC5wbmcgZmlndXJlcy9zZGstaW5zdGFsbGVkLXN0YW5kYXJkLXNkay1kaXJlY3RvcnkucG5nIFwKKwkgICBmaWd1cmVzL3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LnBuZyBmaWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZyBcCisJICAgZmlndXJlcy9zZGstZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcgXAorCSAgIGZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZyBmaWd1cmVzL3Nkay1hdXRvdG9vbHMtZmxvdy5wbmcgZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCitlbmRpZgorCitpZmVxICgkKERPQykscHJvZmlsZS1tYW51YWwpCitYU0xUT1BUUyA9IC0teGluY2x1ZGUKK0FMTFBSRVEgPSBodG1sIHRhcmJhbGwKK1RBUkZJTEVTID0gcHJvZmlsZS1tYW51YWwuaHRtbCBwcm9maWxlLW1hbnVhbC1zdHlsZS5jc3MgXAorICAgICAgICAgICBmaWd1cmVzL3Byb2ZpbGUtdGl0bGUucG5nIGZpZ3VyZXMva2VybmVsc2hhcmstYWxsLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMva2VybmVsc2hhcmstY2hvb3NlLWV2ZW50cy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2tlcm5lbHNoYXJrLWk5MTUtZGlzcGxheS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2tlcm5lbHNoYXJrLW91dHB1dC1kaXNwbGF5LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvb3Byb2ZpbGV1aS1idXN5Ym94LnBuZyBmaWd1cmVzL29wcm9maWxldWktY29weS10by11c2VyLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvb3Byb2ZpbGV1aS1kb3dubG9hZGluZy5wbmcgZmlndXJlcy9vcHJvZmlsZXVpLXByb2Nlc3Nlcy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3BlcmYtcHJvYmUtZG9fZm9yay1wcm9maWxlLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcGVyZi1yZXBvcnQtY3ljbGVzLXUucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wZXJmLXN5c3RlbXdpZGUucG5nIGZpZ3VyZXMvcGVyZi1zeXN0ZW13aWRlLWxpYmMucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1hbm5vdGF0ZS1tZW51LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtYW5ub3RhdGUtdWRoY3BjLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZGVidWdpbmZvLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZHNvLXpvb20ucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kc28tem9vbS1tZW51LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZXhwYW5kZWQtc3RyaXBwZWQucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wZXJmLXdnZXQtZmxhdC1zdHJpcHBlZC5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3BlcmYtd2dldC1nLWNvcHktZnJvbS11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLWRlYnVnaW5mby5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3BlcmYtd2dldC1nLWNvcHktdG8tdXNlci1leHBhbmRlZC1zdHJpcHBlZC5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3BlcmYtd2dldC1nLWNvcHktdG8tdXNlci1leHBhbmRlZC1zdHJpcHBlZC11bnJlc29sdmVkLWhpZGRlbi5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3B5Ym9vdGNoYXJ0Z3VpLWxpbnV4LXlvY3RvLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcHljaGFydC1saW51eC15b2N0by1ycG0ucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9weWNoYXJ0LWxpbnV4LXlvY3RvLXJwbS1ub3N0cmlwLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvc2NoZWQtd2FrZXVwLXByb2ZpbGUucG5nIGZpZ3VyZXMvc3lzcHJvZi1jYWxsZXJzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvc3lzcHJvZi1jb3B5LWZyb20tdXNlci5wbmcgZmlndXJlcy9zeXNwcm9mLWNvcHktdG8tdXNlci5wbmcKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCitlbmRpZgorCitpZmVxICgkKERPQyksa2VybmVsLWRldikKK1hTTFRPUFRTID0gLS14aW5jbHVkZQorQUxMUFJFUSA9IGh0bWwgdGFyYmFsbAorVEFSRklMRVMgPSBrZXJuZWwtZGV2Lmh0bWwga2VybmVsLWRldi1zdHlsZS5jc3MgXAorICAgICAgICAgICBmaWd1cmVzL2tlcm5lbC1kZXYtdGl0bGUucG5nIGZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIGZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZworTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbAorRklHVVJFUyA9IGZpZ3VyZXMKK1NUWUxFU0hFRVQgPSAkKERPQykvKi5jc3MKK2VuZGlmCisKK2lmZXEgKCQoRE9DKSx0b2FzdGVyLW1hbnVhbCkKK1hTTFRPUFRTID0gLS14aW5jbHVkZQorQUxMUFJFUSA9IGh0bWwgdGFyYmFsbAorVEFSRklMRVMgPSB0b2FzdGVyLW1hbnVhbC5odG1sIHRvYXN0ZXItbWFudWFsLXN0eWxlLmNzcyBcCisJICAgZmlndXJlcy90b2FzdGVyLXRpdGxlLnBuZyBmaWd1cmVzL3NpbXBsZS1jb25maWd1cmF0aW9uLnBuZyBcCisJICAgZmlndXJlcy9ob3N0ZWQtc2VydmljZS5wbmcgXAorCSAgIGZpZ3VyZXMvY29tcGF0aWJsZS1sYXllcnMucG5nIGZpZ3VyZXMvaW1wb3J0LWxheWVyLnBuZyBmaWd1cmVzL25ldy1wcm9qZWN0LnBuZworTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbAorRklHVVJFUyA9IGZpZ3VyZXMKK1NUWUxFU0hFRVQgPSAkKERPQykvKi5jc3MKK2VuZGlmCisKKworaWZlcSAoJChET0MpLHRlc3QtbWFudWFsKQorWFNMVE9QVFMgPSAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCB0YXJiYWxsCitUQVJGSUxFUyA9IHRlc3QtbWFudWFsLmh0bWwgdGVzdC1tYW51YWwtc3R5bGUuY3NzIFwKKwkgICBmaWd1cmVzL3Rlc3QtbWFudWFsLXRpdGxlLnBuZyBmaWd1cmVzL2FiLXRlc3QtY2x1c3Rlci5wbmcKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCitlbmRpZgorCisjIworIyBUaGVzZSBVUkkgc2hvdWxkIGJlIHJld3JpdHRlbiBieSB5b3VyIGRpc3RyaWJ1dGlvbidzIHhtbCBjYXRhbG9nIHRvCisjIG1hdGNoIHlvdXIgbG9jYWxseSBpbnN0YWxsZWQgWFNMIHN0eWxlc2hlZXRzLgorWFNMX0JBU0VfVVJJICA9IGh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEKK1hTTF9YSFRNTF9VUkkgPSAkKFhTTF9CQVNFX1VSSSkveGh0bWwvZG9jYm9vay54c2wKKworYWxsOiAkKEFMTFBSRVEpCisKK3BkZjoKK2lmZXEgKCQoRE9DKSxicmllZi15b2N0b3Byb2plY3RxcykKKwlAZWNobyAiICIKKwlAZWNobyAiRVJST1I6IFlvdSBjYW5ub3QgZ2VuZXJhdGUgYSBQREYgZmlsZSBmb3IgYnJpZWYteW9jdG9wcm9qZWN0cXMuIgorCUBlY2hvICIgIgorCitlbHNlIGlmZXEgKCQoRE9DKSxtZWdhLW1hbnVhbCkKKwlAZWNobyAiICIKKwlAZWNobyAiRVJST1I6IFlvdSBjYW5ub3QgZ2VuZXJhdGUgYSBtZWdhLW1hbnVhbCBQREYgZmlsZS4iCisJQGVjaG8gIiAiCisKK2Vsc2UKKworCWNkICQoRE9DKTsgLi4vdG9vbHMvcG9reS1kb2Nib29rLXRvLXBkZiAkKERPQykueG1sIC4uL3RlbXBsYXRlOyBjZCAuLgorZW5kaWYKKworaHRtbDoKK2lmZXEgKCQoRE9DKSxtZWdhLW1hbnVhbCkKKyMgICAgICAgU2VlIGh0dHA6Ly93d3cuc2FnZWhpbGwubmV0L2RvY2Jvb2t4c2wvSHRtbE91dHB1dC5odG1sCisJQGVjaG8gIiAiCisJQGVjaG8gIioqKioqKioqIEJ1aWxkaW5nICIkKERPQykKKwlAZWNobyAiICIKKwljZCAkKERPQyk7IHhzbHRwcm9jICQoWFNMVE9QVFMpIC1vICQoRE9DKS5odG1sICQoRE9DKS1jdXN0b21pemF0aW9uLnhzbCAkKERPQykueG1sOyBjZCAuLgorCUBlY2hvICIgIgorCUBlY2hvICIqKioqKioqKiBVc2luZyBtZWdhLW1hbnVhbC5zZWQgdG8gcHJvY2VzcyBleHRlcm5hbCBsaW5rcyIKKwlAZWNobyAiICIKKwljZCAkKERPQyk7IHNlZCAtZiAuLi90b29scy9tZWdhLW1hbnVhbC5zZWQgPCBtZWdhLW1hbnVhbC5odG1sID4gbWVnYS1vdXRwdXQuaHRtbDsgY2QgLi4KKwlAZWNobyAiICIKKwlAZWNobyAiKioqKioqKiogQ2xlYW5pbmcgdXAgdHJhbnNpZW50IGZpbGUgbWVnYS1vdXRwdXQuaHRtbCIKKwlAZWNobyAiICIKKwljZCAkKERPQyk7IHJtIG1lZ2EtbWFudWFsLmh0bWw7IG12IG1lZ2Etb3V0cHV0Lmh0bWwgbWVnYS1tYW51YWwuaHRtbDsgY2QgLi4KK2Vsc2UKKyMgICAgICAgU2VlIGh0dHA6Ly93d3cuc2FnZWhpbGwubmV0L2RvY2Jvb2t4c2wvSHRtbE91dHB1dC5odG1sCisJQGVjaG8gIiAiCisJQGVjaG8gIioqKioqKioqIEJ1aWxkaW5nICIkKERPQykKKwlAZWNobyAiICIKKwljZCAkKERPQyk7IHhzbHRwcm9jICQoWFNMVE9QVFMpIC1vICQoRE9DKS5odG1sICQoRE9DKS1jdXN0b21pemF0aW9uLnhzbCAkKERPQykueG1sOyBjZCAuLgorZW5kaWYKKworCit0YXJiYWxsOiBodG1sCisJQGVjaG8gIiAiCisJQGVjaG8gIioqKioqKioqIENyZWF0aW5nIFRhcmJhbGwgb2YgZG9jdW1lbnQgZmlsZXMiCisJQGVjaG8gIiAiCisJY2QgJChET0MpOyB0YXIgLWN2emYgJChET0MpLnRneiAkKFRBUkZJTEVTKTsgY2QgLi4KKwordmFsaWRhdGU6CisJY2QgJChET0MpOyB4bWxsaW50IC0tcG9zdHZhbGlkIC0teGluY2x1ZGUgLS1ub291dCAkKERPQykueG1sOyBjZCAuLgorCisKK3B1Ymxpc2g6CisJQGlmIHRlc3QgLWYgJChET0MpLyQoRE9DKS5odG1sOyBcCisJICB0aGVuIFwKKyAgICAgICAgICAgIGVjaG8gIiAiOyBcCisgICAgICAgICAgICBlY2hvICIqKioqKioqKiBQdWJsaXNoaW5nICIkKERPQykiLmh0bWwiOyBcCisgICAgICAgICAgICBlY2hvICIgIjsgXAorICAgICAgICAgICAgc2NwIC1yICQoTUFOVUFMUykgJChTVFlMRVNIRUVUKSB3d3cueW9jdG9wcm9qZWN0Lm9yZzovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKKyAgICAgICAgICAgIGNkICQoRE9DKTsgc2NwIC1yICQoRklHVVJFUykgd3d3LnlvY3RvcHJvamVjdC5vcmc6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCisJZWxzZSBcCisgICAgICAgICAgZWNobyAiICI7IFwKKyAgICAgICAgICBlY2hvICQoRE9DKSIuaHRtbCBtaXNzaW5nLiAgR2VuZXJhdGUgdGhlIGZpbGUgZmlyc3QgdGhlbiB0cnkgYWdhaW4uIjsgXAorICAgICAgICAgIGVjaG8gIiAiOyBcCisJZmkKIAogY2xlYW46Ci0JQHJtIC1yZiAkKEJVSUxERElSKQotCi0jIENhdGNoLWFsbCB0YXJnZXQ6IHJvdXRlIGFsbCB1bmtub3duIHRhcmdldHMgdG8gU3BoaW54IHVzaW5nIHRoZSBuZXcKLSMgIm1ha2UgbW9kZSIgb3B0aW9uLiAgJChPKSBpcyBtZWFudCBhcyBhIHNob3J0Y3V0IGZvciAkKFNQSElOWE9QVFMpLgotJTogTWFrZWZpbGUKLQlAJChTUEhJTlhCVUlMRCkgLU0gJEAgIiQoU09VUkNFRElSKSIgIiQoQlVJTERESVIpIiAkKFNQSElOWE9QVFMpICQoTykKKwlybSAtcmYgJChNQU5VQUxTKTsgcm0gJChET0MpLyQoRE9DKS50Z3o7CmRpZmYgLS1naXQgYS9wb2t5L01ha2VmaWxlIGIvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlLnNwaGlueApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9NYWtlZmlsZQpyZW5hbWUgdG8gcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlLnNwaGlueApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL1JFQURNRSBiL3Bva3kvZG9jdW1lbnRhdGlvbi9SRUFETUUKaW5kZXggZmU4Njg3Ni4uZmNlM2NmZSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL1JFQURNRQorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vUkVBRE1FCkBAIC0xMjEsNyArMTIxLDcgQEAKIFRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uIGxvY2FsbHksIHJ1bjoKIAogICQgY2QgZG9jdW1lbnRhdGlvbgotICQgbWFrZSBodG1sCisgJCBtYWtlIC1mIE1ha2VmaWxlLnNwaGlueCBodG1sCiAKIFRoZSByZXN1bHRpbmcgSFRNTCBpbmRleCBwYWdlIHdpbGwgYmUgX2J1aWxkL2h0bWwvaW5kZXguaHRtbCwgYW5kIHlvdQogY2FuIGJyb3dzZSB5b3VyIG93biBjb3B5IG9mIHRoZSBsb2NhbGx5IGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIHdpdGgKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1jb21tYW5kLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1jb21tYW5kLnJzdAppbmRleCBkMzQ4YWRmLi5kZTg1NDc3IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtY29tbWFuZC5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LWNvbW1hbmQucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqCiBVc2luZyB0aGUgQ29tbWFuZCBMaW5lCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtY29tbWFuZC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtY29tbWFuZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg4YzBhYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1jb21tYW5kLnhtbApAQCAtMCwwICsxLDI2NiBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSd1c2luZy10aGUtY29tbWFuZC1saW5lJz4KKzx0aXRsZT5Vc2luZyB0aGUgQ29tbWFuZCBMaW5lPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBSZWNhbGwgdGhhdCBlYXJsaWVyIHRoZSBtYW51YWwgZGlzY3Vzc2VkIGhvdyB0byB1c2UgYW4gZXhpc3RpbmcgdG9vbGNoYWluCisgICAgICAgIHRhcmJhbGwgdGhhdCBoYWQgYmVlbiBpbnN0YWxsZWQgaW50byB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24KKyAgICAgICAgZGlyZWN0b3J5LCA8ZmlsZW5hbWU+L29wdC9wb2t5LyZESVNUUk87PC9maWxlbmFtZT4sIHdoaWNoIGlzIG91dHNpZGUgb2YgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgKHNlZSB0aGUgc2VjdGlvbiAiPGxpbmsgbGlua2VuZD0ndXNpbmctYW4tZXhpc3RpbmctdG9vbGNoYWluLXRhcmJhbGwnPlVzaW5nIGEgQ3Jvc3MtVG9vbGNoYWluIFRhcmJhbGwpPC9saW5rPiIuCisgICAgICAgIEFuZCwgdGhhdCBzb3VyY2luZyB5b3VyIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgaW5pdGlhbGl6ZXMgYSBzdWl0YWJsZSBjcm9zcy10b29sY2hhaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIER1cmluZyB0aGlzIHNldHVwLCBsb2NhdGlvbnMgZm9yIHRoZSBjb21waWxlciwgUUVNVSBzY3JpcHRzLCBRRU1VIGJpbmFyeSwKKyAgICAgICAgYSBzcGVjaWFsIHZlcnNpb24gb2YgPGZpbGVuYW1lPnBrZ2NvbmZpZzwvZmlsZW5hbWU+IGFuZCBvdGhlciB1c2VmdWwKKyAgICAgICAgdXRpbGl0aWVzIGFyZSBhZGRlZCB0byB0aGUgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgQWxzbywgdmFyaWFibGVzIHRvIGFzc2lzdAorICAgICAgICA8ZmlsZW5hbWU+cGtnY29uZmlnPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPgorICAgICAgICBhcmUgYWxzbyBkZWZpbmVkIHNvIHRoYXQsIGZvciBleGFtcGxlLCA8ZmlsZW5hbWU+Y29uZmlndXJlLnNoPC9maWxlbmFtZT4KKyAgICAgICAgY2FuIGZpbmQgcHJlLWdlbmVyYXRlZCB0ZXN0IHJlc3VsdHMgZm9yIHRlc3RzIHRoYXQgbmVlZCB0YXJnZXQgaGFyZHdhcmUKKyAgICAgICAgb24gd2hpY2ggdG8gcnVuLgorICAgICAgICBZb3UgY2FuIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NldHRpbmctdXAtdGhlLWNyb3NzLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5TZXR0aW5nIFVwIHRoZSBDcm9zcy1EZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24gZm9yIHRoZSBsaXN0IG9mIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgICAgZXN0YWJsaXNoZWQgYnkgdGhlIHNjcmlwdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQ29sbGVjdGl2ZWx5LCB0aGVzZSBjb25kaXRpb25zIGFsbG93IHlvdSB0byBlYXNpbHkgdXNlIHRoZSB0b29sY2hhaW4KKyAgICAgICAgb3V0c2lkZSBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50IG9uIGJvdGggQXV0b3Rvb2xzLWJhc2VkCisgICAgICAgIHByb2plY3RzIGFuZCBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cy4KKyAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciBib3RoIHRoZXNlIHR5cGVzIG9mIHByb2plY3RzLgorICAgIDwvcGFyYT4KKworCis8c2VjdGlvbiBpZD0nYXV0b3Rvb2xzLWJhc2VkLXByb2plY3RzJz4KKzx0aXRsZT5BdXRvdG9vbHMtQmFzZWQgUHJvamVjdHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIE9uY2UgeW91IGhhdmUgYSBzdWl0YWJsZSBjcm9zcy10b29sY2hhaW4gaW5zdGFsbGVkLCBpdCBpcyB2ZXJ5IGVhc3kgdG8KKyAgICAgICAgZGV2ZWxvcCBhIHByb2plY3Qgb3V0c2lkZSBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgc2ltcGxlICJIZWxsb3dvcmxkIiBleGFtcGxlIHRoYXQgc2hvd3MgaG93CisgICAgICAgIHRvIHNldCB1cCwgY29tcGlsZSwgYW5kIHJ1biB0aGUgcHJvamVjdC4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYW5kLXJ1bm5pbmctYS1wcm9qZWN0LWJhc2VkLW9uLWdudS1hdXRvdG9vbHMnPgorICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYW5kIFJ1bm5pbmcgYSBQcm9qZWN0IEJhc2VkIG9uIEdOVSBBdXRvdG9vbHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhIHNpbXBsZSBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdDoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSB5b3VyIGRpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSBjbGVhbiBkaXJlY3RvcnkgZm9yIHlvdXIgcHJvamVjdCBhbmQgdGhlbiBtYWtlCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGlyZWN0b3J5IHlvdXIgd29ya2luZyBsb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1rZGlyICRIT01FL2hlbGxvd29ybGQKKyAgICAgJCBjZCAkSE9NRS9oZWxsb3dvcmxkCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBvcHVsYXRlIHRoZSBkaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIDxmaWxlbmFtZT5oZWxsby5jPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmNvbmZpZ3VyZS5pbjwvZmlsZW5hbWU+IGZpbGVzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Rm9yIDxmaWxlbmFtZT5oZWxsby5jPC9maWxlbmFtZT4sIGluY2x1ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworCisgICAgIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgIHByaW50ZigiSGVsbG8gV29ybGQhXG4iKTsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Gb3IgPGZpbGVuYW1lPk1ha2VmaWxlLmFtPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGVzZSBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJpbl9QUk9HUkFNUyA9IGhlbGxvCisgICAgIGhlbGxvX1NPVVJDRVMgPSBoZWxsby5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciA8ZmlsZW5hbWU+Y29uZmlndXJlLmluPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGVzZSBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFDX0lOSVQoaGVsbG8uYykKKyAgICAgQU1fSU5JVF9BVVRPTUFLRShoZWxsbywwLjEpCisgICAgIEFDX1BST0dfQ0MKKyAgICAgQUNfUFJPR19JTlNUQUxMCisgICAgIEFDX09VVFBVVChNYWtlZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U291cmNlIHRoZSBjcm9zcy10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgZmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxsYXRpb24gb2YgdGhlIGNyb3NzLXRvb2xjaGFpbiBjcmVhdGVzIGEgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgdGhlIEFEVAorICAgICAgICAgICAgICAgICAgICB3YXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBwcm9qZWN0LCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgdGhpcyBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYmVnaW5zIHdpdGggdGhlIHN0cmluZyAiZW52aXJvbm1lbnQtc2V0dXAiIGFuZCBjb250YWlucworICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgInBva3ktbGludXgiLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBzb3VyY2VzIGEgc2NyaXB0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgQURUIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdGhhdCB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAzMi1iaXQgSW50ZWwgeDg2IEFyY2hpdGVjdHVyZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICZESVNUUk9fTkFNRTsgWW9jdG8gUHJvamVjdCByZWxlYXNlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIC9vcHQvcG9reS8mRElTVFJPOy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2VuZXJhdGUgdGhlIGxvY2FsIGFjbG9jYWwubTQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgYW5kIGNyZWF0ZSB0aGUgY29uZmlndXJlIHNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIEdOVSBBdXRvdG9vbHMgZ2VuZXJhdGUgdGhlIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsLm00PC9maWxlbmFtZT4gZmlsZXMgYW5kIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGFjbG9jYWwKKyAgICAgJCBhdXRvY29uZgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HZW5lcmF0ZSBmaWxlcyBuZWVkZWQgYnkgR05VCisgICAgICAgICAgICAgICAgICAgIGNvZGluZyBzdGFuZGFyZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgR05VIGNvZGluZyBzdGFuZGFyZHMgcmVxdWlyZSBjZXJ0YWluIGZpbGVzIGluIG9yZGVyIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCB0byBiZSBjb21wbGlhbnQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjcmVhdGVzIHRob3NlIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgdG91Y2ggTkVXUyBSRUFETUUgQVVUSE9SUyBDaGFuZ2VMb2cKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2VuZXJhdGUgdGhlIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICBmaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBnZW5lcmF0ZXMgdGhlIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGF1dG9tYWtlIC1hCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyb3NzLWNvbXBpbGUgdGhlIHByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNvbXBpbGVzIHRoZSBwcm9qZWN0IHVzaW5nIHRoZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdVUkVfRkxBR1MnPjxmaWxlbmFtZT5DT05GSUdVUkVfRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHByb3ZpZGVzIHRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IKKyAgICAgICAgICAgICAgICAgICAgR05VIGNvbmZpZ3VyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vY29uZmlndXJlICR7Q09ORklHVVJFX0ZMQUdTfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWtlIGFuZCBpbnN0YWxsIHRoZSBwcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR3byBjb21tYW5kcyBnZW5lcmF0ZSBhbmQgaW5zdGFsbCB0aGUgcHJvamVjdCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlCisgICAgICQgbWFrZSBpbnN0YWxsIERFU1RESVI9Li90bXAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VmVyaWZ5IHRoZSBpbnN0YWxsYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGEgc2ltcGxlIHdheSB0byB2ZXJpZnkgdGhlIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICBvZiB5b3VyIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJpbnRzIHRoZSBhcmNoaXRlY3R1cmUgb24gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgdGhlIGJpbmFyeSBmaWxlIGNhbiBydW4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJjaGl0ZWN0dXJlIHNob3VsZCBiZSB0aGUgc2FtZSBhcmNoaXRlY3R1cmUgdGhhdAorICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFsbGVkIGNyb3NzLXRvb2xjaGFpbiBzdXBwb3J0cy4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGZpbGUgLi90bXAvdXNyL2xvY2FsL2Jpbi9oZWxsbworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FeGVjdXRlIHlvdXIgcHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUbyBleGVjdXRlIHRoZSBwcm9qZWN0IGluIHRoZSBzaGVsbCwgc2ltcGx5IGVudGVyIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgYWxzbyBjb3B5IHRoZSBiaW5hcnkgdG8gdGhlIGFjdHVhbCB0YXJnZXQgaGFyZHdhcmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIHJ1biB0aGUgcHJvamVjdCB0aGVyZSBhcyB3ZWxsOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi9oZWxsbworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Bhc3NpbmctaG9zdC1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPlBhc3NpbmcgSG9zdCBPcHRpb25zPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBhbiBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdCwgeW91IGNhbiB1c2UgdGhlIGNyb3NzLXRvb2xjaGFpbiBieSBqdXN0CisgICAgICAgICAgICBwYXNzaW5nIHRoZSBhcHByb3ByaWF0ZSBob3N0IG9wdGlvbiB0byA8ZmlsZW5hbWU+Y29uZmlndXJlLnNoPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUgaG9zdCBvcHRpb24geW91IHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHNldHVwCisgICAgICAgICAgICBzY3JpcHQgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB5b3UgaW5zdGFsbGVkIHRoZSBjcm9zcy10b29sY2hhaW4uCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGhvc3Qgb3B0aW9uIGZvciBhbiBBUk0tYmFzZWQgdGFyZ2V0IHRoYXQgdXNlcyB0aGUgR05VIEVBQkkKKyAgICAgICAgICAgIGlzIDxmaWxlbmFtZT5hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgWW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBpcworICAgICAgICAgICAgPGZpbGVuYW1lPmVudmlyb25tZW50LXNldHVwLWFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaHVzLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd29ya3MgdG8gdXBkYXRlIHlvdXIgcHJvamVjdCBhbmQKKyAgICAgICAgICAgIHJlYnVpbGQgaXQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGNyb3NzLXRvb2xjaGFpbiB0b29sczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCAuL2NvbmZpZ3VyZSAtLWhvc3Q9YXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkgXAorICAgICAgICAtLXdpdGgtbGlidG9vbC1zeXNyb290PTxyZXBsYWNlYWJsZT5zeXNyb290X2RpcjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IHNjcmlwdCByZXN1bHRzIGluIHByb2JsZW1zIHJlY29nbml6aW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXdpdGgtbGlidG9vbC1zeXNyb290PTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnN5c3Jvb3QtZGlyPC9yZXBsYWNlYWJsZT4gb3B0aW9uLAorICAgICAgICAgICAgICAgIHJlZ2VuZXJhdGUgdGhlIHNjcmlwdCB0byBlbmFibGUgdGhlIHN1cHBvcnQgYnkgZG9pbmcgdGhlIGZvbGxvd2luZyBhbmQgdGhlbgorICAgICAgICAgICAgICAgIHJ1biB0aGUgc2NyaXB0IGFnYWluOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBsaWJ0b29saXplIC0tYXV0b21ha2UKKyAgICAgJCBhY2xvY2FsIC1JICR7T0VDT1JFX05BVElWRV9TWVNST09UfS91c3Ivc2hhcmUvYWNsb2NhbCBcCisgICAgICAgIFstSSA8cmVwbGFjZWFibGU+ZGlyX2NvbnRhaW5pbmdfeW91cl9wcm9qZWN0LXNwZWNpZmljX200X21hY3JvczwvcmVwbGFjZWFibGU+XQorICAgICAkIGF1dG9jb25mCisgICAgICQgYXV0b2hlYWRlcgorICAgICAkIGF1dG9tYWtlIC1hCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPgorPHRpdGxlPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMsIHRoZSBjcm9zcy10b29sY2hhaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgICAgIGVzdGFibGlzaGVkIGJ5IHJ1bm5pbmcgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgYXJlIHN1YmplY3QgdG8gZ2VuZXJhbCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHJ1bGVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUbyBpbGx1c3RyYXRlIHRoaXMsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZm91ciBjcm9zcy10b29sY2hhaW4KKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DQyc+Q0M8L3VsaW5rPj1pNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8xLjgvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MRCc+TEQ8L3VsaW5rPj1pNTg2LXBva3ktbGludXgtbGQgLS1zeXNyb290PS9vcHQvcG9reS8xLjgvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DRkxBR1MnPkNGTEFHUzwvdWxpbms+PS1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMKKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNYWEZMQUdTJz5DWFhGTEFHUzwvdWxpbms+PS1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBOb3csIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgdGhyZWUgY2FzZXM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNhc2UgMSAtIE5vIFZhcmlhYmxlcyBTZXQgaW4gdGhlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGVzZSB2YXJpYWJsZXMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+LCB0aGUgdmFyaWFibGVzIHJldGFpbiB0aGVpcgorICAgICAgICAgICAgICAgIHZhbHVlcyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNhc2UgMiAtIFZhcmlhYmxlcyBTZXQgaW4gdGhlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgU3BlY2lmaWNhbGx5IHNldHRpbmcgdmFyaWFibGVzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGR1cmluZyB0aGUgYnVpbGQgcmVzdWx0cyBpbiB0aGUKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR0aW5ncyBvZiB0aGUgdmFyaWFibGVzIGJlaW5nIG92ZXJ3cml0dGVuLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DYXNlIDMgLSBWYXJpYWJsZXMgU2V0IHdoZW4gdGhlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGlzIEV4ZWN1dGVkIGZyb20gdGhlIENvbW1hbmQgTGluZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEV4ZWN1dGluZyB0aGUgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gZnJvbSB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgIGxpbmUgcmVzdWx0cyBpbiB0aGUgdmFyaWFibGVzIGJlaW5nIG92ZXJ3cml0dGVuIHdpdGgKKyAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgY29udGVudCByZWdhcmRsZXNzIG9mIHdoYXQgaXMgYmVpbmcgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3QgY29uc2lkZXJlZCB1bmxlc3MKKyAgICAgICAgICAgICAgICB5b3UgdXNlIHRoZSAiLWUiIGZsYWcgZHVyaW5nIHRoZSBidWlsZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWFrZSAtZSA8cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgdGhpcyBmbGFnLCB0aGVuIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgdmFyaWFibGVzIG92ZXJyaWRlIGFueSB2YXJpYWJsZXMgc3BlY2lmaWNhbGx5IHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgRm9yIHRoZSBsaXN0IG9mIHZhcmlhYmxlcyBzZXQgdXAgYnkgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudAorICAgICAgICAgICAgc2V0dXAgc2NyaXB0LCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2V0dGluZy11cC10aGUtY3Jvc3MtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPlNldHRpbmcgVXAgdGhlIENyb3NzLURldmVsb3BtZW50IEVudmlyb25tZW50PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1pbnRyby5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtaW50cm8ucnN0CmluZGV4IDkyYzE1NzAuLjUzNzJmNGYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1pbnRyby5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LWludHJvLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFRoZSBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBUb29sa2l0IChBRFQpCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LWludHJvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjc1NzYzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LWludHJvLnhtbApAQCAtMCwwICsxLDE4MSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdhZHQtaW50cm8nPgorICAgIDx0aXRsZT5UaGUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgVG9vbGtpdCAoQURUKTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgUGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBzb2x1dGlvbiBpcyBhbiBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudAorICAgICAgICBUb29sa2l0IChBRFQpLgorICAgICAgICBUaGUgQURUIHByb3ZpZGVzIHlvdSB3aXRoIGEgY3VzdG9tLWJ1aWx0LCBjcm9zcy1kZXZlbG9wbWVudAorICAgICAgICBwbGF0Zm9ybSBzdWl0ZWQgZm9yIGRldmVsb3BpbmcgYSB1c2VyLXRhcmdldGVkIHByb2R1Y3QgYXBwbGljYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZ1bmRhbWVudGFsbHksIHRoZSBBRFQgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY3Jvc3MtdG9vbGNoYWluIGFuZCBtYXRjaGluZworICAgICAgICAgICAgICAgIHN5c3Jvb3QgYm90aCBidWlsdCBieSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgorICAgICAgICAgICAgICAgIFRoZSB0b29sY2hhaW4gYW5kIHN5c3Jvb3QgYXJlIGJhc2VkIG9uIGEKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIGV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgd2hpY2ggYWxsb3dzIHlvdSB0byBjcm9zcy1kZXZlbG9wIG9uIHRoZSBob3N0IG1hY2hpbmUgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEVjbGlwc2UgSURFIFlvY3RvIFBsdWctaW4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKSwgd2hpY2ggbGV0cyB5b3Ugc2ltdWxhdGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlZhcmlvdXMgdXNlci1zcGFjZSB0b29scyB0aGF0IGdyZWF0bHkgZW5oYW5jZSB5b3VyIGFwcGxpY2F0aW9uCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3RoZS1jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPgorICAgICAgICA8dGl0bGU+VGhlIENyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluPC91bGluaz4KKyAgICAgICAgICAgIGNvbnNpc3RzIG9mIGEgY3Jvc3MtY29tcGlsZXIsIGNyb3NzLWxpbmtlciwgYW5kIGNyb3NzLWRlYnVnZ2VyCisgICAgICAgICAgICB0aGF0IGFyZSB1c2VkIHRvIGRldmVsb3AgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgZm9yIHRhcmdldGVkCisgICAgICAgICAgICBoYXJkd2FyZS4KKyAgICAgICAgICAgIFRoaXMgdG9vbGNoYWluIGlzIGNyZWF0ZWQgZWl0aGVyIGJ5IHJ1bm5pbmcgdGhlIEFEVCBJbnN0YWxsZXIKKyAgICAgICAgICAgIHNjcmlwdCwgYSB0b29sY2hhaW4gaW5zdGFsbGVyIHNjcmlwdCwgb3IgdGhyb3VnaCBhCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICB0aGF0IGlzIGJhc2VkIG9uIHlvdXIgTWV0YWRhdGEgY29uZmlndXJhdGlvbiBvciBleHRlbnNpb24gZm9yCisgICAgICAgICAgICB5b3VyIHRhcmdldGVkIGRldmljZS4KKyAgICAgICAgICAgIFRoZSBjcm9zcy10b29sY2hhaW4gd29ya3Mgd2l0aCBhIG1hdGNoaW5nIHRhcmdldCBzeXNyb290LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N5c3Jvb3QnPgorICAgICAgICA8dGl0bGU+U3lzcm9vdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbWF0Y2hpbmcgdGFyZ2V0IHN5c3Jvb3QgY29udGFpbnMgbmVlZGVkIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgZ2VuZXJhdGluZworICAgICAgICAgICAgYmluYXJpZXMgdGhhdCBydW4gb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICBUaGUgc3lzcm9vdCBpcyBiYXNlZCBvbiB0aGUgdGFyZ2V0IHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0aGF0IGlzIGJ1aWx0IGJ5CisgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhbmQgdXNlcyB0aGUgc2FtZSBNZXRhZGF0YSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoZSBjcm9zcy10b29sY2hhaW4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZWNsaXBzZS1vdmVydmlldyc+CisgICAgICAgIDx0aXRsZT5FY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIEVjbGlwc2UgSURFIGlzIGEgcG9wdWxhciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgaXQgZnVsbHkgc3VwcG9ydHMKKyAgICAgICAgICAgIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgV2hlbiB5b3UgaW5zdGFsbCBhbmQgY29uZmlndXJlIHRoZSBFY2xpcHNlIFlvY3RvIFByb2plY3QgUGx1Zy1pbiBpbnRvCisgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUsIHlvdSBtYXhpbWl6ZSB5b3VyIFlvY3RvIFByb2plY3QgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgIEluc3RhbGxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBQbHVnLWluIHJlc3VsdHMgaW4gYW4gZW52aXJvbm1lbnQgdGhhdAorICAgICAgICAgICAgaGFzIGV4dGVuc2lvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGxldCB5b3UgbW9yZSBlYXNpbHkgZGV2ZWxvcCBzb2Z0d2FyZS4KKyAgICAgICAgICAgIFRoZXNlIGV4dGVuc2lvbnMgYWxsb3cgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCBkZXBsb3ltZW50LCBhbmQgZXhlY3V0aW9uIG9mCisgICAgICAgICAgICB5b3VyIG91dHB1dCBpbnRvIGEgUUVNVSBlbXVsYXRpb24gc2Vzc2lvbi4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBwZXJmb3JtIGNyb3NzLWRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nLgorICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IGFsc28gc3VwcG9ydHMgYSBzdWl0ZSBvZiB0b29scyB0aGF0IGFsbG93cyB5b3UgdG8gcGVyZm9ybQorICAgICAgICAgICAgcmVtb3RlIHByb2ZpbGluZywgdHJhY2luZywgY29sbGVjdGlvbiBvZiBwb3dlciBkYXRhLCBjb2xsZWN0aW9uIG9mCisgICAgICAgICAgICBsYXRlbmN5IGRhdGEsIGFuZCBjb2xsZWN0aW9uIG9mIHBlcmZvcm1hbmNlIGRhdGEuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgd29ya2Zsb3cgdGhhdCB1c2VzIHRoZSBFY2xpcHNlCisgICAgICAgICAgICBJREUgYW5kIGZvciBhIGRldGFpbGVkIGV4YW1wbGUgb2YgaG93IHRvIGluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgRWNsaXBzZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBQbHVnLWluLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWR0LWVjbGlwc2UnPldvcmtpbmcgV2l0aGluIEVjbGlwc2U8L3VsaW5rPiIgc2VjdGlvbgorICAgICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3RoZS1xZW11LWVtdWxhdG9yJz4KKyAgICAgICAgPHRpdGxlPlRoZSBRRU1VIEVtdWxhdG9yPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBRRU1VIGVtdWxhdG9yIGFsbG93cyB5b3UgdG8gc2ltdWxhdGUgeW91ciBoYXJkd2FyZSB3aGlsZSBydW5uaW5nIHlvdXIKKyAgICAgICAgICAgIGFwcGxpY2F0aW9uIG9yIGltYWdlLgorICAgICAgICAgICAgUUVNVSBpcyBtYWRlIGF2YWlsYWJsZSBhIG51bWJlciBvZiB3YXlzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgdGhlIEFEVCBJbnN0YWxsZXIgc2NyaXB0IHRvIGluc3RhbGwgQURULCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgd2hldGhlciBvciBub3QgdG8gaW5zdGFsbCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGNsb25lZCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB0byBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBoYXZlIHNvdXJjZWQgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCwgUUVNVSBpcworICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgYW5kIGF1dG9tYXRpY2FsbHkgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGRvd25sb2FkZWQgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYW5kIHVucGFja2VkCisgICAgICAgICAgICAgICAgICAgIGl0IHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgeW91IGhhdmUgc291cmNlZCB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCBRRU1VIGlzCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBhbmQgYXV0b21hdGljYWxseSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBjcm9zcy10b29sY2hhaW4gdGFyYmFsbCBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgIGhhdmUgc291cmNlZCB0aGUgdG9vbGNoYWluJ3Mgc2V0dXAgZW52aXJvbm1lbnQgc2NyaXB0LCBRRU1VCisgICAgICAgICAgICAgICAgICAgIGlzIGFsc28gaW5zdGFsbGVkIGFuZCBhdXRvbWF0aWNhbGx5IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2VyLXNwYWNlLXRvb2xzJz4KKyAgICAgICAgPHRpdGxlPlVzZXItU3BhY2UgVG9vbHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlci1zcGFjZSB0b29scyBhcmUgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFlvdSB3aWxsIGZpbmQgdGhlc2UgdG9vbHMgaGVscGZ1bCBkdXJpbmcgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICBUaGUgdG9vbHMgaW5jbHVkZSBMYXRlbmN5VE9QLCBQb3dlclRPUCwgT1Byb2ZpbGUsIFBlcmYsIFN5c3RlbVRhcCwgYW5kIEx0dG5nLXVzdC4KKyAgICAgICAgICAgIFRoZXNlIHRvb2xzIGFyZSBjb21tb24gZGV2ZWxvcG1lbnQgdG9vbHMgZm9yIHRoZSBMaW51eCBwbGF0Zm9ybS4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MYXRlbmN5VE9QOjwvZW1waGFzaXM+IExhdGVuY3lUT1AgZm9jdXNlcyBvbiBsYXRlbmN5CisgICAgICAgICAgICAgICAgICAgIHRoYXQgY2F1c2VzIHNraXBzIGluIGF1ZGlvLAorICAgICAgICAgICAgICAgICAgICBzdHV0dGVycyBpbiB5b3VyIGRlc2t0b3AgZXhwZXJpZW5jZSwgb3Igc2l0dWF0aW9ucyB0aGF0IG92ZXJsb2FkIHlvdXIgc2VydmVyCisgICAgICAgICAgICAgICAgICAgIGV2ZW4gd2hlbiB5b3UgaGF2ZSBwbGVudHkgb2YgQ1BVIHBvd2VyIGxlZnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UG93ZXJUT1A6PC9lbXBoYXNpcz4gSGVscHMgeW91IGRldGVybWluZSB3aGF0CisgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGlzIHVzaW5nIHRoZSBtb3N0IHBvd2VyLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgUG93ZXJUT1AgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvJz48L3VsaW5rPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9Qcm9maWxlOjwvZW1waGFzaXM+IEEgc3lzdGVtLXdpZGUgcHJvZmlsZXIgZm9yIExpbnV4CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbXMgdGhhdCBpcyBjYXBhYmxlIG9mIHByb2ZpbGluZyBhbGwgcnVubmluZyBjb2RlIGF0IGxvdyBvdmVyaGVhZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IE9Qcm9maWxlIGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9vcHJvZmlsZS5zb3VyY2Vmb3JnZS5uZXQvYWJvdXQvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byBzZXR1cCBhbmQgdXNlIHRoaXMgdG9vbCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUFJPRl9VUkw7I3Byb2ZpbGUtbWFudWFsLW9wcm9maWxlJz5PUHJvZmlsZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGVyZjo8L2VtcGhhc2lzPiBQZXJmb3JtYW5jZSBjb3VudGVycyBmb3IgTGludXggdXNlZAorICAgICAgICAgICAgICAgICAgICB0byBrZWVwIHRyYWNrIG9mIGNlcnRhaW4gdHlwZXMgb2YgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIGV2ZW50cy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgdHlwZXMgb2YgY291bnRlcnMgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vcGVyZi53aWtpLmtlcm5lbC5vcmcvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byBzZXR1cCBhbmQgdXNlIHRoaXMgdG9vbCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUFJPRl9VUkw7I3Byb2ZpbGUtbWFudWFsLXBlcmYnPnBlcmY8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN5c3RlbVRhcDo8L2VtcGhhc2lzPiBBIGZyZWUgc29mdHdhcmUgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBzaW1wbGlmaWVzIGluZm9ybWF0aW9uIGdhdGhlcmluZyBhYm91dCBhIHJ1bm5pbmcgTGludXggc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGhlbHBzIHlvdSBkaWFnbm9zZSBwZXJmb3JtYW5jZSBvciBmdW5jdGlvbmFsIHByb2JsZW1zLgorICAgICAgICAgICAgICAgICAgICBTeXN0ZW1UYXAgaXMgbm90IGF2YWlsYWJsZSBhcyBhIHVzZXItc3BhY2UgdG9vbCB0aHJvdWdoIHRoZSBFY2xpcHNlIElERSBZb2N0byBQbHVnLWluLgorICAgICAgICAgICAgICAgICAgICBTZWUgPHVsaW5rIHVybD0naHR0cDovL3NvdXJjZXdhcmUub3JnL3N5c3RlbXRhcCc+PC91bGluaz4gZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgb24gU3lzdGVtVGFwLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZXMgb24gaG93IHRvIHNldHVwIGFuZCB1c2UgdGhpcyB0b29sLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsjcHJvZmlsZS1tYW51YWwtc3lzdGVtdGFwJz5TeXN0ZW1UYXA8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+THR0bmctdXN0OjwvZW1waGFzaXM+IEEgVXNlci1zcGFjZSBUcmFjZXIgZGVzaWduZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB1c2VyLXNwYWNlIGFjdGl2aXR5LgorICAgICAgICAgICAgICAgICAgICBTZWUgPHVsaW5rIHVybD0naHR0cDovL2x0dG5nLm9yZy91c3QnPjwvdWxpbms+IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEx0dG5nLXVzdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTFmN2U5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+Cis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInYWR0LXN0eWxlLmNzcyciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iQSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUuaWQuYXR0cmlidXRlcyIgc2VsZWN0PSIxIiAvPgorCis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNTM2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtbWFudWFsLWVjbGlwc2UtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8eHNsOnN0eWxlc2hlZXQKKwl4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKKwl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIKKwl4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IgorCXZlcnNpb249IjEuMCI+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9kb2Nib29rLW1pcnJvci9kb2Nib29rLXhzbC0xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+CisKKzwhLS0KKworICA8eHNsOmltcG9ydCBocmVmPSIuLi90ZW1wbGF0ZS8xLjc2LjEvZG9jYm9vay14c2wtMS43Ni4xL2VjbGlwc2UvZWNsaXBzZTMueHNsIiAvPgorCisgIDx4c2w6aW1wb3J0CisJICBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL2VjbGlwc2UvZWNsaXBzZTMueHNsIiAvPgorCistLT4KKworICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rZXIub3V0cHV0LmluZGVudCIgc2VsZWN0PSIneWVzJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rLnF1aWV0bHkiIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rLmZpcnN0LnNlY3Rpb25zIiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5zZWN0aW9uLmRlcHRoIiBzZWxlY3Q9IjEwIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0idXNlLmlkLmFzLmZpbGVuYW1lIiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJ1bGluay50YXJnZXQiIHNlbGVjdD0iJ19zZWxmJyIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJiYXNlLmRpciIgc2VsZWN0PSInaHRtbC9hZHQtbWFudWFsLyciLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJy4uL2Jvb2suY3NzJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImVjbGlwc2UubWFuaWZlc3QiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNyZWF0ZS5wbHVnaW4ueG1sIiBzZWxlY3Q9IjAiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzdXBwcmVzcy5uYXZpZ2F0aW9uIiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pbmRleCIgc2VsZWN0PSIwIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+Cis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC1pbnRyby5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtbWFudWFsLWludHJvLnJzdAppbmRleCAyYzg0MGZkLi40ZTk4ZGExIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtbWFudWFsLWludHJvLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtbWFudWFsLWludHJvLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqCiBJbnRyb2R1Y3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1tYW51YWwtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC1pbnRyby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdhMjVhNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1tYW51YWwtaW50cm8ueG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0nYWR0LW1hbnVhbC1pbnRybyc+Cis8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGxldHMgeW91IGJlZ2luIGRldmVsb3BpbmcgYXBwbGljYXRpb25zCisgICAgICAgIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhbiBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBiYXNlZCBvbgorICAgICAgICBhbiBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBUb29sa2l0IChBRFQpIGFuZCB0aGUgYXZhaWxhYmlsaXR5IG9mIHN0YW5kLWFsb25lCisgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMgYW5kIG90aGVyIHRvb2xzLgorICAgICAgICBUaGlzIG1hbnVhbCBkZXNjcmliZXMgdGhlIEFEVCBhbmQgaG93IHlvdSBjYW4gY29uZmlndXJlIGFuZCBpbnN0YWxsIGl0LAorICAgICAgICBob3cgdG8gYWNjZXNzIGFuZCB1c2UgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMsIGhvdyB0bworICAgICAgICBjdXN0b21pemUgdGhlIGRldmVsb3BtZW50IHBhY2thZ2VzIGluc3RhbGxhdGlvbiwKKyAgICAgICAgaG93IHRvIHVzZSBjb21tYW5kLWxpbmUgZGV2ZWxvcG1lbnQgZm9yIGJvdGggQXV0b3Rvb2xzLWJhc2VkIGFuZAorICAgICAgICBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cywgYW5kIGFuIGludHJvZHVjdGlvbiB0byB0aGUKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFIFlvY3RvIFBsdWctaW4uCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhlIEFEVCBpcyBkaXN0cmlidXRpb24tbmV1dHJhbCBhbmQgZG9lcyBub3QgcmVxdWlyZSB0aGUgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbiwgd2hpY2ggaXMgY2FsbGVkIFBva3kuCisgICAgICAgICAgICBUaGlzIG1hbnVhbCwgaG93ZXZlciwgdXNlcyBleGFtcGxlcyB0aGF0IHVzZSB0aGUgUG9reSBkaXN0cmlidXRpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1tYW51YWwucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC5yc3QKaW5kZXggYjYxZjU5ZS4uNjk1MjMwYyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcGVyJ3MgR3VpZGUKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LW1hbnVhbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyMDJjYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1tYW51YWwueG1sCkBAIC0wLDAgKzEsMTQxIEBACis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGJvb2sgaWQ9J2FkdC1tYW51YWwnIGxhbmc9J2VuJworICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiCisgICAgICB4bWxucz0iaHR0cDovL2RvY2Jvb2sub3JnL25zL2RvY2Jvb2siCisgICAgICA+CisgICAgPGJvb2tpbmZvPgorCisgICAgICAgIDxtZWRpYW9iamVjdD4KKyAgICAgICAgICAgIDxpbWFnZW9iamVjdD4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9J2ZpZ3VyZXMvYWR0LXRpdGxlLnBuZycKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSdTVkcnCisgICAgICAgICAgICAgICAgICAgIGFsaWduPSdsZWZ0JyBzY2FsZWZpdD0nMScgd2lkdGg9JzEwMCUnLz4KKyAgICAgICAgICAgIDwvaW1hZ2VvYmplY3Q+CisgICAgICAgIDwvbWVkaWFvYmplY3Q+CisKKyAgICAgICAgPHRpdGxlPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wZXIncyBHdWlkZQorICAgICAgICA8L3RpdGxlPgorCisgICAgICAgIDxhdXRob3Jncm91cD4KKyAgICAgICAgICAgIDxhdXRob3I+CisgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5KZXNzaWNhPC9maXJzdG5hbWU+IDxzdXJuYW1lPlpoYW5nPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+SW50ZWwgQ29ycG9yYXRpb248L29yZ25hbWU+CisgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICA8ZW1haWw+amVzc2ljYS56aGFuZ0BpbnRlbC5jb208L2VtYWlsPgorICAgICAgICAgICAgPC9hdXRob3I+CisgICAgICAgIDwvYXV0aG9yZ3JvdXA+CisKKyAgICAgICAgPHJldmhpc3Rvcnk+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjA8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT42IEFwcmlsIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMC4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+MjMgTWF5IDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTI8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDEzPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjc8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTQ8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+U29tZXRpbWUgaW4gMjAxNjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIGZ1dHVyZSBZb2N0byBQcm9qZWN0IDIuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICA8L3Jldmhpc3Rvcnk+CisKKyAgICA8Y29weXJpZ2h0PgorICAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudCB1bmRlcgorICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC91ay8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENvbW1vbnMuCisgICAgICA8L3BhcmE+CisgICAgICA8bm90ZT4KKyAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCBzZWUgdGhlCisgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQURUX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPgorICAgICAgICAgIGZyb20gdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZS4KKyAgICAgIDwvbm90ZT4KKworICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0iYWR0LW1hbnVhbC1pbnRyby54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImFkdC1pbnRyby54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImFkdC1wcmVwYXJlLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0iYWR0LXBhY2thZ2UueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJhZHQtY29tbWFuZC54bWwiLz4KKworPCEtLSAgICA8aW5kZXggaWQ9J2luZGV4Jz4KKyAgICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CisgICAgPC9pbmRleD4KKy0tPgorCis8L2Jvb2s+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1wYWNrYWdlLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1wYWNrYWdlLnJzdAppbmRleCBhNzIyNDUzLi43ODdkNDA2IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtcGFja2FnZS5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LXBhY2thZ2UucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIE9wdGlvbmFsbHkgQ3VzdG9taXppbmcgdGhlIERldmVsb3BtZW50IFBhY2thZ2VzIEluc3RhbGxhdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LXBhY2thZ2UueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LXBhY2thZ2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZWQwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtcGFja2FnZS54bWwKQEAgLTAsMCArMSwxMDMgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0nYWR0LXBhY2thZ2UnPgorPHRpdGxlPk9wdGlvbmFsbHkgQ3VzdG9taXppbmcgdGhlIERldmVsb3BtZW50IFBhY2thZ2VzIEluc3RhbGxhdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQmVjYXVzZSB0aGUgWW9jdG8gUHJvamVjdCBpcyBzdWl0ZWQgZm9yIGVtYmVkZGVkIExpbnV4IGRldmVsb3BtZW50LCBpdCBpcworICAgICAgICBsaWtlbHkgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB5b3VyIGRldmVsb3BtZW50IHBhY2thZ2VzIGluc3RhbGxhdGlvbi4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgZGV2ZWxvcGluZyBhIG1pbmltYWwgaW1hZ2UsIHRoZW4geW91IG1pZ2h0IG5vdCBuZWVkCisgICAgICAgIGNlcnRhaW4gcGFja2FnZXMgKGUuZy4gZ3JhcGhpY3Mgc3VwcG9ydCBwYWNrYWdlcykuCisgICAgICAgIFRodXMsIHlvdSB3b3VsZCBsaWtlIHRvIGJlIGFibGUgdG8gcmVtb3ZlIHRob3NlIHBhY2thZ2VzIGZyb20geW91ciB0YXJnZXQgc3lzcm9vdC4KKyAgICA8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSdwYWNrYWdlLW1hbmFnZW1lbnQtc3lzdGVtcyc+CisgICAgPHRpdGxlPlBhY2thZ2UgTWFuYWdlbWVudCBTeXN0ZW1zPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyB0aGUgZ2VuZXJhdGlvbiBvZiBzeXNyb290IGZpbGVzIHVzaW5nCisgICAgICAgIHRocmVlIGRpZmZlcmVudCBQYWNrYWdlIE1hbmFnZW1lbnQgU3lzdGVtcyAoUE1TKToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T1BLRzo8L2VtcGhhc2lzPiBBIGxlc3Mgd2VsbCBrbm93biBQTVMgd2hvc2UgdXNlCisgICAgICAgICAgICAgICAgb3JpZ2luYXRlZCBpbiB0aGUgT3BlbkVtYmVkZGVkIGFuZCBPcGVuV3J0IGVtYmVkZGVkIExpbnV4IHByb2plY3RzLgorICAgICAgICAgICAgICAgIFRoaXMgUE1TIHdvcmtzIHdpdGggZmlsZXMgcGFja2FnZWQgaW4gYW4gPGZpbGVuYW1lPi5pcGs8L2ZpbGVuYW1lPiBmb3JtYXQuCisgICAgICAgICAgICAgICAgU2VlIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BrZyc+PC91bGluaz4gZm9yIG1vcmUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCBPUEtHLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SUE06PC9lbXBoYXNpcz4gQSBtb3JlIHdpZGVseSBrbm93biBQTVMgaW50ZW5kZWQgZm9yIEdOVS9MaW51eAorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbnMuCisgICAgICAgICAgICAgICAgVGhpcyBQTVMgd29ya3Mgd2l0aCBmaWxlcyBwYWNrYWdlZCBpbiBhbiA8ZmlsZW5hbWU+LnJwbTwvZmlsZW5hbWU+IGZvcm1hdC4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGN1cnJlbnRseSBpbnN0YWxscyB0aHJvdWdoIHRoaXMgUE1TIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgU2VlIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUlBNX1BhY2thZ2VfTWFuYWdlcic+PC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBSUE0uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlYmlhbjo8L2VtcGhhc2lzPiBUaGUgUE1TIGZvciBEZWJpYW4tYmFzZWQgc3lzdGVtcworICAgICAgICAgICAgICAgIGlzIGJ1aWx0IG9uIG1hbnkgUE1TIHRvb2xzLgorICAgICAgICAgICAgICAgIFRoZSBsb3dlci1sZXZlbCBQTVMgdG9vbCA8ZmlsZW5hbWU+ZHBrZzwvZmlsZW5hbWU+IGZvcm1zIHRoZSBiYXNlIG9mIHRoZSBEZWJpYW4gUE1TLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBkcGtnIHNlZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRHBrZyc+PC91bGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2NvbmZpZ3VyaW5nLXRoZS1wbXMnPgorICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgUE1TPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGljaGV2ZXIgUE1TIHlvdSBhcmUgdXNpbmcsIHlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBmaWxlIGlzIHNldCB0byByZWZsZWN0IHRoYXQgc3lzdGVtLgorICAgICAgICBUaGUgZmlyc3QgdmFsdWUgeW91IGNob29zZSBmb3IgdGhlIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgcGFja2FnZSBmaWxlIGZvcm1hdCBmb3IgdGhlIHJvb3QKKyAgICAgICAgZmlsZXN5c3RlbSBhdCBzeXNyb290LgorICAgICAgICBBZGRpdGlvbmFsIHZhbHVlcyBzcGVjaWZ5IGFkZGl0aW9uYWwgZm9ybWF0cyBmb3IgY29udmVuaWVuY2Ugb3IgdGVzdGluZy4KKyAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGZvcgorICAgICAgICBkZXRhaWxzLgorICAgIDwvcGFyYT4KKworICAgIDxub3RlPgorICAgICAgICBGb3IgYnVpbGQgcGVyZm9ybWFuY2UgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgUE1TLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1wYWNrYWdlJz48ZmlsZW5hbWU+cGFja2FnZS5iYmNsYXNzPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPgorICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciBhIHNjZW5hcmlvIHdoZXJlIHlvdSBhcmUgdXNpbmcgT1BLRyBhbmQgeW91IHdhbnQgdG8gYWRkCisgICAgICAgIHRoZSA8ZmlsZW5hbWU+bGliZ2xhZGU8L2ZpbGVuYW1lPiBwYWNrYWdlIHRvIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRmlyc3QsIHlvdSBzaG91bGQgZ2VuZXJhdGUgdGhlIElQSyBmaWxlIGZvciB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmxpYmdsYWRlPC9maWxlbmFtZT4gcGFja2FnZSBhbmQgYWRkIGl0CisgICAgICAgIGludG8gYSB3b3JraW5nIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBsaWJnbGFkZQorICAgICAkIGJpdGJha2UgcGFja2FnZS1pbmRleAorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE5leHQsIHNvdXJjZSB0aGUgY3Jvc3MtdG9vbGNoYWluIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBmb3VuZCBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICBGb2xsb3cgdGhhdCBieSBzZXR0aW5nIHVwIHRoZSBpbnN0YWxsYXRpb24gZGVzdGluYXRpb24gdG8gcG9pbnQgdG8geW91cgorICAgICAgICBzeXNyb290IGFzIDxyZXBsYWNlYWJsZT5zeXNyb290X2RpcjwvcmVwbGFjZWFibGU+LgorICAgICAgICBGaW5hbGx5LCBoYXZlIGFuIE9QS0cgY29uZmlndXJhdGlvbiBmaWxlIDxyZXBsYWNlYWJsZT5jb25mX2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICAgICB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgeW91IGhhdmUganVzdCBjcmVhdGVkLgorICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybXMgc2hvdWxkIG5vdyB3b3JrOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgb3BrZy1jbCDigJNmIDxyZXBsYWNlYWJsZT5jb25mX2ZpbGU8L3JlcGxhY2VhYmxlPiAtbyA8cmVwbGFjZWFibGU+c3lzcm9vdF9kaXI8L3JlcGxhY2VhYmxlPiB1cGRhdGUKKyAgICAgJCBvcGtnLWNsIOKAk2YgPHJlcGxhY2VhYmxlPmNjb25mX2ZpbGU8L3JlcGxhY2VhYmxlPiAtbyA8cmVwbGFjZWFibGU+c3lzcm9vdF9kaXI8L3JlcGxhY2VhYmxlPiBcCisgICAgICAgIC0tZm9yY2Utb3ZlcndyaXRlIGluc3RhbGwgbGliZ2xhZGUKKyAgICAgJCBvcGtnLWNsIOKAk2YgPHJlcGxhY2VhYmxlPmNjb25mX2ZpbGU8L3JlcGxhY2VhYmxlPiAtbyA8cmVwbGFjZWFibGU+c3lzcm9vdF9kaXI8L3JlcGxhY2VhYmxlPiBcCisgICAgICAgIC0tZm9yY2Utb3ZlcndyaXRlIGluc3RhbGwgbGliZ2xhZGUtZGJnCisgICAgICQgb3BrZy1jbCDigJNmIDxyZXBsYWNlYWJsZT5jb25mX2ZpbGUmZ3Q7IC1vIDwvcmVwbGFjZWFibGU+c3lzcm9vdF9kaXImZ3Q7IFwKKyAgICAgICAgLS1mb3JjZS1vdmVyd3JpdGUgaW5zdGFsbCBsaWJnbGFkZS1kZXYKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LXByZXBhcmUucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LXByZXBhcmUucnN0CmluZGV4IDVhODVjYmYuLjliNmJkMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1wcmVwYXJlLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtcHJlcGFyZS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFByZXBhcmluZyBmb3IgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1wcmVwYXJlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1wcmVwYXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGM5ODQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2FkdC1tYW51YWwvYWR0LXByZXBhcmUueG1sCkBAIC0wLDAgKzEsMTAwMCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdhZHQtcHJlcGFyZSc+CisKKzx0aXRsZT5QcmVwYXJpbmcgZm9yIEFwcGxpY2F0aW9uIERldmVsb3BtZW50PC90aXRsZT4KKworPHBhcmE+CisgICAgSW4gb3JkZXIgdG8gZGV2ZWxvcCBhcHBsaWNhdGlvbnMsIHlvdSBuZWVkIHNldCB1cCB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtLgorICAgIFNldmVyYWwgd2F5cyBleGlzdCB0aGF0IGFsbG93IHlvdSB0byBpbnN0YWxsIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzLCBRRU1VLCB0aGUKKyAgICBFY2xpcHNlIFlvY3RvIFBsdWctaW4sIGFuZCBvdGhlciB0b29scy4KKyAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byBwcmVwYXJlIGZvciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC4KKzwvcGFyYT4KKworPHNlY3Rpb24gaWQ9J2luc3RhbGxpbmctdGhlLWFkdCc+CisgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIEFEVCBhbmQgVG9vbGNoYWluczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyBpbnN0YWxsYXRpb24gbWV0aG9kcyB0aGF0IHNldCB1cCB2YXJ5aW5nCisgICAgICAgIGRlZ3JlZXMgb2YgdG9vbCBhdmFpbGFiaWxpdHkgb24geW91ciBzeXN0ZW0uCisgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIGluc3RhbGxhdGlvbiBtZXRob2QgeW91IGNob29zZSwKKyAgICAgICAgeW91IG11c3QgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSBjcm9zcy10b29sY2hhaW4KKyAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCB3aGljaCBlc3RhYmxpc2hlcyBzZXZlcmFsIGtleQorICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGJlZm9yZSB5b3UgdXNlIGEgdG9vbGNoYWluLgorICAgICAgICBTZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZXR0aW5nLXVwLXRoZS1jcm9zcy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+U2V0dGluZyBVcCB0aGUgQ3Jvc3MtRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L2xpbms+IgorICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxub3RlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEF2b2lkIG1peGluZyBpbnN0YWxsYXRpb24gbWV0aG9kcyB3aGVuIGluc3RhbGxpbmcgdG9vbGNoYWlucyBmb3IKKyAgICAgICAgICAgIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGF2b2lkIHVzaW5nIHRoZSBBRFQgSW5zdGFsbGVyIHRvIGluc3RhbGwgc29tZQorICAgICAgICAgICAgdG9vbGNoYWlucyBhbmQgdGhlbiBoYW5kLWluc3RhbGxpbmcgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucworICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgdG9vbGNoYWluIGluc3RhbGxlciBmb3IgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICBNaXhpbmcgaW5zdGFsbGF0aW9uIG1ldGhvZHMgY2FuIHJlc3VsdCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZQorICAgICAgICAgICAgQURUIEluc3RhbGxlciBiZWNvbWVzIHVucmVsaWFibGUgYW5kIG1pZ2h0IG5vdCBpbnN0YWxsIHRoZQorICAgICAgICAgICAgdG9vbGNoYWluLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgbXVzdCBtaXggaW5zdGFsbGF0aW9uIG1ldGhvZHMsIHlvdSBtaWdodCBhdm9pZCBwcm9ibGVtcyBieQorICAgICAgICAgICAgZGVsZXRpbmcgPGZpbGVuYW1lPi92YXIvbGliL29wa2c8L2ZpbGVuYW1lPiwgdGh1cyBwdXJnaW5nIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm9wa2c8L2ZpbGVuYW1lPiBwYWNrYWdlIG1ldGFkYXRhLgorICAgICAgICA8L3BhcmE+CisgICAgPC9ub3RlPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzZSB0aGUgQURUIGluc3RhbGxlciBzY3JpcHQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGluc3RhbGwgdGhlIEFEVCBiZWNhdXNlIGl0CisgICAgICAgICAgICAgICAgYXV0b21hdGVzIG11Y2ggb2YgdGhlIHByb2Nlc3MgZm9yIHlvdS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBjb25maWd1cmUgdGhlIGluc3RhbGxhdGlvbiB0byBpbnN0YWxsIHRoZSBRRU1VIGVtdWxhdG9yCisgICAgICAgICAgICAgICAgYW5kIHRoZSB1c2VyLXNwYWNlIE5GUywgc3BlY2lmeSB3aGljaCByb290IGZpbGVzeXN0ZW0gcHJvZmlsZXMgdG8gZG93bmxvYWQsCisgICAgICAgICAgICAgICAgYW5kIGRlZmluZSB0aGUgdGFyZ2V0IHN5c3Jvb3QgbG9jYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzZSBhbiBleGlzdGluZyB0b29sY2hhaW46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGlzIG1ldGhvZCwgeW91IHNlbGVjdCBhbmQgZG93bmxvYWQgYW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljCisgICAgICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxlciBhbmQgdGhlbiBydW4gdGhlIHNjcmlwdCB0byBoYW5kLWluc3RhbGwgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIHRoaXMgbWV0aG9kLCB5b3UganVzdCBnZXQgdGhlIGNyb3NzLXRvb2xjaGFpbiBhbmQgUUVNVSAtIHlvdSBkbyBub3QKKyAgICAgICAgICAgICAgICBnZXQgYW55IG9mIHRoZSBvdGhlciBtZW50aW9uZWQgYmVuZWZpdHMgaGFkIHlvdSBydW4gdGhlIEFEVCBJbnN0YWxsZXIgc2NyaXB0LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2UgdGhlIHRvb2xjaGFpbiBmcm9tIHdpdGhpbiB0aGUgQnVpbGQgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSWYgeW91IGFscmVhZHkgaGF2ZSBhCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIGJ1aWxkIHRoZSBjcm9zcy10b29sY2hhaW4gd2l0aGluIHRoZSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgbGlrZSB0aGUgcHJldmlvdXMgbWV0aG9kIG1lbnRpb25lZCwgeW91IG9ubHkgZ2V0IHRoZSBjcm9zcy10b29sY2hhaW4gYW5kIFFFTVUgLSB5b3UKKyAgICAgICAgICAgICAgICBkbyBub3QgZ2V0IGFueSBvZiB0aGUgb3RoZXIgYmVuZWZpdHMgd2l0aG91dCB0YWtpbmcgc2VwYXJhdGUgc3RlcHMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZy10aGUtYWR0LWluc3RhbGxlcic+CisgICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgQURUIEluc3RhbGxlcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBydW4gdGhlIEFEVCBJbnN0YWxsZXIsIHlvdSBuZWVkIHRvIGdldCB0aGUgQURUIEluc3RhbGxlciB0YXJiYWxsLCBiZSBzdXJlCisgICAgICAgICAgICB5b3UgaGF2ZSB0aGUgbmVjZXNzYXJ5IGhvc3QgZGV2ZWxvcG1lbnQgcGFja2FnZXMgdGhhdCBzdXBwb3J0IHRoZSBBRFQgSW5zdGFsbGVyLAorICAgICAgICAgICAgYW5kIHRoZW4gcnVuIHRoZSBBRFQgSW5zdGFsbGVyIFNjcmlwdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgaG9zdCBwYWNrYWdlcyBuZWVkZWQgdG8gc3VwcG9ydCBBRFQgaW5zdGFsbGF0aW9uIGFuZCB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICJBRFQgSW5zdGFsbGVyIEV4dHJhcyIgbGlzdHMgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IiBzZWN0aW9uCisgICAgICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dldHRpbmctdGhlLWFkdC1pbnN0YWxsZXItdGFyYmFsbCc+CisgICAgICAgICAgICA8dGl0bGU+R2V0dGluZyB0aGUgQURUIEluc3RhbGxlciBUYXJiYWxsPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIEFEVCBJbnN0YWxsZXIgaXMgY29udGFpbmVkIGluIHRoZSBBRFQgSW5zdGFsbGVyIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgdGhlIHRhcmJhbGwgdXNpbmcgZWl0aGVyIG9mIHRoZXNlIG1ldGhvZHM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkb3dubG9hZCB0aGUgdGFyYmFsbCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQURUSU5TVEFMTEVSX0RMX1VSTDsnPjwvdWxpbms+IGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSBkaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgdGhlIHRhcmJhbGwgaW5zaWRlIGFuIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHVzZSBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZSBBRFQgSW5zdGFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJiYWxsLCB5b3UgbXVzdCA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYmVmb3JlIHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgdGhhdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbC48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgY29tbWFuZHMgZXN0YWJsaXNoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrIG91dCB0aGUgY3VycmVudCByZWxlYXNlIGJyYW5jaCwgc2V0IHVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgZW52aXJvbm1lbnQgd2hpbGUgYWxzbyBjcmVhdGluZyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LCBhbmQgcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRoYXQgcmVzdWx0cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkL3RtcC9kZXBsb3kvc2RrL2FkdF9pbnN0YWxsZXIudGFyLmJ6MjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHVzaW5nIEJpdEJha2UgdG8gYnVpbGQgdGhlIEFEVCB0YXJiYWxsLCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgdG8gbWFrZSBzdXJlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgcHJvcGVybHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNlci1jb25maWd1cmF0aW9uJz5Vc2VyIENvbmZpZ3VyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQorICAgICAkIGNkIHBva3kKKyAgICAgJCBnaXQgY2hlY2tvdXQgLWIgJkRJU1RST19OQU1FOyBvcmlnaW4vJkRJU1RST19OQU1FOworICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICAkIGJpdGJha2UgYWR0LWluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbmZpZ3VyaW5nLWFuZC1ydW5uaW5nLXRoZS1hZHQtaW5zdGFsbGVyLXNjcmlwdCc+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgYW5kIFJ1bm5pbmcgdGhlIEFEVCBJbnN0YWxsZXIgU2NyaXB0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQmVmb3JlIHJ1bm5pbmcgdGhlIEFEVCBJbnN0YWxsZXIgc2NyaXB0LCB5b3UgbmVlZCB0byB1bnBhY2sgdGhlIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1bnBhY2sgdGhlIHRhcmJhbGwgaW4gYW55IGRpcmVjdG9yeSB5b3Ugd2lzaC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBjb21tYW5kIGNvcGllcyB0aGUgQURUIEluc3RhbGxlciB0YXJiYWxsIGZyb20gd2hlcmUKKyAgICAgICAgICAgICAgICBpdCB3YXMgYnVpbHQgaW50byB0aGUgaG9tZSBkaXJlY3RvcnkgYW5kIHRoZW4gdW5wYWNrcyB0aGUgdGFyYmFsbCBpbnRvCisgICAgICAgICAgICAgICAgYSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG5hbWVkIDxmaWxlbmFtZT5hZHQtaW5zdGFsbGVyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBjcCBwb2t5L2J1aWxkL3RtcC9kZXBsb3kvc2RrL2FkdF9pbnN0YWxsZXIudGFyLmJ6MiAkSE9NRQorICAgICAkIHRhciAteGpmIGFkdF9pbnN0YWxsZXIudGFyLmJ6MgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVbnBhY2tpbmcgaXQgY3JlYXRlcyB0aGUgZGlyZWN0b3J5IDxmaWxlbmFtZT5hZHQtaW5zdGFsbGVyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgd2hpY2ggY29udGFpbnMgdGhlIEFEVCBJbnN0YWxsZXIgc2NyaXB0ICg8ZmlsZW5hbWU+YWR0X2luc3RhbGxlcjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIGFuZCBpdHMgY29uZmlndXJhdGlvbiBmaWxlICg8ZmlsZW5hbWU+YWR0X2luc3RhbGxlci5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgeW91IHJ1biB0aGUgc2NyaXB0LCBob3dldmVyLCB5b3Ugc2hvdWxkIGV4YW1pbmUgdGhlIEFEVCBJbnN0YWxsZXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgYW5kIGJlIHN1cmUgeW91IGFyZSBnb2luZyB0byBnZXQgd2hhdCB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICBZb3VyIGNvbmZpZ3VyYXRpb25zIGRldGVybWluZSB3aGljaCBrZXJuZWwgYW5kIGZpbGVzeXN0ZW0gaW1hZ2UgYXJlIGRvd25sb2FkZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIGNvbmZpZ3VyYXRpb25zIHlvdSBjYW4gZGVmaW5lIGZvciB0aGUgQURUIEluc3RhbGxlci4KKyAgICAgICAgICAgICAgICBGb3IgY29uZmlndXJhdGlvbiB2YWx1ZXMgYW5kIHJlc3RyaWN0aW9ucywgc2VlIHRoZSBjb21tZW50cyBpbgorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YWR0LWluc3RhbGxlci5jb25mPC9maWxlbmFtZT4gZmlsZToKKworICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+WU9DVE9BRFRfUkVQTzwvZmlsZW5hbWU+OiBUaGlzIGFyZWEKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIHRoZSBJUEtHLWJhc2VkIHBhY2thZ2VzIGFuZCB0aGUgcm9vdCBmaWxlc3lzdGVtIHVwb24gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gaXMgYmFzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzZXQgdXAgeW91ciBvd24gSVBLRyByZXBvc2l0b3J5IHBvaW50ZWQgdG8gYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZT0NUT0FEVF9SRVBPPC9maWxlbmFtZT4sIHlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9sbG93cyB0aGUgc2FtZSBsYXlvdXQgYXMgdGhlIHJlZmVyZW5jZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCBhdCA8dWxpbmsgdXJsPSdodHRwOi8vYWR0cmVwby55b2N0b3Byb2plY3Qub3JnJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHlvdXIgcmVwb3NpdG9yeSBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggSFRUUC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ZT0NUT0FEVF9UQVJHRVRTPC9maWxlbmFtZT46IFRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91IHdhbnQgdG8gc2V0IHVwIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+WU9DVE9BRFRfUUVNVTwvZmlsZW5hbWU+OiBJbmRpY2F0ZXMgd2hldGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90IHRvIGluc3RhbGwgdGhlIGVtdWxhdG9yIFFFTVUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+WU9DVE9BRFRfTkZTX1VUSUw8L2ZpbGVuYW1lPjogSW5kaWNhdGVzIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIG5vdCB0byBpbnN0YWxsIHVzZXItbW9kZSBORlMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcGxhbiB0byB1c2UgdGhlIEVjbGlwc2UgSURFIFlvY3RvIHBsdWctaW4gYWdhaW5zdCBRRU1VLAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IHNob3VsZCBpbnN0YWxsIE5GUy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPlRvIGJvb3QgUUVNVSBpbWFnZXMgdXNpbmcgb3VyIHVzZXJzcGFjZSBORlMgc2VydmVyLCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHJ1bm5pbmcgPGZpbGVuYW1lPnBvcnRtYXA8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcnVubmluZyA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gYWRkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4taTwvZmlsZW5hbWU+IG9wdGlvbiB3aGVuIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4gc3RhcnRzIHVwLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBvZiBkb2luZyB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtaWdodCBhbHNvIGhhdmUgdG8gbW9kaWZ5IHlvdXIgZmlyZXdhbGwgc2V0dGluZ3MgdG8gYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlMgYm9vdGluZyB0byB3b3JrLjwvbm90ZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ZT0NUT0FEVF9ST09URlNfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+OiBUaGUgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBpbWFnZXMgeW91IHdhbnQgdG8gZG93bmxvYWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZT0NUT0FEVF9JUEtHX1JFUE88L2ZpbGVuYW1lPiByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPllPQ1RPQURUX1RBUkdFVF9TWVNST09UX0lNQUdFXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPjogVGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJvb3QgZmlsZXN5c3RlbSB1c2VkIHRvIGV4dHJhY3QgYW5kIGNyZWF0ZSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBtdXN0IGhhdmUgYmVlbiBzcGVjaWZpZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPllPQ1RPQURUX1JPT1RGU188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGRvd25sb2FkZWQgYm90aCA8ZmlsZW5hbWU+bWluaW1hbDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNhdG8tc2RrPC9maWxlbmFtZT4gaW1hZ2VzIGJ5IHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZT0NUT0FEVF9ST09URlNfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICB0byAibWluaW1hbCBzYXRvLXNkayIsIHRoZW4gPGZpbGVuYW1lPllPQ1RPQURUX1JPT1RGU188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgc2V0IHRvIGVpdGhlciAibWluaW1hbCIgb3IgInNhdG8tc2RrIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPllPQ1RPQURUX1RBUkdFVF9TWVNST09UX0xPQ188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT46IFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gb24gdGhlIGRldmVsb3BtZW50IGhvc3Qgd2hlcmUgdGhlIHRhcmdldCBzeXNyb290IGlzIGNyZWF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgY29uZmlndXJlZCB0aGUgPGZpbGVuYW1lPmFkdF9pbnN0YWxsZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgcnVuIHRoZSBpbnN0YWxsZXIgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBhZHQtaW5zdGFsbGVyCisgICAgICQgLi9hZHRfaW5zdGFsbGVyCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE9uY2UgdGhlIGluc3RhbGxlciBiZWdpbnMgdG8gcnVuLCB5b3UgYXJlIGFza2VkIHRvIGVudGVyIHRoZQorICAgICAgICAgICAgICAgIGxvY2F0aW9uIGZvciBjcm9zcy10b29sY2hhaW4gaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGxvY2F0aW9uIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgQWZ0ZXIgZWl0aGVyIGFjY2VwdGluZyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvciBzZWxlY3RpbmcgeW91cgorICAgICAgICAgICAgICAgIG93biBsb2NhdGlvbiwgeW91IGFyZSBwcm9tcHRlZCB0byBydW4gdGhlIGluc3RhbGxhdGlvbiBzY3JpcHQKKyAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZWx5IG9yIGluIHNpbGVudCBtb2RlLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGNsb3NlbHkgbW9uaXRvciB0aGUgaW5zdGFsbGF0aW9uLAorICAgICAgICAgICAgICAgIGNob29zZSAiSSIgZm9yIGludGVyYWN0aXZlIG1vZGUgcmF0aGVyIHRoYW4gIlMiIGZvciBzaWxlbnQgbW9kZS4KKyAgICAgICAgICAgICAgICBGb2xsb3cgdGhlIHByb21wdHMgZnJvbSB0aGUgc2NyaXB0IHRvIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgdGhlIGluc3RhbGxhdGlvbiBjb21wbGV0ZXMsIHRoZSBBRFQsIHdoaWNoIGluY2x1ZGVzIHRoZQorICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiwgaXMgaW5zdGFsbGVkIGluIHRoZSBzZWxlY3RlZCBpbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgWW91IHdpbGwgbm90aWNlIGVudmlyb25tZW50IHNldHVwIGZpbGVzIGZvciB0aGUgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgaW4gdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnksIGFuZCBpbWFnZSB0YXJiYWxscyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWR0LWluc3RhbGxlcjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhY2NvcmRpbmcgdG8geW91cgorICAgICAgICAgICAgICAgIGluc3RhbGxlciBjb25maWd1cmF0aW9ucywgYW5kIHRoZSB0YXJnZXQgc3lzcm9vdCBsb2NhdGVkCisgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZT0NUT0FEVF9UQVJHRVRfU1lTUk9PVF9MT0NfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgYWxzbyBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndXNpbmctYW4tZXhpc3RpbmctdG9vbGNoYWluLXRhcmJhbGwnPgorICAgICAgICA8dGl0bGU+VXNpbmcgYSBDcm9zcy1Ub29sY2hhaW4gVGFyYmFsbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzaW1wbHkgaW5zdGFsbCBhIGNyb3NzLXRvb2xjaGFpbiBieSBoYW5kLCB5b3UgY2FuCisgICAgICAgICAgICBkbyBzbyBieSBydW5uaW5nIHRoZSB0b29sY2hhaW4gaW5zdGFsbGVyLgorICAgICAgICAgICAgVGhlIGluc3RhbGxlciBpbmNsdWRlcyB0aGUgcHJlLWJ1aWx0IGNyb3NzLXRvb2xjaGFpbiwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHNjcmlwdCwgYW5kIHN1cHBvcnQgZmlsZXMuCisgICAgICAgICAgICBJZiB5b3UgdXNlIHRoaXMgbWV0aG9kIHRvIGluc3RhbGwgdGhlIGNyb3NzLXRvb2xjaGFpbiwgeW91CisgICAgICAgICAgICBtaWdodCBzdGlsbCBuZWVkIHRvIGluc3RhbGwgdGhlIHRhcmdldCBzeXNyb290IGJ5IGluc3RhbGxpbmcgYW5kCisgICAgICAgICAgICBleHRyYWN0aW5nIGl0IHNlcGFyYXRlbHkuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgdGhlIHN5c3Jvb3QsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdleHRyYWN0aW5nLXRoZS1yb290LWZpbGVzeXN0ZW0nPkV4dHJhY3RpbmcgdGhlIFJvb3QgRmlsZXN5c3RlbTwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdldCB5b3VyIHRvb2xjaGFpbiBpbnN0YWxsZXIgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdvIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBmaW5kIHRoZSBmb2xkZXIgdGhhdCBtYXRjaGVzIHlvdXIgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHN5c3RlbSAoaS5lLiA8ZmlsZW5hbWU+aTY4NjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIDMyLWJpdCBtYWNoaW5lcyBvciA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgNjQtYml0IG1hY2hpbmVzKS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+R28gaW50byB0aGF0IGZvbGRlciBhbmQgZG93bmxvYWQgdGhlIHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlciB3aG9zZSBuYW1lIGluY2x1ZGVzIHRoZSBhcHByb3ByaWF0ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2xjaGFpbnMgcHJvdmlkZWQgYnkgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgYmFzZWQgb2ZmIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIGxpYnJhcmllcyBhcHByb3ByaWF0ZSBmb3IgZGV2ZWxvcGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgdGhhdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjQtYml0IHg4NiBzeXN0ZW0gYW5kIHlvdSBhcmUgZ29pbmcgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBjcm9zcy10b29sY2hhaW4gZm9yIGEgMzItYml0IHg4NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCwgZ28gaW50byB0aGUgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGFuZCBkb3dubG9hZCB0aGUgZm9sbG93aW5nIGluc3RhbGxlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CdWlsZCB5b3VyIG93biB0b29sY2hhaW4gaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBjYXNlcyB3aGVyZSB5b3UgY2Fubm90IHVzZSBhbiBpbnN0YWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBkb3dubG9hZCBhcmVhLCB5b3UgY2FuIGJ1aWxkIHlvdXIgb3duIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcHRpb25hbGx5LWJ1aWxkaW5nLWEtdG9vbGNoYWluLWluc3RhbGxlcic+T3B0aW9uYWxseSBCdWlsZGluZyBhIFRvb2xjaGFpbiBJbnN0YWxsZXI8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T25jZSB5b3UgaGF2ZSB0aGUgaW5zdGFsbGVyLCBydW4gaXQgdG8gaW5zdGFsbCB0aGUgdG9vbGNoYWluOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgY2hhbmdlIHRoZSBwZXJtaXNzaW9ucyBvbiB0aGUgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXIgc2NyaXB0IHNvIHRoYXQgaXQgaXMgZXhlY3V0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIGhvdyB0byBydW4gdGhlIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICBnaXZlbiBhIHRvb2xjaGFpbiB0YXJiYWxsIGZvciBhIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQgaG9zdAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gYW5kIGEgMzItYml0IHg4NiB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBhc3N1bWVzIHRoZSB0b29sY2hhaW4gaW5zdGFsbGVyIGlzIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPn4vRG93bmxvYWRzLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgfi9Eb3dubG9hZHMvcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLWk1ODYtdG9vbGNoYWluLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHRoZSBpbnN0YWxsZXIgcHJvbXB0cyB5b3UgZm9yIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW50byB3aGljaCB5b3Ugd2FudCB0byBpbnN0YWxsIHRoZSB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSB1c2VkIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGludG8gd2hpY2ggeW91IGFyZSBpbnN0YWxsaW5nIHRoZSB0b29sY2hhaW4sIHRoZQorICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGVyIG5vdGlmaWVzIHlvdSBhbmQgZXhpdHMuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgaW4gdGhlIGRpcmVjdG9yeSBhbmQKKyAgICAgICAgICAgICAgICAgICAgcnVuIHRoZSBpbnN0YWxsZXIgYWdhaW4uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHRoZSBzY3JpcHQgZmluaXNoZXMsIHRoZSBjcm9zcy10b29sY2hhaW4gaXMKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBub3RpY2UgZW52aXJvbm1lbnQgc2V0dXAgZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4gaW4gdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZy10aGUtdG9vbGNoYWluLWZyb20td2l0aGluLXRoZS1idWlsZC10cmVlJz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIEJpdEJha2UgYW5kIHRoZSBCdWlsZCBEaXJlY3Rvcnk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBmaW5hbCB3YXkgb2YgbWFraW5nIHRoZSBjcm9zcy10b29sY2hhaW4gYXZhaWxhYmxlIGlzIHRvIHVzZSBCaXRCYWtlCisgICAgICAgICAgICB0byBnZW5lcmF0ZSB0aGUgdG9vbGNoYWluIHdpdGhpbiBhbiBleGlzdGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIFRoaXMgbWV0aG9kIGRvZXMgbm90IGluc3RhbGwgdGhlIHRvb2xjaGFpbiBpbnRvIHRoZSBkZWZhdWx0CisgICAgICAgICAgICA8ZmlsZW5hbWU+L29wdDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIEFzIHdpdGggdGhlIHByZXZpb3VzIG1ldGhvZCwgaWYgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgdGFyZ2V0IHN5c3Jvb3QsIHlvdSBtdXN0CisgICAgICAgICAgICBkbyB0aGF0IHNlcGFyYXRlbHkgYXMgd2VsbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGdlbmVyYXRlIHRoZSB0b29sY2hhaW4gaW50byB0aGUgQnVpbGQgRGlyZWN0b3J5OgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IHVwIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTb3VyY2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudCBzZXR1cAorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2hlY2sgeW91ciBMb2NhbCBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IHNob3VsZCBiZSBzdXJlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlIEJ1aWxkIERpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBDb21tZW50cyB3aXRoaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICBsaXN0IHRoZSB2YWx1ZXMgeW91IGNhbiB1c2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGNoYW5nZSB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGFzIHRoZSBkZWZhdWx0IHRhcmdldAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHdoZW4gYnVpbGRpbmcgdGhlIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHBvcHVsYXRlIHRoZSBCdWlsZCBEaXJlY3Rvcnkgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbnMgZm9yIG1vcmUgdGhhbiBhIHNpbmdsZSBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UganVzdCBuZWVkIHRvIGVkaXQgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICByZS1ydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBTdXJlIFlvdXIgTGF5ZXJzIGFyZSBFbmFibGVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEV4YW1pbmUgdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIGFuZCBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBlbmFibGVkIGFsbCB0aGUgY29tcGF0aWJsZQorICAgICAgICAgICAgICAgICAgICBsYXllcnMgZm9yIHlvdXIgdGFyZ2V0IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG5lZWRzIHRvIGJlIGF3YXJlIG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgeW91IHdhbnQgaW5jbHVkZWQgd2hlbiBidWlsZGluZyBpbWFnZXMgYW5kCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlIGEgbGF5ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2VuZXJhdGUgdGhlIENyb3NzLVRvb2xjaGFpbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSdW4gPGZpbGVuYW1lPmJpdGJha2UgbWV0YS1pZGUtc3VwcG9ydDwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBjcm9zcy10b29sY2hhaW4gZ2VuZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGZpbmlzaGVzLAorICAgICAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtdG9vbGNoYWluIGlzCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBhbmQgcG9wdWxhdGVkIHdpdGhpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBub3RpY2UgZW52aXJvbm1lbnQgc2V0dXAgZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4gdGhhdCBjb250YWluIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT5lbnZpcm9ubWVudC1zZXR1cDwvZmlsZW5hbWU+IiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5J3MgPGZpbGVuYW1lPnRtcDwvZmlsZW5hbWU+IGZvbGRlci48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlIGF3YXJlIHRoYXQgd2hlbiB5b3UgdXNlIHRoaXMgbWV0aG9kIHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgeW91IHN0aWxsIG5lZWQgdG8gc2VwYXJhdGVseSBleHRyYWN0IGFuZCBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgIHRoZSBzeXNyb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZG8gdGhpcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZXh0cmFjdGluZy10aGUtcm9vdC1maWxlc3lzdGVtJz5FeHRyYWN0aW5nIHRoZSBSb290IEZpbGVzeXN0ZW08L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRoZS1jcm9zcy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+CisgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIENyb3NzLURldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWZvcmUgeW91IGNhbiBkZXZlbG9wIHVzaW5nIHRoZSBjcm9zcy10b29sY2hhaW4sIHlvdSBuZWVkIHRvIHNldCB1cCB0aGUKKyAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgdGhlIHRvb2xjaGFpbidzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgSWYgeW91IHVzZWQgdGhlIEFEVCBJbnN0YWxsZXIgb3IgaGFuZC1pbnN0YWxsZWQgY3Jvc3MtdG9vbGNoYWluLAorICAgICAgICB0aGVuIHlvdSBjYW4gZmluZCB0aGlzIHNjcmlwdCBpbiB0aGUgZGlyZWN0b3J5IHlvdSBjaG9zZSBmb3IgaW5zdGFsbGF0aW9uLgorICAgICAgICBGb3IgdGhpcyByZWxlYXNlLCB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGlzCisgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fQURUUEFUSF9ESVI7PC9maWxlbmFtZT4uCisgICAgICAgIElmIHlvdSBpbnN0YWxsZWQgdGhlIHRvb2xjaGFpbiBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgeW91IGNhbiBmaW5kIHRoZSBlbnZpcm9ubWVudCBzZXR1cAorICAgICAgICBzY3JpcHQgZm9yIHRoZSB0b29sY2hhaW4gaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSdzIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEJlIHN1cmUgdG8gcnVuIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdGhhdCBtYXRjaGVzIHRoZQorICAgICAgICBhcmNoaXRlY3R1cmUgZm9yIHdoaWNoIHlvdSBhcmUgZGV2ZWxvcGluZy4KKyAgICAgICAgRW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0cyBiZWdpbiB3aXRoIHRoZSBzdHJpbmcKKyAgICAgICAgIjxmaWxlbmFtZT5lbnZpcm9ubWVudC1zZXR1cDwvZmlsZW5hbWU+IiBhbmQgaW5jbHVkZSBhcyBwYXJ0IG9mIHRoZWlyCisgICAgICAgIG5hbWUgdGhlIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSB0b29sY2hhaW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGZvciBhIDY0LWJpdAorICAgICAgICBJQS1iYXNlZCBhcmNoaXRlY3R1cmUgaW5zdGFsbGVkIGluIHRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKKyAgICAgICAgd291bGQgYmUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmWU9DVE9fQURUUEFUSF9ESVI7L2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5LWxpbnV4CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQsIG1hbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQorICAgICAgICBkZWZpbmVkOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtUQVJHRVRTWVNST09UJz48ZmlsZW5hbWU+U0RLVEFSR0VUU1lTUk9PVDwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgcGF0aCB0byB0aGUgc3lzcm9vdCB1c2VkIGZvciBjcm9zcy1jb21waWxhdGlvbgorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHX0NPTkZJR19QQVRIJz48ZmlsZW5hbWU+UEtHX0NPTkZJR19QQVRIPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBwYXRoIHRvIHRoZSB0YXJnZXQgcGtnLWNvbmZpZyBmaWxlcworICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHX1NJVEUnPjxmaWxlbmFtZT5DT05GSUdfU0lURTwvZmlsZW5hbWU+PC91bGluaz4gLSBBIEdOVSBhdXRvY29uZiBzaXRlIGZpbGUgcHJlY29uZmlndXJlZCBmb3IgdGhlIHRhcmdldAorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ0MnPjxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBDIGNvbXBpbGVyCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DWFgnPjxmaWxlbmFtZT5DWFg8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgQysrIGNvbXBpbGVyCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DUFAnPjxmaWxlbmFtZT5DUFA8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUFTJz48ZmlsZW5hbWU+QVM8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgYXNzZW1ibGVyCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MRCc+PGZpbGVuYW1lPkxEPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIGxpbmtlcgorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItR0RCJz48ZmlsZW5hbWU+R0RCPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEdOVSBEZWJ1Z2dlcgorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RSSVAnPjxmaWxlbmFtZT5TVFJJUDwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdzdHJpcCcsIHdoaWNoIHN0cmlwcyBzeW1ib2xzCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SQU5MSUInPjxmaWxlbmFtZT5SQU5MSUI8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAncmFubGliJworICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0JKQ09QWSc+PGZpbGVuYW1lPk9CSkNPUFk8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnb2JqY29weScKKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU9CSkRVTVAnPjxmaWxlbmFtZT5PQkpEVU1QPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ29iamR1bXAnCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BUic+PGZpbGVuYW1lPkFSPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ2FyJworICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTk0nPjxmaWxlbmFtZT5OTTwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdubScKKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRBUkdFVF9QUkVGSVgnPjxmaWxlbmFtZT5UQVJHRVRfUFJFRklYPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSB0b29sY2hhaW4gYmluYXJ5IHByZWZpeCBmb3IgdGhlIHRhcmdldCB0b29scworICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ1JPU1NfQ09NUElMRSc+PGZpbGVuYW1lPkNST1NTX0NPTVBJTEU8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IGZvciB0aGUgdGFyZ2V0IHRvb2xzCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdVUkVfRkxBR1MnPjxmaWxlbmFtZT5DT05GSUdVUkVfRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgYXJndW1lbnRzIGZvciBHTlUgY29uZmlndXJlCisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DRkxBR1MnPjxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+IC0gU3VnZ2VzdGVkIEMgZmxhZ3MKKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNYWEZMQUdTJz48ZmlsZW5hbWU+Q1hYRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+IC0gU3VnZ2VzdGVkIEMrKyBmbGFncworICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTERGTEFHUyc+PGZpbGVuYW1lPkxERkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+IC0gU3VnZ2VzdGVkIGxpbmtlciBmbGFncyB3aGVuIHlvdSB1c2UgQ0MgdG8gbGluaworICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ1BQRkxBR1MnPjxmaWxlbmFtZT5DUFBGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgcHJlcHJvY2Vzc29yIGZsYWdzCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdzZWN1cmluZy1rZXJuZWwtYW5kLWZpbGVzeXN0ZW0taW1hZ2VzJz4KKyAgICA8dGl0bGU+U2VjdXJpbmcgS2VybmVsIGFuZCBGaWxlc3lzdGVtIEltYWdlczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IHdpbGwgbmVlZCB0byBoYXZlIGEga2VybmVsIGFuZCBmaWxlc3lzdGVtIGltYWdlIHRvIGJvb3QgdXNpbmcgeW91cgorICAgICAgICBoYXJkd2FyZSBvciB0aGUgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgRnVydGhlcm1vcmUsIGlmIHlvdSBwbGFuIG9uIGJvb3RpbmcgeW91ciBpbWFnZSB1c2luZyBORlMgb3IgeW91IHdhbnQgdG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgYXMgdGhlIHRhcmdldCBzeXNyb290LCB5b3UgbmVlZCB0byBleHRyYWN0IHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2dldHRpbmctdGhlLWltYWdlcyc+CisgICAgICAgIDx0aXRsZT5HZXR0aW5nIHRoZSBJbWFnZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gZ2V0IHRoZSBrZXJuZWwgYW5kIGZpbGVzeXN0ZW0gaW1hZ2VzLCB5b3UgZWl0aGVyIGhhdmUgdG8gYnVpbGQgdGhlbSBvciBkb3dubG9hZAorICAgICAgICAgICAgcHJlLWJ1aWx0IHZlcnNpb25zLgorICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgaG93IHRvIGJ1aWxkIHRoZXNlIGltYWdlcywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpZGluZy1pbWFnZXMnPkJ1aWRpbmcgSW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgorICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgZG93bmxvYWRpbmcgcHJlLWJ1aWxkIHZlcnNpb25zLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctcHJlLWJ1aWx0Jz5FeGFtcGxlIFVzaW5nIFByZS1CdWlsdCBCaW5hcmllcyBhbmQgUUVNVTwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzaGlwcyBiYXNpYyBrZXJuZWwgYW5kIGZpbGVzeXN0ZW0gaW1hZ2VzIGZvciBzZXZlcmFsCisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzICg8ZmlsZW5hbWU+eDg2PC9maWxlbmFtZT4sIDxmaWxlbmFtZT54ODYtNjQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5taXBzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5wb3dlcnBjPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+YXJtPC9maWxlbmFtZT4pCisgICAgICAgICAgICB0aGF0IHlvdSBjYW4gdXNlIHVuYWx0ZXJlZCBpbiB0aGUgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgICAgIFRoZXNlIGtlcm5lbCBpbWFnZXMgcmVzaWRlIGluIHRoZSByZWxlYXNlCisgICAgICAgICAgICBhcmVhIC0gPHVsaW5rIHVybD0nJllPQ1RPX01BQ0hJTkVTX0RMX1VSTDsnPjwvdWxpbms+CisgICAgICAgICAgICBhbmQgYXJlIGlkZWFsIGZvciBleHBlcmltZW50YXRpb24gdXNpbmcgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW1hZ2UgdHlwZXMgeW91IGNhbiBidWlsZCB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IGFyZSBwbGFubmluZyBvbiBkZXZlbG9waW5nIGFnYWluc3QgeW91ciBpbWFnZSBhbmQgeW91IGFyZSBub3QKKyAgICAgICAgICAgIGJ1aWxkaW5nIG9yIHVzaW5nIG9uZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBpbWFnZXMKKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5jb3JlLWltYWdlLSotZGV2PC9maWxlbmFtZT4pLCB5b3UgbXVzdCBiZSBzdXJlIHRvCisgICAgICAgICAgICBpbmNsdWRlIHRoZSBkZXZlbG9wbWVudCBwYWNrYWdlcyBhcyBwYXJ0IG9mIHlvdXIgaW1hZ2UgcmVjaXBlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgcGxhbiBvbiByZW1vdGVseSBkZXBsb3lpbmcgYW5kIGRlYnVnZ2luZyB5b3VyCisgICAgICAgICAgICBhcHBsaWNhdGlvbiBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBtdXN0IGhhdmUgYW4gaW1hZ2UKKyAgICAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIFlvY3RvIFRhcmdldCBDb21tdW5pY2F0aW9uIEZyYW1ld29yayAoVENGKSBhZ2VudAorICAgICAgICAgICAgKDxmaWxlbmFtZT50Y2YtYWdlbnQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBZb3UgY2FuIGRvIHRoaXMgYnkgaW5jbHVkaW5nIHRoZSA8ZmlsZW5hbWU+ZWNsaXBzZS1kZWJ1ZzwvZmlsZW5hbWU+CisgICAgICAgICAgICBpbWFnZSBmZWF0dXJlLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtZmVhdHVyZXMtaW1hZ2UnPkltYWdlIEZlYXR1cmVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgICAgIGltYWdlIGZlYXR1cmVzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgVG8gaW5jbHVkZSB0aGUgPGZpbGVuYW1lPmVjbGlwc2UtZGVidWc8L2ZpbGVuYW1lPiBpbWFnZSBmZWF0dXJlLAorICAgICAgICAgICAgbW9kaWZ5IHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgc28gdGhhdCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgaW5jbHVkZXMgdGhlICJlY2xpcHNlLWRlYnVnIiBmZWF0dXJlLgorICAgICAgICAgICAgQWZ0ZXIgbW9kaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIHlvdSBjYW4gcmVidWlsZCB0aGUgaW1hZ2UuCisgICAgICAgICAgICBPbmNlIHRoZSBpbWFnZSBpcyByZWJ1aWx0LCB0aGUgPGZpbGVuYW1lPnRjZi1hZ2VudDwvZmlsZW5hbWU+CisgICAgICAgICAgICB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBpbWFnZSBhbmQgaXMgbGF1bmNoZWQgYXV0b21hdGljYWxseSBhZnRlcgorICAgICAgICAgICAgdGhlIGJvb3QuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZXh0cmFjdGluZy10aGUtcm9vdC1maWxlc3lzdGVtJz4KKyAgICAgICAgPHRpdGxlPkV4dHJhY3RpbmcgdGhlIFJvb3QgRmlsZXN5c3RlbTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgaW5zdGFsbCB5b3VyIHRvb2xjaGFpbiBieSBoYW5kIG9yIGJ1aWxkIGl0IHVzaW5nIEJpdEJha2UgYW5kCisgICAgICAgICAgICB5b3UgbmVlZCBhIHJvb3QgZmlsZXN5c3RlbSwgeW91IG5lZWQgdG8gZXh0cmFjdCBpdCBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgSWYgeW91IHVzZSB0aGUgQURUIEluc3RhbGxlciB0byBpbnN0YWxsIHRoZSBBRFQsIHRoZSByb290CisgICAgICAgICAgICBmaWxlc3lzdGVtIGlzIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGFuZCBpbnN0YWxsZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgY2FzZXMgd2hlcmUgeW91IG5lZWQgdG8gZXh0cmFjdCB0aGUgcm9vdCBmaWxlc3lzdGVtOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IHdhbnQgdG8gYm9vdCB0aGUgaW1hZ2UgdXNpbmcgTkZTLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IHdhbnQgdG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCBzeXNyb290LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIEVjbGlwc2UgSURFIGVudmlyb25tZW50IHdpdGggdGhlIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUGx1Zy1pbiBpbnN0YWxsZWQgYWxsb3dzIHlvdSB0byB1c2UgUUVNVSB0byBib290CisgICAgICAgICAgICAgICAgICAgIHVuZGVyIE5GUy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IHdhbnQgdG8gZGV2ZWxvcCB5b3VyIHRhcmdldCBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgcm9vdCBmaWxlc3lzdGVtIGFzIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gZXh0cmFjdCB0aGUgcm9vdCBmaWxlc3lzdGVtLCBmaXJzdCA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRoZSBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZXN0YWJsaXNoCisgICAgICAgICAgICBuZWNlc3NhcnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorICAgICAgICAgICAgSWYgeW91IGJ1aWx0IHRoZSB0b29sY2hhaW4gaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSwgeW91IHdpbGwgZmluZAorICAgICAgICAgICAgdGhlIHRvb2xjaGFpbiBlbnZpcm9ubWVudCBzY3JpcHQgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgSWYgeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluIGJ5IGhhbmQsIHRoZSBlbnZpcm9ubWVudCBzZXR1cAorICAgICAgICAgICAgc2NyaXB0IGlzIGxvY2F0ZWQgaW4gPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZnRlciBzb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgc2NyaXB0LCB1c2UgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHByb3ZpZGUgdGhlCisgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgIFRoZSBzZWNvbmQgY29tbWFuZCBzZXRzIHVwIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHNldHVwIHNjcmlwdCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFRoZSB0aGlyZCBjb21tYW5kIGV4dHJhY3RzIHRoZSByb290IGZpbGVzeXN0ZW0gZnJvbSBhIHByZXZpb3VzbHkKKyAgICAgICAgICAgIGJ1aWx0IGZpbGVzeXN0ZW0gdGhhdCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoaXMgY29tbWFuZCBleHRyYWN0cyB0aGUgcm9vdCBmaWxlc3lzdGVtIGludG8gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4Ni1zYXRvPC9maWxlbmFtZT4gZGlyZWN0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBzb3VyY2UgL29wdC9wb2t5LyZESVNUUk87L2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAkIHJ1bnFlbXUtZXh0cmFjdC1zZGsgXAorICAgICAgICB+L0Rvd25sb2Fkcy9jb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYtMjAxMTA5MTQxMTgzMS5yb290ZnMudGFyLmJ6MiBcCisgICAgICAgICRIT01FL3FlbXV4ODYtc2F0bworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgWW91IGNvdWxkIG5vdyBwb2ludCB0byB0aGUgdGFyZ2V0IHN5c3Jvb3QgYXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LXNhdG88L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J29wdGlvbmFsbHktYnVpbGRpbmctYS10b29sY2hhaW4taW5zdGFsbGVyJz4KKyAgICA8dGl0bGU+T3B0aW9uYWxseSBCdWlsZGluZyBhIFRvb2xjaGFpbiBJbnN0YWxsZXI8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlIHRvIGxvY2F0aW5nIGFuZCBkb3dubG9hZGluZyBhIHRvb2xjaGFpbiBpbnN0YWxsZXIsCisgICAgICAgIHlvdSBjYW4gYnVpbGQgdGhlIHRvb2xjaGFpbiBpbnN0YWxsZXIgaWYgeW91IGhhdmUgYQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEFsdGhvdWdoIG5vdCB0aGUgcHJlZmVycmVkIG1ldGhvZCwgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIG1ldGEtdG9vbGNoYWluPC9maWxlbmFtZT4gdG8gYnVpbGQgdGhlIHRvb2xjaGFpbgorICAgICAgICAgICAgaW5zdGFsbGVyLgorICAgICAgICAgICAgSWYgeW91IGRvIHVzZSB0aGlzIG1ldGhvZCwgeW91IG11c3Qgc2VwYXJhdGVseSBpbnN0YWxsIGFuZCBleHRyYWN0CisgICAgICAgICAgICB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgdGhlIHN5c3Jvb3QsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdleHRyYWN0aW5nLXRoZS1yb290LWZpbGVzeXN0ZW0nPkV4dHJhY3RpbmcgdGhlIFJvb3QgRmlsZXN5c3RlbTwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGJ1aWxkIHRoZSB0b29sY2hhaW4gaW5zdGFsbGVyIGFuZCBwb3B1bGF0ZSB0aGUgU0RLIGltYWdlLCB1c2UgdGhlCisgICAgICAgIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyBwb3B1bGF0ZV9zZGsKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBUaGUgY29tbWFuZCByZXN1bHRzIGluIGEgdG9vbGNoYWluIGluc3RhbGxlciB0aGF0IGNvbnRhaW5zIHRoZSBzeXNyb290CisgICAgICAgIHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCByb290IGZpbGVzeXN0ZW0uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEFub3RoZXIgcG93ZXJmdWwgZmVhdHVyZSBpcyB0aGF0IHRoZSB0b29sY2hhaW4gaXMgY29tcGxldGVseQorICAgICAgICBzZWxmLWNvbnRhaW5lZC4KKyAgICAgICAgVGhlIGJpbmFyaWVzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGVpciBvd24gY29weSBvZgorICAgICAgICA8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+LCB3aGljaCByZXN1bHRzIGluIG5vIGRlcGVuZGVuY2llcworICAgICAgICBvbiB0aGUgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzLCB0aGUgcG9pbnRlciB0byB0aGUgZHluYW1pYyBsb2FkZXIgaXMKKyAgICAgICAgY29uZmlndXJlZCBhdCBpbnN0YWxsIHRpbWUgc2luY2UgdGhhdCBwYXRoIGNhbm5vdCBiZSBkeW5hbWljYWxseQorICAgICAgICBhbHRlcmVkLgorICAgICAgICBUaGlzIGlzIHRoZSByZWFzb24gZm9yIGEgd3JhcHBlciBhcm91bmQgdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiBhcmNoaXZlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBbm90aGVyIGZlYXR1cmUgaXMgdGhhdCBvbmx5IG9uZSBzZXQgb2YgY3Jvc3MtY2FuYWRpYW4gdG9vbGNoYWluCisgICAgICAgIGJpbmFyaWVzIGFyZSBwcm9kdWNlZCBwZXIgYXJjaGl0ZWN0dXJlLgorICAgICAgICBUaGlzIGZlYXR1cmUgdGFrZXMgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgdGhlIHRhcmdldCBoYXJkd2FyZSBjYW4KKyAgICAgICAgYmUgcGFzc2VkIHRvIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiBhcyBhIHNldCBvZiBjb21waWxlciBvcHRpb25zLgorICAgICAgICBUaG9zZSBvcHRpb25zIGFyZSBzZXQgdXAgYnkgdGhlIGVudmlyb25tZW50IHNjcmlwdCBhbmQgY29udGFpbmVkIGluCisgICAgICAgIHZhcmlhYmxlcyBzdWNoIGFzCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DQyc+PGZpbGVuYW1lPkNDPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICBhbmQKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxEJz48ZmlsZW5hbWU+TEQ8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHRvb2xzLgorICAgICAgICBVbmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IGEgc3lzcm9vdCBpcyBzdGlsbCBuZWVkZWQgZm9yIGV2ZXJ5IHRhcmdldAorICAgICAgICBzaW5jZSB0aG9zZSBiaW5hcmllcyBhcmUgdGFyZ2V0LXNwZWNpZmljLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICAgUmVtZW1iZXIsIGJlZm9yZSB1c2luZyBhbnkgQml0QmFrZSBjb21tYW5kLCB5b3UKKyAgICAgICAgIG11c3Qgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgIChpLmUuCisgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgIG9yCisgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYW5kIHlvdSBtdXN0IG1ha2Ugc3VyZSB5b3VyCisgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gdmFyaWFibGVzIGFyZSBjb3JyZWN0LgorICAgICAgICAgSW4gcGFydGljdWxhciwgeW91IG5lZWQgdG8gYmUgc3VyZSB0aGUKKyAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgIHZhcmlhYmxlIG1hdGNoZXMgdGhlIGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyBhbmQgdGhhdAorICAgICAgICAgdGhlCisgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICB2YXJpYWJsZSBpcyBjb3JyZWN0bHkgc2V0IGlmIHlvdSBhcmUgYnVpbGRpbmcgYSB0b29sY2hhaW4gZGVzaWduZWQgdG8KKyAgICAgICAgIHJ1biBvbiBhbiBhcmNoaXRlY3R1cmUgdGhhdCBkaWZmZXJzIGZyb20geW91ciBjdXJyZW50IGRldmVsb3BtZW50IGhvc3QKKyAgICAgICAgIG1hY2hpbmUgKGkuZS4gdGhlIGJ1aWxkIG1hY2hpbmUpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgY29tcGxldGVzLCB0aGUgdG9vbGNoYWluCisgICAgICAgIGluc3RhbGxlciB3aWxsIGJlIGluCisgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB0b29sY2hhaW4gZG9lcyBub3QgYnVpbGQgc3RhdGljIGJpbmFyaWVzLgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSB0b29sY2hhaW4gdG8gYnVpbGQgdGhlc2UgdHlwZXMgb2YgbGlicmFyaWVzLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyIGltYWdlIGhhcyB0aGUgYXBwcm9wcmlhdGUgc3RhdGljCisgICAgICAgICAgICBkZXZlbG9wbWVudCBsaWJyYXJpZXMuCisgICAgICAgICAgICBVc2UgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBpbnNpZGUgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgdG8KKyAgICAgICAgICAgIGluc3RhbGwgdGhlIGFwcHJvcHJpYXRlIGxpYnJhcnkgcGFja2FnZXMuCisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB1c2luZyA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBzdGF0aWMKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGxpYnJhcmllczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGdsaWJjLXN0YXRpY2RldiIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J29wdGlvbmFsbHktdXNpbmctYW4tZXh0ZXJuYWwtdG9vbGNoYWluJz4KKyAgICA8dGl0bGU+T3B0aW9uYWxseSBVc2luZyBhbiBFeHRlcm5hbCBUb29sY2hhaW48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBtaWdodCB3YW50IHRvIHVzZSBhbiBleHRlcm5hbCB0b29sY2hhaW4gYXMgcGFydCBvZiB5b3VyCisgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgZnVuZGFtZW50YWwgc3RlcHMgeW91IG5lZWQgdG8gYWNjb21wbGlzaAorICAgICAgICBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBVbmRlcnN0YW5kIHdoZXJlIHRoZSBpbnN0YWxsZWQgdG9vbGNoYWluIHJlc2lkZXMuCisgICAgICAgICAgICAgICAgRm9yIGNhc2VzIHdoZXJlIHlvdSBuZWVkIHRvIGJ1aWxkIHRoZSBleHRlcm5hbCB0b29sY2hhaW4sIHlvdQorICAgICAgICAgICAgICAgIHdvdWxkIG5lZWQgdG8gdGFrZSBzZXBhcmF0ZSBzdGVwcyB0byBidWlsZCBhbmQgaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgTWFrZSBzdXJlIHlvdSBhZGQgdGhlIGxheWVyIHRoYXQgY29udGFpbnMgdGhlIHRvb2xjaGFpbiB0bworICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgU2V0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRFUk5BTF9UT09MQ0hBSU4nPjxmaWxlbmFtZT5FWFRFUk5BTF9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICB0byB0aGUgbG9jYXRpb24gaW4gd2hpY2ggeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYW4gZXh0ZXJuYWwgdG9vbGNoYWluIHVzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICBpcyA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5NZW50b3IgR3JhcGhpY3M8L3RyYWRlbWFyaz4KKyAgICAgICAgU291cmNlcnkgRysrIFRvb2xjaGFpbi4KKyAgICAgICAgWW91IGNhbiBzZWUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGF0IHBhcnRpY3VsYXIgbGF5ZXIgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGF0CisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXRodWIuY29tL01lbnRvckVtYmVkZGVkL21ldGEtc291cmNlcnkvJz48L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kIGZ1cnRoZXIgaW5mb3JtYXRpb24gYnkgcmVhZGluZyBhYm91dCB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRDTU9ERSc+PGZpbGVuYW1lPlRDTU9ERTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCdzIHZhcmlhYmxlIGdsb3NzYXJ5LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZy1wcmUtYnVpbHQnPgorICAgICAgICA8dGl0bGU+RXhhbXBsZSBVc2luZyBQcmUtQnVpbHQgQmluYXJpZXMgYW5kIFFFTVU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgaGFyZHdhcmUsIGxpYnJhcmllcyBhbmQgc2VydmljZXMgYXJlIHN0YWJsZSwgeW91IGNhbiBnZXQgc3RhcnRlZCBieSB1c2luZyBhIHByZS1idWlsdCBiaW5hcnkKKyAgICAgICAgICAgIG9mIHRoZSBmaWxlc3lzdGVtIGltYWdlLCBrZXJuZWwsIGFuZCB0b29sY2hhaW4gYW5kIHJ1biBpdCB1c2luZyB0aGUgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgICAgIFRoaXMgc2NlbmFyaW8gaXMgdXNlZnVsIGZvciBkZXZlbG9waW5nIGFwcGxpY2F0aW9uIHNvZnR3YXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3VzaW5nLWEtcHJlLWJ1aWx0LWltYWdlLnBuZyIgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHNjYWxlZml0PScxJy8+CisgICAgICAgICAgICA8L2ltYWdlb2JqZWN0PgorICAgICAgICAgICAgPGNhcHRpb24+CisgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgYSBQcmUtQnVpbHQgSW1hZ2U8L3BhcmE+CisgICAgICAgICAgICA8L2NhcHRpb24+CisgICAgICAgIDwvbWVkaWFvYmplY3Q+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdGhpcyBzY2VuYXJpbywgeW91IG5lZWQgdG8gZG8gc2V2ZXJhbCB0aGluZ3M6CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluc3RhbGwgdGhlIGFwcHJvcHJpYXRlIHN0YW5kLWFsb25lIHRvb2xjaGFpbiB0YXJiYWxsLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvd25sb2FkIHRoZSBwcmUtYnVpbHQgaW1hZ2UgdGhhdCB3aWxsIGJvb3Qgd2l0aCBRRU1VLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdG8gZ2V0IHRoZSBRRU1VIGltYWdlIHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBtYWNoaW5lJ3MKKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgKGUuZy4geDg2LCBBUk0sIGV0Yy4pLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvd25sb2FkIHRoZSBmaWxlc3lzdGVtIGltYWdlIGZvciB5b3VyIHRhcmdldCBtYWNoaW5lJ3MgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNldCB1cCB0aGUgZW52aXJvbm1lbnQgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgYW5kIHRoZW4gc3RhcnQgdGhlIFFFTVUgZW11bGF0b3IuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbnN0YWxsaW5nLXRoZS10b29sY2hhaW4nPgorICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFRvb2xjaGFpbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZG93bmxvYWQgYSB0YXJiYWxsIGluc3RhbGxlciwgd2hpY2ggaW5jbHVkZXMgdGhlCisgICAgICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzY3JpcHQsIGFuZCBzdXBwb3J0IGZpbGVzIGZyb20gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSB1bmRlcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19UT09MQ0hBSU5fRExfVVJMOyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgVG9vbGNoYWlucyBhcmUgYXZhaWxhYmxlIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBzeXN0ZW1zIGZyb20gdGhlIDxmaWxlbmFtZT5pNjg2PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgVGhlIHRvb2xjaGFpbnMgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYXJlIGJhc2VkIG9mZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2UgYW5kIGNvbnRhaW4KKyAgICAgICAgICAgICAgICBsaWJyYXJpZXMgYXBwcm9wcmlhdGUgZm9yIGRldmVsb3BpbmcgYWdhaW5zdCB0aGF0IGltYWdlLgorICAgICAgICAgICAgICAgIEVhY2ggdHlwZSBvZiBkZXZlbG9wbWVudCBzeXN0ZW0gc3VwcG9ydHMgZml2ZSBvciBtb3JlIHRhcmdldAorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFyYmFsbCBpbnN0YWxsZXIgc2NyaXB0cyBhcmUgc3VjaCB0aGF0IGEKKyAgICAgICAgICAgICAgICBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBob3N0IHN5c3RlbSBhcHBlYXJzIGZpcnN0IGluIHRoZQorICAgICAgICAgICAgICAgIGZpbGVuYW1lIGFuZCB0aGVuIGlzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgc3RyaW5nCisgICAgICAgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3ktZ2xpYmMtPHJlcGxhY2VhYmxlPmhvc3Rfc3lzdGVtPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmltYWdlX3R5cGU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+LXRvb2xjaGFpbi08cmVwbGFjZWFibGU+cmVsZWFzZV92ZXJzaW9uPC9yZXBsYWNlYWJsZT4uc2gKKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5ob3N0X3N5c3RlbTwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB5b3VyIGRldmVsb3BtZW50IHN5c3RlbToKKworICAgICAgICAgICAgICAgICAgICBpNjg2IG9yIHg4Nl82NC4KKworICAgICAgICAgPHJlcGxhY2VhYmxlPmltYWdlX3R5cGU8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGltYWdlIHlvdSB3aXNoIHRvCisgICAgICAgICAgICAgICAgZGV2ZWxvcCBhIFNvZnR3YXJlIERldmVsb3BtZW50IFRvb2xraXQgKFNESykgZm9yIHVzZSBhZ2FpbnN0LgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGJ1aWxkcyB0b29sY2hhaW4gaW5zdGFsbGVycyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kOgorCisgICAgICAgICAgICAgICAgICAgIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvIC1jIHBvcHVsYXRlX3NkaworCisgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZToKKworICAgICAgICAgICAgICAgICAgICBpNTg2LCB4ODZfNjQsIHBvd2VycGMsIG1pcHMsIGFybXY3YSBvciBhcm12NXRlCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlX3ZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6CisKKyAgICAgICAgICAgICAgICAgICAgJkRJU1RSTzssICZESVNUUk87K3NuYXBzaG90CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRvb2xjaGFpbiBpbnN0YWxsZXIgaXMgZm9yIGEgNjQtYml0CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBzeXN0ZW0gYW5kIGEgaTU4Ni10dW5lZCB0YXJnZXQgYXJjaGl0ZWN0dXJlCisgICAgICAgICAgICAgICAgYmFzZWQgb2ZmIHRoZSBTREsgZm9yIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG9vbGNoYWlucyBhcmUgc2VsZi1jb250YWluZWQgYW5kIGJ5IGRlZmF1bHQgYXJlIGluc3RhbGxlZCBpbnRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHdoZW4geW91IHJ1biB0aGUgdG9vbGNoYWluIGluc3RhbGxlciwgeW91IGNhbiBjaG9vc2UgYW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgc2hvd3MgaG93IHRvIHJ1biB0aGUgaW5zdGFsbGVyIGdpdmVuIGEgdG9vbGNoYWluIHRhcmJhbGwKKyAgICAgICAgICAgICAgICBmb3IgYSA2NC1iaXQgeDg2IGRldmVsb3BtZW50IGhvc3Qgc3lzdGVtIGFuZCBhIDMyLWJpdCB4ODYgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICBZb3UgbXVzdCBjaGFuZ2UgdGhlIHBlcm1pc3Npb25zIG9uIHRoZSB0b29sY2hhaW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsZXIgc2NyaXB0IHNvIHRoYXQgaXQgaXMgZXhlY3V0YWJsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgYXNzdW1lcyB0aGUgdG9vbGNoYWluIGluc3RhbGxlciBpcyBsb2NhdGVkIGluIDxmaWxlbmFtZT5+L0Rvd25sb2Fkcy88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggeW91IGFyZSBpbnN0YWxsaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSB0b29sY2hhaW4sIHRoZSB0b29sY2hhaW4gaW5zdGFsbGVyIG5vdGlmaWVzIHlvdSBhbmQgZXhpdHMuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgaW4gdGhlIGRpcmVjdG9yeSBhbmQgcnVuIHRoZSBpbnN0YWxsZXIgYWdhaW4uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgfi9Eb3dubG9hZHMvcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLWk1ODYtdG9vbGNoYWluLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCB0YXJiYWxscywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19BRFRfVVJMOyN1c2luZy1hbi1leGlzdGluZy10b29sY2hhaW4tdGFyYmFsbCc+VXNpbmcgYSBDcm9zcy1Ub29sY2hhaW4gVGFyYmFsbDwvdWxpbms+IiBhbmQKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQURUX1VSTDsjdXNpbmctdGhlLXRvb2xjaGFpbi1mcm9tLXdpdGhpbi10aGUtYnVpbGQtdHJlZSc+VXNpbmcgQml0QmFrZSBhbmQgdGhlIEJ1aWxkIERpcmVjdG9yeTwvdWxpbms+IiBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkb3dubG9hZGluZy10aGUtcHJlLWJ1aWx0LWxpbnV4LWtlcm5lbCc+CisgICAgICAgICAgICA8dGl0bGU+RG93bmxvYWRpbmcgdGhlIFByZS1CdWlsdCBMaW51eCBLZXJuZWw8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGRvd25sb2FkIHRoZSBwcmUtYnVpbHQgTGludXgga2VybmVsIHN1aXRhYmxlIGZvciBydW5uaW5nIGluIHRoZSBRRU1VIGVtdWxhdG9yIGZyb20KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUUVNVV9ETF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSB0aGUga2VybmVsIHRoYXQgbWF0Y2hlcyB0aGUgYXJjaGl0ZWN0dXJlIHlvdSB3YW50IHRvIHNpbXVsYXRlLgorICAgICAgICAgICAgICAgIERvd25sb2FkIGFyZWFzIGV4aXN0IGZvciB0aGUgZml2ZSBzdXBwb3J0ZWQgbWFjaGluZSBhcmNoaXRlY3R1cmVzOgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5xZW11bWlwczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cWVtdXBwYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+cWVtdXg4Ni02NDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBNb3N0IGtlcm5lbCBmaWxlcyBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgKnpJbWFnZS1xZW11PHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi5iaW4KKyAgICAgdm1saW51eC1xZW11PHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi5iaW4KKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlOgorICAgICAgICAgICAgICAgIHg4NiwgeDg2LTY0LCBwcGMsIG1pcHMsIG9yIGFybS4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBkb3dubG9hZGluZyBhIFlvY3RvIFByb2plY3Qga2VybmVsIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhbC1rZXJuZWwtZmlsZXMnPllvY3RvIFByb2plY3QgS2VybmVsPC91bGluaz4iCisgICAgICAgICAgICAgICAgYnVsbGV0ZWQgaXRlbSBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZG93bmxvYWRpbmctdGhlLWZpbGVzeXN0ZW0nPgorICAgICAgICAgICAgPHRpdGxlPkRvd25sb2FkaW5nIHRoZSBGaWxlc3lzdGVtPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGRvd25sb2FkIHRoZSBmaWxlc3lzdGVtIGltYWdlIHN1aXRhYmxlIGZvciB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUgZnJvbQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19RRU1VX0RMX1VSTDsnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIEFnYWluLCBiZSBzdXJlIHRvIHVzZSB0aGUgZmlsZXN5c3RlbSB0aGF0IG1hdGNoZXMgdGhlIGFyY2hpdGVjdHVyZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgIHRvIHNpbXVsYXRlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZmlsZXN5c3RlbSBpbWFnZSBoYXMgdHdvIHRhcmJhbGwgZm9ybXM6IDxmaWxlbmFtZT5leHQzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IHVzZSB0aGUgPGZpbGVuYW1lPmV4dDM8L2ZpbGVuYW1lPiBmb3JtIHdoZW4gYm9vdGluZyBhbiBpbWFnZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICBRRU1VIGVtdWxhdG9yLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+dGFyPC9maWxlbmFtZT4gZm9ybSBjYW4gYmUgZmxhdHRlbmVkIG91dCBpbiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtCisgICAgICAgICAgICAgICAgYW5kIHVzZWQgZm9yIGJ1aWxkIHB1cnBvc2VzIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBjb3JlLWltYWdlLTxyZXBsYWNlYWJsZT5wcm9maWxlPC9yZXBsYWNlYWJsZT4tcWVtdTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4uZXh0MworICAgICBjb3JlLWltYWdlLTxyZXBsYWNlYWJsZT5wcm9maWxlPC9yZXBsYWNlYWJsZT4tcWVtdTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4udGFyLmJ6MgorCisgICAgIFdoZXJlOgorICAgICAgICAgPHJlcGxhY2VhYmxlPnByb2ZpbGU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgZmlsZXN5c3RlbSBpbWFnZSdzIHByb2ZpbGU6CisgICAgICAgICAgICAgICAgICAgbHNiLCBsc2ItZGV2LCBsc2Itc2RrLCBsc2ItcXQzLCBtaW5pbWFsLCBtaW5pbWFsLWRldiwgc2F0bywKKyAgICAgICAgICAgICAgICAgICBzYXRvLWRldiwgb3Igc2F0by1zZGsuIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSB0eXBlcyBvZiBpbWFnZQorICAgICAgICAgICAgICAgICAgIHByb2ZpbGVzLCBzZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlOgorICAgICAgICAgICAgICAgIHg4NiwgeDg2LTY0LCBwcGMsIG1pcHMsIG9yIGFybS4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10aGUtZW52aXJvbm1lbnQtYW5kLXN0YXJ0aW5nLXRoZS1xZW11LWVtdWxhdG9yJz4KKyAgICAgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBFbnZpcm9ubWVudCBhbmQgU3RhcnRpbmcgdGhlIFFFTVUgRW11bGF0b3I8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgeW91IHN0YXJ0IHRoZSBRRU1VIGVtdWxhdG9yLCB5b3UgbmVlZCB0byBzZXQgdXAgdGhlIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybSBzZXRzIHVwIHRoZSBlbXVsYXRpb24gZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmWU9DVE9fQURUUEFUSF9ESVI7L2Vudmlyb25tZW50LXNldHVwLTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tcG9reS1saW51eC08cmVwbGFjZWFibGU+aWY8L3JlcGxhY2VhYmxlPgorCisgICAgIFdoZXJlOgorICAgICAgICAgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgaTU4NiwgeDg2XzY0LCBwcGM2MDNlLCBtaXBzLCBvciBhcm12NXRlLgorCisgICAgICAgICA8cmVwbGFjZWFibGU+aWY8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgYW4gZW1iZWRkZWQgYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZS4KKyAgICAgICAgICAgICAgTm90IGFsbCBzZXR1cCBzY3JpcHRzIGluY2x1ZGUgdGhpcyBzdHJpbmcuCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGaW5hbGx5LCB0aGlzIGNvbW1hbmQgZm9ybSBpbnZva2VzIHRoZSBRRU1VIGVtdWxhdG9yCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgPHJlcGxhY2VhYmxlPnFlbXVhcmNoPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5maWxlc3lzdGVtLWltYWdlPC9yZXBsYWNlYWJsZT4KKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5xZW11YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZTogcWVtdXg4NiwgcWVtdXg4Ni02NCwKKyAgICAgICAgICAgICAgICAgICAgcWVtdXBwYywgcWVtdW1pcHMsIG9yIHFlbXVhcm0uCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5rZXJuZWwtaW1hZ2U8L3JlcGxhY2VhYmxlPiBpcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGtlcm5lbCBpbWFnZS4KKworICAgICAgICAgPHJlcGxhY2VhYmxlPmZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPiBpcyB0aGUgLmV4dDMgZmlsZXN5c3RlbSBpbWFnZS4KKworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHR3byBjb21tYW5kcyBzZXR1cCB0aGUgZW11bGF0aW9uCisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgYW5kIGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZSByb290IGZpbGVzeXN0ZW0gKDxmaWxlbmFtZT4uZXh0MzwvZmlsZW5hbWU+IGZpbGUpIGFuZAorICAgICAgICAgICAgICAgIHRoZSBwcmUtYnVpbHQga2VybmVsIGltYWdlIGZpbGUgYm90aCByZXNpZGUgaW4geW91ciBob21lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBUaGUga2VybmVsIGFuZCBmaWxlc3lzdGVtIGFyZSBmb3IgYSAzMi1iaXQgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUKKyAgICAgJCBzb3VyY2UgJllPQ1RPX0FEVFBBVEhfRElSOy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgJCBydW5xZW11IHFlbXV4ODYgYnpJbWFnZS1xZW11eDg2LmJpbiBcCisgICAgIGNvcmUtaW1hZ2Utc2F0by1xZW11eDg2LmV4dDMKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBRRU1VIGxhdW5jaGVzIHZhcmllcyBkZXBlbmRpbmcgb24gdGhlIGZpbGVzeXN0ZW0gaW1hZ2UgYW5kIG9uIHRoZQorICAgICAgICAgICAgICAgIHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzb3VyY2UgdGhlIGVudmlyb25tZW50IGZvciB0aGUgQVJNIHRhcmdldAorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgdGhlbiBib290IHRoZSBtaW5pbWFsIFFFTVUgaW1hZ2UsIHRoZSBlbXVsYXRvciBjb21lcyB1cCBpbiBhIG5ldworICAgICAgICAgICAgICAgIHNoZWxsIGluIGNvbW1hbmQtbGluZSBtb2RlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBib290IHRoZSBTREsgaW1hZ2UsIFFFTVUgY29tZXMgdXAgd2l0aCBhIEdVSS4KKyAgICAgICAgICAgICAgICA8bm90ZT5Cb290aW5nIHRoZSBQUEMgaW1hZ2UgcmVzdWx0cyBpbiBRRU1VIGxhdW5jaGluZyBpbiB0aGUgc2FtZSBzaGVsbCBpbgorICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBtb2RlLjwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9hZHQtbWFudWFsL2FkdC1zdHlsZS5jc3MgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtc3R5bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNjIyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYWR0LW1hbnVhbC9hZHQtc3R5bGUuY3NzCkBAIC0wLDAgKzEsOTg2IEBACisvKgorICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSworCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvYWR0LXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IC0xZW07CisgIG1hcmdpbi1sZWZ0OiAyNS41ZW07Cit9CisKKy5nbG9zc2FyeSBkZCBwLAorLnZhcmlhYmxlbGlzdCBkZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworZGl2IHAuY29weXJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmxlZ2Fsbm90aWNlIHAubGVnYWxub3RpY2UtdGl0bGUgeworICBtYXJnaW4tYm90dG9tOiAwZW07Cit9CisKK3AgeworICBsaW5lLWhlaWdodDogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKworfQorCitkbCB7CisgIHBhZGRpbmctdG9wOiAwZW07Cit9CisKK2hyIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKKworLm1lZGlhb2JqZWN0LAorLm1lZGlhb2JqZWN0Y28geworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2ltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKwordWwgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAxLjVlbTsKK30KKwordWwgbGkgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK3VsIGxpIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCit0YWJsZSB7CisgIHdpZHRoIDoxMDAlOworfQorCit0aCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKwordGQgeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3AgYVtpZF0geworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogMHB4OworICBkaXNwbGF5OiBpbmxpbmU7CisgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK2EgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK3ByZSB7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKK2E6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgLypmb250LXdlaWdodDogYm9sZDsqLworfQorCisvKiBUaGlzIHN0eWxlIGRlZmluZXMgaG93IHRoZSBwZXJtYWxpbmsgY2hhcmFjdGVyCisgICBhcHBlYXJzIGJ5IGl0c2VsZiBhbmQgd2hlbiBob3ZlcmVkIG92ZXIgd2l0aAorICAgdGhlIG1vdXNlLiAqLworCitbYWx0PSdQZXJtYWxpbmsnXSB7IGNvbG9yOiAjZWVlOyB9CitbYWx0PSdQZXJtYWxpbmsnXTpob3ZlciB7IGNvbG9yOiBibGFjazsgfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSB7CisgIG1hcmdpbjogMWVtIDBlbTsKKyAgcGFkZGluZzogMWVtOworICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cit9CisKKworZGl2LmluZm9ybWFsZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsdGFibGUgcC50aXRsZSBiLAorZGl2LmZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYudGFibGUgcC50aXRsZSBieworICAgIHBhZGRpbmctdG9wOiAwZW07CisgICAgbWFyZ2luLXRvcDogMGVtOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisubWVkaWFvYmplY3QgLmNhcHRpb24sCisubWVkaWFvYmplY3QgLmNhcHRpb24gcCAgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nLXRvcDogMC41ZW07CisgIHBhZGRpbmctYm90dG9tOiAwLjVlbTsKK30KKworLmVwaWdyYXBoIHsKKyAgcGFkZGluZy1sZWZ0OiA1NSU7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworLmVwaWdyYXBoIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuZXBpZ3JhcGggLnF1b3RlIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorLmVwaWdyYXBoIC5hdHRyaWJ1dGlvbiB7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK3NwYW4uYXBwbGljYXRpb24geworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogODAlOworICB3aGl0ZS1zcGFjZTogcHJlOworICBtYXJnaW46IDEuMzNlbSAwZW07CisgIHBhZGRpbmc6IDEuMzNlbTsKK30KKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIG1hcmdpbi10b3A6IDFlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworCit9CisKKy8qIGZvcmNlIGZ1bGwgd2lkdGggb2YgdGFibGUgd2l0aGluIGRpdiAqLworLnRpcCB0YWJsZSwKKy53YXJuaW5nIHRhYmxlLAorLmNhdXRpb24gdGFibGUsCisubm90ZSB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIHBhZGRpbmc6IDAuOGVtIDAuMGVtIDAuMGVtIDAuMGVtOworICBtYXJnaW4gOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50aXAgcCwKKy53YXJuaW5nIHAsCisuY2F1dGlvbiBwLAorLm5vdGUgcCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWNyb255bSB7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIHBhZGRpbmc6IDAuMDllbSAwLjNlbTsKKyAgbWFyZ2luOiAwZW07Cit9CisKKy5pdGVtaXplZGxpc3QgbGkgeworICBjbGVhcjogbm9uZTsKK30KKworLmZpbGVuYW1lIHsKKyAgZm9udC1zaXplOiBtZWRpdW07CisgIGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2U7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMGVtOworICB0b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNjZGY7CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgcG9zaXRpb246IGZpeGVkOworICBsZWZ0OiAwZW07CisgIGJvdHRvbTogMGVtOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICB3aWR0aDogMTAwJTsKK30KKworCitkaXYubmF2aGVhZGVyIHRkLAorZGl2Lm5hdmZvb3RlciB0ZCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRoIHsKKyAgLypmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMsIHNlcmlmOyovCisgIC8qZm9udC1zaXplOiB4LWxhcmdlOyovCisgIGZvbnQtc2l6ZTogODAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci10b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhIHsKKyAgY29sb3I6ICM3Nzc7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyogbm9ybWFsIHRleHQgaW4gdGhlIGZvb3RlciAqLworZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCB7CisgIGNvbG9yOiBibGFjazsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOnZpc2l0ZWQsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6dmlzaXRlZCB7CisgIGNvbG9yOiAjNDQ0OworfQorCisKKy8qIGxpbmtzIGluIGhlYWRlciBhbmQgZm9vdGVyICovCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6aG92ZXIsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGNvbG9yOiAjMzNhOworfQorCitkaXYubmF2aGVhZGVyIGhyLAorZGl2Lm5hdmZvb3RlciBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworLnFhbmRhc2V0IHRyLnF1ZXN0aW9uIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisucWFuZGFzZXQgdHIuYW5zd2VyIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorLmFuc3dlciB0ZCB7CisgIHBhZGRpbmctYm90dG9tOiAxLjVlbTsKK30KKworLmVtcGhhc2lzIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKworICAvKioqKioqKioqKioqKiAvCisgLyBkZWNvcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqLworCisudGl0bGVwYWdlIHsKK30KKworLnBhcnQgLnRpdGxlIHsKK30KKworLnN1YnRpdGxlIHsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qCitoMSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworaDIgeworICBib3JkZXItdG9wOiBzb2xpZCAwLjJlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoMyB7CisgIGJvcmRlci10b3A6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNCB7CisgIGJvcmRlcjogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g1IHsKKyAgYm9yZGVyOiAwZW07Cit9CisqLworCisucHJvZ3JhbWxpc3RpbmcgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKy5xdWVzdGlvbiB0ZCB7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KKworLmFuc3dlciB7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkOworfQorCisgIC8qKioqKioqKiogLworIC8gIGNvbG9ycyAgLworLyAqKioqKioqKiovCisKK2JvZHkgeworICBjb2xvcjogIzMzMzsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisKK2EgeworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKK30KKworYTpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNkZWRlZGU7Cit9CisKKworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDcsCitoOCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCitociB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworCisudGlwLCAud2FybmluZywgLmNhdXRpb24sIC5ub3RlIHsKKyAgYm9yZGVyLWNvbG9yOiAjZmZmOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOworfQorCisKKy53YXJuaW5nIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisudGlwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLm5vdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtY3VzdG9taXphdGlvbi54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyZDg2MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiIHZlcnNpb249IjEuMCI+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9kb2Nib29rLW1pcnJvci9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKzwhLS0KKworICA8eHNsOmltcG9ydCBocmVmPSIuLi90ZW1wbGF0ZS8xLjc2LjEvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKy0tPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9ImJyaWVmLXlvY3RvcHJvamVjdHFzLXRpdGxlcGFnZS54c2wiLz4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLnRvYyIgc2VsZWN0PSInYXJ0aWNsZSBub3AnIj48L3hzbDpwYXJhbT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJ2JyaWVmLXlvY3RvcHJvamVjdHFzLXN0eWxlLmNzcyciIC8+Cis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLXN0eWxlLmNzcyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRlNzlkOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MKQEAgLTAsMCArMSw5OTIgQEAKKy8qCisKKyAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKKworICAgR2VuZXJpYyBYSFRNTCAvIERvY0Jvb2sgWEhUTUwgQ1NTIFN0eWxlc2hlZXQuCisKKyAgIEJyb3dzZXIgd3JhbmdsaW5nIGFuZCB0eXBvZ3JhcGhpYyBkZXNpZ24gYnkKKyAgICAgIE95dmluZCBLb2xhcyAvIHBpcHBpbkBnaW1wLm9yZworCisgICBDdXN0b21pc2VkIGZvciBQb2t5IGJ5CisgICAgICBNYXR0aGV3IEFsbHVtIC8gbWFsbHVtQG8taGFuZC5jb20KKworICAgVGhhbmtzIHRvOgorICAgICBMaWFtIFIuIEUuIFF1aW4KKyAgICAgV2lsbGlhbSBTa2FnZ3MKKyAgICAgSmFrdWIgU3RlaW5lcgorCisgICBTdHJ1Y3R1cmUKKyAgIC0tLS0tLS0tLQorCisgICBUaGUgc3R5bGVzaGVldCBpcyBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBzZWN0aW9uczoKKworICAgICAgIFBvc2l0aW9uaW5nCisgICAgICAgICAgTWFyZ2lucywgcGFkZGluZ3MsIHdpZHRoLCBmb250LXNpemUsIGNsZWFyaW5nLgorICAgICAgIERlY29yYXRpb25zCisgICAgICAgICAgQm9yZGVycywgc3R5bGUKKyAgICAgICBDb2xvcnMKKyAgICAgICAgICBDb2xvcnMKKyAgICAgICBHcmFwaGljcworICAgICAgICAgIEdyYXBoaWNhbCBiYWNrZ3JvdW5kcworICAgICAgIE5hc3R5IElFIHR3ZWFrcworICAgICAgICAgIFdvcmthcm91bmRzIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsgaW4gaW50ZXJuZXQgZXhwbG9yZXIsCisgICAgICAgICAgY3VycmVudGx5IG1ha2VzIHRoZSBzdHlsZXNoZWV0IG5vbiB2YWxpZGF0aW5nLCBidXQgdXAgdW50aWwKKyAgICAgICAgICB0aGlzIHBvaW50IGl0IGlzIHZhbGlkYXRpbmcuCisgICAgICAgTW96aWxsYSBleHRlbnNpb25zCisgICAgICAgICAgVHJhbnNwYXJlbmN5IGZvciBmb290ZXIKKwkgIFJvdW5kZWQgY29ybmVycyBvbiBib3hlcworCisqLworCisKKyAgLyoqKioqKioqKioqKioqKiAvCisgLyAgUG9zaXRpb25pbmcgICAvCisvICoqKioqKioqKioqKioqKi8KKworYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTYW5zLCBzYW5zLXNlcmlmOworCisgIG1pbi13aWR0aDogNjQwcHg7CisgIHdpZHRoOiA4MCU7CisgIG1hcmdpbjogIDBlbSBhdXRvOworICBwYWRkaW5nOiAyZW0gNWVtIDVlbSA1ZW07CisgIGNvbG9yOiAjMzMzOworfQorCitoMSxoMixoMyxoNCxoNSxoNixoNyB7CisgIGZvbnQtZmFtaWx5OiBBcmlhbCwgU2FuczsKKyAgY29sb3I6ICMwMDU1N0Q7CisgIGNsZWFyOiBib3RoOworfQorCitoMSB7CisgIGZvbnQtc2l6ZTogMmVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMmVtIDBlbSAwZW0gMGVtOworfQorCitoMi5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMC4xMGVtIDBlbSAzLjBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjhlbTsKKyAgcGFkZGluZy1sZWZ0OiAyMCU7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworaDIgeworICBtYXJnaW46IDJlbSAwZW0gMC42NmVtIDBlbTsKKyAgcGFkZGluZzogMC41ZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS41ZW07CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoMy5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQyLjE0JTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK2gzIHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0MCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNCB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDUgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g2IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLmF1dGhvcmdyb3VwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIHBhZGRpbmctdG9wOiAyNTZweDsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IC0xZW07CisgIG1hcmdpbi1sZWZ0OiAyNS41ZW07Cit9CisKKy5nbG9zc2FyeSBkZCBwLAorLnZhcmlhYmxlbGlzdCBkZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworZGl2IHAuY29weXJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmxlZ2Fsbm90aWNlIHAubGVnYWxub3RpY2UtdGl0bGUgeworICBtYXJnaW4tYm90dG9tOiAwZW07Cit9CisKK3AgeworICBsaW5lLWhlaWdodDogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKworfQorCitkbCB7CisgIHBhZGRpbmctdG9wOiAwZW07Cit9CisKK2hyIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKKworLm1lZGlhb2JqZWN0LAorLm1lZGlhb2JqZWN0Y28geworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2ltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKwordWwgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAxLjVlbTsKK30KKwordWwgbGkgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK3VsIGxpIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCit0YWJsZSB7CisgIHdpZHRoIDoxMDAlOworfQorCit0aCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKwordGQgeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3AgYVtpZF0geworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogMHB4OworICBkaXNwbGF5OiBpbmxpbmU7CisgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK2EgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK3ByZSB7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKK2E6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgLypmb250LXdlaWdodDogYm9sZDsqLworfQorCisvKiBUaGlzIHN0eWxlIGRlZmluZXMgaG93IHRoZSBwZXJtYWxpbmsgY2hhcmFjdGVyCisgICBhcHBlYXJzIGJ5IGl0c2VsZiBhbmQgd2hlbiBob3ZlcmVkIG92ZXIgd2l0aAorICAgdGhlIG1vdXNlLiAqLworCitbYWx0PSdQZXJtYWxpbmsnXSB7IGNvbG9yOiAjZWVlOyB9CitbYWx0PSdQZXJtYWxpbmsnXTpob3ZlciB7IGNvbG9yOiBibGFjazsgfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSB7CisgIG1hcmdpbjogMWVtIDBlbTsKKyAgcGFkZGluZzogMWVtOworICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cit9CisKKworZGl2LmluZm9ybWFsZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsdGFibGUgcC50aXRsZSBiLAorZGl2LmZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYudGFibGUgcC50aXRsZSBieworICAgIHBhZGRpbmctdG9wOiAwZW07CisgICAgbWFyZ2luLXRvcDogMGVtOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisubWVkaWFvYmplY3QgLmNhcHRpb24sCisubWVkaWFvYmplY3QgLmNhcHRpb24gcCAgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nLXRvcDogMC41ZW07CisgIHBhZGRpbmctYm90dG9tOiAwLjVlbTsKK30KKworLmVwaWdyYXBoIHsKKyAgcGFkZGluZy1sZWZ0OiA1NSU7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworLmVwaWdyYXBoIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuZXBpZ3JhcGggLnF1b3RlIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorLmVwaWdyYXBoIC5hdHRyaWJ1dGlvbiB7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK3NwYW4uYXBwbGljYXRpb24geworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogODAlOworICB3aGl0ZS1zcGFjZTogcHJlOworICBtYXJnaW46IDEuMzNlbSAwZW07CisgIHBhZGRpbmc6IDEuMzNlbTsKK30KKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIG1hcmdpbi10b3A6IDFlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworCit9CisKKy8qIGZvcmNlIGZ1bGwgd2lkdGggb2YgdGFibGUgd2l0aGluIGRpdiAqLworLnRpcCB0YWJsZSwKKy53YXJuaW5nIHRhYmxlLAorLmNhdXRpb24gdGFibGUsCisubm90ZSB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIHBhZGRpbmc6IDAuOGVtIDAuMGVtIDAuMGVtIDAuMGVtOworICBtYXJnaW4gOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50aXAgcCwKKy53YXJuaW5nIHAsCisuY2F1dGlvbiBwLAorLm5vdGUgcCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWNyb255bSB7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIHBhZGRpbmc6IDAuMDllbSAwLjNlbTsKKyAgbWFyZ2luOiAwZW07Cit9CisKKy5pdGVtaXplZGxpc3QgbGkgeworICBjbGVhcjogbm9uZTsKK30KKworLmZpbGVuYW1lIHsKKyAgZm9udC1zaXplOiBtZWRpdW07CisgIGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2U7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMGVtOworICB0b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNjZGY7CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgcG9zaXRpb246IGZpeGVkOworICBsZWZ0OiAwZW07CisgIGJvdHRvbTogMGVtOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICB3aWR0aDogMTAwJTsKK30KKworCitkaXYubmF2aGVhZGVyIHRkLAorZGl2Lm5hdmZvb3RlciB0ZCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRoIHsKKyAgLypmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMsIHNlcmlmOyovCisgIC8qZm9udC1zaXplOiB4LWxhcmdlOyovCisgIGZvbnQtc2l6ZTogODAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci10b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhIHsKKyAgY29sb3I6ICM3Nzc7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyogbm9ybWFsIHRleHQgaW4gdGhlIGZvb3RlciAqLworZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCB7CisgIGNvbG9yOiBibGFjazsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOnZpc2l0ZWQsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6dmlzaXRlZCB7CisgIGNvbG9yOiAjNDQ0OworfQorCisKKy8qIGxpbmtzIGluIGhlYWRlciBhbmQgZm9vdGVyICovCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6aG92ZXIsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGNvbG9yOiAjMzNhOworfQorCitkaXYubmF2aGVhZGVyIGhyLAorZGl2Lm5hdmZvb3RlciBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworLnFhbmRhc2V0IHRyLnF1ZXN0aW9uIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisucWFuZGFzZXQgdHIuYW5zd2VyIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorLmFuc3dlciB0ZCB7CisgIHBhZGRpbmctYm90dG9tOiAxLjVlbTsKK30KKworLmVtcGhhc2lzIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKworICAvKioqKioqKioqKioqKiAvCisgLyBkZWNvcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqLworCisudGl0bGVwYWdlIHsKK30KKworLnBhcnQgLnRpdGxlIHsKK30KKworLnN1YnRpdGxlIHsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qCitoMSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworaDIgeworICBib3JkZXItdG9wOiBzb2xpZCAwLjJlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoMyB7CisgIGJvcmRlci10b3A6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNCB7CisgIGJvcmRlcjogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g1IHsKKyAgYm9yZGVyOiAwZW07Cit9CisqLworCisucHJvZ3JhbWxpc3RpbmcgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKy5xdWVzdGlvbiB0ZCB7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KKworLmFuc3dlciB7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkOworfQorCisgIC8qKioqKioqKiogLworIC8gIGNvbG9ycyAgLworLyAqKioqKioqKiovCisKK2JvZHkgeworICBjb2xvcjogIzMzMzsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisKK2EgeworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKK30KKworYTpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNkZWRlZGU7Cit9CisKKworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDcsCitoOCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCitociB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworCisudGlwLCAud2FybmluZywgLmNhdXRpb24sIC5ub3RlIHsKKyAgYm9yZGVyLWNvbG9yOiAjZmZmOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOworfQorCisKKy53YXJuaW5nIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisudGlwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLm5vdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworLndyaXRlcm5vdGVzIHsKKyAgY29sb3I6IHJlZDsKK30KKworCisgIC8qKioqKioqKioqKiAvCisgLyAgZ3JhcGhpY3MgIC8KKy8gKioqKioqKioqKiovCisKKy8qCitib2R5IHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvYm9keV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLm5hdmhlYWRlciwKKy5ub3RlLAorLnRpcCB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL25vdGVfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy53YXJuaW5nLAorLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy93YXJuaW5nX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisuZmlndXJlLAorLmluZm9ybWFsZmlndXJlLAorLmV4YW1wbGUsCisuaW5mb3JtYWxleGFtcGxlLAorLnRhYmxlLAorLmluZm9ybWFsdGFibGUgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9maWd1cmVfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKyovCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoN3sKK30KKworLyoKK0V4YW1wbGUgb2YgaG93IHRvIHN0aWNrIGFuIGltYWdlIGFzIHBhcnQgb2YgdGhlIHRpdGxlLgorCitkaXYuYXJ0aWNsZSAudGl0bGVwYWdlIC50aXRsZQoreworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvd2hpdGUtb24tYmxhY2sucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworfQorKi8KKworZGl2LnByZWZhY2UgLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuY29sb3Bob24gLnRpdGxlLAorZGl2LmNoYXB0ZXIgLnRpdGxlcGFnZSAudGl0bGUgeworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b207CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtdGl0bGVwYWdlLnhzbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy10aXRsZXBhZ2UueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NGFjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtdGl0bGVwYWdlLnhzbApAQCAtMCwwICsxLDM4MjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxuczpleHNsPSJodHRwOi8vZXhzbHQub3JnL2NvbW1vbiIgdmVyc2lvbj0iMS4wIiBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZXhzbCI+CisKKzwhLS0gVGhpcyBzdHlsZXNoZWV0IHdhcyBjcmVhdGVkIGJ5IHRlbXBsYXRlL3RpdGxlcGFnZS54c2wtLT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0byI+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcnRpY2xlaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aGVhZGVyL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJhcnRpY2xlaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJhcnRoZWFkZXIvdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFydGhlYWRlci90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0idGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImFydGljbGVpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcnRpY2xlaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImFydGhlYWRlci9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aGVhZGVyL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aGVhZGVyL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFydGhlYWRlci9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcnRoZWFkZXIvYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFydGhlYWRlci9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFydGhlYWRlci9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcnRoZWFkZXIvY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFydGhlYWRlci9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aGVhZGVyL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFydGhlYWRlci9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aWNsZWluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXJ0aGVhZGVyL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYXJ0aWNsZS50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYXJ0aWNsZS50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48aHIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYXJ0aWNsZS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImFydGljbGUudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJhcnRpY2xlLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhcnRpY2xlLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYXJ0aWNsZS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYXJ0aWNsZS50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYXJ0aWNsZS50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKyAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFuY2hvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+Cis8IS0tIG9yaWduYWxseSBnZW5lcmF0ZWQgY29udGVudCAtLT4KKzwhLS0gPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+IC0tPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29ycGF1dGhvciIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3Jncm91cCIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3IiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3RoZXJjcmVkaXQiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmVsZWFzZWluZm8iIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29weXJpZ2h0IiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxlZ2Fsbm90aWNlIiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InB1YmRhdGUiIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aXNpb24iIG1vZGU9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFydGljbGUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aGlzdG9yeSIgbW9kZT0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYXJ0aWNsZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcnRpY2xlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNldC50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2V0aW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZXRpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0idGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0idGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9InNldGluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2V0aW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InN1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNldGluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2V0aW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNldGluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNldGluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZXRpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2V0aW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2V0aW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNldGluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2V0aW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNldGluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2V0aW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2Fic3RyYWN0Ii8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZXQudGl0bGVwYWdlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNldC50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48aHIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2V0LnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2V0LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2V0LnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZXQudGl0bGVwYWdlLmJlZm9yZS5yZWN0byIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNldC50aXRsZXBhZ2UucmVjdG8iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCRyZWN0by5jb250ZW50KSAhPSAnJykgb3IgKCRyZWN0by5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHJlY3RvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNldC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2V0LnRpdGxlcGFnZS52ZXJzbyIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHZlcnNvLmNvbnRlbnQpICE9ICcnKSBvciAoJHZlcnNvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkdmVyc28uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZXQudGl0bGVwYWdlLnNlcGFyYXRvciIvPgorICA8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZXQudGl0bGVwYWdlLnZlcnNvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJ0aXRsZSIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJ0aXRsZSIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3JwYXV0aG9yIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNldC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImF1dGhvcmdyb3VwIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNldC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImF1dGhvciIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJvdGhlcmNyZWRpdCIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZWxlYXNlaW5mbyIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3B5cmlnaHQiIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2V0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibGVnYWxub3RpY2UiIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2V0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNldC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icHViZGF0ZSIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZXZpc2lvbiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZXQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZXZoaXN0b3J5IiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNldC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImFic3RyYWN0IiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNldC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZXQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0iYm9va2luZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImJvb2tpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0iYm9va2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImJvb2tpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYm9va2luZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJib29raW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYm9va2luZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYm9va2luZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImJvb2tpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJib29raW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJib29raW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYm9va2luZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJib29raW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYm9va2luZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJib29raW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hYnN0cmFjdCIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48aHIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImJvb2sudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJib29rLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJib29rLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJib29rLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYm9vay50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJib29rLnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29ycGF1dGhvciIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYm9vay50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3Jncm91cCIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYm9vay50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3IiIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3RoZXJjcmVkaXQiIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmVsZWFzZWluZm8iIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29weXJpZ2h0IiBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJib29rLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxlZ2Fsbm90aWNlIiBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJib29rLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InB1YmRhdGUiIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aXNpb24iIG1vZGU9ImJvb2sudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJvb2sudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aGlzdG9yeSIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYm9vay50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhYnN0cmFjdCIgbW9kZT0iYm9vay50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYm9vay50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJib29rLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InBhcnQudGl0bGVwYWdlLnJlY3RvIj4KKyAgPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZGl2aXNpb24udGl0bGUiPgorPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iYW5jZXN0b3Itb3Itc2VsZjo6cGFydFsxXSIvPgorPC94c2w6Y2FsbC10ZW1wbGF0ZT48L2Rpdj4KKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9InBhcnRpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwYXJ0aW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRvY2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0ic3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InN1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwYXJ0aW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InBhcnRpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwYXJ0aW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGluZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InBhcnRpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwYXJ0aW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InBhcnRpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwYXJ0aW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGluZm8vYWJzdHJhY3QiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYWJzdHJhY3QiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InBhcnQudGl0bGVwYWdlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InBhcnQudGl0bGVwYWdlLnNlcGFyYXRvciI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwYXJ0LnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icGFydC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InBhcnQudGl0bGVwYWdlIj4KKyAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBhcnQudGl0bGVwYWdlLmJlZm9yZS5yZWN0byIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBhcnQudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwYXJ0LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwYXJ0LnRpdGxlcGFnZS52ZXJzbyIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHZlcnNvLmNvbnRlbnQpICE9ICcnKSBvciAoJHZlcnNvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkdmVyc28uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwYXJ0LnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9InBhcnQudGl0bGVwYWdlLnZlcnNvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJ0aXRsZSIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3JwYXV0aG9yIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImF1dGhvcmdyb3VwIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImF1dGhvciIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJvdGhlcmNyZWRpdCIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZWxlYXNlaW5mbyIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3B5cmlnaHQiIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InBhcnQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibGVnYWxub3RpY2UiIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InBhcnQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icHViZGF0ZSIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZXZpc2lvbiIgbW9kZT0icGFydC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZXZoaXN0b3J5IiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImFic3RyYWN0IiBtb2RlPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InBhcnQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0byI+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJwYXJ0aW50cm9pbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InBhcnRpbnRyb2luZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0icGFydGludHJvaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwYXJ0aW50cm9pbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0ic3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icGFydGludHJvaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InBhcnRpbnRyby50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icGFydGludHJvLnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icGFydGludHJvLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icGFydGludHJvLnRpdGxlcGFnZS5iZWZvcmUudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icGFydGludHJvLnRpdGxlcGFnZSI+CisgIDxkaXY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwYXJ0aW50cm8udGl0bGVwYWdlLmJlZm9yZS5yZWN0byIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCRyZWN0by5jb250ZW50KSAhPSAnJykgb3IgKCRyZWN0by5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHJlY3RvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBhcnRpbnRyby50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icGFydGludHJvLnRpdGxlcGFnZS52ZXJzbyIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHZlcnNvLmNvbnRlbnQpICE9ICcnKSBvciAoJHZlcnNvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkdmVyc28uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwYXJ0aW50cm8udGl0bGVwYWdlLnNlcGFyYXRvciIvPgorICA8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnZlcnNvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJ0aXRsZSIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJ0aXRsZSIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3JwYXV0aG9yIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImF1dGhvcmdyb3VwIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImF1dGhvciIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJvdGhlcmNyZWRpdCIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZWxlYXNlaW5mbyIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3B5cmlnaHQiIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibGVnYWxub3RpY2UiIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icHViZGF0ZSIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZXZpc2lvbiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icGFydGludHJvLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZXZoaXN0b3J5IiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImFic3RyYWN0IiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InBhcnRpbnRyby50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwYXJ0aW50cm8udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0byI+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJyZWZlcmVuY2VpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InJlZmVyZW5jZWluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0icmVmZXJlbmNlaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJyZWZlcmVuY2VpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0ic3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icmVmZXJlbmNlaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InJlZmVyZW5jZS50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5zZXBhcmF0b3IiPjxoci8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJyZWZlcmVuY2UudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJyZWZlcmVuY2UudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJyZWZlcmVuY2UudGl0bGVwYWdlIj4KKyAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InJlZmVyZW5jZS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5iZWZvcmUudmVyc28iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJyZWZlcmVuY2UudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InJlZmVyZW5jZS50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJyZWZlcmVuY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icmVmZXJlbmNlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InJlZmVyZW5jZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJyZWZlbnRyeS50aXRsZXBhZ2UucmVjdG8iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icmVmZW50cnkudGl0bGVwYWdlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InJlZmVudHJ5LnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icmVmZW50cnkudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJyZWZlbnRyeS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InJlZmVudHJ5LnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJyZWZlbnRyeS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icmVmZW50cnkudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJyZWZlbnRyeS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icmVmZW50cnkudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InJlZmVudHJ5LnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0icmVmZW50cnkudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJyZWZlbnRyeS50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UucmVjdG8iPgorICA8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImRlZGljYXRpb24udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJjb21wb25lbnQudGl0bGUiPgorPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iYW5jZXN0b3Itb3Itc2VsZjo6ZGVkaWNhdGlvblsxXSIvPgorPC94c2w6Y2FsbC10ZW1wbGF0ZT48L2Rpdj4KKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRlZGljYXRpb25pbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImRlZGljYXRpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkZWRpY2F0aW9uaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRvY2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImRlZGljYXRpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0ic3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InN1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJkZWRpY2F0aW9uLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJkZWRpY2F0aW9uLnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImRlZGljYXRpb24udGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJkZWRpY2F0aW9uLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJkZWRpY2F0aW9uLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJkZWRpY2F0aW9uLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImRlZGljYXRpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJkZWRpY2F0aW9uLnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9ImRlZGljYXRpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImRlZGljYXRpb24udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iZGVkaWNhdGlvbi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5yZWN0byI+CisgIDxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImNvbXBvbmVudC50aXRsZSI+Cis8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSJhbmNlc3Rvci1vci1zZWxmOjphY2tub3dsZWRnZW1lbnRzWzFdIi8+Cis8L3hzbDpjYWxsLXRlbXBsYXRlPjwvZGl2PgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0iYWNrbm93bGVkZ2VtZW50c2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFja25vd2xlZGdlbWVudHNpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImFja25vd2xlZGdlbWVudHMudGl0bGVwYWdlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImFja25vd2xlZGdlbWVudHMudGl0bGVwYWdlLnNlcGFyYXRvciI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImFja25vd2xlZGdlbWVudHMudGl0bGVwYWdlIj4KKyAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFja25vd2xlZGdlbWVudHMudGl0bGVwYWdlLmJlZm9yZS5yZWN0byIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFja25vd2xlZGdlbWVudHMudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5iZWZvcmUudmVyc28iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS52ZXJzbyIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHZlcnNvLmNvbnRlbnQpICE9ICcnKSBvciAoJHZlcnNvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkdmVyc28uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UucmVjdG8ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImFja25vd2xlZGdlbWVudHMudGl0bGVwYWdlLnZlcnNvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJ0aXRsZSIgbW9kZT0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYWNrbm93bGVkZ2VtZW50cy50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhY2tub3dsZWRnZW1lbnRzLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvIj4KKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9InByZWZhY2VpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwcmVmYWNlaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRvY2luZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0idGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJwcmVmYWNlaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icHJlZmFjZWluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icHJlZmFjZWluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InByZWZhY2VpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwcmVmYWNlaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icHJlZmFjZWluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InByZWZhY2VpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwcmVmYWNlaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icHJlZmFjZWluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InByZWZhY2VpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJwcmVmYWNlaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0icHJlZmFjZWluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InByZWZhY2VpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2Fic3RyYWN0Ii8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmVmYWNlLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmVmYWNlLnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0icHJlZmFjZS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InByZWZhY2UudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmVmYWNlLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmVmYWNlLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJlZmFjZS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJlZmFjZS50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJlZmFjZS50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29ycGF1dGhvciIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3Jncm91cCIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3IiIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3RoZXJjcmVkaXQiIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmVsZWFzZWluZm8iIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29weXJpZ2h0IiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxlZ2Fsbm90aWNlIiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InB1YmRhdGUiIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aXNpb24iIG1vZGU9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InByZWZhY2UudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aGlzdG9yeSIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhYnN0cmFjdCIgbW9kZT0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0icHJlZmFjZS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJwcmVmYWNlLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvIj4KKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImNoYXB0ZXJpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJjaGFwdGVyaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRvY2luZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0idGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJjaGFwdGVyaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iY2hhcHRlcmluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iY2hhcHRlcmluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImNoYXB0ZXJpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJjaGFwdGVyaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iY2hhcHRlcmluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImNoYXB0ZXJpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJjaGFwdGVyaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iY2hhcHRlcmluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImNoYXB0ZXJpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJjaGFwdGVyaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iY2hhcHRlcmluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImNoYXB0ZXJpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2Fic3RyYWN0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2Fic3RyYWN0Ii8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJjaGFwdGVyLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJjaGFwdGVyLnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iY2hhcHRlci50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImNoYXB0ZXIudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJjaGFwdGVyLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJjaGFwdGVyLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY2hhcHRlci50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY2hhcHRlci50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY2hhcHRlci50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29ycGF1dGhvciIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3Jncm91cCIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3IiIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3RoZXJjcmVkaXQiIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmVsZWFzZWluZm8iIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29weXJpZ2h0IiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxlZ2Fsbm90aWNlIiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InB1YmRhdGUiIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aXNpb24iIG1vZGU9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNoYXB0ZXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aGlzdG9yeSIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhYnN0cmFjdCIgbW9kZT0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iY2hhcHRlci50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJjaGFwdGVyLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0byI+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJhcHBlbmRpeGluZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcHBlbmRpeGluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0idGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0iYXBwZW5kaXhpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXBwZW5kaXhpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcHBlbmRpeGluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFwcGVuZGl4aW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2F1dGhvcmdyb3VwIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXBwZW5kaXhpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcHBlbmRpeGluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9vdGhlcmNyZWRpdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFwcGVuZGl4aW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmVsZWFzZWluZm8iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXBwZW5kaXhpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcHBlbmRpeGluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFwcGVuZGl4aW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iYXBwZW5kaXhpbmZvL3JldmlzaW9uIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJhcHBlbmRpeGluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImFwcGVuZGl4aW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vYWJzdHJhY3QiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2Fic3RyYWN0Ii8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJhcHBlbmRpeC50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYXBwZW5kaXgudGl0bGVwYWdlLnNlcGFyYXRvciI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJhcHBlbmRpeC50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImFwcGVuZGl4LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYXBwZW5kaXgudGl0bGVwYWdlIj4KKyAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFwcGVuZGl4LnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCRyZWN0by5jb250ZW50KSAhPSAnJykgb3IgKCRyZWN0by5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHJlY3RvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImFwcGVuZGl4LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJhcHBlbmRpeC50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYXBwZW5kaXgudGl0bGVwYWdlLnNlcGFyYXRvciIvPgorICA8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29ycGF1dGhvciIgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3Jncm91cCIgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3IiIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3RoZXJjcmVkaXQiIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmVsZWFzZWluZm8iIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29weXJpZ2h0IiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxlZ2Fsbm90aWNlIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InB1YmRhdGUiIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aXNpb24iIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJhcHBlbmRpeC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aGlzdG9yeSIgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhYnN0cmFjdCIgbW9kZT0iYXBwZW5kaXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImFwcGVuZGl4LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvIj4KKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9InNlY3Rpb25pbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0aW9uaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0idGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9InNlY3Rpb25pbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0aW9uaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Rpb25pbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdGlvbmluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Rpb25pbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Rpb25pbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0aW9uaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdGlvbmluZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdGlvbmluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Rpb25pbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdGlvbmluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Rpb25pbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdGlvbmluZm8vYWJzdHJhY3QiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLnNlcGFyYXRvciI+PHhzbDppZiB0ZXN0PSJjb3VudChwYXJlbnQ6OiopPScwJyI+PGhyLz48L3hzbDppZj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0aW9uLnRpdGxlcGFnZS5iZWZvcmUudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdGlvbi50aXRsZXBhZ2UiPgorICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdGlvbi50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCRyZWN0by5jb250ZW50KSAhPSAnJykgb3IgKCRyZWN0by5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHJlY3RvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLmJlZm9yZS52ZXJzbyIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Rpb24udGl0bGVwYWdlLnNlcGFyYXRvciIvPgorICA8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0aW9uLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Rpb24udGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdGlvbi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2VjdDFpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDFpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzZWN0MWluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MWluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MWluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QxaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MWluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MWluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDFpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QxaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QxaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MWluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QxaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MWluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QxaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3QxLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0MS50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48eHNsOmlmIHRlc3Q9ImNvdW50KHBhcmVudDo6Kik9JzAnIj48aHIvPjwveHNsOmlmPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdDEudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0MS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3QxLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0MS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0MS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDEudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3QxLnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDEudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InNlY3QxLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0MS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2VjdDJpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDJpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzZWN0MmluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MmluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MmluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QyaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MmluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MmluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDJpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QyaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QyaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MmluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QyaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0MmluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QyaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3QyLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0Mi50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48eHNsOmlmIHRlc3Q9ImNvdW50KHBhcmVudDo6Kik9JzAnIj48aHIvPjwveHNsOmlmPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdDIudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0Mi50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3QyLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0Mi50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0Mi50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDIudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3QyLnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDIudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InNlY3QyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0Mi50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0My50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2VjdDNpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDNpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzZWN0M2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0M2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0M2luZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QzaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0M2luZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0M2luZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDNpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QzaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QzaW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0M2luZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QzaW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0M2luZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3QzaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3QzLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0My50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48eHNsOmlmIHRlc3Q9ImNvdW50KHBhcmVudDo6Kik9JzAnIj48aHIvPjwveHNsOmlmPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdDMudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0My50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3QzLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0My50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0My50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDMudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3QzLnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDMudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InNlY3QzLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0My50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0My50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2VjdDRpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDRpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzZWN0NGluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NGluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NGluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q0aW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NGluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NGluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDRpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q0aW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q0aW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NGluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q0aW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NGluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q0aW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Q0LnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0NC50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48eHNsOmlmIHRlc3Q9ImNvdW50KHBhcmVudDo6Kik9JzAnIj48aHIvPjwveHNsOmlmPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdDQudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0NC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Q0LnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0NC50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0NC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDQudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Q0LnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDQudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InNlY3Q0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2VjdDVpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDVpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzZWN0NWluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NWluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NWluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q1aW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYXV0aG9yZ3JvdXAiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NWluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NWluZm8vb3RoZXJjcmVkaXQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2VjdDVpbmZvL3JlbGVhc2VpbmZvIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q1aW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q1aW5mby9sZWdhbG5vdGljZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vbGVnYWxub3RpY2UiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NWluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q1aW5mby9yZXZpc2lvbiIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZWN0NWluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNlY3Q1aW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vYWJzdHJhY3QiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Q1LnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0NS50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48eHNsOmlmIHRlc3Q9ImNvdW50KHBhcmVudDo6Kik9JzAnIj48aHIvPjwveHNsOmlmPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdDUudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZWN0NS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNlY3Q1LnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0NS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0NS50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2VjdDUudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Q1LnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcnBhdXRob3IiIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yZ3JvdXAiIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYXV0aG9yIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Im90aGVyY3JlZGl0IiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJlbGVhc2VpbmZvIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcHlyaWdodCIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJsZWdhbG5vdGljZSIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwdWJkYXRlIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmlzaW9uIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2VjdDUudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InJldmhpc3RvcnkiIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWJzdHJhY3QiIG1vZGU9InNlY3Q1LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzZWN0NS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0byI+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzaW1wbGVzZWN0aW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2ltcGxlc2VjdGluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3RpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2ltcGxlc2VjdGluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNpbXBsZXNlY3RpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNpbXBsZXNlY3RpbmZvL2NvcnBhdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vY29ycGF1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3JwYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzaW1wbGVzZWN0aW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3Jncm91cCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2ltcGxlc2VjdGluZm8vYXV0aG9yIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2F1dGhvciIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hdXRob3IiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNpbXBsZXNlY3RpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL290aGVyY3JlZGl0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzaW1wbGVzZWN0aW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZWxlYXNlaW5mbyIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2ltcGxlc2VjdGluZm8vY29weXJpZ2h0Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2NvcHlyaWdodCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9jb3B5cmlnaHQiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNpbXBsZXNlY3RpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL2xlZ2Fsbm90aWNlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzaW1wbGVzZWN0aW5mby9wdWJkYXRlIi8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3B1YmRhdGUiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcHViZGF0ZSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic2ltcGxlc2VjdGluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vcmV2aXNpb24iLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNpbXBsZXNlY3RpbmZvL3Jldmhpc3RvcnkiLz4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vcmV2aGlzdG9yeSIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9yZXZoaXN0b3J5Ii8+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzaW1wbGVzZWN0aW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9hYnN0cmFjdCIvPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9hYnN0cmFjdCIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2Uuc2VwYXJhdG9yIj48eHNsOmlmIHRlc3Q9ImNvdW50KHBhcmVudDo6Kik9JzAnIj48aHIvPjwveHNsOmlmPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNpbXBsZXNlY3QudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzaW1wbGVzZWN0LnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29ycGF1dGhvciIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3Jncm91cCIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhdXRob3IiIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ib3RoZXJjcmVkaXQiIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmVsZWFzZWluZm8iIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29weXJpZ2h0IiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxlZ2Fsbm90aWNlIiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InB1YmRhdGUiIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aXNpb24iIG1vZGU9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpbXBsZXNlY3QudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmV2aGlzdG9yeSIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJhYnN0cmFjdCIgbW9kZT0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2ltcGxlc2VjdC50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJzaW1wbGVzZWN0LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8iPgorICA8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImNvbXBvbmVudC50aXRsZSI+Cis8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSJhbmNlc3Rvci1vci1zZWxmOjpiaWJsaW9ncmFwaHlbMV0iLz4KKzwveHNsOmNhbGwtdGVtcGxhdGU+PC9kaXY+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJiaWJsaW9ncmFwaHlpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImJpYmxpb2dyYXBoeWluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iYmlibGlvZ3JhcGh5LnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLnNlcGFyYXRvciI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlIj4KKyAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYmlibGlvZ3JhcGh5LnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYmlibGlvZ3JhcGh5LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImJpYmxpb2dyYXBoeS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJiaWJsaW9ncmFwaHkudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iZ2xvc3NhcnkudGl0bGVwYWdlLnJlY3RvIj4KKyAgPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImNvbXBvbmVudC50aXRsZSI+Cis8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSJhbmNlc3Rvci1vci1zZWxmOjpnbG9zc2FyeVsxXSIvPgorPC94c2w6Y2FsbC10ZW1wbGF0ZT48L2Rpdj4KKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9Imdsb3NzYXJ5aW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9Imdsb3NzYXJ5aW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRvY2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0iZ2xvc3NhcnkudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJkb2NpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InN1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJnbG9zc2FyeS50aXRsZXBhZ2UudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iZ2xvc3NhcnkudGl0bGVwYWdlLnNlcGFyYXRvciI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJnbG9zc2FyeS50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9Imdsb3NzYXJ5LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iZ2xvc3NhcnkudGl0bGVwYWdlIj4KKyAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9Imdsb3NzYXJ5LnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InJlY3RvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCRyZWN0by5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCRyZWN0by5jb250ZW50KSAhPSAnJykgb3IgKCRyZWN0by5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHJlY3RvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmNvbnRlbnQiPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9Imdsb3NzYXJ5LnRpdGxlcGFnZS5iZWZvcmUudmVyc28iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJnbG9zc2FyeS50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZ2xvc3NhcnkudGl0bGVwYWdlLnNlcGFyYXRvciIvPgorICA8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9Imdsb3NzYXJ5LnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9Imdsb3NzYXJ5LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiPgorPGRpdiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8uc3R5bGUiPgorPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJnbG9zc2FyeS50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJpbmRleC50aXRsZXBhZ2UucmVjdG8iPgorICA8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY29tcG9uZW50LnRpdGxlIj4KKzx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9ImFuY2VzdG9yLW9yLXNlbGY6OmluZGV4WzFdIi8+Cis8L3hzbDpjYWxsLXRlbXBsYXRlPjwvZGl2PgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0iaW5kZXhpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5kZXhpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby9zdWJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJpbmRleC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9InN1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0ic3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImluZGV4LnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJpbmRleC50aXRsZXBhZ2Uuc2VwYXJhdG9yIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9ImluZGV4LnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0iaW5kZXgudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJpbmRleC50aXRsZXBhZ2UiPgorICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iaW5kZXgudGl0bGVwYWdlLmJlZm9yZS5yZWN0byIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImluZGV4LnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iaW5kZXgudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyIvPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImluZGV4LnRpdGxlcGFnZS52ZXJzbyIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHZlcnNvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHZlcnNvLmNvbnRlbnQpICE9ICcnKSBvciAoJHZlcnNvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkdmVyc28uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJpbmRleC50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0iaW5kZXgudGl0bGVwYWdlLnZlcnNvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJ0aXRsZSIgbW9kZT0iaW5kZXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5zdHlsZSI+Cis8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9ImluZGV4LnRpdGxlcGFnZS5yZWN0by5tb2RlIi8+Cis8L2Rpdj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNldGluZGV4LnRpdGxlcGFnZS5yZWN0byI+CisgIDxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJjb21wb25lbnQudGl0bGUiPgorPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iYW5jZXN0b3Itb3Itc2VsZjo6c2V0aW5kZXhbMV0iLz4KKzwveHNsOmNhbGwtdGVtcGxhdGU+PC9kaXY+CisgIDx4c2w6Y2hvb3NlPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJzZXRpbmRleGluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzZXRpbmRleGluZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJkb2NpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNldGluZGV4LnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0ic3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgIDwveHNsOmNob29zZT4KKworPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2V0aW5kZXgudGl0bGVwYWdlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNldGluZGV4LnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2V0aW5kZXgudGl0bGVwYWdlLmJlZm9yZS5yZWN0byI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzZXRpbmRleC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNldGluZGV4LnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZXRpbmRleC50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkcmVjdG8uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkcmVjdG8uY29udGVudCkgIT0gJycpIG9yICgkcmVjdG8uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiRyZWN0by5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZXRpbmRleC50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2V0aW5kZXgudGl0bGVwYWdlLnZlcnNvIi8+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2ZXJzby5lbGVtZW50cy5jb3VudCI+CisgICAgICA8eHNsOmNob29zZT4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZ1bmN0aW9uLWF2YWlsYWJsZSgnZXhzbDpub2RlLXNldCcpIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iY29udGFpbnMoc3lzdGVtLXByb3BlcnR5KCd4c2w6dmVuZG9yJyksICdBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbicpIj4KKyAgICAgICAgICA8IS0tWGFsYW4gcXVpcmstLT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoZXhzbDpub2RlLXNldCgkdmVyc28uY29udGVudCkvKikiLz48L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT4xPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6aWYgdGVzdD0iKG5vcm1hbGl6ZS1zcGFjZSgkdmVyc28uY29udGVudCkgIT0gJycpIG9yICgkdmVyc28uZWxlbWVudHMuY291bnQgJmd0OyAwKSI+CisgICAgICA8ZGl2Pjx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2ZXJzby5jb250ZW50Ii8+PC9kaXY+CisgICAgPC94c2w6aWY+CisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNldGluZGV4LnRpdGxlcGFnZS5zZXBhcmF0b3IiLz4KKyAgPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKiIgbW9kZT0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzZXRpbmRleC50aXRsZXBhZ2UudmVyc28ubW9kZSI+CisgIDwhLS0gaWYgYW4gZWxlbWVudCBpc24ndCBmb3VuZCBpbiB0aGlzIG1vZGUsIC0tPgorICA8IS0tIHRyeSB0aGUgZ2VuZXJpYyB0aXRsZXBhZ2UubW9kZSAtLT4KKyAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJ0aXRsZXBhZ2UubW9kZSIvPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnRpdGxlIiBtb2RlPSJzZXRpbmRleC50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIj4KKzxkaXYgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2V0aW5kZXgudGl0bGVwYWdlLnJlY3RvLm1vZGUiLz4KKzwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2lkZWJhci50aXRsZXBhZ2UucmVjdG8iPgorICA8eHNsOmNob29zZT4KKyAgICA8eHNsOndoZW4gdGVzdD0ic2lkZWJhcmluZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2lkZWJhci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InNpZGViYXJpbmZvL3RpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0iZG9jaW5mby90aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaWRlYmFyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0iZG9jaW5mby90aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImluZm8vdGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2lkZWJhci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImluZm8vdGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJ0aXRsZSI+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBtb2RlPSJzaWRlYmFyLnRpdGxlcGFnZS5yZWN0by5hdXRvLm1vZGUiIHNlbGVjdD0idGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICA8L3hzbDpjaG9vc2U+CisKKyAgPHhzbDpjaG9vc2U+CisgICAgPHhzbDp3aGVuIHRlc3Q9InNpZGViYXJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJzaWRlYmFyaW5mby9zdWJ0aXRsZSIvPgorICAgIDwveHNsOndoZW4+CisgICAgPHhzbDp3aGVuIHRlc3Q9ImRvY2luZm8vc3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2lkZWJhci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9ImRvY2luZm8vc3VidGl0bGUiLz4KKyAgICA8L3hzbDp3aGVuPgorICAgIDx4c2w6d2hlbiB0ZXN0PSJpbmZvL3N1YnRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIG1vZGU9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSIgc2VsZWN0PSJpbmZvL3N1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgICA8eHNsOndoZW4gdGVzdD0ic3VidGl0bGUiPgorICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgbW9kZT0ic2lkZWJhci50aXRsZXBhZ2UucmVjdG8uYXV0by5tb2RlIiBzZWxlY3Q9InN1YnRpdGxlIi8+CisgICAgPC94c2w6d2hlbj4KKyAgPC94c2w6Y2hvb3NlPgorCis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzaWRlYmFyLnRpdGxlcGFnZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzaWRlYmFyLnRpdGxlcGFnZS5zZXBhcmF0b3IiPgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbmFtZT0ic2lkZWJhci50aXRsZXBhZ2UuYmVmb3JlLnJlY3RvIj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG5hbWU9InNpZGViYXIudGl0bGVwYWdlLmJlZm9yZS52ZXJzbyI+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBuYW1lPSJzaWRlYmFyLnRpdGxlcGFnZSI+CisgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJyZWN0by5jb250ZW50Ij4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzaWRlYmFyLnRpdGxlcGFnZS5iZWZvcmUucmVjdG8iLz4KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzaWRlYmFyLnRpdGxlcGFnZS5yZWN0byIvPgorICAgIDwveHNsOnZhcmlhYmxlPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVjdG8uZWxlbWVudHMuY291bnQiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmdW5jdGlvbi1hdmFpbGFibGUoJ2V4c2w6bm9kZS1zZXQnKSI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvbnRhaW5zKHN5c3RlbS1wcm9wZXJ0eSgneHNsOnZlbmRvcicpLCAnQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24nKSI+CisgICAgICAgICAgPCEtLVhhbGFuIHF1aXJrLS0+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvdW50KGV4c2w6bm9kZS1zZXQoJHJlY3RvLmNvbnRlbnQpLyopIi8+PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDpvdGhlcndpc2U+MTwveHNsOm90aGVyd2lzZT4KKyAgICAgIDwveHNsOmNob29zZT4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOmlmIHRlc3Q9Iihub3JtYWxpemUtc3BhY2UoJHJlY3RvLmNvbnRlbnQpICE9ICcnKSBvciAoJHJlY3RvLmVsZW1lbnRzLmNvdW50ICZndDsgMCkiPgorICAgICAgPGRpdj48eHNsOmNvcHktb2Ygc2VsZWN0PSIkcmVjdG8uY29udGVudCIvPjwvZGl2PgorICAgIDwveHNsOmlmPgorICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idmVyc28uY29udGVudCI+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2lkZWJhci50aXRsZXBhZ2UuYmVmb3JlLnZlcnNvIi8+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2lkZWJhci50aXRsZXBhZ2UudmVyc28iLz4KKyAgICA8L3hzbDp2YXJpYWJsZT4KKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZlcnNvLmVsZW1lbnRzLmNvdW50Ij4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iZnVuY3Rpb24tYXZhaWxhYmxlKCdleHNsOm5vZGUtc2V0JykiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb250YWlucyhzeXN0ZW0tcHJvcGVydHkoJ3hzbDp2ZW5kb3InKSwgJ0FwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJykiPgorICAgICAgICAgIDwhLS1YYWxhbiBxdWlyay0tPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3VudChleHNsOm5vZGUtc2V0KCR2ZXJzby5jb250ZW50KS8qKSIvPjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDppZiB0ZXN0PSIobm9ybWFsaXplLXNwYWNlKCR2ZXJzby5jb250ZW50KSAhPSAnJykgb3IgKCR2ZXJzby5lbGVtZW50cy5jb3VudCAmZ3Q7IDApIj4KKyAgICAgIDxkaXY+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHZlcnNvLmNvbnRlbnQiLz48L2Rpdj4KKyAgICA8L3hzbDppZj4KKyAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ic2lkZWJhci50aXRsZXBhZ2Uuc2VwYXJhdG9yIi8+CisgIDwvZGl2PgorPC94c2w6dGVtcGxhdGU+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9IioiIG1vZGU9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLm1vZGUiPgorICA8IS0tIGlmIGFuIGVsZW1lbnQgaXNuJ3QgZm91bmQgaW4gdGhpcyBtb2RlLCAtLT4KKyAgPCEtLSB0cnkgdGhlIGdlbmVyaWMgdGl0bGVwYWdlLm1vZGUgLS0+CisgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0idGl0bGVwYWdlLm1vZGUiLz4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSIqIiBtb2RlPSJzaWRlYmFyLnRpdGxlcGFnZS52ZXJzby5tb2RlIj4KKyAgPCEtLSBpZiBhbiBlbGVtZW50IGlzbid0IGZvdW5kIGluIHRoaXMgbW9kZSwgLS0+CisgIDwhLS0gdHJ5IHRoZSBnZW5lcmljIHRpdGxlcGFnZS5tb2RlIC0tPgorICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Ii4iIG1vZGU9InRpdGxlcGFnZS5tb2RlIi8+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiIG1vZGU9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJmb3JtYWwub2JqZWN0LmhlYWRpbmciPgorPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im9iamVjdCIgc2VsZWN0PSJhbmNlc3Rvci1vci1zZWxmOjpzaWRlYmFyWzFdIi8+Cis8L3hzbDpjYWxsLXRlbXBsYXRlPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3VidGl0bGUiIG1vZGU9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLmF1dG8ubW9kZSI+Cis8ZGl2IHhzbDp1c2UtYXR0cmlidXRlLXNldHM9InNpZGViYXIudGl0bGVwYWdlLnJlY3RvLnN0eWxlIj4KKzx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLiIgbW9kZT0ic2lkZWJhci50aXRsZXBhZ2UucmVjdG8ubW9kZSIvPgorPC9kaXY+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPC94c2w6c3R5bGVzaGVldD4KKwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5yc3QKaW5kZXggMTRhM2UxNy4uN2UyNGI5ZSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiA9PT09PT09PT09PT09PT09PT09PT09PT09CiBZb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOThjN2I5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApAQCAtMCwwICsxLDU3NyBAQAorPCFET0NUWVBFIGFydGljbGUgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxhcnRpY2xlIGlkPSdicmllZi15b2N0by1wcm9qZWN0LXFzLWludHJvJz4KKyAgICA8YXJ0aWNsZWluZm8+CisgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC90aXRsZT4KKworICAgICAgICA8Y29weXJpZ2h0PgorICAgICAgICAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgICAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgICAgICA8L2NvcHlyaWdodD4KKworICAgICAgICA8bGVnYWxub3RpY2U+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQgdW5kZXIKKyAgICAgICAgICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC91ay8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENvbW1vbnMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGVnYWxub3RpY2U+CisKKworICAgICAgICA8YWJzdHJhY3Q+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nIgorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjFpbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPSJyaWdodCIgc2NhbGU9IjI1IiAvPgorICAgICAgICA8L2Fic3RyYWN0PgorICAgIDwvYXJ0aWNsZWluZm8+CisKKyAgICA8c2VjdGlvbiBpZD0nYnJpZWYtd2VsY29tZSc+CisgICAgICAgIDx0aXRsZT5XZWxjb21lITwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXZWxjb21lIQorICAgICAgICAgICAgVGhpcyBzaG9ydCBkb2N1bWVudCBzdGVwcyB5b3UgdGhyb3VnaCB0aGUgcHJvY2VzcyBmb3IgYSB0eXBpY2FsCisgICAgICAgICAgICBpbWFnZSBidWlsZCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFRoZSBkb2N1bWVudCBhbHNvIGludHJvZHVjZXMgaG93IHRvIGNvbmZpZ3VyZSBhIGJ1aWxkIGZvciBzcGVjaWZpYworICAgICAgICAgICAgaGFyZHdhcmUuCisgICAgICAgICAgICBZb3Ugd2lsbCB1c2UgWW9jdG8gUHJvamVjdCB0byBidWlsZCBhIHJlZmVyZW5jZSBlbWJlZGRlZCBPUworICAgICAgICAgICAgY2FsbGVkIFBva3kuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBpbiB0aGlzIHBhcGVyIGFzc3VtZSB5b3UgYXJlIHVzaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZSBMaW51eCBzeXN0ZW0gcnVubmluZyBhIHJlY2VudCBVYnVudHUgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBtYWNoaW5lIHlvdSB3YW50IHRvIHVzZSBZb2N0byBQcm9qZWN0IG9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhbiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgYSBuYXRpdmUgTGludXggc3lzdGVtLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbCBwZXJmb3JtIHRoZXNlIHN0ZXBzIGJ5IHVzaW5nIENST3NzIFBsYXRmb3JtUworICAgICAgICAgICAgICAgICAgICAgICAgKENST1BTKSBhbmQgc2V0dGluZyB1cCBhIFBva3kgY29udGFpbmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2UtY3JvcHMnPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1heSB1c2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIHRvIHNldCB1cCBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBob3N0IHVzaW5nIFdpbmRvd3MgMTAuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0x2MSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSBidXQgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIG5vciB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBXU0x2MiwgaWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2Utd3NsJz5TZXR0aW5nIFVwIHRvIFVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXg8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3Ugd2FudCBtb3JlIGNvbmNlcHR1YWwgb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLWNvbXBhdGlibGUtZGlzdHJvJz4KKyAgICAgICAgPHRpdGxlPkNvbXBhdGlibGUgTGludXggRGlzdHJpYnV0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1ha2Ugc3VyZSB5b3VyCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgICAgICBtZWV0cyB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUnVucyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4gcmVjZW50IHJlbGVhc2VzIG9mCisgICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIENlbnRPUywgRGViaWFuLCBvciBVYnVudHUpLiBGb3IgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbnMgdGhhdCBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gcHJlcGFyaW5nIHlvdXIgYnVpbGQgaG9zdCwgc2VlCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI4IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy41LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjYyA1LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdicmllZi1idWlsZC1zeXN0ZW0tcGFja2FnZXMnPgorICAgICAgICA8dGl0bGU+QnVpbGQgSG9zdCBQYWNrYWdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgbXVzdCBpbnN0YWxsIGVzc2VudGlhbCBob3N0IHBhY2thZ2VzIG9uIHlvdXIKKyAgICAgICAgICAgIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgaW5zdGFsbHMgdGhlIGhvc3QgcGFja2FnZXMgYmFzZWQgb24gYW4KKyAgICAgICAgICAgIFVidW50dSBkaXN0cmlidXRpb246CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgaG9zdCBwYWNrYWdlIHJlcXVpcmVtZW50cyBvbiBhbGwgc3VwcG9ydGVkIExpbnV4CisgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWJ1aWxkLWhvc3QnPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCAmVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXVzZS1naXQtdG8tY2xvbmUtcG9reSc+CisgICAgICAgIDx0aXRsZT5Vc2UgR2l0IHRvIENsb25lIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91ciBtYWNoaW5lLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUgUG9reSByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIGhvc3QuCisgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjbG9uZSB0aGUgUG9reQorICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQorICAgICBDbG9uaW5nIGludG8gJ3Bva3knLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogNDMyMTYwLCBkb25lLgorICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDEwMjA1Ni8xMDIwNTYpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDQzMjE2MCAoZGVsdGEgMzIzMTE2KSwgcmV1c2VkIDQzMjAzNyAoZGVsdGEgMzIzMDAwKQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoNDMyMTYwLzQzMjE2MCksIDE1My44MSBNaUIgfCA4LjU0IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgzMjMxMTYvMzIzMTE2KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBNb3ZlIHRvIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgdGFrZSBhIGxvb2sKKyAgICAgICAgICAgIGF0IHRoZSB0YWdzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHBva3kKKyAgICAgJCBnaXQgZmV0Y2ggLS10YWdzCisgICAgICQgZ2l0IHRhZworICAgICAxLjFfTTEuZmluYWwKKyAgICAgMS4xX00xLnJjMQorICAgICAxLjFfTTEucmMyCisgICAgIDEuMV9NMi5maW5hbAorICAgICAxLjFfTTIucmMxCisgICAgICAgIC4KKyAgICAgICAgLgorICAgICAgICAuCisgICAgIHlvY3RvLTIuNQorICAgICB5b2N0by0yLjUuMQorICAgICB5b2N0by0yLjUuMgorICAgICB5b2N0by0yLjYKKyAgICAgeW9jdG8tMi42LjEKKyAgICAgeW9jdG8tMi42LjIKKyAgICAgeW9jdG8tMi43CisgICAgIHlvY3RvXzEuNV9NNS5yYzgKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIGNoZWNrIG91dCB0aGUgYnJhbmNoIGJhc2VkIG9uIHRoZQorICAgICAgICAgICAgJkRJU1RST19SRUxfVEFHOyByZWxlYXNlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk9fUkVMX1RBRzsgLWIgbXktJkRJU1RST19SRUxfVEFHOworICAgICBTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJ215LSZESVNUUk9fUkVMX1RBRzsnCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgcHJldmlvdXMgR2l0IGNoZWNrb3V0IGNvbW1hbmQgY3JlYXRlcyBhIGxvY2FsIGJyYW5jaAorICAgICAgICAgICAgbmFtZWQgbXktJkRJU1RST19SRUxfVEFHOy4gVGhlIGZpbGVzIGF2YWlsYWJsZSB0byB5b3UgaW4gdGhhdAorICAgICAgICAgICAgYnJhbmNoIGV4YWN0bHkgbWF0Y2ggdGhlIHJlcG9zaXRvcnkncyBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICImRElTVFJPX05BTUVfTk9fQ0FQOyIgZGV2ZWxvcG1lbnQgYnJhbmNoIGF0IHRoZSB0aW1lIG9mIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCAmRElTVFJPX1JFTF9UQUc7IHJlbGVhc2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3JlIG9wdGlvbnMgYW5kIGluZm9ybWF0aW9uIGFib3V0IGFjY2Vzc2luZyBZb2N0bworICAgICAgICAgICAgUHJvamVjdCByZWxhdGVkIHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYnJpZWYtYnVpbGRpbmcteW91ci1pbWFnZSc+CisgICAgICAgIDx0aXRsZT5CdWlsZGluZyBZb3VyIEltYWdlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIHN0ZXBzIHRvIGJ1aWxkIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBjcmVhdGVzIGFuIGVudGlyZSBMaW51eCBkaXN0cmlidXRpb24sIGluY2x1ZGluZworICAgICAgICAgICAgdGhlIHRvb2xjaGFpbiwgZnJvbSBzb3VyY2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHdvcmtpbmcgYmVoaW5kIGEgZmlyZXdhbGwgYW5kIHlvdXIgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgaXMgbm90IHNldCB1cCBmb3IgcHJveGllcywgeW91IGNvdWxkIGVuY291bnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyB3aGVuIGZldGNoaW5nIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAoZS5nLiBmZXRjaGVyIGZhaWx1cmVzIG9yIEdpdCBmYWlsdXJlcykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBrbm93IHlvdXIgcHJveHkgc2V0dGluZ3MsIGNvbnN1bHQgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSByZXNvdXJjZXMgYW5kIGdldCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgZ29vZCBzdGFydGluZyBwb2ludCBjb3VsZCBhbHNvIGJlIHRvIGNoZWNrIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYiBicm93c2VyIHNldHRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9Xb3JraW5nX0JlaGluZF9hX05ldHdvcmtfUHJveHknPldvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBXaWtpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGcm9tIHdpdGhpbiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reQorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICBZb3UgaGFkIG5vIGNvbmYvbG9jYWwuY29uZiBmaWxlLiBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBoYXMgdGhlcmVmb3JlIGJlZW4KKyAgICAgY3JlYXRlZCBmb3IgeW91IHdpdGggc29tZSBkZWZhdWx0IHZhbHVlcy4gWW91IG1heSB3aXNoIHRvIGVkaXQgaXQgdG8sIGZvcgorICAgICBleGFtcGxlLCBzZWxlY3QgYSBkaWZmZXJlbnQgTUFDSElORSAodGFyZ2V0IGhhcmR3YXJlKS4gU2VlIGNvbmYvbG9jYWwuY29uZgorICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhcyBjb21tb24gY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb21tZW50ZWQuCisKKyAgICAgWW91IGhhZCBubyBjb25mL2JibGF5ZXJzLmNvbmYgZmlsZS4gVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgaGFzIHRoZXJlZm9yZSBiZWVuCisgICAgIGNyZWF0ZWQgZm9yIHlvdSB3aXRoIHNvbWUgZGVmYXVsdCB2YWx1ZXMuIFRvIGFkZCBhZGRpdGlvbmFsIG1ldGFkYXRhIGxheWVycworICAgICBpbnRvIHlvdXIgY29uZmlndXJhdGlvbiBwbGVhc2UgYWRkIGVudHJpZXMgdG8gY29uZi9iYmxheWVycy5jb25mLgorCisgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBleHRlbnNpdmUgZG9jdW1lbnRhdGlvbiBhYm91dCBPRSBpbmNsdWRpbmcgYSByZWZlcmVuY2UKKyAgICAgbWFudWFsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdDoKKyAgICAgICAgIGh0dHA6Ly95b2N0b3Byb2plY3Qub3JnL2RvY3VtZW50YXRpb24KKworICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBPcGVuRW1iZWRkZWQgc2VlIHRoZWlyIHdlYnNpdGU6CisgICAgICAgICBodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvCisKKworICAgICAjIyMgU2hlbGwgZW52aXJvbm1lbnQgc2V0IHVwIGZvciBidWlsZHMuICMjIworCisgICAgIFlvdSBjYW4gbm93IHJ1biAnYml0YmFrZSAmbHQ7dGFyZ2V0Jmd0OycKKworICAgICBDb21tb24gdGFyZ2V0cyBhcmU6CisgICAgICAgICBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgbWV0YS10b29sY2hhaW4KKyAgICAgICAgIG1ldGEtaWRlLXN1cHBvcnQKKworICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYtNjQnCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMgY2FzZQorICAgICAgICAgICAgICAgICAgICBhbmQgaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgc2NyaXB0IHJ1bnMsIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgTGF0ZXIsIHdoZW4gdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIEJ1aWxkIERpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhbGwgdGhlIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdjb25mLWZpbGUtc3RlcCc+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIFlvdXIgTG9jYWwgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNldCB1cCB0aGUgYnVpbGQgZW52aXJvbm1lbnQsIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gYmVjb21lcyBhdmFpbGFibGUgaW4KKyAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgZGVmYXVsdHMgYXJlIHNldCB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICBmb3IgYSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IHRhcmdldCwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgc3VpdGFibGUgZm9yIGVtdWxhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhY2thZ2UgbWFuYWdlciB1c2VkIGlzIHNldCB0byB0aGUgUlBNIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlci4KKyAgICAgICAgICAgICAgICAgICAgPHRpcD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2lnbmlmaWNhbnRseSBzcGVlZCB1cCB5b3VyIGJ1aWxkIGFuZCBndWFyZAorICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCBmZXRjaGVyIGZhaWx1cmVzIGJ5IHVzaW5nIG1pcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1c2UgbWlycm9ycywgYWRkIHRoZXNlIGxpbmVzIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1NUQVRFX01JUlJPUlMgPSAiXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NzdGF0ZS55b2N0b3Byb2plY3Qub3JnL2Rldi9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCisgICAgIGZpbGU6Ly8uKiBodHRwOi8vc3N0YXRlLnlvY3RvcHJvamVjdC5vcmcvJllPQ1RPX0RPQ19WRVJTSU9OX01JTlVTX09ORTsvUEFUSDtkb3dubG9hZGZpbGVuYW1lPVBBVEggXG4gXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NzdGF0ZS55b2N0b3Byb2plY3Qub3JnLyZZT0NUT19ET0NfVkVSU0lPTjsvUEFUSDtkb3dubG9hZGZpbGVuYW1lPVBBVEggXG4gXAorICAgICAiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZXMgc2hvd2VkIGhvdyB0byBhZGQgc3N0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRocyBmb3IgWW9jdG8gUHJvamVjdCAmWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FOywKKyAgICAgICAgICAgICAgICAgICAgICAgICZZT0NUT19ET0NfVkVSU0lPTjssIGFuZCBhIGRldmVsb3BtZW50IGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBjb21wbGV0ZSBpbmRleCBvZiBzc3RhdGUgbG9jYXRpb25zLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zc3RhdGUueW9jdG9wcm9qZWN0Lm9yZy8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3RpcD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhcnQgdGhlIEJ1aWxkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbnRpbnVlIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGJ1aWxkIGFuIE9TIGltYWdlCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgdGFyZ2V0LCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW4gdGhpcyBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN1c2luZ3Bva3ktY29tcG9uZW50cy1iaXRiYWtlJz5CaXRCYWtlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCwKKyAgICAgICAgICAgICAgICAgICAgb3Igc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsLWNvbW1hbmQnPkJpdEJha2UgQ29tbWFuZDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TaW11bGF0ZSBZb3VyIEltYWdlIFVzaW5nIFFFTVU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGlzIHBhcnRpY3VsYXIgaW1hZ2UgaXMgYnVpbHQsIHlvdSBjYW4gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgUUVNVSwgd2hpY2ggaXMgYSBRdWljayBFTVVsYXRvciB0aGF0IHNoaXBzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBtb3JlIGFib3V0IHJ1bm5pbmcgUUVNVSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Ij5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGl0IFFFTVU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRXhpdCBRRU1VIGJ5IGVpdGhlciBjbGlja2luZyBvbiB0aGUgc2h1dGRvd24gaWNvbiBvciBieQorICAgICAgICAgICAgICAgICAgICB0eXBpbmcgPGZpbGVuYW1lPkN0cmwtQzwvZmlsZW5hbWU+IGluIHRoZSBRRU1VCisgICAgICAgICAgICAgICAgICAgIHRyYW5zY3JpcHQgd2luZG93IGZyb20gd2hpY2ggeW91IGV2b2tlZCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY3VzdG9taXppbmcteW91ci1idWlsZC1mb3Itc3BlY2lmaWMtaGFyZHdhcmUnPgorICAgICAgICA8dGl0bGU+Q3VzdG9taXppbmcgWW91ciBCdWlsZCBmb3IgU3BlY2lmaWMgSGFyZHdhcmU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU28gZmFyLCBhbGwgeW91IGhhdmUgZG9uZSBpcyBxdWlja2x5IGJ1aWx0IGFuIGltYWdlIHN1aXRhYmxlCisgICAgICAgICAgICBmb3IgZW11bGF0aW9uIG9ubHkuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBjdXN0b21pemUgeW91ciBidWlsZCBmb3Igc3BlY2lmaWMKKyAgICAgICAgICAgIGhhcmR3YXJlIGJ5IGFkZGluZyBhIGhhcmR3YXJlIGxheWVyIGludG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBnZW5lcmFsLCBsYXllcnMgYXJlIHJlcG9zaXRvcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRlZCBzZXRzIG9mCisgICAgICAgICAgICBpbnN0cnVjdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGVsbCB0aGUgWW9jdG8gUHJvamVjdCB3aGF0CisgICAgICAgICAgICB0byBkby4KKyAgICAgICAgICAgIElzb2xhdGluZyByZWxhdGVkIG1ldGFkYXRhIGludG8gZnVuY3Rpb25hbGx5IHNwZWNpZmljIGxheWVycworICAgICAgICAgICAgZmFjaWxpdGF0ZXMgbW9kdWxhciBkZXZlbG9wbWVudCBhbmQgbWFrZXMgaXQgZWFzaWVyIHRvIHJldXNlIHRoZQorICAgICAgICAgICAgbGF5ZXIgbWV0YWRhdGEuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCeSBjb252ZW50aW9uLCBsYXllciBuYW1lcyBzdGFydCB3aXRoIHRoZSBzdHJpbmcgIm1ldGEtIi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGFkZCBhIGhhcmR3YXJlIGxheWVyOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgYSBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBMb3RzIG9mIGhhcmR3YXJlIGxheWVycyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaGFzIG1hbnkgaGFyZHdhcmUgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgYWRkcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2tyYWovbWV0YS1hbHRlcmEnPm1ldGEtYWx0ZXJhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSBMYXllcjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSBHaXQgdG8gbWFrZSBhIGxvY2FsIGNvcHkgb2YgdGhlIGxheWVyIG9uIHlvdXIgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwdXQgdGhlIGNvcHkgaW4gdGhlIHRvcCBsZXZlbCBvZiB0aGUgY29weSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgUG9reSByZXBvc2l0b3J5IGNyZWF0ZWQgZWFybGllcjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reQorICAgICAkIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20va3Jhai9tZXRhLWFsdGVyYS5naXQKKyAgICAgQ2xvbmluZyBpbnRvICdtZXRhLWFsdGVyYScuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAyNTE3MCwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgzNTAvMzUwKSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCAyNTE3MCAoZGVsdGEgNjQ1KSwgcmV1c2VkIDcxOSAoZGVsdGEgNTM4KSwgcGFjay1yZXVzZWQgMjQyMTkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDI1MTcwLzI1MTcwKSwgNDEuMDIgTWlCIHwgMS42NCBNaUIvcywgZG9uZS4KKyAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTMzODUvMTMzODUpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgaGFyZHdhcmUgbGF5ZXIgbm93IGV4aXN0cyB3aXRoIG90aGVyIGxheWVycyBpbnNpZGUKKyAgICAgICAgICAgICAgICAgICAgdGhlIFBva3kgcmVmZXJlbmNlIHJlcG9zaXRvcnkgb24geW91ciBidWlsZCBob3N0IGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWFsdGVyYTwvZmlsZW5hbWU+IGFuZCBjb250YWlucyBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhIG5lZWRlZCB0byBzdXBwb3J0IGhhcmR3YXJlIGZyb20gQWx0ZXJhLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBpcyBvd25lZCBieSBJbnRlbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hhbmdlIHRoZSBDb25maWd1cmF0aW9uIHRvIEJ1aWxkIGZvciBhIFNwZWNpZmljIE1hY2hpbmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIG1hY2hpbmUgZm9yIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgc2V0IHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICJjeWNsb25lNSIuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSB1c2VkOgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20va3Jhai9tZXRhLWFsdGVyYS9ibG9iL21hc3Rlci9jb25mL21hY2hpbmUvY3ljbG9uZTUuY29uZic+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NvbmYtZmlsZS1zdGVwJz5FeGFtaW5lIFlvdXIgTG9jYWwgQ29uZmlndXJhdGlvbiBGaWxlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgZWFybGllciBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFkZCBZb3VyIExheWVyIHRvIHRoZSBMYXllciBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gdXNlIGEgbGF5ZXIgZHVyaW5nIGEgYnVpbGQsIHlvdSBtdXN0IGFkZCBpdAorICAgICAgICAgICAgICAgICAgICB0byB5b3VyIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5J3M8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VXNlIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgYWRkLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBhZGQgdGhlIGxheWVyIHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgLi4vbWV0YS1hbHRlcmEKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MzIKKyAgICAgUGFyc2luZyBvZiA5MTggLmJiIGZpbGVzIGNvbXBsZXRlICgwIGNhY2hlZCwgOTE4IHBhcnNlZCkuIDE0MDEgdGFyZ2V0cywgMTIzIHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiBhZGRpbmcgbGF5ZXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWRkaW5nLWEtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+QWRkaW5nIGEgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICBDb21wbGV0aW5nIHRoZXNlIHN0ZXBzIGhhcyBhZGRlZCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWFsdGVyYTwvZmlsZW5hbWU+IGxheWVyIHRvIHlvdXIgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIGNvbmZpZ3VyZWQgaXQgdG8gYnVpbGQgZm9yIHRoZQorICAgICAgICAgICAgImN5Y2xvbmU1IiBtYWNoaW5lLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHN0ZXBzIGFyZSBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3NlcyBvbmx5LgorICAgICAgICAgICAgICAgIElmIHlvdSB3ZXJlIHRvIGF0dGVtcHQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICJjeWNsb25lNSIgYnVpbGQsIHlvdSBzaG91bGQgcmVhZCB0aGUgQWx0ZXJhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXlvdXItb3duLWdlbmVyYWwtbGF5ZXInPgorICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgWW91ciBPd24gR2VuZXJhbCBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNYXliZSB5b3UgaGF2ZSBhbiBhcHBsaWNhdGlvbiBvciBzcGVjaWZpYyBzZXQgb2YgYmVoYXZpb3JzIHlvdQorICAgICAgICAgICAgbmVlZCB0byBpc29sYXRlLgorICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgeW91ciBvd24gZ2VuZXJhbCBsYXllciB1c2luZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgVGhlIHRvb2wgYXV0b21hdGVzIGxheWVyIGNyZWF0aW9uIGJ5IHNldHRpbmcgdXAgYQorICAgICAgICAgICAgc3ViZGlyZWN0b3J5IHdpdGggYSA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUsIGEgPGZpbGVuYW1lPnJlY2lwZXMtZXhhbXBsZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdWJkaXJlY3RvcnkgdGhhdCBjb250YWlucyBhbiA8ZmlsZW5hbWU+ZXhhbXBsZS5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICByZWNpcGUsIGEgbGljZW5zaW5nIGZpbGUsIGFuZCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBydW4gdGhlIHRvb2wgdG8gY3JlYXRlIGEgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPiBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reQorICAgICAkIGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciBtZXRhLW15bGF5ZXIKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgQWRkIHlvdXIgbmV3IGxheWVyIHdpdGggJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLW15bGF5ZXInCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMgYW5kIGhvdyB0byBjcmVhdGUgdGhlbSwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYnJpZWYtd2hlcmUtdG8tZ28tbmV4dCc+CisgICAgICAgIDx0aXRsZT5XaGVyZSBUbyBHbyBOZXh0PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBoYXZlIGV4cGVyaWVuY2VkIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UgbWlnaHQKKyAgICAgICAgICAgIGJlIGFza2luZyB5b3Vyc2VsZiAiV2hhdCBub3c/IgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIG1hbnkgc291cmNlcyBvZiBpbmZvcm1hdGlvbiBpbmNsdWRpbmcKKyAgICAgICAgICAgIHRoZSB3ZWJzaXRlLCB3aWtpIHBhZ2VzLCBhbmQgdXNlciBtYW51YWxzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5XZWJzaXRlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uLCB0aGUgbGF0ZXN0IGJ1aWxkcywKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtpbmcgbmV3cywgZnVsbCBkZXZlbG9wbWVudCBkb2N1bWVudGF0aW9uLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIGEgcmljaCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IENvbW11bml0eQorICAgICAgICAgICAgICAgICAgICBpbnRvIHdoaWNoIHlvdSBjYW4gdGFwLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXZlbG9wZXIgU2NyZWVuY2FzdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3ZpbWVvLmNvbS8zNjQ1MDMyMSc+R2V0dGluZyBTdGFydGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgLSBOZXcgRGV2ZWxvcGVyIFNjcmVlbmNhc3QgVHV0b3JpYWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBhIDMwLW1pbnV0ZSB2aWRlbyBjcmVhdGVkIGZvciB1c2VycyB1bmZhbWlsaWFyCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYnV0IGZhbWlsaWFyIHdpdGggTGludXggYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgaG9zdHMuCisgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgc2NyZWVuY2FzdCBpcyBzb21ld2hhdCBkYXRlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIGludHJvZHVjdG9yeSBhbmQgZnVuZGFtZW50YWwgY29uY2VwdHMgYXJlIHVzZWZ1bCBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIGJlZ2lubmVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgdG8gbGVhcm4gYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGludHJvZHVjZXMgeW91IHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBpdHMKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYW51YWwgYWxzbyBwcm92aWRlcyBjb25jZXB0dWFsIGluZm9ybWF0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgV2lraTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOyc+WW9jdG8gUHJvamVjdCBXaWtpPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB3aGVyZSB0byBnbyBuZXh0CisgICAgICAgICAgICAgICAgICAgIHdoZW4gcmFtcGluZyB1cCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLCBwcm9qZWN0IHBsYW5uaW5nLCBhbmQgUUEgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgTWFpbGluZyBMaXN0czo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZWxhdGVkIG1haWxpbmcgbGlzdHMgcHJvdmlkZSBhIGZvcnVtIGZvciBkaXNjdXNzaW9uLAorICAgICAgICAgICAgICAgICAgICBwYXRjaCBzdWJtaXNzaW9uIGFuZCBhbm5vdW5jZW1lbnRzLgorICAgICAgICAgICAgICAgICAgICBTZXZlcmFsIG1haWxpbmcgbGlzdHMgZXhpc3QgYW5kIGFyZSBncm91cGVkIGFjY29yZGluZworICAgICAgICAgICAgICAgICAgICB0byBhcmVhcyBvZiBjb25jZXJuLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgbGlzdHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBhCisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlIGxpc3Qgb2YgWW9jdG8gUHJvamVjdCBtYWlsaW5nIGxpc3RzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21wcmVoZW5zaXZlIExpc3Qgb2YgTGlua3MgYW5kIE90aGVyIERvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgcHJvdmlkZXMgYQorICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgYWxsIHJlbGF0ZWQgbGlua3MgYW5kIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHVzZXIgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvYXJ0aWNsZT4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUtY3VzdG9taXphdGlvbi54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2ZjYmNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInYnNwLXN0eWxlLmNzcyciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iQSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUuaWQuYXR0cmlidXRlcyIgc2VsZWN0PSIxIiAvPgorCis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUucnN0CmluZGV4IGE0Mzk0YTguLjQzNWEzOTkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSBEZXZlbG9wZXIncyBHdWlkZQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkzYmExZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKQEAgLTAsMCArMSwyMDIgQEAKKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Ym9vayBpZD0nYnNwLWd1aWRlJyBsYW5nPSdlbicKKyAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIgorICAgICAgeG1sbnM9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICAgICAgPgorICAgIDxib29raW5mbz4KKworICAgICAgICA8bWVkaWFvYmplY3Q+CisgICAgICAgICAgICA8aW1hZ2VvYmplY3Q+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSdmaWd1cmVzL2JzcC10aXRsZS5wbmcnCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nU1ZHJworICAgICAgICAgICAgICAgICAgICBhbGlnbj0nY2VudGVyJyBzY2FsZWZpdD0nMScgd2lkdGg9JzEwMCUnLz4KKyAgICAgICAgICAgIDwvaW1hZ2VvYmplY3Q+CisgICAgICAgIDwvbWVkaWFvYmplY3Q+CisKKyAgICAgICAgPHRpdGxlPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgRGV2ZWxvcGVyJ3MgR3VpZGUKKyAgICAgICAgPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgorICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgorICAgICAgICAgICAgPC9hdXRob3I+CisgICAgICAgIDwvYXV0aG9yZ3JvdXA+CisKKyAgICAgICAgPHJldmhpc3Rvcnk+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4wLjk8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDEwPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjA8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTI8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDEzPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjc8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTQ8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTk8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICA8L3Jldmhpc3Rvcnk+CisKKyAgICA8Y29weXJpZ2h0PgorICAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudCB1bmRlcgorICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzIuMC91ay8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENvbW1vbnMuCisgICAgICA8L3BhcmE+CisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0iYnNwLnhtbCIvPgorCis8IS0tICAgIDxpbmRleCBpZD0naW5kZXgnPgorICAgICAgPHRpdGxlPkluZGV4PC90aXRsZT4KKyAgICA8L2luZGV4PgorLS0+CisKKzwvYm9vaz4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3Atc3R5bGUuY3NzIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3Atc3R5bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjY2Y1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKQEAgLTAsMCArMSw5ODkgQEAKKy8qCisgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCisKKyAgIEdlbmVyaWMgWEhUTUwgLyBEb2NCb29rIFhIVE1MIENTUyBTdHlsZXNoZWV0LgorCisgICBCcm93c2VyIHdyYW5nbGluZyBhbmQgdHlwb2dyYXBoaWMgZGVzaWduIGJ5CisgICAgICBPeXZpbmQgS29sYXMgLyBwaXBwaW5AZ2ltcC5vcmcKKworICAgQ3VzdG9taXNlZCBmb3IgUG9reSBieQorICAgICAgTWF0dGhldyBBbGx1bSAvIG1hbGx1bUBvLWhhbmQuY29tCisKKyAgIFRoYW5rcyB0bzoKKyAgICAgTGlhbSBSLiBFLiBRdWluCisgICAgIFdpbGxpYW0gU2thZ2dzCisgICAgIEpha3ViIFN0ZWluZXIKKworICAgU3RydWN0dXJlCisgICAtLS0tLS0tLS0KKworICAgVGhlIHN0eWxlc2hlZXQgaXMgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisKKyAgICAgICBQb3NpdGlvbmluZworICAgICAgICAgIE1hcmdpbnMsIHBhZGRpbmdzLCB3aWR0aCwgZm9udC1zaXplLCBjbGVhcmluZy4KKyAgICAgICBEZWNvcmF0aW9ucworICAgICAgICAgIEJvcmRlcnMsIHN0eWxlCisgICAgICAgQ29sb3JzCisgICAgICAgICAgQ29sb3JzCisgICAgICAgR3JhcGhpY3MKKyAgICAgICAgICBHcmFwaGljYWwgYmFja2dyb3VuZHMKKyAgICAgICBOYXN0eSBJRSB0d2Vha3MKKyAgICAgICAgICBXb3JrYXJvdW5kcyBuZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluIGludGVybmV0IGV4cGxvcmVyLAorICAgICAgICAgIGN1cnJlbnRseSBtYWtlcyB0aGUgc3R5bGVzaGVldCBub24gdmFsaWRhdGluZywgYnV0IHVwIHVudGlsCisgICAgICAgICAgdGhpcyBwb2ludCBpdCBpcyB2YWxpZGF0aW5nLgorICAgICAgIE1vemlsbGEgZXh0ZW5zaW9ucworICAgICAgICAgIFRyYW5zcGFyZW5jeSBmb3IgZm9vdGVyCisJICBSb3VuZGVkIGNvcm5lcnMgb24gYm94ZXMKKworKi8KKworCisgIC8qKioqKioqKioqKioqKiogLworIC8gIFBvc2l0aW9uaW5nICAgLworLyAqKioqKioqKioqKioqKiovCisKK2JvZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYSwgU2Fucywgc2Fucy1zZXJpZjsKKworICBtaW4td2lkdGg6IDY0MHB4OworICB3aWR0aDogODAlOworICBtYXJnaW46ICAwZW0gYXV0bzsKKyAgcGFkZGluZzogMmVtIDVlbSA1ZW0gNWVtOworICBjb2xvcjogIzMzMzsKK30KKworaDEsaDIsaDMsaDQsaDUsaDYsaDcgeworICBmb250LWZhbWlseTogQXJpYWwsIFNhbnM7CisgIGNvbG9yOiAjMDA1NTdEOworICBjbGVhcjogYm90aDsKK30KKworaDEgeworICBmb250LXNpemU6IDJlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDJlbSAwZW0gMGVtIDBlbTsKK30KKworaDIuc3VidGl0bGUgeworICBtYXJnaW46IDAuMTBlbSAwZW0gMy4wZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS44ZW07CisgIHBhZGRpbmctbGVmdDogMjAlOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKK2gyIHsKKyAgbWFyZ2luOiAyZW0gMGVtIDAuNjZlbSAwZW07CisgIHBhZGRpbmc6IDAuNWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuNWVtOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDMuc3VidGl0bGUgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0Mi4xNCU7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitoMyB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDQgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTIwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g1IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNiB7CisgIG1hcmdpbjogMWVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5hdXRob3Jncm91cCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBwYWRkaW5nLXRvcDogMjU2cHg7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy9ic3AtdGl0bGUucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOworICBtYXJnaW4tdG9wOiAtMjU2cHg7CisgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CisgIG1hcmdpbi1sZWZ0OiAwcHg7CisgIHRleHQtYWxpZ246IHJpZ2h0OworICB3aWR0aDogNzQwcHg7Cit9CisKK2gzLmF1dGhvciB7CisgIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc2l6ZTogMTAwJTsKKyAgY29sb3I6ICMzMzM7CisgIGNsZWFyOiBib3RoOworfQorCisuYXV0aG9yIHR0LmVtYWlsIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKKy50aXRsZXBhZ2UgaHIgeworICB3aWR0aDogMGVtOworICBjbGVhcjogYm90aDsKK30KKworLnJldmhpc3RvcnkgeworICBwYWRkaW5nLXRvcDogMmVtOworICBjbGVhcjogYm90aDsKK30KKworLnRvYywKKy5saXN0LW9mLXRhYmxlcywKKy5saXN0LW9mLWV4YW1wbGVzLAorLmxpc3Qtb2YtZmlndXJlcyB7CisgIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOworICBjb2xvcjogIzAwNTU3RDsKK30KKworLnRvYyBwLAorLmxpc3Qtb2YtdGFibGVzIHAsCisubGlzdC1vZi1maWd1cmVzIHAsCisubGlzdC1vZi1leGFtcGxlcyBwIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOworICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIHAgYiwKKy5saXN0LW9mLXRhYmxlcyBwIGIsCisubGlzdC1vZi1maWd1cmVzIHAgYiwKKy5saXN0LW9mLWV4YW1wbGVzIHAgYnsKKyAgZm9udC1zaXplOiAxMDAuMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisudG9jIGRsLAorLmxpc3Qtb2YtdGFibGVzIGRsLAorLmxpc3Qtb2YtZmlndXJlcyBkbCwKKy5saXN0LW9mLWV4YW1wbGVzIGRsIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGR0IHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkZCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2Lmdsb3NzYXJ5IGRsLAorZGl2LnZhcmlhYmxlbGlzdCBkbCB7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHdpZHRoOiAyMGVtOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnZhcmlhYmxlbGlzdCBkbCBkdCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworfQorCisuZ2xvc3NhcnkgZGwgZGQsCisudmFyaWFibGVsaXN0IGRsIGRkIHsKKyAgbWFyZ2luLXRvcDogLTFlbTsKKyAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKK30KKworLmdsb3NzYXJ5IGRkIHAsCisudmFyaWFibGVsaXN0IGRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYgcC5jb3B5cmlnaHQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7CisgIG1hcmdpbi1ib3R0b206IDBlbTsKK30KKworcCB7CisgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworCit9CisKK2RsIHsKKyAgcGFkZGluZy10b3A6IDBlbTsKK30KKworaHIgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworCisubWVkaWFvYmplY3QsCisubWVkaWFvYmplY3RjbyB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nIHsKKyAgYm9yZGVyOiBub25lOworfQorCit1bCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOworfQorCit1bCBsaSB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKwordWwgbGkgcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGggOjEwMCU7Cit9CisKK3RoIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworcCBhW2lkXSB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7CisgIGRpc3BsYXk6IGlubGluZTsKKyAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworYSB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBjb2xvcjogIzQ0NDsKK30KKworcHJlIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKK30KKworYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCit9CisKKy8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKKyAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCisgICB0aGUgbW91c2UuICovCisKK1thbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KK1thbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9CisKKworZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlIHsKKyAgbWFyZ2luOiAxZW0gMGVtOworICBwYWRkaW5nOiAxZW07CisgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworCitkaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCitkaXYuZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5leGFtcGxlIHAudGl0bGUgYiwKK2Rpdi50YWJsZSBwLnRpdGxlIGJ7CisgICAgcGFkZGluZy10b3A6IDBlbTsKKyAgICBtYXJnaW4tdG9wOiAwZW07CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiwKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKKyAgcGFkZGluZy1ib3R0b206IDAuNWVtOworfQorCisuZXBpZ3JhcGggeworICBwYWRkaW5nLWxlZnQ6IDU1JTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZXBpZ3JhcGggcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5lcGlncmFwaCAucXVvdGUgeworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisuZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKKyAgZm9udC1zdHlsZTogbm9ybWFsOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworc3Bhbi5hcHBsaWNhdGlvbiB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnByb2dyYW1saXN0aW5nIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgZm9udC1zaXplOiA4MCU7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIG1hcmdpbjogMS4zM2VtIDBlbTsKKyAgcGFkZGluZzogMS4zM2VtOworfQorCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgbWFyZ2luLXRvcDogMWVtOworICBtYXJnaW4tYm90dG9tOiAxZW07CisKK30KKworLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCisudGlwIHRhYmxlLAorLndhcm5pbmcgdGFibGUsCisuY2F1dGlvbiB0YWJsZSwKKy5ub3RlIHRhYmxlIHsKKyAgYm9yZGVyOiBub25lOworICB3aWR0aDogMTAwJTsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07CisgIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRpcCBwLAorLndhcm5pbmcgcCwKKy5jYXV0aW9uIHAsCisubm90ZSBwIHsKKyAgbWFyZ2luLXRvcDogMC41ZW07CisgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAxZW07CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5hY3JvbnltIHsKKyAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgcGFkZGluZzogMC4wOWVtIDAuM2VtOworICBtYXJnaW46IDBlbTsKK30KKworLml0ZW1pemVkbGlzdCBsaSB7CisgIGNsZWFyOiBub25lOworfQorCisuZmlsZW5hbWUgeworICBmb250LXNpemU6IG1lZGl1bTsKKyAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwZW07CisgIHRvcDogMGVtOworICB3aWR0aDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBwb3NpdGlvbjogZml4ZWQ7CisgIGxlZnQ6IDBlbTsKKyAgYm90dG9tOiAwZW07CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIHdpZHRoOiAxMDAlOworfQorCisKK2Rpdi5uYXZoZWFkZXIgdGQsCitkaXYubmF2Zm9vdGVyIHRkIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGggeworICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KKyAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KKyAgZm9udC1zaXplOiA4MCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLXRvcDogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItYm90dG9tOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgeworICBjb2xvcjogIzc3NzsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKKyAgY29sb3I6IGJsYWNrOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKKworLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgY29sb3I6ICMzM2E7Cit9CisKK2Rpdi5uYXZoZWFkZXIgaHIsCitkaXYubmF2Zm9vdGVyIGhyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCisucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisuYW5zd2VyIHRkIHsKKyAgcGFkZGluZy1ib3R0b206IDEuNWVtOworfQorCisuZW1waGFzaXMgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCisgIC8qKioqKioqKioqKioqIC8KKyAvIGRlY29yYXRpb25zICAvCisvICoqKioqKioqKioqKiovCisKKy50aXRsZXBhZ2UgeworfQorCisucGFydCAudGl0bGUgeworfQorCisuc3VidGl0bGUgeworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyoKK2gxIHsKKyAgYm9yZGVyOiBub25lOworfQorCitoMiB7CisgIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2gzIHsKKyAgYm9yZGVyLXRvcDogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g0IHsKKyAgYm9yZGVyOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDUgeworICBib3JkZXI6IDBlbTsKK30KKyovCisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworLnF1ZXN0aW9uIHRkIHsKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisuYW5zd2VyIHsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBib3JkZXItdG9wOiAxcHggc29saWQ7Cit9CisKKyAgLyoqKioqKioqKiAvCisgLyAgY29sb3JzICAvCisvICoqKioqKioqKi8KKworYm9keSB7CisgIGNvbG9yOiAjMzMzOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworYSB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCithOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKK30KKworCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoNywKK2g4IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2hyIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCisKKy50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgeworICBib3JkZXItY29sb3I6ICNmZmY7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cit9CisKKworLndhcm5pbmcgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy50aXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisubm90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGNvbG9yOiAjMDQ0OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKK3ByZS5wcm9ncmFtbGlzdGluZyB7CisgIGNvbG9yOiBibGFjazsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworICBib3JkZXItd2lkdGg6IDJweDsKK30KKworLmd1aW1lbnUsCisuZ3VpbGFiZWwsCisuZ3VpbWVudWl0ZW0geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIGJvcmRlci1jb2xvcjogIzk5OTsKK30KKworCitkaXYubmF2aGVhZGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCitkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworLndyaXRlcm5vdGVzIHsKKyAgY29sb3I6IHJlZDsKK30KKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlIHsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogYm90dG9tOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisKK2Rpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworfQorCisKK2gxLnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGhlaWdodDogMjU2cHg7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47CisgIHdpZHRoOiAwcHg7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyAgcGlwcGluLmdpbXAub3JnIHNwZWNpZmljIGFsdGVyYXRpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgY29sb3I6ICM3Nzc7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nOiAwOworICBtYXJnaW46IDA7CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgdG9wOiAwcHg7CisgIGxlZnQ6IDBweDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogNTBweDsKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2hlYWRpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKKyAgYm9yZGVyOiBub25lOworfQorCitkaXYuaGVhZGluZyBhIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyOiBub25lOworICBjb2xvcjogI2RkZDsKKyAgZm9udC1zaXplOiA4MCU7CisgIHRleHQtYWxpZ246cmlnaHQ7CisKKyAgd2lkdGg6IDEwMCU7CisgIHBhZGRpbmctdG9wOiAxMHB4OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogMHB4OworICBsZWZ0OiAwcHg7CisKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2Zvb3RpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Cit9CisqLworCisKKworICAvKioqKioqKioqKioqKioqKioqIC8KKyAvICBuYXN0eSBpZSB0d2Vha3MgIC8KKy8gKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKKyAgbWFyZ2luLWxlZnQ6ZXhwcmVzc2lvbigiLTVlbSIpOworfQorYm9keSB7CisgIHBhZGRpbmc6ZXhwcmVzc2lvbigiNGVtIDVlbSAwZW0gNWVtIik7Cit9CisqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvIG1vemlsbGEgdmVuZG9yIHNwZWNpZmljIGNzcyBleHRlbnNpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIC1tb3otb3BhY2l0eTogMC44ZW07Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSwKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtOworfQorKi8KKwordGFibGUgdHIgdGQgdGFibGUgdHIgdGQgeworICBkaXNwbGF5OiBub25lOworfQorCisKK2hyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKwordGFibGUgeworICBib3JkZXI6IDBlbTsKK30KKworIC5waG90byB7CisgIGZsb2F0OiByaWdodDsKKyAgbWFyZ2luLWxlZnQ6ICAgMS41ZW07CisgIG1hcmdpbi1ib3R0b206IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisgIG1heC13aWR0aDogICAgICAxN2VtOworICBib3JkZXI6ICAgICAxcHggc29saWQgZ3JheTsKKyAgcGFkZGluZzogICAgM3B4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKyAuc2VwZXJhdG9yIHsKKyAgIHBhZGRpbmctdG9wOiAyZW07CisgICBjbGVhcjogYm90aDsKKyAgfQorCisgICN2YWxpZGF0b3JzIHsKKyAgICAgIG1hcmdpbi10b3A6IDVlbTsKKyAgICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgICAgY29sb3I6ICM3Nzc7CisgIH0KKyAgQG1lZGlhIHByaW50IHsKKyAgICAgIGJvZHkgeworICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OworICAgICAgfQorICAgICAgLm5vcHJpbnQgeworICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgICB9CisgIH0KKworCisudGlwLAorLm5vdGUgeworICAgYmFja2dyb3VuZDogI2YwZjBmMjsKKyAgIGNvbG9yOiAjMzMzOworICAgcGFkZGluZzogMjBweDsKKyAgIG1hcmdpbjogMjBweDsKK30KKworLnRpcCBoMywKKy5ub3RlIGgzIHsKKyAgIHBhZGRpbmc6IDBlbTsKKyAgIG1hcmdpbjogMGVtOworICAgZm9udC1zaXplOiAyZW07CisgICBmb250LXdlaWdodDogYm9sZDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisudGlwIGEsCisubm90ZSBhIHsKKyAgIGNvbG9yOiAjMzMzOworICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy5mb290bm90ZSB7CisgICBmb250LXNpemU6IHNtYWxsOworICAgY29sb3I6ICMzMzM7Cit9CisKKy8qIENoYW5nZXMgdGhlIGFubm91bmNlbWVudCB0ZXh0ICovCisudGlwIGgzLAorLndhcm5pbmcgaDMsCisuY2F1dGlvbiBoMywKKy5ub3RlIGgzIHsKKyAgIGZvbnQtc2l6ZTpsYXJnZTsKKyAgIGNvbG9yOiAjMDA1NTdEOworfQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AucnN0CmluZGV4IDYxYjI5NTguLjAyNGEyNDAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSAtIERldmVsb3BlcidzIEd1aWRlCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVjM2YzMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbApAQCAtMCwwICsxLDIyNTkgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0nYnNwJz4KKworPHRpdGxlPkJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkgLSBEZXZlbG9wZXIncyBHdWlkZTwvdGl0bGU+CisKKzxwYXJhPgorICAgIEEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGlzIGEgY29sbGVjdGlvbiBvZiBpbmZvcm1hdGlvbiB0aGF0CisgICAgZGVmaW5lcyBob3cgdG8gc3VwcG9ydCBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgZGV2aWNlLCBzZXQgb2YgZGV2aWNlcywgb3IKKyAgICBoYXJkd2FyZSBwbGF0Zm9ybS4KKyAgICBUaGUgQlNQIGluY2x1ZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSBmZWF0dXJlcworICAgIHByZXNlbnQgb24gdGhlIGRldmljZSBhbmQga2VybmVsIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYWxvbmcgd2l0aCBhbnkKKyAgICBhZGRpdGlvbmFsIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyZWQuCisgICAgVGhlIEJTUCBhbHNvIGxpc3RzIGFueSBhZGRpdGlvbmFsIHNvZnR3YXJlCisgICAgY29tcG9uZW50cyByZXF1aXJlZCBpbiBhZGRpdGlvbiB0byBhIGdlbmVyaWMgTGludXggc29mdHdhcmUgc3RhY2sgZm9yIGJvdGgKKyAgICBlc3NlbnRpYWwgYW5kIG9wdGlvbmFsIHBsYXRmb3JtIGZlYXR1cmVzLgorPC9wYXJhPgorCis8cGFyYT4KKyAgICBUaGlzIGd1aWRlIHByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IEJTUCBsYXllcnMsIGRlZmluZXMgYSBzdHJ1Y3R1cmUgZm9yIGNvbXBvbmVudHMKKyAgICBzbyB0aGF0IEJTUHMgZm9sbG93IGEgY29tbW9ubHkgdW5kZXJzdG9vZCBsYXlvdXQsIGRpc2N1c3NlcyBob3cgdG8gY3VzdG9taXplCisgICAgYSByZWNpcGUgZm9yIGEgQlNQLCBhZGRyZXNzZXMgQlNQIGxpY2Vuc2luZywgYW5kIHByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQKKyAgICBzaG93cyB5b3UgaG93IHRvIGNyZWF0ZSBhCisgICAgPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyPC9saW5rPiB1c2luZyB0aGUKKyAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+PGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT48L2xpbms+CisgICAgdG9vbC4KKzwvcGFyYT4KKworPHNlY3Rpb24gaWQ9J2JzcC1sYXllcnMnPgorICAgIDx0aXRsZT5CU1AgTGF5ZXJzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBBIEJTUCBjb25zaXN0cyBvZiBhIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIGJhc2UgZGlyZWN0b3J5LgorICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCisgICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSA8Zmlyc3R0ZXJtPkJTUCBsYXllcjwvZmlyc3R0ZXJtPi4KKyAgICAgICAgQWx0aG91Z2ggbm90IGEgc3RyaWN0IHJlcXVpcmVtZW50LCBCU1AgbGF5ZXJzIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIHVzZSB0aGUgZm9sbG93aW5nIHdlbGwtZXN0YWJsaXNoZWQgbmFtaW5nIGNvbnZlbnRpb246CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgVGhlIHN0cmluZyAibWV0YS0iIGlzIHByZXBlbmRlZCB0byB0aGUgbWFjaGluZSBvciBwbGF0Zm9ybSBuYW1lLCB3aGljaCBpcworICAgICAgICA8cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+IGluIHRoZSBhYm92ZSBmb3JtLgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIEJTUCBsYXllciBuYW1pbmcgY29udmVudGlvbiBpcyB3ZWxsLWVzdGFibGlzaGVkLAorICAgICAgICAgICAgaXQgaXMgYWR2aXNhYmxlIHRvIGZvbGxvdyBpdCB3aGVuIGNyZWF0aW5nIGxheWVycy4KKyAgICAgICAgICAgIFRlY2huaWNhbGx5IHNwZWFraW5nLCBhIEJTUCBsYXllciBuYW1lIGRvZXMgbm90IG5lZWQgdG8KKyAgICAgICAgICAgIHN0YXJ0IHdpdGggPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT4uCisgICAgICAgICAgICBIb3dldmVyLCB2YXJpb3VzIHNjcmlwdHMgYW5kIHRvb2xzIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhc3N1bWUgdGhpcyBjb252ZW50aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGhlbHAgdW5kZXJzdGFuZCB0aGUgQlNQIGxheWVyIGNvbmNlcHQsIGNvbnNpZGVyIHRoZSBCU1BzIHRoYXQgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYW5kIHByb3ZpZGVzIHdpdGggZWFjaCByZWxlYXNlLgorICAgICAgICBZb3UgY2FuIHNlZSB0aGUgbGF5ZXJzIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICB0aHJvdWdoIGEgd2ViIGludGVyZmFjZSBhdAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgorICAgICAgICBJZiB5b3UgZ28gdG8gdGhhdCBpbnRlcmZhY2UsIHlvdSB3aWxsIGZpbmQgYSBsaXN0IG9mIHJlcG9zaXRvcmllcworICAgICAgICB1bmRlciAiWW9jdG8gTWV0YWRhdGEgTGF5ZXJzIi4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBMYXllcnMgdGhhdCBhcmUgbm8gbG9uZ2VyIGFjdGl2ZWx5IHN1cHBvcnRlZCBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhcHBlYXIgdW5kZXIgdGhlIGhlYWRpbmcgIllvY3RvIE1ldGFkYXRhIExheWVyCisgICAgICAgICAgICBBcmNoaXZlLiIKKyAgICAgICAgPC9ub3RlPgorICAgICAgICBFYWNoIHJlcG9zaXRvcnkgaXMgYSBCU1AgbGF5ZXIgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIChlLmcuIDxmaWxlbmFtZT5tZXRhLXJhc3BiZXJyeXBpPC9maWxlbmFtZT4gYW5kCisgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4pLgorICAgICAgICBFYWNoIG9mIHRoZXNlIGxheWVycyBpcyBhIHJlcG9zaXRvcnkgdW50byBpdHNlbGYgYW5kIGNsaWNraW5nIG9uCisgICAgICAgIHRoZSBsYXllciBuYW1lIGRpc3BsYXlzIHR3byBVUkxzIGZyb20gd2hpY2ggeW91IGNhbgorICAgICAgICBjbG9uZSB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgc3lzdGVtLgorICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjbG9uZXMgdGhlIFJhc3BiZXJyeSBQaSBCU1AgbGF5ZXI6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1yYXNwYmVycnlwaQorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIGFkZGl0aW9uIHRvIEJTUCBsYXllcnMsIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBpcyBwYXJ0IG9mIHRoZQorICAgICAgICBzaGlwcGVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIG1haW50YWlucyBzZXZlcmFsCisgICAgICAgICJyZWZlcmVuY2UiIEJTUHMgaW5jbHVkaW5nIHRoZSBBUk0tYmFzZWQgQmVhZ2xlYm9uZSwgTUlQUy1iYXNlZAorICAgICAgICBFZGdlUm91dGVyLCBhbmQgZ2VuZXJpYyB2ZXJzaW9ucyBvZgorICAgICAgICBib3RoIDMyLWJpdCBhbmQgNjQtYml0IElBIG1hY2hpbmVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdHlwaWNhbCBCU1AgZGV2ZWxvcG1lbnQgd29ya2Zsb3csIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhIGxvY2FsIGNvcHkgb2Ygc291cmNlIGZpbGVzCisgICAgICAgIGZyb20gYSBHaXQgcmVwb3NpdG9yeSwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbG9jYXRpbmcteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgQlNQIGxheWVyJ3MgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgKDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPikKKyAgICAgICAgaXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoYXQgTGF5ZXIuCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHdoYXQgeW91IGFkZCB0byB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB5b3VyCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgIHdoaWNoIGlzIGVzdGFibGlzaGVkIGFmdGVyIHlvdSBydW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICBzZXR1cCBzY3JpcHQgKGkuZS4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgQWRkaW5nIHRoZSByb290IGRpcmVjdG9yeSBhbGxvd3MgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgdG8gcmVjb2duaXplIHRoZSBCU1AgbGF5ZXIgYW5kIGZyb20gaXQgYnVpbGQgYW4gaW1hZ2UuCisgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQkxBWUVSUyA/PSAiIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXBva3kgXAorICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEteW9jdG8tYnNwIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLW15bGF5ZXIgXAorICAgICAgICIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIE9yZGVyaW5nIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGZvciB0aGUgbGF5ZXJzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgbWF0dGVyLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIG11bHRpcGxlIGxheWVycyBkZWZpbmUgYSBtYWNoaW5lCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICB0aGUgbGFzdCBsYXllciBzZWFyY2hlZCBnaXZlbiBzaW1pbGFyIGxheWVyCisgICAgICAgICAgICBwcmlvcml0aWVzLgorICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB3b3JrcyBmcm9tIHRoZSB0b3AtZG93biB0aHJvdWdoCisgICAgICAgICAgICB0aGUgbGF5ZXJzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTb21lIEJTUHMgcmVxdWlyZSBvciBkZXBlbmQgb24gYWRkaXRpb25hbCBsYXllcnMKKyAgICAgICAgYmV5b25kIHRoZSBCU1AncyByb290IGxheWVyIGluIG9yZGVyIHRvIGJlIGZ1bmN0aW9uYWwuCisgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGVzZSBsYXllcnMgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiAiRGVwZW5kZW5jaWVzIiBzZWN0aW9uIG9mIHRoZQorICAgICAgICBCU1AncyByb290IGxheWVyLgorICAgICAgICBBZGRpdGlvbmFsbHksIGlmIGFueSBidWlsZCBpbnN0cnVjdGlvbnMgZXhpc3QgZm9yIHRoZQorICAgICAgICBCU1AsIHlvdSBtdXN0IGFkZCB0aGVtIHRvIHRoZSAiRGVwZW5kZW5jaWVzIiBzZWN0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTb21lIGxheWVycyBmdW5jdGlvbiBhcyBhIGxheWVyIHRvIGhvbGQgb3RoZXIgQlNQIGxheWVycy4KKyAgICAgICAgVGhlc2UgbGF5ZXJzIGFyZSBrbm93cyBhcworICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdGVybS1jb250YWluZXItbGF5ZXInPmNvbnRhaW5lciBsYXllcnM8L3VsaW5rPiIuCisgICAgICAgIEFuIGV4YW1wbGUgb2YgdGhpcyB0eXBlIG9mIGxheWVyIGlzIE9wZW5FbWJlZGRlZCdzCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vcGVuZW1iZWRkZWQnPjxmaWxlbmFtZT5tZXRhLW9wZW5lbWJlZGRlZDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgbGF5ZXIuCisgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1vcGVuZW1iZWRkZWQ8L2ZpbGVuYW1lPiBsYXllciBjb250YWlucworICAgICAgICBtYW55IDxmaWxlbmFtZT5tZXRhLSo8L2ZpbGVuYW1lPiBsYXllcnMuCisgICAgICAgIEluIGNhc2VzIGxpa2UgdGhpcywgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgbmFtZXMgb2YgdGhlIGFjdHVhbAorICAgICAgICBsYXllcnMgeW91IHdhbnQgdG8gd29yayB3aXRoLCBzdWNoIGFzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTEFZRVJTID89ICIgXAorICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEgXAorICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtcG9reSBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS15b2N0by1ic3AgXAorICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtbXlsYXllciBcCisgICAgICAgLi4uL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UgXAorICAgICAgIC4uLi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwgXAorICAgICAgIC4uLi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcgXAorICAgICAgICIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgIGFuZCBzbyBvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz4KKyAgICA8dGl0bGU+UHJlcGFyaW5nIFlvdXIgQnVpbGQgSG9zdCB0byBXb3JrIFdpdGggQlNQIExheWVyczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gZ2V0IHlvdXIgYnVpbGQgaG9zdCByZWFkeQorICAgICAgICB0byB3b3JrIHdpdGggQlNQIGxheWVycy4KKyAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgaG9zdCBzZXQgdXAsIHlvdSBjYW4gY3JlYXRlIHRoZSBsYXllcgorICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEZvciBzdHJ1Y3R1cmFsIGluZm9ybWF0aW9uIG9uIEJTUHMsIHNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC9saW5rPgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICBvbiBob3cgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0aGF0IGlzIGVpdGhlciBhIG5hdGl2ZQorICAgICAgICAgICAgICAgIExpbnV4IG1hY2hpbmUgb3IgYSBtYWNoaW5lIHRoYXQgdXNlcyBDUk9QUy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgYSBsb2NhbCBjb3B5IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgKGkuZS4gYSBsb2NhbCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkpLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBhbmQgcG9zc2libHkgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9ucyBhbGwgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIGNoZWNrIG91dCB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSB0aGUgQlNQIExheWVyIFlvdSBXYW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgbWFueSBCU1BzLCB3aGljaCBhcmUgbWFpbnRhaW5lZCBpbgorICAgICAgICAgICAgICAgIHRoZWlyIG93biBsYXllcnMgb3IgaW4gbGF5ZXJzIGRlc2lnbmVkIHRvIGNvbnRhaW4gc2V2ZXJhbAorICAgICAgICAgICAgICAgIEJTUHMuCisgICAgICAgICAgICAgICAgVG8gZ2V0IGFuIGlkZWEgb2YgbWFjaGluZSBzdXBwb3J0IHRocm91Z2ggQlNQIGxheWVycywgeW91IGNhbgorICAgICAgICAgICAgICAgIGxvb2sgYXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfRExfVVJMOy9tYWNoaW5lcyc+aW5kZXggb2YgbWFjaGluZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvciB0aGUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBDbG9uZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IEJTUCBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIElmIHlvdXIgaGFyZHdhcmUgaXMgYmFzZWQgb24gY3VycmVudCBJbnRlbCBDUFVzIGFuZCBkZXZpY2VzLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gbGV2ZXJhZ2UgdGhpcyBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gQlNQIGxheWVyLAorICAgICAgICAgICAgICAgIHNlZSB0aGUgbGF5ZXIncworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtaW50ZWwvdHJlZS9SRUFETUUnPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5OYXZpZ2F0ZSB0byBZb3VyIFNvdXJjZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdTwvcmVwbGFjZWFibGU+L3Bva3kKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtaW50ZWwuZ2l0CisgICAgIENsb25pbmcgaW50byAnbWV0YS1pbnRlbCcuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAxNTU4NSwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg1MDU2LzUwNTYpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDE1NTg1IChkZWx0YSA5MTIzKSwgcmV1c2VkIDE1MzI5IChkZWx0YSA4ODY3KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMTU1ODUvMTU1ODUpLCA0LjUxIE1pQiB8IDMuMTkgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDkxMjMvOTEyMyksIGRvbmUuCisgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBPdXQgdGhlIFByb3BlciBCcmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggeW91IGNoZWNrIG91dCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbXVzdCBtYXRjaCB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoIHlvdSBhcmUgdXNpbmcgZm9yIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuICZESVNUUk9fTkFNRV9OT19DQVA7KToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBtZXRhLWludGVsCisgICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IHJlbW90ZXMvb3JpZ2luLyZESVNUUk9fTkFNRV9OT19DQVA7CisgICAgIEJyYW5jaCAmRElTVFJPX05BTUVfTk9fQ0FQOyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIGJyYW5jaCAmRElTVFJPX05BTUVfTk9fQ0FQOyBmcm9tIG9yaWdpbi4KKyAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICcmRElTVFJPX05BTUVfTk9fQ0FQOycKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvIHNlZSB0aGUgYXZhaWxhYmxlIGJyYW5jaCBuYW1lcyBpbiBhIGNsb25lZCByZXBvc2l0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBicmFuY2ggLWFsPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgU2V0IFVwIGFuIEFsdGVybmF0aXZlIEJTUCBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIElmIHlvdXIgaGFyZHdhcmUgY2FuIGJlIG1vcmUgY2xvc2VseSBsZXZlcmFnZWQgdG8gYW4KKyAgICAgICAgICAgICAgICBleGlzdGluZyBCU1Agbm90IHdpdGhpbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIEJTUCBsYXllciwgeW91IGNhbiBjbG9uZSB0aGF0IEJTUCBsYXllci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcHJvY2VzcyBpcyBpZGVudGljYWwgdG8gdGhlIHByb2Nlc3MgdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBleGNlcHQgZm9yIHRoZSBsYXllcidzCisgICAgICAgICAgICAgICAgbmFtZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGRldGVybWluZSB0aGF0IHlvdXIgaGFyZHdhcmUgbW9zdAorICAgICAgICAgICAgICAgIGNsb3NlbHkgbWF0Y2hlcyB0aGUgPGZpbGVuYW1lPm1ldGEtcmFzcGJlcnJ5cGk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBjbG9uZSB0aGF0IGxheWVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1yYXNwYmVycnlwaQorICAgICBDbG9uaW5nIGludG8gJ21ldGEtcmFzcGJlcnJ5cGknLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogNDc0MywgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyMTg1LzIxODUpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDQ3NDMgKGRlbHRhIDI0NDcpLCByZXVzZWQgNDQ5NiAoZGVsdGEgMjI1OCkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDQ3NDMvNDc0MyksIDEuMTggTWlCIHwgMCBieXRlcy9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNDQ3LzI0NDcpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgV2hpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBTb3VyY2UgRGlyZWN0b3J5IChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiksIHJ1biB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZGVmaW5lIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBvbiB5b3VyIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBzY3JpcHQgY3JlYXRlcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMgY2FzZQorICAgICAgICAgICAgICAgIGFuZCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBBZnRlciB0aGUgc2NyaXB0IHJ1bnMsIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImJzcC1maWxlbGF5b3V0Ij4KKyAgICA8dGl0bGU+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGVmaW5pbmcgYSBjb21tb24gQlNQIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYWxsb3dzCisgICAgICAgIGVuZC11c2VycyB0byB1bmRlcnN0YW5kIGFuZCBiZWNvbWUgZmFtaWxpYXIgd2l0aAorICAgICAgICB0aGF0IHN0YW5kYXJkLgorICAgICAgICBBIGNvbW1vbiBmb3JtYXQgYWxzbyBlbmNvdXJhZ2VzIHN0YW5kYXJkaXphdGlvbgorICAgICAgICBvZiBzb2Z0d2FyZSBzdXBwb3J0IGZvciBoYXJkd2FyZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHByb3Bvc2VkIGZvcm0gZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbiBkb2VzCisgICAgICAgIGhhdmUgZWxlbWVudHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICBidWlsZCBzeXN0ZW0uCisgICAgICAgIEl0IGlzIGludGVuZGVkIHRoYXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoaXMgc3RydWN0dXJlCisgICAgICAgIHdpdGggb3RoZXIgYnVpbGQgc3lzdGVtcyBiZXNpZGVzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgc3lzdGVtLgorICAgICAgICBJdCBpcyBhbHNvIGludGVuZGVkIHRoYXQgaXQgd2lsbCBiZSBiZSBzaW1wbGUgdG8gZXh0cmFjdAorICAgICAgICBpbmZvcm1hdGlvbiBhbmQgY29udmVydCBpdCB0byBvdGhlciBmb3JtYXRzIGlmIHJlcXVpcmVkLgorICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgdGhyb3VnaCBpdHMgc3RhbmRhcmQKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+bGF5ZXJzIG1lY2hhbmlzbTwvdWxpbms+LAorICAgICAgICBjYW4gZGlyZWN0bHkgYWNjZXB0IHRoZSBmb3JtYXQgZGVzY3JpYmVkIGFzIGEgbGF5ZXIuCisgICAgICAgIFRoZSBCU1AgbGF5ZXIgY2FwdHVyZXMgYWxsIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBkZXRhaWxzCisgICAgICAgIGluIG9uZSBwbGFjZSB1c2luZyBhIHN0YW5kYXJkIGZvcm1hdCwgd2hpY2ggaXMgdXNlZnVsCisgICAgICAgIGZvciBhbnkgcGVyc29uIHdpc2hpbmcgdG8gdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybQorICAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBidWlsZCBzeXN0ZW0gdGhleSBhcmUgdXNpbmcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBCU1Agc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEgYnVpbGQgc3lzdGVtCisgICAgICAgIG9yIG90aGVyIHRvb2xzIC0gdGhlIHNwZWNpZmljYXRpb24gaXMgY29uY2VybmVkIHdpdGgKKyAgICAgICAgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGNvbXBvbmVudHMgb25seS4KKyAgICAgICAgQXQgdGhlIGVuZC1kaXN0cmlidXRpb24gcG9pbnQsIHlvdSBjYW4gc2hpcCB0aGUgQlNQCisgICAgICAgIGxheWVyIGNvbWJpbmVkIHdpdGggYSBidWlsZCBzeXN0ZW0gYW5kIG90aGVyIHRvb2xzLgorICAgICAgICBSZWFsaXplIHRoYXQgaXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIHRoZSBkaXN0aW5jdGlvbgorICAgICAgICB0aGF0IHRoZSBCU1AgbGF5ZXIsIGEgYnVpbGQgc3lzdGVtLCBhbmQgdG9vbHMgYXJlCisgICAgICAgIHNlcGFyYXRlIGNvbXBvbmVudHMgdGhhdCBjb3VsZCBiZSBjb21iaW5lZCBpbgorICAgICAgICBjZXJ0YWluIGVuZCBwcm9kdWN0cy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQmVmb3JlIGxvb2tpbmcgYXQgdGhlIHJlY29tbWVuZGVkIGZvcm0gZm9yIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlCisgICAgICAgIGluc2lkZSBhIEJTUCBsYXllciwgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IHNvbWUKKyAgICAgICAgcmVxdWlyZW1lbnRzIGRvIGV4aXN0IGluIG9yZGVyIGZvciBhIEJTUCBsYXllciB0bworICAgICAgICBiZSBjb25zaWRlcmVkIDxmaXJzdHRlcm0+Y29tcGxpYW50PC9maXJzdHRlcm0+IHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIEZvciB0aGF0IGxpc3Qgb2YgcmVxdWlyZW1lbnRzLCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWxlYXNlZC1ic3AtcmVxdWlyZW1lbnRzJz5SZWxlYXNlZCBCU1AgUmVxdWlyZW1lbnRzPC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQmVsb3cgaXMgdGhlIHR5cGljYWwgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgYSBCU1AgbGF5ZXIuCisgICAgICAgIFdoaWxlIHRoaXMgYmFzaWMgZm9ybSByZXByZXNlbnRzIHRoZSBzdGFuZGFyZCwKKyAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgbGF5b3V0IGZvciBpbmRpdmlkdWFsCisgICAgICAgIEJTUHMgY291bGQgZGlmZmVyLgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi8KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5ic3BfbGljZW5zZV9maWxlPC9yZXBsYWNlYWJsZT4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FLnNvdXJjZXMKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeS88cmVwbGFjZWFibGU+Ym9vdGFibGVfaW1hZ2VzPC9yZXBsYWNlYWJsZT4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbGF5ZXIuY29uZgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vY29uZi9tYWNoaW5lLyouY29uZgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1ic3AvKgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1jb3JlLyoKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtZ3JhcGhpY3MvKgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fPHJlcGxhY2VhYmxlPmtlcm5lbF9yZXY8L3JlcGxhY2VhYmxlPi5iYmFwcGVuZAorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdGhlIFJhc3BiZXJyeSBQaSBCU1AKKyAgICAgICAgbGF5ZXIgdGhhdCBpcyBhdmFpbGFibGUgZnJvbSB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVzcG9zaXRvcmllczwvdWxpbms+OgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvQ09QWUlORy5NSVQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9SRUFETUUubWQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mLworICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZgorICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS8KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGktY20uY29uZgorICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS1jbTMuY29uZgorICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMC13aWZpLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkyLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLTY0LmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZQorICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYworICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1kZWZhdWx0LXByb3ZpZGVycy5pbmMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC1zZXR0aW5ncy5pbmMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC12ZXJzaW9ucy5pbmMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqemYtcy5pbmMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9NYWtlZmlsZQorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvY29uZi5weQorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvY29udHJpYnV0aW5nLm1kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1hcHBzLm1kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2luZGV4LnJzdAorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvbGF5ZXItY29udGVudHMubWQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL3JlYWRtZS5tZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL2ZpbGVzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZmlsZXMvY3VzdG9tLWxpY2Vuc2VzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZmlsZXMvY3VzdG9tLWxpY2Vuc2VzL0Jyb2FkY29tCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvYmNtMjgzNS1ib290ZmlsZXMuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24vZmlybXdhcmUuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvZm9ybWZhY3RvcgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3RvcgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9yYXNwYmVycnlwaQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9yYXNwYmVycnlwaS9tYWNoY29uZmlnCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc3JjCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zcmMvZmlsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNyYy9maWxlcy9ib290LmNtZC5pbgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc3JjL3JwaS11LWJvb3Qtc2NyLmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvdS1ib290CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QvKi5wYXRjaAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvKi5wYXRjaAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvQkNNNDM0MzBBMS5oY2QKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1YnJjbTQzNDM4LnNlcnZpY2UKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktYmFzaWMtaW1hZ2UuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzL3JwaS1od3VwLWltYWdlLmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktdGVzdC1pbWFnZS5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXJwaS10ZXN0LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BzcGxhc2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtcmFzcGJlcnJ5cGktaW1nLmgKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS91ZGV2CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1ydWxlcy1ycGkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS85OS1jb20ucnVsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjUyLmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL2ZpbGVzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL2ZpbGVzLyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ydGltdQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ydGltdS8qLnBhdGNoCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJ0aW11X2dpdC5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4yLjAuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3BpbworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaS1ncGlvLyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMy5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaW8KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvLyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvXzAuMTAuMC5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ1BpL2ZpbGVzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS9maWxlcy8qLnBhdGNoCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS93aXJpbmdwaV9naXQuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8tZmJfJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXgxMV8lLmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9tZXNhCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvKi5wYXRjaAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmRfZ2l0LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy92Yy1ncmFwaGljcworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvZmlsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL2ZpbGVzL2VnbC5wYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvZmlsZXMvdmNoaXEuc2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLWhhcmRmcC5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaS94b3JnLmNvbmYuZC8xMC1ldmRldi5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvOTgtcGl0ZnQuY29uZgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kLzk5LWNhbGlicmF0aW9uLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18lLmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2ZpbGVzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMvYnJjbWZtYWM0MzQzMC1zZGlvLmJpbgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2ZpbGVzL2JyY2ZtYWM0MzQzMC1zZGlvLnR4dAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzQuMTQuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjkuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8qLnBhdGNoCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXJfZ2l0LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3dpYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3dpYy9zZGltYWdlLXJhc3BiZXJyeXBpLndrcworICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgZWFjaCBwYXJ0IG9mIHRoZSBwcm9wb3NlZAorICAgICAgICBCU1AgZm9ybWF0LgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dC1saWNlbnNlIj4KKyAgICAgICAgPHRpdGxlPkxpY2Vuc2UgRmlsZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YnNwX2xpY2Vuc2VfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIG9wdGlvbmFsIGZpbGVzIHNhdGlzZnkgbGljZW5zaW5nIHJlcXVpcmVtZW50cworICAgICAgICAgICAgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZworICAgICAgICAgICAgb24gdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AsIGFsbCBsaWNlbnNpbmcKKyAgICAgICAgICAgIHJlcXVpcmVtZW50cyBhcmUgaGFuZGxlZCB3aXRoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTGljZW5zaW5nIGZpbGVzIGNhbiBiZSBNSVQsIEJTRCwgR1BMdiosIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSByZWNvbW1lbmRlZCBmb3IgdGhlIEJTUCBidXQgYXJlCisgICAgICAgICAgICBvcHRpb25hbCBhbmQgdG90YWxseSB1cCB0byB0aGUgQlNQIGRldmVsb3Blci4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbWFpbnRhaW4gbGljZW5zZQorICAgICAgICAgICAgY29tcGxpYW5jZSwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lIj4KKyAgICAgICAgPHRpdGxlPlJFQURNRSBGaWxlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGZpbGUgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIGJvb3QgdGhlIGxpdmUKKyAgICAgICAgICAgIGltYWdlcyB0aGF0IGFyZSBvcHRpb25hbGx5IGluY2x1ZGVkIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmFyeS88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgYWxzbyBwcm92aWRlcworICAgICAgICAgICAgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEF0IGEgbWluaW11bSwgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIG11c3QKKyAgICAgICAgICAgIGNvbnRhaW4gYSBsaXN0IG9mIGRlcGVuZGVuY2llcywgc3VjaCBhcyB0aGUgbmFtZXMgb2YKKyAgICAgICAgICAgIGFueSBvdGhlciBsYXllcnMgb24gd2hpY2ggdGhlIEJTUCBkZXBlbmRzIGFuZCB0aGUgbmFtZSBvZgorICAgICAgICAgICAgdGhlIEJTUCBtYWludGFpbmVyIHdpdGggaGlzIG9yIGhlciBjb250YWN0IGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImJzcC1maWxlbGF5b3V0LXJlYWRtZS1zb3VyY2VzIj4KKyAgICAgICAgPHRpdGxlPlJFQURNRS5zb3VyY2VzIEZpbGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbiB0aGUgQlNQIExheWVyIGF0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FLnNvdXJjZXMKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHdoZXJlIHRvIGxvY2F0ZSB0aGUgQlNQCisgICAgICAgICAgICBzb3VyY2UgZmlsZXMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2VzIChpZiBhbnkpIHRoYXQKKyAgICAgICAgICAgIHJlc2lkZSBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9iaW5hcnk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEltYWdlcyBpbiB0aGUgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IHdvdWxkIGJlIGltYWdlcworICAgICAgICAgICAgcmVsZWFzZWQgd2l0aCB0aGUgQlNQLgorICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSBhbHNvIGhlbHBzIHlvdSBmaW5kIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGltYWdlcyB0aGF0IHNoaXAgd2l0aCB0aGUgQlNQLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgdGhlIEJTUCdzIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMKKyAgICAgICAgICAgICAgICBtaXNzaW5nIG9yIHRoZSBkaXJlY3RvcnkgaGFzIG5vIGltYWdlcywgYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPiBmaWxlIGlzCisgICAgICAgICAgICAgICAgbWVhbmluZ2xlc3MgYW5kIHVzdWFsbHkgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtYmluYXJ5Ij4KKyAgICAgICAgPHRpdGxlPlByZS1idWlsdCBVc2VyIEJpbmFyaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vYmluYXJ5LzxyZXBsYWNlYWJsZT5ib290YWJsZV9pbWFnZXM8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGFyZWEgY29udGFpbnMgdXNlZnVsIHByZS1idWlsdCBrZXJuZWxzCisgICAgICAgICAgICBhbmQgdXNlci1zcGFjZSBmaWxlc3lzdGVtIGltYWdlcyByZWxlYXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgQlNQIHRoYXQgYXJlIGFwcHJvcHJpYXRlIHRvIHRoZSB0YXJnZXQgc3lzdGVtLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgdHlwaWNhbGx5IGNvbnRhaW5zIGdyYXBoaWNhbCAoZS5nLiBTYXRvKQorICAgICAgICAgICAgYW5kIG1pbmltYWwgbGl2ZSBpbWFnZXMgd2hlbiB0aGUgQlNQIHRhcmJhbGwgaGFzIGJlZW4KKyAgICAgICAgICAgIGNyZWF0ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICB3ZWJzaXRlLgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlc2Uga2VybmVscyBhbmQgaW1hZ2VzIHRvIGdldCBhIHN5c3RlbQorICAgICAgICAgICAgcnVubmluZyBhbmQgcXVpY2tseSBnZXQgc3RhcnRlZCBvbiBkZXZlbG9wbWVudCB0YXNrcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGV4YWN0IHR5cGVzIG9mIGJpbmFyaWVzIHByZXNlbnQgYXJlIGhpZ2hseQorICAgICAgICAgICAgaGFyZHdhcmUtZGVwZW5kZW50LgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdic3AtZmlsZWxheW91dC1yZWFkbWUnPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIEJTUCBMYXllciBhbmQgaXQKKyAgICAgICAgICAgIGV4cGxhaW5zIGhvdyB0byB1c2UgdGhlIGltYWdlcyB3aXRoIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQtcmVhZG1lLXNvdXJjZXMnPjxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgZmlsZSBzaG91bGQgYmUgcHJlc2VudCB0byBsb2NhdGUgdGhlIHNvdXJjZXMgdXNlZCB0bworICAgICAgICAgICAgYnVpbGQgdGhlIGltYWdlcyBhbmQgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIE1ldGFkYXRhLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LWxheWVyJz4KKyAgICAgICAgPHRpdGxlPkxheWVyIENvbmZpZ3VyYXRpb24gRmlsZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICBpZGVudGlmaWVzIHRoZSBmaWxlIHN0cnVjdHVyZSBhcyBhIGxheWVyLAorICAgICAgICAgICAgaWRlbnRpZmllcyB0aGUgY29udGVudHMgb2YgdGhlIGxheWVyLCBhbmQKKyAgICAgICAgICAgIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgYnVpbGQgc3lzdGVtIHNob3VsZAorICAgICAgICAgICAgdXNlIGl0LgorICAgICAgICAgICAgR2VuZXJhbGx5LCBhIHN0YW5kYXJkIGJvaWxlcnBsYXRlIGZpbGUgc3VjaCBhcyB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZyB3b3Jrcy4KKyAgICAgICAgICAgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgeW91IHdvdWxkIHJlcGxhY2UKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3A8L3JlcGxhY2VhYmxlPiB3aXRoIHRoZSBhY3R1YWwKKyAgICAgICAgICAgIG5hbWUgb2YgdGhlIEJTUCAoaS5lLgorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPiBmcm9tIHRoZSBleGFtcGxlCisgICAgICAgICAgICB0ZW1wbGF0ZSkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKKyAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCisKKyAgICAgIyBXZSBoYXZlIGEgcmVjaXBlcyBkaXJlY3RvcnksIGFkZCB0byBCQkZJTEVTCisgICAgIEJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAorICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgorCisgICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAiPHJlcGxhY2VhYmxlPmJzcDwvcmVwbGFjZWFibGU+IgorICAgICBCQkZJTEVfUEFUVEVSTl88cmVwbGFjZWFibGU+YnNwPC9yZXBsYWNlYWJsZT4gPSAiXiR7TEFZRVJESVJ9LyIKKyAgICAgQkJGSUxFX1BSSU9SSVRZXzxyZXBsYWNlYWJsZT5ic3A8L3JlcGxhY2VhYmxlPiA9ICI2IgorCisgICAgIExBWUVSREVQRU5EU188cmVwbGFjZWFibGU+YnNwPC9yZXBsYWNlYWJsZT4gPSAiaW50ZWwiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgdGhlIHN0cmluZyBzdWJzdGl0dXRpb25zLCBoZXJlIGFyZQorICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGVtZW50cyBmcm9tIHRoZSBSYXNwYmVycnkKKyAgICAgICAgICAgIFBpIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYXBwZW5kIHRvIEJCUEFUSAorICAgICBCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworICAgICAjIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSBjb250YWluaW5nIC5iYiBhbmQgLmJiYXBwZW5kIGZpbGVzLCBhZGQgdG8gQkJGSUxFUworICAgICBCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzKi8qLyouYmIgXAorICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzKi8qLyouYmJhcHBlbmQiCisKKyAgICAgQkJGSUxFX0NPTExFQ1RJT05TICs9ICJyYXNwYmVycnlwaSIKKyAgICAgQkJGSUxFX1BBVFRFUk5fcmFzcGJlcnJ5cGkgOj0gIl4ke0xBWUVSRElSfS8iCisgICAgIEJCRklMRV9QUklPUklUWV9yYXNwYmVycnlwaSA9ICI5IgorCisgICAgICMgQWRkaXRpb25hbCBsaWNlbnNlIGRpcmVjdG9yaWVzLgorICAgICBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2ZpbGVzL2N1c3RvbS1saWNlbnNlcyIKKyAgICAgICAgICAuCisgICAgICAgICAgLgorICAgICAgICAgIC4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBmaWxlIHNpbXBseSBtYWtlcworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIGF3YXJlIG9mIHRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9uIGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgVGhlIGZpbGUgbXVzdCBleGlzdCBzbyB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICBjYW4gcmVjb2duaXplIHRoZSBCU1AuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtbWFjaGluZSI+CisgICAgICAgIDx0aXRsZT5IYXJkd2FyZSBDb25maWd1cmF0aW9uIE9wdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL21hY2hpbmUvKi5jb25mCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtYWNoaW5lIGZpbGVzIGJpbmQgdG9nZXRoZXIgYWxsIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgY29udGFpbmVkIGVsc2V3aGVyZSBpbiB0aGUgQlNQIGludG8gYSBmb3JtYXQgdGhhdAorICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gdW5kZXJzdGFuZC4KKyAgICAgICAgICAgIEVhY2ggQlNQIExheWVyIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBtYWNoaW5lIGZpbGUuCisgICAgICAgICAgICBJZiB0aGUgQlNQIHN1cHBvcnRzIG11bHRpcGxlIG1hY2hpbmVzLCBtdWx0aXBsZQorICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGNhbiBleGlzdC4KKyAgICAgICAgICAgIFRoZXNlIGZpbGVuYW1lcyBjb3JyZXNwb25kIHRvIHRoZSB2YWx1ZXMgdG8gd2hpY2gKKyAgICAgICAgICAgIHVzZXJzIGhhdmUgc2V0IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlc2UgZmlsZXMgZGVmaW5lIHRoaW5ncyBzdWNoIGFzIHRoZSBrZXJuZWwgcGFja2FnZQorICAgICAgICAgICAgdG8gdXNlCisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIG9mCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YS12aXJ0dWFsLXByb3ZpZGVycyc+dmlydHVhbC9rZXJuZWw8L3VsaW5rPiksCisgICAgICAgICAgICB0aGUgaGFyZHdhcmUgZHJpdmVycyB0byBpbmNsdWRlIGluIGRpZmZlcmVudCB0eXBlcworICAgICAgICAgICAgb2YgaW1hZ2VzLCBhbnkgc3BlY2lhbCBzb2Z0d2FyZSBjb21wb25lbnRzIHRoYXQgYXJlCisgICAgICAgICAgICBuZWVkZWQsIGFueSBib290bG9hZGVyIGluZm9ybWF0aW9uLCBhbmQgYWxzbyBhbnkKKyAgICAgICAgICAgIHNwZWNpYWwgaW1hZ2UgZm9ybWF0IHJlcXVpcmVtZW50cy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgY291bGQgYWxzbyBpbmNsdWRlIGEgaGFyZHdhcmUKKyAgICAgICAgICAgICJ0dW5pbmciIGZpbGUgdGhhdCBpcyBjb21tb25seSB1c2VkIHRvIGRlZmluZSB0aGUKKyAgICAgICAgICAgIHBhY2thZ2UgYXJjaGl0ZWN0dXJlIGFuZCBzcGVjaWZ5IG9wdGltaXphdGlvbiBmbGFncywKKyAgICAgICAgICAgIHdoaWNoIGFyZSBjYXJlZnVsbHkgY2hvc2VuIHRvIGdpdmUgYmVzdCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgb24gYSBnaXZlbiBwcm9jZXNzb3IuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFR1bmluZyBmaWxlcyBhcmUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG1hbnkgPGZpbGVuYW1lPnR1bmUtKjwvZmlsZW5hbWU+IGZpbGVzCisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+dHVuZS1hcm0xMTM2amYtcy5pbmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT50dW5lLTE1ODYtbmxwLmluYzwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpCisgICAgICAgICAgICByZXNpZGUgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gdXNlIGFuIGluY2x1ZGUgZmlsZSwgeW91IHNpbXBseSBpbmNsdWRlIHRoZW0gaW4gdGhlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgUmFzcGJlcnJ5IFBpIEJTUAorICAgICAgICAgICAgPGZpbGVuYW1lPnJhc3BiZXJyeXBpMy5jb25mPC9maWxlbmFtZT4gY29udGFpbnMgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgc3RhdGVtZW50OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LW1pc2MtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIEJTUC1TcGVjaWZpYyBSZWNpcGUgRmlsZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWJzcC8qCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5zIG1pc2NlbGxhbmVvdXMgcmVjaXBlCisgICAgICAgICAgICBmaWxlcyBmb3IgdGhlIEJTUC4KKyAgICAgICAgICAgIE1vc3Qgbm90YWJseSB3b3VsZCBiZSB0aGUgZm9ybWZhY3RvciBmaWxlcy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgUmFzcGJlcnJ5IFBpIEJTUCwgdGhlcmUgaXMgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgd2hpY2ggaXMgYW4gYXBwZW5kIGZpbGUgdXNlZCB0byBhdWdtZW50IHRoZSByZWNpcGUKKyAgICAgICAgICAgIHRoYXQgc3RhcnRzIHRoZSBidWlsZC4KKyAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVyZSBhcmUgbWFjaGluZS1zcGVjaWZpYyBzZXR0aW5ncyB1c2VkCisgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkIHRoYXQgYXJlIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnVydGhlciBkb3duIGluCisgICAgICAgICAgICB0aGUgZGlyZWN0b3J5LgorICAgICAgICAgICAgSGVyZSBpcyB0aGUgPGZpbGVuYW1lPm1hY2hjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgdGhlIFJhc3BiZXJyeSBQaSBCU1A6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEhBVkVfVE9VQ0hTQ1JFRU49MAorICAgICBIQVZFX0tFWUJPQVJEPTEKKworICAgICBESVNQTEFZX0NBTl9ST1RBVEU9MAorICAgICBESVNQTEFZX09SSUVOVEFUSU9OPTAKKyAgICAgRElTUExBWV9EUEk9MTMzCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT48cGFyYT4KKyAgICAgICAgICAgIElmIGEgQlNQIGRvZXMgbm90IGhhdmUgYSBmb3JtZmFjdG9yIGVudHJ5LCBkZWZhdWx0cworICAgICAgICAgICAgYXJlIGVzdGFibGlzaGVkIGFjY29yZGluZyB0byB0aGUgZm9ybWZhY3RvcgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgaXMgaW5zdGFsbGVkIGJ5IHRoZSBtYWluCisgICAgICAgICAgICBmb3JtZmFjdG9yIHJlY2lwZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgIDwvcGFyYT48L25vdGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LXJlY2lwZXMtZ3JhcGhpY3MnPgorICAgICAgICA8dGl0bGU+RGlzcGxheSBTdXBwb3J0IEZpbGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1ncmFwaGljcy8qCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5zIHJlY2lwZXMgZm9yIHRoZQorICAgICAgICAgICAgQlNQIGlmIGl0IGhhcyBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3IgZ3JhcGhpY3MKKyAgICAgICAgICAgIHN1cHBvcnQuCisgICAgICAgICAgICBBbGwgZmlsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgQlNQIHRvIHN1cHBvcnQKKyAgICAgICAgICAgIGEgZGlzcGxheSBhcmUga2VwdCBoZXJlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LWtlcm5lbCc+CisgICAgICAgIDx0aXRsZT5MaW51eCBLZXJuZWwgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4Ki5iYmFwcGVuZAorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXgvKi5iYgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcHBlbmQgZmlsZXMgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pIG1vZGlmeQorICAgICAgICAgICAgdGhlIG1haW4ga2VybmVsIHJlY2lwZSBiZWluZyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ki5iYjwvZmlsZW5hbWU+IGZpbGVzIHdvdWxkIGJlIGEKKyAgICAgICAgICAgIGRldmVsb3Blci1zdXBwbGllZCBrZXJuZWwgcmVjaXBlLgorICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBCU1AgaGllcmFyY2h5IGNhbiBjb250YWluIGJvdGggdGhlc2UKKyAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzIGFsdGhvdWdoLCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgIHlvdSB3b3VsZCBoYXZlIG9uZSBvciB0aGUgb3RoZXIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciB5b3VyIEJTUCwgeW91IHR5cGljYWxseSB3YW50IHRvIHVzZSBhbiBleGlzdGluZyBZb2N0bworICAgICAgICAgICAgUHJvamVjdCBrZXJuZWwgcmVjaXBlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICBhdCA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgWW91IGNhbiBhcHBlbmQgbWFjaGluZS1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZQorICAgICAgICAgICAga2VybmVsIHJlY2lwZSBieSB1c2luZyBhIHNpbWlsYXJseSBuYW1lZCBhcHBlbmQKKyAgICAgICAgICAgIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlIEJTUCBMYXllciBmb3IgeW91cgorICAgICAgICAgICAgdGFyZ2V0IGRldmljZSAoZS5nLiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkpLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTdXBwb3NlIHlvdSBhcmUgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC40LmJiPC9maWxlbmFtZT4gcmVjaXBlIHRvCisgICAgICAgICAgICBidWlsZCB0aGUga2VybmVsLgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSBrZXJuZWwgaW4geW91cgorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGJ5IGFkZGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9WRVJTSU9OJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBzdGF0ZW1lbnRzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjQlIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyIGlzIGFzc3VtZWQgYnkKKyAgICAgICAgICAgICAgICBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgWW91IHdvdWxkIHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjQuYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSB0byBhcHBlbmQgc3BlY2lmaWMgQlNQIHNldHRpbmdzIHRvIHRoZSBrZXJuZWwsCisgICAgICAgICAgICB0aHVzIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwgZm9yIHlvdXIgcGFydGljdWxhciBCU1AuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgeW91ciBhcHBlbmQgZmlsZQorICAgICAgICAgICAgc2hvdWxkIGNvbnRhaW4gaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NyZWF0aW5nLXRoZS1hcHBlbmQtZmlsZSc+Q3JlYXRpbmcgdGhlIEFwcGVuZCBGaWxlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbiBhbHRlcm5hdGUgc2NlbmFyaW8gaXMgd2hlbiB5b3UgY3JlYXRlIHlvdXIgb3duCisgICAgICAgICAgICBrZXJuZWwgcmVjaXBlIGZvciB0aGUgQlNQLgorICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGUgUmFzcGJlcnJ5IFBpIEJTUC4KKyAgICAgICAgICAgIElmIHlvdSBleGFtaW5lIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICB5b3Ugc2VlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGxpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgorICAgICBsaW51eC1yYXNwYmVycnlwaS5pbmMKKyAgICAgbGludXgtcmFzcGJlcnJ5cGlfNC4xNC5iYgorICAgICBsaW51eC1yYXNwYmVycnlwaV80LjkuYmIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgY29udGFpbnMgdGhyZWUga2VybmVsIHJlY2lwZXMgYW5kIGEKKyAgICAgICAgICAgIGNvbW1vbiBpbmNsdWRlIGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+CisgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGhpZ2gtbGV2ZWwgcHJvY2VkdXJlIHlvdSBjYW4KKyAgICAgICAgZm9sbG93IHRvIGNyZWF0ZSBhIEJTUC4KKyAgICAgICAgQWx0aG91Z2ggbm90IHJlcXVpcmVkIGZvciBCU1AgY3JlYXRpb24sIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoCisgICAgICAgIGNvbnRhaW5zIG1hbnkgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIGlzIHBhcnQgb2YgdGhlIGV4YW1wbGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIG5ldworICAgICAgICBsYXllciB1c2luZyB0aGUgdG9vbHMsIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIGFuZCBsaXN0IHN1bW1hcml6ZSB0aGUgQlNQCisgICAgICAgIGNyZWF0aW9uIGdlbmVyYWwgd29ya2Zsb3cuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nIiB3aWR0aD0iN2luIiBkZXB0aD0iNWluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbQorICAgICAgICAgICAgICAgIHRvIFN1cHBvcnQgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgIE1hbnVhbCBmb3Igb3B0aW9ucyBvbiBob3cgdG8gZ2V0IGEgc3lzdGVtIHJlYWR5CisgICAgICAgICAgICAgICAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Fc3RhYmxpc2ggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIFJlcG9zaXRvcnkgb24gWW91ciBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBIYXZpbmcgbG9jYWwgY29waWVzIG9mIHRoZXNlIHN1cHBvcnRlZCBCU1AgbGF5ZXJzCisgICAgICAgICAgICAgICAgb24geW91ciBzeXN0ZW0gZ2l2ZXMgeW91IGFjY2VzcyB0byBsYXllcnMgeW91CisgICAgICAgICAgICAgICAgbWlnaHQgYmUgYWJsZSB0byBsZXZlcmFnZSB3aGVuIGNyZWF0aW5nIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IHRoZXNlIGZpbGVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPlByZXBhcmluZyBZb3VyIEJ1aWxkIEhvc3QgdG8gV29yayB3aXRoIEJTUCBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBZb3VyIE93biBCU1AgTGF5ZXIgVXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBTY3JpcHQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGlkZWFsIGZvciBpc29sYXRpbmcgYW5kIHN0b3Jpbmcgd29yaworICAgICAgICAgICAgICAgIGZvciBhIGdpdmVuIHBpZWNlIG9mIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIEEgbGF5ZXIgaXMgcmVhbGx5IGp1c3QgYSBsb2NhdGlvbiBvciBhcmVhIGluIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgIHBsYWNlIHRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgeW91ciBCU1AuCisgICAgICAgICAgICAgICAgSW4gZmFjdCwgYSBCU1AgaXMsIGluIGl0c2VsZiwgYSBzcGVjaWFsIHR5cGUgb2YgbGF5ZXIuCisgICAgICAgICAgICAgICAgVGhlIHNpbXBsZXN0IHdheSB0byBjcmVhdGUgYSBuZXcgQlNQIGxheWVyIHRoYXQgaXMKKyAgICAgICAgICAgICAgICBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+QW5vdGhlciBleGFtcGxlIHRoYXQgaWxsdXN0cmF0ZXMgYSBsYXllcgorICAgICAgICAgICAgICAgIGlzIGFuIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGhhcworICAgICAgICAgICAgICAgIGxpYnJhcnkgb3Igb3RoZXIgZGVwZW5kZW5jaWVzIGluIG9yZGVyIGZvciBpdCB0bworICAgICAgICAgICAgICAgIGNvbXBpbGUgYW5kIHJ1bi4KKyAgICAgICAgICAgICAgICBUaGUgbGF5ZXIsIGluIHRoaXMgY2FzZSwgd291bGQgYmUgd2hlcmUgYWxsIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBkZWZpbmUgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBrZXB0LgorICAgICAgICAgICAgICAgIFRoZSBrZXkgcG9pbnQgZm9yIGEgbGF5ZXIgaXMgdGhhdCBpdCBpcyBhbgorICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFyZWEgdGhhdCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50CisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoZSBwcm9qZWN0IHRoYXQgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBrbm93cyBhYm91dC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+VGhlIFlvY3RvIFByb2plY3QgTGF5ZXIgTW9kZWw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cworICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml2ZSBoYXJkd2FyZSByZWZlcmVuY2UgQlNQcyBleGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHBhcnQgb2YgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhcmUgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IEJTUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+YmVhZ2xlYm9uZS15b2N0bzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmVkZ2Vyb3V0ZXI8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR3byBnZW5lcmFsIElBIHBsYXRmb3JtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5nZW5lcmljeDg2PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2VuZXJpY3g4Ni02NDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWUgY29yZSBJbnRlbCBCU1BzIGV4aXN0IGFzIHBhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVsLWNvcmUyLTMyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIHRoZSBDb3JlMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5IG9mIENQVXMgYXMgd2VsbCBhcyBhbGwgQ1BVcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3IgdG8gdGhlIFNpbHZlcm1vbnQgY29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW50ZWwtY29yZWk3LTY0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIE5laGFsZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsYXRlciBDb3JlIGFuZCBYZW9uIENQVXMgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgU2lsdmVybW9udCBhbmQgbGF0ZXIgQXRvbSBDUFVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyB0aGUgQmF5dHJhaWwgU29Dcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW50ZWwtcXVhcms8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbCBHYWxpbGVvIGdlbjEgJmFtcDsgZ2VuMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBzZXQgdXAgYSBsYXllciBmb3IgYSBuZXcgQlNQLAorICAgICAgICAgICAgICAgIHlvdSBzaG91bGQgZm9sbG93IGEgc3RhbmRhcmQgbGF5b3V0LgorICAgICAgICAgICAgICAgIFRoaXMgbGF5b3V0IGlzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQnPkV4YW1wbGUgRmlsZXN5c3RlbSBMYXlvdXQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgSW4gdGhlIHN0YW5kYXJkIGxheW91dCwgbm90aWNlIHRoZSBzdWdnZXN0ZWQKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUAorICAgICAgICAgICAgICAgIGJ5IGV4YW1pbmluZyBhbnkgc3VwcG9ydGVkIEJTUCBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGluc2lkZQorICAgICAgICAgICAgICAgIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyB0byBZb3VyIE5ldworICAgICAgICAgICAgICAgIEJTUCBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBCU1AgbGF5ZXIgc3RydWN0dXJlIG9yZ2FuaXplcyB0aGUKKyAgICAgICAgICAgICAgICBmaWxlcyB5b3UgbmVlZCB0byBlZGl0IGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBhbmQgc2V2ZXJhbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBpZGVudGlmeSB3aGVyZSB5b3VyIG5ldworICAgICAgICAgICAgICAgIGxheWVyIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGlkZW50aWZpZXMgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIHlvdSBhcmUgZ29pbmcgdG8gdXNlLgorICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQsCisgICAgICAgICAgICAgICAgeW91IGFyZSBhYmxlIHRvIGludGVyYWN0aXZlbHkgY29uZmlndXJlIG1hbnkKKyAgICAgICAgICAgICAgICB0aGluZ3MgZm9yIHRoZSBCU1AgKGUuZy4ga2V5Ym9hcmQsIHRvdWNoc2NyZWVuLAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgUmVjaXBlIENoYW5nZXMgdG8gWW91ciBOZXcgQlNQCisgICAgICAgICAgICAgICAgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiBmaWxlcyksIHJlbW92aW5nCisgICAgICAgICAgICAgICAgcmVjaXBlcyB5b3UgZG8gbm90IHVzZSwgYW5kIGFkZGluZyBuZXcgcmVjaXBlcworICAgICAgICAgICAgICAgIG9yIGFwcGVuZCBmaWxlcyAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydCB5b3VyIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIGZvciB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1hZGUgYWxsIHRoZSBjaGFuZ2VzIHRvIHlvdXIgQlNQCisgICAgICAgICAgICAgICAgbGF5ZXIsIHRoZXJlIHJlbWFpbnMgYSBmZXcgdGhpbmdzIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgZG8gZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIG9yZGVyCisgICAgICAgICAgICAgICAgZm9yIGl0IHRvIGNyZWF0ZSB5b3VyIGltYWdlLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGdldCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgcmVhZHkgYnkKKyAgICAgICAgICAgICAgICBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBhbmQgeW91IG5lZWQgdG8gYmUgc3VyZSB0d28ga2V5IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBmaWxlcyBhcmUgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5OiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IG1ha2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXdhcmUKKyAgICAgICAgICAgICAgICBvZiB5b3VyIG5ldyBsYXllci4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbGV0IHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBrbm93IGFib3V0IHlvdXIgbmV3IGxheWVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSBCaXRCYWtlIHRvb2wKKyAgICAgICAgICAgICAgICB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICBjcmVhdGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQml0QmFrZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGJ1aWxkIHByb2Nlc3Mgc3VwcG9ydHMgc2V2ZXJhbCB0eXBlcyBvZgorICAgICAgICAgICAgICAgIGltYWdlcyB0byBzYXRpc2Z5IGRpZmZlcmVudCBuZWVkcy4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBzdXBwb3J0ZWQgaW1hZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlcXVpcmVtZW50cy1hbmQtcmVjb21tZW5kYXRpb25zLWZvci1yZWxlYXNlZC1ic3BzJz4KKyAgICA8dGl0bGU+UmVxdWlyZW1lbnRzIGFuZCBSZWNvbW1lbmRhdGlvbnMgZm9yIFJlbGVhc2VkIEJTUHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIENlcnRhaW4gcmVxdWlyZW1lbnRzIGV4aXN0IGZvciBhIHJlbGVhc2VkIEJTUCB0byBiZQorICAgICAgICBjb25zaWRlcmVkIGNvbXBsaWFudCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBBZGRpdGlvbmFsbHksIHJlY29tbWVuZGF0aW9ucyBhbHNvIGV4aXN0LgorICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSByZXF1aXJlbWVudHMgYW5kCisgICAgICAgIHJlY29tbWVuZGF0aW9ucyBmb3IgcmVsZWFzZWQgQlNQcy4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZWQtYnNwLXJlcXVpcmVtZW50cyc+CisgICAgICAgIDx0aXRsZT5SZWxlYXNlZCBCU1AgUmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IEJTUCByZXF1aXJlbWVudHMsIHlvdSBzaG91bGQgY29uc2lkZXIKKyAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlcXVpcmVtZW50cyBoZXJlIGFzc3VtZSB0aGUgQlNQIGxheWVyCisgICAgICAgICAgICAgICAgICAgIGlzIGEgd2VsbC1mb3JtZWQsICJsZWdhbCIgbGF5ZXIgdGhhdCBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBndWlkZWxpbmVzIG9uIGNyZWF0aW5nIGEgbGF5ZXIgdGhhdCBtZWV0cworICAgICAgICAgICAgICAgICAgICB0aGVzZSBiYXNlIHJlcXVpcmVtZW50cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhpcyBtYW51YWwgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnMiPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlbWVudHMgaW4gdGhpcyBzZWN0aW9uIGFwcGx5CisgICAgICAgICAgICAgICAgICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHlvdSBwYWNrYWdlIGEgQlNQLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGNvbnN1bHQgdGhlIHBhY2thZ2luZyBhbmQgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHlvdXIgc3BlY2lmaWMgcmVsZWFzZSBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGhpcmRfUGFydHlfQlNQX1JlbGVhc2VfUHJvY2Vzcyc+VGhpcmQgUGFydHkgQlNQIFJlbGVhc2UgUHJvY2VzczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlIEJTUCBhcyBpdCBpcyBtYWRlCisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSB0byBhIGRldmVsb3BlciBhcmUgY29tcGxldGVseQorICAgICAgICAgICAgICAgICAgICBpbmRlcGVuZGVudCBvZiB0aGUgcmVsZWFzZWQgZm9ybSBvZiB0aGUgQlNQLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIEJTUCBNZXRhZGF0YSBjYW4gYmUgY29udGFpbmVkCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiBhIEdpdCByZXBvc2l0b3J5IGFuZCBjb3VsZCBoYXZlIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tIHdoYXQgYXBwZWFycworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb2ZmaWNpYWxseSByZWxlYXNlZCBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IHJlcXVpcmVkIHRoYXQgc3BlY2lmaWMgcGFja2FnZXMgb3IKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBtb2RpZmljYXRpb25zIGV4aXN0IGluIHRoZSBCU1AgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgIGJleW9uZCB0aGUgcmVxdWlyZW1lbnRzIGZvciBnZW5lcmFsCisgICAgICAgICAgICAgICAgICAgIGNvbXBsaWFuY2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG5vIHJlcXVpcmVtZW50IGV4aXN0cyBkaWN0YXRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhIHNwZWNpZmljIGtlcm5lbCBvciBrZXJuZWwgdmVyc2lvbiBiZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGluIGEgZ2l2ZW4gQlNQLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHRoZSByZXF1aXJlbWVudHMgZm9yIGEgcmVsZWFzZWQgQlNQCisgICAgICAgICAgICB0aGF0IGNvbmZvcm0gdG8gdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyIE5hbWU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBtdXN0IGhhdmUgYSBsYXllciBuYW1lIHRoYXQgZm9sbG93cworICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBzdGFuZGFyZHMuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXIgbmFtZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaWxlIFN5c3RlbSBMYXlvdXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBwb3NzaWJsZSwgdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBuYW1lcworICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIEJTUCBsYXllciBhcyBsaXN0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGZvdW5kIGluIDxmaWxlbmFtZT5wb2t5L21ldGE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBvciBpbiB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+KSBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvdHJlZS9tZXRhJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBzaG91bGQgcGxhY2UgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiBmaWxlcykgYW5kIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb25zICg8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGVzKSBpbnRvIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3RvcmllcyBieSBmdW5jdGlvbmFsIGFyZWEgYXMgb3V0bGluZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjYW5ub3QgZmluZCBhIGNhdGVnb3J5IGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLnR4dDwvZmlsZW5hbWU+IHRvIGZpdCBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgcmVjaXBlLCB5b3UgY2FuIG1ha2UgdXAgeW91ciBvd24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiBhbnkgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gY2F0ZWdvcnksIHRoZQorICAgICAgICAgICAgICAgICAgICBsYXlvdXQgc2hvdWxkIG1hdGNoIHdoYXQgaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIEdpdCByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgb3IgdGhlIFNvdXJjZSBEaXJlY3RvcnkgKDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgbWFrZSBzdXJlIHlvdSBwbGFjZSByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIGFwcHJvcHJpYXRlbHktcmVsYXRlZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHJlY2lwZSdzIGZ1bmN0aW9uLCBvciB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgYSBzdWJkaXJlY3RvcnkgY29udGFpbmluZyBhIHNldCBvZiBjbG9zZWx5LXJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZXMgdGhlbXNlbHZlcyBzaG91bGQgZm9sbG93IHRoZSBnZW5lcmFsCisgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHJlY2lwZXMgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHA6Ly9vcGVuZW1iZWRkZWQub3JnL3dpa2kvU3R5bGVndWlkZSc+T3BlbkVtYmVkZGVkIFN0eWxlIEd1aWRlPC91bGluaz4iLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaWNlbnNlIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaW5jbHVkZSBhIGxpY2Vuc2UgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBsaWNlbnNlIGNvdmVycyB0aGUgQlNQIE1ldGFkYXRhIGFzIGEgd2hvbGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggbGljZW5zZSB0byB1c2Ugc2luY2Ugbm8KKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsaWNlbnNlIGV4aXN0cyB3aGVuIG9uZSBpcyBub3Qgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9tZXRhLXJhc3BiZXJyeXBpL3RyZWUvQ09QWUlORy5NSVQnPjxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIFJhc3BiZXJyeSBQaSBCU1AgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXJhc3BiZXJyeXBpPC9maWxlbmFtZT4gQlNQIGxheWVyCisgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJFQURNRSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgYSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvbWV0YS1yYXNwYmVycnlwaS90cmVlL1JFQURNRS5tZCc+PGZpbGVuYW1lPlJFQURNRS5tZDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIFJhc3BiZXJyeSBQaSBCU1AgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXJhc3BiZXJyeXBpPC9maWxlbmFtZT4gQlNQIGxheWVyCisgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkF0IGEgbWluaW11bSwgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlcXVpcmVkIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBkZXBlbmRlbmNpZXMgc2hvdWxkIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdGhlIEJTUCBtaWdodCBoYXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSByZXF1aXJlZCBzcGVjaWFsIGxpY2Vuc2luZyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHNwZWNpYWwgdmFyaWFibGVzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNhdGlzZnkgYSBFVUxBLCBvciBpbnN0cnVjdGlvbnMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYnVpbGQgb3IgZGlzdHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzIGJ1aWx0IGZyb20gdGhlIEJTUCBNZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVyIG1haW50YWluZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgcGVyc29uIHRvIHdob20gcGF0Y2hlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbnMgc2hvdWxkIGJlIHNlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBmaW5kIHRoZSByaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgb24gaG93IHRvIGJ1aWxkIHRoZSBCU1AgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9ucyBvbiBob3cgdG8gYm9vdCB0aGUgQlNQIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9ucyBvbiBob3cgdG8gYm9vdCB0aGUgYmluYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmluYXJ5PC9maWxlbmFtZT4gZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByZXNlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gb24gYW55IGtub3duIGJ1Z3Mgb3IgaXNzdWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2VycyBzaG91bGQga25vdyBhYm91dCB3aGVuIGVpdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIG9yIGJvb3RpbmcgdGhlIEJTUCBiaW5hcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJFQURNRS5zb3VyY2VzIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IEJTUCBjb250YWlucyBiaW5hcnkgaW1hZ2VzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmluYXJ5PC9maWxlbmFtZT4gZGlyZWN0b3J5LCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRS5zb3VyY2VzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHNwZWNpZmllcyBleGFjdGx5IHdoZXJlIHlvdSBjYW4gZmluZAorICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBiaW5hcnkgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXllciBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaW5jbHVkZSBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgaWRlbnRpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIEJTUCBsYXllciBhcyBhIGxheWVyIHRvIHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1hY2hpbmUgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgb25lIG9yIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcyBkZWZpbmUgbWFjaGluZSB0YXJnZXRzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgY2FuIGJlIGJ1aWx0IHVzaW5nIHRoZSBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIE11bHRpcGxlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBkZWZpbmUKKyAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9ucyBvZiBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIEJTUCBzdXBwb3J0cy4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZSB2YXJpYXRpb25zLAorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBhZGVxdWF0ZWx5IGRlc2NyaWJlIGVhY2ggdmFyaWF0aW9uCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBCU1AgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIERvIG5vdCB1c2UgbXVsdGlwbGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIHRvIGRlc2NyaWJlIGRpc3BhcmF0ZSBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIGhhdmUgdmVyeSBkaWZmZXJlbnQgdGFyZ2V0cywgeW91IHNob3VsZAorICAgICAgICAgICAgICAgICAgICBjcmVhdGUgc2VwYXJhdGUgQlNQIGxheWVycyBmb3IgZWFjaCB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgY29tcGxldGVseSBwb3NzaWJsZSBmb3IgYSBkZXZlbG9wZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSB0aGUgd29ya2luZyByZXBvc2l0b3J5IGFzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmdsb21lcmF0aW9uIG9mIHVucmVsYXRlZCBCU1AgZmlsZXMsIGFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libHkgZ2VuZXJhdGUgQlNQcyB0YXJnZXRlZCBmb3IgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGF0IGRpcmVjdG9yeSB1c2luZyBzY3JpcHRzIG9yIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIG1lY2hhbmlzbQorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXIpLgorICAgICAgICAgICAgICAgICAgICAgICAgU3VjaCBjb25zaWRlcmF0aW9ucyBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWxlYXNlZC1ic3AtcmVjb21tZW5kYXRpb25zJz4KKyAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZWNvbW1lbmRhdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSByZWNvbW1lbmRhdGlvbnMgZm9yIHJlbGVhc2VkIEJTUHMgdGhhdAorICAgICAgICAgICAgY29uZm9ybSB0byB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdGFibGUgSW1hZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VkIEJTUHMgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgYm9vdGFibGUKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRpbmcgYm9vdGFibGUgaW1hZ2VzIGFsbG93cyB1c2VycyB0byBlYXNpbHkKKyAgICAgICAgICAgICAgICAgICAgdHJ5IG91dCB0aGUgQlNQIHVzaW5nIHRoZWlyIG93biBoYXJkd2FyZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIGNvbnZlbmllbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gaW5jbHVkZSBhIGJvb3RhYmxlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IG1pZ2h0IHdhbnQgdG8gbWFrZSB0d28gdmVyc2lvbnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIEJTUCBhdmFpbGFibGU6IG9uZSB0aGF0IGNvbnRhaW5zIGJpbmFyeSBpbWFnZXMsIGFuZAorICAgICAgICAgICAgICAgICAgICBvbmUgdGhhdCBkb2VzIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBjb250YWluIGJvb3RhYmxlIGltYWdlcworICAgICAgICAgICAgICAgICAgICBhdm9pZHMgdW5uZWNlc3NhcnkgZG93bmxvYWQgdGltZXMgZm9yIHVzZXJzIG5vdAorICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZSBpbWFnZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBuZWVkIHRvIGRpc3RyaWJ1dGUgYSBCU1AgYW5kIGluY2x1ZGUKKyAgICAgICAgICAgICAgICAgICAgYm9vdGFibGUgaW1hZ2VzIG9yIGJ1aWxkIGtlcm5lbCBhbmQgZmlsZXN5c3RlbXMKKyAgICAgICAgICAgICAgICAgICAgbWVhbnQgdG8gYWxsb3cgdXNlcnMgdG8gYm9vdCB0aGUgQlNQIGZvciBldmFsdWF0aW9uCisgICAgICAgICAgICAgICAgICAgIHB1cnBvc2VzLCB5b3Ugc2hvdWxkIHB1dCB0aGUgaW1hZ2VzIGFuZCBhcnRpZmFjdHMKKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmFyeS88L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gaW5jbHVkZSBhIGJvb3RhYmxlIGltYWdlIGFzIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBCU1AgYW5kIHRoZSBpbWFnZSB3YXMgYnVpbHQgYnkgc29mdHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyZWQgYnkgdGhlIEdQTCBvciBvdGhlciBvcGVuIHNvdXJjZSBsaWNlbnNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gdW5kZXJzdGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1lZXQgYWxsIGxpY2Vuc2luZyByZXF1aXJlbWVudHMsIHdoaWNoIGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGRpc3RyaWJ1dGlvbiBvZiBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIGEgWW9jdG8gTGludXggS2VybmVsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEtlcm5lbCByZWNpcGVzIGluIHRoZSBCU1Agc2hvdWxkIGJlIGJhc2VkIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBCYXNpbmcgeW91ciByZWNpcGVzIG9uIHRoZXNlIGtlcm5lbHMgcmVkdWNlcworICAgICAgICAgICAgICAgICAgICB0aGUgY29zdHMgZm9yIG1haW50YWluaW5nIHRoZSBCU1AgYW5kIGluY3JlYXNlcworICAgICAgICAgICAgICAgICAgICBpdHMgc2NhbGFiaWxpdHkuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPllvY3RvIExpbnV4IEtlcm5lbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlc2Uga2VybmVscy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLWEtcmVjaXBlLWZvci1hLWJzcCc+CisgICAgPHRpdGxlPkN1c3RvbWl6aW5nIGEgUmVjaXBlIGZvciBhIEJTUDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IHBsYW4gb24gY3VzdG9taXppbmcgYSByZWNpcGUgZm9yIGEgcGFydGljdWxhciBCU1AsCisgICAgICAgIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgICAgIHRoZSBtb2RpZmllZCByZWNpcGUuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIGFwcGVuZCBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEVuc3VyZSB5b3VyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIEJTUCBsYXllcgorICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydHMgeW91ciBtYWNoaW5lIGlzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBmaW5kIGl0LgorICAgICAgICAgICAgICAgIFNlZSB0aGUgZXhhbXBsZSBsYXRlciBpbiB0aGlzIHNlY3Rpb24gZm9yIG1vcmUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQdXQgdGhlIGFwcGVuZCBmaWxlIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcworICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgbmFtZSBhbmQgaXMgbG9jYXRlZCBpbiBhbiBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgIHN1Yi1kaXJlY3RvcnkgaW5zaWRlIHRoZSBCU1AgbGF5ZXIgKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ncmFwaGljczwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQbGFjZSB0aGUgQlNQLXNwZWNpZmljIGZpbGVzIGluIHRoZSBwcm9wZXIKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW5zaWRlIHRoZSBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgSG93IGV4cGFuc2l2ZSB0aGUgbGF5ZXIgaXMgYWZmZWN0cyB3aGVyZSB5b3UgbXVzdAorICAgICAgICAgICAgICAgIHBsYWNlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGxheWVyIHN1cHBvcnRzIHNldmVyYWwKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgbWFjaGluZSB0eXBlcywgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyCisgICAgICAgICAgICAgICAgbGF5ZXIncyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluY2x1ZGVzIGhpZXJhcmNoeQorICAgICAgICAgICAgICAgIHRoYXQgc2VwYXJhdGVzIHRoZSBmaWxlcyBhY2NvcmRpbmcgdG8gbWFjaGluZS4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGxheWVyIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgbWFjaGluZXMsCisgICAgICAgICAgICAgICAgdGhlIGxheWVyIHdvdWxkIG5vdCBoYXZlIHRoYXQgYWRkaXRpb25hbCBoaWVyYXJjaHkKKyAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIHdvdWxkIG9idmlvdXNseSBub3QgYmUgYWJsZSB0byByZXNpZGUKKyAgICAgICAgICAgICAgICBpbiBhIG1hY2hpbmUtc3BlY2lmaWMgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93aW5nIGlzIGEgc3BlY2lmaWMgZXhhbXBsZSB0byBoZWxwIHlvdSBiZXR0ZXIgdW5kZXJzdGFuZAorICAgICAgICB0aGUgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBleGFtcGxlIGN1c3RvbWl6ZXMgY3VzdG9taXplcyBhIHJlY2lwZSBieSBhZGRpbmcgYQorICAgICAgICBCU1Atc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCisgICAgICAgIDxmaWxlbmFtZT5pbnRlcmZhY2VzPC9maWxlbmFtZT4gdG8gdGhlCisgICAgICAgIDxmaWxlbmFtZT5pbml0LWlmdXBkb3duXzEuMC5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbWFjaGluZQorICAgICAgICAieHl6IiB3aGVyZSB0aGUgQlNQIGxheWVyIGFsc28gc3VwcG9ydHMgc2V2ZXJhbCBvdGhlcgorICAgICAgICBtYWNoaW5lczoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEVkaXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHNvIHRoYXQgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIGFwcGVuZCBmaWxlIG5lZWRzIHRvIGJlIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIENyZWF0ZSBhbmQgcGxhY2UgdGhlIG5ldworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlcmZhY2VzPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGluCisgICAgICAgICAgICAgICAgdGhlIEJTUCdzIGxheWVyIGhlcmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9maWxlcy94eXotbWFjaGluZS1vbmUvaW50ZXJmYWNlcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5tZXRhLXh5ejwvZmlsZW5hbWU+IGxheWVyIGRpZAorICAgICAgICAgICAgICAgICAgICBub3Qgc3VwcG9ydCBtdWx0aXBsZSBtYWNoaW5lcywgeW91IHdvdWxkIHBsYWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aW50ZXJmYWNlczwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgbGF5ZXIgaGVyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9maWxlcy9pbnRlcmZhY2VzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgYXBwZW5kIGZpbGVzIGV4dGVuZHMgdGhlIHNlYXJjaCBwYXRoCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIGZpbmQgZmlsZXMgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGZvciB0aGlzIGV4YW1wbGUgeW91IG5lZWQgdG8gaGF2ZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBsb2NhdGlvbiBhcyB5b3VyIGFwcGVuZCBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nYnNwLWxpY2Vuc2luZy1jb25zaWRlcmF0aW9ucyc+CisgICAgPHRpdGxlPkJTUCBMaWNlbnNpbmcgQ29uc2lkZXJhdGlvbnM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIHNvbWUgY2FzZXMsIGEgQlNQIGNvbnRhaW5zIHNlcGFyYXRlbHktbGljZW5zZWQKKyAgICAgICAgSW50ZWxsZWN0dWFsIFByb3BlcnR5IChJUCkgZm9yIGEgY29tcG9uZW50IG9yIGNvbXBvbmVudHMuCisgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGFyZSByZXF1aXJlZCB0byBhY2NlcHQgdGhlIHRlcm1zCisgICAgICAgIG9mIGEgY29tbWVyY2lhbCBvciBvdGhlciB0eXBlIG9mIGxpY2Vuc2UgdGhhdCByZXF1aXJlcworICAgICAgICBzb21lIGtpbmQgb2YgZXhwbGljaXQgRW5kIFVzZXIgTGljZW5zZSBBZ3JlZW1lbnQgKEVVTEEpLgorICAgICAgICBPbmNlIHlvdSBhY2NlcHQgdGhlIGxpY2Vuc2UsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgIGNhbiB0aGVuIGJ1aWxkIGFuZCBpbmNsdWRlIHRoZSBjb3JyZXNwb25kaW5nIGNvbXBvbmVudAorICAgICAgICBpbiB0aGUgZmluYWwgQlNQIGltYWdlLgorICAgICAgICBJZiB0aGUgQlNQIGlzIGF2YWlsYWJsZSBhcyBhIHByZS1idWlsdCBpbWFnZSwgeW91IGNhbgorICAgICAgICBkb3dubG9hZCB0aGUgaW1hZ2UgYWZ0ZXIgYWdyZWVpbmcgdG8gdGhlIGxpY2Vuc2Ugb3IgRVVMQS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNvdWxkIGZpbmQgdGhhdCBzb21lIHNlcGFyYXRlbHktbGljZW5zZWQgY29tcG9uZW50cworICAgICAgICB0aGF0IGFyZSBlc3NlbnRpYWwgZm9yIG5vcm1hbCBvcGVyYXRpb24gb2YgdGhlIHN5c3RlbSBtaWdodAorICAgICAgICBub3QgaGF2ZSBhbiB1bmVuY3VtYmVyZWQgKG9yIGZyZWUpIHN1YnN0aXR1dGUuCisgICAgICAgIFdpdGhvdXQgdGhlc2UgZXNzZW50aWFsIGNvbXBvbmVudHMsIHRoZSBzeXN0ZW0gd291bGQgYmUKKyAgICAgICAgbm9uLWZ1bmN0aW9uYWwuCisgICAgICAgIFRoZW4gYWdhaW4sIHlvdSBtaWdodCBmaW5kIHRoYXQgb3RoZXIgbGljZW5zZWQgY29tcG9uZW50cworICAgICAgICB0aGF0IGFyZSBzaW1wbHkgJ2dvb2QtdG8taGF2ZScgb3IgcHVyZWx5IGVsZWN0aXZlIGRvIGhhdmUKKyAgICAgICAgYW4gdW5lbmN1bWJlcmVkLCBmcmVlIHJlcGxhY2VtZW50IGNvbXBvbmVudCB0aGF0IHlvdSBjYW4KKyAgICAgICAgdXNlIHJhdGhlciB0aGFuIGFncmVlaW5nIHRvIHRoZSBzZXBhcmF0ZWx5LWxpY2Vuc2VkCisgICAgICAgIGNvbXBvbmVudC4KKyAgICAgICAgRXZlbiBmb3IgY29tcG9uZW50cyBlc3NlbnRpYWwgdG8gdGhlIHN5c3RlbSwgeW91IG1pZ2h0CisgICAgICAgIGZpbmQgYW4gdW5lbmN1bWJlcmVkIGNvbXBvbmVudCB0aGF0IGlzIG5vdCBpZGVudGljYWwgYnV0CisgICAgICAgIHdpbGwgd29yayBhcyBhIGxlc3MtY2FwYWJsZSB2ZXJzaW9uIG9mIHRoZSBsaWNlbnNlZCB2ZXJzaW9uCisgICAgICAgIGluIHRoZSBCU1AgcmVjaXBlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgY2FzZXMgd2hlcmUgeW91IGNhbiBzdWJzdGl0dXRlIGEgZnJlZSBjb21wb25lbnQgYW5kCisgICAgICAgIHN0aWxsIG1haW50YWluIHRoZSBzeXN0ZW0ncyBmdW5jdGlvbmFsaXR5LCB0aGUgIkRPV05MT0FEUyIKKyAgICAgICAgc2VsZWN0aW9uIGZyb20gdGhlICJTT0ZUV0FSRSIgdGFiIG9uIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPgorICAgICAgICBtYWtlcyBhdmFpbGFibGUgZGUtZmVhdHVyZWQgQlNQcyB0aGF0IGFyZSBjb21wbGV0ZWx5IGZyZWUKKyAgICAgICAgb2YgYW55IElQIGVuY3VtYnJhbmNlcy4KKyAgICAgICAgRm9yIHRoZXNlIGNhc2VzLCB5b3UgY2FuIHVzZSB0aGUgc3Vic3RpdHV0aW9uIGRpcmVjdGx5IGFuZAorICAgICAgICB3aXRob3V0IGFueSBmdXJ0aGVyIGxpY2Vuc2luZyByZXF1aXJlbWVudHMuCisgICAgICAgIElmIHByZXNlbnQsIHRoZXNlIGZ1bGx5IGRlLWZlYXR1cmVkIEJTUHMgYXJlIG5hbWVkCisgICAgICAgIGFwcHJvcHJpYXRlbHkgZGlmZmVyZW50IGFzIGNvbXBhcmVkIHRvIHRoZSBuYW1lcyBvZiB0aGVpcgorICAgICAgICByZXNwZWN0aXZlIGVuY3VtYmVyZWQgQlNQcy4KKyAgICAgICAgSWYgYXZhaWxhYmxlLCB0aGVzZSBzdWJzdGl0dXRpb25zIGFyZSB5b3VyIHNpbXBsZXN0IGFuZAorICAgICAgICBtb3N0IHByZWZlcnJlZCBvcHRpb25zLgorICAgICAgICBPYnZpb3VzbHksIHVzZSBvZiB0aGVzZSBzdWJzdGl0dXRpb25zIGFzc3VtZXMgdGhlIHJlc3VsdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IG1lZXRzIHN5c3RlbSByZXF1aXJlbWVudHMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgSWYgaG93ZXZlciwgYSBub24tZW5jdW1iZXJlZCB2ZXJzaW9uIGlzIHVuYXZhaWxhYmxlIG9yCisgICAgICAgICAgICBpdCBwcm92aWRlcyB1bnN1aXRhYmxlIGZ1bmN0aW9uYWxpdHkgb3IgcXVhbGl0eSwgeW91IGNhbgorICAgICAgICAgICAgdXNlIGFuIGVuY3VtYmVyZWQgdmVyc2lvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIGNvdXBsZSBkaWZmZXJlbnQgbWV0aG9kcyBleGlzdCB3aXRoaW4gdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICBidWlsZCBzeXN0ZW0gdG8gc2F0aXNmeSB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4KKyAgICAgICAgZW5jdW1iZXJlZCBCU1AuCisgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlbSBpbiBvcmRlciBvZiBwcmVmZXJlbmNlOgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHUyc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgVmFyaWFibGUgdG8gRGVmaW5lIHRoZSBSZWNpcGVzIHRoYXQgSGF2ZSBDb21tZXJjaWFsCisgICAgICAgICAgICAgICAgb3IgT3RoZXIgVHlwZXMgb2YgU3BlY2lhbGx5LUxpY2Vuc2VkIFBhY2thZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRm9yIGVhY2ggb2YgdGhvc2UgcmVjaXBlcywgeW91IGNhbiBzcGVjaWZ5IGEKKyAgICAgICAgICAgICAgICBtYXRjaGluZyBsaWNlbnNlIHN0cmluZyBpbiBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiB2YXJpYWJsZSBuYW1lZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFX0ZMQUdTX1dISVRFTElTVCc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIHRoZSBtYXRjaGluZyBsaWNlbnNlIHN0cmluZyBzaWduaWZpZXMKKyAgICAgICAgICAgICAgICB0aGF0IHlvdSBhZ3JlZSB0byB0aGUgbGljZW5zZS4KKyAgICAgICAgICAgICAgICBUaHVzLCB0aGUgYnVpbGQgc3lzdGVtIGNhbiBidWlsZCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQgaW5jbHVkZSB0aGUgY29tcG9uZW50IGluIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLWNvbW1lcmNpYWxseS1saWNlbnNlZC1yZWNpcGVzJz5FbmFibGluZyBDb21tZXJjaWFsbHkgTGljZW5zZWQgUmVjaXBlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICBNYW51YWwgZm9yIGRldGFpbHMgb24gaG93IHRvIHVzZSB0aGVzZSB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGJ1aWxkIGFzIHlvdSBub3JtYWxseSB3b3VsZCwgd2l0aG91dAorCSAgICAgICAgc3BlY2lmeWluZyBhbnkgcmVjaXBlcyBpbiB0aGUKKwkgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBzdG9wcyBhbmQgcHJvdmlkZXMgeW91IHdpdGggdGhlIGxpc3Qgb2YgcmVjaXBlcworICAgICAgICAgICAgICAgIHRoYXQgeW91IGhhdmUgdHJpZWQgdG8gaW5jbHVkZSBpbiB0aGUgaW1hZ2UgdGhhdAorICAgICAgICAgICAgICAgIG5lZWQgZW50cmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBlbnRlciB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBpbnRvCisgICAgICAgICAgICAgICAgdGhlIHdoaXRlbGlzdCwgcmVzdGFydCB0aGUgYnVpbGQgdG8gY29udGludWUgd2hlcmUKKyAgICAgICAgICAgICAgICBpdCBsZWZ0IG9mZi4KKwkgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHRoZSBwcm9tcHQgd2lsbCBub3QgYXBwZWFyIGFnYWluCisJICAgICAgICBzaW5jZSB5b3UgaGF2ZSBzYXRpc2ZpZWQgdGhlIHJlcXVpcmVtZW50LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgdGhlIGFwcHJvcHJpYXRlIGxpY2Vuc2UgZmxhZ3MgYXJlIG9uIHRoZQorICAgICAgICAgICAgICAgIHdoaXRlIGxpc3QgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4gdmFyaWFibGUsCisgICAgICAgICAgICAgICAgeW91IGNhbiBidWlsZCB0aGUgZW5jdW1iZXJlZCBpbWFnZSB3aXRoIG5vIGNoYW5nZQorICAgICAgICAgICAgICAgIGF0IGFsbCB0byB0aGUgbm9ybWFsIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdldCBhIFByZS1CdWlsdCBWZXJzaW9uIG9mIHRoZSBCU1A6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCB0aGlzIHR5cGUgb2YgQlNQIGJ5IHNlbGVjdGluZyB0aGUKKyAgICAgICAgICAgICAgICAiRE9XTkxPQURTIiBpdGVtIGZyb20gdGhlICJTT0ZUV0FSRSIgdGFiIG9uIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3Qgd2Vic2l0ZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZG93bmxvYWQgQlNQIHRhcmJhbGxzIHRoYXQgY29udGFpbgorICAgICAgICAgICAgICAgIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgYWZ0ZXIgYWdyZWVpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgbGljZW5zaW5nIHJlcXVpcmVtZW50cyBvZiBlYWNoIG9mIHRoZSBpbmRpdmlkdWFsbHkKKyAgICAgICAgICAgICAgICBlbmN1bWJlcmVkIHBhY2thZ2VzIGFzIHBhcnQgb2YgdGhlIGRvd25sb2FkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgT2J0YWluaW5nIHRoZSBCU1AgdGhpcyB3YXkgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYW4KKyAgICAgICAgICAgICAgICBlbmN1bWJlcmVkIGltYWdlIGltbWVkaWF0ZWx5IGFmdGVyIGFncmVlaW5nIHRvIHRoZQorICAgICAgICAgICAgICAgIGNsaWNrLXRocm91Z2ggbGljZW5zZSBhZ3JlZW1lbnRzIHByZXNlbnRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICB3ZWJzaXRlLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBpbWFnZSB5b3Vyc2VsZiB1c2luZworICAgICAgICAgICAgICAgIHRoZSByZWNpcGVzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIEJTUCB0YXJiYWxsLAorICAgICAgICAgICAgICAgIHlvdSB3aWxsIHN0aWxsIG5lZWQgdG8gY3JlYXRlIGFuIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgZW5jdW1iZXJlZCByZWNpcGVzIGluIHRoZSBCU1AuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgUHJlLWNvbXBpbGVkIGltYWdlcyBhcmUgYnVuZGxlZCB3aXRoIGEgdGltZS1saW1pdGVkCisgICAgICAgICAgICBrZXJuZWwgdGhhdCBydW5zIGZvciBhIHByZWRldGVybWluZWQgYW1vdW50IG9mIHRpbWUKKyAgICAgICAgICAgICgxMCBkYXlzKSBiZWZvcmUgaXQgZm9yY2VzIHRoZSBzeXN0ZW0gdG8gcmVib290LgorICAgICAgICAgICAgVGhpcyBsaW1pdGF0aW9uIGlzIG1lYW50IHRvIGRpc2NvdXJhZ2UgZGlyZWN0CisgICAgICAgICAgICByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICBZb3UgbXVzdCBldmVudHVhbGx5IHJlYnVpbGQgdGhlIGltYWdlIGlmIHlvdSB3YW50CisgICAgICAgICAgICB0byByZW1vdmUgdGhpcyByZXN0cmljdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz4KKyAgICA8dGl0bGU+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgIGF1dG9tYXRlcyBjcmVhdGluZyBhIEJTUCBsYXllci4KKyAgICAgICAgV2hhdCBtYWtlcyBhIGxheWVyIGEgIkJTUCBsYXllciIgaXMgdGhlIHByZXNlbmNlIG9mIGF0IGxlYXN0IG9uZSBtYWNoaW5lCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhIEJTUCBsYXllciB1c3VhbGx5IGhhcyBhIGtlcm5lbCByZWNpcGUKKyAgICAgICAgb3IgYW4gYXBwZW5kIGZpbGUgdGhhdCBsZXZlcmFnZXMgb2ZmIGFuIGV4aXN0aW5nIGtlcm5lbCByZWNpcGUuCisgICAgICAgIFRoZSBwcmltYXJ5IHJlcXVpcmVtZW50LCBob3dldmVyLCBpcyB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGEgQlNQIGxheWVyOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBHZW5lcmFsIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLWxheWVyPC9maWxlbmFtZT4gc3ViY29tbWFuZCB0byBjcmVhdGUgYQorICAgICAgICAgICAgICAgIG5ldyBnZW5lcmFsIGxheWVyLgorICAgICAgICAgICAgICAgIEZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGNyZWF0ZSBhIGdlbmVyYWwgbGF5ZXIgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMYXllciBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBFdmVyeSBsYXllciBuZWVkcyBhIGxheWVyIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBlc3RhYmxpc2hlcyBsb2NhdGlvbnMgZm9yIHRoZQorICAgICAgICAgICAgICAgIGxheWVyJ3MgcmVjaXBlcywgcHJpb3JpdGllcyBmb3IgdGhlIGxheWVyLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGV4YW1wbGVzIG9mIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIFRvIGdldCBleGFtcGxlcyBvZiB3aGF0IHlvdSBuZWVkIGluIHlvdXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUsIGxvY2F0ZSBhIGxheWVyIChlLmcuICJtZXRhLXRpIikgYW5kIGV4YW1pbmUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS10aS90cmVlL2NvbmYvbGF5ZXIuY29uZic+PC91bGluaz4KKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBNYWNoaW5lIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENyZWF0ZSBhIDxmaWxlbmFtZT5jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIFNlZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUnPjxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZm9yIHNhbXBsZQorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIE90aGVyIHNhbXBsZXMgc3VjaCBhcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL21ldGEtdGkvdHJlZS9jb25mL21hY2hpbmUnPjxmaWxlbmFtZT5tZXRhLXRpPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL21ldGEtZnJlZXNjYWxlL3RyZWUvY29uZi9tYWNoaW5lJz48ZmlsZW5hbWU+bWV0YS1mcmVlc2NhbGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXhpc3QgZnJvbSBvdGhlciB2ZW5kb3JzIHRoYXQgaGF2ZSBtb3JlIHNwZWNpZmljIG1hY2hpbmUKKyAgICAgICAgICAgICAgICBhbmQgdHVuaW5nIGV4YW1wbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBLZXJuZWwgUmVjaXBlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEga2VybmVsIHJlY2lwZSBpbiA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGJ5IGVpdGhlciB1c2luZyBhIGtlcm5lbCBhcHBlbmQgZmlsZSBvciBhIG5ldyBjdXN0b20ga2VybmVsCisgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGUgKGUuZy4gPGZpbGVuYW1lPnlvY3RvLWxpbnV4XzQuMTIuYmI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgVGhlIEJTUCBsYXllcnMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBzdGVwIGFsc28gY29udGFpbiBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICBrZXJuZWwgZXhhbXBsZXMuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjbW9kaWZ5aW5nLWFuLWV4aXN0aW5nLXJlY2lwZSc+TW9kaWZ5aW5nIGFuIEV4aXN0aW5nIFJlY2lwZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbAorICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGEgY3VzdG9tIGtlcm5lbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgZGVzY3JpcHRpb24gb2YKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgcmVmZXJlbmNlIEJTUCBmb3IgQmVhZ2xlYm9uZSwgd2hpY2gKKyAgICAgICAgcmVzaWRlcyBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwJz48ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGxheWVyLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdic3AtbGF5ZXItY29uZmlndXJhdGlvbi1leGFtcGxlJz4KKyAgICAgICAgPHRpdGxlPkJTUCBMYXllciBDb25maWd1cmF0aW9uIEV4YW1wbGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGxheWVyJ3MgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgIGNvbnRhaW5zIHRoZSA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGlzIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYWRkIHRvIEJCUEFUSAorICAgICBCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworICAgICAjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUworICAgICBCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiIFwKKyAgICAgICAgICAgICAgICAgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKKworICAgICBCQkZJTEVfQ09MTEVDVElPTlMgKz0gInlvY3RvYnNwIgorICAgICBCQkZJTEVfUEFUVEVSTl95b2N0b2JzcCA9ICJeJHtMQVlFUkRJUn0vIgorICAgICBCQkZJTEVfUFJJT1JJVFlfeW9jdG9ic3AgPSAiNSIKKyAgICAgTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjQiCisgICAgIExBWUVSU0VSSUVTX0NPTVBBVF95b2N0b2JzcCA9ICImRElTVFJPX05BTUVfTk9fQ0FQOyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGlzIGZpbGUgY29uZmlndXJlIHRoZQorICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICBBIGdvb2Qgd2F5IHRvIGxlYXJuIGFib3V0IGxheWVyIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGZpbGVzIGlzIHRvIGV4YW1pbmUgdmFyaW91cyBmaWxlcyBmb3IgQlNQIGZyb20KKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoaXMgcGFydGljdWxhcgorICAgICAgICAgICAgbGF5ZXIgY29uZmlndXJhdGlvbiBmaWxlLCBzZWUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbGF5ZXItY29uZmlnLWZpbGUtZGVzY3JpcHRpb24nPnN0ZXAgMzwvdWxpbms+CisgICAgICAgICAgICBpbiB0aGUgZGlzY3Vzc2lvbiB0aGF0IGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlCisgICAgICAgICAgICBsYXllcnMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JzcC1tYWNoaW5lLWNvbmZpZ3VyYXRpb24tZXhhbXBsZSc+CisgICAgICAgIDx0aXRsZT5CU1AgTWFjaGluZSBDb25maWd1cmF0aW9uIEV4YW1wbGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIgaW4gdGhpcyBzZWN0aW9uLCB0aGUgZXhpc3RlbmNlCisgICAgICAgICAgICBvZiBhIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHdoYXQgbWFrZXMgYQorICAgICAgICAgICAgbGF5ZXIgYSBCU1AgbGF5ZXIgYXMgY29tcGFyZWQgdG8gYSBnZW5lcmFsIG9yCisgICAgICAgICAgICBrZXJuZWwgbGF5ZXIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBvciBtb3JlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBleGlzdCBpbiB0aGUKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIGxheWVyOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lMTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmUzPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAuLi4gbW9yZSAuLi4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ib25lJz5CZWFnbGVCb25lIGFuZCBCZWFnbGVCb25lIEJsYWNrIGRldmVsb3BtZW50IGJvYXJkczwvdWxpbms+CisgICAgICAgICAgICBpcyBsb2NhdGVkIGluIHRoZSBsYXllcgorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGFuZCBpcyBuYW1lZCA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS15b2N0by5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICNAVFlQRTogTWFjaGluZQorICAgICAjQE5BTUU6IEJlYWdsZWJvbmUteW9jdG8gbWFjaGluZQorICAgICAjQERFU0NSSVBUSU9OOiBSZWZlcmVuY2UgbWFjaGluZSBjb25maWd1cmF0aW9uIGZvciBodHRwOi8vYmVhZ2xlYm9hcmQub3JnL2JvbmUgYW5kIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYmxhY2sgYm9hcmRzCisKKyAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgorICAgICBYU0VSVkVSID89ICJ4c2VydmVyLXhvcmcgXAorICAgICAgICAgICAgICAgIHhmODYtdmlkZW8tbW9kZXNldHRpbmcgXAorICAgICAgICAgICAgICAgICIKKworICAgICBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGVzIGtlcm5lbC1kZXZpY2V0cmVlIgorCisgICAgIEVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgorCisgICAgIERFRkFVTFRUVU5FID89ICJjb3J0ZXhhOGhmLW5lb24iCisgICAgIGluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhOC5pbmMKKworICAgICBJTUFHRV9GU1RZUEVTICs9ICJ0YXIuYnoyIGpmZnMyIHdpYyB3aWMuYm1hcCIKKyAgICAgRVhUUkFfSU1BR0VDTURfamZmczIgPSAiLWxucCAiCisgICAgIFdLU19GSUxFID89ICJiZWFnbGVib25lLXlvY3RvLndrcyIKKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGtlcm5lbC1kZXZpY2V0cmVlIGtlcm5lbC1pbWFnZS16aW1hZ2UiCisgICAgIGRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAibXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKKyAgICAgU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eU8wIgorICAgICBTRVJJQUxfQ09OU09MRVNfQ0hFQ0sgPSAiJHtTRVJJQUxfQ09OU09MRVN9IgorCisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjAlIgorCisgICAgIEtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgorICAgICBLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCisgICAgIEtFUk5FTF9FWFRSQV9BUkdTICs9ICJMT0FEQUREUj0ke1VCT09UX0VOVFJZUE9JTlR9IgorCisgICAgIFNQTF9CSU5BUlkgPSAiTUxPIgorICAgICBVQk9PVF9TVUZGSVggPSAiaW1nIgorICAgICBVQk9PVF9NQUNISU5FID0gImFtMzM1eF9ldm1fZGVmY29uZmlnIgorICAgICBVQk9PVF9FTlRSWVBPSU5UID0gIjB4ODAwMDgwMDAiCisgICAgIFVCT09UX0xPQURBRERSRVNTID0gIjB4ODAwMDgwMDAiCisKKyAgICAgTUFDSElORV9GRUFUVVJFUyA9ICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiCisKKyAgICAgSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LiR7VUJPT1RfU1VGRklYfSBNTE8gekltYWdlIGFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSB2YXJpYWJsZXMgdXNlZCB0byBjb25maWd1cmUgdGhlIG1hY2hpbmUgZGVmaW5lCisgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHByb3BlcnRpZXM7CisgICAgICAgICAgICBmb3IgZXhhbXBsZSwgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMsIG1hY2hpbmUKKyAgICAgICAgICAgIHR1bmluZ3MsIHRoZSB0eXBlIG9mIGtlcm5lbCB0byBidWlsZCwgYW5kCisgICAgICAgICAgICBVLUJvb3QgY29uZmlndXJhdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBzb21lIGV4cGxhbmF0aW9uCisgICAgICAgICAgICBmb3IgdGhlIHN0YXRlbWVudHMgZm91bmQgaW4gdGhlIGV4YW1wbGUgcmVmZXJlbmNlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEJlYWdsZUJvbmUKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkcy4KKyAgICAgICAgICAgIFJlYWxpemUgdGhhdCBtdWNoIG1vcmUgY2FuIGJlIGRlZmluZWQgYXMgcGFydCBvZgorICAgICAgICAgICAgYSBtYWNoaW5lJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgSW4gZ2VuZXJhbCwgeW91IGNhbiBsZWFybiBhYm91dCByZWxhdGVkIHZhcmlhYmxlcworICAgICAgICAgICAgdGhhdCB0aGlzIGV4YW1wbGUgZG9lcyBub3QgaGF2ZSBieSBsb2NhdGluZyB0aGUKKyAgICAgICAgICAgIHZhcmlhYmxlcyBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdmFyaWFibGVzLWdsb3MnPllvY3RvIFByb2plY3QgVmFyaWFibGVzIEdsb3NzYXJ5PC91bGluaz4iCisgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSB0aGF0IHByb3ZpZGVzICJ2aXJ0dWFsL3hzZXJ2ZXIiIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgbW9yZSB0aGFuIG9uZSBwcm92aWRlciBpcyBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgcmVjaXBlIHRoYXQgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgInZpcnR1YWwveHNlcnZlciIgaXMgInhzZXJ2ZXIteG9yZyIsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVhTRVJWRVInPjxmaWxlbmFtZT5YU0VSVkVSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB0byBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgIGFuIFggc2VydmVyIGFuZCBkcml2ZXJzIGZvciB0aGUgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgInhzZXJ2ZXIteG9yZyIgYW5kCisgICAgICAgICAgICAgICAgICAgICJ4Zjg2LXZpZGVvLW1vZGVzZXR0aW5nIiBhcmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTJz48ZmlsZW5hbWU+TUFDSElORV9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBtYWNoaW5lLWRlcGVuZGVudCBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBub3QgZXNzZW50aWFsIGZvciBib290aW5nIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJ1aWxkIGRvZXMgbm90IGZhaWwgaWYgdGhlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHBhY2thZ2VzIGFyZSByZXF1aXJlZCBmb3IgYQorICAgICAgICAgICAgICAgICAgICBmdWxseS1mZWF0dXJlZCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBNYW55IDxmaWxlbmFtZT5NQUNISU5FKjwvZmlsZW5hbWU+IHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgdGhhdCBoZWxwIHlvdSBjb25maWd1cmUgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgICAgICAgICBwaWVjZSBvZiBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRURFUEVORFMnPjxmaWxlbmFtZT5FWFRSQV9JTUFHRURFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRvIGJ1aWxkIHRoYXQgZG8gbm90IHByb3ZpZGUgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGluc3RhbGxpbmcgaW50byB0aGUgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGJ1dCBidWlsZGluZyB0aGUgaW1hZ2UgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGEgcmVjaXBlIGlzIHJlcXVpcmVkIHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCBpbWFnZSBidXQgaXMgbm90IG5lZWRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBVLUJvb3QgcmVjaXBlIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVGQVVMVFRVTkUnPjxmaWxlbmFtZT5ERUZBVUxUVFVORTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVzIHVzZSB0dW5pbmdzIHRvIG9wdGltaXplIG1hY2hpbmUsCisgICAgICAgICAgICAgICAgICAgIENQVSwgYW5kIGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmZWF0dXJlcywgd2hpY2ggYXJlIGNvbGxlY3RpdmVseSBrbm93bgorICAgICAgICAgICAgICAgICAgICBhcyAidHVuaW5nIGZlYXR1cmVzIiwgZXhpc3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29lLWNvcmUnPk9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGxheWVyIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIGRlZmF1bHQgdHVubmluZyBmaWxlIGlzCisgICAgICAgICAgICAgICAgICAgICJjb3J0ZXhhOGhmLW5lb24iLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IHN0YXRlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBwdWxscyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE4LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHByb3ZpZGVzIG1hbnkgdHVuaW5nIHBvc3NpYmlsaXRpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9ybWF0cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1c2VzIGR1cmluZyB0aGUgYnVpbGQgd2hlbiBjcmVhdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIGZvdXIgdHlwZXMgb2YgaW1hZ2VzIGFyZQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX0lNQUdFQ01EJz48ZmlsZW5hbWU+RVhUUkFfSU1BR0VDTUQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciBpbWFnZQorICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgIi1sbnAgIiBvcHRpb24gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGNyZWF0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KRkZTMic+SkZGUzI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV0tTX0ZJTEUnPjxmaWxlbmFtZT5XS1NfRklMRTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWtpY2tzdGFydCc+V2ljIGtpY2tzdGFydDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0bworICAgICAgICAgICAgICAgICAgICBjcmVhdGUgYSBwYXJ0aXRpb25lZCBpbWFnZSAoaW1hZ2Uud2ljKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgcGFja2FnZXMgdG8gaW5zdGFsbCBpbnRvIGFuIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHVzZSB0aGUgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW1hZ2Vfd2ljW2RlcGVuZHNdPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEEgdGFzayB0aGF0IGlzIGNvbnN0cnVjdGVkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIHRhc2sgZGVwZW5kcyBvbiBzcGVjaWZpYyB0b29scworICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBjcmVhdGUgdGhlIHN5c3Jvb3Qgd2hlbiBidWlkaW5nIGEgV2ljCisgICAgICAgICAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRVMnPjxmaWxlbmFtZT5TRVJJQUxfQ09OU09MRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIGdldHR5LgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBiYXVkIHJhdGUgaXMgIjExNTIwMCIgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICBkZXZpY2UgbmFtZSBpcyAidHR5TzAiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWw8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHJlY2lwZSB0aGF0IHByb3ZpZGVzCisgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsL2tlcm5lbCIgd2hlbiBtb3JlIHRoYW4gb25lIHByb3ZpZGVyCisgICAgICAgICAgICAgICAgICAgIGlzIGZvdW5kLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSByZWNpcGUgdGhhdCBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICAidmlydHVhbC9rZXJuZWwiIGlzICJsaW51eC15b2N0byIsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiB0aGUgbGF5ZXIncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9WRVJTSU9OJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG88L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZAorICAgICAgICAgICAgICAgICAgICB0byBidWlsZCB0aGUga2VybmVsLCB3aGljaCBpcyAiNS4wIiBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciB0aGUgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSAiekltYWdlIiBpbWFnZSB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfREVWSUNFVFJFRSc+PGZpbGVuYW1lPktFUk5FTF9ERVZJQ0VUUkVFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWVzIG9mIHRoZSBnZW5lcmF0ZWQgTGludXgga2VybmVsIGRldmljZQorICAgICAgICAgICAgICAgICAgICB0cmVlcyAoaS5lLiB0aGUgPGZpbGVuYW1lPiouZHRiPC9maWxlbmFtZT4pIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBBbGwgdGhlIGRldmljZSB0cmVlcyBmb3IgdGhlIHZhcmlvdXMgQmVhZ2xlQm9uZQorICAgICAgICAgICAgICAgICAgICBkZXZpY2VzIGFyZSBpbmNsdWRlZC4KKzwhLS0KKyAgICAgICAgICAgICAgICAgICAgWW91IGhhdmUgdG8gaW5jbHVkZSBzb21lICouaW5jIGZpbGVzIGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiBvZiBLRVJORUxfREVWSUNFVFJFRS4KKyAgICAgICAgICAgICAgICAgICAgSSBkb24ndCBzZWUgd2hlcmUgdGhlc2UgYXJlIGJlaW5nIHByb3ZpZGVkLgorLS0+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9FWFRSQV9BUkdTJz48ZmlsZW5hbWU+S0VSTkVMX0VYVFJBX0FSR1M8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBwYXNzZXMgb24gd2hlbiBjb21waWxpbmcgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCAiTE9BREFERFI9JHtVQk9PVF9FTlRSWVBPSU5UfSIKKyAgICAgICAgICAgICAgICAgICAgaXMgcGFzc2VkIGFzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUExfQklOQVJZJz48ZmlsZW5hbWU+U1BMX0JJTkFSWTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIFNlY29uZGFyeSBQcm9ncmFtIExvYWRlciAoU1BMKSBiaW5hcnkKKyAgICAgICAgICAgICAgICAgICAgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgU1BMIGJpbmFyeSBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgIk1MTyIsIHdoaWNoIHN0YW5kcyBmb3IgTXVsdGltZWRpYSBjYXJkIExPYWRlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBCZWFnbGVCb25lIGRldmVsb3BtZW50IGJvYXJkIHJlcXVpcmVzIGFuCisgICAgICAgICAgICAgICAgICAgIFNQTCB0byBib290IGFuZCB0aGF0IFNQTCBmaWxlIHR5cGUgbXVzdCBiZSBNTE8uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBkZWZpbmUgPGZpbGVuYW1lPlNQTF9CSU5BUlk8L2ZpbGVuYW1lPiBhcyAiTUxPIi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIFNQTCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSB1c2VkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyc+PGZpbGVuYW1lPnUtYm9vdC5pbmM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfRU5UUllQT0lOVCc+PGZpbGVuYW1lPlVCT09UXyo8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHZhcmlvdXMgVS1Cb290IGNvbmZpZ3VyYXRpb25zIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBhIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCBhIFUtQm9vdCBpbWFnZSBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICB0byBib290IHRoZSBCZWFnbGVCb25lIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGZvciBtb3JlIGluZm9ybWF0aW9uOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1VQk9PVF9TVUZGSVgnPjxmaWxlbmFtZT5VQk9PVF9TVUZGSVg8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgZ2VuZXJhdGVkIFUtQm9vdCBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVVCT09UX01BQ0hJTkUnPjxmaWxlbmFtZT5VQk9PVF9NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHZhbHVlIHBhc3NlZCBvbiB0aGUgbWFrZSBjb21tYW5kIGxpbmUgd2hlbiBidWlsZGluZyBhIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfRU5UUllQT0lOVCc+PGZpbGVuYW1lPlVCT09UX0VOVFJZUE9JTlQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBVLUJvb3QgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVVCT09UX0xPQURBRERSRVNTJz48ZmlsZW5hbWU+VUJPT1RfTE9BREFERFJFU1M8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbG9hZCBhZGRyZXNzIGZvciB0aGUgVS1Cb290IGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgaGFyZHdhcmUgZmVhdHVyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgZGV2aWNlIGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgZGV2aWNlIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9CT09UX0ZJTEVTJz48ZmlsZW5hbWU+SU1BR0VfQk9PVF9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZSBkZXZpY2UncyBib290IHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICB3aGVuIHByZXBhcmluZyB0aGUgaW1hZ2UgdXNpbmcgdGhlIFdpYyB0b29sCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5ib290aW1nLXBhcnRpdGlvbjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5ib290aW1nLWVmaTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBwbHVnaW4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYnNwLWtlcm5lbC1yZWNpcGUtZXhhbXBsZSc+CisgICAgICAgIDx0aXRsZT5CU1AgS2VybmVsIFJlY2lwZSBFeGFtcGxlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBrZXJuZWwgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgZm9yIHRoZSBCZWFnbGVCb25lIGRldmljZSB3YXMgZXN0YWJsaXNoZWQgaW4gdGhlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb246CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjAlIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIGxheWVyIGNvbnRhaW5zIG1ldGFkYXRhIHVzZWQKKyAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBrZXJuZWwuCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEga2VybmVsIGFwcGVuZCBmaWxlIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNS4wLmJiYXBwZW5kPC9maWxlbmFtZT4pIGlzIHVzZWQgdG8KKyAgICAgICAgICAgIG92ZXJyaWRlIGFuIGVzdGFibGlzaGVkIGtlcm5lbCByZWNpcGUgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b181LjAuYmI8L2ZpbGVuYW1lPiksIHdoaWNoIGlzCisgICAgICAgICAgICBsb2NhdGVkIGluCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eCc+PC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyB0aGUgY29udGVudHMgb2YgdGhlIGFwcGVuZCBmaWxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLQlJBTkNIX2dlbmVyaWN4ODYgID0gInY1LjAvc3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS4wL3N0YW5kYXJkL2Jhc2UiCisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NS4wL3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCisgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4wL3N0YW5kYXJkL2JlYWdsZWJvbmUiCisKKyAgICAgS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorICAgICBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCisgICAgIEtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKKyAgICAgU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKKyAgICAgU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKKyAgICAgU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKKyAgICAgU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKKworICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgorCisgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI1LjAuMyIKKyAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuMC4zIgorICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4wLjMiCisgICAgIExJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI1LjAuMyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoaXMgcGFydGljdWxhciBhcHBlbmQgZmlsZSB3b3JrcyBmb3IgYWxsIHRoZQorICAgICAgICAgICAgbWFjaGluZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgVGhlIHJlbGV2YW50IHN0YXRlbWVudHMgYXJlIGFwcGVuZGVkIHdpdGgKKyAgICAgICAgICAgIHRoZSAiYmVhZ2xlYm9uZS15b2N0byIgc3RyaW5nLgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGVzZQorICAgICAgICAgICAgc3RhdGVtZW50cyB0byBvdmVycmlkZSBzaW1pbGFyIHN0YXRlbWVudHMKKyAgICAgICAgICAgIGluIHRoZSBrZXJuZWwgcmVjaXBlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQlJBTkNIJz48ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXMgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZWQsIGFuZCBjb25maWd1cmVkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBtYWNoaW5lIG5hbWUgYXMga25vd24gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCwgd2hpY2ggaXMgc29tZXRpbWVzIGEgZGlmZmVyZW50IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGhhbiB3aGF0IGlzIGtub3duIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVzIHRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZAorICAgICAgICAgICAgICAgICAgICB0byBidWlsZCB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTVBBVElCTEVfTUFDSElORSc+PGZpbGVuYW1lPkNPTVBBVElCTEVfTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgcmVzb2x2ZXMgdG8gb25lIG9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgdGFyZ2V0IG1hY2hpbmVzIHdpdGggd2hpY2ggdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBpcyBjb21wYXRpYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9WRVJTSU9OJz48ZmlsZW5hbWU+TElOVVhfVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCB2ZXJzaW9uIGZyb20ga2VybmVsLm9yZyB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2hpc3RvcnkucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9oaXN0b3J5LnJzdAppbmRleCBkN2NkOGVmLi5iNTIwMDZhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2hpc3RvcnkucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvaGlzdG9yeS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqCiBNYW51YWwgUmV2aXNpb24gSGlzdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9wb2t5L2RvY3VtZW50YXRpb24vY29uZi5weQppbmRleCBlYmMyNmFhLi44MGQ1ZThlIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vY29uZi5weQorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vY29uZi5weQpAQCAtMSw2ICsxLDYgQEAKICMgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgU3BoaW54IGRvY3VtZW50YXRpb24gYnVpbGRlci4KICMKLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAjCiAjIFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIGEgc2VsZWN0aW9uIG9mIHRoZSBtb3N0IGNvbW1vbiBvcHRpb25zLiBGb3IgYSBmdWxsCiAjIGxpc3Qgc2VlIHRoZSBkb2N1bWVudGF0aW9uOgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MucnN0CmluZGV4IGJlZjhiZjguLjE3OTk3OWMgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKgogQ29tbW9uIFRhc2tzCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3ZjZhYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbApAQCAtMCwwICsxLDE2MDgxIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J2V4dGVuZHBva3knPgorCis8dGl0bGU+Q29tbW9uIFRhc2tzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBmdW5kYW1lbnRhbCBwcm9jZWR1cmVzIHN1Y2ggYXMgY3JlYXRpbmcgbGF5ZXJzLAorICAgICAgICBhZGRpbmcgbmV3IHNvZnR3YXJlIHBhY2thZ2VzLCBleHRlbmRpbmcgb3IgY3VzdG9taXppbmcgaW1hZ2VzLAorICAgICAgICBwb3J0aW5nIHdvcmsgdG8gbmV3IGhhcmR3YXJlIChhZGRpbmcgYSBuZXcgbWFjaGluZSksIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgWW91IHdpbGwgZmluZCB0aGF0IHRoZSBwcm9jZWR1cmVzIGRvY3VtZW50ZWQgaGVyZSBvY2N1ciBvZnRlbiBpbiB0aGUKKyAgICAgICAgZGV2ZWxvcG1lbnQgY3ljbGUgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9InVuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyI+CisgICAgICAgIDx0aXRsZT5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc3VwcG9ydHMgb3JnYW5pemluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gaW50bworICAgICAgICAgICAgbXVsdGlwbGUgbGF5ZXJzLgorICAgICAgICAgICAgTGF5ZXJzIGFsbG93IHlvdSB0byBpc29sYXRlIGRpZmZlcmVudCB0eXBlcyBvZiBjdXN0b21pemF0aW9ucyBmcm9tCisgICAgICAgICAgICBlYWNoIG90aGVyLgorICAgICAgICAgICAgRm9yIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbCwKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz4KKyAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUgeW91ciBvd24gbGF5ZXJzIHRvIHVzZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc2hpcHMgd2l0aCB0b29scyB0aGF0IHNwZWVkIHVwIGNyZWF0aW5nCisgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHN0ZXBzIHlvdSBwZXJmb3JtIGJ5IGhhbmQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgbGF5ZXJzIHNvIHRoYXQgeW91IGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB0aGVtLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGF5ZXItY3JlYXRpb24gdG9vbHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmdXJ0aGVyIGRvd24gaW4gdGhpcyBtYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBnZW5lcmFsIHN0ZXBzIHRvIGNyZWF0ZSB5b3VyIGxheWVyIHdpdGhvdXQgdXNpbmcKKyAgICAgICAgICAgICAgICB0b29sczoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBFeGlzdGluZyBMYXllcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBjcmVhdGluZyBhIG5ldyBsYXllciwgeW91IHNob3VsZCBiZSBzdXJlIHNvbWVvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBub3QgYWxyZWFkeSBjcmVhdGVkIGEgbGF5ZXIgY29udGFpbmluZyB0aGUgTWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9sYXllcnMvJz5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGlzdCBvZiBsYXllcnMgZnJvbSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eQorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBmaW5kIGEgbGF5ZXIgdGhhdCBpcyBpZGVudGljYWwgb3IgY2xvc2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgeW91IG5lZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHlvdXIgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgdGhlIGxheWVyLCBiZSBzdXJlIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiBhbiBhcmVhIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBjbG9uZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hpbGUgbm90IHN0cmljdGx5IHJlcXVpcmVkLCBwcmVwZW5kIHRoZSBuYW1lIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIHN0cmluZyAibWV0YS0iLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtbXlsYXllcgorICAgICBtZXRhLUdVSV94eXoKKyAgICAgbWV0YS1teW1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpdGggcmFyZSBleGNlcHRpb25zLCBhIGxheWVyJ3MgbmFtZSBmb2xsb3dzIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPnJvb3RfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgdGhpcyBsYXllciBuYW1pbmcgY29udmVudGlvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmUgeW91IHRyb3VibGUgbGF0ZXIgd2hlbiB0b29scywgY29tcG9uZW50cywgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyAiYXNzdW1lIiB5b3VyIGxheWVyIG5hbWUgYmVnaW5zIHdpdGggIm1ldGEtIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgbm90YWJsZSBleGFtcGxlIGlzIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3duIGluIHRoZSBmb2xsb3dpbmcgc3RlcCB3aGVyZSBsYXllciBuYW1lcyB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIm1ldGEtIiBzdHJpbmcgYXJlIGFwcGVuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzZXZlcmFsIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZGV2LWxheWVyLWNvbmZpZy1maWxlLWRlc2NyaXB0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMYXllciBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc2lkZSB5b3VyIG5ldyBsYXllciBmb2xkZXIsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGVhc2llc3QgdG8gdGFrZSBhbiBleGlzdGluZyBsYXllciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBjb3B5IHRoYXQgdG8geW91ciBsYXllcidzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgdGhlbiBtb2RpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIG5lZWRlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS15b2N0by1ic3AvY29uZic+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0ZXMgdGhlIHJlcXVpcmVkIHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB5b3VyIGxheWVyLCB5b3UgbmVlZCB0byByZXBsYWNlICJ5b2N0b2JzcCIgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgeW91ciBsYXllciAoZS5nLiAibWFjaGluZXh5eiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIGxheWVyIG5hbWVkICJtZXRhLW1hY2hpbmV4eXoiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKKyAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCisKKyAgICAgIyBXZSBoYXZlIHJlY2lwZXMtKiBkaXJlY3RvcmllcywgYWRkIHRvIEJCRklMRVMKKyAgICAgQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCisgICAgICAgICAgICAgICAgICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiCisKKyAgICAgQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ5b2N0b2JzcCIKKyAgICAgQkJGSUxFX1BBVFRFUk5feW9jdG9ic3AgPSAiXiR7TEFZRVJESVJ9LyIKKyAgICAgQkJGSUxFX1BSSU9SSVRZX3lvY3RvYnNwID0gIjUiCisgICAgIExBWUVSVkVSU0lPTl95b2N0b2JzcCA9ICI0IgorICAgICBMQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAiJkRJU1RST19OQU1FX05PX0NBUDsiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhwbGFuYXRpb24gb2YgdGhlIGxheWVyIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHMgdGhlIGxheWVyJ3Mgcm9vdCBkaXJlY3RvcnkgdG8gQml0QmFrZSdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaCBwYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJvdWdoIHRoZSB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVzIGNsYXNzIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBmaWxlcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCB3aXRoIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4gc3RhdGVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzLCBCaXRCYWtlIHVzZXMgdGhlIGZpcnN0IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXRjaGVzIHRoZSBuYW1lIGZvdW5kIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSB3YXkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgdXNlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkLCB0aGVyZWZvcmUsIHRoYXQgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUgY2xhc3MgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZW5hbWVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgY3VzdG9tIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkZJTEVTJz48ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGxvY2F0aW9uIGZvciBhbGwgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9DT0xMRUNUSU9OUyc+PGZpbGVuYW1lPkJCRklMRV9DT0xMRUNUSU9OUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIHRoZSBjdXJyZW50IGxheWVyIHRocm91Z2ggYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUgaWRlbnRpZmllciB0aGF0IGlzIHVzZWQgdGhyb3VnaG91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byByZWZlciB0byB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIGlkZW50aWZpZXIgInlvY3RvYnNwIiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBjb250YWluZXIgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWQgIm1ldGEteW9jdG8tYnNwIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJGSUxFX1BBVFRFUk4nPjxmaWxlbmFtZT5CQkZJTEVfUEFUVEVSTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGFuZHMgaW1tZWRpYXRlbHkgZHVyaW5nIHBhcnNpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSB0aGUgZGlyZWN0b3J5IG9mIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJGSUxFX1BSSU9SSVRZJz48ZmlsZW5hbWU+QkJGSUxFX1BSSU9SSVRZPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXMgYSBwcmlvcml0eSB0byB1c2UgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGxheWVyIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kcyByZWNpcGVzIG9mIHRoZSBzYW1lIG5hbWUgaW4gZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEFZRVJWRVJTSU9OJz48ZmlsZW5hbWU+TEFZRVJWRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXMgYSB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZlcnNpb24gbnVtYmVyIHRvIHNwZWNpZnkgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCB2ZXJzaW9uIG9mIHRoZSBsYXllciBhcyBhIGRlcGVuZGVuY3kgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSREVQRU5EUyc+PGZpbGVuYW1lPkxBWUVSREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSREVQRU5EUyc+PGZpbGVuYW1lPkxBWUVSREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIGFsbCBsYXllcnMgb24gd2hpY2ggdGhpcyBsYXllciBkZXBlbmRzIChpZiBhbnkpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUlNFUklFU19DT01QQVQnPjxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHZlcnNpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBhIGdvb2Qgd2F5IHRvIGluZGljYXRlIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgcGFydGljdWxhciBsYXllciBpcyBjdXJyZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgQ29udGVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGxheWVyLCBhZGQgdGhlIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGF5ZXIgYWRkcyBzdXBwb3J0IGZvciBhIG1hY2hpbmUsIGFkZCB0aGUgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbiBhIDxmaWxlbmFtZT5jb25mL21hY2hpbmUvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgd2l0aGluIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBsYXllciBhZGRzIGRpc3RybyBwb2xpY3ksIGFkZCB0aGUgZGlzdHJvCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGluIGEgPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHdpdGhpbiB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGF5ZXIgaW50cm9kdWNlcyBuZXcgcmVjaXBlcywgcHV0IHRoZSByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBpbiA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yaWVzIHdpdGhpbiB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhwbGFuYXRpb24gb2YgbGF5ZXIgaGllcmFyY2h5IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBUZXN0IGZvciBDb21wYXRpYmlsaXR5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGF0aWJpbGl0eSBsb2dvIHdpdGggeW91ciBsYXllciBvciBhcHBsaWNhdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB1c2VzIHlvdXIgbGF5ZXIsIHBlcmZvcm0gdGhlIHN0ZXBzIHRvIGFwcGx5IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYWtpbmctc3VyZS15b3VyLWxheWVyLWlzLWNvbXBhdGlibGUtd2l0aC15b2N0by1wcm9qZWN0Jz5NYWtpbmcgU3VyZSBZb3VyIExheWVyIGlzIENvbXBhdGlibGUgV2l0aCBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Jlc3QtcHJhY3RpY2VzLXRvLWZvbGxvdy13aGVuLWNyZWF0aW5nLWxheWVycyc+CisgICAgICAgICAgICA8dGl0bGU+Rm9sbG93aW5nIEJlc3QgUHJhY3RpY2VzIFdoZW4gQ3JlYXRpbmcgTGF5ZXJzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gY3JlYXRlIGxheWVycyB0aGF0IGFyZSBlYXNpZXIgdG8gbWFpbnRhaW4gYW5kIHRoYXQgd2lsbAorICAgICAgICAgICAgICAgIG5vdCBpbXBhY3QgYnVpbGRzIGZvciBvdGhlciBtYWNoaW5lcywgeW91IHNob3VsZCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF2b2lkICJPdmVybGF5aW5nIiBFbnRpcmUgUmVjaXBlcyBmcm9tIE90aGVyIExheWVycyBpbiBZb3VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29weSBhbiBlbnRpcmUgcmVjaXBlIGludG8geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgYW5kIHRoZW4gbW9kaWZ5IGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCB1c2UgYW4gYXBwZW5kIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIHRvIG92ZXJyaWRlIG9ubHkgdGhvc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzIG9mIHRoZSBvcmlnaW5hbCByZWNpcGUgeW91IG5lZWQgdG8gbW9kaWZ5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Bdm9pZCBEdXBsaWNhdGluZyBJbmNsdWRlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgYXBwZW5kIGZpbGVzICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCByZWNpcGUgdGhhdCB1c2VzIGFuIGluY2x1ZGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9yLCBpZiB5b3UgYXJlIGludHJvZHVjaW5nIGEgbmV3IHJlY2lwZSB0aGF0IHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5jbHVkZWQgZmlsZSwgdXNlIHRoZSBwYXRoIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgbGF5ZXIgZGlyZWN0b3J5IHRvIHJlZmVyIHRvIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmUgcmVjaXBlcy1jb3JlLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmUgPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSdyZSBmaW5kaW5nIHlvdSBoYXZlIHRvIG92ZXJsYXkgdGhlIGluY2x1ZGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNvdWxkIGluZGljYXRlIGEgZGVmaWNpZW5jeSBpbiB0aGUgaW5jbHVkZSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgdG8gd2hpY2ggaXQgb3JpZ2luYWxseSBiZWxvbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgeW91IHNob3VsZCB0cnkgdG8gYWRkcmVzcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpY2llbmN5IGluc3RlYWQgb2Ygb3ZlcmxheWluZyB0aGUgaW5jbHVkZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBhZGRyZXNzIHRoaXMgYnkgZ2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haW50YWluZXIgb2YgdGhlIGluY2x1ZGUgZmlsZSB0byBhZGQgYSB2YXJpYWJsZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHRvIG1ha2UgaXQgZWFzeSB0byBvdmVycmlkZSB0aGUgcGFydHMgbmVlZGluZworICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgb3ZlcnJpZGRlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RydWN0dXJlIFlvdXIgTGF5ZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXIgdXNlIG9mIG92ZXJyaWRlcyB3aXRoaW4gYXBwZW5kIGZpbGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50IG9mIG1hY2hpbmUtc3BlY2lmaWMgZmlsZXMgd2l0aGluIHlvdXIgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBlbnN1cmUgdGhhdCBhIGJ1aWxkIGlzIG5vdCB1c2luZyB0aGUgd3JvbmcgTWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWdhdGl2ZWx5IGltcGFjdGluZyBhIGJ1aWxkIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TW9kaWZ5IFZhcmlhYmxlcyB0byBTdXBwb3J0IGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlmZmVyZW50IE1hY2hpbmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9zZSB5b3UgaGF2ZSBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+IHRoYXQgYWRkcyBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBidWlsZGluZyBtYWNoaW5lICJvbmUiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBkbyBzbywgeW91IHVzZSBhbiBhcHBlbmQgZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlcy5iYmFwcGVuZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgYSBkZXBlbmRlbmN5IG9uICJmb28iIGJ5IGFsdGVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUEVORFMgPSAiZm9vIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZXBlbmRlbmN5IGlzIGNyZWF0ZWQgZHVyaW5nIGFueSBidWlsZCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIHRoZSBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG1pZ2h0IG5vdCB3YW50IHRoaXMgZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGJ1aWxkaW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lICJ0d28iIGJ1dCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+IGxheWVyIGluY2x1ZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2UtZmlsZXM8L2ZpbGVuYW1lPiBmb3IgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvIiB3aWxsIGFsc28gaGF2ZSB0aGUgZGVwZW5kZW5jeSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT4uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIGFwcGx5IG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBtYWNoaW5lICJvbmUiLCB1c2UgYSBtYWNoaW5lIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gc3RhdGVtZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUEVORFNfb25lID0gImZvbyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGZvbGxvdyB0aGUgc2FtZSBzdHJhdGVneSB3aGVuIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgREVQRU5EU19hcHBlbmRfb25lID0gIiBmb28iCisgICAgIERFUEVORFNfcHJlcGVuZF9vbmUgPSAiZm9vICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhY3R1YWwgZXhhbXBsZSwgaGVyZSdzIGEgc25pcHBldCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljIGtlcm5lbCBpbmNsdWRlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZWluIHRoZSBrZXJuZWwgY29tcGlsZSBhbmQgbGluayBvcHRpb25zIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZCBpbiB0aGUgY2FzZSBvZiBhIHN1YnNldCBvZiB0aGUgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgREVQRU5EU19hcHBlbmRfYWFyY2g2NCA9ICIgbGliZ2NjIgorICAgICBLRVJORUxfQ0NfYXBwZW5kX2FhcmNoNjQgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorICAgICBLRVJORUxfTERfYXBwZW5kX2FhcmNoNjQgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorCisgICAgIERFUEVORFNfYXBwZW5kX25pb3MyID0gIiBsaWJnY2MiCisgICAgIEtFUk5FTF9DQ19hcHBlbmRfbmlvczIgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorICAgICBLRVJORUxfTERfYXBwZW5kX25pb3MyID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKworICAgICBERVBFTkRTX2FwcGVuZF9hcmMgPSAiIGxpYmdjYyIKKyAgICAgS0VSTkVMX0NDX2FwcGVuZF9hcmMgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorICAgICBLRVJORUxfTERfYXBwZW5kX2FyYyA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKKyAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgZmVhdHVyZXMvZGVidWcvcHJpbnRrLnNjYyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF2b2lkaW5nICIrPSIgYW5kICI9KyIgYW5kIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4gb3BlcmF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVjb21tZW5kZWQgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QbGFjZSBNYWNoaW5lLVNwZWNpZmljIEZpbGVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmUtU3BlY2lmaWMgTG9jYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGhhdmUgYSBiYXNlIHJlY2lwZSwgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlcy5iYjwvZmlsZW5hbWU+LCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgdG8gYSBmaWxlLCB5b3UgY2FuIHVzZSBhbiBhcHBlbmQgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjYXVzZSB0aGUgYnVpbGQgdG8gdXNlIHlvdXIgb3duIHZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhbiBhcHBlbmQgZmlsZSBpbiB5b3VyIGxheWVyIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzLmJiYXBwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgZXh0ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtCUE59OiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgZm9yIG1hY2hpbmUgIm9uZSIgd2lsbCBwaWNrIHVwIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBmaWxlIGFzIGxvbmcgYXMgeW91IGhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgYnVpbGRpbmcgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+IGxheWVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbG9jYXRpb24gb2YgeW91ciBtYWNoaW5lLXNwZWNpZmljIGZpbGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGxvY2F0aW9uIHdoZXJlIHRoYXQgZmlsZSBpcyBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvcmRpbmcgdG8gPGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMgZm9yIGFsbCBtYWNoaW5lcyB3aWxsIGFsc28gdXNlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBmaWxlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBtYWtlIHN1cmUgdGhhdCBhIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyB1c2VkIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZSBieSBwdXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IHNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcmF0aGVyIHRoYW4gcGxhY2luZyB0aGUgZmlsZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBzaG93biBhYm92ZSwgcHV0IGl0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL29uZS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IG9ubHkgZG9lcyB0aGlzIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBidWlsZGluZyBmb3IgbWFjaGluZSAib25lIiwgYnV0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzIGxvY2F0ZXMgdGhlIGZpbGUgbW9yZSBxdWlja2x5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc3VtbWFyeSwgeW91IG5lZWQgdG8gcGxhY2UgYWxsIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWQgZnJvbSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgbWFjaGluZS1zcGVjaWZpYyBzdWJkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBpbiBvcmRlciB0byByZXN0cmljdCB0aG9zZSBmaWxlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGVyZm9ybSBTdGVwcyB0byBBcHBseSBmb3IgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgQ29tcGF0aWJpbGl0eSBsb2dvIHdpdGggeW91ciBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXBwbGljYXRpb24gdGhhdCB1c2VzIHlvdXIgbGF5ZXIsIHBlcmZvcm0gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyB0byBhcHBseSBmb3IgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYWtpbmctc3VyZS15b3VyLWxheWVyLWlzLWNvbXBhdGlibGUtd2l0aC15b2N0by1wcm9qZWN0Jz5NYWtpbmcgU3VyZSBZb3VyIExheWVyIGlzIENvbXBhdGlibGUgV2l0aCBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZvbGxvdyB0aGUgTGF5ZXIgTmFtaW5nIENvbnZlbnRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIGN1c3RvbSBsYXllcnMgaW4gYSBHaXQgcmVwb3NpdG9yeSB0aGF0IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Hcm91cCBZb3VyIExheWVycyBMb2NhbGx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDbG9uZSB5b3VyIHJlcG9zaXRvcnkgYWxvbmdzaWRlIG90aGVyIGNsb25lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWFraW5nLXN1cmUteW91ci1sYXllci1pcy1jb21wYXRpYmxlLXdpdGgteW9jdG8tcHJvamVjdCc+CisgICAgICAgICAgICA8dGl0bGU+TWFraW5nIFN1cmUgWW91ciBMYXllciBpcyBDb21wYXRpYmxlIFdpdGggWW9jdG8gUHJvamVjdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxheWVyIHVzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgaXQgaXMKKyAgICAgICAgICAgICAgICBhZHZhbnRhZ2VvdXMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxheWVyIGludGVyYWN0cyB3ZWxsIHdpdGgKKyAgICAgICAgICAgICAgICBleGlzdGluZyBZb2N0byBQcm9qZWN0IGxheWVycyAoaS5lLiB0aGUgbGF5ZXIgaXMgY29tcGF0aWJsZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QpLgorICAgICAgICAgICAgICAgIEVuc3VyaW5nIGNvbXBhdGliaWxpdHkgbWFrZXMgdGhlIGxheWVyIGVhc3kgdG8gYmUgY29uc3VtZWQKKyAgICAgICAgICAgICAgICBieSBvdGhlcnMgaW4gdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGFuZCBjb3VsZCBhbGxvdyB5b3UKKyAgICAgICAgICAgICAgICBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmxlIExvZ28uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIE9ubHkgWW9jdG8gUHJvamVjdCBtZW1iZXIgb3JnYW5pemF0aW9ucyBhcmUgcGVybWl0dGVkIHRvCisgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmxlIExvZ28uCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2dvIGlzIG5vdCBhdmFpbGFibGUgZm9yIGdlbmVyYWwgdXNlLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJlY29tZSBhIFlvY3RvIFByb2plY3QgbWVtYmVyCisgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgUHJvZ3JhbSBjb25zaXN0cyBvZiBhIGxheWVyCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gcHJvY2VzcyB0aGF0IHJlcXVlc3RzIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgQ29tcGF0aWJpbGl0eSBMb2dvIGZvciB5b3VyIGxheWVyIGFuZCBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBjb25zaXN0cyBvZiB0d28gcGFydHM6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzZnVsbHkgcGFzc2luZyBhIHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT55b2N0by1jaGVjay1sYXllcjwvZmlsZW5hbWU+KSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHJ1biBhZ2FpbnN0IHlvdXIgbGF5ZXIsIHRlc3RzIGl0IGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzIGJhc2VkIG9uIGV4cGVyaWVuY2VzIG9mIGhvdyBsYXllcnMgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VkIGluIHRoZSByZWFsIHdvcmxkIGFuZCB3aGVyZSBwaXRmYWxscyBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgR2V0dGluZyBhICJQQVNTIiByZXN1bHQgZnJvbSB0aGUgc2NyaXB0IGlzIHJlcXVpcmVkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bCBjb21wYXRpYmlsaXR5IHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIGFjY2VwdGFuY2UgZm9ybSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gZmluZCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy93ZWJmb3JtL3lvY3RvLXByb2plY3QtY29tcGF0aWJsZS1yZWdpc3RyYXRpb24nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gYmUgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgbG9nbywgeW91IG5lZWQgdG8gc2F0aXNmeQorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgYWJsZSB0byBjaGVjayB0aGUgYm94IGluZGljYXRpbmcgdGhhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdCBhICJQQVNTIiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdCBhZ2FpbnN0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlciAiWWVzIiB0byB0aGUgcXVlc3Rpb25zIG9uIHRoZSBmb3JtIG9yIGhhdmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGFibGUgZXhwbGFuYXRpb24gZm9yIGFueSBxdWVzdGlvbnMgYW5zd2VyZWQgIk5vIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBCZSBhIFlvY3RvIFByb2plY3QgTWVtYmVyIE9yZ2FuaXphdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICByZWdpc3RyYXRpb24gZm9ybSBhbmQgb24gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWNoZWNrLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1jb21wYXRpYmxlLXByb2dyYW0tYXBwbGljYXRpb24nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IENvbXBhdGlibGUgUHJvZ3JhbSBBcHBsaWNhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb3JtIHRvIGFwcGx5IGZvciB5b3VyIGxheWVyJ3MgYXBwcm92YWwuCisgICAgICAgICAgICAgICAgICAgIFVwb24gc3VjY2Vzc2Z1bCBhcHBsaWNhdGlvbiwgeW91IGNhbiB1c2UgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgQ29tcGF0aWJpbGl0eSBMb2dvIHdpdGggeW91ciBsYXllciBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB5b3VyIGxheWVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBhY2Nlc3MgdGhlIGZvcm0sIHVzZSB0aGlzIGxpbms6CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvd2ViZm9ybS95b2N0by1wcm9qZWN0LWNvbXBhdGlibGUtcmVnaXN0cmF0aW9uJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgb24gdGhlIGZvcm0gdG8gY29tcGxldGUgeW91cgorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGFwcGxpY2F0aW9uIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbnRhY3QgSW5mb3JtYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIHlvdXIgY29udGFjdCBpbmZvcm1hdGlvbiBhcyB0aGUgZmllbGRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbG9uZyB3aXRoIHlvdXIgaW5mb3JtYXRpb24sIHByb3ZpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZWQgdmVyc2lvbnMgb2YgdGhlIFlvY3RvIFByb2plY3QgZm9yIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBsYXllciBpcyBjb21wYXRpYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BY2NlcHRhbmNlIENyaXRlcmlhOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSAiWWVzIiBvciAiTm8iIGFuc3dlcnMgZm9yIGVhY2ggb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgaW4gdGhlIGNoZWNrbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSBleGlzdHMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZm9ybSBmb3IgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb25zIGZvciBpdGVtcyBmb3Igd2hpY2ggeW91IGFuc3dlcmVkICJObyIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY29tbWVuZGF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYW5zd2VycyBmb3IgdGhlIHF1ZXN0aW9ucyByZWdhcmRpbmcgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgdXNlIGFuZCBidWlsZCBzdWNjZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd5b2N0by1jaGVjay1sYXllci1zY3JpcHQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+eW9jdG8tY2hlY2stbGF5ZXI8L2ZpbGVuYW1lPiBTY3JpcHQ8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8tY2hlY2stbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgeW91IGEgd2F5IHRvIGFzc2VzcyBob3cgY29tcGF0aWJsZSB5b3VyIGxheWVyIGlzCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgcnVuIHRoaXMgc2NyaXB0IHByaW9yIHRvIHVzaW5nIHRoZSBmb3JtIHRvCisgICAgICAgICAgICAgICAgICAgIGFwcGx5IGZvciBjb21wYXRpYmlsaXR5IGFzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYWNoaWV2ZSBhICJQQVNTIiByZXN1bHQgaW4gb3JkZXIgdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICB5b3VyIGFwcGxpY2F0aW9uIGZvcm0gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkaXZpZGVzIHRlc3RzIGludG8gdGhyZWUgYXJlYXM6IENPTU1PTiwgQlNQLAorICAgICAgICAgICAgICAgICAgICBhbmQgRElTVFJPLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBkaXN0cmlidXRpb24gbGF5ZXIgKERJU1RSTyksIHRoZQorICAgICAgICAgICAgICAgICAgICBsYXllciBtdXN0IHBhc3MgYm90aCB0aGUgQ09NTU9OIGFuZCBESVNUUk8gcmVsYXRlZCB0ZXN0cy4KKyAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIGlmIHlvdXIgbGF5ZXIgaXMgYSBCU1AgbGF5ZXIsIHRoZSBsYXllciBtdXN0CisgICAgICAgICAgICAgICAgICAgIHBhc3MgdGhlIENPTU1PTiBhbmQgQlNQIHNldCBvZiB0ZXN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgc2NyaXB0LCBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgeW91ciBidWlsZCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICAgJCB5b2N0by1jaGVjay1sYXllciA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB0aGUgYWN0dWFsIGRpcmVjdG9yeSBmb3IgeW91ciBsYXllcgorICAgICAgICAgICAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFbnRlcmluZyB0aGUgY29tbWFuZCBjYXVzZXMgdGhlIHNjcmlwdCB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgICAgICAgICAgICAgIHR5cGUgb2YgbGF5ZXIgYW5kIHRoZW4gdG8gZXhlY3V0ZSBhIHNldCBvZiBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICB0ZXN0cyBhZ2FpbnN0IHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG92ZXJ2aWV3cyB0aGUgdGVzdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29tbW9uLnRlc3RfcmVhZG1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgaWYgYSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiB0aGUgbGF5ZXIgYW5kIHRoZSBmaWxlIGlzIG5vdCBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29tbW9uLnRlc3RfcGFyc2U8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBCaXRCYWtlIGNhbiBwYXJzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyB3aXRob3V0IGVycm9yIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLXA8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X3Nob3dfZW52aXJvbm1lbnQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyB0aGF0IHRoZSBnbG9iYWwgb3IgcGVyLXJlY2lwZSBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGluIG9yZGVyIHdpdGhvdXQgZXJyb3JzIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X3dvcmxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCA8ZmlsZW5hbWU+Yml0YmFrZSB3b3JsZDwvZmlsZW5hbWU+IHdvcmtzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24udGVzdF9zaWduYXR1cmVzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gYmUgc3VyZSB0aGF0IEJTUCBhbmQgRElTVFJPIGxheWVycyBkbyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21lIHdpdGggcmVjaXBlcyB0aGF0IGNoYW5nZSBzaWduYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24udGVzdF9sYXllcnNlcmllc19jb21wYXQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyBsYXllciBjb21wYXRpYmlsaXR5IGlzIHNldCBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfYnNwX2RlZmluZXNfbWFjaGluZXM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyBpZiBhIEJTUCBsYXllciBoYXMgbWFjaGluZSBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfYnNwX25vX3NldF9tYWNoaW5lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gZW5zdXJlIGEgQlNQIGxheWVyIGRvZXMgbm90IHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHdoZW4gdGhlIGxheWVyIGlzIGFkZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9tYWNoaW5lX3dvcmxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCA8ZmlsZW5hbWU+Yml0YmFrZSB3b3JsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3MgcmVnYXJkbGVzcyBvZiB3aGljaCBtYWNoaW5lIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9tYWNoaW5lX3NpZ25hdHVyZXM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyB0aGF0IGJ1aWxkaW5nIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZmVjdHMgb25seSB0aGUgc2lnbmF0dXJlIG9mIHRhc2tzIHNwZWNpZmljIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0cm8udGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgaWYgYSBESVNUUk8gbGF5ZXIgaGFzIGRpc3RybyBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gZW5zdXJlIGEgRElTVFJPIGxheWVyIGRvZXMgbm90IHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gd2hlbiB0aGUgbGF5ZXIgaXMgYWRkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdlbmFibGluZy15b3VyLWxheWVyJz4KKyAgICAgICAgICAgIDx0aXRsZT5FbmFibGluZyBZb3VyIExheWVyPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQmVmb3JlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiB1c2UgeW91ciBuZXcgbGF5ZXIsCisgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gZW5hYmxlIGl0LgorICAgICAgICAgICAgICAgIFRvIGVuYWJsZSB5b3VyIGxheWVyLCBzaW1wbHkgYWRkIHlvdXIgbGF5ZXIncyBwYXRoIHRvIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPkJCTEFZRVJTPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIGVuYWJsZSBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBQT0tZX0JCTEFZRVJTX0NPTkZfVkVSU0lPTiBpcyBpbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvYmJsYXllcnMuY29uZgorICAgICAjIGNoYW5nZXMgaW5jb21wYXRpYmx5CisgICAgIFBPS1lfQkJMQVlFUlNfQ09ORl9WRVJTSU9OID0gIjIiCisKKyAgICAgQkJQQVRIID0gIiR7VE9QRElSfSIKKyAgICAgQkJGSUxFUyA/PSAiIgorCisgICAgIEJCTEFZRVJTID89ICIgXAorICAgICAgIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vcG9reS9tZXRhIFwKKyAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvbWV0YS1wb2t5IFwKKyAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvbWV0YS15b2N0by1ic3AgXAorICAgICAgIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vcG9reS9tZXRhLW15bGF5ZXIgXAorICAgICAgICIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgcGFyc2VzIGVhY2ggPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICBmcm9tIHRoZSB0b3AgZG93biBhcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIER1cmluZyB0aGUgcHJvY2Vzc2luZyBvZiBlYWNoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUsIEJpdEJha2UgYWRkcyB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGVzLCBjbGFzc2VzIGFuZCBjb25maWd1cmF0aW9ucyBjb250YWluZWQgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgbGF5ZXIgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYmJhcHBlbmQtZmlsZXMnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSByZWNpcGUgdGhhdCBhcHBlbmRzIE1ldGFkYXRhIHRvIGFub3RoZXIgcmVjaXBlIGlzIGNhbGxlZCBhCisgICAgICAgICAgICAgICAgQml0QmFrZSBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICBBIEJpdEJha2UgYXBwZW5kIGZpbGUgdXNlcyB0aGUgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSB0eXBlIHN1ZmZpeCwgd2hpbGUgdGhlIGNvcnJlc3BvbmRpbmcgcmVjaXBlIHRvIHdoaWNoCisgICAgICAgICAgICAgICAgTWV0YWRhdGEgaXMgYmVpbmcgYXBwZW5kZWQgdXNlcyB0aGUgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSB0eXBlIHN1ZmZpeC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgbGF5ZXIgdG8gbWFrZSBhZGRpdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgY29udGVudCBvZiBhbm90aGVyCisgICAgICAgICAgICAgICAgbGF5ZXIncyByZWNpcGUgd2l0aG91dCBoYXZpbmcgdG8gY29weSB0aGUgb3RoZXIgbGF5ZXIncworICAgICAgICAgICAgICAgIHJlY2lwZSBpbnRvIHlvdXIgbGF5ZXIuCisgICAgICAgICAgICAgICAgWW91ciA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSByZXNpZGVzIGluIHlvdXIgbGF5ZXIsCisgICAgICAgICAgICAgICAgd2hpbGUgdGhlIG1haW4gPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmaWxlIHRvCisgICAgICAgICAgICAgICAgd2hpY2ggeW91IGFyZSBhcHBlbmRpbmcgTWV0YWRhdGEgcmVzaWRlcyBpbiBhIGRpZmZlcmVudCBsYXllci4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQmVpbmcgYWJsZSB0byBhcHBlbmQgaW5mb3JtYXRpb24gdG8gYW4gZXhpc3RpbmcgcmVjaXBlIG5vdCBvbmx5CisgICAgICAgICAgICAgICAgYXZvaWRzIGR1cGxpY2F0aW9uLCBidXQgYWxzbyBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgcmVjaXBlCisgICAgICAgICAgICAgICAgY2hhbmdlcyBmcm9tIGEgZGlmZmVyZW50IGxheWVyIGludG8geW91ciBsYXllci4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2VyZSBjb3B5aW5nIHJlY2lwZXMsIHlvdSB3b3VsZCBoYXZlIHRvIG1hbnVhbGx5IG1lcmdlCisgICAgICAgICAgICAgICAgY2hhbmdlcyBhcyB0aGV5IG9jY3VyLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYW4gYXBwZW5kIGZpbGUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSByb290CisgICAgICAgICAgICAgICAgbmFtZSBhcyB0aGUgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGFwcGVuZCBmaWxlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvbWVhcHBfJkRJU1RSTzsuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBtdXN0IGFwcGx5IHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvbWVhcHBfJkRJU1RSTzsuYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIHRoZSBvcmlnaW5hbCByZWNpcGUgYW5kIGFwcGVuZCBmaWxlIG5hbWVzIGFyZQorICAgICAgICAgICAgICAgIHZlcnNpb24gbnVtYmVyLXNwZWNpZmljLgorICAgICAgICAgICAgICAgIElmIHRoZSBjb3JyZXNwb25kaW5nIHJlY2lwZSBpcyByZW5hbWVkIHRvIHVwZGF0ZSB0byBhIG5ld2VyCisgICAgICAgICAgICAgICAgdmVyc2lvbiwgeW91IG11c3QgYWxzbyByZW5hbWUgYW5kIHBvc3NpYmx5IHVwZGF0ZQorICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIER1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgQml0QmFrZSBkaXNwbGF5cyBhbiBlcnJvciBvbiBzdGFydGluZworICAgICAgICAgICAgICAgIGlmIGl0IGRldGVjdHMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSB0aGF0IGRvZXMKKyAgICAgICAgICAgICAgICBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgcmVjaXBlIHdpdGggYSBtYXRjaGluZyBuYW1lLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZJz48ZmlsZW5hbWU+QkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaGFuZGxlIHRoaXMgZXJyb3IuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBtYWluIGZvcm1mYWN0b3IgcmVjaXBlIGFuZCBhCisgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyBmb3JtZmFjdG9yIGFwcGVuZCBmaWxlIGJvdGggZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgbWFpbiBmb3JtZmFjdG9yIHJlY2lwZSwgd2hpY2ggaXMgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmI8L2ZpbGVuYW1lPiBhbmQgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAibWV0YSIgbGF5ZXIgYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTVU1NQVJZID0gIkRldmljZSBmb3JtZmFjdG9yIGluZm9ybWF0aW9uIgorICAgICBTRUNUSU9OID0gImJhc2UiCisgICAgIExJQ0VOU0UgPSAiTUlUIgorICAgICBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKKyAgICAgUFIgPSAicjQ1IgorCisgICAgIFNSQ19VUkkgPSAiZmlsZTovL2NvbmZpZyBmaWxlOi8vbWFjaGNvbmZpZyIKKyAgICAgUyA9ICIke1dPUktESVJ9IgorCisgICAgIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisgICAgIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKKyAgICAgZG9faW5zdGFsbCgpIHsKKwkgICAgICMgSW5zdGFsbCBmaWxlIG9ubHkgaWYgaXQgaGFzIGNvbnRlbnRzCisgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9mb3JtZmFjdG9yLworICAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9mb3JtZmFjdG9yLworCSAgICAgaWYgWyAtcyAiJHtTfS9tYWNoY29uZmlnIiBdOyB0aGVuCisJICAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L21hY2hjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZm9ybWZhY3Rvci8KKwkgICAgIGZpCisgICAgIH0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIHRoZSBtYWluIHJlY2lwZSwgbm90ZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIHRlbGxzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoZXJlIHRvCisgICAgICAgICAgICAgICAgZmluZCBmaWxlcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGFwcGVuZCBmaWxlLCB3aGljaCBpcyBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+IGFuZCBpcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgIFJhc3BiZXJyeSBQaSBCU1AgTGF5ZXIgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIGluIHRoZSBsYXllciBhdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWJzcC9mb3JtZmFjdG9yPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBsb2NhdGUgZmlsZXMuCisgICAgICAgICAgICAgICAgVGhpcyBhcHBlbmQgZmlsZSBleHRlbmRzIHRoZSBsb2NhdGlvbnMgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFNldHRpbmcgdGhpcyB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSBpcyB0aGUgbW9zdCByZWxpYWJsZSBhbmQgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBhZGRpbmcKKyAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB0byB0aGUgc2VhcmNoIHBhdGggdXNlZCBieSB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgdG8gZmluZCBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBpbiB0aGlzIGV4YW1wbGUgZXh0ZW5kcyB0aGUgZGlyZWN0b3JpZXMgdG8KKyAgICAgICAgICAgICAgICBpbmNsdWRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEhJU0RJUic+PGZpbGVuYW1lPlRISVNESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vJHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgd2hpY2ggcmVzb2x2ZXMgdG8gYSBkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3RvcjwvZmlsZW5hbWU+IGluIHRoZSBzYW1lIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGluIHdoaWNoIHRoZSBhcHBlbmQgZmlsZSByZXNpZGVzIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvZm9ybWZhY3RvcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoaXMgaW1wbGllcyB0aGF0IHlvdSBtdXN0IGhhdmUgdGhlIHN1cHBvcnRpbmcgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgc3RydWN0dXJlIHNldCB1cCB0aGF0IHdpbGwgY29udGFpbiBhbnkgZmlsZXMgb3IgcGF0Y2hlcyB5b3UKKyAgICAgICAgICAgICAgICB3aWxsIGJlIGluY2x1ZGluZyBmcm9tIHRoZSBsYXllci4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVXNpbmcgdGhlIGltbWVkaWF0ZSBleHBhbnNpb24gYXNzaWdubWVudCBvcGVyYXRvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT46PTwvZmlsZW5hbWU+IGlzIGltcG9ydGFudCBiZWNhdXNlIG9mIHRoZSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+VEhJU0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSB0cmFpbGluZyBjb2xvbiBjaGFyYWN0ZXIgaXMgaW1wb3J0YW50IGFzIGl0IGVuc3VyZXMgdGhhdAorICAgICAgICAgICAgICAgIGl0ZW1zIGluIHRoZSBsaXN0IHJlbWFpbiBjb2xvbi1zZXBhcmF0ZWQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBhdXRvbWF0aWNhbGx5IGRlZmluZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEhJU0RJUjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBuZXZlciBzZXQgdGhpcyB2YXJpYWJsZSB5b3Vyc2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nICJfcHJlcGVuZCIgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPiBlbnN1cmVzIHlvdXIgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBzZWFyY2hlZCBwcmlvciB0byBvdGhlciBwYXRocyBpbiB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIG5vdCBhbGwgYXBwZW5kIGZpbGVzIGFkZCBleHRyYSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnkgYXBwZW5kIGZpbGVzIHNpbXBseSBleGlzdCB0byBhZGQgYnVpbGQgb3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdXIgYXBwZW5kIGZpbGUgd291bGQgbm90IGV2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgPGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+IHN0YXRlbWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdwcmlvcml0aXppbmcteW91ci1sYXllcic+CisgICAgICAgICAgICA8dGl0bGU+UHJpb3JpdGl6aW5nIFlvdXIgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBFYWNoIGxheWVyIGlzIGFzc2lnbmVkIGEgcHJpb3JpdHkgdmFsdWUuCisgICAgICAgICAgICAgICAgUHJpb3JpdHkgdmFsdWVzIGNvbnRyb2wgd2hpY2ggbGF5ZXIgdGFrZXMgcHJlY2VkZW5jZSBpZiB0aGVyZQorICAgICAgICAgICAgICAgIGFyZSByZWNpcGUgZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGluIG11bHRpcGxlIGxheWVycy4KKyAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHRoZSByZWNpcGUgZmlsZSBmcm9tIHRoZSBsYXllciB3aXRoIGEgaGlnaGVyCisgICAgICAgICAgICAgICAgcHJpb3JpdHkgbnVtYmVyIHRha2VzIHByZWNlZGVuY2UuCisgICAgICAgICAgICAgICAgUHJpb3JpdHkgdmFsdWVzIGFsc28gYWZmZWN0IHRoZSBvcmRlciBpbiB3aGljaCBtdWx0aXBsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcyBmb3IgdGhlIHNhbWUgcmVjaXBlIGFyZQorICAgICAgICAgICAgICAgIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBlaXRoZXIgc3BlY2lmeSB0aGUgcHJpb3JpdHkgbWFudWFsbHksIG9yIGFsbG93IHRoZQorICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBjYWxjdWxhdGUgaXQgYmFzZWQgb24gdGhlIGxheWVyJ3MgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IHRoZSBsYXllcidzIHByaW9yaXR5IG1hbnVhbGx5LCB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgYXBwZW5kIHRoZSBsYXllcidzIHJvb3QgbmFtZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCRklMRV9QUklPUklUWV9teWxheWVyID0gIjEiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyBwb3NzaWJsZSBmb3IgYSByZWNpcGUgd2l0aCBhIGxvd2VyIHZlcnNpb24gbnVtYmVyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgaW4gYSBsYXllciB0aGF0IGhhcyBhIGhpZ2hlciBwcmlvcml0eSB0byB0YWtlIHByZWNlZGVuY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPkFsc28sIHRoZSBsYXllciBwcmlvcml0eSBkb2VzIG5vdCBjdXJyZW50bHkgYWZmZWN0IHRoZQorICAgICAgICAgICAgICAgIHByZWNlZGVuY2Ugb3JkZXIgb2YgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICBGdXR1cmUgdmVyc2lvbnMgb2YgQml0QmFrZSBtaWdodCBhZGRyZXNzIHRoaXMuPC9wYXJhPgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21hbmFnaW5nLWxheWVycyc+CisgICAgICAgICAgICA8dGl0bGU+TWFuYWdpbmcgTGF5ZXJzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIEJpdEJha2UgbGF5ZXIgbWFuYWdlbWVudCB0b29sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gdG8gcHJvdmlkZSBhIHZpZXcKKyAgICAgICAgICAgICAgICBpbnRvIHRoZSBzdHJ1Y3R1cmUgb2YgcmVjaXBlcyBhY3Jvc3MgYSBtdWx0aS1sYXllciBwcm9qZWN0LgorICAgICAgICAgICAgICAgIEJlaW5nIGFibGUgdG8gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgcmVwb3J0cyBvbiBjb25maWd1cmVkIGxheWVycworICAgICAgICAgICAgICAgIHdpdGggdGhlaXIgcGF0aHMgYW5kIHByaW9yaXRpZXMgYW5kIG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGVzIGFuZCB0aGVpciBhcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgcmVjaXBlcyBjYW4gaGVscCB0byByZXZlYWwgcG90ZW50aWFsIHByb2JsZW1zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgaGVscCBvbiB0aGUgQml0QmFrZSBsYXllciBtYW5hZ2VtZW50IHRvb2wsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS1sYXllcnMgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIHVzYWdlOiBiaXRiYWtlLWxheWVycyBbLWRdIFstcV0gWy1GXSBbLS1jb2xvciBDT0xPUl0gWy1oXSAmbHQ7c3ViY29tbWFuZCZndDsgLi4uCisKKyAgICAgQml0QmFrZSBsYXllcnMgdXRpbGl0eQorCisgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBQcmludCBvbmx5IGVycm9ycworICAgICAgIC1GLCAtLWZvcmNlICAgICAgICAgICBGb3JjZSBhZGQgd2l0aG91dCByZWNpcGUgcGFyc2UgdmVyaWZpY2F0aW9uCisgICAgICAgLS1jb2xvciBDT0xPUiAgICAgICAgIENvbG9yaXplIG91dHB1dCAod2hlcmUgQ09MT1IgaXMgYXV0bywgYWx3YXlzLCBuZXZlcikKKyAgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisgICAgIHN1YmNvbW1hbmRzOgorICAgICAgICZsdDtzdWJjb21tYW5kJmd0OworICAgICAgICAgc2hvdy1sYXllcnMgICAgICAgICBzaG93IGN1cnJlbnQgY29uZmlndXJlZCBsYXllcnMuCisgICAgICAgICBzaG93LW92ZXJsYXllZCAgICAgIGxpc3Qgb3ZlcmxheWVkIHJlY2lwZXMgKHdoZXJlIHRoZSBzYW1lIHJlY2lwZSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYW5vdGhlciBsYXllcikKKyAgICAgICAgIHNob3ctcmVjaXBlcyAgICAgICAgbGlzdCBhdmFpbGFibGUgcmVjaXBlcywgc2hvd2luZyB0aGUgbGF5ZXIgdGhleSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkKKyAgICAgICAgIHNob3ctYXBwZW5kcyAgICAgICAgbGlzdCBiYmFwcGVuZCBmaWxlcyBhbmQgcmVjaXBlIGZpbGVzIHRoZXkgYXBwbHkgdG8KKyAgICAgICAgIHNob3ctY3Jvc3MtZGVwZW5kcyAgU2hvdyBkZXBlbmRlbmNpZXMgYmV0d2VlbiByZWNpcGVzIHRoYXQgY3Jvc3MgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy4KKyAgICAgICAgIGFkZC1sYXllciAgICAgICAgICAgQWRkIG9uZSBvciBtb3JlIGxheWVycyB0byBiYmxheWVycy5jb25mLgorICAgICAgICAgcmVtb3ZlLWxheWVyICAgICAgICBSZW1vdmUgb25lIG9yIG1vcmUgbGF5ZXJzIGZyb20gYmJsYXllcnMuY29uZi4KKyAgICAgICAgIGZsYXR0ZW4gICAgICAgICAgICAgZmxhdHRlbiBsYXllciBjb25maWd1cmF0aW9uIGludG8gYSBzZXBhcmF0ZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgbGF5ZXJpbmRleC1mZXRjaCAgICBGZXRjaGVzIGEgbGF5ZXIgZnJvbSBhIGxheWVyIGluZGV4IGFsb25nIHdpdGggaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBsYXllcnMsIGFuZCBhZGRzIHRoZW0gdG8gY29uZi9iYmxheWVycy5jb25mLgorICAgICAgICAgbGF5ZXJpbmRleC1zaG93LWRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluZCBsYXllciBkZXBlbmRlbmNpZXMgZnJvbSBsYXllciBpbmRleC4KKyAgICAgICAgIGNyZWF0ZS1sYXllciAgICAgICAgQ3JlYXRlIGEgYmFzaWMgbGF5ZXIKKworICAgICBVc2UgYml0YmFrZS1sYXllcnMgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIGF2YWlsYWJsZSBjb21tYW5kczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmhlbHA6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheXMgZ2VuZXJhbCBoZWxwIG9yIGhlbHAgb24gYSBzcGVjaWZpZWQgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctbGF5ZXJzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNob3dzIHRoZSBjdXJyZW50IGNvbmZpZ3VyZWQgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2hvdy1vdmVybGF5ZWQ6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3ZlcmxheWVkIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBBIHJlY2lwZSBpcyBvdmVybGF5ZWQgd2hlbiBhIHJlY2lwZSB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiBhbm90aGVyIGxheWVyIHRoYXQgaGFzIGEgaGlnaGVyIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctcmVjaXBlczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhdmFpbGFibGUgcmVjaXBlcyBhbmQgdGhlIGxheWVycyB0aGF0IHByb3ZpZGUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctYXBwZW5kczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGVzIHRvIHdoaWNoIHRoZXkgYXBwbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zaG93LWNyb3NzLWRlcGVuZHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGJldHdlZW4gcmVjaXBlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcyBsYXllciBib3VuZGFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YWRkLWxheWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZHMgYSBsYXllciB0byA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cmVtb3ZlLWxheWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZXMgYSBsYXllciBmcm9tIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmZsYXR0ZW46PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRmxhdHRlbnMgdGhlIGxheWVyIGNvbmZpZ3VyYXRpb24gaW50byBhIHNlcGFyYXRlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgRmxhdHRlbmluZyB5b3VyIGxheWVyIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGEgImZsYXR0ZW5lZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRoZSBjb250ZW50cyBvZiBhbGwgbGF5ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhbnkgb3ZlcmxheWVkIHJlY2lwZXMgcmVtb3ZlZCBhbmQgYW55CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMgYXBwZW5kZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgaGF2ZSB0byBwZXJmb3JtIHNvbWUgbWFudWFsIGNsZWFudXAgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmbGF0dGVuZWQgbGF5ZXIgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tcmVjaXBlIGZpbGVzIChzdWNoIGFzIHBhdGNoZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvdmVyd3JpdHRlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZsYXR0ZW4gY29tbWFuZCBzaG93cyBhIHdhcm5pbmcgZm9yIHRoZXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueXRoaW5nIGJleW9uZCB0aGUgbm9ybWFsIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwIGhhcyBiZWVuIGFkZGVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgdGhlIGxvd2VzdCBwcmlvcml0eSBsYXllcidzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVycmlkZGVuIGFuZCBhcHBlbmRlZCBpdGVtcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcyBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuZWQgdXAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb250ZW50cyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBlbmQgdXAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW5lZCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHRoZXJlIGFyZSBhcHBlbmRlZCBvciBjaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHZhbHVlcywgeW91IG5lZWQgdG8gdGlkeSB0aGVzZSB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3Vyc2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZXJlLCB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBhZGRzIHRoZSBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4jIyMjIGJiYXBwZW5kZWQgLi4uPC9maWxlbmFtZT4gc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3Uga25vdyB3aGVyZSB0aGUgZm9sbG93aW5nIGxpbmVzIG9yaWdpbmF0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAuLi4KKyAgICAgREVTQ1JJUFRJT04gPSAiQSB1c2VmdWwgdXRpbGl0eSIKKyAgICAgLi4uCisgICAgIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zb21ldGhpbmciCisgICAgIC4uLgorCisgICAgICMjIyMgYmJhcHBlbmRlZCBmcm9tIG1ldGEtYW5vdGhlcmxheWVyICMjIyMKKworICAgICBERVNDUklQVElPTiA9ICJDdXN0b21pemVkIHV0aWxpdHkiCisgICAgIEVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtc29tZXRoaW5nZWxzZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZGVhbGx5LCB5b3Ugd291bGQgdGlkeSB1cCB0aGVzZSB1dGlsaXRpZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAuLi4KKyAgICAgREVTQ1JJUFRJT04gPSAiQ3VzdG9taXplZCB1dGlsaXR5IgorICAgICAuLi4KKyAgICAgRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNvbWV0aGluZyAtLWVuYWJsZS1zb21ldGhpbmdlbHNlIgorICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGF5ZXJpbmRleC1mZXRjaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGZXRjaGVzIGEgbGF5ZXIgZnJvbSBhIGxheWVyIGluZGV4LCBhbG9uZyB3aXRoIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW50IGxheWVycywgYW5kIGFkZHMgdGhlIGxheWVycyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGF5ZXJpbmRleC1zaG93LWRlcGVuZHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRmluZHMgbGF5ZXIgZGVwZW5kZW5jaWVzIGZyb20gdGhlIGxheWVyIGluZGV4LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Y3JlYXRlLWxheWVyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBiYXNpYyBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLWxheWVyPC9maWxlbmFtZT4gc3ViY29tbWFuZCBzaW1wbGlmaWVzCisgICAgICAgICAgICAgICAgY3JlYXRpbmcgYSBuZXcgZ2VuZXJhbCBsYXllci4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFNwZWNpZmljIChCU1ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIGEgbGF5ZXIgd2l0aCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLCB5b3UgbmVlZCB0byBhZGQgdGhlIGxheWVyIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYWRkaW5nLWEtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+QWRkaW5nIGEgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZGUgb2YgdGhlIHNjcmlwdCdzIG9wZXJhdGlvbiB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICBzdWJjb21tYW5kIGlzIHRvIGNyZWF0ZSBhIGxheWVyIHdpdGggdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBsYXllciBwcmlvcml0eSBvZiA2LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5yZWNpcGVzLWV4YW1wbGU8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgYSBmdXJ0aGVyIHN1YmRpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4YW1wbGU8L2ZpbGVuYW1lPiwgd2hpY2ggY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuIDxmaWxlbmFtZT5leGFtcGxlLmJiPC9maWxlbmFtZT4gcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgPGZpbGVuYW1lID5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIGxpY2Vuc2Ugc3RhdGVtZW50IGZvciB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFzc3VtZXMgeW91IHdhbnQgdG8gdXNlIHRoZSBNSVQgbGljZW5zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHR5cGljYWwgZm9yIG1vc3QgbGF5ZXJzLCBmb3IgdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGEgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmluZyB0aGUgY29udGVudHMgb2YgeW91ciBuZXcgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gaXRzIHNpbXBsZXN0IGZvcm0sIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3JtCisgICAgICAgICAgICAgICAgdG8gY3JlYXRlIGEgbGF5ZXIuCisgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgY3JlYXRlcyBhIGxheWVyIHdob3NlIG5hbWUgY29ycmVzcG9uZHMgdG8KKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT4gaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNyZWF0ZXMgYSBsYXllciBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNjb3R0cmlmPC9maWxlbmFtZT4gaW4geW91ciBob21lIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgL3Vzci9ob21lCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIG1ldGEtc2NvdHRyaWYKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgQWRkIHlvdXIgbmV3IGxheWVyIHdpdGggJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLXNjb3R0cmlmJworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2V0IHRoZSBwcmlvcml0eSBvZiB0aGUgbGF5ZXIgdG8gb3RoZXIgdGhhbiB0aGUKKyAgICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlIG9mICI2IiwgeW91IGNhbiBlaXRoZXIgdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mZGFzaDsmZGFzaDtwcmlvcml0eTwvZmlsZW5hbWU+IG9wdGlvbiBvciB5b3UgY2FuCisgICAgICAgICAgICAgICAgZWRpdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJGSUxFX1BSSU9SSVRZJz48ZmlsZW5hbWU+QkJGSUxFX1BSSU9SSVRZPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhbHVlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgc2NyaXB0IGNyZWF0ZXMgaXQuCisgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIGlmIHlvdSB3YW50IHRvIGdpdmUgdGhlIGV4YW1wbGUgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICBzb21lIG5hbWUgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCwgeW91IGNhbgorICAgICAgICAgICAgICAgIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JmRhc2g7JmRhc2g7ZXhhbXBsZS1yZWNpcGUtbmFtZTwvZmlsZW5hbWU+IG9wdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGVhc2llc3Qgd2F5IHRvIHNlZSBob3cgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICB3b3JrcyBpcyB0byBleHBlcmltZW50IHdpdGggdGhlIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVhZCB0aGUgdXNhZ2UgaW5mb3JtYXRpb24gYnkgZW50ZXJpbmcgdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIHVzYWdlOiBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgWy1oXSBbLS1wcmlvcml0eSBQUklPUklUWV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS1leGFtcGxlLXJlY2lwZS1uYW1lIEVYQU1QTEVSRUNJUEVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJkaXIKKworICAgICBDcmVhdGUgYSBiYXNpYyBsYXllcgorCisgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgIGxheWVyZGlyICAgICAgICAgICAgICBMYXllciBkaXJlY3RvcnkgdG8gY3JlYXRlCisKKyAgICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAgLS1wcmlvcml0eSBQUklPUklUWSwgLXAgUFJJT1JJVFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXIgZGlyZWN0b3J5IHRvIGNyZWF0ZQorICAgICAgIC0tZXhhbXBsZS1yZWNpcGUtbmFtZSBFWEFNUExFUkVDSVBFLCAtZSBFWEFNUExFUkVDSVBFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lIG9mIHRoZSBleGFtcGxlIHJlY2lwZQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdhZGRpbmctYS1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5BZGRpbmcgYSBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgY3JlYXRlIHlvdXIgZ2VuZXJhbCBsYXllciwgeW91IG11c3QgYWRkIGl0IHRvIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgQWRkaW5nIHRoZSBsYXllciB0byB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBtYWtlcyB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF3YXJlIG9mIHlvdXIgbGF5ZXIgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgICAgICAgICBzZWFyY2ggaXQgZm9yIG1ldGFkYXRhLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBZGQgeW91ciBsYXllciBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgYWRkLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIDxyZXBsYWNlYWJsZT55b3VyX2xheWVyX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhZGRzIGEgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1zY290dHJpZjwvZmlsZW5hbWU+IHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoZSBjb21tYW5kIHRoYXQgYWRkcyB0aGUgbGF5ZXIgaXMgYW5vdGhlcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IGNvbW1hbmQgdGhhdCBzaG93cyB0aGUKKyAgICAgICAgICAgICAgICBsYXllcnMgdGhhdCBhcmUgaW4geW91ciA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIG1ldGEtc2NvdHRyaWYKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjQ5CisgICAgIFBhcnNpbmcgb2YgMTQ0MSAuYmIgZmlsZXMgY29tcGxldGUgKDAgY2FjaGVkLCAxNDQxIHBhcnNlZCkuIDIwNTUgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICAkIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIGxheWVyICAgICAgICAgICAgICAgICBwYXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eQorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBtZXRhICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhICAgICAgICAgICAgICAgICAgNQorICAgICBtZXRhLXBva3kgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhLXBva3kgICAgICAgICAgICAgNQorICAgICBtZXRhLXlvY3RvLWJzcCAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhLXlvY3RvLWJzcCAgICAgICAgNQorICAgICB3b3Jrc3BhY2UgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2UgICAgICAgOTkKKyAgICAgbWV0YS1zY290dHJpZiAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvbWV0YS1zY290dHJpZiAgIDYKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQWRkaW5nIHRoZSBsYXllciB0byB0aGlzIGZpbGUgZW5hYmxlcyB0aGUgYnVpbGQgc3lzdGVtIHRvCisgICAgICAgICAgICAgICAgbG9jYXRlIHRoZSBsYXllciBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbG9va3MgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVycyBmcm9tIHRoZSB0b3Agb2YgdGhlIGxpc3QgZG93biB0byB0aGUgYm90dG9tCisgICAgICAgICAgICAgICAgICAgIGluIHRoYXQgb3JkZXIuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlJz4KKyAgICAgICAgPHRpdGxlPkN1c3RvbWl6aW5nIEltYWdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGN1c3RvbWl6ZSBpbWFnZXMgdG8gc2F0aXNmeSBwYXJ0aWN1bGFyIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgc2V2ZXJhbCBtZXRob2RzIGFuZCBwcm92aWRlcyBndWlkZWxpbmVzIGZvciBlYWNoLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtbG9jYWxjb25mJz4KKyAgICAgICAgICAgIDx0aXRsZT5DdXN0b21pemluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFByb2JhYmx5IHRoZSBlYXNpZXN0IHdheSB0byBjdXN0b21pemUgYW4gaW1hZ2UgaXMgdG8gYWRkIGEKKyAgICAgICAgICAgICAgICBwYWNrYWdlIGJ5IHdheSBvZiB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIGl0IGlzIGxpbWl0ZWQgdG8gbG9jYWwgdXNlLCB0aGlzIG1ldGhvZCBnZW5lcmFsbHkgb25seQorICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gYWRkIHBhY2thZ2VzIGFuZCBpcyBub3QgYXMgZmxleGlibGUgYXMgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICB5b3VyIG93biBjdXN0b21pemVkIGltYWdlLgorICAgICAgICAgICAgICAgIFdoZW4geW91IGFkZCBwYWNrYWdlcyB1c2luZyBsb2NhbCB2YXJpYWJsZXMgdGhpcyB3YXksIHlvdSBuZWVkCisgICAgICAgICAgICAgICAgdG8gcmVhbGl6ZSB0aGF0IHRoZXNlIHZhcmlhYmxlIGNoYW5nZXMgYXJlIGluIGVmZmVjdCBmb3IgZXZlcnkKKyAgICAgICAgICAgICAgICBidWlsZCBhbmQgY29uc2VxdWVudGx5IGFmZmVjdCBhbGwgaW1hZ2VzLCB3aGljaCBtaWdodCBub3QKKyAgICAgICAgICAgICAgICBiZSB3aGF0IHlvdSByZXF1aXJlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBhZGQgYSBwYWNrYWdlIHRvIHlvdXIgaW1hZ2UgdXNpbmcgdGhlIGxvY2FsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBmaWxlLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz5JTUFHRV9JTlNUQUxMPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdpdGggdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3BlcmF0b3I6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgc3RyYWNlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVc2Ugb2YgdGhlIHN5bnRheCBpcyBpbXBvcnRhbnQgLSBzcGVjaWZpY2FsbHksIHRoZSBzcGFjZSBiZXR3ZWVuCisgICAgICAgICAgICAgICAgdGhlIHF1b3RlIGFuZCB0aGUgcGFja2FnZSBuYW1lLCB3aGljaCBpcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdHJhY2U8L2ZpbGVuYW1lPiBpbiB0aGlzIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgVGhpcyBzcGFjZSBpcyByZXF1aXJlZCBzaW5jZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9wZXJhdG9yIGRvZXMgbm90IGFkZCB0aGUgc3BhY2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB5b3UgbXVzdCB1c2UgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBpbnN0ZWFkCisgICAgICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdG9yIGlmIHlvdSB3YW50IHRvIGF2b2lkCisgICAgICAgICAgICAgICAgb3JkZXJpbmcgaXNzdWVzLgorICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgYmVjYXVzZSBkb2luZyBzbyB1bmNvbmRpdGlvbmFsbHkgYXBwZW5kcworICAgICAgICAgICAgICAgIHRvIHRoZSB2YXJpYWJsZSBhbmQgYXZvaWRzIG9yZGVyaW5nIHByb2JsZW1zIGR1ZSB0byB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBiZWluZyBzZXQgaW4gaW1hZ2UgcmVjaXBlcyBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlcyB3aXRoIG9wZXJhdG9ycyBsaWtlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPj89PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBlbnN1cmVzIHRoZSBvcGVyYXRpb24gdGFrZXMKKyAgICAgICAgICAgICAgICBhZmZlY3QuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIHNob3duIGluIGl0cyBzaW1wbGVzdCB1c2UsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTExfYXBwZW5kPC9maWxlbmFtZT4gYWZmZWN0cyBhbGwgaW1hZ2VzLgorICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUgc3ludGF4IHNvIHRoYXQgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgYXBwbGllcyB0byBhIHNwZWNpZmljIGltYWdlIG9ubHkuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmRfcG4tY29yZS1pbWFnZS1taW5pbWFsID0gIiBzdHJhY2UiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBhZGRzIDxmaWxlbmFtZT5zdHJhY2U8L2ZpbGVuYW1lPiB0byB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2Ugb25seS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhZGQgcGFja2FnZXMgdXNpbmcgYSBzaW1pbGFyIGFwcHJvYWNoIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwnPkNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTDwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIHRoaXMgdmFyaWFibGUsIG9ubHkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS0qPC9maWxlbmFtZT4gaW1hZ2VzIGFyZSBhZmZlY3RlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWltYWdlZmVhdHVyZXMnPgorICAgICAgICAgICAgPHRpdGxlPkN1c3RvbWl6aW5nIEltYWdlcyBVc2luZyBDdXN0b20gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIG1ldGhvZCBmb3IgY3VzdG9taXppbmcgeW91ciBpbWFnZSBpcyB0byBlbmFibGUgb3IKKyAgICAgICAgICAgICAgICBkaXNhYmxlIGhpZ2gtbGV2ZWwgaW1hZ2UgZmVhdHVyZXMgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBBbHRob3VnaCB0aGUgZnVuY3Rpb25zIGZvciBib3RoIHZhcmlhYmxlcyBhcmUgbmVhcmx5IGVxdWl2YWxlbnQsCisgICAgICAgICAgICAgICAgYmVzdCBwcmFjdGljZXMgZGljdGF0ZSB1c2luZyA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZyb20gd2l0aGluIGEgcmVjaXBlIGFuZCB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IGZyb20gd2l0aGluCisgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZlYXR1cmVzIHdvcmssIHRoZSBiZXN0IHJlZmVyZW5jZSBpcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhpcyBjbGFzcyBsaXN0cyBvdXQgdGhlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IG9mIHdoaWNoIG1vc3QgbWFwIHRvCisgICAgICAgICAgICAgICAgcGFja2FnZSBncm91cHMgd2hpbGUgc29tZSwgc3VjaCBhcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWJ1Zy10d2Vha3M8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVhZC1vbmx5LXJvb3RmczwvZmlsZW5hbWU+LCByZXNvbHZlIGFzIGdlbmVyYWwKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHNldHRpbmdzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgZmlsZSBsb29rcyBhdCB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUgYW5kIHRoZW4gbWFwcworICAgICAgICAgICAgICAgIG9yIGNvbmZpZ3VyZXMgdGhlIGZlYXR1cmUgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICAgICAgQmFzZWQgb24gdGhpcyBpbmZvcm1hdGlvbiwgdGhlIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgYWRkcyB0aGUgYXBwcm9wcmlhdGUgcGFja2FnZXMgb3IgY29uZmlndXJhdGlvbnMgdG8gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIEVmZmVjdGl2ZWx5LCB5b3UgYXJlIGVuYWJsaW5nIGV4dHJhIGZlYXR1cmVzIGJ5IGV4dGVuZGluZyB0aGUKKyAgICAgICAgICAgICAgICBjbGFzcyBvciBjcmVhdGluZyBhIGN1c3RvbSBjbGFzcyBmb3IgdXNlIHdpdGggc3BlY2lhbGl6ZWQgaW1hZ2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICBmcm9tIHdpdGhpbiB5b3VyIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBVc2luZyBhIHNlcGFyYXRlIGFyZWEgZnJvbSB3aGljaCB0byBlbmFibGUgZmVhdHVyZXMgd2l0aAorICAgICAgICAgICAgICAgIHRoaXMgdmFyaWFibGUgaGVscHMgeW91IGF2b2lkIG92ZXJ3cml0aW5nIHRoZSBmZWF0dXJlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICBpbWFnZSByZWNpcGUgdGhhdCBhcmUgZW5hYmxlZCB3aXRoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IGlzIGFkZGVkCisgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gd2l0aGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gaWxsdXN0cmF0ZSBob3cgeW91IGNhbiB1c2UgdGhlc2UgdmFyaWFibGVzIHRvIG1vZGlmeSB5b3VyCisgICAgICAgICAgICAgICAgaW1hZ2UsIGNvbnNpZGVyIGFuIGV4YW1wbGUgdGhhdCBzZWxlY3RzIHRoZSBTU0ggc2VydmVyLgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHNoaXBzIHdpdGggdHdvIFNTSCBzZXJ2ZXJzIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgd2l0aCB5b3VyIGltYWdlczogRHJvcGJlYXIgYW5kIE9wZW5TU0guCisgICAgICAgICAgICAgICAgRHJvcGJlYXIgaXMgYSBtaW5pbWFsIFNTSCBzZXJ2ZXIgYXBwcm9wcmlhdGUgZm9yCisgICAgICAgICAgICAgICAgcmVzb3VyY2UtY29uc3RyYWluZWQgZW52aXJvbm1lbnRzLCB3aGlsZSBPcGVuU1NIIGlzIGEKKyAgICAgICAgICAgICAgICB3ZWxsLWtub3duIHN0YW5kYXJkIFNTSCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZQorICAgICAgICAgICAgICAgIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIERyb3BiZWFyLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1sc2I8L2ZpbGVuYW1lPiBpbWFnZXMgYm90aAorICAgICAgICAgICAgICAgIGluY2x1ZGUgT3BlblNTSC4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgY29udGFpbiBhbiBTU0ggc2VydmVyLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGN1c3RvbWl6ZSB5b3VyIGltYWdlIGFuZCBjaGFuZ2UgdGhlc2UgZGVmYXVsdHMuCisgICAgICAgICAgICAgICAgRWRpdCB0aGUgPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICBpbiB5b3VyIHJlY2lwZSBvciB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBzbyB0aGF0IGl0IGNvbmZpZ3VyZXMgdGhlCisgICAgICAgICAgICAgICAgaW1hZ2UgeW91IGFyZSB3b3JraW5nIHdpdGggdG8gaW5jbHVkZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2gtc2VydmVyLWRyb3BiZWFyPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3NoLXNlcnZlci1vcGVuc3NoPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBhIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgbGlzdCBvZiBpbWFnZSBmZWF0dXJlcyB0aGF0IHNoaXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWN1c3RvbWJiJz4KKyAgICAgICAgICAgIDx0aXRsZT5DdXN0b21pemluZyBJbWFnZXMgVXNpbmcgQ3VzdG9tIC5iYiBGaWxlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBjdXN0b21pemUgYW4gaW1hZ2UgYnkgY3JlYXRpbmcgYSBjdXN0b20gcmVjaXBlCisgICAgICAgICAgICAgICAgdGhhdCBkZWZpbmVzIGFkZGl0aW9uYWwgc29mdHdhcmUgYXMgcGFydCBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBmb3JtIGZvciB0aGUgdHdvIGxpbmVzIHlvdSBuZWVkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTCA9ICJwYWNrYWdlZ3JvdXAtY29yZS14MTEtYmFzZSBwYWNrYWdlMSBwYWNrYWdlMiIKKworICAgICBpbmhlcml0IGNvcmUtaW1hZ2UKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlZmluaW5nIHRoZSBzb2Z0d2FyZSB1c2luZyBhIGN1c3RvbSByZWNpcGUgZ2l2ZXMgeW91IHRvdGFsCisgICAgICAgICAgICAgICAgY29udHJvbCBvdmVyIHRoZSBjb250ZW50cyBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVzZSB0aGUgY29ycmVjdCBuYW1lcyBvZiBwYWNrYWdlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0lOU1RBTEwnPklNQUdFX0lOU1RBTEw8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgWW91IG11c3QgdXNlIHRoZSBPcGVuRW1iZWRkZWQgbm90YXRpb24gYW5kIG5vdCB0aGUgRGViaWFuIG5vdGF0aW9uIGZvciB0aGUgbmFtZXMKKyAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Z2xpYmMtZGV2PC9maWxlbmFtZT4gaW5zdGVhZCBvZiA8ZmlsZW5hbWU+bGliYzYtZGV2PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgb3RoZXIgbWV0aG9kIGZvciBjcmVhdGluZyBhIGN1c3RvbSBpbWFnZSBpcyB0byBiYXNlIGl0IG9uIGFuIGV4aXN0aW5nIGltYWdlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW1hZ2UgYmFzZWQgb24gPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYnV0IGFkZCB0aGUgYWRkaXRpb25hbCBwYWNrYWdlIDxmaWxlbmFtZT5zdHJhY2U8L2ZpbGVuYW1lPiB0byB0aGUgaW1hZ2UsCisgICAgICAgICAgICAgICAgY29weSB0aGUgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmI8L2ZpbGVuYW1lPiB0byBhCisgICAgICAgICAgICAgICAgbmV3IDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB0aGUgZW5kIG9mIHRoZSBjb3B5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTCArPSAic3RyYWNlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWN1c3RvbXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5DdXN0b21pemluZyBJbWFnZXMgVXNpbmcgQ3VzdG9tIFBhY2thZ2UgR3JvdXBzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGNvbXBsZXggY3VzdG9tIGltYWdlcywgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIGN1c3RvbWl6aW5nCisgICAgICAgICAgICAgICAgYW4gaW1hZ2UgaXMgdG8gY3JlYXRlIGEgY3VzdG9tIHBhY2thZ2UgZ3JvdXAgcmVjaXBlIHRoYXQgaXMKKyAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZSBvciBpbWFnZXMuCisgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYSBwYWNrYWdlIGdyb3VwIHJlY2lwZSBpcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBleGFtaW5lIHRoYXQgcmVjaXBlLCB5b3Ugc2VlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFUyc+UEFDS0FHRVM8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgbGlzdHMgdGhlIHBhY2thZ2UgZ3JvdXAgcGFja2FnZXMgdG8gcHJvZHVjZS4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmluaGVyaXQgcGFja2FnZWdyb3VwPC9maWxlbmFtZT4gc3RhdGVtZW50CisgICAgICAgICAgICAgICAgc2V0cyBhcHByb3ByaWF0ZSBkZWZhdWx0IHZhbHVlcyBhbmQgYXV0b21hdGljYWxseSBhZGRzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1wdGVzdDwvZmlsZW5hbWU+IGNvbXBsZW1lbnRhcnkgcGFja2FnZXMgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICBwYWNrYWdlIHNwZWNpZmllZCBpbiB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5oZXJpdCBwYWNrYWdlZ3JvdXA8L2ZpbGVuYW1lPiBsaW5lIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIG5lYXIgdGhlIHRvcCBvZiB0aGUgcmVjaXBlLCBjZXJ0YWlubHkgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgZWFjaCBwYWNrYWdlIHlvdSBzcGVjaWZ5IGluIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+UkRFUEVORFM8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SUkVDT01NRU5EUyc+UlJFQ09NTUVORFM8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZW50cmllcyB0byBwcm92aWRlIGEgbGlzdCBvZiBwYWNrYWdlcyB0aGUgcGFyZW50IHRhc2sgcGFja2FnZQorICAgICAgICAgICAgICAgIHNob3VsZCBjb250YWluLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGV4YW1wbGVzIG9mIHRoZXNlIGZ1cnRoZXIgZG93biBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWJhc2UuYmI8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBzaG9ydCwgZmFicmljYXRlZCBleGFtcGxlIHNob3dpbmcgdGhlIHNhbWUgYmFzaWMKKyAgICAgICAgICAgICAgICBwaWVjZXMgZm9yIGEgaHlwb3RoZXRpY2FsIHBhY2thZ2Vncm91cCBkZWZpbmVkIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jdXN0b20uYmI8L2ZpbGVuYW1lPiwgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgdmFyaWFibGUgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gaXMgdGhlIHN0YW5kYXJkIHdheSB0bworICAgICAgICAgICAgICAgIGFiYnJldmlhdGUgdGhlIHJlZmVyZW5jZSB0byB0aGUgZnVsbCBwYWNrYWdlZ3JvdXAgbmFtZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY3VzdG9tPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVNDUklQVElPTiA9ICJNeSBDdXN0b20gUGFja2FnZSBHcm91cHMiCisKKyAgICAgaW5oZXJpdCBwYWNrYWdlZ3JvdXAKKworICAgICBQQUNLQUdFUyA9ICJcCisgICAgICAgICAke1BOfS1hcHBzIFwKKyAgICAgICAgICR7UE59LXRvb2xzIFwKKyAgICAgICAgICIKKworICAgICBSREVQRU5EU18ke1BOfS1hcHBzID0gIlwKKyAgICAgICAgIGRyb3BiZWFyIFwKKyAgICAgICAgIHBvcnRtYXAgXAorICAgICAgICAgcHNwbGFzaCIKKworICAgICBSREVQRU5EU18ke1BOfS10b29scyA9ICJcCisgICAgICAgICBvcHJvZmlsZSBcCisgICAgICAgICBvcHJvZmlsZXVpLXNlcnZlciBcCisgICAgICAgICBsdHRuZy10b29scyIKKworICAgICBSUkVDT01NRU5EU18ke1BOfS10b29scyA9ICJcCisgICAgICAgICBrZXJuZWwtbW9kdWxlLW9wcm9maWxlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHR3byBwYWNrYWdlIGdyb3VwIHBhY2thZ2VzIGFyZSBjcmVhdGVkIHdpdGggdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCB0aGVpcgorICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkIHBhY2thZ2UgZGVwZW5kZW5jaWVzIGxpc3RlZDogPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jdXN0b20tYXBwczwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWN1c3RvbS10b29sczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZXNlIHBhY2thZ2UgZ3JvdXAgcGFja2FnZXMsIHlvdSBuZWVkIHRvIGFkZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY3VzdG9tLWFwcHM8L2ZpbGVuYW1lPiBhbmQvb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWN1c3RvbS10b29sczwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz5JTUFHRV9JTlNUQUxMPC91bGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBGb3Igb3RoZXIgZm9ybXMgb2YgaW1hZ2UgZGVwZW5kZW5jaWVzIHNlZSB0aGUgb3RoZXIgYXJlYXMgb2YgdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtaW1hZ2UtbmFtZSc+CisgICAgICAgICAgICA8dGl0bGU+Q3VzdG9taXppbmcgYW4gSW1hZ2UgSG9zdG5hbWU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgY29uZmlndXJlZCBob3N0bmFtZSAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2hvc3RuYW1lPC9maWxlbmFtZT4pIGluIGFuIGltYWdlIGlzIHRoZQorICAgICAgICAgICAgICAgIHNhbWUgYXMgdGhlIG1hY2hpbmUgbmFtZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXF1YWxzICJxZW11eDg2IiwgdGhlIGNvbmZpZ3VyZWQgaG9zdG5hbWUgd3JpdHRlbiB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2hvc3RuYW1lPC9maWxlbmFtZT4gaXMgInFlbXV4ODYiLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGN1c3RvbWl6ZSB0aGlzIG5hbWUgYnkgYWx0ZXJpbmcgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICJob3N0bmFtZSIgdmFyaWFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2UtZmlsZXM8L2ZpbGVuYW1lPiByZWNpcGUgdXNpbmcgZWl0aGVyCisgICAgICAgICAgICAgICAgYW4gYXBwZW5kIGZpbGUgb3IgYSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgaW4gYW4gYXBwZW5kIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBob3N0bmFtZT0ibXlob3N0bmFtZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgaW4gYSBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBob3N0bmFtZV9wbi1iYXNlLWZpbGVzID0gIm15aG9zdG5hbWUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDaGFuZ2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgImhvc3RuYW1lIiBjYW4gYmUKKyAgICAgICAgICAgICAgICB1c2VmdWwgaW4gY2VydGFpbiBzaXR1YXRpb25zLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBuZWVkIHRvIGRvIGV4dGVuc2l2ZSB0ZXN0aW5nIG9uIGFuCisgICAgICAgICAgICAgICAgaW1hZ2UgYW5kIHlvdSB3b3VsZCBsaWtlIHRvIGVhc2lseSBpZGVudGlmeSB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICB1bmRlciB0ZXN0IGZyb20gZXhpc3RpbmcgaW1hZ2VzIHdpdGggdHlwaWNhbCBkZWZhdWx0CisgICAgICAgICAgICAgICAgaG9zdG5hbWVzLgorICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3UgY291bGQgY2hhbmdlIHRoZSBkZWZhdWx0IGhvc3RuYW1lIHRvCisgICAgICAgICAgICAgICAgInRlc3RtZSIsIHdoaWNoIHJlc3VsdHMgaW4gYWxsIHRoZSBpbWFnZXMgdXNpbmcgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAidGVzdG1lIi4KKyAgICAgICAgICAgICAgICBPbmNlIHRlc3RpbmcgaXMgY29tcGxldGUgYW5kIHlvdSBkbyBub3QgbmVlZCB0byByZWJ1aWxkIHRoZQorICAgICAgICAgICAgICAgIGltYWdlIGZvciB0ZXN0IGFueSBsb25nZXIsIHlvdSBjYW4gZWFzaWx5IHJlc2V0IHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgaG9zdG5hbWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFub3RoZXIgcG9pbnQgb2YgaW50ZXJlc3QgaXMgdGhhdCBpZiB5b3UgdW5zZXQgdGhlIHZhcmlhYmxlLAorICAgICAgICAgICAgICAgIHRoZSBpbWFnZSB3aWxsIGhhdmUgbm8gZGVmYXVsdCBob3N0bmFtZSBpbiB0aGUgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB1bnNldHMgdGhlIHZhcmlhYmxlIGluIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBob3N0bmFtZV9wbi1iYXNlLWZpbGVzID0gIiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSGF2aW5nIG5vIGRlZmF1bHQgaG9zdG5hbWUgaW4gdGhlIGZpbGVzeXN0ZW0gaXMgc3VpdGFibGUgZm9yCisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRzIHRoYXQgdXNlIGR5bmFtaWMgaG9zdG5hbWVzIHN1Y2ggYXMgdmlydHVhbAorICAgICAgICAgICAgICAgIG1hY2hpbmVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtd3JpdGluZy1hLW5ldy1yZWNpcGUnPgorICAgICAgICA8dGl0bGU+V3JpdGluZyBhIE5ldyBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUmVjaXBlcyAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzKSBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cworICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBFYWNoIHNvZnR3YXJlIGNvbXBvbmVudCBidWlsdCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgcmVxdWlyZXMgYSByZWNpcGUgdG8gZGVmaW5lIHRoZSBjb21wb25lbnQuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUsIHdyaXRlLCBhbmQgdGVzdCBhIG5ldworICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlcyB0aGF0IGFyZSB1c2VmdWwgZm9yIHJlY2lwZXMgYW5kCisgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIGFib3V0IHJlY2lwZSBuYW1pbmcgaXNzdWVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi12YXJsb2NhbGl0eS1yZWNpcGUtcmVxdWlyZWQnPlJlcXVpcmVkPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtb3ZlcnZpZXcnPgorICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhlIGJhc2ljIHByb2Nlc3MgZm9yIGNyZWF0aW5nIGEKKyAgICAgICAgICAgICAgICBuZXcgcmVjaXBlLgorICAgICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhlIHNlY3Rpb24gcHJvdmlkZXMgZGV0YWlscyBmb3IgdGhlIHN0ZXBzLgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLWxvY2F0ZS1vci1hdXRvbWF0aWNhbGx5LWNyZWF0ZS1hLWJhc2UtcmVjaXBlJz4KKyAgICAgICAgICAgIDx0aXRsZT5Mb2NhdGUgb3IgQXV0b21hdGljYWxseSBDcmVhdGUgYSBCYXNlIFJlY2lwZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWx3YXlzIHdyaXRlIGEgcmVjaXBlIGZyb20gc2NyYXRjaC4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aHJlZSBjaG9pY2VzIGV4aXN0IHRoYXQgY2FuIGhlbHAgeW91IHF1aWNrbHkgZ2V0IGEKKyAgICAgICAgICAgICAgICBzdGFydCBvbiBhIG5ldyByZWNpcGU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBIGNvbW1hbmQgdGhhdCBhc3Npc3RzIGluIGNyZWF0aW5nIGEgcmVjaXBlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYW4gZW52aXJvbm1lbnQgY29uZHVjaXZlIHRvIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQSBjb21tYW5kIHByb3ZpZGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRoYXQgYXV0b21hdGVzCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiBvZiBhIGJhc2UgcmVjaXBlIGJhc2VkIG9uIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGlzdGluZyBSZWNpcGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBhbmQgbW9kaWZpY2F0aW9uIG9mIGFuIGV4aXN0aW5nIHJlY2lwZSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzaW1pbGFyIGluIGZ1bmN0aW9uIHRvIHRoZSByZWNpcGUgeW91IG5lZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHJlY2lwZSBzeW50YXgsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlY2lwZS1zeW50YXgnPlJlY2lwZSBTeW50YXg8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtY3JlYXRpbmctdGhlLWJhc2UtcmVjaXBlLXVzaW5nLWRldnRvb2wnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyB0aGUgQmFzZSBSZWNpcGUgVXNpbmcgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIHVzZXMgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgbG9naWMgZm9yIGF1dG8tY3JlYXRpbmcgdGhlIHJlY2lwZSBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgIGJlbG93LgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNldHMgdXAgYW4gZW52aXJvbm1lbnQgdGhhdCBtYWtlcyBpdCBlYXN5IGZvciB5b3UgdG8KKyAgICAgICAgICAgICAgICAgICAgcGF0Y2ggdGhlIHNvdXJjZSBhbmQgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSByZWNpcGUgYXMKKyAgICAgICAgICAgICAgICAgICAgaXMgb2Z0ZW4gbmVjZXNzYXJ5IHdoZW4gYWRkaW5nIGEgcmVjaXBlIHRvIGJ1aWxkIGEgbmV3CisgICAgICAgICAgICAgICAgICAgIHBpZWNlIG9mIHNvZnR3YXJlIHRvIGJlIGluY2x1ZGVkIGluIGEgYnVpbGQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWEtY2xvc2VyLWxvb2stYXQtZGV2dG9vbC1hZGQnPkEgQ2xvc2VyIExvb2sgYXQgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBhZGQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1jcmVhdGluZy10aGUtYmFzZS1yZWNpcGUtdXNpbmctcmVjaXBldG9vbCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIHRoZSBCYXNlIFJlY2lwZSBVc2luZyA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2wgY3JlYXRlPC9maWxlbmFtZT4gYXV0b21hdGVzIGNyZWF0aW9uCisgICAgICAgICAgICAgICAgICAgIG9mIGEgYmFzZSByZWNpcGUgZ2l2ZW4gYSBzZXQgb2Ygc291cmNlIGNvZGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEFzIGxvbmcgYXMgeW91IGNhbiBleHRyYWN0IG9yIHBvaW50IHRvIHRoZSBzb3VyY2UgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgIHRoZSB0b29sIHdpbGwgY29uc3RydWN0IGEgcmVjaXBlIGFuZCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBhbGwgcHJlLWJ1aWxkIGluZm9ybWF0aW9uIGludG8gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYW4gYXBwbGljYXRpb24gdGhhdCBidWlsZHMKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgQXV0b3Rvb2xzLgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyB0aGUgYmFzZSByZWNpcGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiByZXN1bHRzIGluIGEgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHRoYXQgaGFzIHRoZSBwcmUtYnVpbGQgZGVwZW5kZW5jaWVzLCBsaWNlbnNlIHJlcXVpcmVtZW50cywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGNoZWNrc3VtcyBjb25maWd1cmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBydW4gdGhlIHRvb2wsIHlvdSBqdXN0IG5lZWQgdG8gYmUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZlIHNvdXJjZWQgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgICAgICBUbyBnZXQgaGVscCBvbiB0aGUgdG9vbCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJlY2lwZXRvb2wgLWgKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgdXNhZ2U6IHJlY2lwZXRvb2wgWy1kXSBbLXFdIFstLWNvbG9yIENPTE9SXSBbLWhdICZsdDtzdWJjb21tYW5kJmd0OyAuLi4KKworICAgICBPcGVuRW1iZWRkZWQgcmVjaXBlIHRvb2wKKworICAgICBvcHRpb25zOgorICAgICAgIC1kLCAtLWRlYnVnICAgICBFbmFibGUgZGVidWcgb3V0cHV0CisgICAgICAgLXEsIC0tcXVpZXQgICAgIFByaW50IG9ubHkgZXJyb3JzCisgICAgICAgLS1jb2xvciBDT0xPUiAgIENvbG9yaXplIG91dHB1dCAod2hlcmUgQ09MT1IgaXMgYXV0bywgYWx3YXlzLCBuZXZlcikKKyAgICAgICAtaCwgLS1oZWxwICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisgICAgIHN1YmNvbW1hbmRzOgorICAgICAgIGNyZWF0ZSAgICAgICAgICBDcmVhdGUgYSBuZXcgcmVjaXBlCisgICAgICAgbmV3YXBwZW5kICAgICAgIENyZWF0ZSBhIGJiYXBwZW5kIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBpbiB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgICAgIGxheWVyCisgICAgICAgc2V0dmFyICAgICAgICAgIFNldCBhIHZhcmlhYmxlIHdpdGhpbiBhIHJlY2lwZQorICAgICAgIGFwcGVuZGZpbGUgICAgICBDcmVhdGUvdXBkYXRlIGEgYmJhcHBlbmQgdG8gcmVwbGFjZSBhIHRhcmdldCBmaWxlCisgICAgICAgYXBwZW5kc3JjZmlsZXMgIENyZWF0ZS91cGRhdGUgYSBiYmFwcGVuZCB0byBhZGQgb3IgcmVwbGFjZSBzb3VyY2UgZmlsZXMKKyAgICAgICBhcHBlbmRzcmNmaWxlICAgQ3JlYXRlL3VwZGF0ZSBhIGJiYXBwZW5kIHRvIGFkZCBvciByZXBsYWNlIGEgc291cmNlIGZpbGUKKyAgICAgVXNlIHJlY2lwZXRvb2wgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZSAtbzwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBiYXNlIHJlY2lwZSBhbmQgbG9jYXRlcyBpdCBwcm9wZXJseSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgdGhhdCBjb250YWlucyB5b3VyIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIHN5bnRheCBleGFtcGxlczoKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgc3ludGF4IHRvIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBnZW5lcmF0ZWQsIHRoZSByZWNpcGUgcmVzaWRlcyBpbiB0aGUgZXhpc3Rpbmcgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGNvZGUgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcmVjaXBldG9vbCBjcmVhdGUgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiZuYnNwOzxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHN5bnRheCB0byBnZW5lcmF0ZSBhIHJlY2lwZSB1c2luZyBjb2RlIHRoYXQgeW91CisgICAgICAgICAgICAgICAgICAgIGV4dHJhY3QgZnJvbSA8cmVwbGFjZWFibGU+c291cmNlPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBleHRyYWN0ZWQgY29kZSBpcyBwbGFjZWQgaW4gaXRzIG93biBsYXllciBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgIGJ5IDxyZXBsYWNlYWJsZT5FWFRFUk5BTFNSQzwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJlY2lwZXRvb2wgY3JlYXRlIC1vIDxyZXBsYWNlYWJsZT5PVVRGSUxFPC9yZXBsYWNlYWJsZT4gLXggPHJlcGxhY2VhYmxlPkVYVEVSTkFMU1JDPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgc3ludGF4IHRvIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG9wdGlvbnMgZGlyZWN0IDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWdnaW5nIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBPbmNlIGdlbmVyYXRlZCwgdGhlIHJlY2lwZSByZXNpZGVzIGluIHRoZSBleGlzdGluZyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgY29kZSBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByZWNpcGV0b29sIGNyZWF0ZSAtZCAtbyA8cmVwbGFjZWFibGU+T1VURklMRTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1sb2NhdGluZy1hbmQtdXNpbmctYS1zaW1pbGFyLXJlY2lwZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkxvY2F0aW5nIGFuZCBVc2luZyBhIFNpbWlsYXIgUmVjaXBlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgd3JpdGluZyBhIHJlY2lwZSBmcm9tIHNjcmF0Y2gsIGl0IGlzIG9mdGVuIHVzZWZ1bCB0bworICAgICAgICAgICAgICAgICAgICBkaXNjb3ZlciB3aGV0aGVyIHNvbWVvbmUgZWxzZSBoYXMgYWxyZWFkeSB3cml0dGVuIG9uZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIG1lZXRzIChvciBjb21lcyBjbG9zZSB0byBtZWV0aW5nKSB5b3VyIG5lZWRzLgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBhbmQgT3BlbkVtYmVkZGVkIGNvbW11bml0aWVzIG1haW50YWluIG1hbnkKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IG1pZ2h0IGJlIGNhbmRpZGF0ZXMgZm9yIHdoYXQgeW91IGFyZSBkb2luZy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgZ29vZCBjZW50cmFsIGluZGV4IG9mIHRoZXNlIHJlY2lwZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZyc+T3BlbkVtYmVkZGVkIExheWVyIEluZGV4PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdvcmtpbmcgZnJvbSBhbiBleGlzdGluZyByZWNpcGUgb3IgYSBza2VsZXRvbiByZWNpcGUgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGJlc3Qgd2F5IHRvIGdldCBzdGFydGVkLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIHBvaW50cyBvbiBib3RoIG1ldGhvZHM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxvY2F0ZSBhbmQgbW9kaWZ5IGEgcmVjaXBlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjbG9zZSB0byB3aGF0IHlvdSB3YW50IHRvIGRvOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2Qgd29ya3Mgd2hlbiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCByZWNpcGUgc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1ldGhvZCBkb2VzIG5vdCB3b3JrIHNvIHdlbGwgZm9yIHRob3NlIG5ldyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IG9yIHdyaXRpbmcgcmVjaXBlcy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U29tZSByaXNrcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZXRob2QgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSByZWNpcGUgdGhhdCBoYXMgYXJlYXMgdG90YWxseSB1bnJlbGF0ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGFjY29tcGxpc2ggd2l0aCB5b3VyIHJlY2lwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgcmVjb2duaXppbmcgYXJlYXMgb2YgdGhlIHJlY2lwZSB0aGF0IHlvdSBtaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgdG8gYWRkIGZyb20gc2NyYXRjaCwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbCB0aGVzZSByaXNrcyBzdGVtIGZyb20gdW5mYW1pbGlhcml0eSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIHJlY2lwZSBzcGFjZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlIGFuZCBtb2RpZnkgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZWxldG9uIHJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGZvciBzb21lIHJlYXNvbiB5b3UgZG8gbm90IHdhbnQgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBhbmQgeW91IGNhbm5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmQgYW4gZXhpc3RpbmcgcmVjaXBlIHRoYXQgaXMgY2xvc2UgdG8gbWVldGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgbmVlZHMsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSB0aGUgZnVuZGFtZW50YWwgYXJlYXMgb2YgYSBuZXcgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgREVTQ1JJUFRJT04gPSAiIgorICAgICBIT01FUEFHRSA9ICIiCisgICAgIExJQ0VOU0UgPSAiIgorICAgICBTRUNUSU9OID0gIiIKKyAgICAgREVQRU5EUyA9ICIiCisgICAgIExJQ19GSUxFU19DSEtTVU0gPSAiIgorCisgICAgIFNSQ19VUkkgPSAiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtc3RvcmluZy1hbmQtbmFtaW5nLXRoZS1yZWNpcGUnPgorICAgICAgICAgICAgPHRpdGxlPlN0b3JpbmcgYW5kIE5hbWluZyB0aGUgUmVjaXBlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB5b3VyIGJhc2UgcmVjaXBlLCB5b3Ugc2hvdWxkIHB1dCBpdCBpbiB5b3VyCisgICAgICAgICAgICAgICAgb3duIGxheWVyIGFuZCBuYW1lIGl0IGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICAgICAgTG9jYXRpbmcgaXQgY29ycmVjdGx5IGVuc3VyZXMgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIGNhbiBmaW5kIGl0IHdoZW4geW91IHVzZSBCaXRCYWtlIHRvIHByb2Nlc3MgdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3RvcmluZyBZb3VyIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBsb2NhdGVzIHlvdXIgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIGxheWVyJ3MgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJGSUxFUyc+PGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHNldHMgdXAgYSBwYXRoIGZyb20gd2hpY2ggdGhlIGJ1aWxkIHN5c3RlbSBjYW4KKyAgICAgICAgICAgICAgICAgICAgbG9jYXRlIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIHR5cGljYWwgdXNlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAorICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3UgbG9jYXRlIHlvdXIgbmV3IHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBpbnNpZGUgeW91ciBsYXllciBzdWNoIHRoYXQgaXQgY2FuIGJlIGZvdW5kLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGxheWVycyBhcmUKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk5hbWluZyBZb3VyIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBuYW1lIHlvdXIgcmVjaXBlLCB5b3UgbmVlZCB0byBmb2xsb3cgdGhpcyBuYW1pbmcKKyAgICAgICAgICAgICAgICAgICAgY29udmVudGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+YmFzZW5hbWU8L3JlcGxhY2VhYmxlPl88cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+LmJiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNlIGxvd2VyLWNhc2VkIGNoYXJhY3RlcnMgYW5kIGRvIG5vdCBpbmNsdWRlIHRoZSByZXNlcnZlZAorICAgICAgICAgICAgICAgICAgICBzdWZmaXhlcyA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWNyb3NzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4taW5pdGlhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IGNhc3VhbGx5IChpLmUuIGRvIG5vdCB1c2UgdGhlbQorICAgICAgICAgICAgICAgICAgICBhcyBwYXJ0IG9mIHlvdXIgcmVjaXBlIG5hbWUgdW5sZXNzIHRoZSBzdHJpbmcgYXBwbGllcykuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgY3Vwc18xLjcuMC5iYgorICAgICBnYXdrXzQuMC4yLmJiCisgICAgIGlyc3NpXzAuOC4xNi1yYzEuYmIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1ydW5uaW5nLWEtYnVpbGQtb24tdGhlLXJlY2lwZSc+CisgICAgICAgICAgICA8dGl0bGU+UnVubmluZyBhIEJ1aWxkIG9uIHRoZSBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDcmVhdGluZyBhIG5ldyByZWNpcGUgaXMgdXN1YWxseSBhbiBpdGVyYXRpdmUgcHJvY2VzcyB0aGF0CisgICAgICAgICAgICAgICAgcmVxdWlyZXMgdXNpbmcgQml0QmFrZSB0byBwcm9jZXNzIHRoZSByZWNpcGUgbXVsdGlwbGUgdGltZXMgaW4KKyAgICAgICAgICAgICAgICBvcmRlciB0byBwcm9ncmVzc2l2ZWx5IGRpc2NvdmVyIGFuZCBhZGQgaW5mb3JtYXRpb24gdG8gdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzc3VtaW5nIHlvdSBoYXZlIHNvdXJjZWQgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICBhbmQgeW91IGFyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgIHVzZSBCaXRCYWtlIHRvIHByb2Nlc3MgeW91ciByZWNpcGUuCisgICAgICAgICAgICAgICAgQWxsIHlvdSBuZWVkIHRvIHByb3ZpZGUgaXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5iYXNlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gb2YgdGhlIHJlY2lwZSBhcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+YmFzZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKworICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIGEKKyAgICAgICAgICAgICAgICB0ZW1wb3Jhcnkgd29yayBkaXJlY3RvcnkgZm9yIGVhY2ggcmVjaXBlCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgd2hlcmUgaXQga2VlcHMgZXh0cmFjdGVkIHNvdXJjZSBmaWxlcywgbG9nIGZpbGVzLCBpbnRlcm1lZGlhdGUKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbiBhbmQgcGFja2FnaW5nIGZpbGVzLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwYXRoIHRvIHRoZSBwZXItcmVjaXBlIHRlbXBvcmFyeSB3b3JrIGRpcmVjdG9yeSBkZXBlbmRzCisgICAgICAgICAgICAgICAgb24gdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgaXMgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgVGhlIHF1aWNrZXN0IHdheSB0byBmaW5kIHRoaXMgcGF0aCBpcyB0byBoYXZlIEJpdEJha2UgcmV0dXJuIGl0CisgICAgICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1lIDxyZXBsYWNlYWJsZT5iYXNlbmFtZTwvcmVwbGFjZWFibGU+IHwgZ3JlcCBeV09SS0RJUj0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIGEgU291cmNlIERpcmVjdG9yeSB0b3AtbGV2ZWwgZm9sZGVyIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiwgYSBkZWZhdWx0IEJ1aWxkIERpcmVjdG9yeSBhdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4sIGFuZCBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtcG9reS1saW51eDwvZmlsZW5hbWU+IG1hY2hpbmUgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgc3VwcG9zZSB5b3VyIHJlY2lwZSBpcyBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMS4zLjAuYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSB3b3JrIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8KKyAgICAgICAgICAgICAgICBidWlsZCB0aGUgcGFja2FnZSB3b3VsZCBiZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvZm9vLzEuMy4wLXIwCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluc2lkZSB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgc3ViLWRpcmVjdG9yaWVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnBhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50ZW1wPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIGJ1aWxkLCB5b3UgY2FuIGV4YW1pbmUgdGhlc2UgdG8gZGV0ZXJtaW5lIGhvdyB3ZWxsCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHdlbnQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBsb2cgZmlsZXMgZm9yIGVhY2ggdGFzayBpbiB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlbXA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2Zvby8xLjMuMC1yMC90ZW1wPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBMb2cgZmlsZXMgYXJlIG5hbWVkIDxmaWxlbmFtZT5sb2cuPHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bG9nLmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9nLmRvX2ZldGNoPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9nLmRvX2NvbXBpbGU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgcHJvY2VzcyBpbgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I292ZXJ2aWV3LWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLWZldGNoaW5nLWNvZGUnPgorICAgICAgICAgICAgPHRpdGxlPkZldGNoaW5nIENvZGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZmlyc3QgdGhpbmcgeW91ciByZWNpcGUgbXVzdCBkbyBpcyBzcGVjaWZ5IGhvdyB0byBmZXRjaAorICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgRmV0Y2hpbmcgaXMgY29udHJvbGxlZCBtYWlubHkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgWW91ciByZWNpcGUgbXVzdCBoYXZlIGEgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIHRoYXQgcG9pbnRzIHRvIHdoZXJlIHRoZSBzb3VyY2UgaXMgbG9jYXRlZC4KKyAgICAgICAgICAgICAgICBGb3IgYSBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gb2Ygc291cmNlIGxvY2F0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZXMtZGV2LWVudmlyb25tZW50Jz5Tb3VyY2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIHVzZXMgdGhlIHByZWZpeCBvZiBlYWNoIGVudHJ5IGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHdoaWNoCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYi1mZXRjaGVycyc+ZmV0Y2hlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gdXNlIHRvIGdldCB5b3VyIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBJdCBpcyB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0aGF0IHRyaWdnZXJzCisgICAgICAgICAgICAgICAgdGhlIGZldGNoZXIuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzayB1c2VzIHRoZSB2YXJpYWJsZSBhZnRlciBzb3VyY2UgaXMgZmV0Y2hlZCB0byBhcHBseQorICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU09WRVJSSURFUyc+PGZpbGVuYW1lPkZJTEVTT1ZFUlJJREVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvciBzY2FubmluZyBkaXJlY3RvcnkgbG9jYXRpb25zIGZvciBsb2NhbCBmaWxlcyBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlIG11c3QKKyAgICAgICAgICAgICAgICBkZWZpbmUgZWFjaCB1bmlxdWUgbG9jYXRpb24gZm9yIHlvdXIgc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgIEl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gbm90IGhhcmQtY29kZSB2ZXJzaW9uIG51bWJlcnMgaW4gYSBVUkwgdXNlZAorICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gaGFyZC1jb2RlIHRoZXNlIHZhbHVlcywgdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIHdoaWNoIGNhdXNlcyB0aGUgZmV0Y2ggcHJvY2VzcyB0byB1c2UgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBmaWxlbmFtZS4KKyAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIHRoZSB2ZXJzaW9uIGluIHRoaXMgbWFubmVyIG1lYW5zIHRoYXQgdXBncmFkaW5nIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSB0byBhIGZ1dHVyZSB2ZXJzaW9uIGlzIGFzIHNpbXBsZSBhcyByZW5hbWluZyB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZWNpcGUgd2hlcmUgdGhlIHNvdXJjZSBjb21lcyBmcm9tIGEgc2luZ2xlIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgTm90aWNlIHRoZSB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRmlsZXMgbWVudGlvbmVkIGluIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gd2hvc2UgbmFtZXMgZW5kCisgICAgICAgICAgICAgICAgaW4gYSB0eXBpY2FsIGFyY2hpdmUgZXh0ZW5zaW9uIChlLmcuIDxmaWxlbmFtZT4udGFyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi50YXIuZ3o8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPi50YXIuYnoyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi56aXA8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKSwgYXJlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICBleHRyYWN0ZWQgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICBGb3IgYW5vdGhlciBleGFtcGxlIHRoYXQgc3BlY2lmaWVzIHRoZXNlIHR5cGVzIG9mIGZpbGVzLCBzZWUKKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmV3LXJlY2lwZS1hdXRvdG9vbGVkLXBhY2thZ2UnPkF1dG90b29sZWQgUGFja2FnZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciB3YXkgb2Ygc3BlY2lmeWluZyBzb3VyY2UgaXMgZnJvbSBhbiBTQ00uCisgICAgICAgICAgICAgICAgRm9yIEdpdCByZXBvc2l0b3JpZXMsIHlvdSBtdXN0IHNwZWNpZnkKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZCB5b3Ugc2hvdWxkIHNwZWNpZnkKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBpbmNsdWRlIHRoZSByZXZpc2lvbiB3aXRoCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1BWJz48ZmlsZW5hbWU+U1JDUFY8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ1JFViA9ICJkNjkxOGM4ODMyNzkzYjQyMDVlZDNiZmVkZTc4YzJmOTE1YzIzMzg1IgorCisgICAgIFBSID0gInI2IgorICAgICBQViA9ICIxLjAuNStnaXQke1NSQ1BWfSIKKworICAgICBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwuZGsvYmxrdHJhY2UuZ2l0IFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbGRmbGFncy5wYXRjaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdXIgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICBVUkxzIHBvaW50aW5nIHRvIGluZGl2aWR1YWwgZmlsZXMgZmV0Y2hlZCBmcm9tIGEgcmVtb3RlIHNlcnZlcgorICAgICAgICAgICAgICAgIG90aGVyIHRoYW4gYSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCBCaXRCYWtlIGF0dGVtcHRzIHRvCisgICAgICAgICAgICAgICAgdmVyaWZ5IHRoZSBmaWxlcyBhZ2FpbnN0IGNoZWNrc3VtcyBkZWZpbmVkIGluIHlvdXIgcmVjaXBlIHRvCisgICAgICAgICAgICAgICAgZW5zdXJlIHRoZXkgaGF2ZSBub3QgYmVlbiB0YW1wZXJlZCB3aXRoIG9yIG90aGVyd2lzZSBtb2RpZmllZAorICAgICAgICAgICAgICAgIHNpbmNlIHRoZSByZWNpcGUgd2FzIHdyaXR0ZW4uCisgICAgICAgICAgICAgICAgVHdvIGNoZWNrc3VtcyBhcmUgdXNlZDoKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSVttZDVzdW1dPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUklbc2hhMjU2c3VtXTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgbW9yZSB0aGFuIGEgc2luZ2xlIFVSTCAoZXhjbHVkaW5nIFNDTSBVUkxzKSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICBwcm92aWRlIHRoZSA8ZmlsZW5hbWU+bWQ1PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYTI1NjwvZmlsZW5hbWU+IGNoZWNrc3VtcyBmb3IgZWFjaCBVUkwuCisgICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzLCB5b3UgcHJvdmlkZSBhIG5hbWUgZm9yIGVhY2ggVVJMIGFzIHBhcnQgb2YKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBhbmQgdGhlbiByZWZlcmVuY2UgdGhhdCBuYW1lCisgICAgICAgICAgICAgICAgaW4gdGhlIHN1YnNlcXVlbnQgY2hlY2tzdW0gc3RhdGVtZW50cy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgY29tYmluaW5nIGxpbmVzIGZyb20gdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC5pbmM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0XzIuMjQuMS5iYjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3NjbS9naXQvZ2l0LSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGwgXAorICAgICAgICAgICAgICAgICR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvc2NtL2dpdC9naXQtbWFucGFnZXMtJHtQVn0udGFyLmd6O25hbWU9bWFucGFnZXMiCisKKyAgICAgU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiMTY2YmRlOTZhZGJiYzExYzg4NDNkNGY4ZjRmOTgxMWIiCisgICAgIFNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImFkNTMzNDk1NjMwMWM4Njg0MWViMWU1YjFiYjIwODg0YTZiYWQ4OWExMGE2NzYyYzk1ODIyMGM3Y2Y2NGRhMDIiCisgICAgIFNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIzMWMyMjcyYTg5NzkwMjI0OTdiYTNkNDIwMmRmMTQ1ZCIKKyAgICAgU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gIjlhN2FlM2EwOTNiZWEzOTc3MGViOTZjYTNlNWI0MGJmZjdhZjBiOWY2MTIzZjA4OWQ3ODIxZDBlNWI4ZTEyMzAiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQcm9wZXIgdmFsdWVzIGZvciA8ZmlsZW5hbWU+bWQ1PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYTI1NjwvZmlsZW5hbWU+IGNoZWNrc3VtcyBtaWdodCBiZSBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICB3aXRoIG90aGVyIHNpZ25hdHVyZXMgb24gdGhlIGRvd25sb2FkIHBhZ2UgZm9yIHRoZSB1cHN0cmVhbQorICAgICAgICAgICAgICAgIHNvdXJjZSAoZS5nLiA8ZmlsZW5hbWU+bWQ1PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYTE8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnNoYTI1NjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5HUEc8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG9ubHkgZGVhbHMgd2l0aAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGEyNTZzdW08L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPm1kNXN1bTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIHlvdSBzaG91bGQgdmVyaWZ5IGFsbCB0aGUgc2lnbmF0dXJlcyB5b3UgZmluZCBieSBoYW5kLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBubyA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGNoZWNrc3VtcyBhcmUgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgd2hlbiB5b3UgYXR0ZW1wdCB0byBidWlsZCB0aGUgcmVjaXBlLCBvciB5b3UgcHJvdmlkZSBhbgorICAgICAgICAgICAgICAgIGluY29ycmVjdCBjaGVja3N1bSwgdGhlIGJ1aWxkIHdpbGwgcHJvZHVjZSBhbiBlcnJvciBmb3IgZWFjaAorICAgICAgICAgICAgICAgIG1pc3Npbmcgb3IgaW5jb3JyZWN0IGNoZWNrc3VtLgorICAgICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIGVycm9yIG1lc3NhZ2UsIHRoZSBidWlsZCBzeXN0ZW0gcHJvdmlkZXMKKyAgICAgICAgICAgICAgICB0aGUgY2hlY2tzdW0gc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZldGNoZWQgZmlsZS4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IGNoZWNrc3VtcywgeW91IGNhbiBjb3B5IGFuZCBwYXN0ZQorICAgICAgICAgICAgICAgIHRoZW0gaW50byB5b3VyIHJlY2lwZSBhbmQgdGhlbiBydW4gdGhlIGJ1aWxkIGFnYWluIHRvIGNvbnRpbnVlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQsIGlmIHRoZSB1cHN0cmVhbSBzb3VyY2UgcHJvdmlkZXMgc2lnbmF0dXJlcworICAgICAgICAgICAgICAgICAgICBmb3IgdmVyaWZ5aW5nIHRoZSBkb3dubG9hZGVkIHNvdXJjZSBjb2RlLCB5b3Ugc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeSB0aG9zZSBtYW51YWxseSBiZWZvcmUgc2V0dGluZyB0aGUgY2hlY2tzdW0gdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgYW5kIGNvbnRpbnVpbmcgd2l0aCB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbmFsIGV4YW1wbGUgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCBhbmQgaXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLXNhdG8vcnh2dC11bmljb2RlL3J4dnQtdW5pY29kZV85LjIwLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUncyA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBpZGVudGlmaWVzCisgICAgICAgICAgICAgICAgbXVsdGlwbGUgZmlsZXMgYXMgdGhlIHNvdXJjZSBmaWxlcyBmb3IgdGhlIHJlY2lwZTogYSB0YXJiYWxsLCBhCisgICAgICAgICAgICAgICAgcGF0Y2ggZmlsZSwgYSBkZXNrdG9wIGZpbGUsIGFuZCBhbiBpY29uLgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJodHRwOi8vZGlzdC5zY2htb3JwLmRlL3J4dnQtdW5pY29kZS9BdHRpYy9yeHZ0LXVuaWNvZGUtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgICAgICAgZmlsZTovL3h3Yy5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL3J4dnQuZGVza3RvcCBcCisgICAgICAgICAgICAgICAgZmlsZTovL3J4dnQucG5nIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc3BlY2lmeSBsb2NhbCBmaWxlcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+IFVSSSBwcm90b2NvbCwgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGZldGNoZXMgZmlsZXMgZnJvbSB0aGUgbG9jYWwgbWFjaGluZS4KKyAgICAgICAgICAgICAgICBUaGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBzZWFyY2hlcyBzcGVjaWZpYyBkaXJlY3RvcmllcyBpbiBhIGNlcnRhaW4gb3JkZXI6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlAnPjxmaWxlbmFtZT5CUDwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJQTic+PGZpbGVuYW1lPkJQTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3JpZXMgYXJlIGFzc3VtZWQgdG8gYmUgc3ViZGlyZWN0b3JpZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSByZWNpcGUgb3IgYXBwZW5kIGZpbGUgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICBGb3IgYW5vdGhlciBleGFtcGxlIHRoYXQgc3BlY2lmaWVzIHRoZXNlIHR5cGVzIG9mIGZpbGVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25ldy1yZWNpcGUtc2luZ2xlLWMtZmlsZS1wYWNrYWdlLWhlbGxvLXdvcmxkJz5TaW5nbGUgLmMgRmlsZSBQYWNrYWdlIChIZWxsbyBXb3JsZCEpPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBhbHNvIHNwZWNpZmllcyBhIHBhdGNoIGZpbGUuCisgICAgICAgICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGZpbGVzIHdob3NlIG5hbWVzIHVzdWFsbHkgZW5kIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4uZGlmZjwvZmlsZW5hbWU+IGJ1dAorICAgICAgICAgICAgICAgIGNhbiBlbmQgd2l0aCBjb21wcmVzc2VkIHN1ZmZpeGVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlmZi5nejwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXRjaC5iejI8L2ZpbGVuYW1lPiwgZm9yIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgcGF0Y2hlcyBhcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmV3LXJlY2lwZS1wYXRjaGluZy1jb2RlJz5QYXRjaGluZyBDb2RlPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLXVucGFja2luZy1jb2RlJz4KKyAgICAgICAgICAgIDx0aXRsZT5VbnBhY2tpbmcgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzayB1bnBhY2tzIHRoZSBzb3VyY2Ugd2l0aAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBwb2ludGluZyB0byB3aGVyZSBpdCBpcyB1bnBhY2tlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBmZXRjaGluZyB5b3VyIHNvdXJjZSBmaWxlcyBmcm9tIGFuIHVwc3RyZWFtIHNvdXJjZQorICAgICAgICAgICAgICAgIGFyY2hpdmVkIHRhcmJhbGwgYW5kIHRoZSB0YXJiYWxsJ3MgaW50ZXJuYWwgc3RydWN0dXJlIG1hdGNoZXMKKyAgICAgICAgICAgICAgICB0aGUgY29tbW9uIGNvbnZlbnRpb24gb2YgYSB0b3AtbGV2ZWwgc3ViZGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59LSR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIHRoZW4geW91IGRvIG5vdCBuZWVkIHRvIHNldCA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3BlY2lmaWVzIHRvIGZldGNoCisgICAgICAgICAgICAgICAgc291cmNlIGZyb20gYW4gYXJjaGl2ZSB0aGF0IGRvZXMgbm90IHVzZSB0aGlzIGNvbnZlbnRpb24sCisgICAgICAgICAgICAgICAgb3IgZnJvbSBhbiBTQ00gbGlrZSBHaXQgb3IgU3VidmVyc2lvbiwgeW91ciByZWNpcGUgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICBkZWZpbmUgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgcHJvY2Vzc2luZyB5b3VyIHJlY2lwZSB1c2luZyBCaXRCYWtlIHN1Y2Nlc3NmdWxseSB1bnBhY2tzCisgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcywgeW91IG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBwb2ludGVkIHRvIGJ5IDxmaWxlbmFtZT4ke1N9PC9maWxlbmFtZT4gbWF0Y2hlcyB0aGUgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgb2YgdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPgorICAgICAgICAgICAgPHRpdGxlPlBhdGNoaW5nIENvZGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIHBhdGNoIGNvZGUgYWZ0ZXIgaXQgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICBmZXRjaGVkLgorICAgICAgICAgICAgICAgIEFueSBmaWxlcyBtZW50aW9uZWQgaW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB3aG9zZQorICAgICAgICAgICAgICAgIG5hbWVzIGVuZCBpbiA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmRpZmY8L2ZpbGVuYW1lPiBvciBjb21wcmVzc2VkIHZlcnNpb25zIG9mIHRoZXNlCisgICAgICAgICAgICAgICAgc3VmZml4ZXMgKGUuZy4gPGZpbGVuYW1lPmRpZmYuZ3o8L2ZpbGVuYW1lPiBhcmUgdHJlYXRlZCBhcworICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzayBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgdGhlc2UgcGF0Y2hlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBzaG91bGQgYmUgYWJsZSB0byBhcHBseSBwYXRjaGVzIHdpdGggdGhlICItcDEiCisgICAgICAgICAgICAgICAgb3B0aW9uIChpLmUuIG9uZSBkaXJlY3RvcnkgbGV2ZWwgaW4gdGhlIHBhdGggd2lsbCBiZSBzdHJpcHBlZAorICAgICAgICAgICAgICAgIG9mZikuCisgICAgICAgICAgICAgICAgSWYgeW91ciBwYXRjaCBuZWVkcyB0byBoYXZlIG1vcmUgZGlyZWN0b3J5IGxldmVscyBzdHJpcHBlZCBvZmYsCisgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGxldmVscyB1c2luZyB0aGUgInN0cmlwbGV2ZWwiIG9wdGlvbiBpbgorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGVudHJ5IGZvciB0aGUgcGF0Y2guCisgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgaWYgeW91ciBwYXRjaCBuZWVkcyB0byBiZSBhcHBsaWVkIGluIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICBzdWJkaXJlY3RvcnkgdGhhdCBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBwYXRjaCBmaWxlLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgInBhdGNoZGlyIiBvcHRpb24gaW4gdGhlIGVudHJ5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBsb2NhbCBmaWxlcyByZWZlcmVuY2VkIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5maWxlOi8vPC9maWxlbmFtZT4sIHlvdSBzaG91bGQgcGxhY2UKKyAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBpbiBhIGRpcmVjdG9yeSBuZXh0IHRvIHRoZSByZWNpcGUgZWl0aGVyCisgICAgICAgICAgICAgICAgbmFtZWQgdGhlIHNhbWUgYXMgdGhlIGJhc2UgbmFtZSBvZiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CUCc+PGZpbGVuYW1lPkJQPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CUE4nPjxmaWxlbmFtZT5CUE48L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgICAgIG9yICJmaWxlcyIuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1saWNlbnNpbmcnPgorICAgICAgICAgICAgPHRpdGxlPkxpY2Vuc2luZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdXIgcmVjaXBlIG5lZWRzIHRvIGhhdmUgYm90aCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBsaWNlbnNlIGZvciB0aGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGtub3cgdGhlIGxpY2Vuc2UgdW5kZXIgd2hpY2ggdGhlIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGlzIGRpc3RyaWJ1dGVkLCB5b3Ugc2hvdWxkIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUgYW5kIGxvb2sgZm9yIHRoYXQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsIGZpbGVzIGNvbnRhaW5pbmcgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09QWUlORzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgYWxzbyBmaW5kIHRoZSBpbmZvcm1hdGlvbiBuZWFyIHRoZSB0b3Agb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgc291cmNlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBwaWVjZSBvZiBzb2Z0d2FyZSBsaWNlbnNlZCB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgeW91IHdvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNFTlNFID0gIkdQTHYyIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBsaWNlbnNlcyB5b3Ugc3BlY2lmeSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT4gY2FuIGhhdmUgYW55IG5hbWUgYXMgbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgYXMgeW91IGRvIG5vdCB1c2Ugc3BhY2VzLCBzaW5jZSBzcGFjZXMgYXJlIHVzZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcnMgYmV0d2VlbiBsaWNlbnNlIG5hbWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHN0YW5kYXJkIGxpY2Vuc2VzLCB1c2UgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzLzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgPGZpbGVuYW1lPlNQRFhMSUNFTlNFTUFQPC9maWxlbmFtZT4gZmxhZyBuYW1lcworICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiA8ZmlsZW5hbWU+bWV0YS9jb25mL2xpY2Vuc2VzLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhpcyB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBzdXJlIHRoZSBsaWNlbnNlIHRleHQgaGFzIG5vdCBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgaXQgaGFzLCB0aGUgYnVpbGQgcHJvZHVjZXMgYW4gZXJyb3IgYW5kIGl0IGFmZm9yZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB0aGUgY2hhbmNlIHRvIGZpZ3VyZSBpdCBvdXQgYW5kIGNvcnJlY3QgdGhlIHByb2JsZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgbmVlZCB0byBzcGVjaWZ5IGFsbCBhcHBsaWNhYmxlIGxpY2Vuc2luZworICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgZm9yIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gc3RlcCwgdGhlIGJ1aWxkIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgY29tcGFyZSB0aGUgY2hlY2tzdW1zIG9mIHRoZSBmaWxlcyB0byBiZSBzdXJlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGV4dCBoYXMgbm90IGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgZGlmZmVyZW5jZXMgcmVzdWx0IGluIGFuIGVycm9yIHdpdGggdGhlIG1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgY2hlY2tzdW0uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBleHBsYW5hdGlvbiBhbmQgZXhhbXBsZXMgb2YgaG93IHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rPSd1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSc+VHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgY2hlY2tzdW0gc3RyaW5nLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBsaXN0IHRoZSBhcHByb3ByaWF0ZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgaW5jb3JyZWN0IG1kNSBzdHJpbmdzLCBhdHRlbXB0IHRvIGJ1aWxkIHRoZSBzb2Z0d2FyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGVuIG5vdGUgdGhlIHJlc3VsdGluZyBlcnJvciBtZXNzYWdlcyB0aGF0IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydCB0aGUgY29ycmVjdCBtZDUgc3RyaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZXctcmVjaXBlLWZldGNoaW5nLWNvZGUnPkZldGNoaW5nIENvZGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYXNzdW1lcyB0aGUgc29mdHdhcmUgaGFzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZSU5HPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9eHh4IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdHJ5IHRvIGJ1aWxkIHRoZSBzb2Z0d2FyZSwgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBwcm9kdWNlIGFuIGVycm9yIGFuZCBnaXZlIHlvdSB0aGUgY29ycmVjdCBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IGNhbiBzdWJzdGl0dXRlIGludG8gdGhlIHJlY2lwZSBmaWxlIGZvciBhCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKzwhLS0KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIHRyeWluZyB0aGlzIG91dCBJIGNyZWF0ZWQgYSBuZXcgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmh0b3BfMS4wLjIuYmI8L2ZpbGVuYW1lPiBhbmQgcHV0IGl0IGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2h0b3A8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdHdvIGxpY2Vuc2UgdHlwZSBzdGF0ZW1lbnRzIGluIG15IHZlcnkgc2ltcGxlCisgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRSA9ICIiCisKKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICIiCisKKyAgICAgU1JDX1VSSVttZDVzdW1dID0gIiIKKyAgICAgU1JDX1VSSVtzaGEyNTZzdW1dID0gIiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRXZpZGVudGx5LCB5b3UgbmVlZCB0byBydW4gYSA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBjbGVhbmFsbCBodG9wPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgTmV4dCwgeW91IGRlbGV0ZSBvciBjb21tZW50IG91dCB0aGUgdHdvIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBsaW5lcyBhdCB0aGUgZW5kIGFuZCB0aGVuIGF0dGVtcHQgdG8gYnVpbGQgdGhlIHNvZnR3YXJlIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSBodG9wPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRG9pbmcgc28gY2F1c2VzIEJpdEJha2UgdG8gcmVwb3J0IHNvbWUgZXJyb3JzIGFuZCBhbmQgZ2l2ZQorICAgICAgICAgICAgICAgIHlvdSB0aGUgYWN0dWFsIHN0cmluZ3MgeW91IG5lZWQgZm9yIHRoZSBsYXN0IHR3bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gbGluZXMuCisgICAgICAgICAgICAgICAgUHJpb3IgdG8gdGhpcywgeW91IGhhdmUgdG8gZGlnIGFyb3VuZCBpbiB0aGUgaG9tZSBwYWdlIG9mIHRoZQorICAgICAgICAgICAgICAgIHNvdXJjZSBmb3IgPGZpbGVuYW1lPmh0b3A8L2ZpbGVuYW1lPiBhbmQgZGV0ZXJtaW5lIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgR1BMdjIuCisgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIHRoYXQgaW4gdGhlIDxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgTm93IHlvdSBlZGl0IHlvdXIgcmVjaXBlIHRvIGhhdmUgdGhvc2UgdHdvIHN0cmluZ3MgZm9yCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0UgPSAiR1BMdjIiCisKKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICIiCisKKyAgICAgU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaHRvcC9odG9wLSR7UFZ9LnRhci5neiIKKyAgICAgU1JDX1VSSVttZDVzdW1dID0gIjBkMDFjY2E4ZGYzMzQ5Yzc0NTY5Y2VmZWJiZDk5MTllIgorICAgICBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWU2MDY1N2IwNDRlY2UwZGYwOTZjMDUzMDYwZGY3YWJmM2NjZTNhNTY4YWIzNGQyNjAwNDllNmEzN2NjZDhhMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IGNhbiBidWlsZCB0aGUgc29mdHdhcmUgYWdhaW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgaHRvcDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgVGhlcmUgaXMganVzdCBhIHNldCBvZiBlcnJvcnMgbm93IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBlbXB0eSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIG5vdy4KKyAgICAgICAgICAgIDwvcGFyYT4KKy0tPgorCisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LWRlcGVuZGVuY2llcyc+CisgICAgICAgICAgICA8dGl0bGU+RGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTW9zdCBzb2Z0d2FyZSBwYWNrYWdlcyBoYXZlIGEgc2hvcnQgbGlzdCBvZiBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgICAgIHRoYXQgdGhleSByZXF1aXJlLCB3aGljaCBhcmUgY2FsbGVkIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBkZXBlbmRlbmNpZXMgZmFsbCBpbnRvIHR3byBtYWluIGNhdGVnb3JpZXM6IGJ1aWxkLXRpbWUKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMsIHdoaWNoIGFyZSByZXF1aXJlZCB3aGVuIHRoZSBzb2Z0d2FyZSBpcyBidWlsdDsKKyAgICAgICAgICAgICAgICBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMsIHdoaWNoIGFyZSByZXF1aXJlZCB0byBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IGluIG9yZGVyIGZvciB0aGUgc29mdHdhcmUgdG8gcnVuLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaXRoaW4gYSByZWNpcGUsIHlvdSBzcGVjaWZ5IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBBbHRob3VnaCBudWFuY2VzIGV4aXN0LCBpdGVtcyBzcGVjaWZpZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IHNob3VsZCBiZSBuYW1lcyBvZiBvdGhlciByZWNpcGVzLgorICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0aGF0IHlvdSBzcGVjaWZ5IGFsbCBidWlsZC10aW1lIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkuCisgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCwgZHVlIHRvIHRoZSBwYXJhbGxlbCBuYXR1cmUgb2YgQml0QmFrZSdzCisgICAgICAgICAgICAgICAgZXhlY3V0aW9uLCB5b3UgY2FuIGVuZCB1cCB3aXRoIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBpcyBwcmVzZW50IGZvciBvbmUgdGFzayBvZiBhIHJlY2lwZSAoZS5nLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgICAgIGFuZCB0aGVuIGdvbmUgd2hlbiB0aGUgbmV4dCB0YXNrIHJ1bnMgKGUuZy4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBjb25zaWRlcmF0aW9uIGlzIHRoYXQgY29uZmlndXJlIHNjcmlwdHMgbWlnaHQKKyAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNoZWNrIGZvciBvcHRpb25hbCBkZXBlbmRlbmNpZXMgYW5kIGVuYWJsZQorICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBpZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGZvdW5kLgorICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgbWVhbnMgdGhhdCB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyByZXN1bHRzIGFuZAorICAgICAgICAgICAgICAgIHRodXMgYXZvaWQgbW9yZSByYWNlIGNvbmRpdGlvbnMsIHlvdSBuZWVkIHRvIGVpdGhlciBleHBsaWNpdGx5CisgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGVzZSBkZXBlbmRlbmNpZXMgYXMgd2VsbCwgb3IgdGVsbCB0aGUgY29uZmlndXJlCisgICAgICAgICAgICAgICAgc2NyaXB0IGV4cGxpY2l0bHkgdG8gZGlzYWJsZSB0aGUgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2lzaCB0byBtYWtlIGEgcmVjaXBlIHRoYXQgaXMgbW9yZSBnZW5lcmFsbHkgdXNlZnVsCisgICAgICAgICAgICAgICAgKGUuZy4gcHVibGlzaCB0aGUgcmVjaXBlIGluIGEgbGF5ZXIgZm9yIG90aGVycyB0byB1c2UpLAorICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgaGFyZC1kaXNhYmxpbmcgdGhlIGZ1bmN0aW9uYWxpdHksIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFQ09ORklHJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBhbGxvdyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyB0byBiZSBlbmFibGVkIGFuZCBkaXNhYmxlZCBlYXNpbHkgYnkgb3RoZXIKKyAgICAgICAgICAgICAgICB1c2VycyBvZiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTaW1pbGFyIHRvIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLCB5b3Ugc3BlY2lmeSBydW50aW1lCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIHRocm91Z2ggYSB2YXJpYWJsZSAtCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIHBhY2thZ2Utc3BlY2lmaWMuCisgICAgICAgICAgICAgICAgQWxsIHZhcmlhYmxlcyB0aGF0IGFyZSBwYWNrYWdlLXNwZWNpZmljIG5lZWQgdG8gaGF2ZSB0aGUgbmFtZQorICAgICAgICAgICAgICAgIG9mIHRoZSBwYWNrYWdlIGFkZGVkIHRvIHRoZSBlbmQgYXMgYW4gb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgU2luY2UgdGhlIG1haW4gcGFja2FnZSBmb3IgYSByZWNpcGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlLCBhbmQgdGhlIHJlY2lwZSdzIG5hbWUgY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUsIHRoZW4geW91IHNwZWNpZnkgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIG1haW4KKyAgICAgICAgICAgICAgICBwYWNrYWdlIGJ5IHNldHRpbmcgPGZpbGVuYW1lPlJERVBFTkRTXyR7UE59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgSWYgdGhlIHBhY2thZ2Ugd2VyZSBuYW1lZCA8ZmlsZW5hbWU+JHtQTn0tdG9vbHM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICB0aGVuIHlvdSB3b3VsZCBzZXQgPGZpbGVuYW1lPlJERVBFTkRTXyR7UE59LXRvb2xzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21lIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXQKKyAgICAgICAgICAgICAgICBwYWNrYWdpbmcgdGltZS4KKyAgICAgICAgICAgICAgICBUaGVzZSBkZXBlbmRlbmNpZXMgaW5jbHVkZSBhbnkgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgKGkuZS4gaWYgYSBwYWNrYWdlICJleGFtcGxlIiBjb250YWlucyAibGliZXhhbXBsZSIgYW5kCisgICAgICAgICAgICAgICAgYW5vdGhlciBwYWNrYWdlICJteXBhY2thZ2UiIGNvbnRhaW5zIGEgYmluYXJ5IHRoYXQgbGlua3MgdG8KKyAgICAgICAgICAgICAgICAibGliZXhhbXBsZSIgdGhlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aWxsCisgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhZGQgYSBydW50aW1lIGRlcGVuZGVuY3kgdG8gIm15cGFja2FnZSIgb24KKyAgICAgICAgICAgICAgICAiZXhhbXBsZSIpLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIGZ1cnRoZXIgZGV0YWlscy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLWNvbmZpZ3VyaW5nLXRoZS1yZWNpcGUnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBNb3N0IHNvZnR3YXJlIHByb3ZpZGVzIHNvbWUgbWVhbnMgb2Ygc2V0dGluZyBidWlsZC10aW1lCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZm9yZSBjb21waWxhdGlvbi4KKyAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHNldHRpbmcgdGhlc2Ugb3B0aW9ucyBpcyBhY2NvbXBsaXNoZWQgYnkgcnVubmluZyBhCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHNjcmlwdCB3aXRoIG9wdGlvbnMsIG9yIGJ5IG1vZGlmeWluZyBhIGJ1aWxkCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBcyBvZiBZb2N0byBQcm9qZWN0IFJlbGVhc2UgMS43LCBzb21lIG9mIHRoZSBjb3JlIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBwYWNrYWdlIGJpbmFyeSBjb25maWd1cmF0aW9uIHNjcmlwdHMgbm93IGRpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgZHVlIHRvIHRoZSBzY3JpcHRzIHByZXZpb3VzbHkgcmVxdWlyaW5nIGVycm9yLXByb25lCisgICAgICAgICAgICAgICAgICAgIHBhdGggc3Vic3RpdHV0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4gbm93LCB3aGljaCBpcyBtdWNoIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgcm9idXN0LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZSA8ZmlsZW5hbWU+Ki1jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIHRoYXQgYXJlIGRpc2FibGVkIGxpc3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtaWdyYXRpb24tMS43LWJpbmFyeS1jb25maWd1cmF0aW9uLXNjcmlwdHMtZGlzYWJsZWQnPkJpbmFyeSBDb25maWd1cmF0aW9uIFNjcmlwdHMgRGlzYWJsZWQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBtYWpvciBwYXJ0IG9mIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpcyBhYm91dCBjaGVja2luZyBmb3IKKyAgICAgICAgICAgICAgICBidWlsZC10aW1lIGRlcGVuZGVuY2llcyBhbmQgcG9zc2libHkgZW5hYmxpbmcgb3B0aW9uYWwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGFzIGEgcmVzdWx0LgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNwZWNpZnkgYW55IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIGZvciB0aGUKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSB5b3UgYXJlIGJ1aWxkaW5nIGluIHlvdXIgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFsdWUsIGluIHRlcm1zIG9mIG90aGVyIHJlY2lwZXMgdGhhdCBzYXRpc2Z5IHRob3NlCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gb2Z0ZW4gZmluZCBidWlsZC10aW1lIG9yIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgZGVzY3JpYmVkIGluIHRoZSBzb2Z0d2FyZSdzIGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBjb25maWd1cmF0aW9uIGl0ZW1zIG9mIG5vdGUgYmFzZWQKKyAgICAgICAgICAgICAgICBvbiBob3cgeW91ciBzb2Z0d2FyZSBpcyBidWlsdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkF1dG90b29sczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBzb3VyY2UgZmlsZXMgaGF2ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4gZmlsZSwgdGhlbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBpcyBidWlsdCB1c2luZyBBdXRvdG9vbHMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3UganVzdCBuZWVkIHRvIHdvcnJ5IGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHVzaW5nIEF1dG90b29scywgeW91ciByZWNpcGUgbmVlZHMgdG8gaW5oZXJpdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgeW91ciByZWNpcGUgZG9lcyBub3QgaGF2ZSB0byBjb250YWluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG1pZ2h0IHN0aWxsIHdhbnQgdG8gbWFrZSBzb21lIGFkanVzdG1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhUUkFfT0VDT05GJz48ZmlsZW5hbWU+RVhUUkFfT0VDT05GPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBhc3MgYW55IG5lZWRlZCBjb25maWd1cmUgb3B0aW9ucyB0aGF0IGFyZSBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNNYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHNvdXJjZSBmaWxlcyBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DTWFrZUxpc3RzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHRoZW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgaXMgYnVpbHQgdXNpbmcgQ01ha2UuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3UganVzdCBuZWVkIHRvIHdvcnJ5IGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSB1c2UgQ01ha2UsIHlvdXIgcmVjaXBlIG5lZWRzIHRvIGluaGVyaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtY21ha2UnPjxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB5b3VyIHJlY2lwZSBkb2VzIG5vdCBoYXZlIHRvIGNvbnRhaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG1ha2Ugc29tZSBhZGp1c3RtZW50cyBieSBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhUUkFfT0VDTUFLRSc+PGZpbGVuYW1lPkVYVFJBX09FQ01BS0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0byBwYXNzIGFueSBuZWVkZWQgY29uZmlndXJlIG9wdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBpbnN0YWxsIG9uZSBvciBtb3JlIGN1c3RvbSBDTWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBmaWxlcyB0aGF0IGFyZSBzdXBwbGllZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB5b3UgYXJlIGJ1aWxkaW5nLCBpbnN0YWxsIHRoZSBmaWxlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0R9JHtkYXRhZGlyfS9jbWFrZS88L2ZpbGVuYW1lPiBNb2R1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk90aGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHNvdXJjZSBmaWxlcyBkbyBub3QgaGF2ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DTWFrZUxpc3RzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHRoZW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgaXMgYnVpbHQgdXNpbmcgc29tZSBtZXRob2Qgb3RoZXIgdGhhbiBBdXRvdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIENNYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgeW91IG5vcm1hbGx5IG5lZWQgdG8gcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBpbiB5b3VyIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlIGlzIG5vdGhpbmcgdG8gY29uZmlndXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+RXZlbiBpZiB5b3VyIHNvZnR3YXJlIGlzIG5vdCBiZWluZyBidWlsdCBieQorICAgICAgICAgICAgICAgICAgICAgICAgQXV0b3Rvb2xzIG9yIENNYWtlLCB5b3Ugc3RpbGwgbWlnaHQgbm90IG5lZWQgdG8gZGVhbAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhbnkgY29uZmlndXJhdGlvbiBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBkZXRlcm1pbmUgaWYgY29uZmlndXJhdGlvbiBpcyBldmVuIGEgcmVxdWlyZWQgc3RlcC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtaWdodCBuZWVkIHRvIG1vZGlmeSBhIE1ha2VmaWxlIG9yIHNvbWUgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciB0aGUgYnVpbGQgdG8gc3BlY2lmeSBuZWNlc3NhcnkgYnVpbGQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9yLCBwZXJoYXBzIHlvdSBtaWdodCBuZWVkIHRvIHJ1biBhIHByb3ZpZGVkLCBjdXN0b20KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBzY3JpcHQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgdGhlIGNhc2UgaW52b2x2aW5nIGEgY3VzdG9tIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LCB5b3Ugd291bGQgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li9jb25maWd1cmUgLS1oZWxwPC9maWxlbmFtZT4gYW5kIGxvb2sgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3B0aW9ucyB5b3UgbmVlZCB0byBzZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgY29uZmlndXJhdGlvbiBzdWNjZWVkcywgaXQgaXMgYWx3YXlzIGdvb2QgcHJhY3RpY2UgdG8KKyAgICAgICAgICAgICAgICBsb29rIGF0IHRoZSA8ZmlsZW5hbWU+bG9nLmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IGZpbGUgdG8KKyAgICAgICAgICAgICAgICBlbnN1cmUgdGhhdCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyBoYXZlIGJlZW4gZW5hYmxlZCBhbmQgbm8KKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgY29uZmlndXJlIHNjcmlwdCByZXBvcnRzIHRoYXQgaXQgZm91bmQKKyAgICAgICAgICAgICAgICBzb21ldGhpbmcgbm90IG1lbnRpb25lZCBpbiA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LCBvcgorICAgICAgICAgICAgICAgIHRoYXQgaXQgZGlkIG5vdCBmaW5kIHNvbWV0aGluZyB0aGF0IGl0IG5lZWRlZCBmb3Igc29tZQorICAgICAgICAgICAgICAgIGRlc2lyZWQgb3B0aW9uYWwgZnVuY3Rpb25hbGl0eSwgdGhlbiB5b3Ugd291bGQgbmVlZCB0byBhZGQKKyAgICAgICAgICAgICAgICB0aG9zZSB0byA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIExvb2tpbmcgYXQgdGhlIGxvZyBtaWdodCBhbHNvIHJldmVhbCBpdGVtcyBiZWluZyBjaGVja2VkIGZvciwKKyAgICAgICAgICAgICAgICBlbmFibGVkLCBvciBib3RoIHRoYXQgeW91IGRvIG5vdCB3YW50LCBvciBpdGVtcyBub3QgYmVpbmcgZm91bmQKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBpbiA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LCBpbiB3aGljaCBjYXNlCisgICAgICAgICAgICAgICAgeW91IHdvdWxkIG5lZWQgdG8gbG9vayBhdCBwYXNzaW5nIGV4dHJhIG9wdGlvbnMgdG8gdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHNjcmlwdCBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgRm9yIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGUKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSB5b3UgYXJlIGJ1aWxkaW5nLCB5b3UgY2FuIGNvbnN1bHQgdGhlIG91dHB1dCBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li9jb25maWd1cmUgLS1oZWxwPC9maWxlbmFtZT4gY29tbWFuZCB3aXRoaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTfTwvZmlsZW5hbWU+IG9yIGNvbnN1bHQgdGhlIHNvZnR3YXJlJ3MgdXBzdHJlYW0KKyAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtdXNpbmctaGVhZGVycy10by1pbnRlcmZhY2Utd2l0aC1kZXZpY2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBIZWFkZXJzIHRvIEludGVyZmFjZSB3aXRoIERldmljZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIHJlY2lwZSBidWlsZHMgYW4gYXBwbGljYXRpb24gdGhhdCBuZWVkcyB0bworICAgICAgICAgICAgICAgIGNvbW11bmljYXRlIHdpdGggc29tZSBkZXZpY2Ugb3IgbmVlZHMgYW4gQVBJIGludG8gYSBjdXN0b20KKyAgICAgICAgICAgICAgICBrZXJuZWwsIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlkZSBhcHByb3ByaWF0ZSBoZWFkZXIgZmlsZXMuCisgICAgICAgICAgICAgICAgVW5kZXIgbm8gY2lyY3Vtc3RhbmNlcyBzaG91bGQgeW91IGV2ZXIgbW9kaWZ5IHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIFRoZXNlIGhlYWRlcnMgYXJlIHVzZWQgdG8gYnVpbGQgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICBtdXN0IG5vdCBiZSBjb21wcm9taXNlZCB3aXRoIGN1c3RvbSBvciBtYWNoaW5lLXNwZWNpZmljCisgICAgICAgICAgICAgICAgaGVhZGVyIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIElmIHlvdSBjdXN0b21pemUgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiB0aHJvdWdoIG1vZGlmaWVkCisgICAgICAgICAgICAgICAgaGVhZGVycyBhbGwgb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiB0aHVzIGJlY29tZSBhZmZlY3RlZC4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+V2FybmluZzwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIE5ldmVyIGNvcHkgYW5kIGN1c3RvbWl6ZSB0aGUgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBoZWFkZXIgZmlsZSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgVGhlIGNvcnJlY3Qgd2F5IHRvIGludGVyZmFjZSB0byBhIGRldmljZSBvciBjdXN0b20ga2VybmVsIGlzCisgICAgICAgICAgICAgICAgdG8gdXNlIGEgc2VwYXJhdGUgcGFja2FnZSB0aGF0IHByb3ZpZGVzIHRoZSBhZGRpdGlvbmFsIGhlYWRlcnMKKyAgICAgICAgICAgICAgICBmb3IgdGhlIGRyaXZlciBvciBvdGhlciB1bmlxdWUgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgICAgICBXaGVuIGRvaW5nIHNvLCB5b3VyIGFwcGxpY2F0aW9uIGFsc28gYmVjb21lcyByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICBjcmVhdGluZyBhIGRlcGVuZGVuY3kgb24gdGhhdCBzcGVjaWZpYyBwcm92aWRlci4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBOZXZlciBtb2RpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnMuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGF0IGZpbGUgdG8gYmUgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gc3lzdGVtLCBhbmQgbm90IHNvbWV0aGluZworICAgICAgICAgICAgICAgICAgICAgICAgeW91IHVzZSB0byBhY2Nlc3MgdGhlIGtlcm5lbCBkaXJlY3RseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWNjZXNzIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiBjYWxscy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbnMgdGhhdCBtdXN0IHRhbGsgZGlyZWN0bHkgdG8gZGV2aWNlcworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGVpdGhlciBwcm92aWRlIG5lY2Vzc2FyeSBoZWFkZXJzIHRoZW1zZWx2ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBvciBlc3RhYmxpc2ggYSBkZXBlbmRlbmN5IG9uIGEgc3BlY2lhbCBoZWFkZXJzIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhhdCBkcml2ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IHdhbnQgdG8gbW9kaWZ5IGFuIGV4aXN0aW5nIGhlYWRlcgorICAgICAgICAgICAgICAgIHRoYXQgYWRkcyBJL08gY29udHJvbCBvciBuZXR3b3JrIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgSWYgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHVzZWQgYnkgYSBzbWFsbCBudW1iZXIgcHJvZ3JhbXMsCisgICAgICAgICAgICAgICAgcHJvdmlkaW5nIGEgdW5pcXVlIHZlcnNpb24gb2YgYSBoZWFkZXIgaXMgZWFzeSBhbmQgaGFzIGxpdHRsZQorICAgICAgICAgICAgICAgIGltcGFjdC4KKyAgICAgICAgICAgICAgICBXaGVuIGRvaW5nIHNvLCBiZWFyIGluIG1pbmQgdGhlIGd1aWRlbGluZXMgaW4gdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgbGlzdC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgZm9yIHNvbWUgcmVhc29uIHlvdXIgY2hhbmdlcyBuZWVkIHRvIG1vZGlmeSB0aGUgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4sIGFuZCBzdWJzZXF1ZW50bHkgYWxsCisgICAgICAgICAgICAgICAgICAgIG90aGVyIGFwcGxpY2F0aW9ucyBvbiB0aGUgc3lzdGVtLCB1c2UgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gdG8gbW9kaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgta2VybmVsLWhlYWRlcnMuaW5jPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGFrZSBjYXJlIHRvIG5vdCBtYWtlIHRoZSBjaGFuZ2VzCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgc3BlY2lmaWMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDb25zaWRlciBhIGNhc2Ugd2hlcmUgeW91ciBrZXJuZWwgaXMgb2xkZXIgYW5kIHlvdSBuZWVkCisgICAgICAgICAgICAgICAgYW4gb2xkZXIgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiBBQkkuCisgICAgICAgICAgICAgICAgVGhlIGhlYWRlcnMgaW5zdGFsbGVkIGJ5IHlvdXIgcmVjaXBlIHNob3VsZCBzdGlsbCBiZSBhCisgICAgICAgICAgICAgICAgc3RhbmRhcmQgbWFpbmxpbmUga2VybmVsLCBub3QgeW91ciBvd24gY3VzdG9tIG9uZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIGN1c3RvbSBrZXJuZWwgaGVhZGVycyB5b3UgbmVlZCB0byBnZXQgdGhlbSBmcm9tCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNUQUdJTkdfS0VSTkVMX0RJUic+PGZpbGVuYW1lPlNUQUdJTkdfS0VSTkVMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIGRpcmVjdG9yeSB3aXRoIGtlcm5lbCBoZWFkZXJzIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgcmVxdWlyZWQgdG8gYnVpbGQgb3V0LW9mLXRyZWUgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICBZb3VyIHJlY2lwZSB3aWxsIGFsc28gbmVlZCB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1jb21waWxhdGlvbic+CisgICAgICAgICAgICA8dGl0bGU+Q29tcGlsYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgdGhlIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgIGhhcHBlbnMgYWZ0ZXIgc291cmNlIGlzIGZldGNoZWQsIHVucGFja2VkLCBhbmQgY29uZmlndXJlZC4KKyAgICAgICAgICAgICAgICBJZiB0aGUgcmVjaXBlIHBhc3NlcyB0aHJvdWdoIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHksIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgdGhlIGNvbXBpbGUgc3RlcCBmYWlscywgeW91IG5lZWQgdG8gZGlhZ25vc2UgdGhlCisgICAgICAgICAgICAgICAgZmFpbHVyZS4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIGNvbW1vbiBpc3N1ZXMgdGhhdCBjYXVzZSBmYWlsdXJlcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNhc2VzIHdoZXJlIGltcHJvcGVyIHBhdGhzIGFyZSBkZXRlY3RlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBvciBmb3Igd2hlbiBsaWJyYXJpZXMvaGVhZGVycyBjYW5ub3QKKyAgICAgICAgICAgICAgICAgICAgYmUgZm91bmQsIGJlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgbW9yZSByb2J1c3QKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBub3RlIGluIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25ldy1yZWNpcGUtY29uZmlndXJpbmctdGhlLXJlY2lwZSc+Q29uZmlndXJpbmcgdGhlIFJlY2lwZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhcmFsbGVsIGJ1aWxkIGZhaWx1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBmYWlsdXJlcyBtYW5pZmVzdCB0aGVtc2VsdmVzIGFzIGludGVybWl0dGVudAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCBvciBlcnJvcnMgcmVwb3J0aW5nIHRoYXQgYSBmaWxlIG9yIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgY3JlYXRlZCBieSBzb21lIG90aGVyIHBhcnQgb2YgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIGNvdWxkIG5vdCBiZSBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBmYWlsdXJlIGNhbiBvY2N1ciBldmVuIGlmLCB1cG9uIGluc3BlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBvciBkaXJlY3RvcnkgZG9lcyBleGlzdCBhZnRlciB0aGUgYnVpbGQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWQsIGJlY2F1c2UgdGhhdCBwYXJ0IG9mIHRoZSBidWlsZCBwcm9jZXNzIGhhcHBlbmVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgd3Jvbmcgb3JkZXIuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gZml4IHRoZSBwcm9ibGVtLCB5b3UgbmVlZCB0byBlaXRoZXIgc2F0aXNmeQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1pc3NpbmcgZGVwZW5kZW5jeSBpbiB0aGUgTWFrZWZpbGUgb3Igd2hhdGV2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBwcm9kdWNlZCB0aGUgTWFrZWZpbGUsIG9yIChhcyBhIHdvcmthcm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFuIGVtcHR5IHN0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFSQUxMRUxfTUFLRSA9ICIiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHBhcmFsbGVsIE1ha2VmaWxlIGlzc3Vlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZWJ1Z2dpbmctcGFyYWxsZWwtbWFrZS1yYWNlcyc+RGVidWdnaW5nIFBhcmFsbGVsIE1ha2UgUmFjZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1wcm9wZXIgaG9zdCBwYXRoIHVzYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZhaWx1cmUgYXBwbGllcyB0byByZWNpcGVzIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gb25seS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmYWlsdXJlIG9jY3VycyB3aGVuIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcHJvcGVyIGhlYWRlcnMsIGxpYnJhcmllcywgb3Igb3RoZXIgZmlsZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Qgc3lzdGVtIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGZvciB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gZml4IHRoZSBwcm9ibGVtLCBleGFtaW5lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5kb19jb21waWxlPC9maWxlbmFtZT4gZmlsZSB0byBpZGVudGlmeQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhvc3QgcGF0aHMgYmVpbmcgdXNlZCAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbGliPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVpdGhlciBhZGQgY29uZmlndXJlIG9wdGlvbnMsIGFwcGx5IGEgcGF0Y2gsIG9yIGRvIGJvdGguCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GYWlsdXJlIHRvIGZpbmQgcmVxdWlyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcy9oZWFkZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSBpcyBtaXNzaW5nIGJlY2F1c2UgaXQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgYmVlbiBkZWNsYXJlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGJlY2F1c2UgdGhlIGRlcGVuZGVuY3kgZXhpc3RzIGJ1dCB0aGUgcGF0aCB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgcHJvY2VzcyB0byBmaW5kIHRoZSBmaWxlIGlzIGluY29ycmVjdCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgc3RlcCBkaWQgbm90IGRldGVjdCBpdCwgdGhlIGNvbXBpbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIGNvdWxkIGZhaWwuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZWl0aGVyIG9mIHRoZXNlIGZhaWx1cmVzLCB0aGUgY29tcGlsYXRpb24gcHJvY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXMgdGhhdCBmaWxlcyBjb3VsZCBub3QgYmUgZm91bmQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGVzZSBjYXNlcywgeW91IG5lZWQgdG8gZ28gYmFjayBhbmQgYWRkIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXMgd2VsbCBhcyBwb3NzaWJseQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGFkZGl0aW9uYWwgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T2NjYXNpb25hbGx5LCBpdCBpcyBuZWNlc3NhcnkgdG8gYXBwbHkgYSBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHNvdXJjZSB0byBlbnN1cmUgdGhlIGNvcnJlY3QgcGF0aHMgYXJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBzcGVjaWZ5IHBhdGhzIHRvIGZpbmQgZmlsZXMgc3RhZ2VkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBzeXNyb290IGZyb20gb3RoZXIgcmVjaXBlcywgdXNlIHRoZSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1RBR0lOR19CSU5ESVI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0lOQ0RJUjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfREFUQURJUjwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgorPCEtLQorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0JJTkRJUic+PGZpbGVuYW1lPlNUQUdJTkdfQklORElSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0lOQ0RJUic+PGZpbGVuYW1lPlNUQUdJTkdfSU5DRElSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0RBVEFESVInPjxmaWxlbmFtZT5TVEFHSU5HX0RBVEFESVI8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKS4KKy0tPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1pbnN0YWxsaW5nJz4KKyAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRHVyaW5nIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4sIHRoZSB0YXNrIGNvcGllcyB0aGUKKyAgICAgICAgICAgICAgICBidWlsdCBmaWxlcyBhbG9uZyB3aXRoIHRoZWlyIGhpZXJhcmNoeSB0byBsb2NhdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgIHdvdWxkIG1pcnJvciB0aGVpciBsb2NhdGlvbnMgb24gdGhlIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICAgICAgVGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGNvcGllcyBmaWxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIHN0cnVjdHVyZSBhcyBpdCBzaG91bGQgYXBwZWFyIG9uIHRoZQorICAgICAgICAgICAgICAgIHRhcmdldCBzeXN0ZW0uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhvdyB5b3VyIHNvZnR3YXJlIGlzIGJ1aWx0IGFmZmVjdHMgd2hhdCB5b3UgbXVzdCBkbyB0byBiZQorICAgICAgICAgICAgICAgIHN1cmUgeW91ciBzb2Z0d2FyZSBpcyBpbnN0YWxsZWQgY29ycmVjdGx5LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgd2hhdCB5b3UgbXVzdCBkbyBmb3IgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGJ1aWxkIHN5c3RlbSB1c2VkIGJ5IHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QXV0b3Rvb2xzIGFuZCBDTWFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvZnR3YXJlIHlvdXIgcmVjaXBlIGlzIGJ1aWxkaW5nIHVzZXMgQXV0b3Rvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICBvciBDTWFrZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHVuZGVyc3RhbmRzIGhvdyB0byBpbnN0YWxsIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IGRvIG5vdCBoYXZlIHRvIGhhdmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiB0YXNrIGFzIHBhcnQgb2YgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGluc3RhbGwgcG9ydGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGNvbXBsZXRlcyB3aXRoIG5vIGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSB3aXNoIHRvIGluc3RhbGwgYWRkaXRpb25hbCBmaWxlcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgYmVpbmcgaW5zdGFsbGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZSBpbnN0YWxsPC9maWxlbmFtZT4sIHlvdSBzaG91bGQgZG8gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSA8ZmlsZW5hbWU+ZG9faW5zdGFsbF9hcHBlbmQ8L2ZpbGVuYW1lPiBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIGluc3RhbGwgY29tbWFuZCBhcyBkZXNjcmliZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiTWFudWFsIiBidWxsZXRlZCBpdGVtIGxhdGVyIGluIHRoaXMgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk90aGVyICh1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2UgaW5zdGFsbDwvZmlsZW5hbWU+KTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZGVmaW5lIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gZnVuY3Rpb24gaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uIHNob3VsZCBjYWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2VfcnVubWFrZSBpbnN0YWxsPC9maWxlbmFtZT4gYW5kIHdpbGwgbGlrZWx5CisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIHBhc3MgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93IHlvdSBwYXNzIHRoYXQgcGF0aCBpcyBkZXBlbmRlbnQgb24gaG93IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gYmVpbmcgcnVuIGlzIHdyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5ERVNURElSPSR7RH08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVGSVg9JHtEfTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOU1RBTExST09UPSR7RH08L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBhbiBleGFtcGxlIHJlY2lwZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2UgaW5zdGFsbDwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmV3LXJlY2lwZS1tYWtlZmlsZS1iYXNlZC1wYWNrYWdlJz5NYWtlZmlsZS1CYXNlZCBQYWNrYWdlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFudWFsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBkZWZpbmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiBmdW5jdGlvbiBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gbXVzdCBmaXJzdCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnN0YWxsIC1kPC9maWxlbmFtZT4gdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBkaXJlY3RvcmllcyBleGlzdCwgeW91ciBmdW5jdGlvbiBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbDwvZmlsZW5hbWU+IHRvIG1hbnVhbGx5IGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBzb2Z0d2FyZSBpbnRvIHRoZSBkaXJlY3Rvcmllcy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluc3RhbGw8L2ZpbGVuYW1lPiBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy9tYW51YWwvaHRtbF9ub2RlL2luc3RhbGwtaW52b2NhdGlvbi5odG1sJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgdGhlIHNjZW5hcmlvcyB0aGF0IGRvIG5vdCB1c2UgQXV0b3Rvb2xzIG9yCisgICAgICAgICAgICAgICAgQ01ha2UsIHlvdSBuZWVkIHRvIHRyYWNrIHRoZSBpbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICBhbmQgZGlhZ25vc2UgYW5kIGZpeCBhbnkgaXNzdWVzIHVudGlsIGV2ZXJ5dGhpbmcgaW5zdGFsbHMKKyAgICAgICAgICAgICAgICBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gbG9vayBpbiB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0R9PC9maWxlbmFtZT4sIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7V09SS0RJUn0vaW1hZ2U8L2ZpbGVuYW1lPiwgdG8gYmUgc3VyZSB5b3VyCisgICAgICAgICAgICAgICAgZmlsZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBjb3JyZWN0bHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcywgeW91IG1pZ2h0IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeSBzb21lIG9mIHRoZSBpbnN0YWxsZWQgZmlsZXMgdG8gc3VpdCB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IG5lZWQgdG8gcmVwbGFjZSBoYXJkLWNvZGVkIHBhdGhzCisgICAgICAgICAgICAgICAgICAgICAgICBpbiBhbiBpbml0c2NyaXB0IHdpdGggdmFsdWVzIG9mIHZhcmlhYmxlcyBwcm92aWRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSwgc3VjaCBhcyByZXBsYWNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2Jpbi88L2ZpbGVuYW1lPiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiaW5kaXJ9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gcGVyZm9ybSBzdWNoIG1vZGlmaWNhdGlvbnMgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+LCBiZSBzdXJlIHRvIG1vZGlmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uIGZpbGUgYWZ0ZXIgY29weWluZyByYXRoZXIgdGhhbiBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZnlpbmcgYWZ0ZXIgY29weWluZyBlbnN1cmVzIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHJlLWV4ZWN1dGUgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiBpZgorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZV9ydW5tYWtlIGluc3RhbGw8L2ZpbGVuYW1lPiwgd2hpY2ggY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBydW4gZGlyZWN0bHkgb3IgY2FuIGJlIHJ1biBpbmRpcmVjdGx5IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1jbWFrZSc+PGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlcywgcnVucyA8ZmlsZW5hbWU+bWFrZSBpbnN0YWxsPC9maWxlbmFtZT4gaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsLgorICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzLCBhIE1ha2VmaWxlIGNhbiBoYXZlIG1pc3NpbmcgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIHRhcmdldHMgdGhhdCBjYW4gcmVzdWx0IGluIHJhY2UgY29uZGl0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGludGVybWl0dGVudCBmYWlsdXJlcyBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4sIHlvdSBtaWdodCBiZSBhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JrIGFyb3VuZCB0aGVtIGJ5IGRpc2FibGluZyBwYXJhbGxlbCBNYWtlZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbHMgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRUlOU1QnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFSU5TVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGluc3RhbGwgb25lIG9yIG1vcmUgY3VzdG9tIENNYWtlCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gZmlsZXMgdGhhdCBhcmUgc3VwcGxpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB5b3UgYXJlIGJ1aWxkaW5nLCBpbnN0YWxsIHRoZSBmaWxlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7RH0ke2RhdGFkaXJ9L2NtYWtlLzwvZmlsZW5hbWU+IE1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtZW5hYmxpbmctc3lzdGVtLXNlcnZpY2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5FbmFibGluZyBTeXN0ZW0gU2VydmljZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBpbnN0YWxsIGEgc2VydmljZSwgd2hpY2ggaXMgYSBwcm9jZXNzIHRoYXQKKyAgICAgICAgICAgICAgICB1c3VhbGx5IHN0YXJ0cyBvbiBib290IGFuZCBydW5zIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGVuCisgICAgICAgICAgICAgICAgeW91IG11c3QgaW5jbHVkZSBzb21lIGFkZGl0aW9uYWwgZGVmaW5pdGlvbnMgaW4geW91ciByZWNpcGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgYWRkaW5nIHNlcnZpY2VzIGFuZCB0aGUgc2VydmljZSBpbml0aWFsaXphdGlvbgorICAgICAgICAgICAgICAgIHNjcmlwdCBvciB0aGUgc2VydmljZSBmaWxlIGl0c2VsZiBpcyBub3QgaW5zdGFsbGVkLCB5b3UgbXVzdAorICAgICAgICAgICAgICAgIHByb3ZpZGUgZm9yIHRoYXQgaW5zdGFsbGF0aW9uIGluIHlvdXIgcmVjaXBlIHVzaW5nIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbF9hcHBlbmQ8L2ZpbGVuYW1lPiBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIHJlY2lwZSBhbHJlYWR5IGhhcyBhIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiwgdXBkYXRlIHRoZSBmdW5jdGlvbiBuZWFyIGl0cyBlbmQgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICBhZGRpbmcgYW4gYWRkaXRpb25hbCA8ZmlsZW5hbWU+ZG9faW5zdGFsbF9hcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgdGhlIGluc3RhbGxhdGlvbiBmb3IgeW91ciBzZXJ2aWNlcywgeW91IG5lZWQKKyAgICAgICAgICAgICAgICB0byBhY2NvbXBsaXNoIHdoYXQgaXMgbm9ybWFsbHkgZG9uZSBieQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlIGluc3RhbGw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgbWFrZSBzdXJlIHlvdXIgaW5zdGFsbGF0aW9uIGFycmFuZ2VzIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICBzaW1pbGFyIHRvIGhvdyBpdCBpcyBhcnJhbmdlZCBvbiB0aGUgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgc3VwcG9ydCBmb3Igc3RhcnRpbmcKKyAgICAgICAgICAgICAgICBzZXJ2aWNlcyB0d28gZGlmZmVyZW50IHdheXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TeXNWaW5pdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU3lzVmluaXQgaXMgYSBzeXN0ZW0gYW5kIHNlcnZpY2UgbWFuYWdlciB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VzIHRoZSBpbml0IHN5c3RlbSB1c2VkIHRvIGNvbnRyb2wgdGhlIHZlcnkgYmFzaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBvZiB5b3VyIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0IHByb2dyYW0gaXMgdGhlIGZpcnN0IHByb2dyYW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQgYnkgdGhlIExpbnV4IGtlcm5lbCB3aGVuIHRoZSBzeXN0ZW0gYm9vdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbml0IHRoZW4gY29udHJvbHMgdGhlIHN0YXJ0dXAsIHJ1bm5pbmcgYW5kIHNodXRkb3duCisgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbGwgb3RoZXIgcHJvZ3JhbXMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gZW5hYmxlIGEgc2VydmljZSB1c2luZyBTeXNWaW5pdCwgeW91ciByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGluaGVyaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy11cGRhdGUtcmMuZCc+PGZpbGVuYW1lPnVwZGF0ZS1yYy5kPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgaGVscHMgZmFjaWxpdGF0ZSBzYWZlbHkgaW5zdGFsbGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb24gdGhlIHRhcmdldC48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3Ugd2lsbCBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUU0NSSVBUX1BBQ0tBR0VTJz48ZmlsZW5hbWU+SU5JVFNDUklQVF9QQUNLQUdFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFNDUklQVF9OQU1FJz48ZmlsZW5hbWU+SU5JVFNDUklQVF9OQU1FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRTQ1JJUFRfUEFSQU1TJz48ZmlsZW5hbWU+SU5JVFNDUklQVF9QQVJBTVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgd2l0aGluIHlvdXIgcmVjaXBlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnN5c3RlbWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbSBNYW5hZ2VtZW50IERhZW1vbiAoc3lzdGVtZCkgd2FzIGRlc2lnbmVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIFN5c1Zpbml0IGFuZCB0byBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlZCBtYW5hZ2VtZW50IG9mIHNlcnZpY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3lzdGVtZCwgc2VlIHRoZSBzeXN0ZW1kCisgICAgICAgICAgICAgICAgICAgICAgICBob21lcGFnZSBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIGVuYWJsZSBhIHNlcnZpY2UgdXNpbmcgc3lzdGVtZCwgeW91ciByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGluaGVyaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1zeXN0ZW1kJz48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+c3lzdGVtZC5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1wYWNrYWdpbmcnPgorICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2luZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFN1Y2Nlc3NmdWwgcGFja2FnaW5nIGlzIGEgY29tYmluYXRpb24gb2YgYXV0b21hdGVkIHByb2Nlc3NlcworICAgICAgICAgICAgICAgIHBlcmZvcm1lZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhbmQgc29tZQorICAgICAgICAgICAgICAgIHNwZWNpZmljIHN0ZXBzIHlvdSBuZWVkIHRvIHRha2UuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgcHJvY2VzczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNwbGl0dGluZyBGaWxlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzayBzcGxpdHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBwcm9kdWNlZCBieSB0aGUgcmVjaXBlIGludG8gbG9naWNhbCBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRXZlbiBzb2Z0d2FyZSB0aGF0IHByb2R1Y2VzIGEgc2luZ2xlIGJpbmFyeSBtaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgaGF2ZSBkZWJ1ZyBzeW1ib2xzLCBkb2N1bWVudGF0aW9uLCBhbmQgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWwgY29tcG9uZW50cyB0aGF0IHNob3VsZCBiZSBzcGxpdCBvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiB0YXNrIGVuc3VyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZmlsZXMgYXJlIHNwbGl0IHVwIGFuZCBwYWNrYWdlZCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW5uaW5nIFFBIENoZWNrczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhZGRzIGEgc3RlcCB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIHNvIHRoYXQgb3V0cHV0IHF1YWxpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VyYW5jZSBjaGVja3MgYXJlIGdlbmVyYXRlZCBieSB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgcGVyZm9ybXMgYSByYW5nZSBvZiBjaGVja3MgdG8gYmUgc3VyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkJ3Mgb3V0cHV0IGlzIGZyZWUgb2YgY29tbW9uIHByb2JsZW1zIHRoYXQgc2hvdworICAgICAgICAgICAgICAgICAgICAgICAgdXAgZHVyaW5nIHJ1bnRpbWUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgY2hlY2tzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXFhLWNoZWNrcyc+UUEgRXJyb3IgYW5kIFdhcm5pbmcgTWVzc2FnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkhhbmQtQ2hlY2tpbmcgWW91ciBQYWNrYWdlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGJ1aWxkIHlvdXIgc29mdHdhcmUsIHlvdSBuZWVkIHRvIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgcGFja2FnZXMgYXJlIGNvcnJlY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vcGFja2FnZXMtc3BsaXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBtYWtlIHN1cmUgZmlsZXMgYXJlIHdoZXJlIHlvdSBleHBlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW0gdG8gYmUuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZGlzY292ZXIgcHJvYmxlbXMsIHlvdSBjYW4gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbChfYXBwZW5kKTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNwbGl0dGluZyBhbiBBcHBsaWNhdGlvbiBpbnRvIE11bHRpcGxlIFBhY2thZ2VzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBzcGxpdCBhbiBhcHBsaWNhdGlvbiBpbnRvIHNldmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3BsaXR0aW5nLWFuLWFwcGxpY2F0aW9uLWludG8tbXVsdGlwbGUtcGFja2FnZXMnPlNwbGl0dGluZyBhbiBBcHBsaWNhdGlvbiBpbnRvIE11bHRpcGxlIFBhY2thZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbnN0YWxsaW5nIGEgUG9zdC1JbnN0YWxsYXRpb24gU2NyaXB0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBzaG93aW5nIGhvdyB0byBpbnN0YWxsIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25ldy1yZWNpcGUtcG9zdC1pbnN0YWxsYXRpb24tc2NyaXB0cyc+UG9zdC1JbnN0YWxsYXRpb24gU2NyaXB0czwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFya2luZyBQYWNrYWdlIEFyY2hpdGVjdHVyZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHdoYXQgeW91ciByZWNpcGUgaXMgYnVpbGRpbmcgYW5kIGhvdyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgaXMgY29uZmlndXJlZCwgaXQgbWlnaHQgYmUgaW1wb3J0YW50IHRvIG1hcmsgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBwcm9kdWNlZCBhcyBiZWluZyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIG9yIHRvIG1hcmsgdGhlbSBhcyBub3QgYmVpbmcgc3BlY2lmaWMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGEgcGFydGljdWxhciBtYWNoaW5lIG9yIGFyY2hpdGVjdHVyZSBhdCBhbGwuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QnkgZGVmYXVsdCwgcGFja2FnZXMgYXBwbHkgdG8gYW55IG1hY2hpbmUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgYXJjaGl0ZWN0dXJlIGFzIHRoZSB0YXJnZXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYSByZWNpcGUgcHJvZHVjZXMgcGFja2FnZXMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBwYXNzZWQgaW50byB0aGUgY29uZmlndXJlIHNjcmlwdCBvciBhIHBhdGNoCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhcHBsaWVkIG9ubHkgZm9yIGEgcGFydGljdWxhciBtYWNoaW5lKSwgeW91IHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFyayB0aGVtIGFzIHN1Y2ggYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSByZWNpcGUgcHJvZHVjZXMgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZG8gbm90IGNvbnRhaW4gYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBvciBhcmNoaXRlY3R1cmUgYXQgYWxsIChlLmcuIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2ltcGx5IHBhY2thZ2Ugc2NyaXB0IGZpbGVzIG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKSwgeW91IHNob3VsZCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hbGxhcmNoJz48ZmlsZW5hbWU+YWxsYXJjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIGRvIHRoaXMgZm9yIHlvdSBieSBhZGRpbmcgdGhpcyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgYWxsYXJjaAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJpbmcgdGhhdCB0aGUgcGFja2FnZSBhcmNoaXRlY3R1cmUgaXMgY29ycmVjdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNyaXRpY2FsIHdoaWxlIHlvdSBhcmUgZG9pbmcgdGhlIGZpcnN0IGZldyBidWlsZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgaW1wb3J0YW50IGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgICAgICB0byBlbnN1cmUgdGhhdCB5b3VyIHJlY2lwZSByZWJ1aWxkcyAob3IgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYnVpbGQpIGFwcHJvcHJpYXRlbHkgaW4gcmVzcG9uc2UgdG8gY2hhbmdlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgYW5kIHRvIGVuc3VyZSB0aGF0IHlvdSBnZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBwYWNrYWdlcyBpbnN0YWxsZWQgb24gdGhlIHRhcmdldCBtYWNoaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhcmx5IGlmIHlvdSBydW4gc2VwYXJhdGUgYnVpbGRzIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIG9uZSB0YXJnZXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1zaGFyaW5nLWZpbGVzLWJldHdlZW4tcmVjaXBlcyc+CisgICAgICAgICAgICA8dGl0bGU+U2hhcmluZyBGaWxlcyBCZXR3ZWVuIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBSZWNpcGVzIG9mdGVuIG5lZWQgdG8gdXNlIGZpbGVzIHByb3ZpZGVkIGJ5IG90aGVyIHJlY2lwZXMgb24KKyAgICAgICAgICAgICAgICB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYW4gYXBwbGljYXRpb24gbGlua2luZyB0byBhIGNvbW1vbiBsaWJyYXJ5IG5lZWRzCisgICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSBsaWJyYXJ5IGl0c2VsZiBhbmQgaXRzIGFzc29jaWF0ZWQgaGVhZGVycy4KKyAgICAgICAgICAgICAgICBUaGUgd2F5IHRoaXMgYWNjZXNzIGlzIGFjY29tcGxpc2hlZCBpcyBieSBwb3B1bGF0aW5nIGEgc3lzcm9vdAorICAgICAgICAgICAgICAgIHdpdGggZmlsZXMuCisgICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIHR3byBzeXNyb290cyBpbiBpdHMgd29yayBkaXJlY3RvcnksIG9uZSBmb3IKKyAgICAgICAgICAgICAgICB0YXJnZXQgZmlsZXMKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290PC9maWxlbmFtZT4pIGFuZCBvbmUgZm9yIGZpbGVzIHRoYXQKKyAgICAgICAgICAgICAgICBhcmUgbmF0aXZlIHRvIHRoZSBidWlsZCBob3N0CisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBmaW5kIHRoZSB0ZXJtICJzdGFnaW5nIiB1c2VkIHdpdGhpbiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCByZWdhcmRpbmcgZmlsZXMgcG9wdWxhdGluZyBzeXNyb290cyAoZS5nLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNUQUdJTkdfRElSJz48ZmlsZW5hbWU+U1RBR0lOR19ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlKS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFJlY2lwZXMgc2hvdWxkIG5ldmVyIHBvcHVsYXRlIHRoZSBzeXNyb290IGRpcmVjdGx5IChpLmUuIHdyaXRlCisgICAgICAgICAgICAgICAgZmlsZXMgaW50byBzeXNyb290KS4KKyAgICAgICAgICAgICAgICBJbnN0ZWFkLCBmaWxlcyBzaG91bGQgYmUgaW5zdGFsbGVkIGludG8gc3RhbmRhcmQgbG9jYXRpb25zCisgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgbGltaXRhdGlvbiBpcyB0aGF0IGFsbW9zdCBhbGwgZmlsZXMgdGhhdAorICAgICAgICAgICAgICAgIHBvcHVsYXRlIHRoZSBzeXNyb290IGFyZSBjYXRhbG9nZWQgaW4gbWFuaWZlc3RzIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgZW5zdXJlIHRoZSBmaWxlcyBjYW4gYmUgcmVtb3ZlZCBsYXRlciB3aGVuIGEgcmVjaXBlIGlzIGVpdGhlcgorICAgICAgICAgICAgICAgIG1vZGlmaWVkIG9yIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIHN5c3Jvb3QgaXMgYWJsZSB0byByZW1haW4gZnJlZSBmcm9tIHN0YWxlIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIHN1YnNldCBvZiB0aGUgZmlsZXMgaW5zdGFsbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGFyZSB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGFzIGRlZmluZWQgYnkgdGhlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TWVNST09UX0RJUlMnPjxmaWxlbmFtZT5TWVNST09UX0RJUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gYXV0b21hdGljYWxseSBwb3B1bGF0ZSB0aGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBtb2RpZnkgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCBwb3B1bGF0ZQorICAgICAgICAgICAgICAgIHRoZSBzeXNyb290LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgeW91IGNvdWxkIGFkZCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L29wdDwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0byB0aGUgbGlzdCBvZgorICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHdpdGhpbiBhIHJlY2lwZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNZU1JPT1RfRElSUyArPSAiL29wdCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBhIG1vcmUgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2sgYW5kIGl0cyBhc3NvY2lhdGVkIGZ1bmN0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXN0YWdpbmcnPjxmaWxlbmFtZT5zdGFnaW5nPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21ldGFkYXRhLXZpcnR1YWwtcHJvdmlkZXJzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBWaXJ0dWFsIFByb3ZpZGVyczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFByaW9yIHRvIGEgYnVpbGQsIGlmIHlvdSBrbm93IHRoYXQgc2V2ZXJhbCBkaWZmZXJlbnQgcmVjaXBlcworICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgeW91IGNhbiB1c2UgYSB2aXJ0dWFsIHByb3ZpZGVyCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+KSBhcyBhIHBsYWNlaG9sZGVyIGZvciB0aGUKKyAgICAgICAgICAgICAgICBhY3R1YWwgcHJvdmlkZXIuCisgICAgICAgICAgICAgICAgVGhlIGFjdHVhbCBwcm92aWRlciBpcyBkZXRlcm1pbmVkIGF0IGJ1aWxkLXRpbWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgY29tbW9uIHNjZW5hcmlvIHdoZXJlIGEgdmlydHVhbCBwcm92aWRlciBpcyB1c2VkIHdvdWxkIGJlCisgICAgICAgICAgICAgICAgZm9yIHRoZSBrZXJuZWwgcmVjaXBlLgorICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGhhdmUgdGhyZWUga2VybmVsIHJlY2lwZXMgd2hvc2UKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YWx1ZXMgbWFwIHRvIDxmaWxlbmFtZT5rZXJuZWwtYmlnPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC1taWQ8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC1zbWFsbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCBlYWNoIG9mIHRoZXNlIHJlY2lwZXMgaW4gc29tZSB3YXkgdXNlcyBhCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBST1ZJREVTJz48ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgc3RhdGVtZW50IHRoYXQgZXNzZW50aWFsbHkgaWRlbnRpZmllcyBpdHNlbGYgYXMgYmVpbmcgYWJsZQorICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgPGZpbGVuYW1lPnZpcnR1YWwva2VybmVsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgSGVyZSBpcyBvbmUgd2F5IHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMta2VybmVsJz48ZmlsZW5hbWU+a2VybmVsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJPVklERVMgKz0gIiR7QCAidmlydHVhbC9rZXJuZWwiIGlmIChkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiKSBlbHNlICIiIH0iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFueSByZWNpcGUgdGhhdCBpbmhlcml0cyB0aGUgPGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgICAgICAgICAgaXMgZ29pbmcgdG8gdXRpbGl6ZSBhIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIHRoYXQgaWRlbnRpZmllcyB0aGF0IHJlY2lwZSBhcyBiZWluZyBhYmxlIHRvIHByb3ZpZGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwva2VybmVsPC9maWxlbmFtZT4gaXRlbS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTm93IGNvbWVzIHRoZSB0aW1lIHRvIGFjdHVhbGx5IGJ1aWxkIGFuIGltYWdlIGFuZCB5b3UgbmVlZCBhCisgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSwgYnV0IHdoaWNoIG9uZT8KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGNvbmZpZ3VyZSB5b3VyIGJ1aWxkIHRvIGNhbGwgb3V0IHRoZSBrZXJuZWwgcmVjaXBlCisgICAgICAgICAgICAgICAgeW91IHdhbnQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jJz48ZmlsZW5hbWU+eDg2LWJhc2UuaW5jPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluY2x1ZGUgZmlsZSwgd2hpY2ggaXMgYSBtYWNoaW5lCisgICAgICAgICAgICAgICAgKGkuZS4gPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgVGhpcyBpbmNsdWRlIGZpbGUgaXMgdGhlIHJlYXNvbiBhbGwgeDg2LWJhc2VkIG1hY2hpbmVzIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiBrZXJuZWwuCisgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIHJlbGV2YW50IGxpbmVzIGZyb20gdGhlIGluY2x1ZGUgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTUlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIGEgdmlydHVhbCBwcm92aWRlciwgeW91IGRvIG5vdCBoYXZlIHRvCisgICAgICAgICAgICAgICAgImhhcmQgY29kZSIgYSByZWNpcGUgbmFtZSBhcyBhIGJ1aWxkIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHN0YXRlIHRoZSBidWlsZCBpcyBkZXBlbmRlbnQgb24KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9rZXJuZWw8L2ZpbGVuYW1lPiBmb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBpY2tzCisgICAgICAgICAgICAgICAgdGhlIGNvcnJlY3QgcmVjaXBlIG5lZWRlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwva2VybmVsPC9maWxlbmFtZT4gZGVwZW5kZW5jeSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBzbWFsbCBrZXJuZWwgbWVudGlvbmVkIGF0IHRoZSBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICBvZiB0aGlzIHNlY3Rpb24sIGNvbmZpZ3VyZSB5b3VyIGJ1aWxkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJrZXJuZWwtc21hbGwiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBbnkgcmVjaXBlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBST1ZJREVTJz48ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0gdGhhdCBpcyB1bHRpbWF0ZWx5CisgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxlY3RlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiBkb2VzIG5vdCBnZXQgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFByZXZlbnRpbmcgdGhlc2UgcmVjaXBlcyBmcm9tIGJ1aWxkaW5nIGlzIHVzdWFsbHkgdGhlCisgICAgICAgICAgICAgICAgICAgIGRlc2lyZWQgYmVoYXZpb3Igc2luY2UgdGhpcyBtZWNoYW5pc20ncyBwdXJwb3NlIGlzIHRvCisgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBiZXR3ZWVuIG11dHVhbGx5IGV4Y2x1c2l2ZSBhbHRlcm5hdGl2ZSBwcm92aWRlcnMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3RzIHNwZWNpZmljIGV4YW1wbGVzIG9mIHZpcnR1YWwgcHJvdmlkZXJzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIGtlcm5lbCByZWNpcGUgdG8gdXNlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGEga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2Jvb3Rsb2FkZXI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSBib290bG9hZGVyIHRvIHVzZSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9saWJnYm08L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nYm0ucGM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9lZ2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5lZ2wucGM8L2ZpbGVuYW1lPiBhbmQgcG9zc2libHkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53YXlsYW5kLWVnbC5wYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2wucGM8L2ZpbGVuYW1lPiAoaS5lLiBsaWJHTCkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbGliZ2xlczE8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjFfY20ucGM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gbGliR0xFU3YxX0NNKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9saWJnbGVzMjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdsZXN2Mi5wYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBsaWJHTEVTdjIpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncHJvcGVybHktdmVyc2lvbmluZy1wcmUtcmVsZWFzZS1yZWNpcGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Qcm9wZXJseSBWZXJzaW9uaW5nIFByZS1SZWxlYXNlIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgdGhlIG5hbWUgb2YgYSByZWNpcGUgY2FuIGxlYWQgdG8gdmVyc2lvbmluZworICAgICAgICAgICAgICAgIHByb2JsZW1zIHdoZW4gdGhlIHJlY2lwZSBpcyB1cGdyYWRlZCB0byBhIGZpbmFsIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pcnNzaV8wLjguMTYtcmMxLmJiPC9maWxlbmFtZT4gcmVjaXBlIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUgbGlzdCBvZiBleGFtcGxlIHJlY2lwZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25ldy1yZWNpcGUtc3RvcmluZy1hbmQtbmFtaW5nLXRoZS1yZWNpcGUnPlN0b3JpbmcgYW5kIE5hbWluZyB0aGUgUmVjaXBlPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIGF0IGEgcmVsZWFzZSBjYW5kaWRhdGUgc3RhZ2UgKGkuZS4KKyAgICAgICAgICAgICAgICAicmMxIikuCisgICAgICAgICAgICAgICAgV2hlbiB0aGUgcmVjaXBlIGlzIHJlbGVhc2VkLCB0aGUgcmVjaXBlIGZpbGVuYW1lIGJlY29tZXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXJzc2lfMC44LjE2LmJiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gY2hhbmdlIGZyb20gPGZpbGVuYW1lPjAuOC4xNi1yYzE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT4wLjguMTY8L2ZpbGVuYW1lPiBpcyBzZWVuIGFzIGEgZGVjcmVhc2UgYnkgdGhlCisgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGFuZCBwYWNrYWdlIG1hbmFnZXJzLCBzbyB0aGUgcmVzdWx0aW5nIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgd2lsbCBub3QgY29ycmVjdGx5IHRyaWdnZXIgYW4gdXBncmFkZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gZW5zdXJlIHRoZSB2ZXJzaW9ucyBjb21wYXJlIHByb3Blcmx5LCB0aGUKKyAgICAgICAgICAgICAgICByZWNvbW1lbmRlZCBjb252ZW50aW9uIGlzIHRvIHNldAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgcmVjaXBlIHRvCisgICAgICAgICAgICAgICAgIjxyZXBsYWNlYWJsZT5wcmV2aW91c192ZXJzaW9uPC9yZXBsYWNlYWJsZT4rPHJlcGxhY2VhYmxlPmN1cnJlbnRfdmVyc2lvbjwvcmVwbGFjZWFibGU+Ii4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhbiBhZGRpdGlvbmFsIHZhcmlhYmxlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgY3VycmVudCB2ZXJzaW9uIGVsc2V3aGVyZS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSRUFMUFYgPSAiMC44LjE2LXJjMSIKKyAgICAgUFYgPSAiMC44LjE1KyR7UkVBTFBWfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1wb3N0LWluc3RhbGxhdGlvbi1zY3JpcHRzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Qb3N0LUluc3RhbGxhdGlvbiBTY3JpcHRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0cyBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgaW5zdGFsbGluZworICAgICAgICAgICAgICAgIGEgcGFja2FnZSBvbiB0aGUgdGFyZ2V0IG9yIGR1cmluZyBpbWFnZSBjcmVhdGlvbiB3aGVuIGEKKyAgICAgICAgICAgICAgICBwYWNrYWdlIGlzIGluY2x1ZGVkIGluIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIFRvIGFkZCBhIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdCB0byBhIHBhY2thZ2UsIGFkZCBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5QQUNLQUdFTkFNRTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPigpPC9maWxlbmFtZT4gZnVuY3Rpb24gdG8KKyAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGZpbGUgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikgYW5kIHJlcGxhY2UKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UEFDS0FHRU5BTUU8L3JlcGxhY2VhYmxlPiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgeW91IHdhbnQgdG8gYXR0YWNoIHRvIHRoZSA8ZmlsZW5hbWU+cG9zdGluc3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBUbyBhcHBseSB0aGUgcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0IHRvIHRoZSBtYWluIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBmb3IgdGhlIHJlY2lwZSwgd2hpY2ggaXMgdXN1YWxseSB3aGF0IGlzIHJlcXVpcmVkLCBzcGVjaWZ5CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaW4gcGxhY2Ugb2YgPHJlcGxhY2VhYmxlPlBBQ0tBR0VOQU1FPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgcG9zdC1pbnN0YWxsYXRpb24gZnVuY3Rpb24gaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcGtnX3Bvc3RpbnN0XzxyZXBsYWNlYWJsZT5QQUNLQUdFTkFNRTwvcmVwbGFjZWFibGU+KCkgeworICAgICAjIENvbW1hbmRzIHRvIGNhcnJ5IG91dAorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGRlZmluZWQgaW4gdGhlIHBvc3QtaW5zdGFsbGF0aW9uIGZ1bmN0aW9uIGlzCisgICAgICAgICAgICAgICAgY2FsbGVkIHdoZW4gdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgIElmIHRoZSBzY3JpcHQgc3VjY2VlZHMsIHRoZSBwYWNrYWdlIGlzIG1hcmtlZCBhcyBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFueSBSUE0gcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0IHRoYXQgcnVucyBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIHNob3VsZCByZXR1cm4gYSAwIGV4aXQgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgUlBNIGRvZXMgbm90IGFsbG93IG5vbi16ZXJvIGV4aXQgY29kZXMgZm9yIHRoZXNlIHNjcmlwdHMsCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgUlBNIHBhY2thZ2UgbWFuYWdlciB3aWxsIGNhdXNlIHRoZSBwYWNrYWdlIHRvIGZhaWwKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IGZvciB0aGUgZXhlY3V0aW9uIG9mIGEKKyAgICAgICAgICAgICAgICBwb3N0LWluc3RhbGxhdGlvbiBzY3JpcHQgdG8gYmUgZGVsYXllZCB1bnRpbCB0aGUgZmlyc3QgYm9vdC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHNjcmlwdCBtaWdodCBuZWVkIHRvIGJlIGV4ZWN1dGVkIG9uIHRoZQorICAgICAgICAgICAgICAgIGRldmljZSBpdHNlbGYuCisgICAgICAgICAgICAgICAgVG8gZGVsYXkgc2NyaXB0IGV4ZWN1dGlvbiB1bnRpbCBib290IHRpbWUsIHlvdSBtdXN0IGV4cGxpY2l0bHkKKyAgICAgICAgICAgICAgICBtYXJrIHBvc3QgaW5zdGFsbHMgdG8gZGVmZXIgdG8gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0X29udGFyZ2V0KCk8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIGNhbGwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAoaW5jbHVkaW5nIGV4aXQgMSkgdHJpZ2dlcnMgYW4gZXJyb3IgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgcmVjaXBlcyB0aGF0IHVzZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Q8L2ZpbGVuYW1lPiBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGFuZCB0aGV5IHJlcXVpcmUgdGhlIHVzZSBvZiBub24tc3RhbmRhcmQgbmF0aXZlCisgICAgICAgICAgICAgICAgdG9vbHMgdGhhdCBoYXZlIGRlcGVuZGVuY2llcyBkdXJpbmcgcm9vdGZzIGNvbnN0cnVjdGlvbiwgeW91CisgICAgICAgICAgICAgICAgbmVlZCB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfV1JJVEVfREVQUyc+PGZpbGVuYW1lPlBBQ0tBR0VfV1JJVEVfREVQUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIHJlY2lwZSB0byBsaXN0IHRoZXNlIHRvb2xzLgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgdXNlIHRoaXMgdmFyaWFibGUsIHRoZSB0b29scyBtaWdodCBiZSBtaXNzaW5nIGFuZAorICAgICAgICAgICAgICAgIGV4ZWN1dGlvbiBvZiB0aGUgcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0IGlzIGRlZmVycmVkIHVudGlsCisgICAgICAgICAgICAgICAgZmlyc3QgYm9vdC4KKyAgICAgICAgICAgICAgICBEZWZlcnJpbmcgdGhlIHNjcmlwdCB0byBmaXJzdCBib290IGlzIHVuZGVzaXJhYmxlIGFuZCBmb3IKKyAgICAgICAgICAgICAgICByZWFkLW9ubHkgcm9vdGZzIGltcG9zc2libGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEVxdWl2YWxlbnQgc3VwcG9ydCBmb3IgcHJlLWluc3RhbGwsIHByZS11bmluc3RhbGwsIGFuZAorICAgICAgICAgICAgICAgIHBvc3QtdW5pbnN0YWxsIHNjcmlwdHMgZXhpc3QgYnkgd2F5IG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wcmVpbnN0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wcmVybTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RybTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgVGhlc2Ugc2NyaXBzIHdvcmsgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgZG9lcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Q8L2ZpbGVuYW1lPiB3aXRoIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgICAgICB0aGF0IHRoZXkgcnVuIGF0IGRpZmZlcmVudCB0aW1lcy4KKyAgICAgICAgICAgICAgICBBbHNvLCBiZWNhdXNlIG9mIHdoZW4gdGhleSBydW4sIHRoZXkgYXJlIG5vdCBhcHBsaWNhYmxlIHRvCisgICAgICAgICAgICAgICAgYmVpbmcgcnVuIGF0IGltYWdlIGNyZWF0aW9uIHRpbWUgbGlrZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLXRlc3RpbmcnPgorICAgICAgICAgICAgPHRpdGxlPlRlc3Rpbmc8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RlcCBmb3IgY29tcGxldGluZyB5b3VyIHJlY2lwZSBpcyB0byBiZSBzdXJlIHRoYXQKKyAgICAgICAgICAgICAgICB0aGUgc29mdHdhcmUgeW91IGJ1aWx0IHJ1bnMgY29ycmVjdGx5LgorICAgICAgICAgICAgICAgIFRvIGFjY29tcGxpc2ggcnVudGltZSB0ZXN0aW5nLCBhZGQgdGhlIGJ1aWxkJ3Mgb3V0cHV0CisgICAgICAgICAgICAgICAgcGFja2FnZXMgdG8geW91ciBpbWFnZSBhbmQgdGVzdCB0aGVtIG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3VzdG9taXplIHlvdXIgaW1hZ2UgYnkgYWRkaW5nCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgcGFja2FnZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmdwb2t5LWV4dGVuZC1jdXN0b21pbWFnZSc+Q3VzdG9taXppbmcgSW1hZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtdGVzdGluZy1leGFtcGxlcyc+CisgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBoZWxwIHN1bW1hcml6ZSBob3cgdG8gd3JpdGUgYSByZWNpcGUsIHRoaXMgc2VjdGlvbiBwcm92aWRlcworICAgICAgICAgICAgICAgIHNvbWUgZXhhbXBsZXMgZ2l2ZW4gdmFyaW91cyBzY2VuYXJpb3M6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlY2lwZXMgdGhhdCB1c2UgbG9jYWwgZmlsZXM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVzaW5nIGFuIEF1dG90b29sZWQgcGFja2FnZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VXNpbmcgYSBNYWtlZmlsZS1iYXNlZCBwYWNrYWdlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TcGxpdHRpbmcgYW4gYXBwbGljYXRpb24gaW50byBtdWx0aXBsZSBwYWNrYWdlczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkaW5nIGJpbmFyaWVzIHRvIGFuIGltYWdlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLXNpbmdsZS1jLWZpbGUtcGFja2FnZS1oZWxsby13b3JsZCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNpbmdsZSAuYyBGaWxlIFBhY2thZ2UgKEhlbGxvIFdvcmxkISk8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGFwcGxpY2F0aW9uIGZyb20gYSBzaW5nbGUgZmlsZSB0aGF0IGlzIHN0b3JlZAorICAgICAgICAgICAgICAgICAgICBsb2NhbGx5IChlLmcuIHVuZGVyIDxmaWxlbmFtZT5maWxlczwvZmlsZW5hbWU+KSByZXF1aXJlcworICAgICAgICAgICAgICAgICAgICBhIHJlY2lwZSB0aGF0IGhhcyB0aGUgZmlsZSBsaXN0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+U1JDX1VSSTwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IG5lZWQgdG8gbWFudWFsbHkgd3JpdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFza3MuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPlM8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlZmluZXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBzb3VyY2UgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBjYXNlIC0gdGhlIGRpcmVjdG9yeSBCaXRCYWtlIHVzZXMgZm9yIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTVU1NQVJZID0gIlNpbXBsZSBoZWxsb3dvcmxkIGFwcGxpY2F0aW9uIgorICAgICBTRUNUSU9OID0gImV4YW1wbGVzIgorICAgICBMSUNFTlNFID0gIk1JVCIKKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKKyAgICAgU1JDX1VSSSA9ICJmaWxlOi8vaGVsbG93b3JsZC5jIgorCisgICAgIFMgPSAiJHtXT1JLRElSfSIKKworICAgICBkb19jb21waWxlKCkgeworICAgICAJJHtDQ30gaGVsbG93b3JsZC5jIC1vIGhlbGxvd29ybGQKKyAgICAgfQorCisgICAgIGRvX2luc3RhbGwoKSB7CisgICAgIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICAgCWluc3RhbGwgLW0gMDc1NSBoZWxsb3dvcmxkICR7RH0ke2JpbmRpcn0KKyAgICAgfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+aGVsbG93b3JsZDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVsbG93b3JsZC1kYmc8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oZWxsb3dvcmxkLWRldjwvZmlsZW5hbWU+IHBhY2thZ2VzIGFyZSBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjdXN0b21pemUgdGhlIHBhY2thZ2luZyBwcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzcGxpdHRpbmctYW4tYXBwbGljYXRpb24taW50by1tdWx0aXBsZS1wYWNrYWdlcyc+U3BsaXR0aW5nIGFuIEFwcGxpY2F0aW9uIGludG8gTXVsdGlwbGUgUGFja2FnZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25ldy1yZWNpcGUtYXV0b3Rvb2xlZC1wYWNrYWdlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QXV0b3Rvb2xlZCBQYWNrYWdlPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgdXNlIEF1dG90b29scyBzdWNoIGFzIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2U8L2ZpbGVuYW1lPiByZXF1aXJlIGEgcmVjaXBlIHRoYXQgaGFzIGEgc291cmNlIGFyY2hpdmUgbGlzdGVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+U1JDX1VSSTwvdWxpbms+PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIGFsc28gaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIG9mIGFsbCB0aGUgc3RlcHMKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkIHRvIGJ1aWxkIGFuIEF1dG90b29sLWJhc2VkIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBidWlsZCBpcyBhdXRvbWF0aWNhbGx5IHBhY2thZ2VkLgorICAgICAgICAgICAgICAgICAgICBBbmQsIGlmIHRoZSBhcHBsaWNhdGlvbiB1c2VzIE5MUyBmb3IgbG9jYWxpemF0aW9uLCBwYWNrYWdlcyB3aXRoIGxvY2FsIGluZm9ybWF0aW9uIGFyZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgKG9uZSBwYWNrYWdlIHBlciBsYW5ndWFnZSkuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBvbmUgZXhhbXBsZTogKDxmaWxlbmFtZT5oZWxsb18yLjMuYmI8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTVU1NQVJZID0gIkdOVSBIZWxsb3dvcmxkIGFwcGxpY2F0aW9uIgorICAgICBTRUNUSU9OID0gImV4YW1wbGVzIgorICAgICBMSUNFTlNFID0gIkdQTHYyKyIKKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKKyAgICAgU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2hlbGxvL2hlbGxvLSR7UFZ9LnRhci5neiIKKworICAgICBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CisgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPkxJQ19GSUxFU19DSEtTVU08L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgdG8gdHJhY2sgc291cmNlIGxpY2Vuc2UgY2hhbmdlcyBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSc+VHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHF1aWNrbHkgY3JlYXRlIEF1dG90b29sLWJhc2VkIHJlY2lwZXMgaW4gYSBtYW5uZXIKKyAgICAgICAgICAgICAgICAgICAgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLW1ha2VmaWxlLWJhc2VkLXBhY2thZ2UnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5NYWtlZmlsZS1CYXNlZCBQYWNrYWdlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbnMgdGhhdCB1c2UgR05VIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYWxzbyByZXF1aXJlIGEgcmVjaXBlIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgYXJjaGl2ZSBsaXN0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz5TUkNfVVJJPC91bGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIGFkZCBhIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gc3RlcCBzaW5jZSBieSBkZWZhdWx0IEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRzIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gY29tcGlsZSB0aGUgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGFkZGl0aW9uYWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBvcHRpb25zLCB5b3Ugc2hvdWxkIHN0b3JlIHRoZW0gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9PRU1BS0UnPjxmaWxlbmFtZT5FWFRSQV9PRU1BS0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHBhc3NlcyB0aGVzZSBvcHRpb25zIGludG8gdGhlIEdOVSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGludm9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBhIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFzayBpcyBzdGlsbCByZXF1aXJlZC4KKyAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBCaXRCYWtlIHJ1bnMgYW4gZW1wdHkgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiB0YXNrIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBhcHBsaWNhdGlvbnMgbWlnaHQgcmVxdWlyZSBleHRyYSBwYXJhbWV0ZXJzIHRvIGJlIHBhc3NlZCB0byB0aGUgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgYXBwbGljYXRpb24gbWlnaHQgbmVlZCBhbiBhZGRpdGlvbmFsIGhlYWRlciBwYXRoLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyBieSBhZGRpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ0ZMQUdTJz5DRkxBR1M8L3VsaW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhpczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSAke1N9L2luY2x1ZGUgIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCA8ZmlsZW5hbWU+bXRkLXV0aWxzPC9maWxlbmFtZT4gaXMgYSBtYWtlZmlsZS1iYXNlZCBwYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIG1lbW9yeSB0ZWNobm9sb2d5IGRldmljZXMiCisgICAgIFNFQ1RJT04gPSAiYmFzZSIKKyAgICAgREVQRU5EUyA9ICJ6bGliIGx6byBlMmZzcHJvZ3MgdXRpbC1saW51eCIKKyAgICAgSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy8iCisgICAgIExJQ0VOU0UgPSAiR1BMdjIrIgorICAgICBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvY29tbW9uLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9YmEwNWIwNzkxMmE0NGVhMmJmODFjZTQwOTM4MDA0OWMiCisKKyAgICAgIyBVc2UgdGhlIGxhdGVzdCB2ZXJzaW9uIGF0IDI2IE9jdCwgMjAxMworICAgICBTUkNSRVYgPSAiOWYxMDcxMzJhNmEwNzNjY2UzNzQzNGNhOWNkYTY5MTdkZDhkODY2YiIKKyAgICAgU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IFwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hZGQtZXhjbHVzaW9uLXRvLW1rZnMtamZmczItZ2l0LTIucGF0Y2ggXAorICAgICAiCisKKyAgICAgUFYgPSAiMS41LjErZ2l0JHtTUkNQVn0iCisKKyAgICAgUyA9ICIke1dPUktESVJ9L2dpdCIKKworICAgICBFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnUkFOTElCPSR7UkFOTElCfScgJ0FSPSR7QVJ9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAtSSR7U30vaW5jbHVkZSAtRFdJVEhPVVRfWEFUVFInICdCVUlMRERJUj0ke1N9JyIKKworICAgICBkb19pbnN0YWxsICgpIHsKKyAgICAgICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFNCSU5ESVI9JHtzYmluZGlyfSBNQU5ESVI9JHttYW5kaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfQorICAgICB9CisKKyAgICAgUEFDS0FHRVMgPSsgIm10ZC11dGlscy1qZmZzMiBtdGQtdXRpbHMtdWJpZnMgbXRkLXV0aWxzLW1pc2MiCisKKyAgICAgRklMRVNfbXRkLXV0aWxzLWpmZnMyID0gIiR7c2JpbmRpcn0vbWtmcy5qZmZzMiAke3NiaW5kaXJ9L2pmZnMyZHVtcCAke3NiaW5kaXJ9L2pmZnMycmVhZGVyICR7c2JpbmRpcn0vc3VtdG9vbCIKKyAgICAgRklMRVNfbXRkLXV0aWxzLXViaWZzID0gIiR7c2JpbmRpcn0vbWtmcy51YmlmcyAke3NiaW5kaXJ9L3ViaSoiCisgICAgIEZJTEVTX210ZC11dGlscy1taXNjID0gIiR7c2JpbmRpcn0vbmZ0bCogJHtzYmluZGlyfS9mdGwqICR7c2JpbmRpcn0vcmZkKiAke3NiaW5kaXJ9L2RvYyogJHtzYmluZGlyfS9zZXJ2ZV9pbWFnZSAke3NiaW5kaXJ9L3JlY3ZfaW1hZ2UiCisKKyAgICAgUEFSQUxMRUxfTUFLRSA9ICIiCisKKyAgICAgQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzcGxpdHRpbmctYW4tYXBwbGljYXRpb24taW50by1tdWx0aXBsZS1wYWNrYWdlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNwbGl0dGluZyBhbiBBcHBsaWNhdGlvbiBpbnRvIE11bHRpcGxlIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVMnPlBBQ0tBR0VTPC91bGluaz48L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFUyc+RklMRVM8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIHNwbGl0IGFuIGFwcGxpY2F0aW9uIGludG8gbXVsdGlwbGUgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyB0aGUgPGZpbGVuYW1lPmxpYnhwbTwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyByZWNpcGUgZ2VuZXJhdGVzIGEgc2luZ2xlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbGlicmFyeSBhbG9uZworICAgICAgICAgICAgICAgICAgICB3aXRoIGEgZmV3IGJpbmFyaWVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG1vZGlmeSB0aGUgcmVjaXBlIHRvIHNwbGl0IHRoZSBiaW5hcmllcyBpbnRvIHNlcGFyYXRlIHBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCisgICAgIFNVTU1BUlkgPSAiWHBtOiBYIFBpeG1hcCBleHRlbnNpb24gbGlicmFyeSIKKyAgICAgTElDRU5TRSA9ICJCU0QiCisgICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZjQyNzBiMDEyZWNkNGFiMWExNjRmNWY0ZWQ2Y2Y3IgorICAgICBERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnNtIGxpYnh0IgorICAgICBQRSA9ICIxIgorCisgICAgIFhPUkdfUE4gPSAibGliWHBtIgorCisgICAgIFBBQ0tBR0VTID0rICJzeHBtIGN4cG0iCisgICAgIEZJTEVTX2N4cG0gPSAiJHtiaW5kaXJ9L2N4cG0iCisgICAgIEZJTEVTX3N4cG0gPSAiJHtiaW5kaXJ9L3N4cG0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdlIHdhbnQgdG8gc2hpcCB0aGUgPGZpbGVuYW1lPnN4cG08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmN4cG08L2ZpbGVuYW1lPiBiaW5hcmllcyBpbiBzZXBhcmF0ZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgU2luY2UgPGZpbGVuYW1lPmJpbmRpcjwvZmlsZW5hbWU+IHdvdWxkIGJlIHBhY2thZ2VkIGludG8gdGhlIG1haW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+UE48L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYnkgZGVmYXVsdCwgd2UgcHJlcGVuZCB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc28gYWRkaXRpb25hbCBwYWNrYWdlIG5hbWVzIGFyZSBhZGRlZCB0byB0aGUgc3RhcnQgb2YgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIHRoZSBleHRyYSA8ZmlsZW5hbWU+RklMRVNfKjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGVuIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gdGhhdCBkZWZpbmUgd2hpY2ggZmlsZXMgYW5kCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGdvIGludG8gd2hpY2ggcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIEZpbGVzIGluY2x1ZGVkIGJ5IGVhcmxpZXIgcGFja2FnZXMgYXJlIHNraXBwZWQgYnkgbGF0dGVyIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgbWFpbiA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IGluY2x1ZGUgdGhlIGFib3ZlIGxpc3RlZCBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwYWNrYWdpbmctZXh0ZXJuYWxseS1wcm9kdWNlZC1iaW5hcmllcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBFeHRlcm5hbGx5IFByb2R1Y2VkIEJpbmFyaWVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMsIHlvdSBuZWVkIHRvIGFkZCBwcmUtY29tcGlsZWQgYmluYXJpZXMgdG8gYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHRoYXQgYmluYXJpZXMgZm9yIHByb3ByaWV0YXJ5IGNvZGUKKyAgICAgICAgICAgICAgICAgICAgZXhpc3QsIHdoaWNoIGFyZSBjcmVhdGVkIGJ5IGEgcGFydGljdWxhciBkaXZpc2lvbiBvZiBhCisgICAgICAgICAgICAgICAgICAgIGNvbXBhbnkuCisgICAgICAgICAgICAgICAgICAgIFlvdXIgcGFydCBvZiB0aGUgY29tcGFueSBuZWVkcyB0byB1c2UgdGhvc2UgYmluYXJpZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgcGFydCBvZiBhbiBpbWFnZSB0aGF0IHlvdSBhcmUgYnVpbGRpbmcgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFNpbmNlIHlvdSBvbmx5IGhhdmUgdGhlIGJpbmFyaWVzIGFuZCBub3QgdGhlIHNvdXJjZSBjb2RlLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2Fubm90IHVzZSBhIHR5cGljYWwgcmVjaXBlIHRoYXQgZXhwZWN0cyB0byBmZXRjaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGVuIGNvbXBpbGUgaXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uZSBtZXRob2QgaXMgdG8gcGFja2FnZSB0aGUgYmluYXJpZXMgYW5kIHRoZW4gaW5zdGFsbCB0aGVtCisgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGl0IGlzIG5vdCBhIGdvb2QgaWRlYSB0byBwYWNrYWdlIGJpbmFyaWVzCisgICAgICAgICAgICAgICAgICAgIHNpbmNlLCBhbW9uZyBvdGhlciB0aGluZ3MsIGl0IGNhbiBoaW5kZXIgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVwcm9kdWNlIGJ1aWxkcyBhbmQgY291bGQgbGVhZCB0byBjb21wYXRpYmlsaXR5IHByb2JsZW1zCisgICAgICAgICAgICAgICAgICAgIHdpdGggQUJJIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHNvbWV0aW1lcyB5b3UgaGF2ZSBubyBjaG9pY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBlYXNpZXN0IHNvbHV0aW9uIGlzIHRvIGNyZWF0ZSBhIHJlY2lwZSB0aGF0IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWJpbi1wYWNrYWdlJz48ZmlsZW5hbWU+YmluX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0byBiZSBzdXJlIHRoYXQgeW91IGFyZSB1c2luZyBkZWZhdWx0IGxvY2F0aW9ucworICAgICAgICAgICAgICAgICAgICBmb3IgYnVpbGQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICBJbiBtb3N0IGNhc2VzLCB0aGUgPGZpbGVuYW1lPmJpbl9wYWNrYWdlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlcyAic2tpcHBpbmciIHRoZSBjb25maWd1cmUgYW5kIGNvbXBpbGUgc3RlcHMgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICBhcyBzZXRzIHRoaW5ncyB1cCB0byBncmFiIHBhY2thZ2VzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgIGFyZWEuCisgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoaXMgY2xhc3Mgc2V0cyA8ZmlsZW5hbWU+bm9leGVjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb24gYm90aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFza3MsIHNldHMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTXyR7UE59PC9maWxlbmFtZT4gdG8gIi8iIHNvIHRoYXQgaXQgcGlja3MKKyAgICAgICAgICAgICAgICAgICAgdXAgYWxsIGZpbGVzLCBhbmQgc2V0cyB1cCBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzaywgd2hpY2ggZWZmZWN0aXZlbHkgY29waWVzIGFsbCBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1N9PC9maWxlbmFtZT4gdG8gPGZpbGVuYW1lPiR7RH08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaW5fcGFja2FnZTwvZmlsZW5hbWU+IGNsYXNzIHdvcmtzIHdlbGwgd2hlbgorICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMgZXh0cmFjdGVkIGludG8gPGZpbGVuYW1lPiR7U308L2ZpbGVuYW1lPiBhcmUKKyAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBsYWlkIG91dCBpbiB0aGUgd2F5IHRoZXkgc2hvdWxkIGJlIGxhaWQgb3V0CisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHZhcmlhYmxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwncyB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBnbG9zc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgZ29vZCBpZGVhIGV2ZW4gZm9yIGNvbXBvbmVudHMgZGlzdHJpYnV0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYmluYXJ5IGZvcm0sIGFuZCBpcyBvZnRlbiBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIHNoYXJlZCBsaWJyYXJ5LCBsaXN0aW5nIHRoZSBsaWJyYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IG1ha2VzIHN1cmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGlicmFyaWVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHN0YWdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzcm9vdCB3aGVuIG90aGVyIHJlY2lwZXMgbGluayBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LCB3aGljaCBtaWdodCBiZSBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWwgbGlua2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgYWRkZWQgYXV0b21hdGljYWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNlcHRzIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IHVzZSB0aGUgPGZpbGVuYW1lPmJpbl9wYWNrYWdlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHlvdSBuZWVkIHRvIGJlIHN1cmUgeW91IGFyZSBkb2luZyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIHJlY2lwZSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBkbyBub3RoaW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHVzdWFsbHkgc3VmZmljaWVudCB0byBqdXN0IG5vdCBkZWZpbmUgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBpbiB0aGUgcmVjaXBlLCBiZWNhdXNlIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIGRvIG5vdGhpbmcgdW5sZXNzIGEgTWFrZWZpbGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTfTwvZmlsZW5hbWU+IG1pZ2h0IGNvbnRhaW4gYSBNYWtlZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZiB5b3UgaW5oZXJpdCBzb21lIGNsYXNzIHRoYXQgcmVwbGFjZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiB3aXRoIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zLCB0aGVuIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+bm9leGVjPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT5dPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnIHRvIHR1cm4gdGhlIHRhc2tzIGludG8gbm8tb3BzLCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKyAgICAgZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVubGlrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjZGVsZXRpbmctYS10YXNrJz48ZmlsZW5hbWU+ZGVsZXRpbmcgdGhlIHRhc2tzPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZmxhZyBwcmVzZXJ2ZXMgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L3VsaW5rPiwgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWtlIHN1cmUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFzayBpbnN0YWxscyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyBhcHByb3ByaWF0ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVuc3VyZSB0aGF0IHlvdSBzZXQgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwb2ludCB0byB0aGUgZmlsZXMgeW91IGhhdmUgaW5zdGFsbGVkLCB3aGljaCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXJzZSBkZXBlbmRzIG9uIHdoZXJlIHlvdSBoYXZlIGluc3RhbGxlZCB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdoZXRoZXIgdGhvc2UgZmlsZXMgYXJlIGluIGRpZmZlcmVudCBsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIHRoZSBkZWZhdWx0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9ImZvbGxvd2luZy1yZWNpcGUtc3R5bGUtZ3VpZGVsaW5lcyI+CisgICAgICAgICAgICA8dGl0bGU+Rm9sbG93aW5nIFJlY2lwZSBTdHlsZSBHdWlkZWxpbmVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB3cml0aW5nIHJlY2lwZXMsIGl0IGlzIGdvb2QgdG8gY29uZm9ybSB0byBleGlzdGluZworICAgICAgICAgICAgICAgIHN0eWxlIGd1aWRlbGluZXMuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnL3dpa2kvU3R5bGVndWlkZSc+T3BlbkVtYmVkZGVkIFN0eWxlZ3VpZGU8L3VsaW5rPgorICAgICAgICAgICAgICAgIHdpa2kgcGFnZSBwcm92aWRlcyByb3VnaCBndWlkZWxpbmVzIGZvciBwcmVmZXJyZWQgcmVjaXBlIHN0eWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBjb21tb24gZm9yIGV4aXN0aW5nIHJlY2lwZXMgdG8gZGV2aWF0ZSBhIGJpdCBmcm9tIHRoaXMKKyAgICAgICAgICAgICAgICBzdHlsZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBhaW1pbmcgZm9yIGF0IGxlYXN0IGEgY29uc2lzdGVudCBzdHlsZSBpcyBhIGdvb2QgaWRlYS4KKyAgICAgICAgICAgICAgICBTb21lIHByYWN0aWNlcywgc3VjaCBhcyBvbWl0dGluZyBzcGFjZXMgYXJvdW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaW4gYXNzaWdubWVudHMgb3Igb3JkZXJpbmcKKyAgICAgICAgICAgICAgICByZWNpcGUgY29tcG9uZW50cyBpbiBhbiBlcnJhdGljIHdheSwgYXJlIHdpZGVseSBzZWVuIGFzIHBvb3IKKyAgICAgICAgICAgICAgICBzdHlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZWNpcGUtc3ludGF4Jz4KKyAgICAgICAgICAgIDx0aXRsZT5SZWNpcGUgU3ludGF4PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyByZWNpcGUgZmlsZSBzeW50YXggaXMgaW1wb3J0YW50IGZvciB3cml0aW5nCisgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgb3ZlcnZpZXdzIHRoZSBiYXNpYyBpdGVtcyB0aGF0IG1ha2UgdXAgYQorICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgY29tcGxldGUgQml0QmFrZSBzeW50YXggZGVzY3JpcHRpb25zLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyIG9mIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5WYXJpYWJsZSBBc3NpZ25tZW50cyBhbmQgTWFuaXB1bGF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGUgYXNzaWdubWVudHMgYWxsb3cgYSB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhc3NpZ25tZW50IGNhbiBiZSBzdGF0aWMgdGV4dCBvciBtaWdodCBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgb2Ygb3RoZXIgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGFzc2lnbm1lbnQsIGFwcGVuZGluZyBhbmQgcHJlcGVuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucyBhcmUgYWxzbyBzdXBwb3J0ZWQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgc29tZSBvZiB0aGUgd2F5cworICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdmFyaWFibGVzIGluIHJlY2lwZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFMgPSAiJHtXT1JLRElSfS9wb3N0Zml4LSR7UFZ9IgorICAgICBDRkxBR1MgKz0gIi1ETk9fQVNNIgorICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2ZpeHVwLnBhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GdW5jdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyBwcm92aWRlIGEgc2VyaWVzIG9mIGFjdGlvbnMgdG8gYmUgcGVyZm9ybWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHVzdWFsbHkgdXNlIGZ1bmN0aW9ucyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSB0YXNrIGZ1bmN0aW9uIG9yIHRvIGNvbXBsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgZGVmYXVsdCBmdW5jdGlvbiAoaS5lLiBhcHBlbmQgb3IgcHJlcGVuZCB0byBhbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgZnVuY3Rpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmQgZnVuY3Rpb25zIHVzZSA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBzaGVsbAorICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4LCBhbHRob3VnaCBhY2Nlc3MgdG8gT3BlbkVtYmVkZGVkIHZhcmlhYmxlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsIG1ldGhvZHMgYXJlIGFsc28gYXZhaWxhYmxlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGZ1bmN0aW9uIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4gcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbnN0YWxsICgpIHsKKyAgICAgICAgIGF1dG90b29sc19kb19pbnN0YWxsCisgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9zZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L3NlZAorICAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KKyAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbmV3IGZ1bmN0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgY2FsbGVkIGJldHdlZW4gZXhpc3RpbmcgdGFza3MgYXMgbG9uZyBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBmdW5jdGlvbnMgYXJlIG5vdCByZXBsYWNpbmcgb3IgY29tcGxlbWVudGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25zIGluIFB5dGhvbgorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBzaGVsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggb2YgdGhlc2Ugb3B0aW9ucyBhcmUgbm90IHNlZW4gaW4gdGhlIG1ham9yaXR5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+S2V5d29yZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlcyB1c2Ugb25seSBhIGZldyBrZXl3b3Jkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB1c2Uga2V5d29yZHMgdG8gaW5jbHVkZSBjb21tb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyAoPGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPiksIGxvYWQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIGZyb20gb3RoZXIgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPikgYW5kIGV4cG9ydCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBlbnZpcm9ubWVudCAoPGZpbGVuYW1lPmV4cG9ydDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSB1c2Ugb2Ygc29tZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlc2Uga2V5d29yZHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBQT1NUQ09ORiA9ICIke1NUQUdJTkdfQklORElSfS9wb3N0Y29uZiIKKyAgICAgaW5oZXJpdCBhdXRvY29uZgorICAgICByZXF1aXJlIG90aGVyZmlsZS5pbmMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWVudHMgKCMpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgbGluZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSBoYXNoIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4jPC9maWxlbmFtZT4pIGFyZSB0cmVhdGVkIGFzIGNvbW1lbnQgbGluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhcmUgaWdub3JlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBUaGlzIGlzIGEgY29tbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBsaXN0IHN1bW1hcml6ZXMgdGhlIG1vc3QgaW1wb3J0YW50IGFuZCBtb3N0IGNvbW1vbmx5CisgICAgICAgICAgICAgICAgdXNlZCBwYXJ0cyBvZiB0aGUgcmVjaXBlIHN5bnRheC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSBwYXJ0cyBvZiB0aGUgc3ludGF4LCB5b3UgY2FuCisgICAgICAgICAgICAgICAgcmVmZXJlbmNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxpbmUgQ29udGludWF0aW9uIChcKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBiYWNrd2FyZCBzbGFzaCAoPGZpbGVuYW1lPlw8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciB0byBzcGxpdCBhIHN0YXRlbWVudCBvdmVyIG11bHRpcGxlIGxpbmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2UgdGhlIHNsYXNoIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRvIGJlIGNvbnRpbnVlZCBvbiB0aGUgbmV4dCBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIgPSAiQSByZWFsbHkgbG9uZyBcCisgICAgICAgICAgICBsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBoYXZlIGFueSBjaGFyYWN0ZXJzIGluY2x1ZGluZyBzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0YWJzIGFmdGVyIHRoZSBzbGFzaCBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFZhcmlhYmxlcyAoJHs8cmVwbGFjZWFibGU+VkFSTkFNRTwvcmVwbGFjZWFibGU+fSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPiR7PHJlcGxhY2VhYmxlPlZBUk5BTUU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4IHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgYSB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGlicG5nL3psaWItJHtQVn0udGFyLmd6IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCB0aGUgdmFsdWUgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGV4cHJlc3NlZCBpbiB0aGlzIGZvcm0gZG9lcyBub3QgZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0ZWQgYXV0b21hdGljYWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhwYW5zaW9uIG9mIHRoZXNlIGV4cHJlc3Npb25zIGhhcHBlbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbi1kZW1hbmQgbGF0ZXIgKGUuZy4gdXN1YWxseSB3aGVuIGEgZnVuY3Rpb24gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VzIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgZXhlY3V0ZXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgZW5zdXJlcyB0aGF0IHRoZSB2YWx1ZXMgYXJlIG1vc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhleSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIHJhcmUgb2NjYXNpb24gdGhhdCB5b3UgZG8gbmVlZCB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIHRvIGJlIGV4cGFuZGVkIGltbWVkaWF0ZWx5LCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Oj08L2ZpbGVuYW1lPiBvcGVyYXRvciBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiB3aGVuIHlvdSBtYWtlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQsIGJ1dCB0aGlzIGlzIG5vdCBnZW5lcmFsbHkgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5RdW90ZSBBbGwgQXNzaWdubWVudHMgKCI8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiIpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgZG91YmxlIHF1b3RlcyBhcm91bmQgdmFsdWVzIGluIGFsbCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudHMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4iPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4iPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUjEgPSAiJHtPVEhFUlZBUn0iCisgICAgIFZBUjIgPSAiVGhlIHZlcnNpb24gaXMgJHtQVn0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmRpdGlvbmFsIEFzc2lnbm1lbnQgKD89KTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uYWwgYXNzaWdubWVudCBpcyB1c2VkIHRvIGFzc2lnbiBhCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSB0byBhIHZhcmlhYmxlLCBidXQgb25seSB3aGVuIHRoZSB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IHVuc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbCBzaWduCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj89PC9maWxlbmFtZT4pIHRvIG1ha2UgYSAic29mdCIgYXNzaWdubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgY29uZGl0aW9uYWwgYXNzaWdubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgInNvZnQiIGFzc2lnbm1lbnRzIGFyZSB1c2VkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvciB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGFsbG93ZWQgdG8gY29tZSB0aHJvdWdoIGZyb20gdGhlIGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VkFSMTwvZmlsZW5hbWU+IGlzIHNldCB0byAiTmV3IHZhbHVlIiBpZgorICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgY3VycmVudGx5IGVtcHR5LgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBoYXMgYWxyZWFkeSBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQsIGl0IHJlbWFpbnMgdW5jaGFuZ2VkOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIxID89ICJOZXcgdmFsdWUiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIG5leHQgZXhhbXBsZSwgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgbGVmdCB3aXRoIHRoZSB2YWx1ZSAiT3JpZ2luYWwgdmFsdWUiOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIxID0gIk9yaWdpbmFsIHZhbHVlIgorICAgICBWQVIxID89ICJOZXcgdmFsdWUiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGVuZGluZyAoKz0pOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHBsdXMgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbHMgc2lnbgorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+KSB0byBhcHBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgb2YgdGhlIHZhcmlhYmxlIGFuZCB0aGUgbmV3IGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBlbmRpbmcgKD0rKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBlcXVhbHMgc2lnbiBmb2xsb3dlZCBieSB0aGUgcGx1cyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPikgdG8gcHJlcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgYWRkcyBhIHNwYWNlIGJldHdlZW4gdGhlIG5ldyBjb250ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBleGlzdGluZyBjb250ZW50IG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSID0rICJTdGFydHMiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGVuZGluZyAoX2FwcGVuZCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kIHZhbHVlcyB0byBleGlzdGluZyB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGRvZXMgbm90IGFkZCBhbnkgYWRkaXRpb25hbCBzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+IG9wZXJhdG9ycyBoYXZlIGJlZW4gYXBwbGllZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9jY3VycmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHNwYWNlIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdGx5IGFkZGVkIHRvIHRoZSBzdGFydCB0byBlbnN1cmUgdGhlIGFwcGVuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yIHdpdGggb3ZlcnJpZGVzLCB3aGljaCByZXN1bHRzIGluIHRoZSBhY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGJlaW5nIHBlcmZvcm1lZCBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUklfYXBwZW5kX3NoNCA9ICIgZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGVuZGluZyAoX3ByZXBlbmQpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZyB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGRvZXMgbm90IGFkZCBhbnkgYWRkaXRpb25hbCBzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+IG9wZXJhdG9ycyBoYXZlIGJlZW4gYXBwbGllZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9jY3VycmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHNwYWNlIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdGx5IGFkZGVkIHRvIHRoZSBlbmQgdG8gZW5zdXJlIHRoZSBwcmVwZW5kZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENGTEFHU19wcmVwZW5kID0gIi1JJHtTfS9teWluY2x1ZGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgb25seSBiZWluZyBwZXJmb3JtZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfcHJlcGVuZF9zaDQgPSAiLUkke1N9L215aW5jbHVkZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PdmVycmlkZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIG92ZXJyaWRlcyB0byBzZXQgYSB2YWx1ZSBjb25kaXRpb25hbGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwaWNhbGx5IGJhc2VkIG9uIGhvdyB0aGUgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQlJBTkNIJz48ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlJ3MgdmFsdWUgdG8gInN0YW5kYXJkL2Jhc2UiIGZvciBhbnkgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGZvciBxZW11YXJtIHdoZXJlIGl0IHNob3VsZCBiZSBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIsIHlvdSB3b3VsZCBkbyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSCA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX3FlbXVhcm0gID0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVzIGFyZSBhbHNvIHVzZWQgdG8gc2VwYXJhdGUgYWx0ZXJuYXRlIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAgICAgb2YgYSB2YXJpYWJsZSBpbiBvdGhlciBzaXR1YXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdoZW4gc2V0dGluZyB2YXJpYWJsZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBwcm9kdWNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNpcGUsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSBhbiBvdmVycmlkZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluZGVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2Ugc3BhY2VzIGZvciBpbmRlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGFuIHRhYnMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc2hlbGwgZnVuY3Rpb25zLCBib3RoIGN1cnJlbnRseSB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgYSBwb2xpY3kgZGVjaXNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSB0YWJzIGluIHNoZWxsIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBzb21lIGxheWVycyBoYXZlIGEgcG9saWN5IHRvIHVzZSBzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbGwgaW5kZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFB5dGhvbiBmb3IgQ29tcGxleCBPcGVyYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBhZHZhbmNlZCBwcm9jZXNzaW5nLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBjb2RlIGR1cmluZyB2YXJpYWJsZSBhc3NpZ25tZW50cyAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoIGFuZCByZXBsYWNlbWVudCBvbiBhIHZhcmlhYmxlKS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBpbmRpY2F0ZSBQeXRob24gY29kZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0A8cmVwbGFjZWFibGU+cHl0aG9uX2NvZGU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4IGZvciB0aGUgdmFyaWFibGUgYXNzaWdubWVudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy96aXAke0BkLmdldFZhcignUFYnLDEpLnJlcGxhY2UoJy4nLCAnJyl9LnRnegorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TaGVsbCBGdW5jdGlvbiBTeW50YXg6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHNoZWxsIGZ1bmN0aW9ucyBhcyBpZiB5b3Ugd2VyZSB3cml0aW5nIGEgc2hlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCB3aGVuIHlvdSBkZXNjcmliZSBhIGxpc3Qgb2YgYWN0aW9ucyB0byB0YWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBlbnN1cmUgdGhhdCB5b3VyIHNjcmlwdCB3b3JrcyB3aXRoIGEgZ2VuZXJpYworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gYW5kIHRoYXQgaXQgZG9lcyBub3QgcmVxdWlyZQorICAgICAgICAgICAgICAgICAgICAgICAgYW55IDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4gb3Igb3RoZXIgc2hlbGwtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2FtZSBjb25zaWRlcmF0aW9ucyBhcHBseSB0byB2YXJpb3VzIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgdXRpbGl0aWVzIChlLmcuIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ncmVwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5hd2s8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkgdGhhdCB5b3UgbWlnaHQgd2lzaCB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBpbiBkb3VidCwgeW91IHNob3VsZCBjaGVjayB3aXRoIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgLSBpbmNsdWRpbmcgdGhvc2UgZnJvbSBCdXN5Qm94LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1uZXdtYWNoaW5lIj4KKyAgICAgICAgPHRpdGxlPkFkZGluZyBhIE5ldyBNYWNoaW5lPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFkZGluZyBhIG5ldyBtYWNoaW5lIHRvIHRoZSBZb2N0byBQcm9qZWN0IGlzIGEgc3RyYWlnaHRmb3J3YXJkCisgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gYWRkIG1hY2hpbmVzIHRoYXQgYXJlIHNpbWlsYXIKKyAgICAgICAgICAgIHRvIHRob3NlIHRoYXQgdGhlIFlvY3RvIFByb2plY3QgYWxyZWFkeSBzdXBwb3J0cy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEFsdGhvdWdoIHdlbGwgd2l0aGluIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgICAgICAgICAgYWRkaW5nIGEgdG90YWxseSBuZXcgYXJjaGl0ZWN0dXJlIG1pZ2h0IHJlcXVpcmUKKyAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIDxmaWxlbmFtZT5nY2MvZ2xpYmM8L2ZpbGVuYW1lPiBhbmQgdG8gdGhlIHNpdGUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGEgY29tcGxldGUgZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBhZGQgYSBuZXcgbWFjaGluZSwKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCisgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LW5ld21hY2hpbmUtY29uZmZpbGUiPgorICAgICAgICAgICAgPHRpdGxlPkFkZGluZyB0aGUgTWFjaGluZSBDb25maWd1cmF0aW9uIEZpbGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBhZGQgYSBuZXcgbWFjaGluZSwgeW91IG5lZWQgdG8gYWRkIGEgbmV3IG1hY2hpbmUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gdGhlIGxheWVyJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHByb3ZpZGVzIGRldGFpbHMgYWJvdXQgdGhlIGRldmljZQorICAgICAgICAgICAgICAgIHlvdSBhcmUgYWRkaW5nLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSByb290IG5hbWUgb2YgdGhlCisgICAgICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gcmVmZXJlbmNlIHRoZSBuZXcgbWFjaGluZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcm93bmJheS5jb25mPC9maWxlbmFtZT4sIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICByZWNvZ25pemVzIHRoZSBtYWNoaW5lIGFzICJjcm93bmJheSIuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBtb3N0IGltcG9ydGFudCB2YXJpYWJsZXMgeW91IG11c3Qgc2V0IGluIHlvdXIgbWFjaGluZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBvciBpbmNsdWRlIGZyb20gYSBsb3dlci1sZXZlbCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UQVJHRVRfQVJDSCc+VEFSR0VUX0FSQ0g8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAiYXJtIik8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1BST1ZJREVSJz5QUkVGRVJSRURfUFJPVklERVI8L3VsaW5rPl92aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9GRUFUVVJFUyc+TUFDSElORV9GRUFUVVJFUzwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuICJhcG0gc2NyZWVuIHdpZmkiKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYWxzbyBuZWVkIHRoZXNlIHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRVMnPlNFUklBTF9DT05TT0xFUzwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIik8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0VSTkVMX0lNQUdFVFlQRSc+S0VSTkVMX0lNQUdFVFlQRTwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuICJ6SW1hZ2UiKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz5JTUFHRV9GU1RZUEVTPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gInRhci5neiBqZmZzMiIpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBmdWxsIGRldGFpbHMgb24gdGhlc2UgdmFyaWFibGVzIGluIHRoZSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbGV2ZXJhZ2UgZXhpc3RpbmcgbWFjaGluZSA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzIGZyb20gPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LW5ld21hY2hpbmUta2VybmVsIj4KKyAgICAgICAgICAgIDx0aXRsZT5BZGRpbmcgYSBLZXJuZWwgZm9yIHRoZSBNYWNoaW5lPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbmVlZHMgdG8gYmUgYWJsZSB0byBidWlsZCBhIGtlcm5lbAorICAgICAgICAgICAgICAgIGZvciB0aGUgbWFjaGluZS4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBlaXRoZXIgY3JlYXRlIGEgbmV3IGtlcm5lbCByZWNpcGUgZm9yIHRoaXMgbWFjaGluZSwKKyAgICAgICAgICAgICAgICBvciBleHRlbmQgYW4gZXhpc3Rpbmcga2VybmVsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgc2V2ZXJhbCBrZXJuZWwgcmVjaXBlIGV4YW1wbGVzIGluIHRoZQorICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGhhdCB5b3UgY2FuIHVzZSBhcyByZWZlcmVuY2VzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGNyZWF0aW5nIGEgbmV3IGtlcm5lbCByZWNpcGUsIG5vcm1hbCByZWNpcGUtd3JpdGluZworICAgICAgICAgICAgICAgIHJ1bGVzIGFwcGx5IGZvciBzZXR0aW5nIHVwIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPlNSQ19VUkk8L3VsaW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRodXMsIHlvdSBuZWVkIHRvIHNwZWNpZnkgYW55IG5lY2Vzc2FyeSBwYXRjaGVzIGFuZCBzZXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPlM8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdG8gcG9pbnQgYXQgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiB0YXNrIHRoYXQKKyAgICAgICAgICAgICAgICBjb25maWd1cmVzIHRoZSB1bnBhY2tlZCBrZXJuZWwgd2l0aCBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIGJ5IHVzaW5nIGEgPGZpbGVuYW1lPm1ha2UgZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kIG9yLCBtb3JlIGNvbW1vbmx5LCBieSBjb3B5aW5nIGluIGEgc3VpdGFibGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhbmQgdGhlbiBydW5uaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2Ugb2xkY29uZmlnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQnkgbWFraW5nIHVzZSBvZiA8ZmlsZW5hbWU+aW5oZXJpdCBrZXJuZWw8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICBwb3RlbnRpYWxseSBzb21lIG9mIHRoZSA8ZmlsZW5hbWU+bGludXgtKi5pbmM8L2ZpbGVuYW1lPiBmaWxlcywKKyAgICAgICAgICAgICAgICBtb3N0IG90aGVyIGZ1bmN0aW9uYWxpdHkgaXMgY2VudHJhbGl6ZWQgYW5kIHRoZSBkZWZhdWx0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICBjbGFzcyBub3JtYWxseSB3b3JrIHdlbGwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgZXh0ZW5kaW5nIGFuIGV4aXN0aW5nIGtlcm5lbCByZWNpcGUsIGl0IGlzIHVzdWFsbHkKKyAgICAgICAgICAgICAgICBhIG1hdHRlciBvZiBhZGRpbmcgYSBzdWl0YWJsZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIFRoZSBmaWxlIG5lZWRzIHRvIGJlIGFkZGVkIGludG8gYSBsb2NhdGlvbiBzaW1pbGFyIHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzIHVzZWQgZm9yIG90aGVyIG1hY2hpbmVzCisgICAgICAgICAgICAgICAgaW4gYSBnaXZlbiBrZXJuZWwgcmVjaXBlLgorICAgICAgICAgICAgICAgIEEgcG9zc2libGUgd2F5IHRvIGRvIHRoaXMgaXMgYnkgbGlzdGluZyB0aGUgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGFuZCBhZGRpbmcgdGhlIG1hY2hpbmUgdG8gdGhlCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09NUEFUSUJMRV9NQUNISU5FJz5DT01QQVRJQkxFX01BQ0hJTkU8L3VsaW5rPjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ09NUEFUSUJMRV9NQUNISU5FID0gJyhxZW11eDg2fHFlbXVtaXBzKScKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LW5ld21hY2hpbmUtZm9ybWZhY3RvciI+CisgICAgICAgICAgICA8dGl0bGU+QWRkaW5nIGEgRm9ybWZhY3RvciBDb25maWd1cmF0aW9uIEZpbGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGZvcm1mYWN0b3IgY29uZmlndXJhdGlvbiBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgICAgIHRhcmdldCBoYXJkd2FyZSBmb3Igd2hpY2ggdGhlIGltYWdlIGlzIGJlaW5nIGJ1aWx0IGFuZCBpbmZvcm1hdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSBjYW5ub3Qgb2J0YWluIGZyb20gb3RoZXIgc291cmNlcyBzdWNoIGFzIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlcyBvZiBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYSBmb3JtZmFjdG9yIGNvbmZpZ3VyYXRpb24gZmlsZSBpbmNsdWRlCisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgb3JpZW50YXRpb24sIHdoZXRoZXIgb3Igbm90IHRoZSBzeXN0ZW0gaGFzIGEga2V5Ym9hcmQsCisgICAgICAgICAgICAgICAgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBrZXlib2FyZCBpbiByZWxhdGlvbiB0byB0aGUgc2NyZWVuLCBhbmQKKyAgICAgICAgICAgICAgICB0aGUgc2NyZWVuIHJlc29sdXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdXNlcyByZWFzb25hYmxlIGRlZmF1bHRzIGluIG1vc3QgY2FzZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgY3VzdG9taXphdGlvbiBpcworICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgPGZpbGVuYW1lPm1hY2hjb25maWc8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBkaXJlY3RvcmllcyBmb3Igc3BlY2lmaWMgbWFjaGluZXMgc3VjaCBhcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXR0aW5ncyBhdmFpbGFibGUgYW5kIHRoZSBkZWZhdWx0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZmlsZXMvY29uZmlnPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICBzYW1lIGFyZWEuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGZvciAicWVtdWFybSIgbWFjaGluZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEhBVkVfVE9VQ0hTQ1JFRU49MQorICAgICBIQVZFX0tFWUJPQVJEPTEKKworICAgICBESVNQTEFZX0NBTl9ST1RBVEU9MAorICAgICBESVNQTEFZX09SSUVOVEFUSU9OPTAKKyAgICAgI0RJU1BMQVlfV0lEVEhfUElYRUxTPTY0MAorICAgICAjRElTUExBWV9IRUlHSFRfUElYRUxTPTQ4MAorICAgICAjRElTUExBWV9CUFA9MTYKKyAgICAgRElTUExBWV9EUEk9MTUwCisgICAgIERJU1BMQVlfU1VCUElYRUxfT1JERVI9dnJnYgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdncy11cGdyYWRpbmctcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5VcGdyYWRpbmcgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPdmVyIHRpbWUsIHVwc3RyZWFtIGRldmVsb3BlcnMgcHVibGlzaCBuZXcgdmVyc2lvbnMgZm9yIHNvZnR3YXJlCisgICAgICAgICAgICBidWlsdCBieSBsYXllciByZWNpcGVzLgorICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdG8ga2VlcCByZWNpcGVzIHVwLXRvLWRhdGUgd2l0aCB1cHN0cmVhbQorICAgICAgICAgICAgdmVyc2lvbiByZWxlYXNlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hpbGUgc2V2ZXJhbCBtZXRob2RzIGV4aXN0IHRoYXQgYWxsb3cgeW91IHVwZ3JhZGUgYSByZWNpcGUsCisgICAgICAgICAgICB5b3UgbWlnaHQgY29uc2lkZXIgY2hlY2tpbmcgb24gdGhlIHVwZ3JhZGUgc3RhdHVzIG9mIGEgcmVjaXBlCisgICAgICAgICAgICBmaXJzdC4KKyAgICAgICAgICAgIFlvdSBjYW4gZG8gc28gdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBjaGVjay11cGdyYWRlLXN0YXR1czwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV2dG9vbC1jaGVja2luZy1vbi10aGUtdXBncmFkZS1zdGF0dXMtb2YtYS1yZWNpcGUnPkNoZWNraW5nIG9uIHRoZSBVcGdyYWRlIFN0YXR1cyBvZiBhIFJlY2lwZTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhyZWUgd2F5cyB5b3UgY2FuCisgICAgICAgICAgICB1cGdyYWRlIGEgcmVjaXBlLgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIEF1dG9tYXRlZCBVcGdyYWRlIEhlbHBlciAoQVVIKSB0byBzZXQgdXAKKyAgICAgICAgICAgIGF1dG9tYXRpYyB2ZXJzaW9uIHVwZ3JhZGVzLgorICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICB0byBzZXQgdXAgc2VtaS1hdXRvbWF0aWMgdmVyc2lvbiB1cGdyYWRlcy4KKyAgICAgICAgICAgIEZpbmFsbHksIHlvdSBjYW4gbWFudWFsbHkgdXBncmFkZSBhIHJlY2lwZSBieSBlZGl0aW5nIHRoZQorICAgICAgICAgICAgcmVjaXBlIGl0c2VsZi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdncy11c2luZy10aGUtYXV0by11cGdyYWRlLWhlbHBlcic+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgdGhlIEF1dG8gVXBncmFkZSBIZWxwZXIgKEFVSCk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgQVVIIHV0aWxpdHkgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIG9yZGVyIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUKKyAgICAgICAgICAgICAgICB1cGdyYWRlcyBmb3IgcmVjaXBlcyBiYXNlZCBvbiBuZXcgdmVyc2lvbnMgYmVpbmcKKyAgICAgICAgICAgICAgICBwdWJsaXNoZWQgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgVXNlIEFVSCB3aGVuIHlvdSB3YW50IHRvIGNyZWF0ZSBhIHNlcnZpY2UgdGhhdCBwZXJmb3JtcyB0aGUKKyAgICAgICAgICAgICAgICB1cGdyYWRlcyBhdXRvbWF0aWNhbGx5IGFuZCBvcHRpb25hbGx5IHNlbmRzIHlvdSBhbiBlbWFpbCB3aXRoCisgICAgICAgICAgICAgICAgdGhlIHJlc3VsdHMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFVSCBhbGxvd3MgeW91IHRvIHVwZGF0ZSBzZXZlcmFsIHJlY2lwZXMgd2l0aCBhIHNpbmdsZSB1c2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIG9wdGlvbmFsbHkgcGVyZm9ybSBidWlsZCBhbmQgaW50ZWdyYXRpb24gdGVzdHMKKyAgICAgICAgICAgICAgICB1c2luZyBpbWFnZXMgd2l0aCB0aGUgcmVzdWx0cyBzYXZlZCB0byB5b3VyIGhhcmQgZHJpdmUgYW5kCisgICAgICAgICAgICAgICAgZW1haWxzIG9mIHJlc3VsdHMgb3B0aW9uYWxseSBzZW50IHRvIHJlY2lwZSBtYWludGFpbmVycy4KKyAgICAgICAgICAgICAgICBGaW5hbGx5LCBBVUggY3JlYXRlcyBHaXQgY29tbWl0cyB3aXRoIGFwcHJvcHJpYXRlIGNvbW1pdAorICAgICAgICAgICAgICAgIG1lc3NhZ2VzIGluIHRoZSBsYXllcidzIHRyZWUgZm9yIHRoZSBjaGFuZ2VzIG1hZGUgdG8gcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9ucyBkbyBleGlzdCB3aGVuIHlvdSBzaG91bGQgbm90IHVzZSBBVUggdG8gdXBncmFkZQorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGFuZCB5b3Ugc2hvdWxkIGluc3RlYWQgdXNlIGVpdGhlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gb3IgdXBncmFkZSB5b3VyCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgbWFudWFsbHk6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBBVUggY2Fubm90IGNvbXBsZXRlIHRoZSB1cGdyYWRlIHNlcXVlbmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIHVzdWFsbHkgcmVzdWx0cyBiZWNhdXNlIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMgY2FycmllZCBieSB0aGUgcmVjaXBlIGNhbm5vdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmViYXNlZCB0byB0aGUgbmV3IHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIG1hbnVhbGx5IHJlc29sdmUgY29uZmxpY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gZm9yIGFueSByZWFzb24geW91IHdhbnQgZnVsbGVyIGNvbnRyb2wgb3ZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB1cGdyYWRlIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdoZW4geW91IHdhbnQgc3BlY2lhbCBhcnJhbmdlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIGRlc2NyaWJlIGhvdyB0byBzZXQgdXAgdGhlIEFVSCB1dGlsaXR5OgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJlIFN1cmUgdGhlIERldmVsb3BtZW50IEhvc3QgaXMgU2V0IFVwOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBzdXJlIHRoYXQgeW91ciBkZXZlbG9wbWVudCBob3N0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgeW91ciBob3N0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU3VyZSBHaXQgaXMgQ29uZmlndXJlZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEFVSCB1dGlsaXR5IHJlcXVpcmVzIEdpdCB0byBiZSBjb25maWd1cmVkIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEFVSCB1c2VzIEdpdCB0byBzYXZlIHVwZ3JhZGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgeW91IG11c3QgaGF2ZSBHaXQgdXNlciBhbmQgZW1haWwgY29uZmlndXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzaG93cyB5b3VyIGNvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjb25maWcgLS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgdGhlIHVzZXIgYW5kIGVtYWlsIGNvbmZpZ3VyZWQsIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGRvIHNvOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIDxyZXBsYWNlYWJsZT5zb21lX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAkIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCA8cmVwbGFjZWFibGU+dXNlcm5hbWU8L3JlcGxhY2VhYmxlPkA8cmVwbGFjZWFibGU+ZG9tYWluPC9yZXBsYWNlYWJsZT4uY29tCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSBBVUggUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIEFVSCwgeW91IG11c3QgY2xvbmUgdGhlIHJlcG9zaXRvcnkgb250byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHVzZXMgR2l0IHRvIGNyZWF0ZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IG9uIHlvdXIgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9hdXRvLXVwZ3JhZGUtaGVscGVyCisgICAgIENsb25pbmcgaW50byAnYXV0by11cGdyYWRlLWhlbHBlcicuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiA3NjgsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoMzAwLzMwMCksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgNzY4IChkZWx0YSA0OTkpLCByZXVzZWQgNzAzIChkZWx0YSA0MzQpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICg3NjgvNzY4KSwgMTkxLjQ3IEtpQiB8IDk4LjAwIEtpQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICg0OTkvNDk5KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBVUggaXMgbm90IHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBEZWRpY2F0ZWQgQnVpbGQgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCB0byBjcmVhdGUgYSBmcmVzaCBidWlsZCBkaXJlY3RvcnkgdGhhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBleGNsdXNpdmVseSBmb3IgcnVubmluZyB0aGUgQVVIIHV0aWxpdHk6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5CisgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52IDxyZXBsYWNlYWJsZT55b3VyX0FVSF9idWlsZF9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgUmUtdXNpbmcgYW4gZXhpc3RpbmcgYnVpbGQgZGlyZWN0b3J5IGFuZCBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGlzIG5vdCByZWNvbW1lbmRlZCBhcyBleGlzdGluZyBzZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgY2F1c2UgQVVIIHRvIGZhaWwgb3IgYmVoYXZlIHVuZGVzaXJhYmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb25zIGluIFlvdXIgTG9jYWwgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXZlcmFsIHNldHRpbmdzIG5lZWQgdG8gZXhpc3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgeW91IGp1c3QgY3JlYXRlZCBmb3IgQVVILgorICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSB0aGVzZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5CdWlsZCBIaXN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIG9wdGlvbmFsLCB5b3UgbmVlZCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUID0rICJidWlsZGhpc3RvcnkiCisgICAgIEJVSUxESElTVE9SWV9DT01NSVQgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgYSBzdWNjZXNzZnVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGUsIGEgYnVpbGQgaGlzdG9yeSAiZGlmZiIgZmlsZSBhcHBlYXJzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXBncmFkZS1oZWxwZXIvd29yay9yZWNpcGUvYnVpbGRoaXN0b3J5LWRpZmYudHh0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3VuZCBpbiB5b3VyIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBlbmFibGUgdGVzdGluZyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggaXMgb3B0aW9uYWwsIHlvdSBuZWVkIHRvIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzZXQgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGRpc3RybyBkb2VzIG5vdCBlbmFibGUgYnkgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRlc3QsIHdoaWNoIFBva3kgZG9lcywgeW91IG5lZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBwdGVzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IFN0YXJ0IGEgdm5jc2VydmVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHJ1bm5pbmcgaW4gYSBzZXJ2ZXIgd2l0aG91dCBhbiBYMTEgc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIHN0YXJ0IGEgdm5jc2VydmVyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHZuY3NlcnZlciA6MQorICAgICAkIGV4cG9ydCBESVNQTEFZPToxCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhbmQgRWRpdCBhbiBBVUggQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVwZ3JhZGUtaGVscGVyL3VwZ3JhZGUtaGVscGVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGluIHlvdXIgYnVpbGQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2F1dG8tdXBncmFkZS1oZWxwZXIvdHJlZS8nPkFVSCBzb3VyY2UgcmVwb3NpdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5SZWFkIHRocm91Z2ggdGhlIHNhbXBsZSBmaWxlIGFuZCBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGVuYWJsZWQgYnVpbGQgaGlzdG9yeSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFzIGRlc2NyaWJlZCBlYXJsaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgZW5hYmxlIGl0IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXBncmFkZS1oZWxwZXIuY29uZjwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWxzbywgaWYgeW91IGFyZSB1c2luZyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1haW50YWluZXJzLmluYzwvZmlsZW5hbWU+IGZpbGUgc3VwcGxpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggUG9reSBhbmQgbG9jYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG88L2ZpbGVuYW1lPiBhbmQgeW91IGRvIG5vdCBzZXQgYQorICAgICAgICAgICAgICAgICAgICAgICAgIm1haW50YWluZXJzX3doaXRlbGlzdCIgb3IgImdsb2JhbF9tYWludGFpbmVyX292ZXJyaWRlIgorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT51cGdyYWRlLWhlbHBlci5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIGFuZCB5b3Ugc3BlY2lmeSAiLWUgYWxsIiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEFVSCBjb21tYW5kLWxpbmUsIHRoZSB1dGlsaXR5IGF1dG9tYXRpY2FsbHkgc2VuZHMgb3V0CisgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbHMgdG8gYWxsIHRoZSBkZWZhdWx0IG1haW50YWluZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIGF2b2lkIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIG5leHQgc2V0IG9mIGV4YW1wbGVzIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBBVUg6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZ3JhZGluZyBhIFNwZWNpZmljIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXBncmFkZSBhIHNwZWNpZmljIHJlY2lwZSwgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgdXBncmFkZS1oZWxwZXIucHkgPHJlcGxhY2VhYmxlPnJlY2lwZV9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIGNvbW1hbmQgdXBncmFkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eG1vZG1hcDwvZmlsZW5hbWU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB1cGdyYWRlLWhlbHBlci5weSB4bW9kbWFwCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZ3JhZGluZyBhIFNwZWNpZmljIFJlY2lwZSB0byBhIFBhcnRpY3VsYXIgVmVyc2lvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXBncmFkZSBhIHNwZWNpZmljIHJlY2lwZSB0byBhIHBhcnRpY3VsYXIgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgdXBncmFkZS1oZWxwZXIucHkgPHJlcGxhY2VhYmxlPnJlY2lwZV9uYW1lPC9yZXBsYWNlYWJsZT4gLXQgPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgY29tbWFuZCB1cGdyYWRlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT54bW9kbWFwPC9maWxlbmFtZT4gcmVjaXBlIHRvIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIDEuMi4zOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IHhtb2RtYXAgLXQgMS4yLjMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBncmFkaW5nIGFsbCBSZWNpcGVzIHRvIHRoZSBMYXRlc3QgVmVyc2lvbnMgYW5kIFN1cHByZXNzaW5nIEVtYWlsIE5vdGlmaWNhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHVwZ3JhZGUgYWxsIHJlY2lwZXMgdG8gdGhlaXIgbW9zdCByZWNlbnQgdmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdXBwcmVzcyB0aGUgZW1haWwgbm90aWZpY2F0aW9ucywgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgdXBncmFkZS1oZWxwZXIucHkgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZ3JhZGluZyBhbGwgUmVjaXBlcyB0byB0aGUgTGF0ZXN0IFZlcnNpb25zIGFuZCBTZW5kIEVtYWlsIE5vdGlmaWNhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHVwZ3JhZGUgYWxsIHJlY2lwZXMgdG8gdGhlaXIgbW9zdCByZWNlbnQgdmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZW5kIGVtYWlsIG1lc3NhZ2VzIHRvIG1haW50YWluZXJzIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0ZWQgcmVjaXBlIGFzIHdlbGwgYXMgYSBzdGF0dXMgZW1haWwsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IC1lIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgcnVuIHRoZSBBVUggdXRpbGl0eSwgeW91IGNhbiBmaW5kIHRoZSByZXN1bHRzCisgICAgICAgICAgICAgICAgaW4gdGhlIEFVSCBidWlsZCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke0JVSUxERElSfS91cGdyYWRlLWhlbHBlci88cmVwbGFjZWFibGU+dGltZXN0YW1wPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIEFVSCB1dGlsaXR5IGFsc28gY3JlYXRlcyByZWNpcGUgdXBkYXRlIGNvbW1pdHMgZnJvbQorICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWwgdXBncmFkZSBhdHRlbXB0cyBpbiB0aGUgbGF5ZXIgdHJlZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBlYXNpbHkgc2V0IHVwIHRvIHJ1biB0aGUgQVVIIHV0aWxpdHkgb24gYSByZWd1bGFyCisgICAgICAgICAgICAgICAgYmFzaXMgYnkgdXNpbmcgYSBjcm9uIGpvYi4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvYXV0by11cGdyYWRlLWhlbHBlci90cmVlL3dlZWtseWpvYi5zaCc+PGZpbGVuYW1lPndlZWtseWpvYi5zaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBmaWxlIGRpc3RyaWJ1dGVkIHdpdGggdGhlIHV0aWxpdHkgZm9yIGFuIGV4YW1wbGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtdXNpbmctZGV2dG9vbC11cGdyYWRlJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYW4gYWx0ZXJuYXRpdmUgbWV0aG9kIGZvciB1cGdyYWRpbmcKKyAgICAgICAgICAgICAgICByZWNpcGVzIHRvIG5ld2VyIHZlcnNpb25zIGlzIHRvIHVzZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1kZXZ0b29sLXJlZmVyZW5jZSc+PGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIGFib3V0IDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBpbgorICAgICAgICAgICAgICAgIGdlbmVyYWwgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1kZXZ0b29sLXVzZS1kZXZ0b29sLXVwZ3JhZGUtdG8tY3JlYXRlLWEtdmVyc2lvbi1vZi10aGUtcmVjaXBlLXRoYXQtc3VwcG9ydHMtYS1uZXdlci12ZXJzaW9uLW9mLXRoZS1zb2Z0d2FyZSc+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byBDcmVhdGUgYSBWZXJzaW9uIG9mIHRoZSBSZWNpcGUgdGhhdCBTdXBwb3J0cyBhIE5ld2VyIFZlcnNpb24gb2YgdGhlIFNvZnR3YXJlPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gc2VlIGFsbCB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgYXZhaWxhYmxlIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4sIHVzZSB0aGUgZm9sbG93aW5nIGhlbHAKKyAgICAgICAgICAgICAgICBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHVwZ3JhZGUgLWgKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZpbmQgb3V0IHdoYXQgdmVyc2lvbiBhIHJlY2lwZSBpcyBjdXJyZW50bHkgYXQKKyAgICAgICAgICAgICAgICB1cHN0cmVhbSB3aXRob3V0IGFueSBhdHRlbXB0IHRvIHVwZ3JhZGUgeW91ciBsb2NhbCB2ZXJzaW9uIG9mCisgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGxhdGVzdC12ZXJzaW9uIDxyZXBsYWNlYWJsZT5yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gZGVzY3JpYmluZyBBVUgsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IHdvcmtzIGluIGEKKyAgICAgICAgICAgICAgICBsZXNzLWF1dG9tYXRlZCBtYW5uZXIgdGhhbiBBVUguCisgICAgICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gb25seQorICAgICAgICAgICAgICAgIHdvcmtzIG9uIGEgc2luZ2xlIHJlY2lwZSB0aGF0IHlvdSBuYW1lIG9uIHRoZSBjb21tYW5kIGxpbmUsCisgICAgICAgICAgICAgICAgY2Fubm90IHBlcmZvcm0gYnVpbGQgYW5kIGludGVncmF0aW9uIHRlc3RpbmcgdXNpbmcgaW1hZ2VzLAorICAgICAgICAgICAgICAgIGFuZCBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGNvbW1pdHMgZm9yIGNoYW5nZXMgaW4KKyAgICAgICAgICAgICAgICB0aGUgc291cmNlIHRyZWUuCisgICAgICAgICAgICAgICAgRGVzcGl0ZSBhbGwgdGhlc2UgImxpbWl0YXRpb25zIiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gdXBkYXRlcyB0aGUgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICB0byB0aGUgbmV3IHVwc3RyZWFtIHZlcnNpb24gYW5kIGF0dGVtcHRzIHRvIHJlYmFzZSBjdXN0b20KKyAgICAgICAgICAgICAgICBwYXRjaGVzIGNvbnRhaW5lZCBieSB0aGUgcmVjaXBlIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQVVIIHVzZXMgbXVjaCBvZiA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYmVoaW5kIHRoZSBzY2VuZXMgbWFraW5nIEFVSCBzb21ld2hhdCBvZiBhICJ3cmFwcGVyIgorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBmb3IgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSB0eXBpY2FsIHNjZW5hcmlvIGludm9sdmVzIGhhdmluZyB1c2VkIEdpdCB0byBjbG9uZSBhbgorICAgICAgICAgICAgICAgIHVwc3RyZWFtIHJlcG9zaXRvcnkgdGhhdCB5b3UgdXNlIGR1cmluZyBidWlsZCBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgIEJlY2F1c2UgeW91IGFyZSAob3IgaGF2ZSkgYnVpbHQgdGhlIHJlY2lwZSBpbiB0aGUgcGFzdCwgdGhlCisgICAgICAgICAgICAgICAgbGF5ZXIgaXMgbGlrZWx5IGFkZGVkIHRvIHlvdXIgY29uZmlndXJhdGlvbiBhbHJlYWR5LgorICAgICAgICAgICAgICAgIElmIGZvciBzb21lIHJlYXNvbiwgdGhlIGxheWVyIGlzIG5vdCBhZGRlZCwgeW91IGNvdWxkIGFkZAorICAgICAgICAgICAgICAgIGl0IGVhc2lseSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+PGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+bmFuby5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlIGZyb20gdGhlIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4gbGF5ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb3BlbmVtYmVkZGVkPC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdCB0aGUgbGF5ZXIgaGFzIGJlZW4gY2xvbmVkIGludG8KKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgYXJlYToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIC9ob21lL3Njb3R0cmlmL21ldGEtb3BlbmVtYmVkZGVkCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgYWRkcyB0aGUgbGF5ZXIgdG8geW91ciBidWlsZCBjb25maWd1cmF0aW9uIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QlVJTERESVJ9L2NvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC9ob21lL3Njb3R0cmlmL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6NTUKKyAgICAgUGFyc2luZyBvZiAxNDMxIC5iYiBmaWxlcyBjb21wbGV0ZSAoMCBjYWNoZWQsIDE0MzEgcGFyc2VkKS4gMjA0MCB0YXJnZXRzLCA1NiBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgIFJlbW92aW5nIDEyIHJlY2lwZXMgZnJvbSB0aGUgeDg2XzY0IHN5c3Jvb3Q6IDEwMCUgfCMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIFJlbW92aW5nIDEgcmVjaXBlcyBmcm9tIHRoZSB4ODZfNjRfaTU4NiBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIFJlbW92aW5nIDUgcmVjaXBlcyBmcm9tIHRoZSBpNTg2IHN5c3Jvb3Q6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIFJlbW92aW5nIDUgcmVjaXBlcyBmcm9tIHRoZSBxZW11eDg2IHN5c3Jvb3Q6IDEwMCUgfCMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIGFzc3VtZSB0aGF0IHRoZSA8ZmlsZW5hbWU+bmFuby5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlIHRoYXQgaXMgdXBzdHJlYW0gaGFzIGEgMi45LjMgdmVyc2lvbiBudW1iZXIuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHZlcnNpb24gaW4gdGhlIGxvY2FsIHJlcG9zaXRvcnkgaXMgMi43LjQuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20geW91ciBidWlsZCBkaXJlY3RvcnkgYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgIHVwZ3JhZGVzIHRoZSByZWNpcGUgZm9yIHlvdToKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT4tVjwvZmlsZW5hbWU+IG9wdGlvbiBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICBPbWl0dGluZyB0aGUgdmVyc2lvbiBudW1iZXIgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byB1cGdyYWRlIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIG1vc3QgcmVjZW50IHZlcnNpb24uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHVwZ3JhZGUgbmFubyAtViAyLjkuMworICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBOT1RFOiBDcmVhdGluZyB3b3Jrc3BhY2UgbGF5ZXIgaW4gL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2UKKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6NDYKKyAgICAgUGFyc2luZyBvZiAxNDMxIC5iYiBmaWxlcyBjb21wbGV0ZSAoMCBjYWNoZWQsIDE0MzEgcGFyc2VkKS4gMjA0MCB0YXJnZXRzLCA1NiBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgIE5PVEU6IEV4dHJhY3RpbmcgY3VycmVudCB2ZXJzaW9uIHNvdXJjZS4uLgorICAgICBOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFzayBxdWV1ZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgIC4KKyAgICAgICAgICAgIC4KKyAgICAgICAgICAgIC4KKyAgICAgTk9URTogRXhlY3V0aW5nIFNldFNjZW5lIFRhc2tzCisgICAgIE5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcworICAgICBOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgNzQgdGFza3Mgb2Ygd2hpY2ggNzIgZGlkbid0IG5lZWQgdG8gYmUgcmVydW4gYW5kIGFsbCBzdWNjZWVkZWQuCisgICAgIEFkZGluZyBjaGFuZ2VkIGZpbGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIE5PVEU6IFVwZ3JhZGVkIHNvdXJjZSBleHRyYWN0ZWQgdG8gL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2Uvc291cmNlcy9uYW5vCisgICAgIE5PVEU6IE5ldyByZWNpcGUgaXMgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2UvcmVjaXBlcy9uYW5vL25hbm9fMi45LjMuYmIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoaXMgZXhhbXBsZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IHRvIGJ1aWxkIHRoZSBuZXdseSB1cGdyYWRlZAorICAgICAgICAgICAgICAgIHJlY2lwZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCBuYW5vCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMQorICAgICBMb2FkZWQgMjA0MCBlbnRyaWVzIGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIFBhcnNpbmcgb2YgMTQzMiAuYmIgZmlsZXMgY29tcGxldGUgKDE0MzEgY2FjaGVkLCAxIHBhcnNlZCkuIDIwNDEgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFzayBxdWV1ZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgIC4KKyAgICAgICAgICAgIC4KKyAgICAgICAgICAgIC4KKyAgICAgTk9URTogRXhlY3V0aW5nIFNldFNjZW5lIFRhc2tzCisgICAgIE5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcworICAgICBOT1RFOiBuYW5vOiBjb21waWxpbmcgZnJvbSBleHRlcm5hbCBzb3VyY2UgdHJlZSAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3dvcmtzcGFjZS9zb3VyY2VzL25hbm8KKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDUyMCB0YXNrcyBvZiB3aGljaCAzMDQgZGlkbid0IG5lZWQgdG8gYmUgcmVydW4gYW5kIGFsbCBzdWNjZWVkZWQuCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IHdvcmtmbG93LAorICAgICAgICAgICAgICAgIG9wcG9ydHVuaXR5IGV4aXN0cyB0byBkZXBsb3kgYW5kIHRlc3QgeW91ciByZWJ1aWx0IHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIGhvd2V2ZXIsIHJ1bm5pbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjbGVhbnMgdXAgdGhlIHdvcmtzcGFjZQorICAgICAgICAgICAgICAgIG9uY2UgdGhlIHNvdXJjZSBpbiB5b3VyIHdvcmtzcGFjZSBpcyBjbGVhbi4KKyAgICAgICAgICAgICAgICBUaGlzIHVzdWFsbHkgbWVhbnMgdXNpbmcgR2l0IHRvIHN0YWdlIGFuZCBzdWJtaXQgY29tbWl0cworICAgICAgICAgICAgICAgIGZvciB0aGUgY2hhbmdlcyBnZW5lcmF0ZWQgYnkgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25jZSB0aGUgdHJlZSBpcyBjbGVhbiwgeW91IGNhbiBjbGVhbiB0aGluZ3MgdXAgaW4gdGhpcworICAgICAgICAgICAgICAgIGV4YW1wbGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCVUlMRERJUn0vd29ya3NwYWNlL3NvdXJjZXMvbmFubzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGZpbmlzaCBuYW5vIG1ldGEtb2UKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgTG9hZGluZyBjYWNoZTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRlZCAyMDQwIGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgorICAgICBQYXJzaW5nIHJlY2lwZXM6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDEKKyAgICAgUGFyc2luZyBvZiAxNDMyIC5iYiBmaWxlcyBjb21wbGV0ZSAoMTQzMSBjYWNoZWQsIDEgcGFyc2VkKS4gMjA0MSB0YXJnZXRzLCA1NiBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgIE5PVEU6IEFkZGluZyBuZXcgcGF0Y2ggMDAwMS1uYW5vLmJiLVN0dWZmLUktY2hhbmdlZC13aGVuLXVwZ3JhZGluZy1uYW5vLmJiLnBhdGNoCisgICAgIE5PVEU6IFVwZGF0aW5nIHJlY2lwZSBuYW5vXzIuOS4zLmJiCisgICAgIE5PVEU6IFJlbW92aW5nIGZpbGUgL2hvbWUvc2NvdHRyaWYvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuNy40LmJiCisgICAgIE5PVEU6IE1vdmluZyByZWNpcGUgZmlsZSB0byAvaG9tZS9zY290dHJpZi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vCisgICAgIE5PVEU6IExlYXZpbmcgc291cmNlIHRyZWUgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2Uvc291cmNlcy9uYW5vIGFzLWlzOyBpZiB5b3Ugbm8gbG9uZ2VyIG5lZWQgaXQgdGhlbiBwbGVhc2UgZGVsZXRlIGl0IG1hbnVhbGx5CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjb21tYW5kIGNsZWFucworICAgICAgICAgICAgICAgIHVwIHRoZSB3b3Jrc3BhY2UgYW5kIGNyZWF0ZXMgYSBwYXRjaCBmaWxlIGJhc2VkIG9uIHlvdXIKKyAgICAgICAgICAgICAgICBjb21taXRzLgorICAgICAgICAgICAgICAgIFRoZSB0b29sIHB1dHMgYWxsIHBhdGNoIGZpbGVzIGJhY2sgaW50byB0aGUgc291cmNlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGluIGEgc3ViLWRpcmVjdG9yeSBuYW1lZCA8ZmlsZW5hbWU+bmFubzwvZmlsZW5hbWU+IGluIHRoaXMKKyAgICAgICAgICAgICAgICBjYXNlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1tYW51YWxseS11cGdyYWRpbmctYS1yZWNpcGUnPgorICAgICAgICAgICAgPHRpdGxlPk1hbnVhbGx5IFVwZ3JhZGluZyBhIFJlY2lwZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIGZvciBzb21lIHJlYXNvbiB5b3UgY2hvb3NlIG5vdCB0byB1cGdyYWRlIHJlY2lwZXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ3MtdXNpbmctdGhlLWF1dG8tdXBncmFkZS1oZWxwZXInPkF1dG8gVXBncmFkZSBIZWxwZXIgKEFVSCk8L2xpbms+CisgICAgICAgICAgICAgICAgb3IgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdncy11c2luZy1kZXZ0b29sLXVwZ3JhZGUnPjxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgeW91IGNhbiBtYW51YWxseSBlZGl0IHRoZSByZWNpcGUgZmlsZXMgdG8gdXBncmFkZSB0aGUgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkNhdXRpb248L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICBNYW51YWxseSB1cGRhdGluZyBtdWx0aXBsZSByZWNpcGVzIHNjYWxlcyBwb29ybHkgYW5kCisgICAgICAgICAgICAgICAgICAgIGludm9sdmVzIG1hbnkgc3RlcHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRhdGlvbiB0byB1cGdyYWRlIHJlY2lwZSB2ZXJzaW9ucyBpcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIEFVSCBvciA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4sIGJvdGggb2Ygd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGUgc29tZSBzdGVwcyBhbmQgcHJvdmlkZSBndWlkYW5jZSBmb3Igb3RoZXJzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hbnVhbCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gbWFudWFsbHkgdXBncmFkZSByZWNpcGUgdmVyc2lvbnMsIGZvbGxvdyB0aGVzZSBnZW5lcmFsIHN0ZXBzOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoYW5nZSB0aGUgVmVyc2lvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVuYW1lIHRoZSByZWNpcGUgc3VjaCB0aGF0IHRoZSB2ZXJzaW9uIChpLmUuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSByZWNpcGUgbmFtZSkgY2hhbmdlcyBhcHByb3ByaWF0ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHZlcnNpb24gaXMgbm90IHBhcnQgb2YgdGhlIHJlY2lwZSBuYW1lLCBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBhcyBpdCBpcyBzZXQgZm9yIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIHJlY2lwZSBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZGF0ZSA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gaWYgTmVlZGVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgc291cmNlIGNvZGUgeW91ciByZWNpcGUgYnVpbGRzIGlzIGZldGNoZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IG9yIHNvbWUgb3RoZXIgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgdXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gdGhlIGNvbW1pdCBoYXNoIHRoYXQgbWF0Y2hlcyB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgU29mdHdhcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRyeSB0byBidWlsZCB0aGUgcmVjaXBlIHVzaW5nIEJpdEJha2UuCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsIGJ1aWxkIGZhaWx1cmVzIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaWNlbnNlIHN0YXRlbWVudHMgd2VyZSB1cGRhdGVkIGZvciB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIHlvdSBuZWVkIHRvIHJldmlldyBhbnkgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgbGljZW5zZSBhbmQgdXBkYXRlIHRoZSB2YWx1ZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZSBjaGFuZ2VzIGFyZSBvZnRlbiBpbmNvbnNlcXVlbnRpYWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGxpY2Vuc2UgdGV4dCdzIGNvcHlyaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhciBtaWdodCBoYXZlIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b20gcGF0Y2hlcyBjYXJyaWVkIGJ5IHRoZSBvbGRlciB2ZXJzaW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgbWlnaHQgZmFpbCB0byBhcHBseSB0byB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IG5lZWQgdG8gcmV2aWV3IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlcyBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IGZvciB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlIGlmIHRoZSB1cGdyYWRlZCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBmaXhlZCB0aG9zZSBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGEgcGF0Y2ggaXMgbmVjZXNzYXJ5IGFuZCBmYWlsaW5nLCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWJhc2UgaXQgaW50byB0aGUgbmV3IHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgQXR0ZW1wdCB0byBCdWlsZCBmb3IgU2V2ZXJhbCBBcmNoaXRlY3R1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBzdWNjZXNzZnVsbHkgYnVpbGQgdGhlIG5ldyBzb2Z0d2FyZSBmb3IgYQorICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gYXJjaGl0ZWN0dXJlLCB5b3UgY291bGQgdGVzdCB0aGUgYnVpbGQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciBhcmNoaXRlY3R1cmVzIGJ5IGNoYW5naW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHJlYnVpbGRpbmcgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBzdGVwIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGlzIHRvIGJlIHJlbGVhc2VkIHB1YmxpY2x5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayB0aGUgVXBzdHJlYW0gQ2hhbmdlIExvZyBvciBSZWxlYXNlIE5vdGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2luZyBib3RoIHRoZXNlIHJldmVhbHMgaWYgbmV3IGZlYXR1cmVzIGV4aXN0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJyZWFrIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHlvdSBuZWVkIHRvIHRha2Ugc3RlcHMgdG8gbWl0aWdhdGUgb3IgZWxpbWluYXRlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBDcmVhdGUgYSBCb290YWJsZSBJbWFnZSBhbmQgVGVzdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQsIHlvdSBjYW4gdGVzdCB0aGUgbmV3IHNvZnR3YXJlIGJ5IGJvb3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IG9udG8gYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBDb21taXQgd2l0aCB0aGUgQ2hhbmdlIGluIHRoZSBMYXllciBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBhbGwgYnVpbGRzIHdvcmsgYW5kIGFueSB0ZXN0aW5nIGlzIHN1Y2Nlc3NmdWwsCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNyZWF0ZSBjb21taXRzIGZvciBhbnkgY2hhbmdlcyBpbiB0aGUgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgeW91ciB1cGdyYWRlZCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2ZpbmRpbmctdGhlLXRlbXBvcmFyeS1zb3VyY2UtY29kZSc+CisgICAgICAgIDx0aXRsZT5GaW5kaW5nIFRlbXBvcmFyeSBTb3VyY2UgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgbWlnaHQgZmluZCBpdCBoZWxwZnVsIGR1cmluZyBkZXZlbG9wbWVudCB0byBtb2RpZnkgdGhlCisgICAgICAgICAgICB0ZW1wb3Jhcnkgc291cmNlIGNvZGUgdXNlZCBieSByZWNpcGVzIHRvIGJ1aWxkIHBhY2thZ2VzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGFyZSBkZXZlbG9waW5nIGEgcGF0Y2ggYW5kIHlvdSBuZWVkIHRvCisgICAgICAgICAgICBleHBlcmltZW50IGEgYml0IHRvIGZpZ3VyZSBvdXQgeW91ciBzb2x1dGlvbi4KKyAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIGluaXRpYWxseSBidWlsdCB0aGUgcGFja2FnZSwgeW91IGNhbiBpdGVyYXRpdmVseQorICAgICAgICAgICAgdHdlYWsgdGhlIHNvdXJjZSBjb2RlLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZCB0aGVuIHlvdSBjYW4gZm9yY2UgYSByZS1jb21waWxlIGFuZCBxdWlja2x5IHRlc3QgeW91ciBhbHRlcmVkCisgICAgICAgICAgICBjb2RlLgorICAgICAgICAgICAgT25jZSB5b3Ugc2V0dGxlIG9uIGEgc29sdXRpb24sIHlvdSBjYW4gdGhlbiBwcmVzZXJ2ZSB5b3VyIGNoYW5nZXMKKyAgICAgICAgICAgIGluIHRoZSBmb3JtIG9mIHBhdGNoZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIER1cmluZyBhIGJ1aWxkLCB0aGUgdW5wYWNrZWQgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlIHVzZWQgYnkgcmVjaXBlcworICAgICAgICAgICAgdG8gYnVpbGQgcGFja2FnZXMgaXMgYXZhaWxhYmxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXMKKyAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgIEJlbG93IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgYXMgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUyA9ICIke1dPUktESVJ9LyR7QlB9IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgWW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IG1hbnkgcmVjaXBlcyBvdmVycmlkZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcmVjaXBlcyB0aGF0IGZldGNoIHRoZWlyIHNvdXJjZSBmcm9tIEdpdCB1c3VhbGx5IHNldAorICAgICAgICAgICAgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiB0byA8ZmlsZW5hbWU+JHtXT1JLRElSfS9naXQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CUCc+PGZpbGVuYW1lPkJQPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgdGhlIGJhc2UgcmVjaXBlIG5hbWUsIHdoaWNoIGNvbnNpc3RzIG9mIHRoZSBuYW1lCisgICAgICAgICAgICAgICAgYW5kIHZlcnNpb246CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCUCA9ICIke0JQTn0tJHtQVn0iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcGF0aCB0byB0aGUgd29yayBkaXJlY3RvcnkgZm9yIHRoZSByZWNpcGUKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke1RNUERJUn0vd29yay8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgYWN0dWFsIGRpcmVjdG9yeSBkZXBlbmRzIG9uIHNldmVyYWwgdGhpbmdzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgdG9wLWxldmVsIGJ1aWxkIG91dHB1dCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1VTFRJTUFDSF9UQVJHRVRfU1lTJz48ZmlsZW5hbWU+TVVMVElNQUNIX1RBUkdFVF9TWVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHN5c3RlbSBpZGVudGlmaWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRFTkRQRSc+PGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGVwb2NoIC0gKGlmCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc3BlY2lmaWVkLCB3aGljaCBpcyB1c3VhbGx5IHRoZSBjYXNlIGZvciBtb3N0CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMsIHRoZW4gPGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT4gaXMgYmxhbmspLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSByZXZpc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIGEgU291cmNlIERpcmVjdG9yeSB0b3AtbGV2ZWwgZm9sZGVyCisgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LCBhIGRlZmF1bHQgQnVpbGQgRGlyZWN0b3J5IGF0CisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9idWlsZDwvZmlsZW5hbWU+LCBhbmQgYQorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtcG9reS1saW51eDwvZmlsZW5hbWU+IG1hY2hpbmUgdGFyZ2V0CisgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICBGdXJ0aGVybW9yZSwgc3VwcG9zZSB5b3VyIHJlY2lwZSBpcyBuYW1lZAorICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjMuMC5iYjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgd29yayBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvCisgICAgICAgICAgICBidWlsZCB0aGUgcGFja2FnZSB3b3VsZCBiZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9mb28vMS4zLjAtcjAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJ1c2luZy1hLXF1aWx0LXdvcmtmbG93Ij4KKyAgICAgICAgPHRpdGxlPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcXVpbHQnPlF1aWx0PC91bGluaz4KKyAgICAgICAgICAgIGlzIGEgcG93ZXJmdWwgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8gY2FwdHVyZSBzb3VyY2UgY29kZSBjaGFuZ2VzCisgICAgICAgICAgICB3aXRob3V0IGhhdmluZyBhIGNsZWFuIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG91dGxpbmVzIHRoZSB0eXBpY2FsIHdvcmtmbG93IHlvdSBjYW4gdXNlIHRvIG1vZGlmeQorICAgICAgICAgICAgc291cmNlIGNvZGUsIHRlc3QgY2hhbmdlcywgYW5kIHRoZW4gcHJlc2VydmUgdGhlIGNoYW5nZXMgaW4gdGhlCisgICAgICAgICAgICBmb3JtIG9mIGEgcGF0Y2ggYWxsIHVzaW5nIFF1aWx0LgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgV2l0aCByZWdhcmQgdG8gcHJlc2VydmluZyBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcywgaWYgeW91CisgICAgICAgICAgICAgICAgY2xlYW4gYSByZWNpcGUgb3IgaGF2ZSA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+IGVuYWJsZWQsCisgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3b3JrZmxvdzwvdWxpbms+CisgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsCisgICAgICAgICAgICAgICAgaXMgYSBzYWZlciBkZXZlbG9wbWVudCBmbG93IHRoYW4gdGhlIGZsb3cgdGhhdCB1c2VzIFF1aWx0LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwczoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBTb3VyY2UgQ29kZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUZW1wb3Jhcnkgc291cmNlIGNvZGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdmaW5kaW5nLXRoZS10ZW1wb3Jhcnktc291cmNlLWNvZGUnPkZpbmRpbmcgVGVtcG9yYXJ5IFNvdXJjZSBDb2RlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiB0byBsZWFybiBob3cgdG8gbG9jYXRlIHRoZSBkaXJlY3RvcnkgdGhhdCBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBzb3VyY2UgY29kZSBmb3IgYSBwYXJ0aWN1bGFyIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoYW5nZSBZb3VyIFdvcmtpbmcgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGluIHRoZSBkaXJlY3RvcnkgdGhhdCBoYXMgdGhlIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgVGhhdCBkaXJlY3RvcnkgaXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBOZXcgUGF0Y2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQmVmb3JlIG1vZGlmeWluZyBzb3VyY2UgY29kZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgbmV3CisgICAgICAgICAgICAgICAgICAgIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICBUbyBjcmVhdGUgYSBuZXcgcGF0Y2ggZmlsZSwgdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xdWlsdCBuZXc8L2ZpbGVuYW1lPiBhcyBiZWxvdzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHF1aWx0IG5ldyBteV9jaGFuZ2VzLnBhdGNoCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Tm90aWZ5IFF1aWx0IGFuZCBBZGQgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgY3JlYXRpbmcgdGhlIHBhdGNoLCB5b3UgbmVlZCB0byBub3RpZnkgUXVpbHQgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVzIHlvdSBwbGFuIHRvIGVkaXQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBub3RpZnkgUXVpbHQgYnkgYWRkaW5nIHRoZSBmaWxlcyB0byB0aGUgcGF0Y2ggeW91CisgICAgICAgICAgICAgICAgICAgIGp1c3QgY3JlYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHF1aWx0IGFkZCBmaWxlMS5jIGZpbGUyLmMgZmlsZTMuYworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHRoZSBzb3VyY2UgY29kZSB0byB0aGUgZmlsZXMgeW91IGFkZGVkCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBtb2RpZmllZCB0aGUgc291cmNlIGNvZGUsIHRoZSBlYXNpZXN0IHdheSB0bworICAgICAgICAgICAgICAgICAgICB0ZXN0IHlvdXIgY2hhbmdlcyBpcyBieSBjYWxsaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+IHRhc2sgYXMgc2hvd24gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYyBjb21waWxlIC1mIDxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi0tZm9yY2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24gZm9yY2VzIHRoZSBzcGVjaWZpZWQgdGFzayB0byBleGVjdXRlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZmluZCBwcm9ibGVtcyB3aXRoIHlvdXIgY29kZSwgeW91IGNhbiBqdXN0IGtlZXAKKyAgICAgICAgICAgICAgICAgICAgZWRpdGluZyBhbmQgcmUtdGVzdGluZyBpdGVyYXRpdmVseSB1bnRpbCB0aGluZ3Mgd29yaworICAgICAgICAgICAgICAgICAgICBhcyBleHBlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBBbGwgdGhlIG1vZGlmaWNhdGlvbnMgeW91IG1ha2UgdG8gdGhlIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUgZGlzYXBwZWFyIG9uY2UgeW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbic+PGZpbGVuYW1lPmRvX2NsZWFuPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbmFsbCc+PGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFza3MgdXNpbmcgQml0QmFrZSAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgY2xlYW4gPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIGNsZWFuYWxsIDxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZmljYXRpb25zIHdpbGwgYWxzbyBkaXNhcHBlYXIgaWYgeW91IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT4gZmVhdHVyZSBhcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1zYXZpbmctbWVtb3J5LWR1cmluZy1hLWJ1aWxkJz5Db25zZXJ2aW5nIERpc2sgU3BhY2UgRHVyaW5nIEJ1aWxkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HZW5lcmF0ZSB0aGUgUGF0Y2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3VyIGNoYW5nZXMgd29yayBhcyBleHBlY3RlZCwgeW91IG5lZWQgdG8gdXNlIFF1aWx0CisgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBwYXRjaCB0aGF0IGNvbnRhaW5zIGFsbCB5b3VyCisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBxdWlsdCByZWZyZXNoCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgdGhlIDxmaWxlbmFtZT5teV9jaGFuZ2VzLnBhdGNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBoYXMgYWxsIHlvdXIgZWRpdHMgbWFkZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGUxLmM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmZpbGUyLmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5maWxlMy5jPC9maWxlbmFtZT4gZmlsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgcmVzdWx0aW5nIHBhdGNoIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXRjaGVzLzwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSBvZiB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+KSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcHkgdGhlIFBhdGNoIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvcHkgdGhlIHBhdGNoIGZpbGUgaW50byBhIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPiwgd2hpY2ggeW91IGNhbiBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlIG9yIHRoZSBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgUGxhY2luZyB0aGUgcGF0Y2ggaGVyZSBndWFyYW50ZWVzIHRoYXQgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gd2lsbCBmaW5kIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgTmV4dCwgYWRkIHRoZSBwYXRjaCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPlNSQ19VUkk8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbXlfY2hhbmdlcy5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1hcHBkZXYtZGV2c2hlbGwiPgorICAgICAgICA8dGl0bGU+VXNpbmcgYSBEZXZlbG9wbWVudCBTaGVsbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIGRlYnVnZ2luZyBjZXJ0YWluIGNvbW1hbmRzIG9yIGV2ZW4gd2hlbiBqdXN0IGVkaXRpbmcgcGFja2FnZXMsCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBjYW4gYmUgYSB1c2VmdWwgdG9vbC4KKyAgICAgICAgICAgIFdoZW4geW91IGludm9rZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgYWxsIHRhc2tzIHVwIHRvIGFuZAorICAgICAgICAgICAgaW5jbHVkaW5nCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGFyZSBydW4gZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0LgorICAgICAgICAgICAgVGhlbiwgYSBuZXcgdGVybWluYWwgaXMgb3BlbmVkIGFuZCB5b3UgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgorICAgICAgICAgICAgSW4gdGhlIG5ldyB0ZXJtaW5hbCwgYWxsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQtcmVsYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlCisgICAgICAgICAgICBzdGlsbCBkZWZpbmVkIHNvIHlvdSBjYW4gdXNlIGNvbW1hbmRzIHN1Y2ggYXMgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kcyBleGVjdXRlIGp1c3QgYXMgaWYgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2VyZSBleGVjdXRpbmcgdGhlbS4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgd29ya2luZyB0aGlzIHdheSBjYW4gYmUgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBhIGJ1aWxkIG9yIHByZXBhcmluZworICAgICAgICAgICAgc29mdHdhcmUgdG8gYmUgdXNlZCB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHVzZXMgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gb24gYSB0YXJnZXQgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGRldnNoZWxsCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzcGF3bnMgYSB0ZXJtaW5hbCB3aXRoIGEgc2hlbGwgcHJvbXB0IHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PRV9URVJNSU5BTCc+PGZpbGVuYW1lPk9FX1RFUk1JTkFMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hhdCB0eXBlIG9mIHNoZWxsIGlzIG9wZW5lZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIHNwYXduZWQgdGVybWluYWxzLCB0aGUgZm9sbG93aW5nIG9jY3VyczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlIGluY2x1ZGVzIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+cGtnY29uZmlnPC9maWxlbmFtZT4gdmFyaWFibGVzIGZpbmQgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5wYzwvZmlsZW5hbWU+IGZpbGVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IGNvbW1hbmQgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc2l0ZSBmaWxlcyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuZWNlc3NhcnkgZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aGluIHRoaXMgZW52aXJvbm1lbnQsIHlvdSBjYW4gcnVuIGNvbmZpZ3VyZSBvciBjb21waWxlCisgICAgICAgICAgICBjb21tYW5kcyBhcyBpZiB0aGV5IHdlcmUgYmVpbmcgcnVuIGJ5CisgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICBBcyBub3RlZCBlYXJsaWVyLCB0aGUgd29ya2luZyBkaXJlY3RvcnkgYWxzbyBhdXRvbWF0aWNhbGx5IGNoYW5nZXMgdG8gdGhlCisgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5ICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gbWFudWFsbHkgcnVuIGEgc3BlY2lmaWMgdGFzayB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHJ1biB0aGUgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPiBzY3JpcHQgaW4KKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vdGVtcDwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgKGUuZy4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+cnVuLmRvX2NvbmZpZ3VyZS48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPikuCisgICAgICAgICAgICBJZiBhIHRhc2sncyBzY3JpcHQgZG9lcyBub3QgZXhpc3QsIHdoaWNoIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSB0YXNrIHdhcworICAgICAgICAgICAgc2tpcHBlZCBieSB3YXkgb2YgdGhlIHNzdGF0ZSBjYWNoZSwgeW91IGNhbiBjcmVhdGUgdGhlIHRhc2sgYnkgZmlyc3QgcnVubmluZworICAgICAgICAgICAgaXQgb3V0c2lkZSBvZiB0aGUgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYyA8cmVwbGFjZWFibGU+dGFzazwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeGVjdXRpb24gb2YgYSB0YXNrJ3MgPGZpbGVuYW1lPnJ1bi4qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhbmQgQml0QmFrZSdzIGV4ZWN1dGlvbiBvZiBhIHRhc2sgYXJlIGlkZW50aWNhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBydW5uaW5nIHRoZSBzY3JpcHQgcmUtcnVucyB0aGUgdGFzaworICAgICAgICAgICAgICAgICAgICAgICAganVzdCBhcyBpdCB3b3VsZCBiZSBydW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYzwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFueSA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYSA8ZmlsZW5hbWU+LnBpZDwvZmlsZW5hbWU+IGV4dGVuc2lvbiBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xpYyBsaW5rIChzeW1saW5rKSB0byB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJlbWVtYmVyLCB0aGF0IHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBpcyBhIG1lY2hhbmlzbSB0aGF0IGFsbG93cworICAgICAgICAgICAgeW91IHRvIGdldCBpbnRvIHRoZSBCaXRCYWtlIHRhc2sgZXhlY3V0aW9uIGVudmlyb25tZW50LgorICAgICAgICAgICAgQW5kIGFzIHN1Y2gsIGFsbCBjb21tYW5kcyBtdXN0IGJlIGNhbGxlZCBqdXN0IGFzIEJpdEJha2Ugd291bGQgY2FsbCB0aGVtLgorICAgICAgICAgICAgVGhhdCBtZWFucyB5b3UgbmVlZCB0byBwcm92aWRlIHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIGZvcgorICAgICAgICAgICAgY3Jvc3MtY29tcGlsYXRpb24gYW5kIHNvIGZvcnRoIGFzIGFwcGxpY2FibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGFyZSBmaW5pc2hlZCB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgZXhpdCB0aGUgc2hlbGwKKyAgICAgICAgICAgIG9yIGNsb3NlIHRoZSB0ZXJtaW5hbCB3aW5kb3cuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHdvcnRoIHJlbWVtYmVyaW5nIHRoYXQgd2hlbiB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byB1c2UgdGhlIGZ1bGwgY29tcGlsZXIgbmFtZSBzdWNoIGFzIDxmaWxlbmFtZT5hcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YganVzdCB1c2luZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBzYW1lIGFwcGxpZXMgdG8gb3RoZXIgYXBwbGljYXRpb25zIHN1Y2ggYXMgPGZpbGVuYW1lPmJpbnV0aWxzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHNldHMgdXAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1Y2ggYXMgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gYXNzaXN0IGFwcGxpY2F0aW9ucywgc3VjaCBhcyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHRvIGZpbmQgdGhlIGNvcnJlY3QgdG9vbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBzdGlsbCB3b3JrcyBvdmVyCisgICAgICAgICAgICAgICAgICAgIFgxMSBmb3J3YXJkaW5nIGFuZCBzaW1pbGFyIHNpdHVhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1hcHBkZXYtZGV2cHlzaGVsbCI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBhIERldmVsb3BtZW50IFB5dGhvbiBTaGVsbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTaW1pbGFyIHRvIHdvcmtpbmcgd2l0aGluIGEgZGV2ZWxvcG1lbnQgc2hlbGwgYXMgZGVzY3JpYmVkIGluCisgICAgICAgICAgICB0aGUgcHJldmlvdXMgc2VjdGlvbiwgeW91IGNhbiBhbHNvIHNwYXduIGFuZCB3b3JrIHdpdGhpbiBhbgorICAgICAgICAgICAgaW50ZXJhY3RpdmUgUHl0aG9uIGRldmVsb3BtZW50IHNoZWxsLgorICAgICAgICAgICAgV2hlbiBkZWJ1Z2dpbmcgY2VydGFpbiBjb21tYW5kcyBvciBldmVuIHdoZW4ganVzdCBlZGl0aW5nIHBhY2thZ2VzLAorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnB5c2hlbGw8L2ZpbGVuYW1lPiBjYW4gYmUgYSB1c2VmdWwgdG9vbC4KKyAgICAgICAgICAgIFdoZW4geW91IGludm9rZSA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+LCBhbGwgdGFza3MgdXAgdG8gYW5kCisgICAgICAgICAgICBpbmNsdWRpbmcKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgYXJlIHJ1biBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQuCisgICAgICAgICAgICBUaGVuIGEgbmV3IHRlcm1pbmFsIGlzIG9wZW5lZC4KKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwga2V5IFB5dGhvbiBvYmplY3RzIGFuZCBjb2RlIGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgIHdheSB0aGV5IGFyZSB0byBCaXRCYWtlIHRhc2tzLCBpbiBwYXJ0aWN1bGFyLCB0aGUgZGF0YSBzdG9yZSAnZCcuCisgICAgICAgICAgICBTbywgY29tbWFuZHMgc3VjaCBhcyB0aGUgZm9sbG93aW5nIGFyZSB1c2VmdWwgd2hlbiBleHBsb3JpbmcgdGhlIGRhdGEKKyAgICAgICAgICAgIHN0b3JlIGFuZCBydW5uaW5nIGZ1bmN0aW9uczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIlNUQUdJTkdfRElSIikKKyAgICAgJy9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMnCisgICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJTVEFHSU5HX0RJUiIpCisgICAgICcke1RNUERJUn0vc3lzcm9vdHMnCisgICAgIHB5ZGV2c2hlbGw+IGQuc2V0VmFyKCJGT08iLCAiYmFyIikKKyAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIkZPTyIpCisgICAgICdiYXInCisgICAgIHB5ZGV2c2hlbGw+IGQuZGVsVmFyKCJGT08iKQorICAgICBweWRldnNoZWxsPiBkLmdldFZhcigiRk9PIikKKyAgICAgcHlkZXZzaGVsbD4gYmIuYnVpbGQuZXhlY19mdW5jKCJkb191bnBhY2siLCBkKQorICAgICBweWRldnNoZWxsPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGNvbW1hbmRzIGV4ZWN1dGUganVzdCBhcyBpZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3ZXJlIGV4ZWN1dGluZyB0aGVtLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB3b3JraW5nIHRoaXMgd2F5IGNhbiBiZSBoZWxwZnVsIHdoZW4gZGVidWdnaW5nIGEgYnVpbGQgb3IgcHJlcGFyaW5nCisgICAgICAgICAgICBzb2Z0d2FyZSB0byBiZSB1c2VkIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+IG9uIGEgdGFyZ2V0IG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZweXNoZWxsCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzcGF3bnMgYSB0ZXJtaW5hbCBhbmQgcGxhY2VzIHlvdSBpbiBhbiBpbnRlcmFjdGl2ZQorICAgICAgICAgICAgUHl0aG9uIGludGVycHJldGVyIHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PRV9URVJNSU5BTCc+PGZpbGVuYW1lPk9FX1RFUk1JTkFMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hhdCB0eXBlIG9mIHNoZWxsIGlzIG9wZW5lZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHVzaW5nIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4sIHlvdQorICAgICAgICAgICAgY2FuIGV4aXQgdGhlIHNoZWxsIGVpdGhlciBieSB1c2luZyBDdHJsK2Qgb3IgY2xvc2luZyB0aGUgdGVybWluYWwKKyAgICAgICAgICAgIHdpbmRvdy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXYtYnVpbGRpbmcnPgorICAgICAgICA8dGl0bGU+QnVpbGRpbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB2YXJpb3VzIGJ1aWxkIHByb2NlZHVyZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHN0ZXBzIG5lZWRlZCBmb3IgYSBzaW1wbGUgYnVpbGQsIGEgdGFyZ2V0IHRoYXQKKyAgICAgICAgICAgIHVzZXMgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMsIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBtb3JlIHRoYW4KKyAgICAgICAgICAgIG9uZSBtYWNoaW5lLCBhbmQgc28gZm9ydGguCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LWJ1aWxkaW5nLWEtc2ltcGxlLWltYWdlJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhIFNpbXBsZSBJbWFnZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgeW91IG5lZWQgdG8gYnVpbGQgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICB3aGVuZXZlciB5b3UgY2hhbmdlIGhhcmR3YXJlIHN1cHBvcnQsIGFkZCBvciBjaGFuZ2Ugc3lzdGVtCisgICAgICAgICAgICAgICAgbGlicmFyaWVzLCBvciBhZGQgb3IgY2hhbmdlIHNlcnZpY2VzIHRoYXQgaGF2ZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgU2V2ZXJhbCBtZXRob2RzIGV4aXN0IHRoYXQgYWxsb3cgeW91IHRvIGJ1aWxkIGFuIGltYWdlIHdpdGhpbgorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGUgYmFzaWMgc3RlcHMgeW91IG5lZWQgdG8gYnVpbGQgYQorICAgICAgICAgICAgICAgIHNpbXBsZSBpbWFnZSB1c2luZyBCaXRCYWtlIGZyb20gYSBidWlsZCBob3N0IHJ1bm5pbmcgTGludXguCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdG9hc3Rlci10ZXJtJz5Ub2FzdGVyPC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gYnVpbGQgaW1hZ2VzLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiBZb3VyIFNESyBXb3JrZmxvdzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBxdWljayBleGFtcGxlIG9uIGhvdyB0byBidWlsZCBhbiBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlJJRUZfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgY3JlYXRlcyBhbiBlbnRpcmUgTGludXggZGlzdHJpYnV0aW9uIGZyb20KKyAgICAgICAgICAgICAgICBzb3VyY2UgYW5kIHBsYWNlcyBpdCBpbiB5b3VyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIHVuZGVyIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgcHJvY2VzcyB1c2luZyBCaXRCYWtlLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIGFuZCBsaXN0IG92ZXJ2aWV3cyB0aGUgYnVpbGQgcHJvY2VzczoKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjRpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIFlvdXIgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW0gdG8gU3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtbWFudWFsLXN0YXJ0Jz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBvcHRpb25zIG9uIGhvdyB0byBnZXQgYSBidWlsZCBob3N0IHJlYWR5IHRvCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplIHRoZSBidWlsZCBlbnZpcm9ubWVudCBieSBzb3VyY2luZyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsgWzxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPl0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IHVzZSB0aGUgaW5pdGlhbGl6YXRpb24gc2NyaXB0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gYXMgdGhlIGRlZmF1bHQgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBpbiB5b3VyIGN1cnJlbnQgd29yayBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhIDxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgd2l0aCB0aGUgc2NyaXB0IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgY29tbW9uIHByYWN0aWNlIGlzIHRvIHVzZSBhIGRpZmZlcmVudCBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBmb3IgZGlmZmVyZW50IHRhcmdldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIDxmaWxlbmFtZT5+L2J1aWxkL3g4NjwvZmlsZW5hbWU+IGZvciBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiB0YXJnZXQsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+L2J1aWxkL2FybTwvZmlsZW5hbWU+IGZvciBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU3VyZSBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgaXMgQ29ycmVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnksIGlzIHNldCB1cCBob3cgeW91IHdhbnQgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyBtYW55IGFzcGVjdHMgb2YgdGhlIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIHRhcmdldCBtYWNoaW5lIGFyY2hpdGVjdHVyZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz5NQUNISU5FPC91bGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdpbmcgZm9ybWF0IHVzZWQgZHVyaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhIGNlbnRyYWxpemVkIHRhcmJhbGwgZG93bmxvYWQgZGlyZWN0b3J5IHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgaW1hZ2UgdXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB5b3Ugd2FudCB0byBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbiB0YXJnZXRzIGFyZSB0aGUgaW1hZ2VzIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzPC9maWxlbmFtZT4sIGFuZCBzbworICAgICAgICAgICAgICAgICAgICAgICAgZm9ydGggYWxsIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgT3IsIHRoZSB0YXJnZXQgY2FuIGJlIHRoZSBuYW1lIG9mIGEgcmVjaXBlIGZvciBhCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBwaWVjZSBvZiBzb2Z0d2FyZSBzdWNoIGFzIEJ1c3lCb3guCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBpbWFnZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHN1cHBvcnRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYnVpbGRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGFuIGltYWdlIGhhcyBiZWVuIGJ1aWx0LCBpdCBvZnRlbiBuZWVkcyB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGltYWdlcyBhbmQga2VybmVscyBidWlsdCBieSB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gYXJlIHBsYWNlZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWUgY2xhc3M9ImRpcmVjdG9yeSI+dG1wL2RlcGxveS9pbWFnZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcnVuIHByZS1idWlsdCBpbWFnZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gaW5zdGFsbCB0aGVzZSBpbWFnZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgcGFydGljdWxhciBib2FyZCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LWJ1aWxkaW5nLWltYWdlcy1mb3ItbXVsdGlwbGUtdGFyZ2V0cy11c2luZy1tdWx0aXBsZS1jb25maWd1cmF0aW9ucyc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgSW1hZ2VzIGZvciBNdWx0aXBsZSBUYXJnZXRzIFVzaW5nIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBzaW5nbGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgdG8gYnVpbGQgbXVsdGlwbGUgaW1hZ2VzIG9yIHBhY2thZ2VzIGZvciBkaWZmZXJlbnQgdGFyZ2V0cworICAgICAgICAgICAgICAgIHdoZXJlIGVhY2ggaW1hZ2Ugb3IgcGFja2FnZSByZXF1aXJlcyBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgKG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gYnVpbGRzKS4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGRzLCBpbiB0aGlzIHNjZW5hcmlvLCBhcmUgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzCisgICAgICAgICAgICAgICAgIm11bHRpY29uZmlncyIsIGFuZCB0aGlzIHNlY3Rpb24gdXNlcyB0aGF0IHRlcm0gdGhyb3VnaG91dC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gc2V0IHVwIGZvciBtdWx0aXBsZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGFuZCBob3cgdG8gYWNjb3VudCBmb3IgY3Jvc3MtYnVpbGQKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUgbXVsdGljb25maWdzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LXNldHRpbmctdXAtYW5kLXJ1bm5pbmctYS1tdWx0aXBsZS1jb25maWd1cmF0aW9uLWJ1aWxkJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBhbmQgUnVubmluZyBhIE11bHRpcGxlIENvbmZpZ3VyYXRpb24gQnVpbGQ8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGFjY29tcGxpc2ggYSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkLCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBkZWZpbmUgZWFjaCB0YXJnZXQncyBjb25maWd1cmF0aW9uIHNlcGFyYXRlbHkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBwYXJhbGxlbCBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UgbXVzdCBmb2xsb3cgYSByZXF1aXJlZCBmaWxlIGhpZXJhcmNoeS4KKyAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB5b3UgbXVzdCBlbmFibGUgdGhlIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gc2V0IHVwIGFuZCBleGVjdXRlIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYnVpbGRzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgU2VwYXJhdGUgQ29uZmlndXJhdGlvbiBGaWxlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBidWlsZCB0YXJnZXQgKGVhY2ggbXVsdGljb25maWcpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmltYWxseSwgZWFjaCBjb25maWd1cmF0aW9uIGZpbGUgbXVzdCBkZWZpbmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBhbmQgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgQml0QmFrZSB1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWdnZXN0ZWQgcHJhY3RpY2UgZGljdGF0ZXMgdGhhdCB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcCB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBjYW4gc2hhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2l0aCB0d28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgbXVsdGljb25maWdzIGZvciB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz46ICJxZW11eDg2IiBidWlsdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gZGlzdHJpYnV0aW9ucyBzdWNoIGFzICJwb2t5IiBhbmQgInBva3ktbHNiIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGUgc2hvd2luZyB0aGUgbWluaW1hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgbmVlZGVkIGluIGEgY29uZmlndXJhdGlvbiBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgInFlbXV4ODYiIHRhcmdldCB3aG9zZSB0ZW1wb3JhcnkgYnVpbGQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgPGZpbGVuYW1lPnRtcG11bHRpeDg2PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FPSJxZW11eDg2IgorICAgICBUTVBESVI9IiR7VE9QRElSfS90bXBtdWx0aXg4NiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGxvY2F0aW9uIGZvciB0aGVzZSBtdWx0aWNvbmZpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgaXMgc3BlY2lmaWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhleSBtdXN0IHJlc2lkZSBpbiB0aGUgY3VycmVudCBidWlsZCBkaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN1Yi1kaXJlY3Rvcnkgb2YgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tdWx0aWNvbmZpZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgZGVmaW5lcyB0d28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB0aGUgIng4NiIgYW5kICJhcm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9tdWx0aWNvbmZpZ19maWxlcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI0aW4iIGRlcHRoPSIzaW4iIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHJlYXNvbiBmb3IgdGhpcyByZXF1aXJlZCBmaWxlIGhpZXJhcmNoeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGJlY2F1c2UgdGhlIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBjb25zdHJ1Y3RlZCB1bnRpbCB0aGUgbGF5ZXJzIGFyZSBwYXJzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGFzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmUtY29uZmlndXJhdGlvbiBmaWxlIGlzIG5vdCBwb3NzaWJsZSB1bmxlc3MgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgdGhlIEJpdEJha2UgTXVsdGktY29uZmlndXJhdGlvbiBWYXJpYWJsZSB0byB0aGUgTG9jYWwgQ29uZmlndXJhdGlvbiBGaWxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQk1VTFRJQ09ORklHJz48ZmlsZW5hbWU+QkJNVUxUSUNPTkZJRzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHRvIHNwZWNpZnkgZWFjaCBtdWx0aWNvbmZpZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGUgZnJvbSB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWd1cmUsIHRoZSA8ZmlsZW5hbWU+QkJNVUxUSUNPTkZJRzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgbmVlZHMgdG8gZW5hYmxlIHR3byBtdWx0aWNvbmZpZ3M6ICJ4ODYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kICJhcm0iIGJ5IHNwZWNpZnlpbmcgZWFjaCBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQk1VTFRJQ09ORklHID0gIng4NiBhcm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBICJkZWZhdWx0IiBjb25maWd1cmF0aW9uIGFscmVhZHkgZXhpc3RzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBpcyBuYW1lZDogIiIgKGkuZS4gZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nKSBhbmQgaXMgZGVmaW5lZCBieSB0aGUgdmFyaWFibGVzIGNvbWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBwcmV2aW91cyBleGFtcGxlIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHMgdHdvIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgdG8geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZDogImFybSIgYW5kICJ4ODYiIGFsb25nIHdpdGggIiIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggQml0QmFrZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCBmb3JtIHRvIGxhdW5jaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIFttYzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBbW1ttYzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPl0gLi4uIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBleGFtcGxlIGluIHRoaXMgc2VjdGlvbiwgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgYXBwbGllczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYzp4ODY6Y29yZS1pbWFnZS1taW5pbWFsIG1jOmFybTpjb3JlLWltYWdlLXNhdG8gbWM6OmNvcmUtaW1hZ2UtYmFzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgQml0QmFrZSBjb21tYW5kIGJ1aWxkcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjb25maWd1cmVkIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPng4Ni5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBjb25maWd1cmVkIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFybS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGEgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtYmFzZTwvZmlsZW5hbWU+IHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkIHRocm91Z2ggeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgKCZESVNUUk9fTkFNRTspIFJlbGVhc2UgZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGluY2x1ZGUgU2hhcmVkIFN0YXRlIChzc3RhdGUpIG9wdGltaXphdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGlmIGEgYnVpbGQgdXNlcyB0aGUgc2FtZSBvYmplY3QgdHdpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGluLCBmb3IgZXhhbXBsZSwgdHdvIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVpdGhlciBsb2FkcyBmcm9tIGFuIGV4aXN0aW5nIHNzdGF0ZSBjYWNoZSBmb3IgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYXQgdGhlIHN0YXJ0IG9yIGJ1aWxkcyB0aGUgb2JqZWN0IGZyZXNoLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LWVuYWJsaW5nLW11bHRpcGxlLWNvbmZpZ3VyYXRpb24tYnVpbGQtZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgTXVsdGlwbGUgQ29uZmlndXJhdGlvbiBCdWlsZCBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBkZXBlbmRlbmNpZXMgY2FuIGV4aXN0IGJldHdlZW4gdGFyZ2V0cworICAgICAgICAgICAgICAgICAgICAobXVsdGljb25maWdzKSBpbiBhIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHRoYXQgaW4gb3JkZXIgdG8gYnVpbGQgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2UgZm9yIGFuICJ4ODYiCisgICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnLCB0aGUgcm9vdCBmaWxlc3lzdGVtIG9mIGFuICJhcm0iCisgICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnIG11c3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVwZW5kZW5jeSBpcyBlc3NlbnRpYWxseSB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW1hZ2UnPjxmaWxlbmFtZT5kb19pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBpbiB0aGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSBjb21wbGV0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgZGVwZW5kZW5jaWVzIGluIGEgbXVsdGlwbGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBidWlsZCwgeW91IG11c3QgZGVjbGFyZSB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+dGFza19vcl9wYWNrYWdlPC9yZXBsYWNlYWJsZT5bbWNkZXBlbmRzXSA9ICJtYzo8cmVwbGFjZWFibGU+ZnJvbV9tdWx0aWNvbmZpZzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT50b19tdWx0aWNvbmZpZzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT5yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT50YXNrX29uX3doaWNoX3RvX2RlcGVuZDwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRvIGJldHRlciBzaG93IGhvdyB0byB1c2UgdGhpcyBzdGF0ZW1lbnQsIGNvbnNpZGVyIHRoZQorICAgICAgICAgICAgICAgICAgICBleGFtcGxlIHNjZW5hcmlvIGZyb20gdGhlIGZpcnN0IHBhcmFncmFwaCBvZiB0aGlzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IG5lZWRzIHRvIGJlIGFkZGVkIHRvIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBidWlsZHMgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbWFnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbWFnZVttY2RlcGVuZHNdID0gIm1jOng4Njphcm06Y29yZS1pbWFnZS1taW5pbWFsOmRvX3Jvb3RmcyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+ZnJvbV9tdWx0aWNvbmZpZzwvcmVwbGFjZWFibGU+IGlzICJ4ODYiLgorICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRvX211bHRpY29uZmlnPC9yZXBsYWNlYWJsZT4gaXMgImFybSIuCisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIG9uIHdoaWNoIHRoZSA8ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPiB0YXNrCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgZGVwZW5kcyBpcyB0aGUgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgZnJvbSB0aGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhc3NvY2lhdGVkIHdpdGggdGhlICJhcm0iIG11bHRpY29uZmlnLgorICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBzZXQgdXAgdGhpcyBkZXBlbmRlbmN5LCB5b3UgY2FuIGJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICJ4ODYiIG11bHRpY29uZmlnIHVzaW5nIGEgQml0QmFrZSBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWM6eDg2OmNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgZXhlY3V0ZXMgYWxsIHRoZSB0YXNrcyBuZWVkZWQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIng4NiIgbXVsdGljb25maWcuCisgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBvZiB0aGUgZGVwZW5kZW5jeSwgQml0QmFrZSBhbHNvIGV4ZWN1dGVzIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+IHRhc2sgZm9yIHRoZSAiYXJtIgorICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnIGJ1aWxkLgorICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIYXZpbmcgYSByZWNpcGUgZGVwZW5kIG9uIHRoZSByb290IGZpbGVzeXN0ZW0gb2YgYW5vdGhlcgorICAgICAgICAgICAgICAgICAgIGJ1aWxkIG1pZ2h0IG5vdCBzZWVtIHRoYXQgdXNlZnVsLgorICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoaXMgY2hhbmdlIHRvIHRoZSBzdGF0ZW1lbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2ltYWdlW21jZGVwZW5kc10gPSAibWM6eDg2OmFybTpjb3JlLWltYWdlLW1pbmltYWw6ZG9faW1hZ2UiCisgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgQml0QmFrZSBtdXN0IGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICJhcm0iIGJ1aWxkIHNpbmNlIHRoZSAieDg2IiBidWlsZCBkZXBlbmRzIG9uIGl0LgorICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBCZWNhdXNlICJ4ODYiIGFuZCAiYXJtIiBhcmUgZW5hYmxlZCBmb3IgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGJ1aWxkcyBhbmQgaGF2ZSBzZXBhcmF0ZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgZmlsZXMsIEJpdEJha2UgcGxhY2VzIHRoZSBhcnRpZmFjdHMgZm9yIGVhY2ggYnVpbGQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSB0ZW1wb3JhcnkgYnVpbGQgZGlyZWN0b3JpZXMgKGkuZS4KKyAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW4gaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZSBwcm92aWRlcyBhIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4KKyAgICAgICAgICAgICAgICBsb2FkaW5nIG9mIG1vZHVsZXMgbmVlZGVkIHRvIGxvY2F0ZSBhbmQgbW91bnQgdGhlICJyZWFsIiByb290CisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSkuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0cmFtZnMgaW1hZ2UgaXMgdGhlIHN1Y2Nlc3NvciBvZiBpbml0aWFsIFJBTSBkaXNrCisgICAgICAgICAgICAgICAgICAgIChpbml0cmQpLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsCisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gdGhhdCBnZXRzIGxvYWRlZCBpbnRvIG1lbW9yeSBkdXJpbmcgdGhlIExpbnV4CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24sIHRoZSBpbml0cmFtZnMgaW1hZ2UgbmVlZHMgdG8gY29udGFpbiBhbGwgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGRldmljZSBkcml2ZXJzIGFuZCB0b29scyBuZWVkZWQgdG8gbW91bnQgdGhlIGZpbmFsIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYW4gaW5pdHJhbWZzIGltYWdlOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUgZnJvbSB3aGljaCB0byB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZWNpZGUgaWYgWW91IE5lZWQgdG8gQnVuZGxlIHRoZSBpbml0cmFtZnMgSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEludG8gdGhlIEtlcm5lbCBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGluaXRyYW1mcyBpbWFnZSB0aGF0IGlzIGJ1aWx0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVkIGluIHdpdGggdGhlIGtlcm5lbCBpbWFnZSwgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG8gYnVuZGxlIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gYXZvaWQgY2lyY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUga2VybmVsIHJlY2lwZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIHJlY2lwZSBzaG91bGQgdGhlIGluaXRyYW1mcyBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnIGNhdXNlcyB0aGUgaW5pdHJhbWZzIGltYWdlIHRvIGJlIHVucGFja2VkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSA8ZmlsZW5hbWU+JHtCfS91c3IvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVucGFja2VkIGluaXRyYW1mcyBpbWFnZSBpcyB0aGVuIHBhc3NlZCB0byB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR19JTklUUkFNRlNfU09VUkNFJz48ZmlsZW5hbWU+Q09ORklHX0lOSVRSQU1GU19TT1VSQ0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYWxsb3dpbmcgdGhlIGluaXRyYW1mcyBpbWFnZSB0byBiZSBidWlsdCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIG5vcm1hbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBub3QgYnVuZGxlIHRoZSBpbml0cmFtZnMgaW1hZ2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UsIHlvdSBhcmUgZXNzZW50aWFsbHkgdXNpbmcgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Jbml0cmQnPkluaXRpYWwgUkFNIERpc2sgKGluaXRyZCk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbiBpbml0cmQgaXMgaGFuZGxlZCBwcmltYXJpbHkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJEX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVFJEX0xJVkU8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSRF9JTUFHRV9MSVZFPC9maWxlbmFtZT4gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MnPjxmaWxlbmFtZT5pbWFnZS1saXZlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBBZGQgSXRlbXMgdG8gdGhlIGluaXRyYW1mcyBJbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3VnaCB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBpdGVtcyB0byB0aGUgaW5pdHJhbWZzIGltYWdlIGJ5IHdheSBvZiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgeW91IHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiBnaXZlcyBtb3JlIGRpcmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHRzIHlvdSBtaWdodCBub3QgbmVjZXNzYXJpbHkgd2FudCB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1jb3JlLWltYWdlJz48ZmlsZW5hbWU+Y29yZS1pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgYW5kIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGtlcm5lbCBpbWFnZSB1c2luZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBpcyBhIGRlcGVuZGVuY3kgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UsIHRoZSBpbml0cmFtZnMgaW1hZ2UgaXMgYnVpbHQgYXMgd2VsbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aCB0aGUga2VybmVsIGltYWdlIGlmIHlvdSB1c2VkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVzY3JpYmVkIGVhcmxpZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWEtdGlueS1zeXN0ZW0nPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIGEgVGlueSBTeXN0ZW08L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBWZXJ5IHNtYWxsIGRpc3RyaWJ1dGlvbnMgaGF2ZSBzb21lIHNpZ25pZmljYW50IGFkdmFudGFnZXMgc3VjaAorICAgICAgICAgICAgICAgIGFzIHJlcXVpcmluZyBsZXNzIG9uLWRpZSBvciBpbi1wYWNrYWdlIG1lbW9yeSAoY2hlYXBlciksIGJldHRlcgorICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIHRocm91Z2ggZWZmaWNpZW50IGNhY2hlIHVzYWdlLCBsb3dlciBwb3dlciByZXF1aXJlbWVudHMKKyAgICAgICAgICAgICAgICBkdWUgdG8gbGVzcyBtZW1vcnksIGZhc3RlciBib290IHRpbWVzLCBhbmQgcmVkdWNlZCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIG92ZXJoZWFkLgorICAgICAgICAgICAgICAgIFNvbWUgcmVhbC13b3JsZCBleGFtcGxlcyB3aGVyZSBhIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uIGdpdmVzCisgICAgICAgICAgICAgICAgeW91IGRpc3RpbmN0IGFkdmFudGFnZXMgYXJlIGRpZ2l0YWwgY2FtZXJhcywgbWVkaWNhbCBkZXZpY2VzLAorICAgICAgICAgICAgICAgIGFuZCBzbWFsbCBoZWFkbGVzcyBzeXN0ZW1zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgaW5mb3JtYXRpb24gdGhhdCBzaG93cyB5b3UgaG93IHlvdSBjYW4KKyAgICAgICAgICAgICAgICB0cmltIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGV2ZW4gc21hbGxlciBzaXplcyB0aGFuIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBkaXN0cmlidXRpb24sIHdoaWNoIGlzIGFyb3VuZAorICAgICAgICAgICAgICAgIDUgTWJ5dGVzLCB0aGF0IGNhbiBiZSBidWlsdCBvdXQtb2YtdGhlLWJveCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Rpbnktc3lzdGVtLW92ZXJ2aWV3Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcmVzZW50cyB0aGUgb3ZlcmFsbCBzdGVwcyB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBjb25zaWRlciBhbmQgcGVyZm9ybSB0byBjcmVhdGUgZGlzdHJpYnV0aW9ucyB3aXRoIHNtYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtcywgYWNoaWV2ZSBmYXN0ZXIgYm9vdCB0aW1lcywgbWFpbnRhaW4geW91ciBjcml0aWNhbAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LCBhbmQgYXZvaWQgaW5pdGlhbCBSQU0gZGlza3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ29hbHMtYW5kLWd1aWRpbmctcHJpbmNpcGxlcyc+RGV0ZXJtaW5lIHlvdXIgZ29hbHMgYW5kIGd1aWRpbmcgcHJpbmNpcGxlcy48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZC13aGF0LWdpdmVzLXlvdXItaW1hZ2Utc2l6ZSc+VW5kZXJzdGFuZCB3aGF0IGNvbnRyaWJ1dGVzIHRvIHlvdXIgaW1hZ2Ugc2l6ZS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz5SZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndHJpbS10aGUta2VybmVsJz5SZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGtlcm5lbC48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVtb3ZlLXBhY2thZ2UtbWFuYWdlbWVudC1yZXF1aXJlbWVudHMnPkVsaW1pbmF0ZSBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzLjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdsb29rLWZvci1vdGhlci13YXlzLXRvLW1pbmltaXplLXNpemUnPkxvb2sgZm9yIG90aGVyIHdheXMgdG8gbWluaW1pemUgc2l6ZS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naXRlcmF0ZS1vbi10aGUtcHJvY2Vzcyc+SXRlcmF0ZSBvbiB0aGUgcHJvY2Vzcy48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2dvYWxzLWFuZC1ndWlkaW5nLXByaW5jaXBsZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Hb2FscyBhbmQgR3VpZGluZyBQcmluY2lwbGVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiByZWFjaCB5b3VyIGRlc3RpbmF0aW9uLCB5b3UgbmVlZCB0byBrbm93CisgICAgICAgICAgICAgICAgICAgIHdoZXJlIHlvdSBhcmUgZ29pbmcuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBsaXN0IHRoYXQgeW91IGNhbiB1c2UgYXMgYSBndWlkZSB3aGVuCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW5nIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZXRlcm1pbmUgaG93IG11Y2ggc3BhY2UgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGtlcm5lbCB0aGF0IGlzIDEgTWJ5dGUgb3IgbGVzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGlzIDMgTWJ5dGVzIG9yIGxlc3MpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZpbmQgdGhlIGFyZWFzIHRoYXQgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2luZyA5MCUgb2YgdGhlIHNwYWNlIGFuZCBjb25jZW50cmF0ZSBvbiByZWR1Y2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3NlIGFyZWFzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvIG5vdCBjcmVhdGUgYW55IGRpZmZpY3VsdCAiaGFja3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSB5b3VyIGdvYWxzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxldmVyYWdlIHRoZSBkZXZpY2Utc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldvcmsgaW4gYSBzZXBhcmF0ZSBsYXllciBzbyB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXAgY2hhbmdlcyBpc29sYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBsYXllcnMsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kLXdoYXQtZ2l2ZXMteW91ci1pbWFnZS1zaXplJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VW5kZXJzdGFuZCBXaGF0IENvbnRyaWJ1dGVzIHRvIFlvdXIgSW1hZ2UgU2l6ZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgZWFzaWVzdCB0byBoYXZlIHNvbWV0aGluZyB0byBzdGFydCB3aXRoIHdoZW4gY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvdXQtb2YtdGhlLWJveCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIFVsdGltYXRlbHksIHlvdSB3aWxsIHdhbnQgdG8gbWFrZSBjaGFuZ2VzIGluIHlvdXIgb3duCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFyZSBsaWtlbHkgbW9kZWxlZCBhZnRlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS10aW55PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBpbiB5b3VyIGJ1aWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB0byAicG9reS10aW55IgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyBzb21lIG1lbW9yeSBjb25jZXB0cyB3aWxsIGhlbHAgeW91IHJlZHVjZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNpemUuCisgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBjb25zaXN0cyBvZiBzdGF0aWMsIGR5bmFtaWMsIGFuZCB0ZW1wb3JhcnkgbWVtb3J5LgorICAgICAgICAgICAgICAgICAgICBTdGF0aWMgbWVtb3J5IGlzIHRoZSBURVhUIChjb2RlKSwgREFUQSAoaW5pdGlhbGl6ZWQgZGF0YQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY29kZSksIGFuZCBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkgc2VjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIER5bmFtaWMgbWVtb3J5IHJlcHJlc2VudHMgbWVtb3J5IHRoYXQgaXMgYWxsb2NhdGVkIGF0IHJ1bnRpbWU6CisgICAgICAgICAgICAgICAgICAgIHN0YWNrcywgaGFzaCB0YWJsZXMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgVGVtcG9yYXJ5IG1lbW9yeSBpcyByZWNvdmVyZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZW1vcnkgY29uc2lzdHMgb2YgbWVtb3J5IHVzZWQgZm9yIGRlY29tcHJlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBhbmQgZm9yIHRoZSA8ZmlsZW5hbWU+X19pbml0X188L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhlbHAgeW91IHNlZSB3aGVyZSB5b3UgY3VycmVudGx5IGFyZSB3aXRoIGtlcm5lbCBhbmQgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHNpemVzLCB5b3UgY2FuIHVzZSB0d28gdG9vbHMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvdGlueS88L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmtzaXplLnB5PC9maWxlbmFtZT46IFJlcG9ydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgc2l6ZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+OiBSZXBvcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50IHNpemVzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IHRvb2wgYW5kIGNvbW1hbmQgaGVscCB5b3Ugb3JnYW5pemUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIHZpZXcgZmlsZSBkZXBlbmRlbmNpZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5tZXJnZV9jb25maWcuc2g8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwcyB5b3UgbWFuYWdlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGZyYWdtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGggdGhpcyB0b29sLCB5b3UgY2FuIG1lcmdlIGluZGl2aWR1YWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyB0b2dldGhlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCBhbGxvd3MgeW91IHRvIG1ha2Ugb3ZlcnJpZGVzIGFuZCB3YXJucyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbnkgbWlzc2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2wgaXMgaWRlYWwgZm9yIGFsbG93aW5nIHlvdSB0byBpdGVyYXRlIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGNyZWF0ZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb25zLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgZGlmZmVyZW50IG1hY2hpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZHVwbGljYXRlIHlvdXIgcHJvY2Vzcy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5tZXJnZV9jb25maWcuc2g8L2ZpbGVuYW1lPiBzY3JpcHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBMaW51eCBZb2N0byBrZXJuZWwgR2l0IHJlcG9zaXRvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy44PC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9rY29uZmlnPC9maWxlbmFtZT4gZGlyZWN0b3J5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmF0aW9uIGZyYWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iaXRiYWtlIC11IHRhc2tleHAgLWcgPHJlcGxhY2VhYmxlPmJpdGJha2VfdGFyZ2V0PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgQml0QmFrZSBjb21tYW5kIHdpdGggdGhlc2Ugb3B0aW9ucyBicmluZ3MgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIERlcGVuZGVuY3kgRXhwbG9yZXIgZnJvbSB3aGljaCB5b3UgY2FuIHZpZXcgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1lZCBkZWNpc2lvbnMgd2hlbiBjdXR0aW5nIG91dCB2YXJpb3VzIHBpZWNlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgYW5kIHJvb3QgZmlsZXN5c3RlbS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgUm9vdCBGaWxlc3lzdGVtPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBmaWxlc3lzdGVtIGlzIG1hZGUgdXAgb2YgcGFja2FnZXMgZm9yIGJvb3RpbmcsCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcywgYW5kIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoaW5ncywgeW91IGNhbiBjb25maWd1cmUgaG93IHRoZSBwYWNrYWdpbmcgaGFwcGVucywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IHlvdSBidWlsZCB0aGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gbW9kaWZ5IHRoZSBmaWxlc3lzdGVtIGl0c2VsZiBvciBzZWxlY3QgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmlyc3QsIGZpbmQgb3V0IHdoYXQgaXMgaG9nZ2luZyB5b3VyIHJvb3QgZmlsZXN5c3RlbSBieSBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHlvdXIgcm9vdCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCA8cmVwbGFjZWFibGU+cm9vdC1kaXJlY3Rvcnktb2YtaW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAkIGRpcnNpemUucHkgMTAwMDAwID4gZGlyc2l6ZS0xMDBrLmxvZworICAgICAkIGNhdCBkaXJzaXplLTEwMGsubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhcHBseSBhIGZpbHRlciB0byB0aGUgc2NyaXB0IHRvIGlnbm9yZSBmaWxlcyB1bmRlcgorICAgICAgICAgICAgICAgICAgICBhIGNlcnRhaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZmlsdGVycyBvdXQgYW55IGZpbGVzIGJlbG93IDEwMCBLYnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzaXplcyByZXBvcnRlZCBieSB0aGUgdG9vbCBhcmUgdW5jb21wcmVzc2VkLCBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHNtYWxsZXIgYnkgYSByZWxhdGl2ZWx5IGNvbnN0YW50IGZhY3RvciBpbiBhCisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBleGFtaW5lIHlvdXIgbG9nIGZpbGUsIHlvdSBjYW4gZm9jdXMgb24gYXJlYXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IHRha2UgdXAgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB3aGF0IHlvdSBlbGltaW5hdGUgZG9lcyBub3QgY3JpcHBsZQorICAgICAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb25hbGl0eSB5b3UgbmVlZC4KKyAgICAgICAgICAgICAgICAgICAgT25lIHdheSB0byBzZWUgaG93IHBhY2thZ2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGlzIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBEZXBlbmRlbmN5IEV4cGxvcmVyIFVJIHdpdGggdGhlIEJpdEJha2UgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIDxyZXBsYWNlYWJsZT5pbWFnZS1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIGJpdGJha2UgLXUgdGFza2V4cCAtZyA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgaW50ZXJmYWNlIHRvIHNlbGVjdCBwb3RlbnRpYWwgcGFja2FnZXMgeW91IHdpc2ggdG8KKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlIGFuZCBzZWUgdGhlaXIgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGRlY2lkaW5nIGhvdyB0byByZWR1Y2UgdGhlIHNpemUsIGdldCByaWQgb2YgcGFja2FnZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgaW4gbWluaW1hbCBpbXBhY3Qgb24gdGhlIGZlYXR1cmUgc2V0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IG5vdCBuZWVkIGEgVkdBIGRpc3BsYXkuCisgICAgICAgICAgICAgICAgICAgIE9yLCB5b3UgbWlnaHQgYmUgYWJsZSB0byBnZXQgYnkgd2l0aCA8ZmlsZW5hbWU+ZGV2dG1wZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPm1kZXY8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB0byBtYWtlIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBlbGltaW5hdGUgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWI8L2ZpbGVuYW1lPiwgc2V0IHRoZSBmb2xsb3dpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPSAiIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBzaG91bGQgY29uc2lkZXIgZXhhY3RseSB0aGUgdHlwZSBvZiByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0geW91IG5lZWQgdG8gbWVldCB5b3VyIG5lZWRzIHdoaWxlIGFsc28gcmVkdWNpbmcKKyAgICAgICAgICAgICAgICAgICAgaXRzIHNpemUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciA8ZmlsZW5hbWU+Y3JhbWZzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zcXVhc2hmczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dWJpZnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPiwgb3IgYW4gPGZpbGVuYW1lPmluaXRyYW1mczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQmUgYXdhcmUgdGhhdCA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+IHJlcXVpcmVzIGEgMSBNYnl0ZQorICAgICAgICAgICAgICAgICAgICBqb3VybmFsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9rYXkgd2l0aCBydW5uaW5nIHJlYWQtb25seSwgeW91IGRvIG5vdCBuZWVkIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgam91cm5hbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWFjaCByb3VuZCBvZiBlbGltaW5hdGlvbiwgeW91IG5lZWQgdG8gcmVidWlsZCB5b3VyCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgdGhlbiB1c2UgdGhlIHRvb2xzIHRvIHNlZSB0aGUgZWZmZWN0cyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIHJlZHVjdGlvbnMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUta2VybmVsJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgS2VybmVsPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUga2VybmVsIGlzIGJ1aWx0IGJ5IGluY2x1ZGluZyBwb2xpY2llcyBmb3IgaGFyZHdhcmUtaW5kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgYXNwZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgV2hhdCBzdWJzeXN0ZW1zIGRvIHlvdSBlbmFibGU/CisgICAgICAgICAgICAgICAgICAgIEZvciB3aGF0IGFyY2hpdGVjdHVyZSBhcmUgeW91IGJ1aWxkaW5nPworICAgICAgICAgICAgICAgICAgICBXaGljaCBkcml2ZXJzIGRvIHlvdSBidWlsZCBieSBkZWZhdWx0PworICAgICAgICAgICAgICAgICAgICA8bm90ZT5Zb3UgY2FuIG1vZGlmeSB0aGUga2VybmVsIHNvdXJjZSBpZiB5b3Ugd2FudCB0byBoZWxwCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGJvb3QgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgTGludXggYnVpbGQgZGlyZWN0b3J5IHRvIGdldCBhbiBpZGVhIG9mIHdoYXQgaXMgbWFraW5nIHVwCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWw6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCA8cmVwbGFjZWFibGU+dG9wLWxldmVsLWxpbnV4LWJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICQga3NpemUucHkgPiBrc2l6ZS5sb2cKKyAgICAgJCBjYXQga3NpemUubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgZXhhbWluZSB0aGUgbG9nLCB5b3Ugd2lsbCBzZWUgaG93IG11Y2ggc3BhY2UgaXMKKyAgICAgICAgICAgICAgICAgICAgdGFrZW4gdXAgd2l0aCB0aGUgYnVpbHQtaW4gPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMsIG5ldHdvcmtpbmcsIGNvcmUga2VybmVsIGZpbGVzLCBmaWxlc3lzdGVtLCBzb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2l6ZXMgcmVwb3J0ZWQgYnkgdGhlIHRvb2wgYXJlIHVuY29tcHJlc3NlZCwgYW5kIHRodXMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBzbWFsbGVyIGJ5IGEgcmVsYXRpdmVseSBjb25zdGFudCBmYWN0b3IgaW4gYSBjb21wcmVzc2VkCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgTG9vayB0byByZWR1Y2UgdGhlIGFyZWFzIHRoYXQgYXJlIGxhcmdlIGFuZCB0YWtpbmcgdXAgYXJvdW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSAiOTAlIHJ1bGUuIgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBleGFtaW5lLCBvciBkcmlsbCBkb3duLCBpbnRvIGFueSBwYXJ0aWN1bGFyIGFyZWEsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kPC9maWxlbmFtZT4gb3B0aW9uIHdpdGggdGhlIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGtzaXplLnB5IC1kID4ga3NpemUubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gYnJlYWtzIG91dCB0aGUgaW5kaXZpZHVhbCBmaWxlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIGFyZWEgb2YgdGhlIGtlcm5lbCAoZS5nLiBkcml2ZXJzLCBuZXR3b3JraW5nLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2UgeW91ciBsb2cgZmlsZSB0byBzZWUgd2hhdCB5b3UgY2FuIGVsaW1pbmF0ZSBmcm9tIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gZmVhdHVyZXMgeW91IGNhbiBsZXQgZ28uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIG5vdCBnb2luZyB0byBuZWVkIHNvdW5kLCB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIG5lZWQgYW55IGRyaXZlcnMgdGhhdCBzdXBwb3J0IHNvdW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBmaWd1cmluZyBvdXQgd2hhdCB0byBlbGltaW5hdGUsIHlvdSBuZWVkIHRvIHJlY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzIGR1cmluZyB0aGUgbmV4dCBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIHJ1biA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGFuZCBtYWtlIGFsbCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgYXQgb25jZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhhdCBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gc2VlIHRoZSBlZmZlY3RzIG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBlbGltaW5hdGlvbnMgYW5kIGFsc28gbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcGxpY2F0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmb3IgcGVyaGFwcyBhbm90aGVyIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgIEEgYmV0dGVyIG1ldGhvZCBpcyB0byBzdGFydCB3aXRoIG5vIGNvbmZpZ3VyYXRpb25zIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGxub2NvbmZpZzwvZmlsZW5hbWU+LCBjcmVhdGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgZm9yIGluZGl2aWR1YWwgY2hhbmdlcywgYW5kIHRoZW4gbWFuYWdlIHRoZQorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgaW50byBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCBtYWtlcyBpdCBlYXN5IGZvciB5b3UgdG8gaXRlcmF0ZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGJ1aWxkIGN5Y2xlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFYWNoIHRpbWUgeW91IG1ha2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCB5b3UgbmVlZCB0byByZWJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGNoZWNrIHRvIHNlZSB3aGF0IGltcGFjdCB5b3VyIGNoYW5nZXMgaGFkIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBvdmVyYWxsIHNpemUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVtb3ZlLXBhY2thZ2UtbWFuYWdlbWVudC1yZXF1aXJlbWVudHMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SZW1vdmUgUGFja2FnZSBNYW5hZ2VtZW50IFJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnaW5nIHJlcXVpcmVtZW50cyBhZGQgc2l6ZSB0byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIE9uZSB3YXkgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBpcyB0byByZW1vdmUgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGZyb20gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlZHVjdGlvbiBpbmNsdWRlcyBib3RoIHJlbW92aW5nIHRoZSBwYWNrYWdlIG1hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgYW5kIGl0cyB1bmlxdWUgZGVwZW5kZW5jaWVzIGFzIHdlbGwgYXMgcmVtb3ZpbmcgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBkYXRhIGl0c2VsZi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZWxpbWluYXRlIGFsbCB0aGUgcGFja2FnaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgIGJlIHN1cmUgdGhhdCAicGFja2FnZS1tYW5hZ2VtZW50IiBpcyBub3QgcGFydCBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcmVtb3ZlIHRoaXMgZmVhdHVyZSwgeW91IGFyZSByZW1vdmluZyB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyIGFzIHdlbGwgYXMgaXRzIGRlcGVuZGVuY2llcyBmcm9tIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbG9vay1mb3Itb3RoZXItd2F5cy10by1taW5pbWl6ZS1zaXplJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TG9vayBmb3IgT3RoZXIgV2F5cyB0byBNaW5pbWl6ZSBTaXplPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZXMsIG90aGVyIGFyZWFzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiB0cmltIGxpa2VseSBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGtleSB0byBmaW5kaW5nIHRoZXNlIGFyZWFzIGlzIHRocm91Z2ggdG9vbHMgYW5kIG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGhlcmUgY29tYmluZWQgd2l0aCBleHBlcmltZW50YXRpb24gYW5kIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgb2YgYXJlYXMgdG8gZXhwZXJpbWVudCB3aXRoOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGZvbGxvdyB0aGlzIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmVtb3ZlIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgdGhpbmsgeW91IGRvIG5vdCBuZWVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIHRoZSBidWlsZCBmYWlscyBkdWUgdG8gbWlzc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9scyBpbiBhIHBhY2thZ2UsIGRldGVybWluZSBpZiB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvbmZpZ3VyZSB0aGUgcGFja2FnZSB0byBub3QgbmVlZCB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IGFzIGlzIGRvbmUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmN1cnNlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHN1cHBvcnQgZm9yIHRob3NlIGNoYXJhY3RlcnMgaXMgbmVlZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoYXQgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHByb3ZpZGUgdGhlIHN1cHBvcnQgYW5kIHJlc3RvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZWJ1aWxkIGFuZCByZXBlYXQgdGhlIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEJ1c3lCb3gsIHVzZSBhIHByb2Nlc3Mgc2ltaWxhciBhcyBkZXNjcmliZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBkaWZmZXJlbmNlIGlzIHlvdSB3aWxsIG5lZWQgdG8gYm9vdCB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIHNlZSBpZiB5b3UgYXJlIGFibGUgdG8gZG8gZXZlcnl0aGluZyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QgZnJvbSB0aGUgcnVubmluZyBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0byBpbnRlZ3JhdGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIEJ1c3lib3ggYmVjYXVzZSBCdXN5Qm94IGhhbmRsZXMgaXRzIG93biBjb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgYW5kIHRoZW4gYWxsb3dzIHlvdSB0byBhZGQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBvbiB0b3AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2l0ZXJhdGUtb24tdGhlLXByb2Nlc3MnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5JdGVyYXRlIG9uIHRoZSBQcm9jZXNzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBub3QgcmVhY2hlZCB5b3VyIGdvYWxzIG9uIHN5c3RlbSBzaXplLCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICB0byBpdGVyYXRlIG9uIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBpcyB0aGUgc2FtZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSB0b29scyBhbmQgc2VlIGp1c3Qgd2hhdCBpcyB0YWtpbmcgdXAgOTAlIG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gYW5kIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIERlY2lkZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIHdpdGhvdXQgbGltaXRpbmcgeW91ciBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgYmV5b25kIHdoYXQgeW91IG5lZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSwgYSBnb29kIHBsYWNlIHRvIGxvb2sgbWlnaHQgYmUKKyAgICAgICAgICAgICAgICAgICAgQnVzeWJveCwgd2hpY2ggcHJvdmlkZXMgYSBzdHJpcHBlZCBkb3duCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgVW5peCB0b29scyBpbiBhIHNpbmdsZSwgZXhlY3V0YWJsZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYmUgYWJsZSB0byBkcm9wIHZpcnR1YWwgdGVybWluYWwgc2VydmljZXMgb3IgcGVyaGFwcworICAgICAgICAgICAgICAgICAgICBpcHY2LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1pbWFnZXMtZm9yLW1vcmUtdGhhbi1vbmUtbWFjaGluZSc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgSW1hZ2VzIGZvciBNb3JlIHRoYW4gT25lIE1hY2hpbmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyBkZXZlbG9wZXJzIGZhY2UgaXMgY3JlYXRpbmcgaW1hZ2VzIGZvciBzZXZlcmFsCisgICAgICAgICAgICAgICAgZGlmZmVyZW50IG1hY2hpbmVzIHRoYXQgdXNlIHRoZSBzYW1lIHNvZnR3YXJlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCBpdCBpcyB0ZW1wdGluZyB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgdHVuaW5ncyBhbmQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBlYWNoIGJ1aWxkIHNwZWNpZmljYWxseSBmb3IKKyAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUgKGkuZS4gIm1heGluZyBvdXQiIHRoZSB0dW5pbmdzKS4KKyAgICAgICAgICAgICAgICBEb2luZyBzbyBjYW4gY29uc2lkZXJhYmx5IGFkZCB0byBidWlsZCB0aW1lcyBhbmQgcGFja2FnZSBmZWVkCisgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgY29sbGVjdGl2ZWx5IGZvciB0aGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGVjdGluZyB0dW5lcyB0aGF0IGFyZSBleHRyZW1lbHkgc3BlY2lmaWMgdG8gYQorICAgICAgICAgICAgICAgIENQVSBjb3JlIHVzZWQgaW4gYSBzeXN0ZW0gbWlnaHQgZW5hYmxlIHNvbWUgbWljcm8gb3B0aW1pemF0aW9ucworICAgICAgICAgICAgICAgIGluIEdDQyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHN5c3RlbSBidXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnYWluCisgICAgICAgICAgICAgICAgeW91IG11Y2ggb2YgYSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGFjcm9zcyB0aGUgb3RoZXIgc3lzdGVtcworICAgICAgICAgICAgICAgIGFzIGNvbXBhcmVkIHRvIHVzaW5nIGEgbW9yZSBnZW5lcmFsIHR1bmluZyBhY3Jvc3MgYWxsIHRoZSBidWlsZHMKKyAgICAgICAgICAgICAgICAoZS5nLiBzZXR0aW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFRkFVTFRUVU5FJz48ZmlsZW5hbWU+REVGQVVMVFRVTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGZvciBlYWNoIG1hY2hpbmUncyBidWlsZCkuCisgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gIm1heCBvdXQiIGVhY2ggYnVpbGQncyB0dW5pbmdzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdGhhdAorICAgICAgICAgICAgICAgIGNhdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHJldXNlIHNvZnR3YXJlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICB2YXJpb3VzIG1hY2hpbmVzIHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBidWlsZCBzcGVlZCBhbmQgcGFja2FnZSBmZWVkIG1haW50ZW5hbmNlIGFyZSBjb25zaWRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBwb2ludHMgaW4gdGhpcyBzZWN0aW9uIHRoYXQgY2FuIGhlbHAgeW91CisgICAgICAgICAgICAgICAgb3B0aW1pemUgeW91ciB0dW5pbmdzIHRvIGJlc3QgY29uc2lkZXIgYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBmZWVkIG1haW50ZW5hbmNlLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TaGFyZSB0aGUgQnVpbGQgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhdCBhbGwgcG9zc2libGUsIHNoYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjcm9zcyBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBpbiB0aGUgc2FtZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGlzIHdlbGwgc3VwcG9ydGVkIGFuZCByZWd1bGFybHkgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyB3aGVuIGJ1aWxkaW5nIGZvciBtdWx0aXBsZSBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgc2FtZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lIGJ1aWxkcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuCisgICAgICAgICAgICAgICAgICAgICAgICByZXVzZSB0aGUgZXhpc3RpbmcgbmF0aXZlIGFuZCBvZnRlbiBjcm9zcy1yZWNpcGVzIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBidWlsZCB0aW1lIGRlY3JlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBjaGFuZ2Ugb3IgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZpbGVzeXN0ZW0gbGF5b3V0LCB5b3UgbmVlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNsZWFuIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyaW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB1bmRlciB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMgbWlnaHQgd29yayBidXQgc2luY2UgaXQgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmFudGVlZCwgeW91IHNob3VsZCB1c2UgYSBjbGVhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW5hYmxlIHRoZSBBcHByb3ByaWF0ZSBQYWNrYWdlIEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZW5hYmxlcyB0aHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzIG9mIHBhY2thZ2UgYXJjaGl0ZWN0dXJlczogImFsbCIsICJ0dW5lIiBvciAicGFja2FnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgIm1hY2hpbmUiLgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGdpdmVuIHJlY2lwZSB1c3VhbGx5IHNlbGVjdHMgb25lIG9mIHRoZXNlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgKHR5cGVzKSBmb3IgaXRzIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBmb3Igd2hhdCBhIGdpdmVuIHJlY2lwZSBjcmVhdGVzIHBhY2thZ2VzLCBtYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgeW91IGVuYWJsZSB0aGUgYXBwcm9wcmlhdGUgcGFja2FnZSBhcmNoaXRlY3R1cmUgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSBpbXBhY3QgdGhlIGJ1aWxkIHRpbWUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BIHJlY2lwZSB0aGF0IGp1c3QgZ2VuZXJhdGVzIHNjcmlwdHMgY2FuIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIgYXJjaGl0ZWN0dXJlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGJpbmFyaWVzIHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmaWNhbGx5IGVuYWJsZSAiYWxsIiBhcmNoaXRlY3R1cmUsIGJlIHN1cmUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGluaGVyaXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYWxsYXJjaCc+PGZpbGVuYW1lPmFsbGFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgaXMgdXNlZnVsIGZvciAiYWxsIiBhcmNoaXRlY3R1cmVzIGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgbWFueSB2YXJpYWJsZXMgc28gcGFja2FnZXMgY2FuIGJlIHVzZWQgYWNyb3NzCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91ciByZWNpcGUgbmVlZHMgdG8gZ2VuZXJhdGUgcGFja2FnZXMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgb3Igd2hlbiBvbmUgb2YgdGhlIGJ1aWxkIG9yIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpcyBhbHJlYWR5IG1hY2hpbmUtYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIG1ha2VzIHlvdXIgcmVjaXBlIGFsc28gbWFjaGluZS1hcmNoaXRlY3R1cmUgZGVwZW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBzdXJlIHlvdXIgcmVjaXBlIGVuYWJsZXMgdGhlICJtYWNoaW5lIiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0FSQ0gnPjxmaWxlbmFtZT5NQUNISU5FX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGRvIG5vdCBzcGVjaWZpY2FsbHkgZW5hYmxlIGEgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRlZmF1bHRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQVJDSCA9ICIke1RVTkVfUEtHQVJDSH0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNob29zZSBhIEdlbmVyaWMgVHVuaW5nIEZpbGUgaWYgUG9zc2libGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgdHVuZXMgYXJlIG1vcmUgZ2VuZXJpYyBhbmQgY2FuIHJ1biBvbiBtdWx0aXBsZSB0YXJnZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhbiA8ZmlsZW5hbWU+YXJtdjU8L2ZpbGVuYW1lPiBzZXQgb2YgcGFja2FnZXMgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBvbiA8ZmlsZW5hbWU+YXJtdjY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12NzwvZmlsZW5hbWU+IHByb2Nlc3NvcnMgaW4gbW9zdCBjYXNlcykuCisgICAgICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIDxmaWxlbmFtZT5pNDg2PC9maWxlbmFtZT4gYmluYXJpZXMgY291bGQgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgb24gPGZpbGVuYW1lPmk1ODY8L2ZpbGVuYW1lPiBhbmQgaGlnaGVyIHByb2Nlc3NvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJlYWxpemUsIGhvd2V2ZXIsIHRoYXQgYWR2YW5jZXMgb24gbmV3ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB2ZXJzaW9ucyB3b3VsZCBub3QgYmUgdXNlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3QgdGhlIHNhbWUgdHVuZSBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZXVzZXMgc29mdHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgYnVpbHQsIHRodXMgc3BlZWRpbmcgdXAgdGhlIG92ZXJhbGwgYnVpbGQgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBldmVuIHRob3VnaCBhIG5ldyBzeXNyb290IGZvciBlYWNoIG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCwgdGhlIHNvZnR3YXJlIGlzIG5vdCByZWNvbXBpbGVkIGFuZCBvbmx5IG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBmZWVkIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEdyYW51bGFyIExldmVsIFBhY2thZ2luZzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGNhc2VzIGV4aXN0IHdoZXJlIGluamVjdGluZyBhbm90aGVyIGxldmVsIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGFyY2hpdGVjdHVyZSBiZXlvbmQgdGhlIHRocmVlIGhpZ2hlciBsZXZlbHMgbm90ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhcmxpZXIgY2FuIGJlIHVzZWZ1bC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciBob3cgTlhQIChmb3JtZXJseSBGcmVlc2NhbGUpIGFsbG93cworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBlYXN5IHJldXNlIG9mIGJpbmFyeSBwYWNrYWdlcyBpbiB0aGVpciBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS1mcmVlc2NhbGUvJz48ZmlsZW5hbWU+bWV0YS1mcmVlc2NhbGU8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL21ldGEtZnJlZXNjYWxlL3RyZWUvY2xhc3Nlcy9mc2wtZHluYW1pYy1wYWNrYWdlYXJjaC5iYmNsYXNzJz48ZmlsZW5hbWU+ZnNsLWR5bmFtaWMtcGFja2FnZWFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBzaGFyZXMgR1BVIHBhY2thZ2VzIGZvciBpLk1YNTMgYm9hcmRzIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBib2FyZHMgc2hhcmUgdGhlIEFNRCBHUFUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaS5NWDYtYmFzZWQgYm9hcmRzIGNhbiBkbyB0aGUgc2FtZSBiZWNhdXNlIGFsbCBib2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlIHRoZSBWaXZhbnRlIEdQVS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgaW5zcGVjdHMgdGhlIEJpdEJha2UgZGF0YXN0b3JlIHRvIGlkZW50aWZ5IGlmCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFja2FnZSBwcm92aWRlcyBvciBkZXBlbmRzIG9uIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi1hcmNoaXRlY3R1cmUgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZSBjbGFzcyBzZXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGJhc2VkIG9uIHRoZSA8ZmlsZW5hbWU+TUFDSElORV9TVUJBUkNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHBhY2thZ2UgZG9lcyBub3QgcHJvdmlkZSBvciBkZXBlbmQgb24gb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3ViLWFyY2hpdGVjdHVyZSB2YWx1ZXMgYnV0IGl0IG1hdGNoZXMgYSB2YWx1ZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgZmlsdGVyLCBpdCBzZXRzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9BUkNIJz48ZmlsZW5hbWU+TUFDSElORV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhY2thZ2VzIGJ1aWx0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZXMgYnVpbGQgdGltZSBieSByZXVzaW5nIGJpbmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgVG9vbHMgdG8gRGVidWcgSXNzdWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgeW91IGNhbiBydW4gaW50byBzaXR1YXRpb25zIHdoZXJlIHNvZnR3YXJlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyByZWJ1aWx0IHdoZW4geW91IHRoaW5rIGl0IHNob3VsZCBub3QgYmUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbWlnaHQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBzaGFyZWQgc3RhdGUgYmV0d2VlbiBtYWNoaW5lcyB3aGVuIHlvdSB0aGluayBpdAorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2Ygc2l0dWF0aW9ucyBhcmUgdXN1YWxseSBkdWUgdG8gcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFjaGluZS1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRVMnPjxmaWxlbmFtZT5TRVJJQUxfQ09OU09MRVM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVhTRVJWRVInPjxmaWxlbmFtZT5YU0VSVkVSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0ZFQVRVUkVTJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGggaW4gY29kZSB0aGF0IGlzIHN1cHBvc2VkIHRvIG9ubHkgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1bmUtc3BlY2lmaWMgb3Igd2hlbiB0aGUgcmVjaXBlIGRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJTVUdHRVNUUyc+PGZpbGVuYW1lPlJTVUdHRVNUUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIG9uIHNvbWUgb3RoZXIgcmVjaXBlIHRoYXQgYWxyZWFkeSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGFzICIke01BQ0hJTkVfQVJDSH0iLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlcyB0byBmaXggYW55IGlzc3VlcyBpZGVudGlmaWVkIGFyZSBtb3N0IHdlbGNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGVzZSBpc3N1ZXMgb2NjYXNpb25hbGx5IGRvIG9jY3VyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIHN1Y2ggY2FzZXMsIHlvdSBjYW4gdXNlIHNvbWUgdG9vbHMgdG8gaGVscCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgb3V0IHRoZSBzaXR1YXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHRvb2wgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgUmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGNvbW1lbnRzIGluIHRoZSBzY3JpcHQgZm9yIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byB1c2UgdGhlIHRvb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2UncyAiLVMgcHJpbnRkaWZmIiBPcHRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIEJpdEJha2UgdG8gdHJ5IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdGFibGlzaCB0aGUgY2xvc2VzdCBzaWduYXR1cmUgbWF0Y2ggaXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIGluIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUpIGFuZCB0aGVuIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IG92ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgdG8gZGV0ZXJtaW5lIHRoZSBzdGFtcHMgYW5kIGRlbHRhIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHR3byBzdGFtcCB0cmVlcyBkaXZlcmdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0iYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UiPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUgc291cmNlIGZpbGVzLCB1bnBhY2tpbmcKKyAgICAgICAgICAgICAgICB0aGVtLCBhbmQgdGhlbiBwYXRjaGluZyB0aGVtIGlmIG5lY2Vzc2FyeSBiZWZvcmUgdGhlIGJ1aWxkIHRha2VzCisgICAgICAgICAgICAgICAgcGxhY2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNpdHVhdGlvbnMgZXhpc3Qgd2hlcmUgeW91IG1pZ2h0IHdhbnQgdG8gYnVpbGQgc29mdHdhcmUgZnJvbSBzb3VyY2UKKyAgICAgICAgICAgICAgICBmaWxlcyB0aGF0IGFyZSBleHRlcm5hbCB0byBhbmQgdGh1cyBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYSBwcm9qZWN0IHRoYXQgaW5jbHVkZXMgYSBuZXcgQlNQIHdpdGgKKyAgICAgICAgICAgICAgICBhIGhlYXZpbHkgY3VzdG9taXplZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgQW5kLCB5b3Ugd2FudCB0byBtaW5pbWl6ZSBleHBvc2luZyB0aGUgYnVpbGQgc3lzdGVtIHRvIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHRlYW0gc28gdGhhdCB0aGV5IGNhbiBmb2N1cyBvbiB0aGVpciBwcm9qZWN0IGFuZAorICAgICAgICAgICAgICAgIG1haW50YWluIGV2ZXJ5b25lJ3Mgd29ya2Zsb3cgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3YW50IGEga2VybmVsIHNvdXJjZSBkaXJlY3Rvcnkgb24gdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgbWFjaGluZSB3aGVyZSB0aGUgZGV2ZWxvcG1lbnQgb2NjdXJzLgorICAgICAgICAgICAgICAgIFlvdSB3YW50IHRoZSByZWNpcGUncworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB0aGUgZXh0ZXJuYWwgZGlyZWN0b3J5IGFuZCB1c2UgaXQgYXMgaXMsIG5vdAorICAgICAgICAgICAgICAgIGNvcHkgaXQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGJ1aWxkIGZyb20gc29mdHdhcmUgdGhhdCBjb21lcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSwgYWxsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgdG8gZG8gaXMgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGVuIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkMnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB5b3VyIGV4dGVybmFsIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBzdGF0ZW1lbnRzIHRvIHB1dCBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAiZXh0ZXJuYWxzcmMiCisgICAgIEVYVEVSTkFMU1JDX3BuLTxyZXBsYWNlYWJsZT5teXJlY2lwZTwvcmVwbGFjZWFibGU+ID0gIjxyZXBsYWNlYWJsZT5wYXRoLXRvLXlvdXItc291cmNlLXRyZWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIHNob3dzIGhvdyB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGJ5IHNldHRpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPiBpbiB0aGUgcmVjaXBlIGl0c2VsZiBvciBpbiB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVYVEVSTkFMU1JDID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCisgICAgIEVYVEVSTkFMU1JDX0JVSUxEID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlc2Ugc2V0dGluZ3MgdG8gdGFrZSBlZmZlY3QsIHlvdSBtdXN0IGdsb2JhbGx5CisgICAgICAgICAgICAgICAgICAgIG9yIGxvY2FsbHkgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+IGJ1aWxkcworICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBpbiBhIGRpcmVjdG9yeSBzZXBhcmF0ZSBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2UKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVSTkFMU1JDJz48ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGhhdmUgdGhlIHNvdXJjZSBidWlsdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICB3aGljaCBpdCByZXNpZGVzLCBvciBzb21lIG90aGVyIG5vbWluYXRlZCBkaXJlY3RvcnksIHlvdSBjYW4gc2V0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVSTkFMU1JDX0JVSUxEJz48ZmlsZW5hbWU+RVhURVJOQUxTUkNfQlVJTEQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gdGhhdCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRFUk5BTFNSQ19CVUlMRF9wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InJlcGxpY2F0aW5nLWEtYnVpbGQtb2ZmbGluZSI+CisgICAgICAgICAgICA8dGl0bGU+UmVwbGljYXRpbmcgYSBCdWlsZCBPZmZsaW5lPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXQgY2FuIGJlIHVzZWZ1bCB0byB0YWtlIGEgInNuYXBzaG90IiBvZiB1cHN0cmVhbSBzb3VyY2VzCisgICAgICAgICAgICAgICAgdXNlZCBpbiBhIGJ1aWxkIGFuZCB0aGVuIHVzZSB0aGF0ICJzbmFwc2hvdCIgbGF0ZXIgdG8KKyAgICAgICAgICAgICAgICByZXBsaWNhdGUgdGhlIGJ1aWxkIG9mZmxpbmUuCisgICAgICAgICAgICAgICAgVG8gZG8gc28sIHlvdSBuZWVkIHRvIGZpcnN0IHByZXBhcmUgYW5kIHBvcHVsYXRlIHlvdXIgZG93bmxvYWRzCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHlvdXIgInNuYXBzaG90IiBvZiBmaWxlcy4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdXIgZG93bmxvYWRzIGRpcmVjdG9yeSBpcyByZWFkeSwgeW91IGNhbiB1c2UgaXQgYXQKKyAgICAgICAgICAgICAgICBhbnkgdGltZSBhbmQgZnJvbSBhbnkgbWFjaGluZSB0byByZXBsaWNhdGUgeW91ciBidWlsZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHBvcHVsYXRlIHlvdXIgRG93bmxvYWRzIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBDbGVhbiBEb3dubG9hZHMgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTdGFydCB3aXRoIGFuIGVtcHR5IGRvd25sb2FkcyBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc3RhcnQgd2l0aCBhbiBlbXB0eSBkb3dubG9hZHMgZGlyZWN0b3J5IGJ5IGVpdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZpbmcgdGhlIGZpbGVzIGluIHRoZSBleGlzdGluZyBkaXJlY3Rvcnkgb3IgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiB0byBwb2ludCB0byBlaXRoZXIgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5IGxvY2F0aW9uIG9yIG9uZSB0aGF0IGRvZXMgbm90IHlldCBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2VuZXJhdGUgVGFyYmFsbHMgb2YgdGhlIFNvdXJjZSBHaXQgUmVwb3NpdG9yaWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERMX0RJUiA9ICIvaG9tZS88cmVwbGFjZWFibGU+eW91ci1kb3dubG9hZC1kaXI8L3JlcGxhY2VhYmxlPi8iCisgICAgIEJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyA9ICIxIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBmZXRjaCBwcm9jZXNzIGluIHRoZSBuZXh0IHN0ZXAsIEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGdhdGhlcnMgdGhlIHNvdXJjZSBmaWxlcyBhbmQgY3JlYXRlcyB0YXJiYWxscyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9wdWxhdGUgWW91ciBEb3dubG9hZHMgRGlyZWN0b3J5IFdpdGhvdXQgQnVpbGRpbmc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBCaXRCYWtlIHRvIGZldGNoIHlvdXIgc291cmNlcyBidXQgaW5oaWJpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IC0tcnVub25seT1mZXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRvd25sb2FkcyBkaXJlY3RvcnkgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0RMX0RJUn08L2ZpbGVuYW1lPikgbm93IGhhcyBhICJzbmFwc2hvdCIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMgaW4gdGhlIGZvcm0gb2YgdGFyYmFsbHMsIHdoaWNoIGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgYmUgdXNlZCBmb3IgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IFJlbW92ZSBBbnkgR2l0IG9yIG90aGVyIFNDTSBTdWJkaXJlY3RvcmllcyBGcm9tIHRoZSBEb3dubG9hZHMgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCwgeW91IGNhbiBjbGVhbiB1cCB5b3VyIGRvd25sb2FkcyBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHJlbW92aW5nIGFueSBHaXQgb3Igb3RoZXIgU291cmNlIENvbnRyb2wgTWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgKFNDTSkgc3ViZGlyZWN0b3JpZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7RExfRElSfS9naXQyLyo8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhbHJlYWR5IGNvbnRhaW4gdGhlc2Ugc3ViZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdXIgZG93bmxvYWRzIGRpcmVjdG9yeSBoYXMgZXZlcnl0aGluZyBpdCBuZWVkcyByZWdhcmRpbmcKKyAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMsIHlvdSBjYW4gY3JlYXRlIHlvdXIgIm93bi1taXJyb3IiIGFuZCBidWlsZAorICAgICAgICAgICAgICAgIHlvdXIgdGFyZ2V0LgorICAgICAgICAgICAgICAgIFVuZGVyc3RhbmQgdGhhdCB5b3UgY2FuIHVzZSB0aGUgZmlsZXMgdG8gYnVpbGQgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgIG9mZmxpbmUgZnJvbSBhbnkgbWFjaGluZSBhbmQgYXQgYW55IHRpbWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBidWlsZCB5b3VyIHRhcmdldCB1c2luZyB0aGUgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgZG93bmxvYWRzIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2luZyBMb2NhbCBGaWxlcyBPbmx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNpZGUgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU09VUkNFX01JUlJPUl9VUkwnPjxmaWxlbmFtZT5TT1VSQ0VfTUlSUk9SX1VSTDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdCB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtb3duLW1pcnJvcnMnPjxmaWxlbmFtZT5vd24tbWlycm9yczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLCBhbmQgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItYmItQkJfTk9fTkVUV09SSyc+PGZpbGVuYW1lPkJCX05PX05FVFdPUks8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNPVVJDRV9NSVJST1JfVVJMID89ICJmaWxlOi8vL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXItZG93bmxvYWQtZGlyPC9yZXBsYWNlYWJsZT4vIgorICAgICBJTkhFUklUICs9ICJvd24tbWlycm9ycyIKKyAgICAgQkJfTk9fTkVUV09SSyA9ICIxIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TT1VSQ0VfTUlSUk9SX1VSTDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm93bi1taXJyb3I8L2ZpbGVuYW1lPiBjbGFzcyBzZXQgdXAgdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIHRoZSBkb3dubG9hZHMgZGlyZWN0b3J5IGFzIHlvdXIgIm93biBtaXJyb3IiLgorICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT5CQl9OT19ORVRXT1JLPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG1ha2VzIHN1cmUgdGhhdCBCaXRCYWtlJ3MgZmV0Y2hpbmcgcHJvY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RlcCAzIHN0YXlzIGxvY2FsLCB3aGljaCBtZWFucyBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyICJvd24tbWlycm9yIiBhcmUgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhcnQgV2l0aCBhIENsZWFuIEJ1aWxkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHN0YXJ0IHdpdGggYSBjbGVhbiBidWlsZCBieSByZW1vdmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb3IgdXNpbmcgYSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFlvdXIgVGFyZ2V0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgQml0QmFrZSB0byBidWlsZCB5b3VyIHRhcmdldDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGNvbXBsZXRlcyB1c2luZyB0aGUga25vd24gbG9jYWwgInNuYXBzaG90IiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIGZyb20geW91ciBtaXJyb3IuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIHRhcmJhbGxzIGZvciB5b3VyICJzbmFwc2hvdCIgb2Ygc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBhcmUgaW4gdGhlIGRvd25sb2FkcyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgb2ZmbGluZSBidWlsZCBkb2VzIG5vdCB3b3JrIGlmIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0IHRvIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgc2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BVVRPUkVWJz48ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDUkVWID0gIiR7QVVUT1JFVn0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYSByZWNpcGUgc2V0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0FVVE9SRVZ9PC9maWxlbmFtZT4sIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NlcyB0aGUgbmV0d29yayBpbiBhbiBhdHRlbXB0IHRvIGRldGVybWluZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3QgdmVyc2lvbiBvZiBzb2Z0d2FyZSBmcm9tIHRoZSBTQ00uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCByZWNpcGVzIHRoYXQgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPiBhcmUgY3VzdG9tIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgcmVzaWRlIGluIHB1YmxpYyByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3VhbGx5IGRvIG5vdCB1c2UgPGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgZG8gaGF2ZSByZWNpcGVzIHRoYXQgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPiwgeW91IGNhbiB0YWtlIHN0ZXBzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgdXNlIHRoZSByZWNpcGVzIGluIGFuIG9mZmxpbmUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhIGNvbmZpZ3VyYXRpb24gZ2VuZXJhdGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+YnVpbGQgaGlzdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGNvbGxlY3QgdGhlIHN0b3JlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB2YWx1ZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCdzIGhpc3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29sbGVjdGluZyB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdidWlsZC1oaXN0b3J5LXBhY2thZ2UtaW5mb3JtYXRpb24nPkJ1aWxkIEhpc3RvcnkgUGFja2FnZSBJbmZvcm1hdGlvbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9ucywgeW91IGNhbiBtb2RpZnkgdGhvc2UgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRvIHNldCA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzcGVlZGluZy11cC1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPlNwZWVkaW5nIFVwIGEgQnVpbGQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQnVpbGQgdGltZSBjYW4gYmUgYW4gaXNzdWUuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgc2ltcGxlIGNvbnRyb2xzIHRvIHRyeSBhbmQgbWF4aW1pemUKKyAgICAgICAgICAgIGJ1aWxkIGVmZmljaWVuY3kuCisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzCisgICAgICAgICAgICByZXN1bHQgaW4gdGhlIG1vc3QgZWZmaWNpZW50IGJ1aWxkIHRpbWVzIHdoZW4gZGVhbGluZyB3aXRoIHNpbmdsZQorICAgICAgICAgICAgc29ja2V0IHN5c3RlbXMgKGkuZS4gYSBzaW5nbGUgQ1BVKS4KKyAgICAgICAgICAgIElmIHlvdSBoYXZlIG11bHRpcGxlIENQVXMsIHlvdSBtaWdodCB0cnkgaW5jcmVhc2luZyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgdmFsdWVzIHRvIGdhaW4gbW9yZSBzcGVlZC4KKyAgICAgICAgICAgIFNlZSB0aGUgZGVzY3JpcHRpb25zIGluIHRoZSBnbG9zc2FyeSBmb3IgZWFjaCB2YXJpYWJsZSBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb246CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCX05VTUJFUl9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPjo8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyBCaXRCYWtlIHNpbXVsdGFuZW91c2x5IGV4ZWN1dGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L2ZpbGVuYW1lPjo8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIHRocmVhZHMgQml0QmFrZSB1c2VzIGR1cmluZyBwYXJzaW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gb3JkZXIgdG8gc3BlY2lmeSBwYXJhbGxlbCBjb21waWxhdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRUlOU1QnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFSU5TVDwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gb3JkZXIgdG8gc3BlY2lmeSBwYXJhbGxlbCBpbnN0YWxsYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBBcyBtZW50aW9uZWQsIHRoZXNlIHZhcmlhYmxlcyBhbGwgc2NhbGUgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3IKKyAgICAgICAgICAgIGNvcmVzIGF2YWlsYWJsZSBvbiB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgRm9yIHNpbmdsZSBzb2NrZXQgc3lzdGVtcywgdGhpcyBhdXRvLXNjYWxpbmcgZW5zdXJlcyB0aGF0IHRoZSBidWlsZAorICAgICAgICAgICAgc3lzdGVtIGZ1bmRhbWVudGFsbHkgdGFrZXMgYWR2YW50YWdlIG9mIHBvdGVudGlhbCBwYXJhbGxlbCBvcGVyYXRpb25zCisgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkIGJhc2VkIG9uIHRoZSBidWlsZCBtYWNoaW5lJ3MgY2FwYWJpbGl0aWVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGFkZGl0aW9uYWwgZmFjdG9ycyB0aGF0IGNhbiBhZmZlY3QgYnVpbGQgc3BlZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmlsZSBzeXN0ZW0gdHlwZToKKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgc3lzdGVtIHR5cGUgdGhhdCB0aGUgYnVpbGQgaXMgYmVpbmcgcGVyZm9ybWVkIG9uIGNhbgorICAgICAgICAgICAgICAgICAgICBhbHNvIGluZmx1ZW5jZSBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPiBpcyByZWNvbW1lbmRlZCBhcyBjb21wYXJlZAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+ZXh0MjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGR1ZSB0byA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGltcHJvdmVkIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZXh0ZW50cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxpbmcgdGhlIHVwZGF0aW5nIG9mIGFjY2VzcyB0aW1lIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2F0aW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+IG1vdW50IG9wdGlvbiBwcmV2ZW50cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGZyb20gdXBkYXRpbmcgZmlsZSBhbmQgZGlyZWN0b3J5IGFjY2VzcyB0aW1lcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIGEgbG9uZ2VyIGNvbW1pdDoKKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlICJjb21taXQ9IiBtb3VudCBvcHRpb24gaW5jcmVhc2VzIHRoZSBpbnRlcnZhbAorICAgICAgICAgICAgICAgICAgICBpbiBzZWNvbmRzIGJldHdlZW4gZGlzayBjYWNoZSB3cml0ZXMuCisgICAgICAgICAgICAgICAgICAgIENoYW5naW5nIHRoaXMgaW50ZXJ2YWwgZnJvbSB0aGUgZml2ZSBzZWNvbmQgZGVmYXVsdCB0bworICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcgbG9uZ2VyIGluY3JlYXNlcyB0aGUgcmlzayBvZiBkYXRhIGxvc3MgYnV0IGRlY3JlYXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgbmVlZCB0byB3cml0ZSB0byB0aGUgZGlzaywgdGh1cyBpbmNyZWFzaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDaG9vc2luZyB0aGUgcGFja2FnaW5nIGJhY2tlbmQ6CisgICAgICAgICAgICAgICAgICAgIE9mIHRoZSBhdmFpbGFibGUgcGFja2FnaW5nIGJhY2tlbmRzLCBJUEsgaXMgdGhlIGZhc3Rlc3QuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgc2VsZWN0aW5nIGEgc2luZ3VsYXIgcGFja2FnaW5nIGJhY2tlbmQgYWxzbworICAgICAgICAgICAgICAgICAgICBoZWxwcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+dG1wZnM8L2ZpbGVuYW1lPiBmb3IKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXMgYSB0ZW1wb3JhcnkgZmlsZSBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgY2FuIGhlbHAgc3BlZWQgdXAgdGhlIGJ1aWxkLCB0aGUgYmVuZWZpdHMgYXJlCisgICAgICAgICAgICAgICAgICAgIGxpbWl0ZWQgZHVlIHRvIHRoZSBjb21waWxlciB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXBpcGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBnb2VzIHRvIHNvbWUgbGVuZ3RocyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3luYygpPC9maWxlbmFtZT4gY2FsbHMgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSBzeXN0ZW0gb24gdGhlIHByaW5jaXBsZSB0aGF0IGlmIHRoZXJlIHdhcyBhIHNpZ25pZmljYW50CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGNvdWxkIGVhc2lseSBiZSByZWJ1aWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICAgICAgSW5oZXJpdGluZyB0aGlzIGNsYXNzIGhhcyBzaG93biB0byBzcGVlZCB1cCBidWlsZHMgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW50bHkgbG93ZXIgYW1vdW50cyBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgZGF0YQorICAgICAgICAgICAgICAgICAgICBjYWNoZSBhcyB3ZWxsIGFzIG9uIGRpc2suCisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyBhbHNvIG1ha2VzIGNsZWFudXAgb2YKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmFzdGVyLCBhdCB0aGUgZXhwZW5zZSBvZiBiZWluZyBlYXNpbHkgYWJsZSB0byBkaXZlIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBGaWxlIHN5c3RlbSBtYWludGFpbmVycyBoYXZlIHJlY29tbWVuZGVkIHRoYXQgdGhlIGZhc3Rlc3Qgd2F5CisgICAgICAgICAgICAgICAgICAgIHRvIGNsZWFuIHVwIGxhcmdlIG51bWJlcnMgb2YgZmlsZXMgaXMgdG8gcmVmb3JtYXQgcGFydGl0aW9ucworICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBkZWxldGUgZmlsZXMgZHVlIHRvIHRoZSBsaW5lYXIgbmF0dXJlIG9mCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMsIG9mIGNvdXJzZSwgYXNzdW1lcyB5b3Ugc3RydWN0dXJlIHRoZSBkaXNrIHBhcnRpdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtcyBpbiBhIHdheSB0aGF0IHRoaXMgaXMgcHJhY3RpY2FsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgbGlzdCwgeW91IHNob3VsZCBrZWVwIHNvbWUgdHJhZGUgb2ZmcyBpbgorICAgICAgICAgICAgbWluZCB0aGF0IGNhbiBoZWxwIHlvdSBzcGVlZCB1cCB0aGUgYnVpbGQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIGl0ZW1zIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWlnaHQgbm90IG5lZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXhjbHVkZSBkZWJ1ZyBzeW1ib2xzIGFuZCBvdGhlciBkZWJ1ZyBpbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBuZWVkIHRoZXNlIHN5bWJvbHMgYW5kIG90aGVyIGRlYnVnIGluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgdGhlIDxmaWxlbmFtZT4qLWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UgZ2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBjYW4gc3BlZWQgdXAgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRpc2FibGUgdGhpcyBnZW5lcmF0aW9uIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnPjxmaWxlbmFtZT5JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxlIHN0YXRpYyBsaWJyYXJ5IGdlbmVyYXRpb24gZm9yIHJlY2lwZXMgZGVyaXZlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRpc2FibGUgc3RhdGljCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBhbmQgc3RpbGwgcHJvdmlkZSBhbiBvdmVycmlkZSB0byBoYW5kbGUgZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTVEFUSUNMSUJDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCisgICAgIFNUQVRJQ0xJQkNPTkZfc3FsaXRlMy1uYXRpdmUgPSAiIgorICAgICBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBVElDTElCQ09ORn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHJlY2lwZXMgbmVlZCBzdGF0aWMgbGlicmFyaWVzIGluIG9yZGVyIHRvIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IChlLmcuIDxmaWxlbmFtZT5wc2V1ZG8tbmF0aXZlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgPGZpbGVuYW1lPnNxbGl0ZTMtbmF0aXZlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVycmlkZXMsIGFzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBhY2NvdW50IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBraW5kcyBvZiBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcGFja2FnZXMgaGF2ZSBwYWNrYWdpbmcgY29kZSB0aGF0IGFzc3VtZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbmNlIG9mIHRoZSBzdGF0aWMgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IG1pZ2h0IG5lZWQgdG8gZXhjbHVkZSB0aGVtIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtd29ya2luZy13aXRoLWxpYnJhcmllcyI+CisgICAgICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggTGlicmFyaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIExpYnJhcmllcyBhcmUgYW4gaW50ZWdyYWwgcGFydCBvZiB5b3VyIHN5c3RlbS4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSBjb21tb24gcHJhY3RpY2VzIHlvdSBtaWdodCBmaW5kCisgICAgICAgICAgICBoZWxwZnVsIHdoZW4gd29ya2luZyB3aXRoIGxpYnJhcmllcyB0byBidWlsZCB5b3VyIHN5c3RlbToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J2luY2x1ZGluZy1zdGF0aWMtbGlicmFyeS1maWxlcyc+SG93IHRvIGluY2x1ZGUgc3RhdGljIGxpYnJhcnkgZmlsZXM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSdjb21iaW5pbmctbXVsdGlwbGUtdmVyc2lvbnMtbGlicmFyeS1maWxlcy1pbnRvLW9uZS1pbWFnZSc+SG93IHRvIHVzZSB0aGUgTXVsdGlsaWIgZmVhdHVyZSB0byBjb21iaW5lIG11bHRpcGxlIHZlcnNpb25zIG9mIGxpYnJhcnkgZmlsZXMgaW50byBhIHNpbmdsZSBpbWFnZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J2luc3RhbGxpbmctbXVsdGlwbGUtdmVyc2lvbnMtb2YtdGhlLXNhbWUtbGlicmFyeSc+SG93IHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgbGlicmFyeSBpbiBwYXJhbGxlbCBvbiB0aGUgc2FtZSBzeXN0ZW08L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW5jbHVkaW5nLXN0YXRpYy1saWJyYXJ5LWZpbGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5JbmNsdWRpbmcgU3RhdGljIExpYnJhcnkgRmlsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGJ1aWxkaW5nIGEgbGlicmFyeSBhbmQgdGhlIGxpYnJhcnkgb2ZmZXJzIHN0YXRpYyBsaW5raW5nLCB5b3UgY2FuIGNvbnRyb2wKKyAgICAgICAgICAgICAgICB3aGljaCBzdGF0aWMgbGlicmFyeSBmaWxlcyAoPGZpbGVuYW1lPiouYTwvZmlsZW5hbWU+IGZpbGVzKSBnZXQgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgYnVpbHQgbGlicmFyeS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZCA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFU18qPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBkZWZpbmUgaG93IGZpbGVzIGluc3RhbGxlZAorICAgICAgICAgICAgICAgIGJ5IHRoZSA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+IHRhc2sgYXJlIHBhY2thZ2VkLgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbmNsdWRlcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1BOfS1zdGF0aWNkZXY8L2ZpbGVuYW1lPiwgd2hpY2ggcmVwcmVzZW50cyBhbGwgc3RhdGljIGxpYnJhcnkgZmlsZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNvbWUgcHJldmlvdXNseSByZWxlYXNlZCB2ZXJzaW9ucyBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIHRoZSBzdGF0aWMgbGlicmFyeSBmaWxlcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1BOfS1kZXY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIHBhcnQgb2YgdGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlLCB3aGVyZQorICAgICAgICAgICAgICAgIHlvdSBjYW4gc2VlIGhvdyB0aGUgc3RhdGljIGxpYnJhcnkgZmlsZXMgYXJlIGRlZmluZWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFX0JFRk9SRV9QTiA/PSAiIgorICAgICBQQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRldiAke1BOfS1kb2MgJHtQTn0tbG9jYWxlICR7UEFDS0FHRV9CRUZPUkVfUE59ICR7UE59IgorICAgICBQQUNLQUdFU19EWU5BTUlDID0gIl4ke1BOfS1sb2NhbGUtLioiCisgICAgIEZJTEVTID0gIiIKKworICAgICBGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke3NiaW5kaXJ9LyogJHtsaWJleGVjZGlyfS8qICR7bGliZGlyfS9saWIqJHtTT0xJQlN9IFwKKyAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSAke3NoYXJlZHN0YXRlZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vKiAke2Jhc2Vfc2JpbmRpcn0vKiBcCisgICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9Lyoke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAke2Jhc2VfcHJlZml4fS9saWIvdWRldi9ydWxlcy5kICR7cHJlZml4fS9saWIvdWRldi9ydWxlcy5kIFwKKyAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gJHtsaWJkaXJ9LyR7QlBOfS8qIFwKKyAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9waXhtYXBzICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIFwKKyAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pZGwgJHtkYXRhZGlyfS9vbWYgJHtkYXRhZGlyfS9zb3VuZHMgXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0vYm9ub2JvL3NlcnZlcnMiCisKKyAgICAgRklMRVNfJHtQTn0tYmluID0gIiR7YmluZGlyfS8qICR7c2JpbmRpcn0vKiIKKworICAgICBGSUxFU18ke1BOfS1kb2MgPSAiJHtkb2NkaXJ9ICR7bWFuZGlyfSAke2luZm9kaXJ9ICR7ZGF0YWRpcn0vZ3RrLWRvYyBcCisgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUvaGVscCIKKyAgICAgU0VDVElPTl8ke1BOfS1kb2MgPSAiZG9jIgorCisgICAgIEZJTEVTX1NPTElCU0RFViA/PSAiJHtiYXNlX2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIKKyAgICAgRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtGSUxFU19TT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLm8gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2RhdGFkaXJ9L3BrZ2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2FjbG9jYWwgJHtiYXNlX2xpYmRpcn0vKi5vIFwKKyAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke0JQTn0vKi5sYSAke2Jhc2VfbGliZGlyfS8qLmxhIgorICAgICBTRUNUSU9OXyR7UE59LWRldiA9ICJkZXZlbCIKKyAgICAgQUxMT1dfRU1QVFlfJHtQTn0tZGV2ID0gIjEiCisgICAgIFJERVBFTkRTXyR7UE59LWRldiA9ICIke1BOfSAoPSAke0VYVEVORFBLR1Z9KSIKKworICAgICBGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLmEgJHtsaWJkaXJ9LyR7QlBOfS8qLmEiCisgICAgIFNFQ1RJT05fJHtQTn0tc3RhdGljZGV2ID0gImRldmVsIgorICAgICBSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJjb21iaW5pbmctbXVsdGlwbGUtdmVyc2lvbnMtbGlicmFyeS1maWxlcy1pbnRvLW9uZS1pbWFnZSI+CisgICAgICAgICAgICA8dGl0bGU+Q29tYmluaW5nIE11bHRpcGxlIFZlcnNpb25zIG9mIExpYnJhcnkgRmlsZXMgaW50byBPbmUgSW1hZ2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIG9mZmVycyB0aGUgYWJpbGl0eSB0byBidWlsZCBsaWJyYXJpZXMgd2l0aCBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICB0YXJnZXQgb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmUgZm9ybWF0cyBhbmQgY29tYmluZSB0aGVzZSB0b2dldGhlcgorICAgICAgICAgICAgICAgIGludG8gb25lIHN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGxpbmsgZGlmZmVyZW50IGJpbmFyaWVzIGluIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgIGFnYWluc3QgdGhlIGRpZmZlcmVudCBsaWJyYXJpZXMgYXMgbmVlZGVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuCisgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGlzIGNhbGxlZCAiTXVsdGlsaWIuIgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbiBleGFtcGxlIHdvdWxkIGJlIHdoZXJlIHlvdSBoYXZlIG1vc3Qgb2YgYSBzeXN0ZW0gY29tcGlsZWQgaW4gMzItYml0CisgICAgICAgICAgICAgICAgbW9kZSB1c2luZyAzMi1iaXQgbGlicmFyaWVzLCBidXQgeW91IGhhdmUgc29tZXRoaW5nIGxhcmdlLCBsaWtlIGEgZGF0YWJhc2UKKyAgICAgICAgICAgICAgICBlbmdpbmUsIHRoYXQgbmVlZHMgdG8gYmUgYSA2NC1iaXQgYXBwbGljYXRpb24gYW5kIHVzZXMgNjQtYml0IGxpYnJhcmllcy4KKyAgICAgICAgICAgICAgICBNdWx0aWxpYiBhbGxvd3MgeW91IHRvIGdldCB0aGUgYmVzdCBvZiBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGxpYnJhcmllcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hpbGUgdGhlIE11bHRpbGliIGZlYXR1cmUgaXMgbW9zdCBjb21tb25seSB1c2VkIGZvciAzMiBhbmQgNjQtYml0IGRpZmZlcmVuY2VzLAorICAgICAgICAgICAgICAgIHRoZSBhcHByb2FjaCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgZmFjaWxpdGF0ZXMgZGlmZmVyZW50IHRhcmdldCBvcHRpbWl6YXRpb25zLgorICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBjb21waWxlIHNvbWUgYmluYXJpZXMgdG8gdXNlIG9uZSBzZXQgb2YgbGlicmFyaWVzIGFuZCBvdGhlciBiaW5hcmllcworICAgICAgICAgICAgICAgIHRvIHVzZSBhIGRpZmZlcmVudCBzZXQgb2YgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgIFRoZSBsaWJyYXJpZXMgY291bGQgZGlmZmVyIGluIGFyY2hpdGVjdHVyZSwgY29tcGlsZXIgb3B0aW9ucywgb3Igb3RoZXIKKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIGV4YW1wbGVzIGV4aXN0IGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNrZWxldG9uPC9maWxlbmFtZT4gbGF5ZXIgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb25mL211bHRpbGliLWV4YW1wbGUuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb25mL211bHRpbGliLWV4YW1wbGUyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cmVjaXBlcy1tdWx0aWxpYi9pbWFnZXMvY29yZS1pbWFnZS1tdWx0aWxpYi1leGFtcGxlLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncHJlcGFyaW5nLXRvLXVzZS1tdWx0aWxpYic+CisgICAgICAgICAgICAgICAgPHRpdGxlPlByZXBhcmluZyB0byBVc2UgTXVsdGlsaWI8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZXItc3BlY2lmaWMgcmVxdWlyZW1lbnRzIGRyaXZlIHRoZSBNdWx0aWxpYiBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZXJlIGlzIG5vIG9uZSAib3V0LW9mLXRoZS1ib3giIGNvbmZpZ3VyYXRpb24gdGhhdCBsaWtlbHkKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIHRvIG1lZXQgeW91ciBuZWVkcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gZW5hYmxlIE11bHRpbGliLCB5b3UgZmlyc3QgbmVlZCB0byBlbnN1cmUgeW91ciByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgICAgIE1hbnkgc3RhbmRhcmQgcmVjaXBlcyBhcmUgYWxyZWFkeSBleHRlbmRlZCBhbmQgc3VwcG9ydCBtdWx0aXBsZSBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hlY2sgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NvbmYvbXVsdGlsaWIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+IHRvIHNlZSBob3cgdGhpcyBpcworICAgICAgICAgICAgICAgICAgICBkb25lIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJDTEFTU0VYVEVORCc+PGZpbGVuYW1lPkJCQ0xBU1NFWFRFTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBFdmVudHVhbGx5LCBhbGwgcmVjaXBlcyB3aWxsIGJlIGNvdmVyZWQgYW5kIHRoaXMgbGlzdCB3aWxsCisgICAgICAgICAgICAgICAgICAgIG5vdCBiZSBuZWVkZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGUgTXVsdGlsaWIgY2xhc3MgZXh0ZW5zaW9uIHdvcmtzIGF1dG9tYXRpY2FsbHkgdG8KKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5kIHRoZSBwYWNrYWdlIG5hbWUgZnJvbSA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtNTFBSRUZJWH0ke1BOfTwvZmlsZW5hbWU+LCB3aGVyZSA8ZmlsZW5hbWU+TUxQUkVGSVg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyB0aGUgcGFydGljdWxhciBtdWx0aWxpYiAoZS5nLiAibGliMzItIiBvciAibGliNjQtIikuCisgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkIHZhcmlhYmxlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJQUk9WSURFUyc+PGZpbGVuYW1lPlJQUk9WSURFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvdWxpbms+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VTX0RZTkFNSUMnPjxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhcmUgYXV0b21hdGljYWxseSBleHRlbmRlZCBieSB0aGUgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGV4dGVuZGluZyBhbnkgbWFudWFsIGNvZGUgaW4gdGhlIHJlY2lwZSwgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke01MUFJFRklYfTwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIGVuc3VyZSB0aG9zZSBuYW1lcyBhcmUgZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGF1dG9tYXRpYyBleHRlbnNpb24gY29kZSByZXNpZGVzIGluIDxmaWxlbmFtZT5tdWx0aWxpYi5iYmNsYXNzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctbXVsdGlsaWInPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBNdWx0aWxpYjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgc2V0IHVwIHRoZSByZWNpcGVzLCB5b3UgbmVlZCB0byBkZWZpbmUgdGhlIGFjdHVhbAorICAgICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBsaWJyYXJpZXMgeW91IHdhbnQgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBhY2NvbXBsaXNoIHRoaXMgdGhyb3VnaCB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24gd291bGQgYmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID0gInFlbXV4ODYtNjQiCisgICAgIHJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCisgICAgIE1VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKKyAgICAgREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gIng4NiIKKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGxpYjMyLWdsaWItMi4wIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBlbmFibGVzIGFuCisgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgbGlicmFyeSBuYW1lZCA8ZmlsZW5hbWU+bGliMzI8L2ZpbGVuYW1lPiBhbG9uZ3NpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgIG5vcm1hbCB0YXJnZXQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gY29tYmluaW5nIHRoZXNlICJsaWIzMiIgYWx0ZXJuYXRpdmVzLCB0aGUgZXhhbXBsZSB1c2VzICJ4ODYiIGZvciB0dW5pbmcuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGlzIHBhcnRpY3VsYXIgdHVuaW5nLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvaWEzMi9hcmNoLWlhMzIuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIHRoZW4gaW5jbHVkZXMgPGZpbGVuYW1lPmxpYjMyLWdsaWItMi4wPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW4gYWxsIHRoZSBpbWFnZXMsIHdoaWNoIGlsbHVzdHJhdGVzIG9uZSBtZXRob2Qgb2YgaW5jbHVkaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgbGlicmFyeSBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhIG5vcm1hbCBpbWFnZSBidWlsZCB0byBpbmNsdWRlIHRoaXMgZGVwZW5kZW5jeSwKKyAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBidWlsZCBNdWx0aWxpYiBwYWNrYWdlcyBzcGVjaWZpY2FsbHkgd2l0aCBhIGNvbW1hbmQgbGlrZSB0aGlzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBsaWIzMi1nbGliLTIuMAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nYWRkaXRpb25hbC1pbXBsZW1lbnRhdGlvbi1kZXRhaWxzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QWRkaXRpb25hbCBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBHZW5lcmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXMgd2VsbCBhcyBkZXRhaWxzIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW1zIGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBleGlzdCByZWdhcmRsZXNzCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSB0eXBpY2FsIGNvbnZlbnRpb24gdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgZXh0ZW5zaW9uIGNvZGUgYXMgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpbGliIGFzc3VtZXMgdGhhdCBhbGwgcGFja2FnZSBuYW1lcyBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbiA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhhdCBjb252ZW50aW9uIGlzIG5vdCBmb2xsb3dlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiBhcHBlYXJzIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1pZGRsZSBvciB0aGUgZW5kIG9mIGEgbmFtZSwgcHJvYmxlbXMgb2NjdXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRBUkdFVF9WRU5ET1InPjxmaWxlbmFtZT5UQVJHRVRfVkVORE9SPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIHVuZGVyIE11bHRpbGliIHdpbGwgYmUgZXh0ZW5kZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLTxyZXBsYWNlYWJsZT52ZW5kb3I8L3JlcGxhY2VhYmxlPm1sPHJlcGxhY2VhYmxlPm11bHRpbGliPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gIi1wb2t5bWxsaWIzMiIgZm9yIGEgImxpYjMyIiBNdWx0aWxpYiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9reSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBzbGlnaHRseSB1bndpZWxkeSBjb250cmFjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoYXQgYW55ICItIiBjaGFyYWN0ZXJzIGluIHRoZSB2ZW5kb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgcHJlc2VudGx5IGJyZWFrIEF1dG9jb25mJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlnLnN1YjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciBzZXBhcmF0b3JzIGFyZSBwcm9ibGVtYXRpYyBmb3IgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgUlBNIFBhY2thZ2UgTWFuYWdlbWVudCBTeXN0ZW0sIHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscworICAgICAgICAgICAgICAgICAgICBleGlzdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHVuaXF1ZSBhcmNoaXRlY3R1cmUgaXMgZGVmaW5lZCBmb3IgdGhlIE11bHRpbGliIHBhY2thZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggY3JlYXRpbmcgYSB1bmlxdWUgZGVwbG95IGZvbGRlciB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3JwbTwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIDxmaWxlbmFtZT5saWIzMjwvZmlsZW5hbWU+IGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4Ni02NDwvZmlsZW5hbWU+IGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwb3NzaWJsZSBhcmNoaXRlY3R1cmVzIGluIHRoZSBzeXN0ZW0gYXJlICJhbGwiLCAicWVtdXg4Nl82NCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpYjMyX3FlbXV4ODZfNjQiLCBhbmQgImxpYjMyX3g4NiIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT4ke01MUFJFRklYfTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHN0cmlwcGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiBkdXJpbmcgUlBNIHBhY2thZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtaW5nIGZvciBhIG5vcm1hbCBSUE0gcGFja2FnZSBhbmQgYSBNdWx0aWxpYiBSUE0gcGFja2FnZSBpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtNjQ8L2ZpbGVuYW1lPiBzeXN0ZW0gcmVzb2x2ZXMgdG8gc29tZXRoaW5nIHNpbWlsYXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC00LjEtcjIueDg2XzY0LnJwbTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLTQuMS5yMi5saWIzMl94ODYucnBtPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGVuIGluc3RhbGxpbmcgYSBNdWx0aWxpYiBpbWFnZSwgdGhlIFJQTSBiYWNrZW5kIGZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbHMgdGhlIGJhc2UgaW1hZ2UgYW5kIHRoZW4gaW5zdGFsbHMgdGhlIE11bHRpbGliIGxpYnJhcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgYnVpbGQgc3lzdGVtIHJlbGllcyBvbiBSUE0gdG8gcmVzb2x2ZSB0aGUgaWRlbnRpY2FsIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byAob3IgbW9yZSkgTXVsdGlsaWIgcGFja2FnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIElQSyBQYWNrYWdlIE1hbmFnZW1lbnQgU3lzdGVtLCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgZXhpc3Q6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT4ke01MUFJFRklYfTwvZmlsZW5hbWU+IGlzIG5vdCBzdHJpcHBlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4gZHVyaW5nIElQSyBwYWNrYWdpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWluZyBmb3IgYSBub3JtYWwgUlBNIHBhY2thZ2UgYW5kIGEgTXVsdGlsaWIgSVBLIHBhY2thZ2UgaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LTY0PC9maWxlbmFtZT4gc3lzdGVtIHJlc29sdmVzIHRvIHNvbWV0aGluZyBsaWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2hfNC4xLXIyLng4Nl82NC5pcGs8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliMzItYmFzaF80LjEtcndfeDg2LmlwazwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIElQSyBkZXBsb3kgZm9sZGVyIGlzIG5vdCBtb2RpZmllZCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7TUxQUkVGSVh9PC9maWxlbmFtZT4gYmVjYXVzZSBwYWNrYWdlcyB3aXRoIGFuZCB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE11bHRpbGliIGZlYXR1cmUgY2FuIGV4aXN0IGluIHRoZSBzYW1lIGZvbGRlciBkdWUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4gZGlmZmVyZW5jZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SVBLIGRlZmluZXMgYSBzYW5pdHkgY2hlY2sgZm9yIE11bHRpbGliIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIGNlcnRhaW4gcnVsZXMgZm9yIGZpbGUgY29tcGFyaXNvbiwgb3ZlcnJpZGRlbiwgZXRjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW5zdGFsbGluZy1tdWx0aXBsZS12ZXJzaW9ucy1vZi10aGUtc2FtZS1saWJyYXJ5Jz4KKyAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIE11bHRpcGxlIFZlcnNpb25zIG9mIHRoZSBTYW1lIExpYnJhcnk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTaXR1YXRpb25zIGNhbiBleGlzdCB3aGVyZSB5b3UgbmVlZCB0byBpbnN0YWxsIGFuZCB1c2UKKyAgICAgICAgICAgICAgICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBsaWJyYXJ5IG9uIHRoZSBzYW1lIHN5c3RlbQorICAgICAgICAgICAgICAgIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgICAgICAgICAgVGhlc2Ugc2l0dWF0aW9ucyBhbG1vc3QgYWx3YXlzIGV4aXN0IHdoZW4gYSBsaWJyYXJ5IEFQSQorICAgICAgICAgICAgICAgIGNoYW5nZXMgYW5kIHlvdSBoYXZlIG11bHRpcGxlIHBpZWNlcyBvZiBzb2Z0d2FyZSB0aGF0CisgICAgICAgICAgICAgICAgZGVwZW5kIG9uIHRoZSBzZXBhcmF0ZSB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgICAgICBUbyBhY2NvbW1vZGF0ZSB0aGVzZSBzaXR1YXRpb25zLCB5b3UgY2FuIGluc3RhbGwgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBsaWJyYXJ5IGluIHBhcmFsbGVsIG9uIHRoZSBzYW1lIHN5c3RlbS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHByb2Nlc3MgaXMgc3RyYWlnaHRmb3J3YXJkIGFzIGxvbmcgYXMgdGhlIGxpYnJhcmllcyB1c2UKKyAgICAgICAgICAgICAgICBwcm9wZXIgdmVyc2lvbmluZy4KKyAgICAgICAgICAgICAgICBXaXRoIHByb3Blcmx5IHZlcnNpb25lZCBsaWJyYXJpZXMsIGFsbCB5b3UgbmVlZCB0byBkbyB0bworICAgICAgICAgICAgICAgIGluZGl2aWR1YWxseSBzcGVjaWZ5IHRoZSBsaWJyYXJpZXMgaXMgY3JlYXRlIHNlcGFyYXRlLAorICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlbHkgbmFtZWQgcmVjaXBlcyB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz4gcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICBuYW1lIGluY2x1ZGVzIGEgcG9ydGlvbiB0aGF0IGRpZmZlcmVudGlhdGVzIGVhY2ggbGlicmFyeSB2ZXJzaW9uCisgICAgICAgICAgICAgICAgKGUuZy50aGUgbWFqb3IgcGFydCBvZiB0aGUgdmVyc2lvbiBudW1iZXIpLgorICAgICAgICAgICAgICAgIFRodXMsIGluc3RlYWQgb2YgaGF2aW5nIGEgc2luZ2xlIHJlY2lwZSB0aGF0IGxvYWRzIG9uZSB2ZXJzaW9uCisgICAgICAgICAgICAgICAgb2YgYSBsaWJyYXJ5IChlLmcuIDxmaWxlbmFtZT5jbHV0dGVyPC9maWxlbmFtZT4pLCB5b3UgcHJvdmlkZQorICAgICAgICAgICAgICAgIG11bHRpcGxlIHJlY2lwZXMgdGhhdCByZXN1bHQgaW4gZGlmZmVyZW50IHZlcnNpb25zCisgICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcmllcyB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHR3byByZWNpcGVzIHdvdWxkIGFsbG93IHRoZQorICAgICAgICAgICAgICAgIHR3byBzZXBhcmF0ZSB2ZXJzaW9ucyBvZiB0aGUgPGZpbGVuYW1lPmNsdXR0ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGxpYnJhcnkgdG8gY28tZXhpc3Qgb24gdGhlIHNhbWUgc3lzdGVtOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgY2x1dHRlci0xLjZfMS42LjIwLmJiCisgICAgIGNsdXR0ZXItMS44XzEuOC40LmJiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgeW91IGhhdmUgb3RoZXIgcmVjaXBlcyB0aGF0IGRlcGVuZCBvbiBhIGdpdmVuCisgICAgICAgICAgICAgICAgbGlicmFyeSwgeW91IG5lZWQgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBjcmVhdGUgdGhlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBzYW1lIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGhhdmUgYSByZWNpcGUKKyAgICAgICAgICAgICAgICBkZXBlbmQgb24gdGhlIDEuOCB2ZXJzaW9uIG9mIHRoZSA8ZmlsZW5hbWU+Y2x1dHRlcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgbGlicmFyeSwgdXNlIHRoZSBmb2xsb3dpbmcgaW4geW91ciByZWNpcGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBFTkRTID0gImNsdXR0ZXItMS44IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZy14MzItcHNhYmknPgorICAgICAgICA8dGl0bGU+VXNpbmcgeDMyIHBzQUJJPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIHgzMiBwcm9jZXNzb3Itc3BlY2lmaWMgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZQorICAgICAgICAgICAgKDx1bGluayB1cmw9J2h0dHBzOi8vc29mdHdhcmUuaW50ZWwuY29tL2VuLXVzL25vZGUvNjI4OTQ4Jz54MzIgcHNBQkk8L3VsaW5rPikKKyAgICAgICAgICAgIGlzIGEgbmF0aXZlIDMyLWJpdCBwcm9jZXNzb3Itc3BlY2lmaWMgQUJJIGZvcgorICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gNjQgKHg4Ni02NCkKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICBBbiBBQkkgZGVmaW5lcyB0aGUgY2FsbGluZyBjb252ZW50aW9ucyBiZXR3ZWVuIGZ1bmN0aW9ucyBpbiBhCisgICAgICAgICAgICBwcm9jZXNzaW5nIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlIGludGVyZmFjZSBkZXRlcm1pbmVzIHdoYXQgcmVnaXN0ZXJzIGFyZSB1c2VkIGFuZCB3aGF0IHRoZQorICAgICAgICAgICAgc2l6ZXMgYXJlIGZvciB2YXJpb3VzIEMgZGF0YSB0eXBlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU29tZSBwcm9jZXNzaW5nIGVudmlyb25tZW50cyBwcmVmZXIgdXNpbmcgMzItYml0IGFwcGxpY2F0aW9ucyBldmVuCisgICAgICAgICAgICB3aGVuIHJ1bm5pbmcgb24gSW50ZWwgNjQtYml0IHBsYXRmb3Jtcy4KKyAgICAgICAgICAgIENvbnNpZGVyIHRoZSBpMzg2IHBzQUJJLCB3aGljaCBpcyBhIHZlcnkgb2xkIDMyLWJpdCBBQkkgZm9yIEludGVsCisgICAgICAgICAgICA2NC1iaXQgcGxhdGZvcm1zLgorICAgICAgICAgICAgVGhlIGkzODYgcHNBQkkgZG9lcyBub3QgcHJvdmlkZSBlZmZpY2llbnQgdXNlIGFuZCBhY2Nlc3Mgb2YgdGhlCisgICAgICAgICAgICBJbnRlbCA2NC1iaXQgcHJvY2Vzc29yIHJlc291cmNlcywgbGVhdmluZyB0aGUgc3lzdGVtIHVuZGVydXRpbGl6ZWQuCisgICAgICAgICAgICBOb3cgY29uc2lkZXIgdGhlIHg4Nl82NCBwc0FCSS4KKyAgICAgICAgICAgIFRoaXMgQUJJIGlzIG5ld2VyIGFuZCB1c2VzIDY0LWJpdHMgZm9yIGRhdGEgc2l6ZXMgYW5kIHByb2dyYW0KKyAgICAgICAgICAgIHBvaW50ZXJzLgorICAgICAgICAgICAgVGhlIGV4dHJhIGJpdHMgaW5jcmVhc2UgdGhlIGZvb3RwcmludCBzaXplIG9mIHRoZSBwcm9ncmFtcywKKyAgICAgICAgICAgIGxpYnJhcmllcywgYW5kIGFsc28gaW5jcmVhc2VzIHRoZSBtZW1vcnkgYW5kIGZpbGUgc3lzdGVtIHNpemUKKyAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgIEV4ZWN1dGluZyB1bmRlciB0aGUgeDMyIHBzQUJJIGVuYWJsZXMgdXNlciBwcm9ncmFtcyB0byB1dGlsaXplIENQVQorICAgICAgICAgICAgYW5kIHN5c3RlbSByZXNvdXJjZXMgbW9yZSBlZmZpY2llbnRseSB3aGlsZSBrZWVwaW5nIHRoZSBtZW1vcnkKKyAgICAgICAgICAgIGZvb3RwcmludCBvZiB0aGUgYXBwbGljYXRpb25zIGxvdy4KKyAgICAgICAgICAgIEV4dHJhIGJpdHMgYXJlIHVzZWQgZm9yIHJlZ2lzdGVycyBidXQgbm90IGZvciBhZGRyZXNzaW5nIG1lY2hhbmlzbXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHRoZSBmaW5hbCBzcGVjaWZpY2F0aW9ucyBvZiB4MzIgcHNBQkkKKyAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgcGFja2FnZXMgYW5kIGltYWdlcyBpbiB4MzIgcHNBQkkgZm9ybWF0IG9uCisgICAgICAgICAgICAgICAgICAgIHg4Nl82NCBhcmNoaXRlY3R1cmUgdGFyZ2V0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHN1Y2Nlc3NmdWxseSBidWlsZCByZWNpcGVzIHdpdGggdGhlIHgzMiB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgYW5kIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJQTSBQYWNrYWdlIE1hbmFnZXIgKFJQTSkgc3VwcG9ydCBleGlzdHMgZm9yIHgzMiBiaW5hcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBsYXJnZSBpbWFnZXMgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyB1c2UgdGhlIHgzMiBwc0FCSSwgeW91IG5lZWQgdG8gZWRpdCB5b3VyCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGFzCisgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID0gInFlbXV4ODYtNjQiCisgICAgIERFRkFVTFRUVU5FID0gIng4Ni02NC14MzIiCisgICAgIGJhc2VsaWIgPSAiJHtAZC5nZXRWYXIoJ0JBU0VfTElCX3R1bmUtJyArIChkLmdldFZhcignREVGQVVMVFRVTkUnKSBcCisgICAgICAgIG9yICdJTlZBTElEJykpIG9yICdsaWInfSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgc2V0IHVwIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlLCB1c2UgQml0QmFrZSB0bworICAgICAgICAgICAgYnVpbGQgYW4gaW1hZ2UgdGhhdCBzdXBwb3J0cyB0aGUgeDMyIHBzQUJJLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZW5hYmxpbmctZ29iamVjdC1pbnRyb3NwZWN0aW9uLXN1cHBvcnQnPgorICAgICAgICA8dGl0bGU+RW5hYmxpbmcgR09iamVjdCBJbnRyb3NwZWN0aW9uIFN1cHBvcnQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbic+R09iamVjdCBpbnRyb3NwZWN0aW9uPC91bGluaz4KKyAgICAgICAgICAgIGlzIHRoZSBzdGFuZGFyZCBtZWNoYW5pc20gZm9yIGFjY2Vzc2luZyBHT2JqZWN0LWJhc2VkIHNvZnR3YXJlCisgICAgICAgICAgICBmcm9tIHJ1bnRpbWUgZW52aXJvbm1lbnRzLgorICAgICAgICAgICAgR09iamVjdCBpcyBhIGZlYXR1cmUgb2YgdGhlIEdMaWIgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFuIG9iamVjdAorICAgICAgICAgICAgZnJhbWV3b3JrIGZvciB0aGUgR05PTUUgZGVza3RvcCBhbmQgcmVsYXRlZCBzb2Z0d2FyZS4KKyAgICAgICAgICAgIEdPYmplY3QgSW50cm9zcGVjdGlvbiBhZGRzIGluZm9ybWF0aW9uIHRvIEdPYmplY3QgdGhhdCBhbGxvd3MKKyAgICAgICAgICAgIG9iamVjdHMgY3JlYXRlZCB3aXRoaW4gaXQgdG8gYmUgcmVwcmVzZW50ZWQgYWNyb3NzIGRpZmZlcmVudAorICAgICAgICAgICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gY29uc3RydWN0IEdTdHJlYW1lciBwaXBlbGluZXMgdXNpbmcgUHl0aG9uLCBvcgorICAgICAgICAgICAgY29udHJvbCBVUG5QIGluZnJhc3RydWN0dXJlIHVzaW5nIEphdmFzY3JpcHQgYW5kIEdVUG5QLAorICAgICAgICAgICAgR09iamVjdCBpbnRyb3NwZWN0aW9uIGlzIHRoZSBvbmx5IHdheSB0byBkbyBpdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0IGZvciBnZW5lcmF0aW5nCisgICAgICAgICAgICBhbmQgcGFja2FnaW5nIEdPYmplY3QgaW50cm9zcGVjdGlvbiBkYXRhLgorICAgICAgICAgICAgR09iamVjdCBpbnRyb3NwZWN0aW9uIGRhdGEgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICAgICAgICAgIEFQSSBwcm92aWRlZCBieSBsaWJyYXJpZXMgYnVpbHQgb24gdG9wIG9mIEdMaWIgZnJhbWV3b3JrLAorICAgICAgICAgICAgYW5kLCBpbiBwYXJ0aWN1bGFyLCB0aGF0IGZyYW1ld29yaydzIEdPYmplY3QgbWVjaGFuaXNtLgorICAgICAgICAgICAgR09iamVjdCBJbnRyb3NwZWN0aW9uIFJlcG9zaXRvcnkgKEdJUikgZmlsZXMgZ28gdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gcGFja2FnZXMsCisgICAgICAgICAgICA8ZmlsZW5hbWU+dHlwZWxpYjwvZmlsZW5hbWU+IGZpbGVzIGdvIHRvIG1haW4gcGFja2FnZXMgYXMgdGhleQorICAgICAgICAgICAgYXJlIHBhY2thZ2VkIHRvZ2V0aGVyIHdpdGggbGlicmFyaWVzIHRoYXQgYXJlIGludHJvc3BlY3RlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGRhdGEgaXMgZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgc3VjaCBhIGxpYnJhcnksIGJ5IGxpbmtpbmcKKyAgICAgICAgICAgIHRoZSBsaWJyYXJ5IHdpdGggYSBzbWFsbCBleGVjdXRhYmxlIGJpbmFyeSB0aGF0IGFza3MgdGhlIGxpYnJhcnkKKyAgICAgICAgICAgIHRvIGRlc2NyaWJlIGl0c2VsZiwgYW5kIHRoZW4gZXhlY3V0aW5nIHRoZSBiaW5hcnkgYW5kCisgICAgICAgICAgICBwcm9jZXNzaW5nIGl0cyBvdXRwdXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdlbmVyYXRpbmcgdGhpcyBkYXRhIGluIGEgY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnQKKyAgICAgICAgICAgIGlzIGRpZmZpY3VsdCBiZWNhdXNlIHRoZSBsaWJyYXJ5IGlzIHByb2R1Y2VkIGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICBhcmNoaXRlY3R1cmUsIGJ1dCBpdHMgY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCBvbiB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgIFRoaXMgcHJvYmxlbSBpcyBzb2x2ZWQgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBieQorICAgICAgICAgICAgcnVubmluZyB0aGUgY29kZSB0aHJvdWdoIFFFTVUsIHdoaWNoIGFsbG93cyBwcmVjaXNlbHkgdGhhdC4KKyAgICAgICAgICAgIFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lcyBub3QgYWx3YXlzIHdvcmsgcGVyZmVjdGx5IGFzIG1lbnRpb25lZAorICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0na25vd24taXNzdWVzJz5Lbm93biBJc3N1ZXM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2VuYWJsaW5nLXRoZS1nZW5lcmF0aW9uLW9mLWludHJvc3BlY3Rpb24tZGF0YSc+CisgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgdGhlIEdlbmVyYXRpb24gb2YgSW50cm9zcGVjdGlvbiBEYXRhPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRW5hYmxpbmcgdGhlIGdlbmVyYXRpb24gb2YgaW50cm9zcGVjdGlvbiBkYXRhIChHSVIgZmlsZXMpCisgICAgICAgICAgICAgICAgaW4geW91ciBsaWJyYXJ5IHBhY2thZ2UgaW52b2x2ZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1nb2JqZWN0LWludHJvc3BlY3Rpb24nPjxmaWxlbmFtZT5nb2JqZWN0LWludHJvc3BlY3Rpb248L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgaW50cm9zcGVjdGlvbiBpcyBub3QgZGlzYWJsZWQgYW55d2hlcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgb3IgZnJvbSBhbnl0aGluZyB0aGUgcmVjaXBlIGluY2x1ZGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgbWFrZSBzdXJlIHRoYXQgImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIiBpcworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGF0ICJxZW11LXVzZXJtb2RlIiBpcyBub3QgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQ8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgZWl0aGVyIG9mIHRoZXNlIGNvbmRpdGlvbnMgZXhpc3QsIG5vdGhpbmcgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgaGFwcGVuLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRyeSB0byBidWlsZCB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVuY291bnRlciBidWlsZCBlcnJvcnMgdGhhdCBsb29rIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvbWV0aGluZyBpcyB1bmFibGUgdG8gZmluZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGxpYnJhcmllcywgY2hlY2sgd2hlcmUgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBhcmUgbG9jYXRlZCBpbiB0aGUgc291cmNlIHRyZWUgYW5kIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyB0byB0aGUgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBHSVJfRVhUUkFfTElCU19QQVRIID0gIiR7Qn0vPHJlcGxhY2VhYmxlPnNvbWV0aGluZzwvcmVwbGFjZWFibGU+Ly5saWJzIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHJlY2lwZXMgaW4gdGhlIDxmaWxlbmFtZT5vZS1jb3JlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IHRoYXQgdXNlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+R0lSX0VYVFJBX0xJQlNfUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBhbnkgb3RoZXIgZXJyb3JzLCB3aGljaCBwcm9iYWJseSBtZWFuIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGludHJvc3BlY3Rpb24gc3VwcG9ydCBpbiBhIHBhY2thZ2UgaXMgbm90IGVudGlyZWx5CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCwgYW5kIHRodXMgYnJlYWtzIGRvd24gaW4gYSBjcm9zcy1jb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc3VjaCBjYXNlcywgY3VzdG9tLW1hZGUgZml4ZXMgYXJlIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgZ29vZCBwbGFjZSB0byBhc2sgYW5kIHJlY2VpdmUgaGVscCBpbiB0aGVzZSBjYXNlcworICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPllvY3RvIFByb2plY3QgbWFpbGluZyBsaXN0czwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgYSBsaWJyYXJ5IHRoYXQgbm8gbG9uZ2VyIGJ1aWxkcyBhZ2FpbnN0IHRoZSBsYXRlc3QKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlIGFuZCBwcmludHMgaW50cm9zcGVjdGlvbiByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgIGVycm9ycyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciB0aGUgcHJldmlvdXMgcHJvY2VkdXJlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkaXNhYmxpbmctdGhlLWdlbmVyYXRpb24tb2YtaW50cm9zcGVjdGlvbi1kYXRhJz4KKyAgICAgICAgICAgIDx0aXRsZT5EaXNhYmxpbmcgdGhlIEdlbmVyYXRpb24gb2YgSW50cm9zcGVjdGlvbiBEYXRhPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgdGhhdCB5b3UgZG8gbm90IHdhbnQgdG8gZ2VuZXJhdGUKKyAgICAgICAgICAgICAgICBpbnRyb3NwZWN0aW9uIGRhdGEuCisgICAgICAgICAgICAgICAgT3IsIHBlcmhhcHMgUUVNVSBkb2VzIG5vdCB3b3JrIG9uIHlvdXIgYnVpbGQgaG9zdCBhbmQKKyAgICAgICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlIGNvbWJpbmF0aW9uLgorICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIHVzZSBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzIHRvCisgICAgICAgICAgICAgICAgZGlzYWJsZSBHSVIgZmlsZSBnZW5lcmF0aW9uczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyIGRpc3RybyBjb25maWd1cmF0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGlzIHN0YXRlbWVudCBkaXNhYmxlcyBnZW5lcmF0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRyb3NwZWN0aW9uIGRhdGEgdXNpbmcgUUVNVSBidXQgd2lsbCBzdGlsbCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gdG9vbHMgYW5kIGxpYnJhcmllcworICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gYnVpbGRpbmcgdGhlbSBkb2VzIG5vdCByZXF1aXJlIHRoZSB1c2Ugb2YgUUVNVSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBtYWNoaW5lIGNvbmZpZ3VyYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJxZW11LXVzZXJtb2RlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nIHRoaXMgc3RhdGVtZW50IGRpc2FibGVzIHRoZSB1c2Ugb2YgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBwYWNrYWdlcyBmb3IgeW91ciBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudGx5LCB0aGlzIGZlYXR1cmUgaXMgdXNlZCBvbmx5IGJ5IGludHJvc3BlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgYW5kIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmUgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgbWlnaHQgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIGZlYXR1cmVzIGFmZmVjdGVkIGJ5IHRoaXMgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgSWYgeW91IGRpc2FibGUgaW50cm9zcGVjdGlvbiBkYXRhLCB5b3UgY2FuIHN0aWxsCisgICAgICAgICAgICAgICAgb2J0YWluIGl0IHRocm91Z2ggb3RoZXIgbWVhbnMgc3VjaCBhcyBjb3B5aW5nIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgZnJvbSBhIHN1aXRhYmxlIHN5c3Jvb3QsIG9yIGJ5IGdlbmVyYXRpbmcgaXQgb24gdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IGN1cnJlbnRseQorICAgICAgICAgICAgICAgIHByb3ZpZGUgc3BlY2lmaWMgc3VwcG9ydCBmb3IgdGhlc2UgdGVjaG5pcXVlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0aW5nLXRoYXQtaW50cm9zcGVjdGlvbi13b3Jrcy1pbi1hbi1pbWFnZSc+CisgICAgICAgICAgICA8dGl0bGU+VGVzdGluZyB0aGF0IEludHJvc3BlY3Rpb24gV29ya3MgaW4gYW4gSW1hZ2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgdG8gdGVzdCBpZiBnZW5lcmF0aW5nCisgICAgICAgICAgICAgICAgaW50cm9zcGVjdGlvbiBkYXRhIGlzIHdvcmtpbmcgaW4gYW4gaW1hZ2U6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgdGhhdCAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiIGlzIG5vdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhhdCAicWVtdS11c2VybW9kZSIgaXMgbm90IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTGF1bmNoIGEgVGVybWluYWwgYW5kIHRoZW4gc3RhcnQgUHl0aG9uIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXIgdGhlIGZvbGxvd2luZyBpbiB0aGUgdGVybWluYWw6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgID4+PiBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKKyAgICAgPj4+IEdMaWIuZ2V0X2hvc3RfbmFtZSgpCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNvbWV0aGluZyBhIGxpdHRsZSBtb3JlIGFkdmFuY2VkLCBlbnRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cDovL3B5dGhvbi1ndGstMy10dXRvcmlhbC5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L2ludHJvZHVjdGlvbi5odG1sCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2tub3duLWlzc3Vlcyc+CisgICAgICAgICAgICA8dGl0bGU+S25vd24gSXNzdWVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBrbm93IGlzc3VlcyBleGlzdCBmb3IKKyAgICAgICAgICAgICAgICBHT2JqZWN0IEludHJvc3BlY3Rpb24gU3VwcG9ydDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdS1wcGM2NDwvZmlsZW5hbWU+IGltbWVkaWF0ZWx5IGNyYXNoZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBjYW5ub3QgYnVpbGQgaW50cm9zcGVjdGlvbiBkYXRhIG9uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICB4MzIgaXMgbm90IHN1cHBvcnRlZCBieSBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpbnRyb3NwZWN0aW9uIGRhdGEgaXMgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgbXVzbCBjYXVzZXMgdHJhbnNpZW50IEdMaWIgYmluYXJpZXMgdG8gY3Jhc2ggb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbiBmYWlsdXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgZ2VuZXJhdGluZyBpbnRyb3NwZWN0aW9uIGRhdGEgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgUUVNVSBpcyBub3QgYWJsZSB0byBydW4gdGhlIGJpbmFyaWVzIGNvcnJlY3RseSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludHJvc3BlY3Rpb24gaXMgZGlzYWJsZWQgZm9yIHNvbWUgc3BlY2lmaWMgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIHNwZWNpZmljIGFyY2hpdGVjdHVyZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY3I8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJzZWNyZXQ8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2Via2l0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgdXNlcm1vZGUgbWlnaHQgbm90IHdvcmsgcHJvcGVybHkgd2hlbiBydW5uaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA2NC1iaXQgYmluYXJpZXMgdW5kZXIgMzItYml0IGhvc3QgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCAicWVtdW1pcHM2NCIgaXMga25vd24gdG8gbm90IHdvcmsgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGk2ODYuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXYtb3B0aW9uYWxseS11c2luZy1hbi1leHRlcm5hbC10b29sY2hhaW4nPgorICAgICAgICA8dGl0bGU+T3B0aW9uYWxseSBVc2luZyBhbiBFeHRlcm5hbCBUb29sY2hhaW48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gdXNlIGFuIGV4dGVybmFsIHRvb2xjaGFpbiBhcyBwYXJ0IG9mIHlvdXIKKyAgICAgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIGZ1bmRhbWVudGFsIHN0ZXBzIHlvdSBuZWVkIHRvIGFjY29tcGxpc2gKKyAgICAgICAgICAgIGFyZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVuZGVyc3RhbmQgd2hlcmUgdGhlIGluc3RhbGxlZCB0b29sY2hhaW4gcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNhc2VzIHdoZXJlIHlvdSBuZWVkIHRvIGJ1aWxkIHRoZSBleHRlcm5hbCB0b29sY2hhaW4sCisgICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBuZWVkIHRvIHRha2Ugc2VwYXJhdGUgc3RlcHMgdG8gYnVpbGQgYW5kIGluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91IGFkZCB0aGUgbGF5ZXIgdGhhdCBjb250YWlucyB0aGUgdG9vbGNoYWluIHRvCisgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkxBWUVSUyc+PGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIDxmaWxlbmFtZT5FWFRFUk5BTF9UT09MQ0hBSU48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICB0byB0aGUgbG9jYXRpb24gaW4gd2hpY2ggeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYW4gZXh0ZXJuYWwgdG9vbGNoYWluIHVzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgaXMgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+TWVudG9yIEdyYXBoaWNzPC90cmFkZW1hcms+CisgICAgICAgICAgICBTb3VyY2VyeSBHKysgVG9vbGNoYWluLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGF0IHBhcnRpY3VsYXIgbGF5ZXIgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdGh1Yi5jb20vTWVudG9yRW1iZWRkZWQvbWV0YS1zb3VyY2VyeS8nPjwvdWxpbms+LgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGZ1cnRoZXIgaW5mb3JtYXRpb24gYnkgcmVhZGluZyBhYm91dCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UQ01PREUnPjxmaWxlbmFtZT5UQ01PREU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsJ3MgdmFyaWFibGUgZ2xvc3NhcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctcGFydGl0aW9uZWQtaW1hZ2VzLXVzaW5nLXdpYyc+CisgICAgICAgIDx0aXRsZT5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENyZWF0aW5nIGFuIGltYWdlIGZvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgdGFyZ2V0IHVzaW5nIHRoZQorICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHlvdSBjYW4gYm9vdAorICAgICAgICAgICAgdGhhdCBpbWFnZSBhcyBpcyBvbiB5b3VyIGRldmljZS4KKyAgICAgICAgICAgIFBoeXNpY2FsIGRldmljZXMgYWNjZXB0IGFuZCBib290IGltYWdlcyBpbiB2YXJpb3VzIHdheXMgZGVwZW5kaW5nCisgICAgICAgICAgICBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBkZXZpY2UuCisgICAgICAgICAgICBVc3VhbGx5LCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgY2FuIHRlbGwgeW91IHdoYXQgaW1hZ2UKKyAgICAgICAgICAgIGZvcm1hdCB0aGUgZGV2aWNlIHJlcXVpcmVzLgorICAgICAgICAgICAgU2hvdWxkIHlvdXIgZGV2aWNlIHJlcXVpcmUgbXVsdGlwbGUgcGFydGl0aW9ucyBvbiBhbiBTRCBjYXJkLCBmbGFzaCwKKyAgICAgICAgICAgIG9yIGFuIEhERCwgeW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBJbWFnZSBDcmVhdG9yLAorCSAgICAgICAgV2ljLCB0byBjcmVhdGUgdGhlIHByb3Blcmx5IHBhcnRpdGlvbmVkIGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgZ2VuZXJhdGVzIHBhcnRpdGlvbmVkCisgICAgICAgICAgICBpbWFnZXMgZnJvbSBleGlzdGluZyBPcGVuRW1iZWRkZWQgYnVpbGQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgSW1hZ2UgZ2VuZXJhdGlvbiBpcyBkcml2ZW4gYnkgcGFydGl0aW9uaW5nIGNvbW1hbmRzCisgICAgICAgICAgICBjb250YWluZWQgaW4gYW4gT3BlbmVtYmVkZGVkIGtpY2tzdGFydCBmaWxlCisgICAgICAgICAgICAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgc3BlY2lmaWVkIGVpdGhlciBkaXJlY3RseSBvbgorICAgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZSBvciBhcyBvbmUgb2YgYSBzZWxlY3Rpb24gb2YgY2FubmVkCisgICAgICAgICAgICBraWNrc3RhcnQgZmlsZXMgYXMgc2hvd24gd2l0aCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgbGlzdCBpbWFnZXM8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcHJvdmlkZWQta2lja3N0YXJ0LWZpbGUnPlVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBXaGVuIHlvdSBhcHBseSB0aGUgY29tbWFuZCB0byBhIGdpdmVuIHNldCBvZiBidWlsZAorICAgICAgICAgICAgYXJ0aWZhY3RzLCB0aGUgcmVzdWx0IGlzIGFuIGltYWdlIG9yIHNldCBvZiBpbWFnZXMgdGhhdAorICAgICAgICAgICAgY2FuIGJlIGRpcmVjdGx5IHdyaXR0ZW4gb250byBtZWRpYSBhbmQgdXNlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEZvciBhIGtpY2tzdGFydCBmaWxlIHJlZmVyZW5jZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYta2lja3N0YXJ0Jz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgdGhlIGluZnJhc3RydWN0dXJlCisgICAgICAgICAgICBpdCBpcyBiYXNlZCBvbiBpcyBieSBkZWZpbml0aW9uIGluY29tcGxldGUuCisgICAgICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgY29tbWFuZCBpcyB0byBhbGxvdyB0aGUgZ2VuZXJhdGlvbiBvZgorICAgICAgICAgICAgY3VzdG9taXplZCBpbWFnZXMsIGFuZCBhcyBzdWNoLCB3YXMgZGVzaWduZWQgdG8gYmUKKyAgICAgICAgICAgIGNvbXBsZXRlbHkgZXh0ZW5zaWJsZSB0aHJvdWdoIGEgcGx1Z2luIGludGVyZmFjZS4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd3aWMtdXNpbmctdGhlLXdpYy1wbHVnaW4taW50ZXJmYWNlJz5Vc2luZyB0aGUgV2ljIFBsdWdJbiBJbnRlcmZhY2U8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcGx1Z2lucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBXaWMsCisgICAgICAgICAgICBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBoYXZlIGluCisgICAgICAgICAgICBwbGFjZSB0byBydW4gdGhlIHRvb2wsIHByb3ZpZGVzIGluc3RydWN0aW9uIG9uIGhvdyB0byB1c2UKKyAgICAgICAgICAgIHRoZSBXaWMgdXRpbGl0eSwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIFdpYyBwbHVnaW5zCisgICAgICAgICAgICBpbnRlcmZhY2UsIGFuZCBwcm92aWRlcyBzZXZlcmFsIGV4YW1wbGVzIHRoYXQgc2hvdyBob3cgdG8gdXNlCisgICAgICAgICAgICBXaWMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLWJhY2tncm91bmQnPgorICAgICAgICAgICAgPHRpdGxlPkJhY2tncm91bmQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBiYWNrZ3JvdW5kIG9uIHRoZSBXaWMgdXRpbGl0eS4KKyAgICAgICAgICAgICAgICBXaGlsZSBub25lIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgcmVxdWlyZWQgdG8gdXNlCisgICAgICAgICAgICAgICAgV2ljLCB5b3UgbWlnaHQgZmluZCBpdCBpbnRlcmVzdGluZy4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSAiV2ljIiBpcyBkZXJpdmVkIGZyb20gT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZSBDcmVhdG9yIChvZWljKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAib2UiIGRpcGh0aG9uZyBpbiAib2VpYyIgd2FzIHByb21vdGVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbGV0dGVyICJ3IiwgYmVjYXVzZSAib2VpYyIgaXMgYm90aCBkaWZmaWN1bHQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWVtYmVyIGFuZCB0byBwcm9ub3VuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2ljIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBNZWVnbyBJbWFnZSBDcmVhdG9yICg8ZmlsZW5hbWU+bWljPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgV2ljIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICBoZWF2aWx5IG1vZGlmaWVkIHRvIG1ha2UgZGlyZWN0IHVzZSBvZiBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGFydGlmYWN0cyBpbnN0ZWFkIG9mIHBhY2thZ2UgaW5zdGFsbGF0aW9uIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgd2hpY2ggYXJlIGFscmVhZHkgaW5jb3Jwb3JhdGVkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2ljIGlzIGEgY29tcGxldGVseSBpbmRlcGVuZGVudAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZSB1dGlsaXR5IHRoYXQgaW5pdGlhbGx5IHByb3ZpZGVzCisgICAgICAgICAgICAgICAgICAgICAgICBlYXNpZXItdG8tdXNlIGFuZCBtb3JlIGZsZXhpYmxlIHJlcGxhY2VtZW50cyBmb3IgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gT0UtQ29yZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBXaWMgYW5kIHRob3NlIGV4YW1wbGVzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpdGggV2ljIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRob3NlIHNjcmlwdHMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGJ5IGEgZ2VuZXJhbC1wdXJwb3NlIHBhcnRpdGlvbmluZyBsYW5ndWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGJhc2VkIG9uIFJlZGhhdCBraWNrc3RhcnQgc3ludGF4LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLXJlcXVpcmVtZW50cyc+CisgICAgICAgICAgICA8dGl0bGU+UmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHRoZSBXaWMgdXRpbGl0eSB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgQnVpbGQKKyAgICAgICAgICAgICAgICBzeXN0ZW0sIHlvdXIgc3lzdGVtIG5lZWRzIHRvIG1lZXQgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50czoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTGludXggZGlzdHJpYnV0aW9uIG9uIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IHN1cHBvcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBzeXN0ZW0gdXRpbGl0aWVzLCBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3A8L2ZpbGVuYW1lPiwgbXVzdCBiZSBpbnN0YWxsZWQgb24geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaGF2ZSBzb3VyY2VkIHRoZSBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaGF2ZSB0aGUgYnVpbGQgYXJ0aWZhY3RzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIHRoYXQgeW91IG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBjcmVhdGVkIGFuIGltYWdlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbmVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGl0IG1pZ2h0IHNlZW0gcmVkdW5kYW50IHRvIGdlbmVyYXRlIGFuIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBjcmVhdGUgYW4gaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYywgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgV2ljIHJlcXVpcmVzIHRoZSBhcnRpZmFjdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmb3JtIGdlbmVyYXRlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYnVpbGQgc2V2ZXJhbCBuYXRpdmUgdG9vbHMsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBwYXJ0ZWQtbmF0aXZlIGRvc2ZzdG9vbHMtbmF0aXZlIG10b29scy1uYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlICJ3aWMiIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb3BlbmVtYmVkZGVkLWtpY2tzdGFydC13a3MtcmVmZXJlbmNlJz53aWMga2lja3N0YXJ0IGZpbGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XS1NfRklMRSc+PGZpbGVuYW1lPldLU19GSUxFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1nZXR0aW5nLWhlbHAnPgorICAgICAgICAgICAgPHRpdGxlPkdldHRpbmcgSGVscDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGdlbmVyYWwgaGVscCBmb3IgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQgYnkgZW50ZXJpbmcgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgYnkgaXRzZWxmIG9yIGJ5IGVudGVyaW5nIHRoZSBjb21tYW5kIHdpdGggYSBoZWxwIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIC1oCisgICAgICQgd2ljIC0taGVscAorICAgICAkIHdpYyBoZWxwCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDdXJyZW50bHksIFdpYyBzdXBwb3J0cyBzZXZlbiBjb21tYW5kczoKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3A8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmNyZWF0ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oZWxwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5saXN0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5ybTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d3JpdGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBoZWxwIGZvciBhbGwgdGhlc2UgY29tbWFuZHMgZXhjZXB0ICJoZWxwIiBieQorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGhlbHAgPHJlcGxhY2VhYmxlPmNvbW1hbmQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJldHVybnMgaGVscCBmb3IgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndyaXRlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGhlbHAgd3JpdGUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdpYyBzdXBwb3J0cyBoZWxwIGZvciB0aHJlZSB0b3BpY3M6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm92ZXJ2aWV3PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbnM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtpY2tzdGFydDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGhlbHAgZm9yIGFueSB0b3BpYyB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBoZWxwIDxyZXBsYWNlYWJsZT50b3BpYzwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHJldHVybnMgb3ZlcnZpZXcgaGVscCBmb3IgV2ljOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgaGVscCBvdmVydmlldworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25lIGFkZGl0aW9uYWwgbGV2ZWwgb2YgaGVscCBleGlzdHMgZm9yIFdpYy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBoZWxwIG9uIGluZGl2aWR1YWwgaW1hZ2VzIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+bGlzdDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gcmV0dXJuIHRoZQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBXaWMgaW1hZ2VzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBsaXN0IGltYWdlcworICAgICAgIGdlbmVyaWN4ODYgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgorICAgICAgIGJlYWdsZWJvbmUteW9jdG8gICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUKKyAgICAgICBlZGdlcm91dGVyICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBFZGdlcm91dGVyCisgICAgICAgcWVtdXg4Ni1kaXJlY3RkaXNrICAgICAgICAgICAgCQlDcmVhdGUgYSBxZW11IG1hY2hpbmUgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKKyAgICAgICBkaXJlY3RkaXNrLWdwdCAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlCisgICAgICAgbWtlZmlkaXNrICAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UKKyAgICAgICBkaXJlY3RkaXNrICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlCisgICAgICAgc3lzdGVtZC1ib290ZGlzayAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2Ugd2l0aCBzeXN0ZW1kLWJvb3QKKyAgICAgICBta2h5YnJpZGlzbyAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhIGh5YnJpZCBJU08gaW1hZ2UKKyAgICAgICBzZGltYWdlLWJvb3RwYXJ0ICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIHdpdGggYSBib290IHBhcnRpdGlvbgorICAgICAgIGRpcmVjdGRpc2stbXVsdGktcm9vdGZzICAgICAgIAkJQ3JlYXRlIG11bHRpIHJvb3RmcyBpbWFnZSB1c2luZyByb290ZnMgcGx1Z2luCisgICAgICAgZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZyAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZSB3aXRoIGN1c3RvbSBib290bG9hZGVyIGNvbmZpZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBrbm93IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBXaWMgaW1hZ2VzLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oZWxwPC9maWxlbmFtZT4gd2l0aCB0aGUgY29tbWFuZCB0byBnZXQgaGVscCBvbiBhCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBpbWFnZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJldHVybnMgaGVscCBvbiB0aGUKKyAgICAgICAgICAgICAgICAiYmVhZ2xlYm9uZS15b2N0byIgaW1hZ2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBsaXN0IGJlYWdsZWJvbmUteW9jdG8gaGVscAorCisKKyAgICAgQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUuCisgICAgIEJvb3QgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIGZpcnN0IHZmYXQgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdvcGVyYXRpb25hbC1tb2Rlcyc+CisgICAgICAgICAgICA8dGl0bGU+T3BlcmF0aW9uYWwgTW9kZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBXaWMgaW4gdHdvIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIG1vZGVzLCBkZXBlbmRpbmcgb24gaG93IG11Y2ggY29udHJvbCB5b3UgbmVlZCBmb3IKKyAgICAgICAgICAgICAgICBzcGVjaWZ5aW5nIHRoZSBPcGVuZW1iZWRkZWQgYnVpbGQgYXJ0aWZhY3RzIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGltYWdlOiBSYXcgYW5kIENvb2tlZDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmF3IE1vZGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBleHBsaWNpdGx5IHNwZWNpZnkgYnVpbGQgYXJ0aWZhY3RzIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db29rZWQgTW9kZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgYW5kIGltYWdlIG5hbWUgYXJlIHVzZWQgdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlIGFuZCBwcm92aWRlIHRoZSBidWlsZCBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UganVzdCBzdXBwbHkgYSBraWNrc3RhcnQgZmlsZSBhbmQgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBpbWFnZSBmcm9tIHdoaWNoIHRvIHVzZSBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgbW9kZSB5b3UgdXNlLCB5b3UgbmVlZCB0byBoYXZlIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGFydGlmYWN0cyByZWFkeSBhbmQgYXZhaWxhYmxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmF3LW1vZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SYXcgTW9kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUnVubmluZyBXaWMgaW4gcmF3IG1vZGUgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucyB0aHJvdWdoIHRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lLgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJpbWFyeSB1c2UgZm9yIHJhdyBtb2RlIGlzIGlmIHlvdSBoYXZlIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgIHlvdXIga2VybmVsIG91dHNpZGUgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBjYW4gcG9pbnQgdG8gYXJiaXRyYXJ5IGtlcm5lbCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGxvY2F0aW9ucywgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBDb250cmFzdCB0aGlzIGJlaGF2aW9yIHdpdGggY29va2VkIG1vZGUgd2hlcmUgV2ljCisgICAgICAgICAgICAgICAgICAgIGxvb2tzIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBnZW5lcmFsIGZvcm0gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHJhdyBtb2RlIGlzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGNyZWF0ZSA8cmVwbGFjZWFibGU+d2tzX2ZpbGU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IC4uLgorCisgICAgICAgV2hlcmU6CisKKyAgICAgICAgICA8cmVwbGFjZWFibGU+d2tzX2ZpbGU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICBBbiBPcGVuRW1iZWRkZWQga2lja3N0YXJ0IGZpbGUuICBZb3UgY2FuIHByb3ZpZGUKKyAgICAgICAgICAgICB5b3VyIG93biBjdXN0b20gZmlsZSBvciB1c2UgYSBmaWxlIGZyb20gYSBzZXQgb2YKKyAgICAgICAgICAgICBleGlzdGluZyBmaWxlcyBhcyBkZXNjcmliZWQgYnkgZnVydGhlciBvcHRpb25zLgorCisgICAgICAgICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAgICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAgICAgIC1vIDxyZXBsYWNlYWJsZT5PVVRESVI8L3JlcGxhY2VhYmxlPiwgLS1vdXRkaXIgPHJlcGxhY2VhYmxlPk9VVERJUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiBkaXJlY3RvcnkgdG8gY3JlYXRlIGltYWdlIGluCisgICAgICAgICAgICAtZSA8cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+LCAtLWltYWdlLW5hbWUgPHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB0aGUgYXJ0aWZhY3RzIGZyb20gZS5nLiBjb3JlLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLXNhdG8KKyAgICAgICAgICAgIC1yIDxyZXBsYWNlYWJsZT5ST09URlNfRElSPC9yZXBsYWNlYWJsZT4sIC0tcm9vdGZzLWRpciA8cmVwbGFjZWFibGU+Uk9PVEZTX0RJUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB0byB0aGUgL3Jvb3RmcyBkaXIgdG8gdXNlIGFzIHRoZSAud2tzIHJvb3RmcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZQorICAgICAgICAgICAgLWIgPHJlcGxhY2VhYmxlPkJPT1RJTUdfRElSPC9yZXBsYWNlYWJsZT4sIC0tYm9vdGltZy1kaXIgPHJlcGxhY2VhYmxlPkJPT1RJTUdfRElSPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUgYm9vdCBhcnRpZmFjdHMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvRUZJIG9yIC9zeXNsaW51eCBkaXJzKSB0byB1c2UgYXMgdGhlIC53a3MgYm9vdGltZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZQorICAgICAgICAgICAgLWsgPHJlcGxhY2VhYmxlPktFUk5FTF9ESVI8L3JlcGxhY2VhYmxlPiwgLS1rZXJuZWwtZGlyIDxyZXBsYWNlYWJsZT5LRVJORUxfRElSPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAud2tzIGJvb3RpbWcKKyAgICAgICAgICAgIC1uIDxyZXBsYWNlYWJsZT5OQVRJVkVfU1lTUk9PVDwvcmVwbGFjZWFibGU+LCAtLW5hdGl2ZS1zeXNyb290IDxyZXBsYWNlYWJsZT5OQVRJVkVfU1lTUk9PVDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QgY29udGFpbmluZyB0aGUgdG9vbHMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYnVpbGQgdGhlIGltYWdlCisgICAgICAgICAgICAtcywgLS1za2lwLWJ1aWxkLWNoZWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCB0aGUgYnVpbGQgY2hlY2sKKyAgICAgICAgICAgIC1mLCAtLWJ1aWxkLXJvb3RmcyAgICBidWlsZCByb290ZnMKKyAgICAgICAgICAgIC1jIHtnemlwLGJ6aXAyLHh6fSwgLS1jb21wcmVzcy13aXRoIHtnemlwLGJ6aXAyLHh6fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzIGltYWdlIHdpdGggc3BlY2lmaWVkIGNvbXByZXNzb3IKKyAgICAgICAgICAgIC1tLCAtLWJtYXAgICAgICAgICAgICBnZW5lcmF0ZSAuYm1hcAorICAgICAgICAgICAgLS1uby1mc3RhYi11cGRhdGUgICAgIERvIG5vdCBjaGFuZ2UgZnN0YWIgZmlsZS4KKyAgICAgICAgICAgIC12IDxyZXBsYWNlYWJsZT5WQVJTX0RJUjwvcmVwbGFjZWFibGU+LCAtLXZhcnMgPHJlcGxhY2VhYmxlPlZBUlNfRElSPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aCAmbHQ7aW1hZ2UmZ3Q7LmVudiBmaWxlcyB0aGF0IHN0b3JlIGJpdGJha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMKKyAgICAgICAgICAgIC1ELCAtLWRlYnVnICAgICAgICAgICBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCByb290IHByaXZpbGVnZXMgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgICAgICBXaWMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCB5b3Ugc2hvdWxkIG5vdCBydW4gYXMgcm9vdCB3aGVuIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdXRpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2Nvb2tlZC1tb2RlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q29va2VkIE1vZGU8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgV2ljIGluIGNvb2tlZCBtb2RlIGxldmVyYWdlcyBvZmYgYXJ0aWZhY3RzIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSBrZXJuZWwgb3IKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGxvY2F0aW9ucyBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgdG8gcHJvdmlkZSBpcyBhIGtpY2tzdGFydCBmaWxlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgaW1hZ2UgZnJvbSB3aGljaCB0byB1c2UgYXJ0aWZhY3RzIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSAiLWUiIG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGxvb2tzIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPikKKyAgICAgICAgICAgICAgICAgICAgZm9yIGFydGlmYWN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYWwgZm9ybSBvZiB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdXNpbmcgQ29va2VkIE1vZGUgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBjcmVhdGUgPHJlcGxhY2VhYmxlPndrc19maWxlPC9yZXBsYWNlYWJsZT4gLWUgPHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPgorCisgICAgICAgV2hlcmU6CisKKyAgICAgICAgICA8cmVwbGFjZWFibGU+d2tzX2ZpbGU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICBBbiBPcGVuRW1iZWRkZWQga2lja3N0YXJ0IGZpbGUuICBZb3UgY2FuIHByb3ZpZGUKKyAgICAgICAgICAgICB5b3VyIG93biBjdXN0b20gZmlsZSBvciB1c2UgYSBmaWxlIGZyb20gYSBzZXQgb2YKKyAgICAgICAgICAgICBleGlzdGluZyBmaWxlcyBwcm92aWRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgcmVsZWFzZS4KKworICAgICAgICAgIHJlcXVpcmVkIGFyZ3VtZW50OgorICAgICAgICAgICAgIC1lIDxyZXBsYWNlYWJsZT5JTUFHRV9OQU1FPC9yZXBsYWNlYWJsZT4sIC0taW1hZ2UtbmFtZSA8cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgaW1hZ2UgdG8gdXNlIHRoZSBhcnRpZmFjdHMgZnJvbSBlLmcuIGNvcmUtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Utc2F0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWEtcHJvdmlkZWQta2lja3N0YXJ0LWZpbGUnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IHRvIGNyZWF0ZSB5b3VyIG93biBraWNrc3RhcnQgZmlsZSwgeW91CisgICAgICAgICAgICAgICAgY2FuIHVzZSBhbiBleGlzdGluZyBmaWxlIHByb3ZpZGVkIGJ5IHRoZSBXaWMgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIGtpY2tzdGFydCBmaWxlcyBjYW4gYmUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgaW4gdGhlIGZvbGxvd2luZyB0d28gbG9jYXRpb25zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9tZXRhLXlvY3RvLWJzcC93aWMKKyAgICAgcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGxpc3QgdGhlIGF2YWlsYWJsZSBraWNrc3RhcnQKKyAgICAgICAgICAgICAgICBmaWxlczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGxpc3QgaW1hZ2VzCisgICAgICAgZ2VuZXJpY3g4NiAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisgICAgICAgYmVhZ2xlYm9uZS15b2N0byAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgQmVhZ2xlYm9uZQorICAgICAgIGVkZ2Vyb3V0ZXIgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEVkZ2Vyb3V0ZXIKKyAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sgICAgICAgICAgICAJCUNyZWF0ZSBhIHFlbXUgbWFjaGluZSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIGRpcmVjdGRpc2stZ3B0ICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKKyAgICAgICBta2VmaWRpc2sgICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZQorICAgICAgIGRpcmVjdGRpc2sgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKKyAgICAgICBzeXN0ZW1kLWJvb3RkaXNrICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSB3aXRoIHN5c3RlbWQtYm9vdAorICAgICAgIG1raHlicmlkaXNvICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgaHlicmlkIElTTyBpbWFnZQorICAgICAgIHNkaW1hZ2UtYm9vdHBhcnQgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2Ugd2l0aCBhIGJvb3QgcGFydGl0aW9uCisgICAgICAgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMgICAgICAgCQlDcmVhdGUgbXVsdGkgcm9vdGZzIGltYWdlIHVzaW5nIHJvb3RmcyBwbHVnaW4KKyAgICAgICBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnICAJCUNyZWF0ZSBhICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlIHdpdGggY3VzdG9tIGJvb3Rsb2FkZXIgY29uZmlnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSBhbiBleGlzdGluZyBmaWxlLCB5b3UgZG8gbm90IGhhdmUgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBpbiBSYXcgTW9kZSB0aGF0IHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2s8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgY3JlYXRlIGRpcmVjdGRpc2sgLXIgPHJlcGxhY2VhYmxlPnJvb3Rmc19kaXI8L3JlcGxhY2VhYmxlPiAtYiA8cmVwbGFjZWFibGU+Ym9vdGltZ19kaXI8L3JlcGxhY2VhYmxlPiBcCisgICAgICAgICAgIC1rIDxyZXBsYWNlYWJsZT5rZXJuZWxfZGlyPC9yZXBsYWNlYWJsZT4gLW4gPHJlcGxhY2VhYmxlPm5hdGl2ZV9zeXNyb290PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBhY3R1YWwgcGFydGl0aW9uIGxhbmd1YWdlIGNvbW1hbmRzCisgICAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgPGZpbGVuYW1lPmdlbmVyaWN4ODYud2tzPC9maWxlbmFtZT4gZmlsZSB0bworICAgICAgICAgICAgICAgIGdlbmVyYXRlIGFuIGltYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgorICAgICAjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NiogbWFjaGluZXMKKyAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLWVmaSAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPWdydWItZWZpIiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKKyAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCisgICAgIHBhcnQgc3dhcCAtLW9uZGlzayBzZGEgLS1zaXplIDQ0IC0tbGFiZWwgc3dhcDEgLS1mc3R5cGU9c3dhcAorCisgICAgIGJvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd3aWMtdXNpbmctdGhlLXdpYy1wbHVnaW4taW50ZXJmYWNlJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgV2ljIFBsdWdpbiBJbnRlcmZhY2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGV4dGVuZCBhbmQgc3BlY2lhbGl6ZSBXaWMgZnVuY3Rpb25hbGl0eSBieSB1c2luZworICAgICAgICAgICAgICAgIFdpYyBwbHVnaW5zLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBleHBsYWlucyB0aGUgV2ljIHBsdWdpbiBpbnRlcmZhY2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFdpYyBwbHVnaW5zIGNvbnNpc3Qgb2YgInNvdXJjZSIgYW5kICJpbWFnZXIiIHBsdWdpbnMuCisgICAgICAgICAgICAgICAgICAgIEltYWdlciBwbHVnaW5zIGFyZSBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnaW5zIHByb3ZpZGUgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplIHBhcnRpdGlvbgorICAgICAgICAgICAgICAgIGNvbnRlbnQgZHVyaW5nIHRoZSBXaWMgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHNvdXJjZSBwbHVnaW5zIHRvIG1hcCB2YWx1ZXMgdGhhdCB5b3Ugc3BlY2lmeQorICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIGtpY2tzdGFydAorICAgICAgICAgICAgICAgIGZpbGVzIChpLmUuIDxmaWxlbmFtZT4qLndrczwvZmlsZW5hbWU+KSB0byBhIHBsdWdpbgorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gcG9wdWxhdGUgYSBnaXZlbiBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Z2lucyB0aGF0IGhhdmUgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gbmF0aXZlIHRvb2xzLCBib290bG9hZGVycywgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGEgV2ljIGltYWdlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRob3NlCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdLU19GSUxFX0RFUEVORFMnPjxmaWxlbmFtZT5XS1NfRklMRV9ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnaW5zIGFyZSBzdWJjbGFzc2VzIGRlZmluZWQgaW4gcGx1Z2luIGZpbGVzLgorICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgcGx1Z2luCisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHNvdXJjZSBwbHVnaW4gZmlsZXMgdGhhdCBzaGlwIHdpdGggdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIHBsdWdpbiBmaWxlcyBjb250YWlucyBzb3VyY2UgcGx1Z2lucyB0aGF0CisgICAgICAgICAgICAgICAgYXJlIGRlc2lnbmVkIHRvIHBvcHVsYXRlIGEgc3BlY2lmaWMgV2ljIGltYWdlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU291cmNlIHBsdWdpbnMgYXJlIHN1YmNsYXNzZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLCB3aGljaCBpcworICAgICAgICAgICAgICAgIGRlZmluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+Qm9vdGltZ0VGSVBsdWdpbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgc291cmNlIHBsdWdpbiBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZy1lZmkucHk8L2ZpbGVuYW1lPiBmaWxlIGlzIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLCB3aGljaCBpcyBmb3VuZAorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+cGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBpbXBsZW1lbnQgc291cmNlIHBsdWdpbnMgaW4gYSBsYXllciBvdXRzaWRlCisgICAgICAgICAgICAgICAgb2YgdGhlIFNvdXJjZSBSZXBvc2l0b3JpZXMgKGV4dGVybmFsIGxheWVyKS4KKyAgICAgICAgICAgICAgICBUbyBkbyBzbywgYmUgc3VyZSB0aGF0IHlvdXIgcGx1Z2luIGZpbGVzIGFyZSBsb2NhdGVkIGluCisgICAgICAgICAgICAgICAgYSBkaXJlY3Rvcnkgd2hvc2UgcGF0aCBpcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB3aXRoaW4geW91ciBleHRlcm5hbCBsYXllci4KKyAgICAgICAgICAgICAgICBXaGVuIHRoZSBwbHVnaW4gZmlsZXMgYXJlIGxvY2F0ZWQgdGhlcmUsIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICBwbHVnaW5zIHRoZXkgY29udGFpbiBhcmUgbWFkZSBhdmFpbGFibGUgdG8gV2ljLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gaW52b2tlIGEKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24tc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGl0IGxvb2tzIGZvciB0aGUgcGx1Z2luCisgICAgICAgICAgICAgICAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHBhcmFtZXRlciB1c2VkIGluIHRoZSBraWNrc3RhcnQgZmlsZSBnaXZlbiB0byB0aGF0CisgICAgICAgICAgICAgICAgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgcGFydGl0aW9uIGlzIHNldCB1cCB1c2luZyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgY29tbWFuZCBpbiBhIGtpY2tzdGFydCBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAtLW9uZGlzayBzZGEgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgbWV0aG9kcyBkZWZpbmVkIGFzIGNsYXNzIG1lbWJlcnMgb2YgdGhlIG1hdGNoaW5nCisgICAgICAgICAgICAgICAgc291cmNlIHBsdWdpbiAoaS5lLiA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3M8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLnB5PC9maWxlbmFtZT4gcGx1Z2luIGZpbGUKKyAgICAgICAgICAgICAgICBhcmUgdXNlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gYmUgbW9yZSBjb25jcmV0ZSwgaGVyZSBpcyB0aGUgY29ycmVzcG9uZGluZyBwbHVnaW4KKyAgICAgICAgICAgICAgICBkZWZpbml0aW9uIGZyb20gdGhlIDxmaWxlbmFtZT5ib290aW1nLXBjYmlvcy5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIHByZXZpb3VzIGNvbW1hbmQgYWxvbmcgd2l0aCBhbiBleGFtcGxlCisgICAgICAgICAgICAgICAgbWV0aG9kIGNhbGxlZCBieSB0aGUgV2ljIGltcGxlbWVudGF0aW9uIHdoZW4gaXQgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICBwcmVwYXJlIGEgcGFydGl0aW9uIHVzaW5nIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljCisgICAgICAgICAgICAgICAgZnVuY3Rpb246CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICBjbGFzcyBCb290aW1nUGNiaW9zUGx1Z2luKFNvdXJjZVBsdWdpbik6CisgICAgICAgICAiIiIKKyAgICAgICAgIENyZWF0ZSBNQlIgYm9vdCBwYXJ0aXRpb24gYW5kIGluc3RhbGwgc3lzbGludXggb24gaXQuCisgICAgICAgICAiIiIKKworICAgICAgICAgbmFtZSA9ICdib290aW1nLXBjYmlvcycKKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgZGVmIGRvX3ByZXBhcmVfcGFydGl0aW9uKGNscywgcGFydCwgc291cmNlX3BhcmFtcywgY3JlYXRvciwgY3Jfd29ya2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsIGtlcm5lbF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpOgorICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgIENhbGxlZCB0byBkbyB0aGUgYWN0dWFsIGNvbnRlbnQgcG9wdWxhdGlvbiBmb3IgYSBwYXJ0aXRpb24gaS5lLiBpdAorICAgICAgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBwcmVwYXJlIGNvbnRlbnQgZm9yIGxlZ2FjeSBiaW9zIGJvb3QgcGFydGl0aW9uLgorICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJZiBhIHN1YmNsYXNzIChwbHVnaW4pIGl0c2VsZiBkb2VzIG5vdCBpbXBsZW1lbnQgYQorICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZnVuY3Rpb24sIFdpYyBsb2NhdGVzIGFuZCB1c2VzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgdmVyc2lvbiBpbiB0aGUgc3VwZXJjbGFzcy4KKyAgICAgICAgICAgICAgICBJdCBpcyBmb3IgdGhpcyByZWFzb24gdGhhdCBhbGwgc291cmNlIHBsdWdpbnMgYXJlIGRlcml2ZWQKKyAgICAgICAgICAgICAgICBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+IGZpbGUgZGVmaW5lcworICAgICAgICAgICAgICAgIGEgc2V0IG9mIG1ldGhvZHMgdGhhdCBzb3VyY2UgcGx1Z2lucyBjYW4gaW1wbGVtZW50IG9yCisgICAgICAgICAgICAgICAgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgQW55IHBsdWdpbnMgKHN1YmNsYXNzIG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+KSB0aGF0IGRvIG5vdCBpbXBsZW1lbnQKKyAgICAgICAgICAgICAgICBhIHBhcnRpY3VsYXIgbWV0aG9kIGluaGVyaXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIG1ldGhvZCBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGZvciBkZXRhaWxzOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIHRvIHBvcHVsYXRlIGEgcGFydGl0aW9uIHdpdGggYWN0dWFsIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG1ldGhvZCBwcmVwYXJlcyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBpbWFnZSB0aGF0IGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDYWxsZWQgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcHJlcGFyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgY3VzdG9tIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGEgcGFydGl0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBzeXNsaW51eCBvciBncnViIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbF9kaXNrKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIGFmdGVyIGFsbCBwYXJ0aXRpb25zIGhhdmUgYmVlbiBwcmVwYXJlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxlZCBpbnRvIGEgZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgaG9vayB0byBhbGxvdyBmaW5hbGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgZGlzayBpbWFnZSAoZS5nLiB3cml0aW5nIGFuIE1CUikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19zdGFnZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWFsIGNvbnRlbnQtc3RhZ2luZyBob29rIGNhbGxlZCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBub3JtYWxseSBlbXB0eS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlR5cGljYWxseSwgYSBwYXJ0aXRpb24ganVzdCB1c2VzIHRoZSBwYXNzZWQtaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ib290aW1nX2RpcjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMsIHRoaW5ncyBtaWdodCBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY2VydGFpbiBmaWxlcyBtaWdodCBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgdGFrZW4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaG9vayBhbGxvd3MgdGhvc2UgZmlsZXMgdG8gYmUgc3RhZ2VkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgZmFzaGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRfYml0YmFrZV92YXIoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byBhY2Nlc3Mgbm9uLXN0YW5kYXJkIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBleHRlbmQgdGhlIHNvdXJjZSBwbHVnaW4gbWVjaGFuaXNtLgorICAgICAgICAgICAgICAgIFRvIGFkZCBtb3JlIGhvb2tzLCBjcmVhdGUgbW9yZSBzb3VyY2UgcGx1Z2luIG1ldGhvZHMKKyAgICAgICAgICAgICAgICB3aXRoaW4gPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGFuZCB0aGUKKyAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIGRlcml2ZWQgc3ViY2xhc3Nlcy4KKyAgICAgICAgICAgICAgICBUaGUgY29kZSB0aGF0IGNhbGxzIHRoZSBwbHVnaW4gbWV0aG9kcyB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBmaW5kIHRoZSBtZXRob2Qgb3IgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIGNhbGwuCisgICAgICAgICAgICAgICAgUmV0cmlldmFsIG9mIHRob3NlIG1ldGhvZHMgaXMgYWNjb21wbGlzaGVkIGJ5IGZpbGxpbmcgdXAKKyAgICAgICAgICAgICAgICBhIGRpY3Qgd2l0aCBrZXlzIHRoYXQgY29udGFpbiB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgorICAgICAgICAgICAgICAgIE9uIHN1Y2Nlc3MsIHRoZXNlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbAorICAgICAgICAgICAgICAgIG1ldGhvZHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGVzIGFuZCBkZXRhaWxzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy11c2FnZS1leGFtcGxlcyc+CisgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZQorICAgICAgICAgICAgICAgIHRoZSBXaWMgdXRpbGl0eS4KKyAgICAgICAgICAgICAgICBBbGwgdGhlIGV4YW1wbGVzIGFzc3VtZSB0aGUgbGlzdCBvZiByZXF1aXJlbWVudHMgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dpYy1yZXF1aXJlbWVudHMnPlJlcXVpcmVtZW50czwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBoYXZlIGJlZW4gbWV0LgorICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgdGhlIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGltYWdlIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZ2VuZXJhdGUtYW4taW1hZ2UtdXNpbmctYS1wcm92aWRlZC1raWNrc3RhcnQtZmlsZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkdlbmVyYXRlIGFuIEltYWdlIHVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgcnVucyBpbiBDb29rZWQgTW9kZSBhbmQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rZWZpZGlzazwvZmlsZW5hbWU+IGtpY2tzdGFydCBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGNyZWF0ZSBta2VmaWRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsCisgICAgIElORk86IEJ1aWxkaW5nIHdpYy10b29scy4uLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICBJTkZPOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgorICAgICAgIC4vbWtlZmlkaXNrLTIwMTgwNDE5MTAxNy1zZGEuZGlyZWN0CisKKyAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6CisgICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMKKyAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQorICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy9xZW11eDg2CisgICAgICAgTkFUSVZFX1NZU1JPT1Q6ICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL2k1ODYtb2UtbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKKworICAgICBJTkZPOiBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgorICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9vcGVuZW1iZWRkZWQtY29yZS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2VmaWRpc2sud2tzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgc2hvd3MgdGhlIGVhc2llc3Qgd2F5IHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICBhbiBpbWFnZSBieSBydW5uaW5nIGluIGNvb2tlZCBtb2RlIGFuZCBzdXBwbHlpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBraWNrc3RhcnQgZmlsZSBhbmQgdGhlICItZSIgb3B0aW9uIHRvIHBvaW50IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBidWlsZCBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG5lZWRzIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2V0IHRvIHRoZSBtYWNoaW5lIHlvdSBhcmUgdXNpbmcsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgICJxZW11eDg2IiBpbiB0aGlzIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGltYWdlIGJ1aWxkcywgdGhlIG91dHB1dCBwcm92aWRlcyBpbWFnZQorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgYXJ0aWZhY3QgdXNlLCBhbmQga2lja3N0YXJ0IGZpbGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgdmVyaWZ5IHRoZSBkZXRhaWxzIHByb3ZpZGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbWFnZSB3YXMgaW5kZWVkCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGV4YWN0bHkgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlLCB5b3UgY2FuIG5vdyB3cml0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UgZnJvbSB0aGUgQnVpbGQgRGlyZWN0b3J5IG9udG8gYSBVU0Igc3RpY2ssIG9yCisgICAgICAgICAgICAgICAgICAgIHdoYXRldmVyIG1lZGlhIGZvciB3aGljaCB5b3UgYnVpbHQgeW91ciBpbWFnZSwgYW5kIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgbWVkaWEuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gd3JpdGUgdGhlIGltYWdlIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwdG9vbCBjb3B5IG1rZWZpZGlzay0yMDE4MDQxOTEwMTctc2RhLmRpcmVjdCAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRkIGlmPW1rZWZpZGlzay0yMDE4MDQxOTEwMTctc2RhLmRpcmVjdCBvZj0vZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IHRvIGZsYXNoIGEgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFuIGltYWdlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZmxhc2hpbmctaW1hZ2VzLXVzaW5nLWJtYXB0b29sJz5GbGFzaGluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWEtbW9kaWZpZWQta2lja3N0YXJ0LWZpbGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhIE1vZGlmaWVkIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHBhcnRpdGlvbmVkIGltYWdlIGNyZWF0aW9uIGlzIGRyaXZlbiBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAga2lja3N0YXJ0IGZpbGUsIGl0IGlzIGVhc3kgdG8gYWZmZWN0IGltYWdlIGNyZWF0aW9uIGJ5CisgICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdGhhdCB0aHJvdWdoIG1vZGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPmRpcmVjdGRpc2stZ3B0PC9maWxlbmFtZT4ga2lja3N0YXJ0CisgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljIGxpc3QgaW1hZ2VzPC9maWxlbmFtZT4gdG8gc2hvdyB0aGUgbGlzdAorICAgICAgICAgICAgICAgICAgICBvZiBleGlzdGluZyBraWNrc3RhcnQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrLWdwdC53a3M8L2ZpbGVuYW1lPiBmaWxlIHJlc2lkZXMgaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBhdmFpbGFibGUgZmlsZXMgcmVzaWRlIGluIHRoaXMgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNyZWF0ZSBhbmQgYWRkIHlvdXIgb3duIGN1c3RvbSBmaWxlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBTdWJzZXF1ZW50IHVzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IGNvbW1hbmQgd291bGQgdGhlbgorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHlvdXIga2lja3N0YXJ0IGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQ8L2ZpbGVuYW1lPiBmaWxlIGFscmVhZHkgZG9lcworICAgICAgICAgICAgICAgICAgICBtb3N0IG9mIHdoYXQgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBmb3IgdGhlIGhhcmR3YXJlIGluIHRoaXMgZXhhbXBsZSwgdGhlIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBib290IGZyb20gPGZpbGVuYW1lPnNkYjwvZmlsZW5hbWU+IGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnNkYTwvZmlsZW5hbWU+LCB3aGljaCBpcyB3aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQ8L2ZpbGVuYW1lPiBraWNrc3RhcnQgZmlsZQorICAgICAgICAgICAgICAgICAgICB1c2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBiZWdpbnMgYnkgbWFraW5nIGEgY29weSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2stZ3B0LndrczwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2xpYi9pbWFnZS9jYW5uZWQtd2tzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCB0aGVuIGJ5IGNoYW5naW5nIHRoZSBsaW5lcyB0aGF0IHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBkaXNrIGZyb20gd2hpY2ggdG8gYm9vdC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNwIC9ob21lL3N0ZXBoYW5vL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ncHQud2tzIFwKKyAgICAgICAgICAvaG9tZS9zdGVwaGFuby9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE5leHQsIHRoZSBleGFtcGxlIG1vZGlmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlza3NkYi1ncHQud2tzPC9maWxlbmFtZT4gZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyBhbGwgaW5zdGFuY2VzIG9mCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+LS1vbmRpc2sgc2RhPC9maWxlbmFtZT4iIHRvCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+LS1vbmRpc2sgc2RiPC9maWxlbmFtZT4iLgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBjaGFuZ2VzIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIGFuZCBsZWF2ZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlbWFpbmluZyBsaW5lcyB1bnRvdWNoZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAtLW9uZGlzayBzZGIgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorICAgICBwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYiAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0IC0tdXNlLXV1aWQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBsaW5lcyBhcmUgY2hhbmdlZCwgdGhlIGV4YW1wbGUgZ2VuZXJhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlza3NkYi1ncHQ8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgcG9pbnRzIHRoZSBwcm9jZXNzIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gYXJ0aWZhY3RzIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgTmV4dCBVbml0IG9mIENvbXB1dGluZyAobnVjKQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGNyZWF0ZSBkaXJlY3RkaXNrc2RiLWdwdCAtZSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgSU5GTzogQnVpbGRpbmcgd2ljLXRvb2xzLi4uCisgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAuCisgICAgIEluaXRpYWxpc2luZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAxCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDExNjEgdGFza3Mgb2Ygd2hpY2ggMTE1NyBkaWRuJ3QgbmVlZCB0byBiZSByZXJ1biBhbmQgYWxsIHN1Y2NlZWRlZC4KKyAgICAgSU5GTzogQ3JlYXRpbmcgaW1hZ2UocykuLi4KKworICAgICBJTkZPOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgorICAgICAgIC4vZGlyZWN0ZGlza3NkYi1ncHQtMjAxNzEwMDkwOTM4LXNkYi5kaXJlY3QKKworICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKKyAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcworICAgICAgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlCisgICAgICAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvaTU4Ni1vZS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQorCisgICAgIElORk86IFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6CisgICAgICAgL2hvbWUvc3RlcGhhbm8vcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9kaXJlY3RkaXNrc2RiLWdwdC53a3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGUsIHlvdSBjYW4gbm93IGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+IHRoZSBpbWFnZSB0byBhIFVTQiBzdGljaywgb3IKKyAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdSBidWlsdCB5b3VyIGltYWdlLAorICAgICAgICAgICAgICAgICAgICBhbmQgYm9vdCB0aGUgcmVzdWx0aW5nIG1lZGlhOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkZCBpZj1kaXJlY3RkaXNrc2RiLWdwdC0yMDE3MTAwOTA5Mzgtc2RiLmRpcmVjdCBvZj0vZGV2L3NkYgorICAgICAxNDA5NjYrMCByZWNvcmRzIGluCisgICAgIDE0MDk2NiswIHJlY29yZHMgb3V0CisgICAgIDcyMTc0NTkyIGJ5dGVzICg3MiBNQiwgNjkgTWlCKSBjb3BpZWQsIDc4LjAyODIgcywgOTI1IGtCL3MKKyAgICAgJCBzdWRvIGVqZWN0IC9kZXYvc2RiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hLW1vZGlmaWVkLWtpY2tzdGFydC1maWxlLWFuZC1ydW5uaW5nLWluLXJhdy1tb2RlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgYSBNb2RpZmllZCBLaWNrc3RhcnQgRmlsZSBhbmQgUnVubmluZyBpbiBSYXcgTW9kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgbWFudWFsbHkgc3BlY2lmaWVzIGVhY2ggYnVpbGQgYXJ0aWZhY3QKKyAgICAgICAgICAgICAgICAgICAgKHJ1bnMgaW4gUmF3IE1vZGUpIGFuZCB1c2VzIGEgbW9kaWZpZWQga2lja3N0YXJ0IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGFsc28gdXNlcyB0aGUgPGZpbGVuYW1lPi1vPC9maWxlbmFtZT4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgIHRvIGNhdXNlIFdpYyB0byBjcmVhdGUgdGhlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICBzb21ld2hlcmUgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBvdXRwdXQgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgY3VycmVudCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgY3JlYXRlIC9ob21lL3N0ZXBoYW5vL215X3lvY3RvL3Rlc3Qud2tzIC1vIC9ob21lL3N0ZXBoYW5vL3Rlc3R3aWMgXAorICAgICAgICAgIC0tcm9vdGZzLWRpciAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzIFwKKyAgICAgICAgICAtLWJvb3RpbWctZGlyIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUgXAorICAgICAgICAgIC0ta2VybmVsLWRpciAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4NiBcCisgICAgICAgICAgLS1uYXRpdmUtc3lzcm9vdCAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisKKyAgICAgSU5GTzogQ3JlYXRpbmcgaW1hZ2UocykuLi4KKworICAgICBJTkZPOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgorICAgICAgIC9ob21lL3N0ZXBoYW5vL3Rlc3R3aWMvdGVzdC0yMDE3MTAwOTE0NDUtc2RiLmRpcmVjdAorCisgICAgIFRoZSBmb2xsb3dpbmcgYnVpbGQgYXJ0aWZhY3RzIHdlcmUgdXNlZCB0byBjcmVhdGUgdGhlIGltYWdlKHMpOgorICAgICAgIFJPT1RGU19ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzCisgICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKKyAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvcWVtdXg4NgorICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9pNTg2LW9lLWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisKKyAgICAgSU5GTzogVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKKyAgICAgICAvaG9tZS9zdGVwaGFuby9teV95b2N0by90ZXN0LndrcworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZGlkIG5vdCBoYXZlIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHNpbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBhcnRpZmFjdCBpcyBtYW51YWxseSBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctd2ljLXRvLW1hbmlwdWxhdGUtYW4taW1hZ2UnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBXaWMgdG8gTWFuaXB1bGF0ZSBhbiBJbWFnZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGltYWdlIG1hbmlwdWxhdGlvbiBhbGxvd3MgeW91IHRvIHNob3J0ZW4gdHVybmFyb3VuZAorICAgICAgICAgICAgICAgICAgICB0aW1lIGR1cmluZyBpbWFnZSBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIFdpYyB0byBkZWxldGUgdGhlIGtlcm5lbCBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgYSBXaWMgaW1hZ2UgYW5kIHRoZW4gaW5zZXJ0IGEgbmV3bHkgYnVpbHQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNhdmVzIHlvdSB0aW1lIGZyb20gaGF2aW5nIHRvIHJlYnVpbGQgdGhlIGVudGlyZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBlYWNoIHRpbWUgeW91IG1vZGlmeSB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSBXaWMgdG8gbWFuaXB1bGF0ZSBhIFdpYyBpbWFnZSBhcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBleGFtcGxlLCB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUgbXVzdCBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBleGFtaW5lcyB0aGUgY29udGVudHMgb2YgdGhlIFdpYworICAgICAgICAgICAgICAgICAgICBpbWFnZSwgZGVsZXRlcyB0aGUgZXhpc3Rpbmcga2VybmVsLCBhbmQgdGhlbiBpbnNlcnRzIGEKKyAgICAgICAgICAgICAgICAgICAgbmV3IGtlcm5lbDoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaXN0IHRoZSBQYXJ0aXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIGxzPC9maWxlbmFtZT4gY29tbWFuZCB0byBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBwYXJ0aXRpb25zIGluIHRoZSBXaWMgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYworICAgICBOdW0gICAgIFN0YXJ0ICAgICAgICBFbmQgICAgICAgICAgU2l6ZSAgICAgIEZzdHlwZQorICAgICAgMSAgICAgICAxMDQ4NTc2ICAgICAyNTA0MTkxOSAgICAgMjM5OTMzNDQgIGZhdDE2CisgICAgICAyICAgICAgMjUxNjU4MjQgICAgIDcyMTU3MTgzICAgICA0Njk5MTM2MCAgZXh0NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgb3V0cHV0IHNob3dzIHR3byBwYXJ0aXRpb25zIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni53aWM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIGEgUGFydGljdWxhciBQYXJ0aXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT53aWMgbHM8L2ZpbGVuYW1lPiBjb21tYW5kIGFnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGluIGEgZGlmZmVyZW50IGZvcm0gdG8gZXhhbWluZSBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGNvbW1hbmQgdXNhZ2Ugb24gYW55IFdpYyBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBoZWxwIDxyZXBsYWNlYWJsZT5jb21tYW5kPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaW91cyB3YXlzIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsczwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgaGVscCBscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzaG93cyB3aGF0IGlzIGluIFBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGxzIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljOjEKKyAgICAgVm9sdW1lIGluIGRyaXZlIDogaXMgYm9vdAorICAgICAgVm9sdW1lIFNlcmlhbCBOdW1iZXIgaXMgRTg5NC0xODA5CisgICAgIERpcmVjdG9yeSBmb3IgOjovCisKKyAgICAgbGliY29tMzIgYzMyICAgIDE4NjUwMCAyMDE3LTEwLTA5ICAxNjowNgorICAgICBsaWJ1dGlsICBjMzIgICAgIDI0MTQ4IDIwMTctMTAtMDkgIDE2OjA2CisgICAgIHN5c2xpbnV4IGNmZyAgICAgICAyMjAgMjAxNy0xMC0wOSAgMTY6MDYKKyAgICAgdmVzYW1lbnUgYzMyICAgICAyNzEwNCAyMDE3LTEwLTA5ICAxNjowNgorICAgICB2bWxpbnV6ICAgICAgICA2OTA0NjA4IDIwMTctMTAtMDkgIDE2OjA2CisgICAgICAgICAgICAgNSBmaWxlcyAgICAgICAgICAgNyAxNDIgNTgwIGJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiA1ODIgNjU2IGJ5dGVzIGZyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIG91dHB1dCBzaG93cyBmaXZlIGZpbGVzLCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52bWxpbnV6PC9maWxlbmFtZT4gYmVpbmcgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNlZSB0aGUgZm9sbG93aW5nIGVycm9yLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgb3IgY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vLm10b29sc3JjPC9maWxlbmFtZT4gZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgc3VyZSB0byBoYXZlIHRoZSBsaW5lICJtdG9vbHNfc2tpcF9jaGVjaz0xIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbiwgcnVuIHRoZSBXaWMgY29tbWFuZCBhZ2FpbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFUlJPUjogX2V4ZWNfY21kOiAvdXNyL2Jpbi9tZGlyIC1pIC90bXAvd2ljLXBhcnR0Zm9rdXdyYSA6Oi8gcmV0dXJuZWQgJzEnIGluc3RlYWQgb2YgMAorICAgICAgb3V0cHV0OiBUb3RhbCBudW1iZXIgb2Ygc2VjdG9ycyAoNDc4MjQpIG5vdCBhIG11bHRpcGxlIG9mIHNlY3RvcnMgcGVyIHRyYWNrICgzMikhCisgICAgICBBZGQgbXRvb2xzX3NraXBfY2hlY2s9MSB0byB5b3VyIC5tdG9vbHNyYyBmaWxlIHRvIHNraXAgdGhpcyB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZW1vdmUgdGhlIE9sZCBLZXJuZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIHJtPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIDxmaWxlbmFtZT52bWxpbnV6PC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2VybmVsKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBybSB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYzoxL3ZtbGludXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgSW4gdGhlIE5ldyBLZXJuZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIGNwPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgdGhlIHVwZGF0ZWQga2VybmVsIHRvIHRoZSBXaWMgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiBob3cgeW91IGJ1aWx0IHlvdXIga2VybmVsLCBpdCBjb3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbiBkaWZmZXJlbnQgcGxhY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlZCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBTREsgdG8gYnVpbGQgeW91ciBrZXJuZWwsIGl0IHJlc2lkZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yazwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCwgdGhlIGtlcm5lbCB3aWxsIGJlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d29ya3NwYWNlL3NvdXJjZXM8L2ZpbGVuYW1lPiBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIGFzc3VtZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3YXMgdXNlZCB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGNwIH4vcG9reV9zZGsvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvLzQuMTIuMTIrZ2l0OTk5LXIwL2xpbnV4LXlvY3RvLTQuMTIuMTIrZ2l0OTk5L2FyY2gveDg2L2Jvb3QvYnpJbWFnZSBcCisgICAgICAgIH4vcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYzoxL3ZtbGludXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBuZXcga2VybmVsIGlzIGFkZGVkIGJhY2sgaW50byB0aGUgaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+PGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZsYXNoIHlvdXIgd2ljIGltYWdlIG9udG8gYW4gU0QgY2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBVU0Igc3RpY2sgYW5kIHRlc3QgeW91ciB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxseSAxMCB0byAyMCB0aW1lcyBmYXN0ZXIgdGhhbiB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+CisgICAgICAgIDx0aXRsZT5GbGFzaGluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBmYXN0IGFuZCBlYXN5IHdheSB0byBmbGFzaCBhbiBpbWFnZSB0byBhIGJvb3RhYmxlIGRldmljZQorICAgICAgICAgICAgaXMgdG8gdXNlIEJtYXB0b29sLCB3aGljaCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgQm1hcHRvb2wgaXMgYSBnZW5lcmljIHRvb2wgdGhhdCBjcmVhdGVzIGEgZmlsZSdzIGJsb2NrIG1hcCAoYm1hcCkKKyAgICAgICAgICAgIGFuZCB0aGVuIHVzZXMgdGhhdCBtYXAgdG8gY29weSB0aGUgZmlsZS4KKyAgICAgICAgICAgIEFzIGNvbXBhcmVkIHRvIHRyYWRpdGlvbmFsIHRvb2xzIHN1Y2ggYXMgZGQgb3IgY3AsIEJtYXB0b29sCisgICAgICAgICAgICBjYW4gY29weSAob3IgZmxhc2gpIGxhcmdlIGZpbGVzIGxpa2UgcmF3IHN5c3RlbSBpbWFnZSBmaWxlcworICAgICAgICAgICAgbXVjaCBmYXN0ZXIuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgVWJ1bnR1IG9yIERlYmlhbiBkaXN0cmlidXRpb25zLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBpbnN0YWxsIHRoZSA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBhbmQgdGhlbiB1c2UgdGhlIHRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgc3BlY2lmeWluZyA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGV2ZW4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJvb3QgYWNjb3VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBibWFwLXRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bmFibGUgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwLXRvb2xzPC9maWxlbmFtZT4gcGFja2FnZSwgeW91IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYnVpbGQgQm1hcHRvb2wgYmVmb3JlIHVzaW5nIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGJtYXAtdG9vbHMtbmF0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nLCBpcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGZsYXNoIGEgV2ljIGltYWdlLgorICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IHdoaWxlIHRoaXMgZXhhbXBsZSB1c2VzIGEgV2ljIGltYWdlLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgQm1hcHRvb2wgdG8gZmxhc2ggYW55IHR5cGUgb2YgaW1hZ2UuCisgICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gZmxhc2ggYW4gaW1hZ2UgdXNpbmcgQm1hcHRvb2w6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBkYXRlIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBzZXQgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgYmVmb3JlIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIHlvdXIgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdldCBZb3VyIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgcHJldmlvdXNseSBtZW50aW9uZWQpIG9yIHRha2UgdGhlIHN0ZXAgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZsYXNoIHRoZSBEZXZpY2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmxhc2ggdGhlIGRldmljZSB3aXRoIHRoZSBpbWFnZSBieSB1c2luZyBCbWFwdG9vbAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIHNldHVwLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFzc3VtZSB0aGUgaW1hZ2UgcmVzaWRlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5J3MgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYXJlYToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlIG1lZGlhLCB1c2UgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBibWFwdG9vbCBjb3B5IDxyZXBsYWNlYWJsZT5idWlsZC1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPi90bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LndpYyAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSBtZWRpYSwgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwZXJtaXNzaW9ucyBmaXJzdCBhbmQgdGhlbiB1c2UgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gY2htb2QgNjY2IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBibWFwdG9vbCBjb3B5IDxyZXBsYWNlYWJsZT5idWlsZC1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPi90bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LndpYyAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGhlbHAgb24gdGhlIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQsIHVzZSB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJtYXB0b29sIC0taGVscAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21ha2luZy1pbWFnZXMtbW9yZS1zZWN1cmUnPgorICAgICAgICA8dGl0bGU+TWFraW5nIEltYWdlcyBNb3JlIFNlY3VyZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTZWN1cml0eSBpcyBvZiBpbmNyZWFzaW5nIGNvbmNlcm4gZm9yIGVtYmVkZGVkIGRldmljZXMuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgaXNzdWVzIGFuZCBwcm9ibGVtcyBkaXNjdXNzZWQgaW4ganVzdCB0aGlzCisgICAgICAgICAgICBzYW1wbGluZyBvZiB3b3JrIGZvdW5kIGFjcm9zcyB0aGUgSW50ZXJuZXQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3d3dy5zY2huZWllci5jb20vYmxvZy9hcmNoaXZlcy8yMDE0LzAxL3NlY3VyaXR5X3Jpc2tzXzkuaHRtbCc+U2VjdXJpdHkgUmlza3Mgb2YgRW1iZWRkZWQgU3lzdGVtczwvdWxpbms+IjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIGJ5IEJydWNlIFNjaG5laWVyCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vY2Vuc3VzMjAxMi5zb3VyY2Vmb3JnZS5uZXQvcGFwZXIuaHRtbCc+SW50ZXJuZXQgQ2Vuc3VzIDIwMTI8L3VsaW5rPiI8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBieSBDYXJuYSBCb3RuZXQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cDovL2VsaW51eC5vcmcvaW1hZ2VzLzYvNmYvU2VjdXJpdHktaXNzdWVzLnBkZic+U2VjdXJpdHkgSXNzdWVzIGZvciBFbWJlZGRlZCBEZXZpY2VzPC91bGluaz4iPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgYnkgSmFrZSBFZGdlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4gc2VjdXJpbmcgeW91ciBpbWFnZSBpcyBvZiBjb25jZXJuLCB0aGVyZSBhcmUgc3RlcHMsIHRvb2xzLAorICAgICAgICAgICAgYW5kIHZhcmlhYmxlcyB0aGF0IHlvdSBjYW4gY29uc2lkZXIgdG8gaGVscCB5b3UgcmVhY2ggdGhlCisgICAgICAgICAgICBzZWN1cml0eSBnb2FscyB5b3UgbmVlZCBmb3IgeW91ciBwYXJ0aWN1bGFyIGRldmljZS4KKyAgICAgICAgICAgIE5vdCBhbGwgc2l0dWF0aW9ucyBhcmUgaWRlbnRpY2FsIHdoZW4gaXQgY29tZXMgdG8gbWFraW5nIGFuCisgICAgICAgICAgICBpbWFnZSBzZWN1cmUuCisgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIGd1aWRhbmNlIGFuZCBzdWdnZXN0aW9ucworICAgICAgICAgICAgZm9yIGNvbnNpZGVyYXRpb24gd2hlbiB5b3Ugd2FudCB0byBtYWtlIHlvdXIgaW1hZ2UgbW9yZSBzZWN1cmUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzZWN1cml0eSByZXF1aXJlbWVudHMgYW5kIHJpc2tzIGFyZQorICAgICAgICAgICAgICAgIGRpZmZlcmVudCBmb3IgZXZlcnkgdHlwZSBvZiBkZXZpY2UsIHRoaXMgc2VjdGlvbiBjYW5ub3QKKyAgICAgICAgICAgICAgICBwcm92aWRlIGEgY29tcGxldGUgcmVmZXJlbmNlIG9uIHNlY3VyaW5nIHlvdXIgY3VzdG9tIE9TLgorICAgICAgICAgICAgICAgIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgeW91IGFsc28gY29uc3VsdCBvdGhlciBzb3VyY2VzCisgICAgICAgICAgICAgICAgb2YgaW5mb3JtYXRpb24gb24gZW1iZWRkZWQgTGludXggc3lzdGVtIGhhcmRlbmluZyBhbmQgb24KKyAgICAgICAgICAgICAgICBzZWN1cml0eS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdnZW5lcmFsLWNvbnNpZGVyYXRpb25zJz4KKyAgICAgICAgICAgIDx0aXRsZT5HZW5lcmFsIENvbnNpZGVyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgR2VuZXJhbCBjb25zaWRlcmF0aW9ucyBleGlzdCB0aGF0IGhlbHAgeW91IGNyZWF0ZSBtb3JlCisgICAgICAgICAgICAgICAgc2VjdXJlIGltYWdlcy4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc3VnZ2VzdGlvbnMgdG8gaGVscAorICAgICAgICAgICAgICAgIG1ha2UgeW91ciBkZXZpY2UgbW9yZSBzZWN1cmU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2NhbiBhZGRpdGlvbmFsIGNvZGUgeW91IGFyZSBhZGRpbmcgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gYXBwbGljYXRpb24gY29kZSkgYnkgdXNpbmcgc3RhdGljIGFuYWx5c2lzCisgICAgICAgICAgICAgICAgICAgICAgICB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3MgYW5kIG90aGVyIHBvdGVudGlhbAorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHkgcHJvYmxlbXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBQYXkgcGFydGljdWxhciBhdHRlbnRpb24gdG8gdGhlIHNlY3VyaXR5IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgYW55IHdlYi1iYXNlZCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XZWIgaW50ZXJmYWNlcyB0eXBpY2FsbHkgbmVlZCB0byBwZXJmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbmlzdHJhdGl2ZSBmdW5jdGlvbnMgYW5kIHRlbmQgdG8gbmVlZCB0byBydW4gd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWxldmF0ZWQgcHJpdmlsZWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBjb25zZXF1ZW5jZXMgcmVzdWx0aW5nIGZyb20gdGhlIGludGVyZmFjZSdzCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eSBiZWNvbWluZyBjb21wcm9taXNlZCBjYW4gYmUgc2VyaW91cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGNvbW1vbiB3ZWIgdnVsbmVyYWJpbGl0aWVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXNpdGUtc2NyaXB0aW5nIChYU1MpLCB1bnZhbGlkYXRlZCBpbnB1dHMsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBzeXN0ZW0gcGFzc3dvcmRzLCB0aGUgZGVmYXVsdCBjcmVkZW50aWFscworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFjY2Vzc2luZyBhIHdlYi1iYXNlZCBpbnRlcmZhY2Ugc2hvdWxkIG5vdCBiZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgYWNyb3NzIGFsbCBkZXZpY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBpZiB0aGUgaW50ZXJmYWNlIGlzIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgYXMgaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCBtYW55IGVuZC11c2VycworICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBub3QgY2hhbmdlIHRoZSBjcmVkZW50aWFscy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVuc3VyZSB5b3UgY2FuIHVwZGF0ZSB0aGUgc29mdHdhcmUgb24gdGhlIGRldmljZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgbWl0aWdhdGUgdnVsbmVyYWJpbGl0aWVzIGRpc2NvdmVyZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29uc2lkZXJhdGlvbiBlc3BlY2lhbGx5IGFwcGxpZXMgd2hlbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgaXMgbmV0d29yay1lbmFibGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHlvdSByZW1vdmUgb3IgZGlzYWJsZSBkZWJ1Z2dpbmcgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHByb2R1Y2luZyB0aGUgZmluYWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGRvIHRoaXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjb25zaWRlcmF0aW9ucy1zcGVjaWZpYy10by10aGUtb3BlbmVtYmVkZGVkLWJ1aWxkLXN5c3RlbSc+Q29uc2lkZXJhdGlvbnMgU3BlY2lmaWMgdG8gdGhlIE9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW08L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgeW91IGhhdmUgbm8gbmV0d29yayBzZXJ2aWNlcyBsaXN0ZW5pbmcgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgYW55IHNvZnR3YXJlIGZyb20gdGhlIGltYWdlIHRoYXQgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBoYXJkd2FyZSBzdXBwb3J0IGZvciBzZWN1cmUgYm9vdCBmdW5jdGlvbmFsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdXIgZGV2aWNlIHN1cHBvcnRzIHRoaXMgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2VjdXJpdHktZmxhZ3MnPgorICAgICAgICAgICAgPHRpdGxlPlNlY3VyaXR5IEZsYWdzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIHNlY3VyaXR5IGZsYWdzIHRoYXQgeW91IGNhbiBlbmFibGUgdGhhdAorICAgICAgICAgICAgICAgIGhlbHAgbWFrZSB5b3VyIGJ1aWxkIG91dHB1dCBtb3JlIHNlY3VyZS4KKyAgICAgICAgICAgICAgICBUaGUgc2VjdXJpdHkgZmxhZ3MgYXJlIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSByZWNpcGUsIGNlcnRhaW4gc2VjdXJpdHkgZmxhZ3MgYXJlIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKzwhLS0KKyAgICAgICAgICAgICAgICBUaGUgR0NDL0xEIGZsYWdzIGluIDxmaWxlbmFtZT5zZWN1cml0eV9mbGFncy5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGVuYWJsZSBtb3JlIHNlY3VyZSBjb2RlIGdlbmVyYXRpb24uCisgICAgICAgICAgICAgICAgQnkgaW5jbHVkaW5nIHRoZSA8ZmlsZW5hbWU+c2VjdXJpdHlfZmxhZ3MuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlLCB5b3UgZW5hYmxlIGZsYWdzIHRvIHRoZSBjb21waWxlciBhbmQgbGlua2VyIHRoYXQgY2F1c2UKKyAgICAgICAgICAgICAgICB0aGVtIHRvIGdlbmVyYXRlIG1vcmUgc2VjdXJlIGNvZGUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBHQ0MvTEQgZmxhZ3MgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktbHNiPC9maWxlbmFtZT4gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKy0tPgorICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGxpbmUgaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBpbiB5b3VyIGN1c3RvbQorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUgdG8gZW5hYmxlIHRoZSBzZWN1cml0eQorICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFuZCBsaW5rZXIgZmxhZ3MgZm9yIHlvdXIgYnVpbGQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbnNpZGVyYXRpb25zLXNwZWNpZmljLXRvLXRoZS1vcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtJz4KKyAgICAgICAgICAgIDx0aXRsZT5Db25zaWRlcmF0aW9ucyBTcGVjaWZpYyB0byB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGFrZSBzb21lIHN0ZXBzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gbWFrZSB5b3VyIGltYWdlcyBtb3JlIHNlY3VyZToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgImRlYnVnLXR3ZWFrcyIgaXMgbm90IG9uZSBvZiB5b3VyIHNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIGEgbmV3IHByb2plY3QsIHRoZSBkZWZhdWx0IGlzIHRvIHByb3ZpZGUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFuIGluaXRpYWwgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZXMgdGhpcyBmZWF0dXJlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RVhUUkFfSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlIHdpdGggdGhlIGxpbmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJkZWJ1Zy10d2Vha3MiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUsIHNpbXBseSBjb21tZW50IG91dCB0aGF0IGxpbmUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBzdXJlIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IGRvZXMgbm90IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Zy10d2Vha3MiIGJlZm9yZSBwcm9kdWNpbmcgeW91ciBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgbGVhdmluZyB0aGlzIGluIHBsYWNlIHNldHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICByb290IHBhc3N3b3JkIGFzIGJsYW5rLCB3aGljaCBtYWtlcyBsb2dnaW5nIGluIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIG9yIGluc3BlY3Rpb24gZWFzeSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJ1dCBhbHNvIG1lYW5zIGFueW9uZSBjYW4gZWFzaWx5IGxvZyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHByb2R1Y3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gc2V0IGEgcm9vdCBwYXNzd29yZCBmb3IgdGhlIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYWxzbyB0byBzZXQgcGFzc3dvcmRzIGZvciBhbnkgZXh0cmEgdXNlcnMgeW91IG1pZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBhZGQgKGUuZy4gYWRtaW5pc3RyYXRpdmUgb3Igc2VydmljZSB0eXBlIHVzZXJzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNldCB1cCBwYXNzd29yZHMgZm9yIG11bHRpcGxlIGltYWdlcyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnMsIHlvdSBzaG91bGQgbm90IGR1cGxpY2F0ZSBwYXNzd29yZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHNldCB1cCBwYXNzd29yZHMsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWV4dHJhdXNlcnMnPjxmaWxlbmFtZT5leHRyYXVzZXJzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb24gaG93IHRvIHNldCB1cCBib3RoIHJvb3QgYW5kIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3Jkcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWV4dHJhdXNlcnMnPjxmaWxlbmFtZT5leHRyYXVzZXJzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYWRkaW5nIGV4dHJhIHVzZXIgYWNjb3VudHMgb3Igc2V0dGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBwYXNzd29yZCwgYmUgY2F1dGlvdXMgYWJvdXQgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHBhc3N3b3JkIG9uIGV2ZXJ5IGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gdGhpcywgYW5kIHRoZSBwYXNzd29yZCB5b3UgaGF2ZSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBleHBvc2VkLCB0aGVuIGV2ZXJ5IGRldmljZSBpcyBub3cgcG90ZW50aWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcm9taXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0aGlzIGFjY2VzcyBidXQgd2FudCB0byBlbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eSwgY29uc2lkZXIgc2V0dGluZyBhIGRpZmZlcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20gcGFzc3dvcmQgZm9yIGVhY2ggZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IGRvIHRoaXMgYXMgYSBzZXBhcmF0ZSBzdGVwIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGRlcGxveSB0aGUgaW1hZ2Ugb250byB0aGUgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIGVuYWJsaW5nIGEgTWFuZGF0b3J5IEFjY2VzcyBDb250cm9sIChNQUMpCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsgc3VjaCBhcyBTTUFDSyBvciBTRUxpbnV4IGFuZCB0dW5pbmcgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlbHkgZm9yIHlvdXIgZGV2aWNlJ3MgdXNhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtc2VsaW51eC8nPjxmaWxlbmFtZT5tZXRhLXNlbGludXg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0b29scy1mb3ItaGFyZGVuaW5nLXlvdXItaW1hZ2UnPgorICAgICAgICAgICAgPHRpdGxlPlRvb2xzIGZvciBIYXJkZW5pbmcgWW91ciBJbWFnZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHRvb2xzIGZvciBtYWtpbmcgeW91ciBpbWFnZQorICAgICAgICAgICAgICAgIG1vcmUgc2VjdXJlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSB0b29scyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1zZWN1cml0eTwvZmlsZW5hbWU+IGxheWVyIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmcteW91ci1vd24tZGlzdHJpYnV0aW9uJz4KKyAgICAgICAgPHRpdGxlPkNyZWF0aW5nIFlvdXIgT3duIERpc3RyaWJ1dGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBidWlsZCBhbiBpbWFnZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbmQKKyAgICAgICAgICAgIGRvIG5vdCBhbHRlciBhbnkgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiwKKyAgICAgICAgICAgIHlvdSBhcmUgY3JlYXRpbmcgYSBQb2t5IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIGdhaW4gbW9yZSBjb250cm9sIG92ZXIgcGFja2FnZSBhbHRlcm5hdGl2ZQorICAgICAgICAgICAgc2VsZWN0aW9ucywgY29tcGlsZS10aW1lIG9wdGlvbnMsIGFuZCBvdGhlciBsb3ctbGV2ZWwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24sIHRoZSBiYXNpYyBzdGVwcyBjb25zaXN0IG9mCisgICAgICAgICAgICBjcmVhdGluZyB5b3VyIG93biBkaXN0cmlidXRpb24gbGF5ZXIsIGNyZWF0aW5nIHlvdXIgb3duCisgICAgICAgICAgICBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlLCBhbmQgdGhlbiBhZGRpbmcgYW55IG5lZWRlZAorICAgICAgICAgICAgY29kZSBhbmQgTWV0YWRhdGEgdG8gdGhlIGxheWVyLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBwcm92aWRlIHNvbWUgbW9yZSBkZXRhaWw6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q3JlYXRlIGEgbGF5ZXIgZm9yIHlvdXIgbmV3IGRpc3Rybzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGUgeW91ciBkaXN0cmlidXRpb24gbGF5ZXIgc28gdGhhdCB5b3UgY2FuIGtlZXAgeW91cgorICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbmQgY29kZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBzZXBhcmF0ZS4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgY3JlYXRlIGFuZCB1c2UgeW91ciBvd24KKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgZm9yIGNvbmZpZ3VyYXRpb24gYW5kIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHlvdXIgb3duIGxheWVyIGFzIGNvbXBhcmVkIHRvIGp1c3QgcGxhY2luZworICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbiBhIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIG1ha2VzIGl0IGVhc2llciB0byByZXByb2R1Y2UgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgY29uZmlndXJhdGlvbiB3aGVuIHVzaW5nIG11bHRpcGxlIGJ1aWxkIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcXVpY2tseSBzZXQgdXAgYSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUgbmVlZHMgdG8gYmUgY3JlYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmNvbmYvZGlzdHJvPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIG5hbWUgaXQgdXNpbmcgeW91ciBkaXN0cmlidXRpb24gbmFtZQorICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bXlkaXN0cm8uY29uZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZGV0ZXJtaW5lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gc3BsaXQgb3V0IHBhcnRzIG9mIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgIGludG8gaW5jbHVkZSBmaWxlcyBhbmQgdGhlbiAicmVxdWlyZSIgdGhlbSBmcm9tIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB5b3VyIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcGxhY2UgdGhlIGluY2x1ZGUgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgICAgIHlvdXIgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIEEgY29tbW9uIGV4YW1wbGUgdXNhZ2Ugb2YgaW5jbHVkZSBmaWxlcyB3b3VsZCBiZSB0bworICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSBvdXQgdGhlIHNlbGVjdGlvbiBvZiBkZXNpcmVkIHZlcnNpb24gYW5kIHJldmlzaW9ucworICAgICAgICAgICAgICAgICAgICBmb3IgaW5kaXZpZHVhbCByZWNpcGVzLgorPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3VyIGNvbmZpZ3VyYXRpb24gZmlsZSBuZWVkcyB0byBzZXQgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCB2YXJpYWJsZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19OQU1FJz48ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fVkVSU0lPTic+PGZpbGVuYW1lPkRJU1RST19WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIG9wdGlvbmFsIGFuZCB5b3UgdHlwaWNhbGx5CisgICAgICAgICAgICAgICAgICAgIHNldCB0aGVtIGZyb20gdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19FWFRSQV9SREVQRU5EUyc+PGZpbGVuYW1lPkRJU1RST19FWFRSQV9SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPkRJU1RST19FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRDTElCQyc+PGZpbGVuYW1lPlRDTElCQzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8dGlwPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYmFzZSB5b3VyIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB2ZXJ5IGJhc2ljIGNvbmZpZ3VyYXRpb24gZnJvbSBPRS1Db3JlLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZjwvZmlsZW5hbWU+IGFzCisgICAgICAgICAgICAgICAgICAgICAgICBhIHJlZmVyZW5jZSBhbmQganVzdCBpbmNsdWRlIHZhcmlhYmxlcyB0aGF0IGRpZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgY29tcGFyZWQgdG8gPGZpbGVuYW1lPmRlZmF1bHRzZXR1cC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNyZWF0ZSBhIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGZyb20gc2NyYXRjaCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZhdWx0c2V0dXAuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSBvdGhlciBkaXN0cmlidXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIFBva3kgb3IgQW5nc3Ryb20gYXMgcmVmZXJlbmNlcy4KKyAgICAgICAgICAgICAgICAgICAgPC90aXA+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Qcm92aWRlIG1pc2NlbGxhbmVvdXMgdmFyaWFibGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gZGVmaW5lIGFueSBvdGhlciB2YXJpYWJsZXMgZm9yIHdoaWNoIHlvdSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIGRlZmF1bHQgb3IgZW5mb3JjZSBhcyBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbmNsdWRlIG5lYXJseSBhbnkgdmFyaWFibGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGVzIHlvdSB1c2UgYXJlIG5vdCBsaW1pdGVkIHRvIHRoZSBsaXN0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBidWxsZXRlZCBpdGVtLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UG9pbnQgdG8gWW91ciBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBzZXQgeW91cgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB5b3VyIGRpc3RyaWJ1dGlvbidzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgZGlzdHJpYnV0aW9uJ3MgY29uZmlndXJhdGlvbiBmaWxlIGlzCisgICAgICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5teWRpc3Ryby5jb25mPC9maWxlbmFtZT4sIHRoZW4geW91IHBvaW50CisgICAgICAgICAgICAgICAgICAgIHRvIGl0IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPID0gIm15ZGlzdHJvIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BZGQgbW9yZSB0byB0aGUgbGF5ZXIgaWYgbmVjZXNzYXJ5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB5b3VyIGxheWVyIHRvIGhvbGQgb3RoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFkZCByZWNpcGVzIGZvciBpbnN0YWxsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJvLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBpbnN0YWxsZWQgYnkgYW5vdGhlciByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgZGlzdHJvLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBpbmNsdWRlZCBieSBhbiBleGlzdGluZyByZWNpcGUsIHlvdSBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgYW4gYXBwZW5kIGZpbGUgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhvc2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYW5kIHJlY29tbWVuZGF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGhvdyB0byBhZGQgcmVjaXBlcyB0byB5b3VyIGxheWVyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Jlc3QtcHJhY3RpY2VzLXRvLWZvbGxvdy13aGVuLWNyZWF0aW5nLWxheWVycyc+Rm9sbG93aW5nIEJlc3QgUHJhY3RpY2VzIFdoZW4gQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGQgYW55IGltYWdlIHJlY2lwZXMgdGhhdCBhcmUgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB5b3VyIGRpc3RyaWJ1dGlvbi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGQgYSA8ZmlsZW5hbWU+cHNwbGFzaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kIGZpbGUgZm9yIGEgYnJhbmRlZCBzcGxhc2ggc2NyZWVuLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhcHBlbmQgZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFkZCBhbnkgb3RoZXIgYXBwZW5kIGZpbGVzIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gY2hhbmdlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBpbmRpdmlkdWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+CisgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIEN1c3RvbSBUZW1wbGF0ZSBDb25maWd1cmF0aW9uIERpcmVjdG9yeTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgYXJlIHByb2R1Y2luZyB5b3VyIG93biBjdXN0b21pemVkIHZlcnNpb24KKyAgICAgICAgICAgIG9mIHRoZSBidWlsZCBzeXN0ZW0gZm9yIHVzZSBieSBvdGhlciB1c2VycywgeW91IG1pZ2h0CisgICAgICAgICAgICB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgbWVzc2FnZSBzaG93biBieSB0aGUgc2V0dXAgc2NyaXB0IG9yCisgICAgICAgICAgICB5b3UgbWlnaHQgd2FudCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+KSB0aGF0IGFyZSBjcmVhdGVkIGluCisgICAgICAgICAgICBhIG5ldyBidWlsZCBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgICAgICA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gdG8gbG9jYXRlIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIGZyb20gd2hpY2ggaXQgZ2F0aGVycyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRoYXQgdWx0aW1hdGVseQorICAgICAgICAgICAgZW5kcyB1cCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IGlzIHNldCBhcworICAgICAgICAgICAgZm9sbG93cyBpbiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURU1QTEFURUNPTkY9JHtURU1QTEFURUNPTkY6LW1ldGEtcG9reS9jb25mfQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhpcyBpcyB0aGUgZGlyZWN0b3J5IHVzZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHRlbXBsYXRlcworICAgICAgICAgICAgZnJvbSB3aGljaCB0byBidWlsZCBzb21lIGtleSBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhpcyBkaXJlY3RvcnksIHlvdSB3aWxsIHNlZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYtbm90ZXMudHh0PC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlc2UgZmlsZXMgdG8gZm9ybSB0aGUgcmVzcGVjdGl2ZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCBhbmQgZGlzcGxheSB0aGUgbGlzdCBvZgorICAgICAgICAgICAgQml0QmFrZSB0YXJnZXRzIHdoZW4gcnVubmluZyB0aGUgc2V0dXAgc2NyaXB0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBvdmVycmlkZSB0aGVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMgd2l0aAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgeW91IHdhbnQgdXNlZCB3aXRoaW4gZXZlcnkgbmV3CisgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnksIHNpbXBseSBzZXQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFyaWFibGUgdG8geW91ciBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4udGVtcGxhdGVjb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgaW4gdGhlCisgICAgICAgICAgICB0b3AtbGV2ZWwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgZm9sZGVyIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgRWRpdCB0aGUgPGZpbGVuYW1lPi50ZW1wbGF0ZWNvbmY8L2ZpbGVuYW1lPiBzbyB0aGF0IGl0IGNhbiBsb2NhdGUKKyAgICAgICAgICAgIHlvdXIgZGlyZWN0b3J5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IHNob3VsZCBrZWVwIHlvdXIKKyAgICAgICAgICAgIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGluIHlvdXIgY3VzdG9tIGRpc3RyaWJ1dGlvbiBsYXllci4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlIGEgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPiBsb2NhdGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIGFuZCB5b3Ugd2FudCB5b3VyIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+bXljb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICBDaGFuZ2luZyB0aGUgPGZpbGVuYW1lPi50ZW1wbGF0ZWNvbmY8L2ZpbGVuYW1lPiBhcyBmb2xsb3dzCisgICAgICAgICAgICBjYXVzZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gbG9vayBpbiB5b3VyIGRpcmVjdG9yeQorICAgICAgICAgICAgYW5kIGJhc2UgaXRzIGNvbmZpZ3VyYXRpb24gZmlsZXMgb24gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5zYW1wbGU8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzIGl0IGZpbmRzLgorICAgICAgICAgICAgVGhlIGZpbmFsIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IHVsdGltYXRlbHkgc3RpbGwgZW5kIHVwIGluCisgICAgICAgICAgICB5b3VyIEJ1aWxkIERpcmVjdG9yeSwgYnV0IHRoZXkgYXJlIGJhc2VkIG9uIHlvdXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT4qLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURU1QTEFURUNPTkY9JHtURU1QTEFURUNPTkY6LW1ldGEtbXlsYXllci9teWNvbmZ9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzaWRlIGZyb20gdGhlIDxmaWxlbmFtZT4qLnNhbXBsZTwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZXMsCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmNvbmYtbm90ZXMudHh0PC9maWxlbmFtZT4gYWxzbyByZXNpZGVzIGluIHRoZQorICAgICAgICAgICAgZGVmYXVsdCA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGUgc2NyaXB0IHRoYXQgc2V0cyB1cCB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIChpLmUuCisgICAgICAgICAgICA8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICB1c2VzIHRoaXMgZmlsZSB0byBkaXNwbGF5IEJpdEJha2UgdGFyZ2V0cyBhcyBwYXJ0IG9mIHRoZSBzY3JpcHQKKyAgICAgICAgICAgIG91dHB1dC4KKyAgICAgICAgICAgIEN1c3RvbWl6aW5nIHRoaXMgPGZpbGVuYW1lPmNvbmYtbm90ZXMudHh0PC9maWxlbmFtZT4gZmlsZSBpcyBhCisgICAgICAgICAgICBnb29kIHdheSB0byBtYWtlIHN1cmUgeW91ciBsaXN0IG9mIGN1c3RvbSB0YXJnZXRzIGFwcGVhcnMKKyAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIHNjcmlwdCdzIG91dHB1dC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSGVyZSBpcyB0aGUgZGVmYXVsdCBsaXN0IG9mIHRhcmdldHMgZGlzcGxheWVkIGFzIGEgcmVzdWx0IG9mCisgICAgICAgICAgICBydW5uaW5nIGVpdGhlciBvZiB0aGUgc2V0dXAgc2NyaXB0czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgWW91IGNhbiBub3cgcnVuICdiaXRiYWtlICZsdDt0YXJnZXQmZ3Q7JworCisgICAgIENvbW1vbiB0YXJnZXRzIGFyZToKKyAgICAgICAgIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICAgY29yZS1pbWFnZS1zYXRvCisgICAgICAgICBtZXRhLXRvb2xjaGFpbgorICAgICAgICAgbWV0YS1pZGUtc3VwcG9ydAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDaGFuZ2luZyB0aGUgbGlzdGVkIGNvbW1vbiB0YXJnZXRzIGlzIGFzIGVhc3kgYXMgZWRpdGluZyB5b3VyCisgICAgICAgICAgICB2ZXJzaW9uIG9mIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGluIHlvdXIKKyAgICAgICAgICAgIGN1c3RvbSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBhbmQgbWFraW5nIHN1cmUgeW91CisgICAgICAgICAgICBoYXZlIDxmaWxlbmFtZT5URU1QTEFURUNPTkY8L2ZpbGVuYW1lPiBzZXQgdG8geW91ciBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZGV2LXNhdmluZy1tZW1vcnktZHVyaW5nLWEtYnVpbGQnPgorICAgICAgICA8dGl0bGU+Q29uc2VydmluZyBEaXNrIFNwYWNlIER1cmluZyBCdWlsZHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gaGVscCBjb25zZXJ2ZSBkaXNrIHNwYWNlIGR1cmluZyBidWlsZHMsIHlvdSBjYW4gYWRkIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHN0YXRlbWVudCB0byB5b3VyIHByb2plY3QncworICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJybV93b3JrIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQWRkaW5nIHRoaXMgc3RhdGVtZW50IGRlbGV0ZXMgdGhlIHdvcmsgZGlyZWN0b3J5IHVzZWQgZm9yIGJ1aWxkaW5nCisgICAgICAgICAgICBhIHJlY2lwZSBvbmNlIHRoZSByZWNpcGUgaXMgYnVpbHQuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAicm1fd29yayIsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgY2xhc3MgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd3b3JraW5nLXdpdGgtcGFja2FnZXMnPgorICAgICAgICA8dGl0bGU+V29ya2luZyB3aXRoIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgYSBmZXcgdGFza3MgdGhhdCBpbnZvbHZlIHBhY2thZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2V4Y2x1ZGluZy1wYWNrYWdlcy1mcm9tLWFuLWltYWdlJz5FeGNsdWRpbmcgcGFja2FnZXMgZnJvbSBhbiBpbWFnZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS12ZXJzaW9uJz5JbmNyZW1lbnRpbmcgYSBiaW5hcnkgcGFja2FnZSB2ZXJzaW9uPC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2hhbmRsaW5nLW9wdGlvbmFsLW1vZHVsZS1wYWNrYWdpbmcnPkhhbmRsaW5nIG9wdGlvbmFsIG1vZHVsZSBwYWNrYWdpbmc8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctcnVudGltZS1wYWNrYWdlLW1hbmFnZW1lbnQnPlVzaW5nIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50PC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYXRpbmctYW5kLXVzaW5nLXNpZ25lZC1wYWNrYWdlcyc+R2VuZXJhdGluZyBhbmQgdXNpbmcgc2lnbmVkIHBhY2thZ2VzPC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+U2V0dGluZyB1cCBhbmQgcnVubmluZyBwYWNrYWdlIHRlc3QgKHB0ZXN0KTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1ub2RlLXBhY2thZ2UtbWFuYWdlci1ucG0tcGFja2FnZXMnPkNyZWF0aW5nIG5vZGUgcGFja2FnZSBtYW5hZ2VyIChOUE0pIHBhY2thZ2VzPC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2FkZGluZy1jdXN0b20tbWV0YWRhdGEtdG8tcGFja2FnZXMnPkFkZGluZyBjdXN0b20gbWV0YWRhdGEgdG8gcGFja2FnZXM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZXhjbHVkaW5nLXBhY2thZ2VzLWZyb20tYW4taW1hZ2UnPgorICAgICAgICAgICAgPHRpdGxlPkV4Y2x1ZGluZyBQYWNrYWdlcyBmcm9tIGFuIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgaXQgbmVjZXNzYXJ5IHRvIHByZXZlbnQgc3BlY2lmaWMgcGFja2FnZXMKKyAgICAgICAgICAgICAgICBmcm9tIGJlaW5nIGluc3RhbGxlZCBpbnRvIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIHVzZSBzZXZlcmFsIHZhcmlhYmxlcyB0byBkaXJlY3QgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGVzc2VudGlhbGx5IGlnbm9yZSBpbnN0YWxsaW5nIHJlY29tbWVuZGVkIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgb3IgdG8gbm90IGluc3RhbGwgYSBwYWNrYWdlIGF0IGFsbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGludHJvZHVjZXMgdmFyaWFibGVzIHlvdSBjYW4gdXNlIHRvCisgICAgICAgICAgICAgICAgcHJldmVudCBwYWNrYWdlcyBmcm9tIGJlaW5nIGluc3RhbGxlZCBpbnRvIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSB2YXJpYWJsZXMgb25seSB3b3JrcyB3aXRoIElQSyBhbmQgUlBNCisgICAgICAgICAgICAgICAgcGFja2FnZSB0eXBlcy4KKyAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBEZWJpYW4gcGFja2FnZXMgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgQWxzbywgeW91IGNhbiB1c2UgdGhlc2UgdmFyaWFibGVzIGZyb20geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBhdHRhY2ggdGhlbSB0byBhCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgaW1hZ2UgcmVjaXBlIGJ5IHVzaW5nIGEgcmVjaXBlIG5hbWUgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIHRoZSB2YXJpYWJsZXMsIHNlZSB0aGUgZGVzY3JpcHRpb25zIGluIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCdzIGdsb3NzYXJ5IGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQURfUkVDT01NRU5EQVRJT05TJz48ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyB2YXJpYWJsZSB0byBzcGVjaWZ5ICJyZWNvbW1lbmRlZC1vbmx5IgorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgdGhhdCB5b3UgZG8gbm90IHdhbnQgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTk9fUkVDT01NRU5EQVRJT05TJz48ZmlsZW5hbWU+Tk9fUkVDT01NRU5EQVRJT05TPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHZhcmlhYmxlIHRvIHByZXZlbnQgYWxsICJyZWNvbW1lbmRlZC1vbmx5IgorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgZnJvbSBiZWluZyBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0VYQ0xVREUnPjxmaWxlbmFtZT5QQUNLQUdFX0VYQ0xVREU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgdmFyaWFibGUgdG8gcHJldmVudCBzcGVjaWZpYyBwYWNrYWdlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBpbnN0YWxsZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAicmVjb21tZW5kZWQtb25seSIgb3Igbm90LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gcmVhbGl6ZSB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsIHdpdGggYW4gZXJyb3Igd2hlbiB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlbnQgdGhlIGluc3RhbGxhdGlvbiBvZiBhIHBhY2thZ2Ugd2hvc2UgcHJlc2VuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlcXVpcmVkIGJ5IGFuIGluc3RhbGxlZCBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW5jcmVtZW50aW5nLWEtYmluYXJ5LXBhY2thZ2UtdmVyc2lvbic+CisgICAgICAgICAgICA8dGl0bGU+SW5jcmVtZW50aW5nIGEgUGFja2FnZSBWZXJzaW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBvbiBob3cgYmluYXJ5IHBhY2thZ2UKKyAgICAgICAgICAgICAgICB2ZXJzaW9uaW5nIGlzIGFjY29tcGxpc2hlZCBhbmQgcHJlc2VudHMgc29tZSBvZiB0aGUgc2VydmljZXMsCisgICAgICAgICAgICAgICAgdmFyaWFibGVzLCBhbmQgdGVybWlub2xvZ3kgaW52b2x2ZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVuZGVyc3RhbmQgYmluYXJ5IHBhY2thZ2UgdmVyc2lvbmluZywgeW91IG5lZWQKKyAgICAgICAgICAgICAgICB0byBjb25zaWRlciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeSBQYWNrYWdlOiAgVGhlIGJpbmFyeSBwYWNrYWdlIHRoYXQgaXMgZXZlbnR1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgYW5kIGluc3RhbGxlZCBpbnRvIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeSBQYWNrYWdlIFZlcnNpb246ICBUaGUgYmluYXJ5IHBhY2thZ2UgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgY29tcG9zZWQgb2YgdHdvIGNvbXBvbmVudHMgLSBhIHZlcnNpb24gYW5kIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVjaG5pY2FsbHksIGEgdGhpcmQgY29tcG9uZW50LCB0aGUgImVwb2NoIiAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBpbnZvbHZlZCBidXQgdGhpcyBkaXNjdXNzaW9uIGZvciB0aGUgbW9zdCBwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlcyA8ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIGFuZCByZXZpc2lvbiBhcmUgdGFrZW4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+OiAgVGhlIHJlY2lwZSB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGJlaW5nIHBhY2thZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IGNvbmZ1c2UgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSBwYWNrYWdlIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT46ICBUaGUgcmVjaXBlIHJldmlzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNQVic+PGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhpcyBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGhlbHAgZGVmaW5lIHRoZSB2YWx1ZSBvZiA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgc291cmNlIGNvZGUgcmV2aXNpb24gbmVlZHMgdG8gYmUgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvUFJfU2VydmljZSc+UFIgU2VydmljZTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBuZXR3b3JrLWJhc2VkIHNlcnZpY2UgdGhhdCBoZWxwcyBhdXRvbWF0ZSBrZWVwaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGZlZWRzIGNvbXBhdGlibGUgd2l0aCBleGlzdGluZyBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyIGFwcGxpY2F0aW9ucyBzdWNoIGFzIFJQTSwgQVBULCBhbmQgT1BLRy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuZXZlciB0aGUgYmluYXJ5IHBhY2thZ2UgY29udGVudCBjaGFuZ2VzLCB0aGUgYmluYXJ5IHBhY2thZ2UKKyAgICAgICAgICAgICAgICB2ZXJzaW9uIG11c3QgY2hhbmdlLgorICAgICAgICAgICAgICAgIENoYW5naW5nIHRoZSBiaW5hcnkgcGFja2FnZSB2ZXJzaW9uIGlzIGFjY29tcGxpc2hlZCBieSBjaGFuZ2luZworICAgICAgICAgICAgICAgIG9yICJidW1waW5nIiB0aGUgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gYW5kL29yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gdmFsdWVzLgorICAgICAgICAgICAgICAgIEluY3JlYXNpbmcgdGhlc2UgdmFsdWVzIG9jY3VycyBvbmUgb2YgdHdvIHdheXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkF1dG9tYXRpY2FsbHkgdXNpbmcgYSBQYWNrYWdlIFJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIChQUiBTZXJ2aWNlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TWFudWFsbHkgaW5jcmVtZW50aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gYW5kL29yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgR2l2ZW4gYSBwcmltYXJ5IGNoYWxsZW5nZSBvZiBhbnkgYnVpbGQgc3lzdGVtIGFuZCBpdHMgdXNlcnMKKyAgICAgICAgICAgICAgICBpcyBob3cgdG8gbWFpbnRhaW4gYSBwYWNrYWdlIGZlZWQgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGgKKyAgICAgICAgICAgICAgICBleGlzdGluZyBwYWNrYWdlIG1hbmFnZXIgYXBwbGljYXRpb25zIHN1Y2ggYXMgUlBNLCBBUFQsIGFuZAorICAgICAgICAgICAgICAgIE9QS0csIHVzaW5nIGFuIGF1dG9tYXRlZCBzeXN0ZW0gaXMgbXVjaCBwcmVmZXJyZWQgb3ZlciBhCisgICAgICAgICAgICAgICAgbWFudWFsIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBJbiBlaXRoZXIgc3lzdGVtLCB0aGUgbWFpbiByZXF1aXJlbWVudCBpcyB0aGF0IGJpbmFyeSBwYWNrYWdlCisgICAgICAgICAgICAgICAgdmVyc2lvbiBudW1iZXJpbmcgaW5jcmVhc2VzIGluIGEgbGluZWFyIGZhc2hpb24gYW5kIHRoYXQgYQorICAgICAgICAgICAgICAgIG51bWJlciBvZiB2ZXJzaW9uIGNvbXBvbmVudHMgZXhpc3QgdGhhdCBzdXBwb3J0IHRoYXQgbGluZWFyCisgICAgICAgICAgICAgICAgcHJvZ3Jlc3Npb24uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlbnN1cmUgcGFja2FnZSByZXZpc2lvbmluZyByZW1haW5zCisgICAgICAgICAgICAgICAgbGluZWFyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2F1dG9tYXRpY2FsbHktaW5jcmVtZW50aW5nLWEtYmluYXJ5LXBhY2thZ2UtcmV2aXNpb24tbnVtYmVyJz5BdXRvbWF0aWNhbGx5IEluY3JlbWVudGluZyBhIEJpbmFyeSBQYWNrYWdlIFJldmlzaW9uIE51bWJlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB0aHJlZSBzZWN0aW9ucyBwcm92aWRlIHJlbGF0ZWQgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgUFIgU2VydmljZSwgdGhlIG1hbnVhbCBtZXRob2QgZm9yICJidW1waW5nIgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IGFuZC9vciA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgb24gaG93IHRvIGVuc3VyZSBiaW5hcnkgcGFja2FnZSByZXZpc2lvbmluZyByZW1haW5zIGxpbmVhci4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC1hLXByLXNlcnZpY2UnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggYSBQUiBTZXJ2aWNlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQsIGF0dGVtcHRpbmcgdG8gbWFpbnRhaW4gcmV2aXNpb24gbnVtYmVycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgZXJyb3IgcHJvbmUsIGluYWNjdXJhdGUsIGFuZCBjYXVzZXMgcHJvYmxlbXMgZm9yIHBlb3BsZQorICAgICAgICAgICAgICAgICAgICBzdWJtaXR0aW5nIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIENvbnZlcnNlbHksIHRoZSBQUiBTZXJ2aWNlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzCisgICAgICAgICAgICAgICAgICAgIGluY3JlYXNpbmcgbnVtYmVycywgcGFydGljdWxhcmx5IHRoZSByZXZpc2lvbiBmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggcmVtb3ZlcyB0aGUgaHVtYW4gZWxlbWVudC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB1c2luZyBhIFBSIFNlcnZpY2UsIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9QUl9TZXJ2aWNlJz5QUiBTZXJ2aWNlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIHZhcmlhYmxlcyBpbiBvcmRlciBvZgorICAgICAgICAgICAgICAgICAgICBkZWNyZWFzaW5nIHByaW9yaXR5IHRvIGZhY2lsaXRhdGUgcmV2aXNpb24gbnVtYmVyaW5nIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBlcG9jaCwgdmVyc2lvbiwgYW5kIHJldmlzaW9uLCByZXNwZWN0aXZlbHkpLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWVzIGFyZSBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBwb2xpY2llcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcyBvZiBhIGdpdmVuIGRpc3RyaWJ1dGlvbiBhbmQgcGFja2FnZSBmZWVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjb3ZlcnZpZXctY2hlY2tzdW1zJz5zaWduYXR1cmVzPC91bGluaz4iLAorICAgICAgICAgICAgICAgICAgICB3aGljaCBhcmUgdW5pcXVlIHRvIGEgZ2l2ZW4gYnVpbGQsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAga25vd3Mgd2hlbiB0byByZWJ1aWxkIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBBbGwgdGhlIGlucHV0cyBpbnRvIGEgZ2l2ZW4gdGFzayBhcmUgcmVwcmVzZW50ZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUsIHdoaWNoIGNhbiB0cmlnZ2VyIGEgcmVidWlsZCB3aGVuIGRpZmZlcmVudC4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJ1aWxkIHN5c3RlbSBpdHNlbGYgZG9lcyBub3QgcmVseSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBFPC9maWxlbmFtZT4gbnVtYmVycyB0byB0cmlnZ2VyIGEgcmVidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNpZ25hdHVyZXMsIGhvd2V2ZXIsIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZXNlIHZhbHVlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFBSIFNlcnZpY2Ugd29ya3Mgd2l0aCBib3RoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRUJhc2ljPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRUJhc2ljSGFzaDwvZmlsZW5hbWU+IGdlbmVyYXRvcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBidW1wcyB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSBjaGFuZ2VzIGFuZCB0aGUgZGlmZmVyZW50IGdlbmVyYXRvciBtZWNoYW5pc21zCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZSBzaWduYXR1cmVzIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBpbXBsZW1lbnRlZCwgdGhlIGJ1aWxkIHN5c3RlbSBpbmNsdWRlcyB2YWx1ZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICB0aGUgUFIgU2VydmljZSBpbnRvIHRoZSA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBmaWVsZCBhcworICAgICAgICAgICAgICAgICAgICBhbiBhZGRpdGlvbiB1c2luZyB0aGUgZm9ybSAiPGZpbGVuYW1lPi54PC9maWxlbmFtZT4iIHNvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yMDwvZmlsZW5hbWU+IGJlY29tZXMgPGZpbGVuYW1lPnIwLjE8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnIwLjI8L2ZpbGVuYW1lPiBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2NoZW1lIGFsbG93cyBleGlzdGluZyA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBmb3Igd2hhdGV2ZXIgcmVhc29ucywgd2hpY2ggaW5jbHVkZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gYnVtcHMsIHNob3VsZCBpdCBiZSBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBQUiBTZXJ2aWNlIGlzIG5vdCBlbmFibGVkIG9yIHJ1bm5pbmcuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBwYWNrYWdlcyBnZW5lcmF0ZWQgYXJlIGp1c3QgInNlbGYgY29uc2lzdGVudCIuCisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gYWRkcyBhbmQgcmVtb3ZlcyBwYWNrYWdlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMgYWJvdXQgdXBncmFkZSBwYXRocyBidXQgaW1hZ2VzCisgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgY29uc2lzdGVudCBhbmQgY29ycmVjdCB3aXRoIHRoZSBsYXRlc3QgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNpbXBsZXN0IGZvcm0gZm9yIGEgUFIgU2VydmljZSBpcyBmb3IgaXQgdG8gZXhpc3QKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgc2luZ2xlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIHRoYXQgYnVpbGRzIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGZlZWQgKGJ1aWxkaW5nIHN5c3RlbSkuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIHNjZW5hcmlvLCB5b3UgY2FuIGVuYWJsZSBhIGxvY2FsIFBSIFNlcnZpY2UgYnkKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJTRVJWX0hPU1QnPjxmaWxlbmFtZT5QUlNFUlZfSE9TVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJTRVJWX0hPU1QgPSAibG9jYWxob3N0OjAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgc2VydmljZSBpcyBzdGFydGVkLCBwYWNrYWdlcyB3aWxsIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgZ2V0IGluY3JlYXNpbmcgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gdmFsdWVzIGFuZAorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHRha2VzIGNhcmUgb2Ygc3RhcnRpbmcgYW5kIHN0b3BwaW5nIHRoZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGEgbW9yZSBjb21wbGV4IHNldHVwIHdoZXJlIG11bHRpcGxlIGhvc3QKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtcyB3b3JrIGFnYWluc3QgYSBjb21tb24sIHNoYXJlZCBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGZlZWQsIHlvdSBoYXZlIGEgc2luZ2xlIFBSIFNlcnZpY2UgcnVubmluZyBhbmQgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkIHRvIGVhY2ggYnVpbGRpbmcgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBzY2VuYXJpbywgeW91IG5lZWQgdG8gc3RhcnQgdGhlIFBSIFNlcnZpY2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLXByc2VydjwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYml0YmFrZS1wcnNlcnYgLS1ob3N0IDxyZXBsYWNlYWJsZT5pcDwvcmVwbGFjZWFibGU+IC0tcG9ydCA8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+IC0tc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBoYW5kLXN0YXJ0aW5nIHRoZSBzZXJ2aWNlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICB1cGRhdGUgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHN5c3RlbSBhcyBkZXNjcmliZWQgZWFybGllciBzbyBlYWNoIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBwb2ludHMgdG8gdGhlIHNlcnZlciBhbmQgcG9ydC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB5b3UgdXNlIGJ1aWxkIGhpc3RvcnksIHdoaWNoIGFkZHMKKyAgICAgICAgICAgICAgICAgICAgc29tZSBzYW5pdHkgY2hlY2tzIHRvIGJpbmFyeSBwYWNrYWdlIHZlcnNpb25zLCBpbgorICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgdGhhdCBpcyBydW5uaW5nIHRoZSBQUiBTZXJ2aWNlLgorICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgYnVpbGQgaGlzdG9yeSwgYWRkIHRoZSBmb2xsb3dpbmcgdG8gZWFjaCBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBzeXN0ZW0ncyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBJdCBpcyByZWNvbW1lbmRlZCB0byBhY3RpdmF0ZSAiYnVpbGRoaXN0b3J5IiBmb3IgdGVzdGluZyB0aGUgUFIgc2VydmljZQorICAgICBJTkhFUklUICs9ICJidWlsZGhpc3RvcnkiCisgICAgIEJVSUxESElTVE9SWV9DT01NSVQgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYnVpbGQgaGlzdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBtYWludGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gaW5mb3JtYXRpb24gYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBtYWludGFpbiBhbiBzc3RhdGUgZmVlZCwgaXRzIGV4cGVjdGVkIHRoYXQgZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICBhbGwgeW91ciBidWlsZGluZyBzeXN0ZW1zIHRoYXQgY29udHJpYnV0ZSB0byB0aGUgc3N0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZCB1c2UgYSBzaGFyZWQgUFIgU2VydmljZSwgb3IgeW91IGRvIG5vdCBydW4gYSBQUgorICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZSBvbiBhbnkgb2YgeW91ciBidWlsZGluZyBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICAgICAgICAgSGF2aW5nIHNvbWUgc3lzdGVtcyB1c2UgYSBQUiBTZXJ2aWNlIHdoaWxlIG90aGVycyBkbworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGxlYWRzIHRvIG9idmlvdXMgcHJvYmxlbXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNoYXJlZCBzdGF0ZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5TaGFyZWQgU3RhdGUgQ2FjaGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzCisgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdtYW51YWxseS1idW1waW5nLXByJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TWFudWFsbHkgQnVtcGluZyBQUjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGFsdGVybmF0aXZlIHRvIHNldHRpbmcgdXAgYSBQUiBTZXJ2aWNlIGlzIHRvIG1hbnVhbGx5CisgICAgICAgICAgICAgICAgICAgICJidW1wIiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiBhIGNvbW1pdHRlZCBjaGFuZ2UgcmVzdWx0cyBpbiBjaGFuZ2luZyB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBQUiB2YXJpYWJsZSBuZWVkcyB0byBiZQorICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZWQgKG9yICJidW1wZWQiKSBhcyBwYXJ0IG9mIHRoYXQgY29tbWl0LgorICAgICAgICAgICAgICAgICAgICBGb3IgbmV3IHJlY2lwZXMgeW91IHNob3VsZCBhZGQgdGhlIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBzZXQgaXRzIGluaXRpYWwgdmFsdWUgZXF1YWwgdG8gInIwIiwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIEV2ZW4gdGhvdWdoIHRoZSBkZWZhdWx0IHZhbHVlIGlzICJyMCIsIHRoZSBwcmFjdGljZSBvZgorICAgICAgICAgICAgICAgICAgICBhZGRpbmcgaXQgdG8gYSBuZXcgcmVjaXBlIG1ha2VzIGl0IGhhcmRlciB0byBmb3JnZXQgdG8gYnVtcAorICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGUgd2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRoZSByZWNpcGUgaW4gZnV0dXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHNoYXJpbmcgYSBjb21tb24gPGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHdpdGggbXVsdGlwbGUgcmVjaXBlcywgeW91IGNhbiBhbHNvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTkNfUFInPklOQ19QUjwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZW5zdXJlIHRoYXQgdGhlIHJlY2lwZXMgc2hhcmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPiBmaWxlIGFyZSByZWJ1aWx0IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4gZmlsZSBpdHNlbGYgaXMgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4gZmlsZSBtdXN0IHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5DX1BSPC9maWxlbmFtZT4gKGluaXRpYWxseSB0byAicjAiKSwgYW5kIGFsbAorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIHJlZmVycmluZyB0byBpdCBzaG91bGQgc2V0IDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvICIke0lOQ19QUn0uMCIgaW5pdGlhbGx5LCBpbmNyZW1lbnRpbmcgdGhlIGxhc3QgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIHJlY2lwZSBpcyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPiBmaWxlIGlzIGNoYW5nZWQgdGhlbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOQ19QUjwvZmlsZW5hbWU+IHNob3VsZCBiZSBpbmNyZW1lbnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB1cGdyYWRpbmcgdGhlIHZlcnNpb24gb2YgYSBiaW5hcnkgcGFja2FnZSwgYXNzdW1pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPlBWPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLCB0aGUgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gdmFyaWFibGUgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgIHJlc2V0IHRvICJyMCIgKG9yICIke0lOQ19QUn0uMCIgaWYgeW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5DX1BSPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc3VhbGx5LCB2ZXJzaW9uIGluY3JlYXNlcyBvY2N1ciBvbmx5IHRvIGJpbmFyeSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgZm9yIHNvbWUgcmVhc29uIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgYnV0IGRvZXMgbm90IGluY3JlYXNlLCB5b3UgY2FuIGluY3JlYXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz5QRTwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgKFBhY2thZ2UgRXBvY2gpLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBFPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmYXVsdHMgdG8gIjAiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCaW5hcnkgcGFja2FnZSB2ZXJzaW9uIG51bWJlcmluZyBzdHJpdmVzIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5kZWJpYW4ub3JnL2RvYy9kZWJpYW4tcG9saWN5L2NoLWNvbnRyb2xmaWVsZHMuaHRtbCc+CisgICAgICAgICAgICAgICAgICAgIERlYmlhbiBWZXJzaW9uIEZpZWxkIFBvbGljeSBHdWlkZWxpbmVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGd1aWRlbGluZXMgZGVmaW5lIGhvdyB2ZXJzaW9ucyBhcmUgY29tcGFyZWQgYW5kIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgImluY3JlYXNpbmciIGEgdmVyc2lvbiBtZWFucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdhdXRvbWF0aWNhbGx5LWluY3JlbWVudGluZy1hLWJpbmFyeS1wYWNrYWdlLXJldmlzaW9uLW51bWJlcic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgUGFja2FnZSBWZXJzaW9uIE51bWJlcjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBmZXRjaGluZyBhIHJlcG9zaXRvcnksIEJpdEJha2UgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyBzb3VyY2UgY29kZSByZXZpc2lvbgorICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2V0IHRoZSA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gdmFyaWFibGUgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUFVVE9SRVYnPjxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0byBjYXVzZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBhdXRvbWF0aWNhbGx5IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGF0ZXN0IHJldmlzaW9uIG9mIHRoZSBzb2Z0d2FyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNSRVYgPSAiJHtBVVRPUkVWfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgeW91IG5lZWQgdG8gcmVmZXJlbmNlIDxmaWxlbmFtZT5TUkNQVjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGluIG9yZGVyIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSB2ZXJzaW9uIHdoZW5ldmVyIHRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gIjEuMCtnaXQke1NSQ1BWfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdWJzdGl0dXRlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUFY8L2ZpbGVuYW1lPiB3aXRoIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQVVUT0lOQys8cmVwbGFjZWFibGU+c291cmNlX2NvZGVfcmV2aXNpb248L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gcmVwbGFjZXMgdGhlIDxmaWxlbmFtZT5BVVRPSU5DPC9maWxlbmFtZT4gd2l0aAorICAgICAgICAgICAgICAgICAgICBhIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciB1c2VkIGRlcGVuZHMgb24gdGhlIHN0YXRlIG9mIHRoZSBQUiBTZXJ2aWNlOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIFBSIFNlcnZpY2UgaXMgZW5hYmxlZCwgdGhlIGJ1aWxkIHN5c3RlbSBpbmNyZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG51bWJlciwgd2hpY2ggaXMgc2ltaWxhciB0byB0aGUgYmVoYXZpb3Igb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciByZXN1bHRzIGluIGxpbmVhcmx5IGluY3JlYXNpbmcgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zLCB3aGljaCBpcyBkZXNpcmFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaGVsbG8td29ybGQtZ2l0XzAuMCtnaXQwK2I2NTU4ZGQzODctcjAuMF9hcm12N2EtbmVvbi5pcGsKKyAgICAgaGVsbG8td29ybGQtZ2l0XzAuMCtnaXQxK2RkMmY1YzM1NjUtcjAuMF9hcm12N2EtbmVvbi5pcGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgUFIgU2VydmljZSBpcyBub3QgZW5hYmxlZCwgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VzIHRoZSA8ZmlsZW5hbWU+QVVUT0lOQzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIgd2l0aCB6ZXJvIChpLmUuICIwIikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGNoYW5naW5nIHRoZSBwYWNrYWdlIHZlcnNpb24gc2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIHJldmlzaW9uIGlzIGluY2x1ZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHBhY2thZ2UgdmVyc2lvbnMgYXJlIG5vdCBpbmNyZWFzZWQgbGluZWFybHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaGVsbG8td29ybGQtZ2l0XzAuMCtnaXQwK2I2NTU4ZGQzODctcjAuMF9hcm12N2EtbmVvbi5pcGsKKyAgICAgaGVsbG8td29ybGQtZ2l0XzAuMCtnaXQwK2RkMmY1YzM1NjUtcjAuMF9hcm12N2EtbmVvbi5pcGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCB0cmFjayB0aGUKKyAgICAgICAgICAgICAgICAgICAgaGlzdG9yeSBvZiBiaW5hcnkgcGFja2FnZSB2ZXJzaW9ucyBmb3IgdGhpcyBwdXJwb3NlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QVVUT0lOQzwvZmlsZW5hbWU+LCBpbiB0aGlzIGNhc2UsIGlzIGNvbXBhcmFibGUgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIFBSIHNlcnZlciBpcyBub3QgZW5hYmxlZCwgPGZpbGVuYW1lPkFVVE9JTkM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcGFja2FnZSB2ZXJzaW9uIGlzIHNpbXBseSByZXBsYWNlZCBieSAiMCIuCisgICAgICAgICAgICAgICAgICAgIElmIFBSIHNlcnZlciBpcyBlbmFibGVkLCB0aGUgYnVpbGQgc3lzdGVtIGtlZXBzIHRyYWNrIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIHZlcnNpb25zIGFuZCBidW1wcyB0aGUgbnVtYmVyIHdoZW4gdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gY2hhbmdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naGFuZGxpbmctb3B0aW9uYWwtbW9kdWxlLXBhY2thZ2luZyc+CisgICAgICAgICAgICA8dGl0bGU+SGFuZGxpbmcgT3B0aW9uYWwgTW9kdWxlIFBhY2thZ2luZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE1hbnkgcGllY2VzIG9mIHNvZnR3YXJlIHNwbGl0IGZ1bmN0aW9uYWxpdHkgaW50byBvcHRpb25hbAorICAgICAgICAgICAgICAgIG1vZHVsZXMgKG9yIHBsdWdpbnMpIGFuZCB0aGUgcGx1Z2lucyB0aGF0IGFyZSBidWlsdAorICAgICAgICAgICAgICAgIG1pZ2h0IGRlcGVuZCBvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgVG8gYXZvaWQgaGF2aW5nIHRvIGR1cGxpY2F0ZSB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHdoYXQKKyAgICAgICAgICAgICAgICBtb2R1bGVzIGFyZSBhdmFpbGFibGUgaW4geW91ciByZWNpcGUgb3IgdG8gYXZvaWQgaGF2aW5nCisgICAgICAgICAgICAgICAgdG8gcGFja2FnZSBlYWNoIG1vZHVsZSBieSBoYW5kLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIG1vZHVsZSBwYWNrYWdpbmcgZHluYW1pY2FsbHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGhhbmRsZSBvcHRpb25hbCBtb2R1bGUgcGFja2FnaW5nLCB5b3UgbmVlZCB0byBkbyB0d28gdGhpbmdzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbnN1cmUgdGhlIG1vZHVsZSBwYWNrYWdpbmcgaXMgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbnN1cmUgdGhhdCBhbnkgZGVwZW5kZW5jaWVzIG9uIG9wdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIGZyb20gb3RoZXIgcmVjaXBlcyBhcmUgc2F0aXNmaWVkIGJ5IHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdtYWtpbmctc3VyZS10aGUtcGFja2FnaW5nLWlzLWRvbmUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5NYWtpbmcgU3VyZSB0aGUgUGFja2FnaW5nIGlzIERvbmU8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGVuc3VyZSB0aGUgbW9kdWxlIHBhY2thZ2luZyBhY3R1YWxseSBnZXRzIGRvbmUsIHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kb19zcGxpdF9wYWNrYWdlczwvZmlsZW5hbWU+IGZ1bmN0aW9uIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnBvcHVsYXRlX3BhY2thZ2VzPC9maWxlbmFtZT4gUHl0aG9uIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3NwbGl0X3BhY2thZ2VzPC9maWxlbmFtZT4gZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoZXMgZm9yIGEgcGF0dGVybiBvZiBmaWxlcyBvciBkaXJlY3RvcmllcyB1bmRlciBhCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBwYXRoIGFuZCBjcmVhdGVzIGEgcGFja2FnZSBmb3IgZWFjaCBvbmUgaXQgZmluZHMKKyAgICAgICAgICAgICAgICAgICAgYnkgYXBwZW5kaW5nIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTX3BhY2thZ2VuYW1lPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU19wYWNrYWdlbmFtZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVTQ1JJUFRJT05fcGFja2FnZW5hbWU8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUgPGZpbGVuYW1lPmxpZ2h0dHBkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICAgICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgICAgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGVwZW5kcz0nJykKKyAgICAgfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIHNwZWNpZmllcyBhIG51bWJlciBvZiB0aGluZ3MgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGNhbGwgdG8gPGZpbGVuYW1lPmRvX3NwbGl0X3BhY2thZ2VzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBmaWxlcyBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB5b3VyIHJlY2lwZSB0aHJvdWdoIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB3aGljaCB0byBzZWFyY2guPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBtYXRjaCBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGF0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSwgbm90ZSB0aGUgcGFyZW50aGVzZXMgKCkgdGhhdCBtYXJrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnQgb2YgdGhlIGV4cHJlc3Npb24gZnJvbSB3aGljaCB0aGUgbW9kdWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBzaG91bGQgYmUgZGVyaXZlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHBhdHRlcm4gdG8gdXNlIGZvciB0aGUgcGFja2FnZSBuYW1lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIGRlc2NyaXB0aW9uIGZvciBlYWNoIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW4gZW1wdHkgc3RyaW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHRyYV9kZXBlbmRzPC9maWxlbmFtZT4sIHdoaWNoIGRpc2FibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgZGVwZW5kZW5jeSBvbiB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWdodHRwZDwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgaWYgYSBmaWxlIGluIDxmaWxlbmFtZT4ke2xpYmRpcn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZCA8ZmlsZW5hbWU+bW9kX2FsaWFzLnNvPC9maWxlbmFtZT4gaXMgZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBwYWNrYWdlIGNhbGxlZCA8ZmlsZW5hbWU+bGlnaHR0cGQtbW9kdWxlLWFsaWFzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIGZvciBpdCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFU0NSSVBUSU9OJz48ZmlsZW5hbWU+REVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvICJMaWdodHRwZCBtb2R1bGUgZm9yIGFsaWFzIi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9mdGVuLCBwYWNrYWdpbmcgbW9kdWxlcyBpcyBhcyBzaW1wbGUgYXMgdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIG1vcmUgYWR2YW5jZWQgb3B0aW9ucyBleGlzdCB0aGF0IHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+ZG9fc3BsaXRfcGFja2FnZXM8L2ZpbGVuYW1lPiB0byBtb2RpZnkgaXRzCisgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgorICAgICAgICAgICAgICAgICAgICBBbmQsIGlmIHlvdSBuZWVkIHRvLCB5b3UgY2FuIGFkZCBtb3JlIGxvZ2ljIGJ5IHNwZWNpZnlpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBob29rIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGZvciBlYWNoIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcGVyZmVjdGx5IGFjY2VwdGFibGUgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fc3BsaXRfcGFja2FnZXM8L2ZpbGVuYW1lPiBtdWx0aXBsZSB0aW1lcyBpZgorICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIHNldCBvZiBtb2R1bGVzIHRvIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGV4YW1wbGVzIHRoYXQgc2hvdyBob3cgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19zcGxpdF9wYWNrYWdlczwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25ubWFuLmluYzwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPnNvdXJjZSByZXBvc2l0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGV4YW1wbGVzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgcmVmZXJlbmNlIHRoYXQgc2hvd3MKKyAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19zcGxpdF9wYWNrYWdlczwvZmlsZW5hbWU+IG1hbmRhdG9yeSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTWFuZGF0b3J5IGFyZ3VtZW50cworCisgICAgIHJvb3QKKyAgICAgICAgVGhlIHBhdGggaW4gd2hpY2ggdG8gc2VhcmNoCisgICAgIGZpbGVfcmVnZXgKKyAgICAgICAgUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIHNlYXJjaGVkIGZpbGVzLgorICAgICAgICBVc2UgcGFyZW50aGVzZXMgKCkgdG8gbWFyayB0aGUgcGFydCBvZiB0aGlzCisgICAgICAgIGV4cHJlc3Npb24gdGhhdCBzaG91bGQgYmUgdXNlZCB0byBkZXJpdmUgdGhlCisgICAgICAgIG1vZHVsZSBuYW1lICh0byBiZSBzdWJzdGl0dXRlZCB3aGVyZSAlcyBpcworICAgICAgICB1c2VkIGluIG90aGVyIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcyBub3RlZCBiZWxvdykKKyAgICAgb3V0cHV0X3BhdHRlcm4KKyAgICAgICAgUGF0dGVybiB0byB1c2UgZm9yIHRoZSBwYWNrYWdlIG5hbWVzLiBNdXN0CisgICAgICAgIGluY2x1ZGUgJXMuCisgICAgIGRlc2NyaXB0aW9uCisgICAgICAgIERlc2NyaXB0aW9uIHRvIHNldCBmb3IgZWFjaCBwYWNrYWdlLiBNdXN0CisgICAgICAgIGluY2x1ZGUgJXMuCisKKyAgICAgT3B0aW9uYWwgYXJndW1lbnRzCisKKyAgICAgcG9zdGluc3QKKyAgICAgICAgUG9zdGluc3RhbGwgc2NyaXB0IHRvIHVzZSBmb3IgYWxsIHBhY2thZ2VzCisgICAgICAgIChhcyBhIHN0cmluZykKKyAgICAgcmVjdXJzaXZlCisgICAgICAgIFRydWUgdG8gcGVyZm9ybSBhIHJlY3Vyc2l2ZSBzZWFyY2ggLSBkZWZhdWx0CisgICAgICAgIEZhbHNlCisgICAgIGhvb2sKKyAgICAgICAgQSBob29rIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3IgZXZlcnkgbWF0Y2guCisgICAgICAgIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgYXJndW1lbnRzIChpbiB0aGUgb3JkZXIgbGlzdGVkKToKKworICAgICAgICBmCisgICAgICAgICAgIEZ1bGwgcGF0aCB0byB0aGUgZmlsZS9kaXJlY3RvcnkgbWF0Y2gKKyAgICAgICAgcGtnCisgICAgICAgICAgIFRoZSBwYWNrYWdlIG5hbWUKKyAgICAgICAgZmlsZV9yZWdleAorICAgICAgICAgICBBcyBhYm92ZQorICAgICAgICBvdXRwdXRfcGF0dGVybgorICAgICAgICAgICBBcyBhYm92ZQorICAgICAgICBtb2R1bGVuYW1lCisgICAgICAgICAgIFRoZSBtb2R1bGUgbmFtZSBkZXJpdmVkIHVzaW5nIGZpbGVfcmVnZXgKKworICAgICBleHRyYV9kZXBlbmRzCisgICAgICAgIEV4dHJhIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIChSREVQRU5EUykgdG8gYmUKKyAgICAgICAgc2V0IGZvciBhbGwgcGFja2FnZXMuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIE5vbmUKKyAgICAgICAgY2F1c2VzIGEgZGVwZW5kZW5jeSBvbiB0aGUgbWFpbiBwYWNrYWdlCisgICAgICAgICgke1BOfSkgLSBpZiB5b3UgZG8gbm90IHdhbnQgdGhpcywgcGFzcyBlbXB0eQorICAgICAgICBzdHJpbmcgJycgZm9yIHRoaXMgcGFyYW1ldGVyLgorICAgICBhdXhfZmlsZXNfcGF0dGVybgorICAgICAgICBFeHRyYSBpdGVtKHMpIHRvIGJlIGFkZGVkIHRvIEZJTEVTIGZvciBlYWNoCisgICAgICAgIHBhY2thZ2UuIENhbiBiZSBhIHNpbmdsZSBzdHJpbmcgaXRlbSBvciBhIGxpc3QKKyAgICAgICAgb2Ygc3RyaW5ncyBmb3IgbXVsdGlwbGUgaXRlbXMuIE11c3QgaW5jbHVkZSAlcy4KKyAgICAgcG9zdHJtCisgICAgICAgIHBvc3RybSBzY3JpcHQgdG8gdXNlIGZvciBhbGwgcGFja2FnZXMgKGFzIGEKKyAgICAgICAgc3RyaW5nKQorICAgICBhbGxvd19kaXJzCisgICAgICAgIFRydWUgdG8gYWxsb3cgZGlyZWN0b3JpZXMgdG8gYmUgbWF0Y2hlZCAtCisgICAgICAgIGRlZmF1bHQgRmFsc2UKKyAgICAgcHJlcGVuZAorICAgICAgICBJZiBUcnVlLCBwcmVwZW5kIGNyZWF0ZWQgcGFja2FnZXMgdG8gUEFDS0FHRVMKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBGYWxzZSB3aGljaCBhcHBlbmRzIHRoZW0KKyAgICAgbWF0Y2hfcGF0aAorICAgICAgICBtYXRjaCBmaWxlX3JlZ2V4IG9uIHRoZSB3aG9sZSByZWxhdGl2ZSBwYXRoIHRvCisgICAgICAgIHRoZSByb290IHJhdGhlciB0aGFuIGp1c3QgdGhlIGZpbGUgbmFtZQorICAgICBhdXhfZmlsZXNfcGF0dGVybl92ZXJiYXRpbQorICAgICAgICBFeHRyYSBpdGVtKHMpIHRvIGJlIGFkZGVkIHRvIEZJTEVTIGZvciBlYWNoCisgICAgICAgIHBhY2thZ2UsIHVzaW5nIHRoZSBhY3R1YWwgZGVyaXZlZCBtb2R1bGUgbmFtZQorICAgICAgICByYXRoZXIgdGhhbiBjb252ZXJ0aW5nIGl0IHRvIHNvbWV0aGluZyBsZWdhbAorICAgICAgICBmb3IgYSBwYWNrYWdlIG5hbWUuIENhbiBiZSBhIHNpbmdsZSBzdHJpbmcgaXRlbQorICAgICAgICBvciBhIGxpc3Qgb2Ygc3RyaW5ncyBmb3IgbXVsdGlwbGUgaXRlbXMuIE11c3QKKyAgICAgICAgaW5jbHVkZSAlcy4KKyAgICAgYWxsb3dfbGlua3MKKyAgICAgICAgVHJ1ZSB0byBhbGxvdyBzeW1saW5rcyB0byBiZSBtYXRjaGVkIC0gZGVmYXVsdAorICAgICAgICBGYWxzZQorICAgICBzdW1tYXJ5CisgICAgICAgIFN1bW1hcnkgdG8gc2V0IGZvciBlYWNoIHBhY2thZ2UuIE11c3QgaW5jbHVkZSAlczsKKyAgICAgICAgZGVmYXVsdHMgdG8gZGVzY3JpcHRpb24gaWYgbm90IHNldC4KKyAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc2F0aXNmeWluZy1kZXBlbmRlbmNpZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TYXRpc2Z5aW5nIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGZvciBoYW5kbGluZyBvcHRpb25hbCBtb2R1bGUgcGFja2FnaW5nCisgICAgICAgICAgICAgICAgICAgIGlzIHRvIGVuc3VyZSB0aGF0IGFueSBkZXBlbmRlbmNpZXMgb24gb3B0aW9uYWwgbW9kdWxlcworICAgICAgICAgICAgICAgICAgICBmcm9tIG90aGVyIHJlY2lwZXMgYXJlIHNhdGlzZmllZCBieSB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBiZSBzdXJlIHRoZXNlIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkIGJ5CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVNfRFlOQU1JQyc+PGZpbGVuYW1lPlBBQ0tBR0VTX0RZTkFNSUM8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjb250aW51ZXMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpZ2h0dHBkPC9maWxlbmFtZT4gcmVjaXBlIHNob3duIGVhcmxpZXI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRVNfRFlOQU1JQyA9ICJsaWdodHRwZC1tb2R1bGUtLioiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgc3BlY2lmaWVkIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FuIG9mCisgICAgICAgICAgICAgICAgICAgIGNvdXJzZSBiZSBhbnl0aGluZy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCBpdCBpcyA8ZmlsZW5hbWU+bGlnaHR0cGQtbW9kdWxlLTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCBpcyBzcGVjaWZpZWQgYXMgdGhlIHByZWZpeCB0byBlbnN1cmUgdGhhdCBhbnkKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb24gYSBwYWNrYWdlIG5hbWUgc3RhcnRpbmcgd2l0aCB0aGUgcHJlZml4IGFyZSBzYXRpc2ZpZWQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGJ1aWxkIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgPGZpbGVuYW1lPmRvX3NwbGl0X3BhY2thZ2VzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB0aGUgdmFsdWUgeW91IHB1dCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRVNfRFlOQU1JQzwvZmlsZW5hbWU+IHNob3VsZCBjb3JyZXNwb25kIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBuYW1lIHBhdHRlcm4gc3BlY2lmaWVkIGluIHRoZSBjYWxsIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19zcGxpdF9wYWNrYWdlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1ydW50aW1lLXBhY2thZ2UtbWFuYWdlbWVudCc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgUnVudGltZSBQYWNrYWdlIE1hbmFnZW1lbnQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgQml0QmFrZSBhbHdheXMgdHJhbnNmb3JtcyBhIHJlY2lwZSBpbnRvIG9uZSBvcgorICAgICAgICAgICAgICAgIG1vcmUgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIEJpdEJha2UgdGFrZXMgdGhlIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4gcmVjaXBlCisgICAgICAgICAgICAgICAgYW5kIHByb2R1Y2VzIGEgbnVtYmVyIG9mIHBhY2thZ2VzIChlLmcuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJhc2gtYmFzaGJ1ZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWNvbXBsZXRpb248L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1jb21wbGV0aW9uLWRiZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWNvbXBsZXRpb24tZGV2PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtY29tcGxldGlvbi1leHRyYTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWRiZzwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIE5vdCBhbGwgZ2VuZXJhdGVkIHBhY2thZ2VzIGFyZSBpbmNsdWRlZCBpbiBhbiBpbWFnZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gc2V2ZXJhbCBzaXR1YXRpb25zLCB5b3UgbWlnaHQgbmVlZCB0byB1cGRhdGUsIGFkZCwgcmVtb3ZlLAorICAgICAgICAgICAgICAgIG9yIHF1ZXJ5IHRoZSBwYWNrYWdlcyBvbiBhIHRhcmdldCBkZXZpY2UgYXQgcnVudGltZQorICAgICAgICAgICAgICAgIChpLmUuIHdpdGhvdXQgaGF2aW5nIHRvIGdlbmVyYXRlIGEgbmV3IGltYWdlKS4KKyAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBzdWNoIHNpdHVhdGlvbnMgaW5jbHVkZToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugd2FudCB0byBwcm92aWRlIGluLXRoZS1maWVsZCB1cGRhdGVzIHRvIGRlcGxveWVkCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzIChlLmcuIHNlY3VyaXR5IHVwZGF0ZXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB3YW50IHRvIGhhdmUgYSBmYXN0IHR1cm4tYXJvdW5kIGRldmVsb3BtZW50IGN5Y2xlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3Igb25lIG9yIG1vcmUgYXBwbGljYXRpb25zIHRoYXQgcnVuIG9uIHlvdXIgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB3YW50IHRvIHRlbXBvcmFyaWx5IGluc3RhbGwgdGhlICJkZWJ1ZyIgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHZhcmlvdXMgYXBwbGljYXRpb25zIG9uIHlvdXIgZGV2aWNlIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZyBjYW4gYmUgZ3JlYXRseSBpbXByb3ZlZCBieSBhbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIHN5bWJvbHMgYW5kIHNvdXJjZSBkZWJ1Z2dpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHdhbnQgdG8gZGVwbG95IGEgbW9yZSBtaW5pbWFsIHBhY2thZ2Ugc2VsZWN0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGRldmljZSBidXQgYWxsb3cgaW4tdGhlLWZpZWxkIHVwZGF0ZXMgdG8gYWRkIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlciBzZWxlY3Rpb24gZm9yIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gYWxsIHRoZXNlIHNpdHVhdGlvbnMsIHlvdSBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIHRvIGEgbW9yZQorICAgICAgICAgICAgICAgIHRyYWRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbiBpbiB0aGF0IGluLWZpZWxkIGRldmljZXMKKyAgICAgICAgICAgICAgICBhcmUgYWJsZSB0byByZWNlaXZlIHByZS1jb21waWxlZCBwYWNrYWdlcyBmcm9tIGEgc2VydmVyIGZvcgorICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBvciB1cGRhdGUuCisgICAgICAgICAgICAgICAgQmVpbmcgYWJsZSB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzIG9uIGEgcnVubmluZywKKyAgICAgICAgICAgICAgICBpbi1maWVsZCBkZXZpY2UgaXMgd2hhdCBpcyB0ZXJtZWQgInJ1bnRpbWUgcGFja2FnZQorICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQiLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgYSBob3N0IG9yIHNlcnZlciBtYWNoaW5lIHRoYXQgc2VydmVzIHVwIHRoZSBwcmUtY29tcGlsZWQKKyAgICAgICAgICAgICAgICBwYWNrYWdlcyBwbHVzIHRoZSByZXF1aXJlZCBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICBZb3UgYWxzbyBuZWVkIHBhY2thZ2UgbWFuaXB1bGF0aW9uIHRvb2xzIG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIG1hY2hpbmUgaXMgYSBsaWtlbHkgY2FuZGlkYXRlIHRvIGFjdCBhcyB0aGUgc2VydmVyLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoYXQgbWFjaGluZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIGJlIHRoZQorICAgICAgICAgICAgICAgIHBhY2thZ2Ugc2VydmVyLgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBtYWNoaW5lIGNvdWxkIHB1c2ggaXRzIGFydGlmYWN0cyB0byBhbm90aGVyIG1hY2hpbmUKKyAgICAgICAgICAgICAgICB0aGF0IGFjdHMgYXMgdGhlIHNlcnZlciAoZS5nLiBJbnRlcm5ldC1mYWNpbmcpLgorICAgICAgICAgICAgICAgIEluIGZhY3QsIGRvaW5nIHNvIGlzIGFkdmFudGFnZW91cyBmb3IgYSBwcm9kdWN0aW9uCisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgYXMgZ2V0dGluZyB0aGUgcGFja2FnZXMgYXdheSBmcm9tIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHN5c3RlbSdzIGJ1aWxkIGRpcmVjdG9yeSBwcmV2ZW50cyBhY2NpZGVudGFsCisgICAgICAgICAgICAgICAgb3ZlcndyaXRlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBzaW1wbGUgYnVpbGQgdGhhdCB0YXJnZXRzIGp1c3Qgb25lIGRldmljZSBwcm9kdWNlcworICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmUgcGFja2FnZSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIHBhY2thZ2VzIHByb2R1Y2VkIGJ5IGEgYnVpbGQgYXJlIHNlcGFyYXRlZAorICAgICAgICAgICAgICAgIG91dCBpbnRvIGEgY291cGxlIG9mIGRpZmZlcmVudCBwYWNrYWdlIGdyb3VwaW5ncyBiYXNlZCBvbgorICAgICAgICAgICAgICAgIGNyaXRlcmlhIHN1Y2ggYXMgdGhlIHRhcmdldCdzIENQVSBhcmNoaXRlY3R1cmUsIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICBib2FyZCwgb3IgdGhlIEMgbGlicmFyeSB1c2VkIG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgYnVpbGQgdGFyZ2V0aW5nIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGV2aWNlIHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFja2FnZSBkYXRhYmFzZXM6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vYXJjaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+aTU4NjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50ZWQgeW91ciA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGRldmljZSB0byBiZQorICAgICAgICAgICAgICAgIGF3YXJlIG9mIGFsbCB0aGUgcGFja2FnZXMgdGhhdCB3ZXJlIGF2YWlsYWJsZSB0byBpdCwKKyAgICAgICAgICAgICAgICB5b3Ugd291bGQgbmVlZCB0byBwb2ludCBpdCB0byBlYWNoIG9mIHRoZXNlIGRhdGFiYXNlcworICAgICAgICAgICAgICAgIGluZGl2aWR1YWxseS4KKyAgICAgICAgICAgICAgICBJbiBhIHNpbWlsYXIgd2F5LCBhIHRyYWRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbiB1c3VhbGx5IGlzCisgICAgICAgICAgICAgICAgY29uZmlndXJlZCB0byBiZSBhd2FyZSBvZiBhIG51bWJlciBvZiBzb2Z0d2FyZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIGl0IHJldHJpZXZlcyBwYWNrYWdlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVXNpbmcgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgY29tcGxldGVseSBvcHRpb25hbCBhbmQKKyAgICAgICAgICAgICAgICBub3QgcmVxdWlyZWQgZm9yIGEgc3VjY2Vzc2Z1bCBidWlsZCBvciBkZXBsb3ltZW50IGluIGFueQorICAgICAgICAgICAgICAgIHdheS4KKyAgICAgICAgICAgICAgICBCdXQgaWYgeW91IHdhbnQgdG8gbWFrZSB1c2Ugb2YgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQsCisgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gZG8gYSBjb3VwbGUgdGhpbmdzIGFib3ZlIGFuZCBiZXlvbmQgdGhlIGJhc2ljcy4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkby4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3J1bnRpbWUtcGFja2FnZS1tYW5hZ2VtZW50LWJ1aWxkJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgQ29uc2lkZXJhdGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgYnVpbGQgY29uc2lkZXJhdGlvbnMgb2Ygd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgYXdhcmUgaW4gb3JkZXIgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciBydW50aW1lCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlbWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBCaXRCYWtlIGdlbmVyYXRlcyBwYWNrYWdlcywgaXQgbmVlZHMgdG8ga25vdworICAgICAgICAgICAgICAgICAgICB3aGF0IGZvcm1hdCBvciBmb3JtYXRzIHRvIHVzZS4KKyAgICAgICAgICAgICAgICAgICAgSW4geW91ciBjb25maWd1cmF0aW9uLCB5b3UgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBzcGVjaWZ5IHRoZSBmb3JtYXQ6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkL2NvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIGRlc2lyZWQgcGFja2FnZSBmb3JtYXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQ0xBU1NFUyA/PSAicGFja2FnZV88cmVwbGFjZWFibGU+cGFja2FnZWZvcm1hdDwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSA8cmVwbGFjZWFibGU+cGFja2FnZWZvcm1hdDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlICJpcGsiLCAicnBtIiwgImRlYiIsIG9yICJ0YXIiIHdoaWNoIGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgcGFja2FnZSBmb3JtYXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGZvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IHBhY2thZ2UgZm9ybWF0cywgeW91IGNhbiBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSBmaXJzdCBhcmd1bWVudCB3aGVuIGNyZWF0aW5nIGFuIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3b3VsZCBsaWtlIHlvdXIgaW1hZ2UgdG8gc3RhcnQgb2ZmIHdpdGggYSBiYXNpYworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGRhdGFiYXNlIGNvbnRhaW5pbmcgdGhlIHBhY2thZ2VzIGluIHlvdXIgY3VycmVudAorICAgICAgICAgICAgICAgICAgICBidWlsZCBhcyB3ZWxsIGFzIHRvIGhhdmUgdGhlIHJlbGV2YW50IHRvb2xzIGF2YWlsYWJsZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGZvciBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCwgeW91IGNhbiBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlLW1hbmFnZW1lbnQiIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIEluY2x1ZGluZyAicGFja2FnZS1tYW5hZ2VtZW50IiBpbiB0aGlzIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZW5zdXJlcyB0aGF0IHdoZW4gdGhlIGltYWdlIGlzIGFzc2VtYmxlZCBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIHRoZSBpbWFnZSBpbmNsdWRlcyB0aGUgY3VycmVudGx5LWtub3duIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2VzIGFzIHdlbGwgYXMgdGhlIHRhcmdldC1zcGVjaWZpYyB0b29scyByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICBmb3IgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgdG8gYmUgcGVyZm9ybWVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIHN0YXJ0IHlvdXIgaW1hZ2Ugb2ZmIHdpdGhvdXQgYW55IGRhdGFiYXNlcworICAgICAgICAgICAgICAgICAgICBidXQgb25seSBpbmNsdWRlIHRoZSByZXF1aXJlZCBvbi10YXJnZXQgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICB0b29sKHMpLgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB5b3UgY291bGQgaW5jbHVkZSAib3BrZyIgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlmIHlvdSBhcmUgdXNpbmcgdGhlIElQSyBwYWNrYWdlIGZvcm1hdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0aGVuIGluaXRpYWxpemUgeW91ciB0YXJnZXQncyBwYWNrYWdlIGRhdGFiYXNlKHMpCisgICAgICAgICAgICAgICAgICAgIGxhdGVyIG9uY2UgeW91ciBpbWFnZSBpcyB1cCBhbmQgcnVubmluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbmV2ZXIgeW91IHBlcmZvcm0gYW55IHNvcnQgb2YgYnVpbGQgc3RlcCB0aGF0IGNhbgorICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxseSBnZW5lcmF0ZSBhIHBhY2thZ2Ugb3IgbW9kaWZ5ICAgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSwgaXQgaXMgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIHJlLWdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGluZGV4IGFmdGVyIHRoZSBidWlsZCBieSB1c2luZyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAkIGJpdGJha2UgcGFja2FnZS1pbmRleAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGJlIHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBwYWNrYWdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBpbmRleCBhdCB0aGUgc2FtZSB0aW1lIHdpdGggYSBjb21tYW5kIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+c29tZS1wYWNrYWdlPC9yZXBsYWNlYWJsZT4gcGFja2FnZS1pbmRleAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIERvIG5vdCBkbyB0aGlzIGFzIEJpdEJha2UgZG9lcyBub3Qgc2NoZWR1bGUgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggZm9yIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBwYWNrYWdlIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IGNhbm5vdCBiZSBzdXJlIG9mIHRoZSBwYWNrYWdlIGluZGV4CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHBhY2thZ2UgeW91IGp1c3QgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIGJlIHN1cmUgdG8gcnVuIHRoZSBwYWNrYWdlIHVwZGF0ZSBzdGVwIHNlcGFyYXRlbHkKKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYnVpbGRpbmcgYW55IHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfVVJJUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdG8gcHJlLWNvbmZpZ3VyZSB0YXJnZXQgaW1hZ2VzIHRvIHVzZSBhIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgZmVlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBkZWZpbmUgdGhlc2UgdmFyaWFibGVzLCB0aGVuIG1hbnVhbCBzdGVwcworICAgICAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIHN1YnNlcXVlbnQgc2VjdGlvbnMgYXJlIG5lY2Vzc2FyeSB0bworICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZXQgdGhlc2UgdmFyaWFibGVzIGJlZm9yZSBidWlsZGluZyB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gcHJvZHVjZSBhIGNvcnJlY3RseSBjb25maWd1cmVkIGltYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdXIgYnVpbGQgaXMgY29tcGxldGUsIHlvdXIgcGFja2FnZXMgcmVzaWRlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtUTVBESVJ9L2RlcGxveS88cmVwbGFjZWFibGU+cGFja2FnZWZvcm1hdDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgPGZpbGVuYW1lPnRtcDwvZmlsZW5hbWU+IGFuZCB5b3VyIHNlbGVjdGVkIHBhY2thZ2UgdHlwZQorICAgICAgICAgICAgICAgICAgICBpcyBSUE0sIHRoZW4geW91ciBSUE0gcGFja2FnZXMgYXJlIGF2YWlsYWJsZSBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9ycG08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdydW50aW1lLXBhY2thZ2UtbWFuYWdlbWVudC1zZXJ2ZXInPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Ib3N0IG9yIFNlcnZlciBNYWNoaW5lIFNldHVwPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCBvdGhlciBwcm90b2NvbHMgYXJlIHBvc3NpYmxlLCBhIHNlcnZlciB1c2luZyBIVFRQCisgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBzZXJ2ZXMgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSBIVFRQLCB0aGVuIHNldCB1cCBhbmQgY29uZmlndXJlIGEKKyAgICAgICAgICAgICAgICAgICAgd2ViIHNlcnZlciBzdWNoIGFzIEFwYWNoZSAyLCBsaWdodHRwZCwgb3IKKyAgICAgICAgICAgICAgICAgICAgU2ltcGxlSFRUUFNlcnZlciBvbiB0aGUgbWFjaGluZSBzZXJ2aW5nIHRoZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8ga2VlcCB0aGluZ3Mgc2ltcGxlLCB0aGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgdXAgYSBTaW1wbGVIVFRQU2VydmVyIHdlYiBzZXJ2ZXIgdG8gc2hhcmUgcGFja2FnZSBmZWVkcworICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBkZXZlbG9wZXIncyBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCB0aGlzIHNlcnZlciBtaWdodCBub3QgYmUgdGhlIGJlc3QgZm9yIGEgcHJvZHVjdGlvbgorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgdGhlIHNldHVwIGlzIHNpbXBsZSBhbmQgc3RyYWlnaHQgZm9yd2FyZC4KKyAgICAgICAgICAgICAgICAgICAgU2hvdWxkIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBzZXJ2ZXIgbW9yZSBzdWl0ZWQgZm9yCisgICAgICAgICAgICAgICAgICAgIHByb2R1Y3Rpb24gKGUuZy4gQXBhY2hlIDIsIExpZ2h0dHBkLCBvciBOZ2lueCksIHRha2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHN0ZXBzIHRvIGRvIHNvLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGcm9tIHdpdGhpbiB0aGUgYnVpbGQgZGlyZWN0b3J5IHdoZXJlIHlvdSBoYXZlIGJ1aWx0IGFuCisgICAgICAgICAgICAgICAgICAgIGltYWdlIGJhc2VkIG9uIHlvdXIgcGFja2FnaW5nIGNob2ljZSAoaS5lLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZyksIHNpbXBseSBzdGFydCB0aGUgc2VydmVyLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgYXNzdW1lcyBhIGJ1aWxkIGRpcmVjdG9yeSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvcnBtPC9maWxlbmFtZT4gYW5kIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+IHNldHRpbmcgb2YKKyAgICAgICAgICAgICAgICAgICAgInBhY2thZ2VfcnBtIjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZC90bXAvZGVwbG95L3JwbQorICAgICAkIHB5dGhvbiAtbSBTaW1wbGVIVFRQU2VydmVyCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdydW50aW1lLXBhY2thZ2UtbWFuYWdlbWVudC10YXJnZXQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5UYXJnZXQgU2V0dXA8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdXAgdGhlIHRhcmdldCBkaWZmZXJzIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciBSUE0sIElQSywgYW5kIERFQi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncnVudGltZS1wYWNrYWdlLW1hbmFnZW1lbnQtdGFyZ2V0LXJwbSc+CisgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBSUE08L3RpdGxlPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ETkZfKHNvZnR3YXJlKSc+RGFuZGlmaWVkIFBhY2thZ2luZyBUb29sPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChETkYpIHBlcmZvcm1zIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IG9mIFJQTQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgRE5GIGZvciBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBtdXN0IHBlcmZvcm0gYW4gaW5pdGlhbCBzZXR1cCBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIGZvciBjYXNlcyB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfKjwvZmlsZW5hbWU+IHZhcmlhYmxlcyB3ZXJlIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGFzIHBhcnQgb2YgdGhlIGltYWdlIHRoYXQgaXMgcnVubmluZyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWVhbnMgaWYgeW91IGJ1aWx0IHlvdXIgaW1hZ2UgYW5kIGRpZCBub3Qgbm90IHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlc2UgdmFyaWFibGVzIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIGFuZCB5b3VyIGltYWdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBub3cgcnVubmluZyBvbiB0aGUgdGFyZ2V0LCB5b3UgbmVlZCB0byBwZXJmb3JtIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgaW4gdGhpcyBzZWN0aW9uIGlmIHlvdSB3YW50IHRvIHVzZSBydW50aW1lCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF8qPC9maWxlbmFtZT4gdmFyaWFibGVzLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9GRUVEX0FSQ0hTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0FSQ0hTPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9VUklTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX1VSSVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9zc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIHRhcmdldCwgeW91IG11c3QgaW5mb3JtIERORiB0aGF0IHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlcyBhcmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIHRoaXMgYnkgY3JlYXRpbmcgYSBmaWxlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy95dW0ucmVwb3MuZC9vZS1wYWNrYWdlcy5yZXBvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkZWZpbmluZyB0aGUgPGZpbGVuYW1lPm9lLXBhY2thZ2VzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGFzc3VtZSB0aGUgdGFyZ2V0IGlzIGFibGUgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHBhY2thZ2UgZGF0YWJhc2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFsbDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+aTU4NjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gZnJvbSBhIHNlcnZlciBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15LnNlcnZlcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmljcyBmb3Igc2V0dGluZyB1cCB0aGUgd2ViIHNlcnZlciBhcmUgdXAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjcml0aWNhbCByZXF1aXJlbWVudCBpcyB0aGF0IHRoZSBVUklzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBwb2ludCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3QgcmVtb3RlIGxvY2F0aW9uIGZvciB0aGUgZmVlZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMsIHlvdSBjYW4gcG9pbnQgdGhlIHdlYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB0byB0aGUgYnVpbGQgc3lzdGVtJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGZvciBwcm9kdWN0aW9uIHVzZSwgaXQgaXMgYmV0dGVyIHRvIGNvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFja2FnZSBkaXJlY3RvcmllcyB0byBhIGxvY2F0aW9uIG91dHNpZGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgYXJlYSBhbmQgdXNlIHRoYXQgbG9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gYXZvaWRzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZXMgb3IgY2hhbmdlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRlbGxpbmcgRE5GIHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMsIHlvdSBtdXN0IGRlY2xhcmUgaW5kaXZpZHVhbCBsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlciBhcmNoaXRlY3R1cmUgb3IgYSBzaW5nbGUgbG9jYXRpb24gdXNlZCBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBkbyBib3RoOgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYW4gRXhwbGljaXQgTGlzdCBvZiBBcmNoaXRlY3R1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZSBpbmRpdmlkdWFsIGJhc2UgVVJMcyB0byBpZGVudGlmeSB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIHBhY2thZ2UgZGF0YWJhc2UgaXMgbG9jYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBbb2UtcGFja2FnZXNdCisgICAgIGJhc2V1cmw9aHR0cDovL215LnNlcnZlci9ycG0vaTU4NiBodHRwOi8vbXkuc2VydmVyL3JwbS9xZW11eDg2IGh0dHA6Ly9teS5zZXJ2ZXIvcnBtL2FsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBpbmZvcm1zIERORiBhYm91dCBpbmRpdmlkdWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZGF0YWJhc2VzIGZvciBhbGwgdGhyZWUgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgU2luZ2xlIChGdWxsKSBQYWNrYWdlIEluZGV4OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZSBhIHNpbmdsZSBiYXNlIFVSTCB0aGF0IGlkZW50aWZpZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBmdWxsIHBhY2thZ2UgZGF0YWJhc2UgaXMgbG9jYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBbb2UtcGFja2FnZXNdCisgICAgIGJhc2V1cmw9aHR0cDovL215LnNlcnZlci9ycG0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgaW5mb3JtcyBETkYgYWJvdXQgYSBzaW5nbGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcGFja2FnZSBpbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgYWxsIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGluZm9ybWVkIERORiB3aGVyZSB0byBmaW5kIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMsIHlvdSBuZWVkIHRvIGZldGNoIHRoZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgZG5mIG1ha2VjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRE5GIGlzIG5vdyBhYmxlIHRvIGZpbmQsIGluc3RhbGwsIGFuZCB1cGdyYWRlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzcGVjaWZpZWQgcmVwb3NpdG9yeSBvciByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RuZi5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvJz5ETkYgZG9jdW1lbnRhdGlvbjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncnVudGltZS1wYWNrYWdlLW1hbmFnZW1lbnQtdGFyZ2V0LWlwayc+CisgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBJUEs8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gYXBwbGljYXRpb24gcGVyZm9ybXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IG9mIElQSyBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHBlcmZvcm0gYW4gaW5pdGlhbCBzZXR1cCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gb24gdGhlIHRhcmdldCBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfQVJDSFMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQVJDSFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfVVJJUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGhhdmUgbm90IGJlZW4gc2V0IG9yIHRoZSB0YXJnZXQgaW1hZ2Ugd2FzCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBiZWZvcmUgdGhlIHZhcmlhYmxlcyB3ZXJlIHNldC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gYXBwbGljYXRpb24gdXNlcworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyB0byBmaW5kIGF2YWlsYWJsZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB5b3UgbmVlZCB0byBjcmVhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUgaW5zaWRlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPi9ldGMvb3BrZy88L2ZpbGVuYW1lPiBkaXJlY3Rpb24sIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1zIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gb2YgYW55IHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIHNlcnZpbmcgcGFja2FnZXMgZnJvbSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXBrLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmk1ODY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGw8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGRhdGFiYXNlcyB0aHJvdWdoIGFuCisgICAgICAgICAgICAgICAgICAgICAgICBIVFRQIHNlcnZlciBuYW1lZCA8ZmlsZW5hbWU+bXkuc2VydmVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgdGFyZ2V0LCBjcmVhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5teV9yZXBvLmNvbmY8L2ZpbGVuYW1lPikgaW5zaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvb3BrZy88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgY29udGFpbmluZworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgc3JjL2d6IGFsbCBodHRwOi8vbXkuc2VydmVyL2lway9hbGwKKyAgICAgc3JjL2d6IGk1ODYgaHR0cDovL215LnNlcnZlci9pcGsvaTU4NgorICAgICBzcmMvZ3ogcWVtdXg4NiBodHRwOi8vbXkuc2VydmVyL2lway9xZW11eDg2CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBOZXh0LCBpbnN0cnVjdCA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+IHRvIGZldGNoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVwb3NpdG9yeSBpbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBvcGtnIHVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gYXBwbGljYXRpb24gaXMgbm93IGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpbmQsIGluc3RhbGwsIGFuZCB1cGdyYWRlIHBhY2thZ2VzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdydW50aW1lLXBhY2thZ2UtbWFuYWdlbWVudC10YXJnZXQtZGViJz4KKyAgICAgICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIERFQjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmFwdDwvZmlsZW5hbWU+IGFwcGxpY2F0aW9uIHBlcmZvcm1zCisgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCBvZiBERUIgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFwcGxpY2F0aW9uIHVzZXMgYSBzb3VyY2UgbGlzdCBmaWxlIHRvIGZpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBwYWNrYWdlIGRhdGFiYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHBlcmZvcm0gYW4gaW5pdGlhbCBzZXR1cCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcHQ8L2ZpbGVuYW1lPiBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUzwvZmlsZW5hbWU+PC91bGluaz4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9VUklTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX1VSSVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgaGF2ZSBub3QgYmVlbiBzZXQgb3IgdGhlIHRhcmdldCBpbWFnZSB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGJlZm9yZSB0aGUgdmFyaWFibGVzIHdlcmUgc2V0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBpbmZvcm0gPGZpbGVuYW1lPmFwdDwvZmlsZW5hbWU+IG9mIHRoZSByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCB0byB1c2UsIHlvdSBtaWdodCBjcmVhdGUgYSBsaXN0IGZpbGUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5teV9yZXBvLmxpc3Q8L2ZpbGVuYW1lPikgaW5zaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvYXB0L3NvdXJjZXMubGlzdC5kLzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgc2VydmluZyBwYWNrYWdlcyBmcm9tIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWIvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aTU4NjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFsbDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gZGF0YWJhc2VzIHRocm91Z2ggYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAgc2VydmVyIG5hbWVkIDxmaWxlbmFtZT5teS5zZXJ2ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IGZpbGUgc2hvdWxkIGNvbnRhaW46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRlYiBodHRwOi8vbXkuc2VydmVyL2RlYi9hbGwgLi8KKyAgICAgZGViIGh0dHA6Ly9teS5zZXJ2ZXIvZGViL2k1ODYgLi8KKyAgICAgZGViIGh0dHA6Ly9teS5zZXJ2ZXIvZGViL3FlbXV4ODYgLi8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5leHQsIGluc3RydWN0IHRoZSA8ZmlsZW5hbWU+YXB0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHRvIGZldGNoIHRoZSByZXBvc2l0b3J5IGluZm9ybWF0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIGFwdC1nZXQgdXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGlzIHN0ZXAsIDxmaWxlbmFtZT5hcHQ8L2ZpbGVuYW1lPiBpcyBhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0byBmaW5kLCBpbnN0YWxsLCBhbmQgdXBncmFkZSBwYWNrYWdlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ2VuZXJhdGluZy1hbmQtdXNpbmctc2lnbmVkLXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5HZW5lcmF0aW5nIGFuZCBVc2luZyBTaWduZWQgUGFja2FnZXM8L3RpdGxlPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gYWRkIHNlY3VyaXR5IHRvIFJQTSBwYWNrYWdlcyB1c2VkIGR1cmluZyBhIGJ1aWxkLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBzZWN1cmVseSBzaWduIHRoZW0uCisgICAgICAgICAgICAgICAgT25jZSBhIHNpZ25hdHVyZSBpcyB2ZXJpZmllZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBjYW4gdXNlIHRoZSBwYWNrYWdlIGluIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBJZiBzZWN1cml0eSBmYWlscyBmb3IgYSBzaWduZWQgcGFja2FnZSwgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGFib3J0cyB0aGUgYnVpbGQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHNpZ24gUlBNIHBhY2thZ2VzIGR1cmluZyBhIGJ1aWxkCisgICAgICAgICAgICAgICAgYW5kIGhvdyB0byB1c2Ugc2lnbmVkIHBhY2thZ2UgZmVlZHMgKHJlcG9zaXRvcmllcykgd2hlbgorICAgICAgICAgICAgICAgIGRvaW5nIGEgYnVpbGQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzaWduaW5nLXJwbS1wYWNrYWdlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNpZ25pbmcgUlBNIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgc2lnbmluZyBSUE0gcGFja2FnZXMsIHlvdSBtdXN0IHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGluIGVpdGhlciB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25maWc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLmNvbmZpZzwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBJbmhlcml0IHNpZ25fcnBtLmJiY2xhc3MgdG8gZW5hYmxlIHNpZ25pbmcgZnVuY3Rpb25hbGl0eQorICAgICBJTkhFUklUICs9ICIgc2lnbl9ycG0iCisgICAgICMgRGVmaW5lIHRoZSBHUEcga2V5IHRoYXQgd2lsbCBiZSB1c2VkIGZvciBzaWduaW5nLgorICAgICBSUE1fR1BHX05BTUUgPSAiPHJlcGxhY2VhYmxlPmtleV9uYW1lPC9yZXBsYWNlYWJsZT4iCisgICAgICMgUHJvdmlkZSBwYXNzcGhyYXNlIGZvciB0aGUga2V5CisgICAgIFJQTV9HUEdfUEFTU1BIUkFTRSA9ICI8cmVwbGFjZWFibGU+cGFzc3BocmFzZTwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBzdXBwbHkgYXBwcm9wcmlhdGUgdmFsdWVzIGZvciBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+a2V5X25hbWU8L3JlcGxhY2VhYmxlPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5wYXNzcGhyYXNlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UlBNX0dQR19OQU1FPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SUE1fR1BHX1BBU1NQSFJBU0U8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUsIHR3byBvcHRpb25hbCB2YXJpYWJsZXMgcmVsYXRlZCB0byBzaWduaW5nCisgICAgICAgICAgICAgICAgICAgIGV4aXN0OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+R1BHX0JJTjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgPGZpbGVuYW1lPmdwZzwvZmlsZW5hbWU+IGJpbmFyeS93cmFwcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBwYWNrYWdlIGlzIHNpZ25lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPkdQR19QQVRIPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIDxmaWxlbmFtZT5ncGc8L2ZpbGVuYW1lPiBob21lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHVzZWQgd2hlbiB0aGUgcGFja2FnZSBpcyBzaWduZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Byb2Nlc3NpbmctcGFja2FnZS1mZWVkcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlByb2Nlc3NpbmcgUGFja2FnZSBGZWVkczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYmVpbmcgYWJsZSB0byBzaWduIFJQTSBwYWNrYWdlcywgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBhbHNvIGVuYWJsZSBzaWduZWQgcGFja2FnZSBmZWVkcyBmb3IgSVBLIGFuZCBSUE0gcGFja2FnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB5b3UgbmVlZCB0byB0YWtlIHRvIGVuYWJsZSBzaWduZWQgcGFja2FnZSBmZWVkCisgICAgICAgICAgICAgICAgICAgIHVzZSBhcmUgc2ltaWxhciB0byB0aGUgc3RlcHMgdXNlZCB0byBzaWduIFJQTSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgZGVmaW5lIHRoZSBmb2xsb3dpbmcgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZmlnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryby5jb25maWc8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVQgKz0gInNpZ25fcGFja2FnZV9mZWVkIgorICAgICBQQUNLQUdFX0ZFRURfR1BHX05BTUUgPSAiPHJlcGxhY2VhYmxlPmtleV9uYW1lPC9yZXBsYWNlYWJsZT4iCisgICAgIFBBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFID0gIjxyZXBsYWNlYWJsZT5wYXRoX3RvX2ZpbGVfY29udGFpbmluZ19wYXNzcGhyYXNlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHNpZ25lZCBwYWNrYWdlIGZlZWRzLCB0aGUgcGFzc3BocmFzZSBtdXN0IGV4aXN0IGluIGEKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgZmlsZSwgd2hpY2ggaXMgcG9pbnRlZCB0byBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGluZyBzZWN1cml0eSwga2VlcGluZyBhIHBsYWluIHRleHQgcGFzc3BocmFzZSBvdXQgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbW9yZSBzZWN1cmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfR1BHX05BTUU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCB0aHJlZSBvcHRpb25hbCB2YXJpYWJsZXMgcmVsYXRlZCB0byBzaWduZWQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBmZWVkcyBleGlzdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPkdQR19CSU48L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIDxmaWxlbmFtZT5ncGc8L2ZpbGVuYW1lPiBiaW5hcnkvd3JhcHBlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgcGFja2FnZSBpcyBzaWduZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5HUEdfUEFUSDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSA8ZmlsZW5hbWU+Z3BnPC9maWxlbmFtZT4gaG9tZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB1c2VkIHdoZW4gdGhlIHBhY2thZ2UgaXMgc2lnbmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0dQR19TSUdOQVRVUkVfVFlQRTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0eXBlIG9mIDxmaWxlbmFtZT5ncGc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgb25seSB0byBSUE0gYW5kIElQSyBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dhYmxlIHZhbHVlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9HUEdfU0lHTkFUVVJFX1RZUEU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSAiQVNDIiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYW5kIHNwZWNpZmllcyBhc2NpaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybW9yZWQsIGFuZCAiQklOIiwgd2hpY2ggc3BlY2lmaWVzIGJpbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+CisgICAgICAgICAgICA8dGl0bGU+VGVzdGluZyBQYWNrYWdlcyBXaXRoIHB0ZXN0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBQYWNrYWdlIFRlc3QgKHB0ZXN0KSBydW5zIHRlc3RzIGFnYWluc3QgcGFja2FnZXMgYnVpbHQKKyAgICAgICAgICAgICAgICBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgQSBwdGVzdCBjb250YWlucyBhdCBsZWFzdCB0d28gaXRlbXM6IHRoZSBhY3R1YWwgdGVzdCwgYW5kCisgICAgICAgICAgICAgICAgYSBzaGVsbCBzY3JpcHQgKDxmaWxlbmFtZT5ydW4tcHRlc3Q8L2ZpbGVuYW1lPikgdGhhdCBzdGFydHMKKyAgICAgICAgICAgICAgICB0aGUgdGVzdC4KKyAgICAgICAgICAgICAgICBUaGUgc2hlbGwgc2NyaXB0IHRoYXQgc3RhcnRzIHRoZSB0ZXN0IG11c3Qgbm90IGNvbnRhaW4KKyAgICAgICAgICAgICAgICB0aGUgYWN0dWFsIHRlc3QgLSB0aGUgc2NyaXB0IG9ubHkgc3RhcnRzIHRoZSB0ZXN0LgorICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgdGVzdCBjYW4gYmUgYW55dGhpbmcgZnJvbSBhIHNpbXBsZQorICAgICAgICAgICAgICAgIHNoZWxsIHNjcmlwdCB0aGF0IHJ1bnMgYSBiaW5hcnkgYW5kIGNoZWNrcyB0aGUgb3V0cHV0IHRvCisgICAgICAgICAgICAgICAgYW4gZWxhYm9yYXRlIHN5c3RlbSBvZiB0ZXN0IGJpbmFyaWVzIGFuZCBkYXRhIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgdGVzdCBnZW5lcmF0ZXMgb3V0cHV0IGluIHRoZSBmb3JtYXQgdXNlZCBieQorICAgICAgICAgICAgICAgIEF1dG9tYWtlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPnJlc3VsdDwvcmVwbGFjZWFibGU+OiA8cmVwbGFjZWFibGU+dGVzdG5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICB3aGVyZSB0aGUgcmVzdWx0IGNhbiBiZSA8ZmlsZW5hbWU+UEFTUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GQUlMPC9maWxlbmFtZT4sIG9yIDxmaWxlbmFtZT5TS0lQPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIHRoZSB0ZXN0bmFtZSBjYW4gYmUgYW55IGlkZW50aWZ5aW5nIHN0cmluZy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiBZb2N0byBQcm9qZWN0IHJlY2lwZXMgdGhhdCBhcmUgYWxyZWFkeQorICAgICAgICAgICAgICAgIGVuYWJsZWQgd2l0aCBwdGVzdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvUHRlc3QnPlB0ZXN0PC91bGluaz4KKyAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGlzICJwdGVzdC1lbmFibGVkIiBpZiBpdCBpbmhlcml0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcHRlc3QnPjxmaWxlbmFtZT5wdGVzdDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nYWRkaW5nLXB0ZXN0LXRvLXlvdXItYnVpbGQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5BZGRpbmcgcHRlc3QgdG8gWW91ciBCdWlsZDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gYWRkIHBhY2thZ2UgdGVzdGluZyB0byB5b3VyIGJ1aWxkLCBhZGQgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhUUkFfSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBwdGVzdCIKKyAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgKz0gInB0ZXN0LXBrZ3MiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3VyIGJ1aWxkIGlzIGNvbXBsZXRlLCB0aGUgcHRlc3QgZmlsZXMgYXJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9saWIvPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPi9wdGVzdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGltYWdlLCB3aGVyZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3J1bm5pbmctcHRlc3QnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SdW5uaW5nIHB0ZXN0PC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnB0ZXN0LXJ1bm5lcjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbHMgYQorICAgICAgICAgICAgICAgICAgICBzaGVsbCBzY3JpcHQgdGhhdCBsb29wcyB0aHJvdWdoIGFsbCBpbnN0YWxsZWQgcHRlc3QgdGVzdAorICAgICAgICAgICAgICAgICAgICBzdWl0ZXMgYW5kIHJ1bnMgdGhlbSBpbiBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbWlnaHQgd2FudCB0byBhZGQgdGhpcyBwYWNrYWdlIHRvCisgICAgICAgICAgICAgICAgICAgIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZ2V0dGluZy15b3VyLXBhY2thZ2UtcmVhZHknPgorICAgICAgICAgICAgICAgIDx0aXRsZT5HZXR0aW5nIFlvdXIgUGFja2FnZSBSZWFkeTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gZW5hYmxlIGEgcmVjaXBlIHRvIHJ1biBpbnN0YWxsZWQgcHRlc3RzCisgICAgICAgICAgICAgICAgICAgIG9uIHRhcmdldCBoYXJkd2FyZSwKKyAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gcHJlcGFyZSB0aGUgcmVjaXBlcyB0aGF0IGJ1aWxkIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCB0byB0ZXN0LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHdoYXQgeW91IGhhdmUgdG8gZG8gZm9yIGVhY2ggcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CZSBzdXJlIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1wdGVzdCc+PGZpbGVuYW1lPnB0ZXN0PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSB0aGUgZm9sbG93aW5nIGxpbmUgaW4gZWFjaCByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IHB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgPGZpbGVuYW1lPnJ1bi1wdGVzdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzY3JpcHQgc3RhcnRzIHlvdXIgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGUgdGhlIHNjcmlwdCB3aGVyZSB5b3Ugd2lsbCByZWZlciB0byBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBzdGFydHMgYSB0ZXN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kYnVzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIS9iaW4vc2gKKyAgICAgY2QgdGVzdAorICAgICBtYWtlIC1rIHJ1bnRlc3QtVEVTVFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVuc3VyZSBkZXBlbmRlbmNpZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHRlc3QgYWRkcyBidWlsZCBvciBydW50aW1lIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbm9ybWFsbHkgZG8gbm90IGV4aXN0IGZvciB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWNoIGFzIHJlcXVpcmluZyAibWFrZSIgdG8gcnVuIHRoZSB0ZXN0IHN1aXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBpbiB5b3VyIHJlY2lwZSBpbiBvcmRlciBmb3IgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBtZWV0IHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIHRoZSBwYWNrYWdlIGhhcyBhIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IG9uICJtYWtlIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QWRkIGEgZnVuY3Rpb24gdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBzdWl0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBtYW55IHBhY2thZ2VzIHN1cHBvcnQgY3Jvc3MtY29tcGlsYXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVpciB0ZXN0IHN1aXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSB1c3VhbGx5IG5lZWQgdG8gYWRkIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxhdGlvbiBmdW5jdGlvbiB0byB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5NYW55IHBhY2thZ2VzIGJhc2VkIG9uIEF1dG9tYWtlIGNvbXBpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRoZSB0ZXN0IHN1aXRlIGJ5IHVzaW5nIGEgc2luZ2xlIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIDxmaWxlbmFtZT5tYWtlIGNoZWNrPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIGhvc3QgPGZpbGVuYW1lPm1ha2UgY2hlY2s8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyBhbmQgcnVucyBvbiB0aGUgc2FtZSBjb21wdXRlciwgd2hpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxpbmcgcmVxdWlyZXMgdGhhdCB0aGUgcGFja2FnZSBpcyBidWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBob3N0IGJ1dCBleGVjdXRlZCBmb3IgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSAodGhvdWdoIG9mdGVuLCBhcyBpbiB0aGUgY2FzZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGVzdCwgdGhlIGV4ZWN1dGlvbiBvY2N1cnMgb24gdGhlIGhvc3QpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsdCB2ZXJzaW9uIG9mIEF1dG9tYWtlIHRoYXQgc2hpcHMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGluY2x1ZGVzIGEgcGF0Y2ggdGhhdCBzZXBhcmF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBhbmQgZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgcGFja2FnZXMgdGhhdCB1c2UgdGhlIHVuYWx0ZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVkIHZlcnNpb24gb2YgPGZpbGVuYW1lPm1ha2UgY2hlY2s8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgY3Jvc3MtY29tcGlsZXMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlJlZ2FyZGxlc3MsIHlvdSBzdGlsbCBtdXN0IGFkZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGVfcHRlc3Q8L2ZpbGVuYW1lPiBmdW5jdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSB0ZXN0IHN1aXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKKyAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FbnN1cmUgc3BlY2lhbCBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgcGFja2FnZSByZXF1aXJlcyBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3IgdG8gY29tcGlsaW5nIHRoZSB0ZXN0IGNvZGUsIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0IGEgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZV9wdGVzdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaW50byB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkluc3RhbGwgdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cHRlc3Q8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgY29waWVzIHRoZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi1wdGVzdDwvZmlsZW5hbWU+IHRvIHRoZSB0YXJnZXQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBydW5zIG1ha2UgPGZpbGVuYW1lPmluc3RhbGwtcHRlc3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHJ1biB0aGUgdGVzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyBub3QgZW5vdWdoLCB5b3UgbmVlZCB0byBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsX3B0ZXN0PC9maWxlbmFtZT4gZnVuY3Rpb24gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBzdXJlIGl0IGdldHMgY2FsbGVkIGFmdGVyIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYWtlIGluc3RhbGwtcHRlc3QiIGNvbXBsZXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLW5vZGUtcGFja2FnZS1tYW5hZ2VyLW5wbS1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgTm9kZSBQYWNrYWdlIE1hbmFnZXIgKE5QTSkgUGFja2FnZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OcG1fKHNvZnR3YXJlKSc+TlBNPC91bGluaz4KKyAgICAgICAgICAgICAgICBpcyBhIHBhY2thZ2UgbWFuYWdlciBmb3IgdGhlIEphdmFTY3JpcHQgcHJvZ3JhbW1pbmcKKyAgICAgICAgICAgICAgICBsYW5ndWFnZS4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyB0aGUgTlBNCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYi1mZXRjaGVycyc+ZmV0Y2hlcjwvdWxpbms+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgZmV0Y2hlciBpbiBjb21iaW5hdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWRldnRvb2wtcmVmZXJlbmNlJz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBjcmVhdGUgcmVjaXBlcyB0aGF0IHByb2R1Y2UgTlBNIHBhY2thZ2VzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUd28gd29ya2Zsb3dzIGV4aXN0IHRoYXQgYWxsb3cgeW91IHRvIGNyZWF0ZSBOUE0gcGFja2FnZXMKKyAgICAgICAgICAgICAgICB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OiB0aGUgTlBNIHJlZ2lzdHJ5IG1vZHVsZXMKKyAgICAgICAgICAgICAgICBtZXRob2QgYW5kIHRoZSBOUE0gcHJvamVjdCBjb2RlIG1ldGhvZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIE5QTSByZWNpcGVzIG1hbnVhbGx5LAorICAgICAgICAgICAgICAgICAgICB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGlzIGZhciBzaW1wbGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHNvbWUgcmVxdWlyZW1lbnRzIGFuZCBjYXZlYXRzIGV4aXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbnBtLXBhY2thZ2UtY3JlYXRpb24tcmVxdWlyZW1lbnRzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UmVxdWlyZW1lbnRzIGFuZCBDYXZlYXRzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZm9sbG93aW5nIGJlZm9yZSB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGNyZWF0ZSBOUE0gcGFja2FnZXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2YgdGhlIHR3byBtZXRob2RzIHRoYXQgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGNyZWF0ZSBOUE0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcywgdGhlIHJlZ2lzdHJ5IGFwcHJvYWNoIGlzIHNsaWdodGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbWlnaHQgY29uc2lkZXIgdGhlIHByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb2FjaCBiZWNhdXNlIHlvdSBkbyBub3QgaGF2ZSB0byBwdWJsaXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBtb2R1bGUgaW4gdGhlIE5QTSByZWdpc3RyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL2RvY3MubnBtanMuY29tL21pc2MvcmVnaXN0cnknPjxmaWxlbmFtZT5ucG0tcmVnaXN0cnk8L2ZpbGVuYW1lPjwvdWxpbms+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBOUE0ncyBwdWJsaWMgcmVnaXN0cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgZmFtaWxpYXIgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1kZXZ0b29sLXJlZmVyZW5jZSc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBOUE0gaG9zdCB0b29scyBuZWVkIHRoZSBuYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzLW5wbTwvZmlsZW5hbWU+IHBhY2thZ2UsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGdldCB0aGUgcGFja2FnZSBieSBjbG9uaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vcGVuZW1iZWRkZWQnPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBvdXQgb2YgR2l0SHViLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gYWRkIHRoZSBwYXRoIHRvIHlvdXIgbG9jYWwgY29weSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY2Fubm90IGRldGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZSBsaWJyYXJpZXMgaW4gbW9kdWxlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IG1hbnVhbGx5IGFkZCBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGRlcGxveWluZyBOUE0gcGFja2FnZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjYW5ub3QgZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggZGVwZW5kZW50IHBhY2thZ2VzIGFyZSBtaXNzaW5nIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCAoZS5nLiB0aGUgbm9kZSBydW50aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vZGVqczwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBhcmUgbWlzc2luZyBhbmQgYmUgc3VyZSB0aGV5IGFyZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggeW91IG1pZ2h0IG5vdCBuZWVkIE5QTSB0byBydW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgcGFja2FnZSwgaXQgaXMgdXNlZnVsIHRvIGhhdmUgTlBNIG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE5QTSBwYWNrYWdlIG5hbWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzLW5wbTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSducG0tdXNpbmctdGhlLXJlZ2lzdHJ5LW1vZHVsZXMtbWV0aG9kJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgdGhlIFJlZ2lzdHJ5IE1vZHVsZXMgTWV0aG9kPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgYW4gZXhhbXBsZSB0aGF0IHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jdXRlLWZpbGVzPC9maWxlbmFtZT4gbW9kdWxlLCB3aGljaCBpcyBhCisgICAgICAgICAgICAgICAgICAgIGZpbGUgYnJvd3NlciB3ZWIgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qga25vdyB0aGUgPGZpbGVuYW1lPmN1dGUtZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZCB0aGUgTlBNIGZldGNoZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGFkZCAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9Y3V0ZS1maWxlczt2ZXJzaW9uPTEuMC4yIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIHJ1bnMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2wgY3JlYXRlPC9maWxlbmFtZT4gYW5kIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHNhbWUgZmV0Y2ggVVJJIHRvIGRvd25sb2FkIGVhY2ggZGVwZW5kZW5jeSBhbmQgY2FwdHVyZQorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIGRldGFpbHMgd2hlcmUgcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBnZW5lcmF0ZWQgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGZpbGUgaXMgZmFpcmx5IHNpbXBsZSBhbmQgY29udGFpbnMgZXZlcnkKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZSB0aGF0IDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gZmluZHMKKyAgICAgICAgICAgICAgICAgICAgYW5kIGluY2x1ZGVzIHRoZSBsaWNlbnNlcyBpbiB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGV4YW1pbmUgdGhlIHZhcmlhYmxlcyBhbmQgbG9vayBmb3IgdGhvc2UKKyAgICAgICAgICAgICAgICAgICAgd2l0aCAidW5rbm93biIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmllbGQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yCisgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIiBtb2R1bGVzIGFuZCBtYW51YWxseSBhZGQgdGhlIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gY3JlYXRlcyBhICJzaHJpbmt3cmFwIiBmaWxlCisgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgU2hyaW5rd3JhcCBmaWxlcyBjYXB0dXJlIHRoZSB2ZXJzaW9uIG9mIGFsbCBkZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICAgICAgTWFueSBwYWNrYWdlcyBkbyBub3QgcHJvdmlkZSBzaHJpbmt3cmFwIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbDwvZmlsZW5hbWU+IGNyZWF0ZSBhIHNocmlua3dyYXAKKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBpdCBydW5zLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBjcmVhdGVkIGZvciBlYWNoIHN1Yi1tb2R1bGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBvbGljeSBpcyB0aGUgb25seSBwcmFjdGljYWwgd2F5IHRvIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlcyBmb3IgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgcmVwcmVzZW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsaWNlbnNlIG1hbmlmZXN0IG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgZWRpdC1yZWNpcGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIGxldHMgeW91IHRha2UgYSBsb29rIGF0IHRoZSByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIGN1dGUtZmlsZXMKKyAgICAgU1VNTUFSWSA9ICJUdXJuIGFueSBmb2xkZXIgb24geW91ciBjb21wdXRlciBpbnRvIGEgY3V0ZSBmaWxlIGJyb3dzZXIsIGF2YWlsYWJsZSBvbiB0aGUgbG9jYWwgbmV0d29yay4iCisgICAgIExJQ0VOU0UgPSAiTUlUICZhbXA7IElTQyAmYW1wOyBVbmtub3duIgorICAgICBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MWQ5OGMwYTFkYjQyOTU2Nzg3YjE5MDljNzRhODZjYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy90b2lkZW50aWZpZXIvTElDRU5TRTttZDU9MWEyNjEwNzFhMDQ0ZDAyZWI2ZjJiYjQ3ZjUxYTM1MDIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvZGVidWcvTElDRU5TRTttZDU9ZGRkODE1YTQ3NWU3MzM4YjBiZTdhMTRkOGVlMzVhOTkgXAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgIFNSQ19VUkkgPSAiIFwKKyAgICAgICAgIG5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy87cGFja2FnZT1jdXRlLWZpbGVzO3ZlcnNpb249JHtQVn0gXAorICAgICAgICAgbnBtc3c6Ly8ke1RISVNESVJ9LyR7QlBOfS9ucG0tc2hyaW5rd3JhcC5qc29uIFwKKyAgICAgIgorCisgICAgIFMgPSAiJHtXT1JLRElSfS9ucG0iCisKKyAgICAgaW5oZXJpdCBucG0KKworICAgICBMSUNFTlNFXyR7UE59ID0gIk1JVCIKKyAgICAgTElDRU5TRV8ke1BOfS1hY2NlcHRzID0gIk1JVCIKKyAgICAgTElDRU5TRV8ke1BOfS1hcnJheS1mbGF0dGVuID0gIk1JVCIKKyAgICAgLi4uCisgICAgIExJQ0VOU0VfJHtQTn0tdmFyeSA9ICJNSVQiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhyZWUga2V5IHBvaW50cyBleGlzdCBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyB0aGUgTlBNIHNjaGVtZSBzbyB0aGF0IHRoZSBOUE0gZmV0Y2hlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBjb2xsZWN0cyBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGljZW5zZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIHN1Yi1tb2R1bGUncyBsaWNlbnNlIGlzIHVuYXZhaWxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdWItbW9kdWxlJ3MgbmFtZSBhcHBlYXJzIGluIHRoZSBjb21tZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmluaGVyaXQgbnBtPC9maWxlbmFtZT4gc3RhdGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLW5wbSc+PGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyB0byBwYWNrYWdlIHVwIGFsbCB0aGUgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmN1dGUtZmlsZXM8L2ZpbGVuYW1lPiBwYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCBjdXRlLWZpbGVzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgUmVtZW1iZXIgdGhhdCA8ZmlsZW5hbWU+bm9kZWpzPC9maWxlbmFtZT4gbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgb24gdGhlIHRhcmdldCBiZWZvcmUgeW91ciBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyAxOTIuMTY4LjcuMiBmb3IgdGhlIHRhcmdldCdzIElQIGFkZHJlc3MsIHVzZQorICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZGVwbG95IHlvdXIgcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgZGVwbG95LXRhcmdldCAtcyBjdXRlLWZpbGVzIHJvb3RAMTkyLjE2OC43LjIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0LCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHRlc3QgdGhlIGFwcGxpY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugb2YgYSBrbm93IGlzc3VlLCB5b3UgY2Fubm90IHNpbXBseSBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jdXRlLWZpbGVzPC9maWxlbmFtZT4gYXMgeW91IHdvdWxkIGlmIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgaGFkIHJ1biA8ZmlsZW5hbWU+bnBtIGluc3RhbGw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgL3Vzci9saWIvbm9kZV9tb2R1bGVzL2N1dGUtZmlsZXMKKyAgICAgJCBub2RlIGN1dGUtZmlsZXMuanMKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbiBhIGJyb3dzZXIsIGdvIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5odHRwOi8vMTkyLjE2OC43LjI6MzAwMDwvZmlsZW5hbWU+IGFuZCB5b3UKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9jdXRlLWZpbGVzLW5wbS1leGFtcGxlLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSByZWNpcGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndvcmtzcGFjZS9yZWNpcGVzL2N1dGUtZmlsZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHJlY2lwZSBpbiBhbnkgbGF5ZXIgeW91IGNob29zZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSducG0tdXNpbmctdGhlLW5wbS1wcm9qZWN0cy1tZXRob2QnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgTlBNIFByb2plY3RzIENvZGUgTWV0aG9kPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCBpdCBpcyB1c2VmdWwgdG8gcGFja2FnZSBtb2R1bGVzIGFscmVhZHkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIE5QTSByZWdpc3RyeSwgYWRkaW5nIDxmaWxlbmFtZT5ub2RlLmpzPC9maWxlbmFtZT4gcHJvamVjdHMKKyAgICAgICAgICAgICAgICAgICAgdW5kZXIgZGV2ZWxvcG1lbnQgaXMgYSBtb3JlIGNvbW1vbiBkZXZlbG9wZXIgdXNlIGNhc2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBjb3ZlcnMgdGhlIE5QTSBwcm9qZWN0cyBjb2RlIG1ldGhvZCwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgdmVyeSBzaW1pbGFyIHRvIHRoZSAicmVnaXN0cnkiIGFwcHJvYWNoIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIE5QTSBwcm9qZWN0cyBtZXRob2QsIHlvdSBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd2l0aCBhbiBVUkwgdGhhdCBwb2ludHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVwbGljYXRpbmcgdGhlIHNhbWUgZXhhbXBsZSwgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmN1dGUtZmlsZXM8L2ZpbGVuYW1lPikgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYWRkIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0aW5hZ2x2L2N1dGUtZmlsZXMuZ2l0CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSB0aGlzIGNvbW1hbmQgZ2VuZXJhdGVzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGxvb2tzIGxpa2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gIiBcCisgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL21hcnRpbmFnbHYvY3V0ZS1maWxlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgbnBtc3c6Ly8ke1RISVNESVJ9LyR7QlBOfS9ucG0tc2hyaW5rd3JhcC5qc29uIFwKKyAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBtYWluIG1vZHVsZSBpcyB0YWtlbiBmcm9tIHRoZSBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgZGVwZW5kZW50cyBhcmUgdGFrZW4gZnJvbSB0aGUgTlBNIHJlZ2lzdHJ5LgorICAgICAgICAgICAgICAgICAgICBPdGhlciB0aGFuIHRob3NlIGRpZmZlcmVuY2VzLCB0aGUgcmVjaXBlIGlzIGJhc2ljYWxseSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2FtZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBidWlsZCBhbmQgZGVwbG95IHRoZSBwYWNrYWdlIGV4YWN0bHkgYXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIHRoYXQgdXNlcyB0aGUgcmVnaXN0cnkgbW9kdWxlcworICAgICAgICAgICAgICAgICAgICBtZXRob2QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2FkZGluZy1jdXN0b20tbWV0YWRhdGEtdG8tcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPkFkZGluZyBjdXN0b20gbWV0YWRhdGEgdG8gcGFja2FnZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQUREX01FVEFEQVRBJz48ZmlsZW5hbWU+UEFDS0FHRV9BRERfTUVUQURBVEE8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgdG8gYWRkIGFkZGl0aW9uYWwgbWV0YWRhdGEgdG8gcGFja2FnZXMuIFRoaXMgaXMKKyAgICAgICAgICAgICAgICByZWZsZWN0ZWQgaW4gdGhlIHBhY2thZ2UgY29udHJvbC9zcGVjIGZpbGUuIFRvIHRha2UgdGhlIGlwaworICAgICAgICAgICAgICAgIGZvcm1hdCBmb3IgZXhhbXBsZSwgdGhlIENPTlRST0wgZmlsZSBzdG9yZWQgaW5zaWRlIHdvdWxkCisgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgYWRkaXRpb25hbCBtZXRhZGF0YSBhcyBhZGRpdGlvbmFsIGxpbmVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgY2FuIGJlIHVzZWQgaW4gbXVsdGlwbGUgd2F5cywgaW5jbHVkaW5nIHVzaW5nCisgICAgICAgICAgICAgICAgc3VmZml4ZXMgdG8gc2V0IGl0IGZvciBhIHNwZWNpZmljIHBhY2thZ2UgdHlwZSBhbmQvb3IgcGFja2FnZS4KKyAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHByZWNlZGVuY2UgaXMgdGhlIHNhbWUgYXMgdGhpcyBsaXN0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FERF9NRVRBREFUQV8mbHQ7UEtHVFlQRSZndDtfJmx0O1BOJmd0OzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9BRERfTUVUQURBVEFfJmx0O1BLR1RZUEUmZ3Q7PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FERF9NRVRBREFUQV8mbHQ7UE4mZ3Q7PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FERF9NRVRBREFUQTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICZsdDtQS0dUWVBFJmd0OyBpcyBhIHBhcmFtZXRlciBhbmQgZXhwZWN0ZWQgdG8gYmUgYQorICAgICAgICAgICAgICAgIGRpc3RpbmN0IG5hbWUgb2Ygc3BlY2lmaWMgcGFja2FnZSB0eXBlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JUEsgZm9yIC5pcGsgcGFja2FnZXM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRFQiBmb3IgLmRlYiBwYWNrYWdlczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UlBNIGZvciAucnBtIHBhY2thZ2VzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgJmx0O1BOJmd0OyBpcyBhIHBhcmFtZXRlciBhbmQgZXhwZWN0ZWQgdG8gYmUgYSBwYWNrYWdlIG5hbWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBjYW4gY29udGFpbiBtdWx0aXBsZSBbb25lLWxpbmVdIG1ldGFkYXRhIGZpZWxkcworICAgICAgICAgICAgICAgIHNlcGFyYXRlZCBieSB0aGUgbGl0ZXJhbCBzZXF1ZW5jZSAnXG4nLiBUaGUgc2VwYXJhdG9yIGNhbiBiZQorICAgICAgICAgICAgICAgIHJlZGVmaW5lZCB1c2luZyB0aGUgdmFyaWFibGUgZmxhZyA8ZmlsZW5hbWU+c2VwYXJhdG9yPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IGFkZHMgdHdvIGN1c3RvbSBmaWVsZHMgZm9yCisgICAgICAgICAgICAgICAgaXBrIHBhY2thZ2VzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBQQUNLQUdFX0FERF9NRVRBREFUQV9JUEsgPSAiVmVuZG9yOiBDdXN0b21JcGtcbkdyb3VwOiBBcHBsaWNhdGlvbnMvU3ByZWFkc2hlZXRzIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2VmZmljaWVudGx5LWZldGNoaW5nLXNvdXJjZS1maWxlcy1kdXJpbmctYS1idWlsZCc+CisgICAgICAgIDx0aXRsZT5FZmZpY2llbnRseSBGZXRjaGluZyBTb3VyY2UgRmlsZXMgRHVyaW5nIGEgQnVpbGQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd29ya3Mgd2l0aCBzb3VyY2UgZmlsZXMgbG9jYXRlZAorICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgV2hlbiB5b3UgYnVpbGQgc29tZXRoaW5nIHVzaW5nIEJpdEJha2UsIGEgYmlnIHBhcnQgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICAgICAgaXMgbG9jYXRpbmcgYW5kIGRvd25sb2FkaW5nIGFsbCB0aGUgc291cmNlIHRhcmJhbGxzLgorICAgICAgICAgICAgRm9yIGltYWdlcywgZG93bmxvYWRpbmcgYWxsIHRoZSBzb3VyY2UgZm9yIHZhcmlvdXMgcGFja2FnZXMgY2FuCisgICAgICAgICAgICB0YWtlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRpbWUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBzaG93cyB5b3UgaG93IHlvdSBjYW4gdXNlIG1pcnJvcnMgdG8gc3BlZWQgdXAKKyAgICAgICAgICAgIGZldGNoaW5nIHNvdXJjZSBmaWxlcyBhbmQgaG93IHlvdSBjYW4gcHJlLWZldGNoIGZpbGVzIGFsbCBvZiB3aGljaAorICAgICAgICAgICAgbGVhZHMgdG8gbW9yZSBlZmZpY2llbnQgdXNlIG9mIHJlc291cmNlcyBhbmQgdGltZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLWVmZmVjdGl2ZS1taXJyb3JzJz4KKyAgICAgICAgICAgIDx0aXRsZT5TZXR0aW5nIHVwIEVmZmVjdGl2ZSBNaXJyb3JzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBnb29kIGRlYWwgdGhhdCBnb2VzIGludG8gYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgYnVpbGQgaXMgc2ltcGx5IGRvd25sb2FkaW5nIGFsbCBvZiB0aGUgc291cmNlIHRhcmJhbGxzLgorICAgICAgICAgICAgICAgIE1heWJlIHlvdSBoYXZlIGJlZW4gd29ya2luZyB3aXRoIGFub3RoZXIgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgKE9wZW5FbWJlZGRlZCBvciBBbmdzdHJvbSkgZm9yIHdoaWNoIHlvdSBoYXZlIGJ1aWx0IHVwIGEKKyAgICAgICAgICAgICAgICBzaXphYmxlIGRpcmVjdG9yeSBvZiBzb3VyY2UgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgT3IsIHBlcmhhcHMgc29tZW9uZSBlbHNlIGhhcyBzdWNoIGEgZGlyZWN0b3J5IGZvciB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICBoYXZlIHJlYWQgYWNjZXNzLgorICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIHNhdmUgdGltZSBieSBhZGRpbmcgc3RhdGVtZW50cyB0byB5b3VyCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHNvIHRoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgY2hlY2tzIGxvY2FsCisgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZmlyc3QgZm9yIGV4aXN0aW5nIHRhcmJhbGxzIGJlZm9yZSBjaGVja2luZyB0aGUKKyAgICAgICAgICAgICAgICBJbnRlcm5ldC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBlZmZpY2llbnQgd2F5IHRvIHNldCBpdCB1cCBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU09VUkNFX01JUlJPUl9VUkwgPz0gImZpbGU6Ly8vaG9tZS95b3UveW91ci1kb3dubG9hZC1kaXIvIgorICAgICBJTkhFUklUICs9ICJvd24tbWlycm9ycyIKKyAgICAgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiCisgICAgICMgQkJfTk9fTkVUV09SSyA9ICIxIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgY2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgdGFyYmFsbHMgb2YgdGhlIEdpdCByZXBvc2l0b3JpZXMgYW5kIHN0b3JlIHRoZW0gaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgRHVlIHRvIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGdlbmVyYXRpbmcgYW5kIHN0b3JpbmcgdGhlc2UKKyAgICAgICAgICAgICAgICB0YXJiYWxscyBpcyBub3QgdGhlIGJ1aWxkIHN5c3RlbSdzIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlLCBzZWUgdGhlIHZhcmlhYmxlJ3MgZ2xvc3NhcnkgZW50cnkgaW4gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dldHRpbmctc291cmNlLWZpbGVzLWFuZC1zdXBwcmVzc2luZy10aGUtYnVpbGQnPgorICAgICAgICAgICAgPHRpdGxlPkdldHRpbmcgU291cmNlIEZpbGVzIGFuZCBTdXBwcmVzc2luZyB0aGUgQnVpbGQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIHRlY2huaXF1ZSB5b3UgY2FuIHVzZSB0byByZWFkeSB5b3Vyc2VsZiBmb3IgYQorICAgICAgICAgICAgICAgIHN1Y2Nlc3NpdmUgc3RyaW5nIG9mIGJ1aWxkIG9wZXJhdGlvbnMsIGlzIHRvIHByZS1mZXRjaAorICAgICAgICAgICAgICAgIGFsbCB0aGUgc291cmNlIGZpbGVzIHdpdGhvdXQgYWN0dWFsbHkgc3RhcnRpbmcgYSBidWlsZC4KKyAgICAgICAgICAgICAgICBUaGlzIHRlY2huaXF1ZSBsZXRzIHlvdSB3b3JrIHRocm91Z2ggYW55IGRvd25sb2FkIGlzc3VlcworICAgICAgICAgICAgICAgIGFuZCB1bHRpbWF0ZWx5IGdhdGhlcnMgYWxsIHRoZSBzb3VyY2UgZmlsZXMgaW50byB5b3VyCisgICAgICAgICAgICAgICAgZG93bmxvYWQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWJ1aWxkLWRvd25sb2Fkcyc+PGZpbGVuYW1lPmJ1aWxkL2Rvd25sb2FkczwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgbG9jYXRlZCB3aXRoCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCBmb3JtIHRvIGZldGNoIGFsbCB0aGUKKyAgICAgICAgICAgICAgICBuZWNlc3Nhcnkgc291cmNlcyB3aXRob3V0IHN0YXJ0aW5nIHRoZSBidWlsZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gLS1ydW5hbGw9ZmV0Y2gKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyB2YXJpYXRpb24gb2YgdGhlIEJpdEJha2UgY29tbWFuZCBndWFyYW50ZWVzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgaGF2ZSBhbGwgdGhlIHNvdXJjZXMgZm9yIHRoYXQgQml0QmFrZSB0YXJnZXQgc2hvdWxkIHlvdQorICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3QgZnJvbSB0aGUgSW50ZXJuZXQgYW5kIHdhbnQgdG8gZG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgbGF0ZXIgb2ZmbGluZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJzZWxlY3RpbmctYW4taW5pdGlhbGl6YXRpb24tbWFuYWdlciI+CisgICAgICAgIDx0aXRsZT5TZWxlY3RpbmcgYW4gSW5pdGlhbGl6YXRpb24gTWFuYWdlcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFN5c1Zpbml0IGFzIHRoZSBpbml0aWFsaXphdGlvbgorICAgICAgICAgICAgbWFuYWdlci4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHN1cHBvcnQgYWxzbyBleGlzdHMgZm9yIHN5c3RlbWQsCisgICAgICAgICAgICB3aGljaCBpcyBhIGZ1bGwgcmVwbGFjZW1lbnQgZm9yIGluaXQgd2l0aAorICAgICAgICAgICAgcGFyYWxsZWwgc3RhcnRpbmcgb2Ygc2VydmljZXMsIHJlZHVjZWQgc2hlbGwgb3ZlcmhlYWQgYW5kIG90aGVyCisgICAgICAgICAgICBmZWF0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IG1hbnkgZGlzdHJpYnV0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aGluIHRoZSBzeXN0ZW0sIFN5c1Zpbml0IHRyZWF0cyBzeXN0ZW0gY29tcG9uZW50cyBhcyBzZXJ2aWNlcy4KKyAgICAgICAgICAgIFRoZXNlIHNlcnZpY2VzIGFyZSBtYWludGFpbmVkIGFzIHNoZWxsIHNjcmlwdHMgc3RvcmVkIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvaW5pdC5kLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFNlcnZpY2VzIG9yZ2FuaXplIGludG8gZGlmZmVyZW50IHJ1biBsZXZlbHMuCisgICAgICAgICAgICBUaGlzIG9yZ2FuaXphdGlvbiBpcyBtYWludGFpbmVkIGJ5IHB1dHRpbmcgbGlua3MgdG8gdGhlIHNlcnZpY2VzCisgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPi9ldGMvcmNOLmQvPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIHdoZXJlCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+Ti88L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zOgorICAgICAgICAgICAgIlMiLCAiMCIsICIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCBvciAiNiIuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBFYWNoIHJ1bmxldmVsIGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlIHByZXZpb3VzIHJ1bmxldmVsLgorICAgICAgICAgICAgICAgIFRoaXMgZGVwZW5kZW5jeSBhbGxvd3MgdGhlIHNlcnZpY2VzIHRvIHdvcmsgcHJvcGVybHkuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGNvbXBhcmlzb24sIHN5c3RlbWQgdHJlYXRzIGNvbXBvbmVudHMgYXMgdW5pdHMuCisgICAgICAgICAgICBVc2luZyB1bml0cyBpcyBhIGJyb2FkZXIgY29uY2VwdCBhcyBjb21wYXJlZCB0byB1c2luZyBhIHNlcnZpY2UuCisgICAgICAgICAgICBBIHVuaXQgaW5jbHVkZXMgc2V2ZXJhbCBkaWZmZXJlbnQgdHlwZXMgb2YgZW50aXRpZXMuCisgICAgICAgICAgICBTZXJ2aWNlIGlzIG9uZSBvZiB0aGUgdHlwZXMgb2YgZW50aXRpZXMuCisgICAgICAgICAgICBUaGUgcnVubGV2ZWwgY29uY2VwdCBpbiBTeXNWaW5pdCBjb3JyZXNwb25kcyB0byB0aGUgY29uY2VwdCBvZiBhCisgICAgICAgICAgICB0YXJnZXQgaW4gc3lzdGVtZCwgd2hlcmUgdGFyZ2V0IGlzIGFsc28gYSB0eXBlIG9mIHN1cHBvcnRlZCB1bml0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBhIFN5c1Zpbml0LWJhc2VkIHN5c3RlbSwgc2VydmljZXMgbG9hZCBzZXF1ZW50aWFsbHkgKGkuZS4gb25lCisgICAgICAgICAgICBieSBvbmUpIGR1cmluZyBhbmQgcGFyYWxsZWxpemF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgICAgICBXaXRoIHN5c3RlbWQsIHNlcnZpY2VzIHN0YXJ0IGluIHBhcmFsbGVsLgorICAgICAgICAgICAgTmVlZGxlc3MgdG8gc2F5LCB0aGUgbWV0aG9kIGNhbiBoYXZlIGFuIGltcGFjdCBvbiBzeXN0ZW0gc3RhcnR1cAorICAgICAgICAgICAgcGVyZm9ybWFuY2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSBTeXNWaW5pdCwgeW91IGRvCisgICAgICAgICAgICBub3QgaGF2ZSB0byBkbyBhbnl0aGluZy4KKyAgICAgICAgICAgIEJ1dCwgaWYgeW91IHdhbnQgdG8gdXNlIHN5c3RlbWQsIHlvdSBtdXN0CisgICAgICAgICAgICB0YWtlIHNvbWUgc3RlcHMgYXMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctc3lzdGVtZC1leGNsdXNpdmVseSc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgc3lzdGVtZCBFeGNsdXNpdmVseTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNldCB0aGVzZSB2YXJpYWJsZXMgaW4geW91ciBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHN5c3RlbWQiCisgICAgIFZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHByZXZlbnQgdGhlIFN5c1Zpbml0CisgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIGZlYXR1cmUgZnJvbQorICAgICAgICAgICAgICAgIGJlaW5nIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgPSAic3lzdmluaXQiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIERvaW5nIHNvIHJlbW92ZXMgYW55IHJlZHVuZGFudCBTeXNWaW5pdCBzY3JpcHRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyByZW1vdmUgIGluaXRzY3JpcHRzIGZyb20geW91ciBpbWFnZSBhbHRvZ2V0aGVyLAorICAgICAgICAgICAgICAgIHNldCB0aGlzIHZhcmlhYmxlIGFsc286CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBiYWNrZmlsbCB2YXJpYWJsZSwgc2VlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQ8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLXN5c3RlbWQtZm9yLXRoZS1tYWluLWltYWdlLWFuZC11c2luZy1zeXN2aW5pdC1mb3ItdGhlLXJlc2N1ZS1pbWFnZSc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgc3lzdGVtZCBmb3IgdGhlIE1haW4gSW1hZ2UgYW5kIFVzaW5nIFN5c1Zpbml0IGZvciB0aGUgUmVzY3VlIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU2V0IHRoZXNlIHZhcmlhYmxlcyBpbiB5b3VyIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3lzdGVtZCIKKyAgICAgVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciA9ICJzeXN0ZW1kIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBEb2luZyBzbyBjYXVzZXMgeW91ciBtYWluIGltYWdlIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYjwvZmlsZW5hbWU+IHJlY2lwZSBhbmQKKyAgICAgICAgICAgICAgICBzeXN0ZW1kLgorICAgICAgICAgICAgICAgIFRoZSByZXNjdWUvbWluaW1hbCBpbWFnZSBjYW5ub3QgdXNlIHRoaXMgcGFja2FnZSBncm91cC4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBjYW4gaW5zdGFsbCBTeXNWaW5pdAorICAgICAgICAgICAgICAgIGFuZCB0aGUgYXBwcm9wcmlhdGUgcGFja2FnZXMgd2lsbCBoYXZlIHN1cHBvcnQgZm9yIGJvdGgKKyAgICAgICAgICAgICAgICBzeXN0ZW1kIGFuZCBTeXNWaW5pdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJzZWxlY3RpbmctZGV2LW1hbmFnZXIiPgorICAgICAgICA8dGl0bGU+U2VsZWN0aW5nIGEgRGV2aWNlIE1hbmFnZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgbXVsdGlwbGUgd2F5cyB0byBtYW5hZ2UgdGhlIGRldmljZQorICAgICAgICAgICAgbWFuYWdlciAoPGZpbGVuYW1lPi9kZXY8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGVyc2lzdGVudCBhbmQgUHJlLVBvcHVsYXRlZDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgY2FzZSwgdGhlIDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGlzIHBlcnNpc3RlbnQgYW5kIHRoZSByZXF1aXJlZCBkZXZpY2Ugbm9kZXMgYXJlIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2UgPGZpbGVuYW1lPmRldnRtcGZzPC9maWxlbmFtZT4gd2l0aCBhIERldmljZSBNYW5hZ2VyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIHRoZSA8ZmlsZW5hbWU+L2RldjwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBpcyBwcm92aWRlZCBieSB0aGUga2VybmVsIGFzIGFuIGluLW1lbW9yeSBmaWxlIHN5c3RlbSBhbmQKKyAgICAgICAgICAgICAgICAgICAgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgYnkgdGhlIGtlcm5lbCBhdCBydW50aW1lLgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2YgZGV2aWNlIG5vZGVzIGlzIGRvbmUgaW4gdXNlcgorICAgICAgICAgICAgICAgICAgICBzcGFjZSBieSBhIGRldmljZSBtYW5hZ2VyIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveC1tZGV2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ic3RhdGljLWRldi1tYW5hZ2VtZW50Ij4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBQZXJzaXN0ZW50IGFuZCBQcmUtUG9wdWxhdGVkPGZpbGVuYW1lPi9kZXY8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgc3RhdGljIG1ldGhvZCBmb3IgZGV2aWNlIHBvcHVsYXRpb24sIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgc2V0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1VU0VfREVWRlMnPjxmaWxlbmFtZT5VU0VfREVWRlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjAiIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VfREVWRlMgPSAiMCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBjb250ZW50IG9mIHRoZSByZXN1bHRpbmcgPGZpbGVuYW1lPi9kZXY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBkZWZpbmVkIGluIGEgRGV2aWNlIFRhYmxlIGZpbGUuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0RFVklDRV9UQUJMRVMnPjxmaWxlbmFtZT5JTUFHRV9ERVZJQ0VfVEFCTEVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlZmluZXMgdGhlIERldmljZSBUYWJsZSB0byB1c2UgYW5kIHNob3VsZCBiZSBzZXQKKyAgICAgICAgICAgICAgICBpbiB0aGUgbWFjaGluZSBvciBkaXN0cm8gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc2V0IHRoaXMgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGRlZmluZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfREVWSUNFX1RBQkxFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLCB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZpY2VfdGFibGUtbWluaW1hbC50eHQ8L2ZpbGVuYW1lPiBpcyB1c2VkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfREVWSUNFX1RBQkxFUyA9ICJkZXZpY2VfdGFibGUtbXltYWNoaW5lLnR4dCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwb3B1bGF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIDxmaWxlbmFtZT5tYWtlZGV2czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdXRpbGl0eSBkdXJpbmcgaW1hZ2UgY3JlYXRpb246CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0iZGV2dG1wZnMtZGV2LW1hbmFnZW1lbnQiPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIDxmaWxlbmFtZT5kZXZ0bXBmczwvZmlsZW5hbWU+IGFuZCBhIERldmljZSBNYW5hZ2VyPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSBkeW5hbWljIG1ldGhvZCBmb3IgZGV2aWNlIHBvcHVsYXRpb24sIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgdXNlIChvciBiZSBzdXJlIHRvIHNldCkgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVVTRV9ERVZGUyc+PGZpbGVuYW1lPlVTRV9ERVZGUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVVNFX0RFVkZTID0gIjEiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFdpdGggdGhpcyBzZXR0aW5nLCB0aGUgcmVzdWx0aW5nIDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaXMgcG9wdWxhdGVkIGJ5IHRoZSBrZXJuZWwgdXNpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG1wZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBNYWtlIHN1cmUgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09ORklHX0RFVlRNUEZTPC9maWxlbmFtZT4gaXMgc2V0IHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICB5b3UgYnVpbGQgYSBMaW51eCBrZXJuZWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFsbCBkZXZpY2VzIGNyZWF0ZWQgYnkgPGZpbGVuYW1lPmRldnRtcGZzPC9maWxlbmFtZT4gd2lsbCBiZQorICAgICAgICAgICAgICAgIG93bmVkIGJ5IDxmaWxlbmFtZT5yb290PC9maWxlbmFtZT4gYW5kIGhhdmUgcGVybWlzc2lvbnMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+MDYwMDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBoYXZlIG1vcmUgY29udHJvbCBvdmVyIHRoZSBkZXZpY2Ugbm9kZXMsIHlvdSBjYW4gdXNlIGEKKyAgICAgICAgICAgICAgICBkZXZpY2UgbWFuYWdlciBsaWtlIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveC1tZGV2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgWW91IGNob29zZSB0aGUgZGV2aWNlIG1hbmFnZXIgYnkgZGVmaW5pbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcjwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgaW4geW91ciBtYWNoaW5lIG9yIGRpc3RybyBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPSAidWRldiIKKworICAgICAjIFNvbWUgYWx0ZXJuYXRpdmUgdmFsdWVzCisgICAgICMgVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyID0gImJ1c3lib3gtbWRldiIKKyAgICAgIyBWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPSAic3lzdGVtZCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1hcHBkZXYtc3JjcmV2Ij4KKyAgICAgICAgPHRpdGxlPlVzaW5nIGFuIEV4dGVybmFsIFNDTTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UncmUgd29ya2luZyBvbiBhIHJlY2lwZSB0aGF0IHB1bGxzIGZyb20gYW4gZXh0ZXJuYWwgU291cmNlCisgICAgICAgICAgICBDb2RlIE1hbmFnZXIgKFNDTSksIGl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgc3lzdGVtIG5vdGljZSBuZXcgcmVjaXBlIGNoYW5nZXMgYWRkZWQgdG8gdGhlIFNDTSBhbmQgdGhlbiBidWlsZAorICAgICAgICAgICAgdGhlIHJlc3VsdGluZyBwYWNrYWdlcyB0aGF0IGRlcGVuZCBvbiB0aGUgbmV3IHJlY2lwZXMgYnkgdXNpbmcKKyAgICAgICAgICAgIHRoZSBsYXRlc3QgdmVyc2lvbnMuCisgICAgICAgICAgICBUaGlzIG9ubHkgd29ya3MgZm9yIFNDTXMgZnJvbSB3aGljaCBpdCBpcyBwb3NzaWJsZSB0byBnZXQgYQorICAgICAgICAgICAgc2Vuc2libGUgcmV2aXNpb24gbnVtYmVyIGZvciBjaGFuZ2VzLgorICAgICAgICAgICAgQ3VycmVudGx5LCB5b3UgY2FuIGRvIHRoaXMgd2l0aCBBcGFjaGUgU3VidmVyc2lvbiAoU1ZOKSwgR2l0LCBhbmQKKyAgICAgICAgICAgIEJhemFhciAoQlpSKSByZXBvc2l0b3JpZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGVuYWJsZSB0aGlzIGJlaGF2aW9yLCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSBuZWVkcyB0byByZWZlcmVuY2UKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNQVic+PGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFYgPSAiMS4yLjMrZ2l0JHtTUkNQVn0iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGVuLCB5b3UgY2FuIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ1JFVl9wbi08cmVwbGFjZWFibGU+UE48L3JlcGxhY2VhYmxlPiA9ICIke0FVVE9SRVZ9IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgcmVjaXBlIGZvciB3aGljaCB5b3Ugd2FudCB0byBlbmFibGUgYXV0b21hdGljIHNvdXJjZQorICAgICAgICAgICAgcmV2aXNpb24gdXBkYXRpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgd2FudCB0byB1cGRhdGUgeW91ciBsb2NhbCBjb25maWd1cmF0aW9uIGZpbGUsIHlvdSBjYW4KKyAgICAgICAgICAgIGFkZCB0aGUgZm9sbG93aW5nIGRpcmVjdGx5IHRvIHRoZSByZWNpcGUgdG8gZmluaXNoIGVuYWJsaW5nCisgICAgICAgICAgICB0aGUgZmVhdHVyZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDUkVWID0gIiR7QVVUT1JFVn0iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGEgZGlzdHJpYnV0aW9uIG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS1ibGVlZGluZzwvZmlsZW5hbWU+LCB3aG9zZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlIGNvbnRhaW5zIHRoZSBsaW5lOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1mbG9hdGluZy1yZXZpc2lvbnMuaW5jCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGxpbmUgcHVsbHMgaW4gdGhlIGxpc3RlZCBpbmNsdWRlIGZpbGUgdGhhdCBjb250YWlucworICAgICAgICAgICAgbnVtZXJvdXMgbGluZXMgb2YgZXhhY3RseSB0aGF0IGZvcm06CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICNTUkNSRVZfcG4tb3BrZy1uYXRpdmUgPz0gIiR7QVVUT1JFVn0iCisgICAgICNTUkNSRVZfcG4tb3BrZy1zZGsgPz0gIiR7QVVUT1JFVn0iCisgICAgICNTUkNSRVZfcG4tb3BrZyA/PSAiJHtBVVRPUkVWfSIKKyAgICAgI1NSQ1JFVl9wbi1vcGtnLXV0aWxzLW5hdGl2ZSA/PSAiJHtBVVRPUkVWfSIKKyAgICAgI1NSQ1JFVl9wbi1vcGtnLXV0aWxzID89ICIke0FVVE9SRVZ9IgorICAgICBTUkNSRVZfcG4tZ2NvbmYtZGJ1cyA/PSAiJHtBVVRPUkVWfSIKKyAgICAgU1JDUkVWX3BuLW1hdGNoYm94LWNvbW1vbiA/PSAiJHtBVVRPUkVWfSIKKyAgICAgU1JDUkVWX3BuLW1hdGNoYm94LWNvbmZpZy1ndGsgPz0gIiR7QVVUT1JFVn0iCisgICAgIFNSQ1JFVl9wbi1tYXRjaGJveC1kZXNrdG9wID89ICIke0FVVE9SRVZ9IgorICAgICBTUkNSRVZfcG4tbWF0Y2hib3gta2V5Ym9hcmQgPz0gIiR7QVVUT1JFVn0iCisgICAgIFNSQ1JFVl9wbi1tYXRjaGJveC1wYW5lbC0yID89ICIke0FVVE9SRVZ9IgorICAgICBTUkNSRVZfcG4tbWF0Y2hib3gtdGhlbWVzLWV4dHJhID89ICIke0FVVE9SRVZ9IgorICAgICBTUkNSRVZfcG4tbWF0Y2hib3gtdGVybWluYWwgPz0gIiR7QVVUT1JFVn0iCisgICAgIFNSQ1JFVl9wbi1tYXRjaGJveC13bSA/PSAiJHtBVVRPUkVWfSIKKyAgICAgU1JDUkVWX3BuLXNldHRpbmdzLWRhZW1vbiA/PSAiJHtBVVRPUkVWfSIKKyAgICAgU1JDUkVWX3BuLXNjcmVlbnNob3QgPz0gIiR7QVVUT1JFVn0iCisgICAgICAgICAgLgorICAgICAgICAgIC4KKyAgICAgICAgICAuCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGVzZSBsaW5lcyBhbGxvdyB5b3UgdG8gZXhwZXJpbWVudCB3aXRoIGJ1aWxkaW5nIGEKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiB0aGF0IHRyYWNrcyB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IHNvdXJjZQorICAgICAgICAgICAgZm9yIG51bWVyb3VzIHBhY2thZ2VzLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkNhdXRpb248L3RpdGxlPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9reS1ibGVlZGluZzwvZmlsZW5hbWU+IGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgIGlzIG5vdCB0ZXN0ZWQgb24gYSByZWd1bGFyIGJhc2lzLgorICAgICAgICAgICAgICAgIEtlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSB1c2UgaXQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1yZWFkLW9ubHktcm9vdC1maWxlc3lzdGVtJz4KKyAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEgUmVhZC1Pbmx5IFJvb3QgRmlsZXN5c3RlbTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTdXBwb3NlLCBmb3Igc2VjdXJpdHkgcmVhc29ucywgeW91IG5lZWQgdG8gZGlzYWJsZQorICAgICAgICAgICAgeW91ciB0YXJnZXQgZGV2aWNlJ3Mgcm9vdCBmaWxlc3lzdGVtJ3Mgd3JpdGUgcGVybWlzc2lvbnMKKyAgICAgICAgICAgIChpLmUuIHlvdSBuZWVkIGEgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbSkuCisgICAgICAgICAgICBPciwgcGVyaGFwcyB5b3UgYXJlIHJ1bm5pbmcgdGhlIGRldmljZSdzIG9wZXJhdGluZyBzeXN0ZW0KKyAgICAgICAgICAgIGZyb20gYSByZWFkLW9ubHkgc3RvcmFnZSBkZXZpY2UuCisgICAgICAgICAgICBGb3IgZWl0aGVyIGNhc2UsIHlvdSBjYW4gY3VzdG9taXplIHlvdXIgaW1hZ2UgZm9yCisgICAgICAgICAgICB0aGF0IGJlaGF2aW9yLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBTdXBwb3J0aW5nIGEgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbSByZXF1aXJlcyB0aGF0IHRoZSBzeXN0ZW0gYW5kCisgICAgICAgICAgICBhcHBsaWNhdGlvbnMgZG8gbm90IHRyeSB0byB3cml0ZSB0byB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgWW91IG11c3QgY29uZmlndXJlIGFsbCBwYXJ0cyBvZiB0aGUgdGFyZ2V0IHN5c3RlbSB0byB3cml0ZQorICAgICAgICAgICAgZWxzZXdoZXJlLCBvciB0byBncmFjZWZ1bGx5IGZhaWwgaW4gdGhlIGV2ZW50IG9mIGF0dGVtcHRpbmcgdG8KKyAgICAgICAgICAgIHdyaXRlIHRvIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgIDwvbm90ZT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctdGhlLXJvb3QtZmlsZXN5c3RlbSc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFJvb3QgRmlsZXN5c3RlbTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSB0aGUgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbSwgc2ltcGx5IGFkZCB0aGUKKyAgICAgICAgICAgICAgICAicmVhZC1vbmx5LXJvb3RmcyIgZmVhdHVyZSB0byB5b3VyIGltYWdlLCBub3JtYWxseSBpbiBvbmUgb2YgdHdvIHdheXMuCisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHdheSBpcyB0byBhZGQgdGhlICJyZWFkLW9ubHktcm9vdGZzIiBpbWFnZSBmZWF0dXJlCisgICAgICAgICAgICAgICAgaW4gdGhlIGltYWdlJ3MgcmVjaXBlIGZpbGUgdmlhIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlLCB5b3UgY2FuIGFkZCB0aGUgc2FtZSBmZWF0dXJlIGZyb20gd2l0aGluIHlvdXIKKyAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3RvcnkncyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLCBhcyBpbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInJlYWQtb25seS1yb290ZnMiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZXNlIHZhcmlhYmxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWltYWdlZmVhdHVyZXMnPkN1c3RvbWl6aW5nIEltYWdlcyBVc2luZyBDdXN0b20gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaWFibGVzLCBzZWUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RVhUUkFfSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Bvc3QtaW5zdGFsbGF0aW9uLXNjcmlwdHMnPgorICAgICAgICAgICAgPHRpdGxlPlBvc3QtSW5zdGFsbGF0aW9uIFNjcmlwdHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0aGF0IHlvdSBtYWtlIHN1cmUgYWxsCisgICAgICAgICAgICAgICAgcG9zdC1JbnN0YWxsYXRpb24gKDxmaWxlbmFtZT5wa2dfcG9zdGluc3Q8L2ZpbGVuYW1lPikgc2NyaXB0cworICAgICAgICAgICAgICAgIGZvciBwYWNrYWdlcyB0aGF0IGFyZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UgY2FuIGJlIHJ1bgorICAgICAgICAgICAgICAgIGF0IHRoZSB0aW1lIHdoZW4gdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBvbiB0aGUgaG9zdCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlc2Ugc2NyaXB0cyBjYW5ub3QgYXR0ZW1wdCB0byBydW4gZHVyaW5nIGZpcnN0LWJvb3Qgb24gdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IGRldmljZS4KKyAgICAgICAgICAgICAgICBXaXRoIHRoZSAicmVhZC1vbmx5LXJvb3RmcyIgZmVhdHVyZSBlbmFibGVkLAorICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gY2hlY2tzIGR1cmluZyByb290IGZpbGVzeXN0ZW0gY3JlYXRpb24gdG8gbWFrZQorICAgICAgICAgICAgICAgIHN1cmUgYWxsIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdHMgc3VjY2VlZC4KKyAgICAgICAgICAgICAgICBJZiBhbnkgb2YgdGhlc2Ugc2NyaXB0cyBzdGlsbCBuZWVkIHRvIGJlIHJ1biBhZnRlciB0aGUgcm9vdAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gaXMgY3JlYXRlZCwgdGhlIGJ1aWxkIGltbWVkaWF0ZWx5IGZhaWxzLgorICAgICAgICAgICAgICAgIFRoZXNlIGJ1aWxkLXRpbWUgY2hlY2tzIGVuc3VyZSB0aGF0IHRoZSBidWlsZCBmYWlscworICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQgZGV2aWNlIGZhaWxzIGxhdGVyIGR1cmluZyBpdHMKKyAgICAgICAgICAgICAgICBpbml0aWFsIGJvb3Qgb3BlcmF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBNb3N0IG9mIHRoZSBjb21tb24gcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0cyBnZW5lcmF0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGZvciB0aGUgb3V0LW9mLXRoZS1ib3ggWW9jdG8gUHJvamVjdCBhcmUgZW5naW5lZXJlZAorICAgICAgICAgICAgICAgIHNvIHRoYXQgdGhleSBjYW4gcnVuIGR1cmluZyByb290IGZpbGVzeXN0ZW0gY3JlYXRpb24KKyAgICAgICAgICAgICAgICAoZS5nLiBwb3N0LWluc3RhbGxhdGlvbiBzY3JpcHRzIGZvciBjYWNoaW5nIGZvbnRzKS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgY3JlYXRlIGFuZCBhZGQgY3VzdG9tIHNjcmlwdHMsIHlvdSBuZWVkCisgICAgICAgICAgICAgICAgdG8gYmUgc3VyZSB0aGV5IGNhbiBiZSBydW4gZHVyaW5nIHRoaXMgZmlsZSBzeXN0ZW0gY3JlYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgY29tbW9uIHByb2JsZW1zIHRoYXQgcHJldmVudAorICAgICAgICAgICAgICAgIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdHMgZnJvbSBydW5uaW5nIGR1cmluZyByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICBjcmVhdGlvbjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Tm90IHVzaW5nICREIGluIGZyb250IG9mIGFic29sdXRlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRoczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBkZWZpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JDwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIGNyZWF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgPGZpbGVuYW1lPiREPC9maWxlbmFtZT4gaXMgYmxhbmsgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBpcyBydW4gb24gdGhlIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGltcGxpZXMgdHdvIHB1cnBvc2VzIGZvciA8ZmlsZW5hbWU+JEQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyaW5nIHBhdGhzIGFyZSB2YWxpZCBpbiBib3RoIHRoZSBob3N0IGFuZCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50cywgYW5kIGNoZWNraW5nIHRvIGRldGVybWluZSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgaXMgYmVpbmcgdXNlZCBhcyBhIG1ldGhvZCBmb3IgdGFraW5nCisgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBhY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BdHRlbXB0aW5nIHRvIHJ1biBwcm9jZXNzZXMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIG9yIGRlcGVuZGVudCBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gd29yayBhcm91bmQgdGhlc2UgYXR0ZW1wdHMgYnkgdXNpbmcgbmF0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICB0b29scywgd2hpY2ggcnVuIG9uIHRoZSBob3N0IHN5c3RlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjY29tcGxpc2ggdGhlIHNhbWUgdGFza3MsIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBieSBhbHRlcm5hdGl2ZWx5IHJ1bm5pbmcgdGhlIHByb2Nlc3NlcyB1bmRlciBRRU1VLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaGFzIHRoZSA8ZmlsZW5hbWU+cWVtdV9ydW5fYmluYXJ5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXFlbXUnPjxmaWxlbmFtZT5xZW11PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYXJlYXMtd2l0aC13cml0ZS1hY2Nlc3MnPgorICAgICAgICAgICAgPHRpdGxlPkFyZWFzIFdpdGggV3JpdGUgQWNjZXNzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2l0aCB0aGUgInJlYWQtb25seS1yb290ZnMiIGZlYXR1cmUgZW5hYmxlZCwKKyAgICAgICAgICAgICAgICBhbnkgYXR0ZW1wdCBieSB0aGUgdGFyZ2V0IHRvIHdyaXRlIHRvIHRoZSByb290IGZpbGVzeXN0ZW0gYXQKKyAgICAgICAgICAgICAgICBydW50aW1lIGZhaWxzLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG11c3QgbWFrZSBzdXJlIHRoYXQgeW91IGNvbmZpZ3VyZSBwcm9jZXNzZXMKKyAgICAgICAgICAgICAgICBhbmQgYXBwbGljYXRpb25zIHRoYXQgYXR0ZW1wdCB0aGVzZSB0eXBlcyBvZiB3cml0ZXMgZG8gc28KKyAgICAgICAgICAgICAgICB0byBkaXJlY3RvcmllcyB3aXRoIHdyaXRlIGFjY2VzcyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdG1wPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi92YXIvcnVuPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisKKworCisgICAgPHNlY3Rpb24gaWQ9J21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz4KKyAgICAgICAgPHRpdGxlPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1hbnkgZmFjdG9ycyBjYW4gaW5mbHVlbmNlIHRoZSBxdWFsaXR5IG9mIGEgYnVpbGQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHVwZ3JhZGUgYSByZWNpcGUgdG8gdXNlIGEgbmV3IHZlcnNpb24gb2YgYW4KKyAgICAgICAgICAgIHVwc3RyZWFtIHNvZnR3YXJlIHBhY2thZ2Ugb3IgeW91IGV4cGVyaW1lbnQgd2l0aCBzb21lIG5ldworICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzdWJ0bGUgY2hhbmdlcyBjYW4gb2NjdXIgdGhhdCB5b3UgbWlnaHQKKyAgICAgICAgICAgIG5vdCBkZXRlY3QgdW50aWwgbGF0ZXIuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgY2FzZSB3aGVyZSB5b3VyIHJlY2lwZSBpcyB1c2luZyBhIG5ld2VyIHZlcnNpb24gb2YKKyAgICAgICAgICAgIGFuIHVwc3RyZWFtIHBhY2thZ2UuCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgbmV3IHZlcnNpb24gb2YgYSBwaWVjZSBvZiBzb2Z0d2FyZSBtaWdodAorICAgICAgICAgICAgaW50cm9kdWNlIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgb24gYW5vdGhlciBsaWJyYXJ5LCB3aGljaCBpcworICAgICAgICAgICAgYXV0by1kZXRlY3RlZC4KKyAgICAgICAgICAgIElmIHRoYXQgbGlicmFyeSBoYXMgYWxyZWFkeSBiZWVuIGJ1aWx0IHdoZW4gdGhlIHNvZnR3YXJlIGlzCisgICAgICAgICAgICBidWlsZGluZywgdGhlIHNvZnR3YXJlIHdpbGwgbGluayB0byB0aGUgYnVpbHQgbGlicmFyeSBhbmQgdGhhdAorICAgICAgICAgICAgbGlicmFyeSB3aWxsIGJlIHB1bGxlZCBpbnRvIHlvdXIgaW1hZ2UgYWxvbmcgd2l0aCB0aGUgbmV3CisgICAgICAgICAgICBzb2Z0d2FyZSBldmVuIGlmIHlvdSBkaWQgbm90IHdhbnQgdGhlIGxpYnJhcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgY2xhc3MgZXhpc3RzIHRvIGhlbHAgeW91IG1haW50YWluIHRoZSBxdWFsaXR5IG9mIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIG91dHB1dC4KKyAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjbGFzcyB0byBoaWdobGlnaHQgdW5leHBlY3RlZCBhbmQgcG9zc2libHkKKyAgICAgICAgICAgIHVud2FudGVkIGNoYW5nZXMgaW4gdGhlIGJ1aWxkIG91dHB1dC4KKyAgICAgICAgICAgIFdoZW4geW91IGVuYWJsZSBidWlsZCBoaXN0b3J5LCBpdCByZWNvcmRzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgY29udGVudHMgb2YgZWFjaCBwYWNrYWdlIGFuZCBpbWFnZSBhbmQgdGhlbiBjb21taXRzIHRoYXQKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hlcmUgeW91IGNhbiBleGFtaW5lCisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgeW91IGNhbiBlbmFibGUgYW5kIGRpc2FibGUgYnVpbGQgaGlzdG9yeQorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIEhvdyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGJ1aWxkIGhpc3RvcnkgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgdG8gbGltaXQgdGhlIGluZm9ybWF0aW9uIHVzZWQgZm9yIGJ1aWxkIGhpc3RvcnkKKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgdG8gZXhhbWluZSB0aGUgYnVpbGQgaGlzdG9yeSBmcm9tIGJvdGggYQorICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhbmQgd2ViIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdlbmFibGluZy1hbmQtZGlzYWJsaW5nLWJ1aWxkLWhpc3RvcnknPgorICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIGFuZCBEaXNhYmxpbmcgQnVpbGQgSGlzdG9yeTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBUbyBlbmFibGUgaXQsIGFkZCB0aGUgZm9sbG93aW5nIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgYW5kIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGF0IHRoZSBlbmQgb2YgeW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJidWlsZGhpc3RvcnkiCisgICAgIEJVSUxESElTVE9SWV9DT01NSVQgPSAiMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjb2xsZWN0IGJ1aWxkIG91dHB1dCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGFuZCBjb21taXQgaXQgYXMgYSBzaW5nbGUgY29tbWl0IHRvIGEgbG9jYWwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdCc+R2l0PC91bGluaz4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBidWlsZCBoaXN0b3J5IGluY3JlYXNlcyB5b3VyIGJ1aWxkIHRpbWVzIHNsaWdodGx5LAorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFybHkgZm9yIGltYWdlcywgYW5kIGluY3JlYXNlcyB0aGUgYW1vdW50IG9mIGRpc2sKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNhYmxlIGJ1aWxkIGhpc3RvcnkgYnkgcmVtb3ZpbmcgdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBmcm9tIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLXdoYXQtdGhlLWJ1aWxkLWhpc3RvcnktY29udGFpbnMnPgorICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmRpbmcgV2hhdCB0aGUgQnVpbGQgSGlzdG9yeSBDb250YWluczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgaW5mb3JtYXRpb24gaXMga2VwdCBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS9idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0RJUic+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGFiYnJldmlhdGVkIGxpc3Rpbmc6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEF0IHRoZSB0b3AgbGV2ZWwsIGEgPGZpbGVuYW1lPm1ldGFkYXRhLXJldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzIHRoYXQgbGlzdHMgdGhlIHJldmlzaW9ucyBvZiB0aGUgcmVwb3NpdG9yaWVzIGZvcgorICAgICAgICAgICAgICAgIHRoZSBlbmFibGVkIGxheWVycyB3aGVuIHRoZSBidWlsZCB3YXMgcHJvZHVjZWQuCisgICAgICAgICAgICAgICAgVGhlIHJlc3Qgb2YgdGhlIGRhdGEgc3BsaXRzIGludG8gc2VwYXJhdGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZXM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmltYWdlczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zZGs8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlc2NyaWJlZCBhcyBmb2xsb3dzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtaGlzdG9yeS1wYWNrYWdlLWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBQYWNrYWdlIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgaGlzdG9yeSBmb3IgZWFjaCBwYWNrYWdlIGNvbnRhaW5zIGEgdGV4dCBmaWxlIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvaTU4Ni1wb2t5LWxpbnV4L2J1c3lib3gvYnVzeWJveC9sYXRlc3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gMS4yMi4xCisgICAgIFBSID0gcjMyCisgICAgIFJQUk9WSURFUyA9CisgICAgIFJERVBFTkRTID0gZ2xpYmMgKD49IDIuMjApIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZworICAgICBSUkVDT01NRU5EUyA9IGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtdWRoY3BjIHVwZGF0ZS1yYy5kCisgICAgIFBLR1NJWkUgPSA1NDAxNjgKKyAgICAgRklMRVMgPSAvdXNyL2Jpbi8qIC91c3Ivc2Jpbi8qIC91c3IvbGliL2J1c3lib3gvKiAvdXNyL2xpYi9saWIqLnNvLiogXAorICAgICAgICAvZXRjIC9jb20gL3ZhciAvYmluLyogL3NiaW4vKiAvbGliLyouc28uKiAvbGliL3VkZXYvcnVsZXMuZCBcCisgICAgICAgIC91c3IvbGliL3VkZXYvcnVsZXMuZCAvdXNyL3NoYXJlL2J1c3lib3ggL3Vzci9saWIvYnVzeWJveC8qIFwKKyAgICAgICAgL3Vzci9zaGFyZS9waXhtYXBzIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zIC91c3Ivc2hhcmUvaWRsIFwKKyAgICAgICAgL3Vzci9zaGFyZS9vbWYgL3Vzci9zaGFyZS9zb3VuZHMgL3Vzci9saWIvYm9ub2JvL3NlcnZlcnMKKyAgICAgRklMRUxJU1QgPSAvYmluL2J1c3lib3ggL2Jpbi9idXN5Ym94Lm5vc3VpZCAvYmluL2J1c3lib3guc3VpZCAvYmluL3NoIFwKKyAgICAgICAgL2V0Yy9idXN5Ym94LmxpbmtzLm5vc3VpZCAvZXRjL2J1c3lib3gubGlua3Muc3VpZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgbmFtZS12YWx1ZSBwYWlycyBjb3JyZXNwb25kIHRvIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIHByb2R1Y2UgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleGNlcHRpb25zIGFyZSA8ZmlsZW5hbWU+RklMRUxJU1Q8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGFjdHVhbCBsaXN0IG9mIGZpbGVzIGluIHRoZSBwYWNrYWdlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHRvdGFsIHNpemUgb2YKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gdGhlIHBhY2thZ2UgaW4gYnl0ZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgZmlsZSBhbHNvIGV4aXN0cyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSByZWNpcGUgZnJvbQorICAgICAgICAgICAgICAgICAgICB3aGljaCB0aGUgcGFja2FnZSBjYW1lIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvaTU4Ni1wb2t5LWxpbnV4L2J1c3lib3gvbGF0ZXN0PC9maWxlbmFtZT4pOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gMS4yMi4xCisgICAgIFBSID0gcjMyCisgICAgIERFUEVORFMgPSBpbml0c2NyaXB0cyBrZXJuLXRvb2xzLW5hdGl2ZSB1cGRhdGUtcmMuZC1uYXRpdmUgXAorICAgICAgICB2aXJ0dWFsL2k1ODYtcG9reS1saW51eC1jb21waWxlcmxpYnMgdmlydHVhbC9pNTg2LXBva3ktbGludXgtZ2NjIFwKKyAgICAgICAgdmlydHVhbC9saWJjIHZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcworICAgICBQQUNLQUdFUyA9IGJ1c3lib3gtcHRlc3QgYnVzeWJveC1odHRwZCBidXN5Ym94LXVkaGNwZCBidXN5Ym94LXVkaGNwYyBcCisgICAgICAgIGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtbWRldiBidXN5Ym94LWh3Y2xvY2sgYnVzeWJveC1kYmcgXAorICAgICAgICBidXN5Ym94LXN0YXRpY2RldiBidXN5Ym94LWRldiBidXN5Ym94LWRvYyBidXN5Ym94LWxvY2FsZSBidXN5Ym94CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgZm9yIHRob3NlIHJlY2lwZXMgZmV0Y2hlZCBmcm9tIGEgdmVyc2lvbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSAoZS5nLiwgR2l0KSwgYSBmaWxlIGV4aXN0cyB0aGF0IGxpc3RzIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSByZWNpcGUgYW5kIGxpc3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBhY3R1YWwgcmV2aXNpb25zIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgTGlzdGVkIGFuZCBhY3R1YWwgcmV2aXNpb25zIG1pZ2h0IGRpZmZlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAkezx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BVVRPUkVWJz48ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+PC91bGluaz59LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgYXNzdW1pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vbGF0ZXN0X3NyY3JldjwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCisgICAgIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCisgICAgICMgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKKyAgICAgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IHRoZSBzdG9yZWQgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICBmcm9tIGJ1aWxkIGhpc3RvcnkgYW5kIHJlcG9ydCB0aGVtIGluIGEgZm9ybWF0IHN1aXRhYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICB1c2UgaW4gZ2xvYmFsIGNvbmZpZ3VyYXRpb24gKGUuZy4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYSBkaXN0cm8gaW5jbHVkZSBmaWxlKQorICAgICAgICAgICAgICAgICAgICB0byBvdmVycmlkZSBmbG9hdGluZyA8ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICB0byBhIGZpeGVkIHNldCBvZiByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgc29tZSBleGFtcGxlIG91dHB1dCBmcm9tIHRoaXMgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnMgLWEKKyAgICAgIyBpNTg2LXBva3ktbGludXgKKyAgICAgU1JDUkVWX3BuLWdsaWJjID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCisgICAgIFNSQ1JFVl9wbi1nbGliYy1pbml0aWFsID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCisgICAgIFNSQ1JFVl9wbi1vcGtnLXV0aWxzID0gIjUzMjc0ZjA4NzU2NWZkNDVkODQ1MmM1MzY3OTk3YmE2YTY4MmEzN2EiCisgICAgIFNSQ1JFVl9wbi1rbW9kID0gImZkNTY2MzhhZWQzZmUxNDcwMTViZmExMGVkNGE1Zjc0OTEzMDNjYjQiCisgICAgICMgeDg2XzY0LWxpbnV4CisgICAgIFNSQ1JFVl9wbi1ndGstZG9jLXN0dWItbmF0aXZlID0gIjFkZWEyNjY1OTNlZGI3NjZkNmQ4OThjNzk0NTFlZjE5M2ViMTdjZmEiCisgICAgIFNSQ1JFVl9wbi1kdGMtbmF0aXZlID0gIjY1Y2M0ZDI3NDhhMmMyZTZmMjdmMWNmMzllMDdhNWRiYWJkODBlYmYiCisgICAgIFNSQ1JFVl9wbi11cGRhdGUtcmMuZC1uYXRpdmUgPSAiZWNhNjgwZGRmMjhkMDI0OTU0ODk1ZjU5YTI0MWE2MjJkZDU3NWMxMSIKKyAgICAgU1JDUkVWX2dsaWJjX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiYjgwNzlkZDBkMzYwNjQ4ZTRlOGRlNDg2NTZjNWMzODk3MjYyMTA3MiIKKyAgICAgU1JDUkVWX2xvY2FsZWRlZl9wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gImM4MzMzNjczNDhkMzlkYWQ3YmEwMTg5OTBiZmRhZmZhZWM4ZTllZDMiCisgICAgIFNSQ1JFVl9wbi1wcmVsaW5rLW5hdGl2ZSA9ICJmYWEwNjlkZWVjOTliZjYxNDE4ZDBiYWI4MzFjODNkN2MxYjc5N2NhIgorICAgICBTUkNSRVZfcG4tb3BrZy11dGlscy1uYXRpdmUgPSAiNTMyNzRmMDg3NTY1ZmQ0NWQ4NDUyYzUzNjc5OTdiYTZhNjgyYTM3YSIKKyAgICAgU1JDUkVWX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIjIzMzQ1Yjg4NDZmZTRiZDE2N2VmZGYxYmQ4YTEyMjRiMmJhOWE1ZmYiCisgICAgIFNSQ1JFVl9wbi1rbW9kLW5hdGl2ZSA9ICJmZDU2NjM4YWVkM2ZlMTQ3MDE1YmZhMTBlZDRhNWY3NDkxMzAzY2I0IgorICAgICAjIHFlbXV4ODYtcG9reS1saW51eAorICAgICBTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0byA9ICIzOGNkNTYwZDUwMjJlZDJkYmQxYWIwZGNhOTY0MmU0N2M5OGEwYWExIgorICAgICBTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0byA9ICJhMjI3ZjIwZWZmMDU2ZTUxMWQ1MDRiMmU0OTBmMzc3NGFiMjYwZDZmIgorICAgICAjIGFsbC1wb2t5LWxpbnV4CisgICAgIFNSQ1JFVl9wbi11cGRhdGUtcmMuZCA9ICJlY2E2ODBkZGYyOGQwMjQ5NTQ4OTVmNTlhMjQxYTYyMmRkNTc1YzExIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBub3RlcyBvbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgb25seSB2YWx1ZXMgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB3YXMgbm90IGhhcmRjb2RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSB3aGVuIDxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCkgYXJlIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYWxsIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBzdGF0ZW1lbnRzIG1pZ2h0IG5vdCBoYXZlIGFueSBlZmZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGVzIGFyZSBhcHBsaWVkIGVsc2V3aGVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uIHRvIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlYWNoIG91dHB1dCBsaW5lIGlmIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcmVzdHJpY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkb2VzIGFwcGx5IHNwZWNpYWwgaGFuZGxpbmcgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgbXVsdGlwbGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBzY3JpcHQgZG9lcyBwbGFjZSBhIGNvbW1lbnQgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggc2V0IG9mIHZhbHVlcyB0aGF0IHNwZWNpZmllcyB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlwbGV0IHRvIHdoaWNoIHRoZXkgYmVsb25nIGFzIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd24gKGUuZy4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pNTg2LXBva3ktbGludXg8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZC1oaXN0b3J5LWltYWdlLWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBJbWFnZSBJbmZvcm1hdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIHByb2R1Y2VkIGZvciBlYWNoIGltYWdlIGFyZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZS1maWxlczo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc2VsZWN0ZWQgZmlsZXMgZnJvbSB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIGFyZSBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJVSUxESElTVE9SWV9JTUFHRV9GSUxFUyc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9JTUFHRV9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLWlkLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1bWFuLXJlYWRhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGFkYXRhIHNvdXJjZSByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBmdWxsIGJ1aWxkIGhlYWRlciBhcyBwcmludGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kb3Q6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRlbmN5IGdyYXBocyBmb3IgdGhlIGltYWdlIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIDxmaWxlbmFtZT5ncmFwaHZpejwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy1pbi1pbWFnZS50eHQ6PC9maWxlbmFtZT4KKyAJICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBpbWFnZSB3aXRoIHBlcm1pc3Npb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBncm91cCwgc2l6ZSwgYW5kIHN5bWxpbmsgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLWluZm8udHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZXh0IGZpbGUgY29udGFpbmluZyBuYW1lLXZhbHVlIHBhaXJzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgYnkgbmFtZSBvbmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG9yZGVyZWQgYnkgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgd2l0aCBmdWxsIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxlZCBwYWNrYWdlIGluZm9ybWF0aW9uIGlzIGFibGUgdG8gYmUgZ2F0aGVyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcm9kdWNlZCBldmVuIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBkaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgPGZpbGVuYW1lPmltYWdlLWluZm8udHh0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPID0gcG9reQorICAgICBESVNUUk9fVkVSU0lPTiA9IDEuNworICAgICBVU0VSX0NMQVNTRVMgPSBidWlsZHN0YXRzIGltYWdlLW1rbGlicyBpbWFnZS1wcmVsaW5rCisgICAgIElNQUdFX0NMQVNTRVMgPSBpbWFnZV90eXBlcworICAgICBJTUFHRV9GRUFUVVJFUyA9IGRlYnVnLXR3ZWFrcworICAgICBJTUFHRV9MSU5HVUFTID0KKyAgICAgSU1BR0VfSU5TVEFMTCA9IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcnVuLXBvc3RpbnN0cworICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KKyAgICAgTk9fUkVDT01NRU5EQVRJT05TID0KKyAgICAgUEFDS0FHRV9FWENMVURFID0KKyAgICAgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgPSB3cml0ZV9wYWNrYWdlX21hbmlmZXN0OyBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgXAorICAgICAgICB3cml0ZV9pbWFnZV9tYW5pZmVzdCA7IGJ1aWxkaGlzdG9yeV9saXN0X2luc3RhbGxlZF9pbWFnZSA7IFwKKyAgICAgICAgYnVpbGRoaXN0b3J5X2dldF9pbWFnZV9pbnN0YWxsZWQgOyBzc2hfYWxsb3dfZW1wdHlfcGFzc3dvcmQ7ICBcCisgICAgICAgIHBvc3RpbnN0X2VuYWJsZV9sb2dnaW5nOyByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7IHNzaF9kaXNhYmxlX2Ruc19sb29rdXAgOworICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EID0gICBidWlsZGhpc3RvcnlfZ2V0X2ltYWdlaW5mbyA7CisgICAgIElNQUdFU0laRSA9IDY5MDAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPdGhlciB0aGFuIDxmaWxlbmFtZT5JTUFHRVNJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBpbiBLYnl0ZXMsIHRoZQorICAgICAgICAgICAgICAgICAgICBuYW1lLXZhbHVlIHBhaXJzIGFyZSB2YXJpYWJsZXMgdGhhdCBtYXkgaGF2ZSBpbmZsdWVuY2VkIHRoZQorICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0bworICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2h5IGEgY2hhbmdlIGluIHRoZSBwYWNrYWdlIG9yIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdGluZ3MgaGFzIG9jY3VycmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWJ1aWxkLWhpc3RvcnktdG8tZ2F0aGVyLWltYWdlLWluZm9ybWF0aW9uLW9ubHknPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBCdWlsZCBIaXN0b3J5IHRvIEdhdGhlciBJbWFnZSBJbmZvcm1hdGlvbiBPbmx5PC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyB5b3UgY2FuIHNlZSwgYnVpbGQgaGlzdG9yeSBwcm9kdWNlcyBpbWFnZSBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGRlcGVuZGVuY3kgZ3JhcGhzLCBzbyB5b3UgY2FuIHNlZSB3aHkgc29tZXRoaW5nCisgICAgICAgICAgICAgICAgICAgIHdhcyBwdWxsZWQgaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUganVzdCBpbnRlcmVzdGVkIGluIHRoaXMgaW5mb3JtYXRpb24gYW5kIG5vdAorICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIGNvbGxlY3Rpbmcgc3BlY2lmaWMgcGFja2FnZSBvciBTREsKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24sIHlvdSBjYW4gZW5hYmxlIHdyaXRpbmcgb25seSBpbWFnZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGFueSBoaXN0b3J5IGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IgorICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjAiCisgICAgIEJVSUxESElTVE9SWV9GRUFUVVJFUyA9ICJpbWFnZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBIZXJlLCB5b3Ugc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0ZFQVRVUkVTJz48ZmlsZW5hbWU+QlVJTERISVNUT1JZX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB1c2UgdGhlIGltYWdlIGZlYXR1cmUgb25seS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZC1oaXN0b3J5LXNkay1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJ1aWxkIEhpc3RvcnkgU0RLIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCdWlsZCBoaXN0b3J5IGNvbGxlY3RzIHNpbWlsYXIgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzCisgICAgICAgICAgICAgICAgICAgIG9mIFNES3MKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIGltYWdlbmFtZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhcyBjb21wYXJlZCB0byBpbmZvcm1hdGlvbiBpdCBjb2xsZWN0cyBmb3IgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhpcyBpbmZvcm1hdGlvbiBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgIGFuIGV4dGVuc2libGUgb3Igc3RhbmRhcmQgU0RLIGlzIGJlaW5nIHByb2R1Y2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIGZpbGVzIHByb2R1Y2VkIGZvciBTREtzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy1pbi1zZGsudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBTREsgd2l0aCBwZXJtaXNzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciwgZ3JvdXAsIHNpemUsIGFuZCBzeW1saW5rIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGlzdCBpbmNsdWRlcyBib3RoIHRoZSBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGstaW5mby50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS10YXNrLXNpemVzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgbmFtZS12YWx1ZSBwYWlycyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGFzayBncm91cCBzaXplcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBoYXZlIGEgdG90YWwgc2l6ZSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zc3RhdGUtdGFzay1zaXplcy50eHQ8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGUgc2hhcmVkLXN0YXRlIHBhY2thZ2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzIGluIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zc3RhdGUtcGFja2FnZS1zaXplcy50eHQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGstZmlsZXM6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvbGRlciB0aGF0IGNvbnRhaW5zIGNvcGllcyBvZiB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW50aW9uZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX1NES19GSUxFUzwvZmlsZW5hbWU+IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBwcmVzZW50IGluIHRoZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMREhJU1RPUllfU0RLX0ZJTEVTPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgZXh0ZW5zaWJsZSBTREsgYWx0aG91Z2ggeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBpdCBkaWZmZXJlbnRseSBpZiB5b3Ugd291bGQgbGlrZSB0byBwdWxsIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmlsZXMgZnJvbSB0aGUgc3RhbmRhcmQgU0RLLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBkZWZhdWx0IGZpbGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9ja2VkLXNpZ3MuaW5jPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2RldnRvb2wuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIGZvciBhbiBleHRlbnNpYmxlIFNESywgdGhlc2UgZmlsZXMgZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIGludG8gdGhlIDxmaWxlbmFtZT5zZGstZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFwcGVhcnMgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIG9mIHRoZSA8ZmlsZW5hbWU+aG9zdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcG9ydGlvbnMgb2YgdGhlIFNESyB0aGF0IHJ1biBvbiB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUgdGFyZ2V0LCByZXNwZWN0aXZlbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlsZXMgZm9yIHRoZSBtb3N0IHBhcnQgYXJlIGVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvZHVjaW5nIGFuIGV4dGVuc2libGUgU0RLIGJlY2F1c2UgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIG9mIFNESyBpcyBub3QgY29uc3RydWN0ZWQgZnJvbSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBpcyB0aGUgc3RhbmRhcmQgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwZW5kcy5kb3Q6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGVuY3kgZ3JhcGggZm9yIHRoZSBTREsgdGhhdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JhcGh2aXo8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIGJ5IG5hbWUgb25seS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG9yZGVyZWQgYnkgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZmlsZW5hbWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5zZGstaW5mby50eHQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk8gPSBwb2t5CisgICAgIERJU1RST19WRVJTSU9OID0gMS4zK3NuYXBzaG90LTIwMTMwMzI3CisgICAgIFNES19OQU1FID0gcG9reS1nbGliYy1pNjg2LWFybQorICAgICBTREtfVkVSU0lPTiA9IDEuMytzbmFwc2hvdAorICAgICBTREtNQUNISU5FID0KKyAgICAgU0RLSU1BR0VfRkVBVFVSRVMgPSBkZXYtcGtncyBkYmctcGtncworICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KKyAgICAgU0RLU0laRSA9IDM1MjcxMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE90aGVyIHRoYW4gPGZpbGVuYW1lPlNES1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBTREsgaW4gS2J5dGVzLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZS12YWx1ZSBwYWlycyBhcmUgdmFyaWFibGVzIHRoYXQgbWlnaHQgaGF2ZSBpbmZsdWVuY2VkCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50IG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaXMgb2Z0ZW4gdXNlZnVsIHdoZW4geW91IGFyZSB0cnlpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoeSBhIGNoYW5nZSBpbiB0aGUgcGFja2FnZSBvciBmaWxlIGxpc3RpbmdzCisgICAgICAgICAgICAgICAgICAgIGhhcyBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleGFtaW5pbmctYnVpbGQtaGlzdG9yeS1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkV4YW1pbmluZyBCdWlsZCBIaXN0b3J5IEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGV4YW1pbmUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBsaW5lIG9yIGZyb20gYSB3ZWIgaW50ZXJmYWNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBzZWUgYW55IGNoYW5nZXMgdGhhdCBoYXZlIG9jY3VycmVkIChhc3N1bWluZyB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPiZuYnNwOz0gIjEiPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNpbXBseSB1c2UgYW55IEdpdCBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0bworICAgICAgICAgICAgICAgICAgICB2aWV3IHRoZSBoaXN0b3J5IG9mIGEgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBvbmUgbWV0aG9kOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAkIGdpdCBsb2cgLXAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplLCBob3dldmVyLCB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgc2hvdworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG5vdCBzaWduaWZpY2FudCAoZS5nLiBhIHBhY2thZ2UncyBzaXplCisgICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIGJ5IGEgZmV3IGJ5dGVzKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBjb21tYW5kLWxpbmUgdG9vbCBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gZG9lcyBleGlzdCwgdGhvdWdoLAorICAgICAgICAgICAgICAgICAgICB0aGF0IHF1ZXJpZXMgdGhlIEdpdCByZXBvc2l0b3J5IGFuZCBwcmludHMganVzdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMgdGhhdCBtaWdodCBiZSBzaWduaWZpY2FudCBpbiBodW1hbi1yZWFkYWJsZQorICAgICAgICAgICAgICAgICAgICBmb3JtLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIC4gSEVBRF4KKyAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGZpbGVzLWluLWltYWdlLnR4dCk6CisgICAgICAgIC9ldGMvYW5vdGhlcnBrZy5jb25mIHdhcyBhZGRlZAorICAgICAgICAvc2Jpbi9hbm90aGVycGtnIHdhcyBhZGRlZAorICAgICAgICAqIChpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQpOgorICAgICAgICAqICAgYW5vdGhlcnBrZyB3YXMgYWRkZWQKKyAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCk6CisgICAgICAgIGFub3RoZXJwa2cgd2FzIGFkZGVkCisgICAgIHBhY2thZ2VzL3FlbXV4ODZfNjQtcG9reS1saW51eC92ODZkOiBQQUNLQUdFUzogYWRkZWQgInY4NmQtZXh0cmFzIgorICAgICAgICAqIFBSIGNoYW5nZWQgZnJvbSAicjAiIHRvICJyMSIKKyAgICAgICAgKiBQViBjaGFuZ2VkIGZyb20gIjAuMS4xMCIgdG8gIjAuMS4xMiIKKyAgICAgcGFja2FnZXMvcWVtdXg4Nl82NC1wb2t5LWxpbnV4L3Y4NmQvdjg2ZDogUEtHU0laRSBjaGFuZ2VkIGZyb20gMTEwNTc5IHRvIDE0NDM4MSAoKzMwJSkKKyAgICAgICAgKiBQUiBjaGFuZ2VkIGZyb20gInIwIiB0byAicjEiCisgICAgICAgICogUFYgY2hhbmdlZCBmcm9tICIwLjEuMTAiIHRvICIwLjEuMTIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gdG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgdGhlIDxmaWxlbmFtZT5HaXRQeXRob248L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbnN0YWxsIGl0IHVzaW5nIFBpcDMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiAtLXVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gaW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gdXNpbmcgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gcGFja2FnZSBtYW5hZ2VyIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXB0LWdldDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG5mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+emlwcGVyPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHNlZSBjaGFuZ2VzIHRvIHRoZSBidWlsZCBoaXN0b3J5IHVzaW5nIGEgd2ViIGludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93IHRoZSBpbnN0cnVjdGlvbiBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvYnVpbGRoaXN0b3J5LXdlYi8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2FtcGxlIHNjcmVlbnNob3Qgb2YgdGhlIGludGVyZmFjZToKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgd2lkdGg9IjEzMCUiIGNvbnRlbnRkZXB0aD0iMTMwJSIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nIj4KKyAgICAgICAgPHRpdGxlPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBtYWtlcyBhdmFpbGFibGUgYSBzZXJpZXMgb2YgYXV0b21hdGVkCisgICAgICAgICAgICB0ZXN0cyBmb3IgaW1hZ2VzIHRvIHZlcmlmeSBydW50aW1lIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGVzZSB0ZXN0cyBvbiBlaXRoZXIgUUVNVSBvciBhY3R1YWwgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgVGVzdHMgYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIG1ha2luZyB1c2Ugb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+dW5pdHRlc3Q8L2ZpbGVuYW1lPiBtb2R1bGUsIGFuZCB0aGUgbWFqb3JpdHkgb2YgdGhlbQorICAgICAgICAgICAgcnVuIGNvbW1hbmRzIG9uIHRoZSB0YXJnZXQgc3lzdGVtIG92ZXIgU1NILgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgeW91IHNldCB1cCB0aGUgZW52aXJvbm1lbnQgdG8gdXNlIHRoZXNlCisgICAgICAgICAgICB0ZXN0cywgcnVuIGF2YWlsYWJsZSB0ZXN0cywgYW5kIHdyaXRlIGFuZCBhZGQgeW91ciBvd24gdGVzdHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdGVzdCBhbmQgUUEgaW5mcmFzdHJ1Y3R1cmUgYXZhaWxhYmxlCisgICAgICAgICAgICB3aXRoaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZXN0aW5nLWFuZC1xdWFsaXR5LWFzc3VyYW5jZSc+VGVzdGluZyBhbmQgUXVhbGl0eSBBc3N1cmFuY2U8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdlbmFibGluZy10ZXN0cyc+CisgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgVGVzdHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gd2hldGhlciB5b3UgYXJlIHBsYW5uaW5nIHRvIHJ1biB0ZXN0cyB1c2luZworICAgICAgICAgICAgICAgIFFFTVUgb3Igb24gdGhlIGhhcmR3YXJlLCB5b3UgaGF2ZSB0byB0YWtlCisgICAgICAgICAgICAgICAgZGlmZmVyZW50IHN0ZXBzIHRvIGVuYWJsZSB0aGUgdGVzdHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0bworICAgICAgICAgICAgICAgIGVuYWJsZSBib3RoIHR5cGVzIG9mIHRlc3RzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncWVtdS1pbWFnZS1lbmFibGluZy10ZXN0cyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIFJ1bnRpbWUgVGVzdHMgb24gUUVNVTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gcnVuIHRlc3RzLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZXQgdXAgdG8gYXZvaWQgaW50ZXJhY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIDxmaWxlbmFtZT5zdWRvPC9maWxlbmFtZT4gZm9yIG5ldHdvcmtpbmc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBhY2NvbXBsaXNoIHRoaXMsIHlvdSBtdXN0IGRvIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk5PUEFTU1dEPC9maWxlbmFtZT4gZm9yIHlvdXIgdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPi9ldGMvc3Vkb2VyczwvZmlsZW5hbWU+IGVpdGhlciBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBjb21tYW5kcyBvciBqdXN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXUtaWZ1cDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgcHJvdmlkZSB0aGUgZnVsbCBwYXRoIGFzIHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgaWYgeW91IGFyZSB1c2luZyBtdWx0aXBsZSBjbG9uZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHNvbWUgZGlzdHJpYnV0aW9ucywgeW91IGFsc28gbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgb3V0ICJEZWZhdWx0cyByZXF1aXJldHR5IiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL3N1ZG9lcnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1hbnVhbGx5IGNvbmZpZ3VyZSBhIHRhcCBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHN5c3RlbS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJ1biBhcyByb290IHRoZSBzY3JpcHQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL3J1bnFlbXUtZ2VuLXRhcGRldnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3VsZCBnZW5lcmF0ZSBhIGxpc3Qgb2YgdGFwIGRldmljZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBvcHRpb24gdHlwaWNhbGx5IGNob3NlbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9idWlsZGVyLXR5cGUgZW52aXJvbm1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSBhbiBhYnNvbHV0ZSBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGNhbGxpbmcgdGhpcyBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc3Vkby4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11LWhlbHBlci1uYXRpdmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVxdWlyZWQgdG8gcnVuIHRoaXMgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHBhY2thZ2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIHFlbXUtaGVscGVyLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNQTEFZPC9maWxlbmFtZT4gdmFyaWFibGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZSBzbyB0aGF0IHlvdSBoYXZlIGFuIFgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgYXZhaWxhYmxlIChlLmcuIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZuY3NlcnZlcjwvZmlsZW5hbWU+IGZvciBhIGhlYWRsZXNzIG1hY2hpbmUpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CZSBzdXJlIHlvdXIgaG9zdCdzIGZpcmV3YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0cyBpbmNvbWluZyBjb25uZWN0aW9ucyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTkyLjE2OC43LjAvMjQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIG9mIHRoZSB0ZXN0cyAoaW4gcGFydGljdWxhciBETkYgdGVzdHMpIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gSFRUUCBzZXJ2ZXIgb24gYSByYW5kb20gaGlnaCBudW1iZXIgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c2VkIHRvIHNlcnZlIGZpbGVzIHRvIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIERORiBtb2R1bGUgc2VydmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7V09SS0RJUn0vb2Utcm9vdGZzLXJlcG88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIGl0IGNhbiBydW4gRE5GIGNoYW5uZWwgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhhdCBtZWFucyB5b3VyIGhvc3QncyBmaXJld2FsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYWNjZXB0IGluY29taW5nIGNvbm5lY3Rpb25zIGZyb20gMTkyLjE2OC43LjAvMjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIGRlZmF1bHQgSVAgcmFuZ2UgdXNlZCBmb3IgdGFwIGRldmljZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CZSBzdXJlIHlvdXIgaG9zdCBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdCBwYWNrYWdlcyBpbnN0YWxsZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgeW91ciBob3N0J3MgZGlzdHJpYnV0aW9uLCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBpbnN0YWxsZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSBhbmQgRGViaWFuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3N0YXQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pcHJvdXRlMjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk9wZW5TVVNFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3N0YXQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pcHJvdXRlMjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXNzdGF0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXByb3V0ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNlbnRPUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXNzdGF0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXByb3V0ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3Ugc3RhcnQgcnVubmluZyB0aGUgdGVzdHMsIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgY29weSBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIHdyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZXN0aW1hZ2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgaW1hZ2UgaXMgYm9vdGVkIHVuZGVyIFFFTVUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmQgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBkZWZhdWx0IHRpbWVvdXQgb2YgNTAwIHNlY29uZHMgb2NjdXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWxsb3cgZm9yIHRoZSBib290IHByb2Nlc3MgdG8gcmVhY2ggdGhlIGxvZ2luIHByb21wdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aGUgdGltZW91dCBwZXJpb2QgYnkgc2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1URVNUX1FFTVVCT09UX1RJTUVPVVQnPjxmaWxlbmFtZT5URVNUX1FFTVVCT09UX1RJTUVPVVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5PbmNlIHRoZSBib290IHByb2Nlc3MgaXMgcmVhY2hlZCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW4gcHJvbXB0IGFwcGVhcnMsIHRoZSB0ZXN0cyBydW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bGwgYm9vdCBsb2cgaXMgd3JpdHRlbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3Rlc3RpbWFnZS9xZW11X2Jvb3RfbG9nPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RWFjaCB0ZXN0IG1vZHVsZSBsb2FkcyBpbiB0aGUgb3JkZXIgZm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+VEVTVF9TVUlURVM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIGZ1bGwgb3V0cHV0IG9mIHRoZSBjb21tYW5kcyBydW4gb3ZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTSCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3Rlc3RpbWdhZ2Uvc3NoX3RhcmdldF9sb2c8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBubyBmYWlsdXJlcyBvY2N1ciwgdGhlIHRhc2sgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyBlbmRzIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIG91dHB1dCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bml0dGVzdDwvZmlsZW5hbWU+IGluIHRoZSB0YXNrIGxvZyBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3RlbXAvbG9nLmRvX3Rlc3RpbWFnZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2hhcmR3YXJlLWltYWdlLWVuYWJsaW5nLXRlc3RzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgUnVudGltZSBUZXN0cyBvbiBIYXJkd2FyZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIHJ1biB0ZXN0cyBvbiByZWFsCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLCBhbmQgZm9yIGNlcnRhaW4gZGV2aWNlcyBpdCBjYW4gYWxzbyBkZXBsb3kKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHRvIGJlIHRlc3RlZCBvbnRvIHRoZSBkZXZpY2UgYmVmb3JlaGFuZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGF1dG9tYXRlZCBkZXBsb3ltZW50LCBhICJtYXN0ZXIgaW1hZ2UiIGlzIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICBvbnRvIHRoZSBoYXJkd2FyZSBvbmNlIGFzIHBhcnQgb2Ygc2V0dXAuCisgICAgICAgICAgICAgICAgICAgIFRoZW4sIGVhY2ggdGltZSB0ZXN0cyBhcmUgdG8gYmUgcnVuLCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIG9jY3VyczoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBtYXN0ZXIgaW1hZ2UgaXMgYm9vdGVkIGludG8gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byB3cml0ZSB0aGUgaW1hZ2UgdG8gYmUgdGVzdGVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzZWNvbmQgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBkZXZpY2UgaXMgdGhlbiByZWJvb3RlZCB1c2luZyBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsIHNjcmlwdCB0aGF0IHlvdSBuZWVkIHRvIHByb3ZpZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGRldmljZSBib290cyBpbnRvIHRoZSBpbWFnZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBydW5uaW5nIHRlc3RzIChpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBkZXBsb3llZCBhdXRvbWF0aWNhbGx5IG9yIG5vdCksIHRoZSBkZXZpY2UgaXMKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIGEgbmV0d29yayBvbiBhCisgICAgICAgICAgICAgICAgICAgIHByZS1kZXRlcm1pbmVkIElQIGFkZHJlc3MuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZWl0aGVyIHVzZSBzdGF0aWMgSVAgYWRkcmVzc2VzIHdyaXR0ZW4gaW50bworICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UsIG9yIHNldCB0aGUgaW1hZ2UgdG8gdXNlIERIQ1AgYW5kIGhhdmUgeW91cgorICAgICAgICAgICAgICAgICAgICBESENQIHNlcnZlciBvbiB0aGUgdGVzdCBuZXR3b3JrIGFzc2lnbiBhIGtub3duIElQIGFkZHJlc3MKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIE1BQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHJ1biB0ZXN0cyBvbiBoYXJkd2FyZSwgeW91IG5lZWQgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICBGb3IgUUVNVSwgeW91IGRvIG5vdCBoYXZlIHRvIGNoYW5nZSBhbnl0aGluZywgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgInFlbXUiLgorICAgICAgICAgICAgICAgICAgICBGb3IgcnVubmluZyB0ZXN0cyBvbiBoYXJkd2FyZSwgdGhlIGZvbGxvd2luZyBvcHRpb25zIGV4aXN0OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2ltcGxlcmVtb3RlIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAic2ltcGxlcmVtb3RlIiBpZiB5b3UgYXJlIGdvaW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRlc3RzIG9uIGEgdGFyZ2V0IHN5c3RlbSB0aGF0IGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIHRoZSBpbWFnZSB0byBiZSB0ZXN0ZWQgYW5kIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBuZXR3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlICJzaW1wbGVyZW1vdGUiIGluIGNvbmp1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBlaXRoZXIgcmVhbCBoYXJkd2FyZSBvciBhbiBpbWFnZSBydW5uaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgc2VwYXJhdGVseSBzdGFydGVkIFFFTVUgb3IgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdmlydHVhbCBtYWNoaW5lIG1hbmFnZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJTeXN0ZW1kYm9vdFRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIlN5c3RlbWRib290VGFyZ2V0IiBpZiB5b3VyIGhhcmR3YXJlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gRUZJLWJhc2VkIG1hY2hpbmUgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kLWJvb3Q8L2ZpbGVuYW1lPiBhcyBib290bG9hZGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXRlc3RtYXN0ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBzb21ldGhpbmcgc2ltaWxhcikgaXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHlvdXIgaGFyZHdhcmUgdW5kZXIgdGVzdCBtdXN0IGJlIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBESENQLWVuYWJsZWQgbmV0d29yayB0aGF0IGdpdmVzIGl0IHRoZSBzYW1lIElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyBmb3IgZWFjaCByZWJvb3QuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBjaG9vc2UgIlN5c3RlbWRib290VGFyZ2V0IiwgdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgYW5kIGNvbnNpZGVyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2VsZWN0aW5nLXN5c3RlbWRib290dGFyZ2V0Jz5TZWxlY3RpbmcgU3lzdGVtZGJvb3RUYXJnZXQ8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGZvbGxvd3MsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iQmVhZ2xlQm9uZVRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIkJlYWdsZUJvbmVUYXJnZXQiIGlmIHlvdSBhcmUgZGVwbG95aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzIGFuZCBydW5uaW5nIHRlc3RzIG9uIHRoZSBCZWFnbGVCb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsYWNrIiBvciBvcmlnaW5hbCAiV2hpdGUiIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZXNlIHRlc3RzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGUgQmVhZ2xlQm9uZVRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9jb250cm9sbGVycy9iZWFnbGVib25ldGFyZ2V0LnB5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iRWRnZVJvdXRlclRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIkVkZ2VSb3V0ZXJUYXJnZXQiIGlzIHlvdSBhcmUgZGVwbG95aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzIGFuZCBydW5uaW5nIHRlc3RzIG9uIHRoZSBVYmlxdWl0aSBOZXR3b3JrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2VSb3V0ZXIgTGl0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSB0ZXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhlIEVkZ2VSb3V0ZXJUYXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3AvbGliL29lcWEvY29udHJvbGxlcnMvZWRnZXJvdXRlcnRhcmdldC5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IkdydWJUYXJnZXQiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAic3VwcG9ydHMgZGVwbG95aW5nIGltYWdlcyBhbmQgcnVubmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIG9uIGFueSBnZW5lcmljIFBDIHRoYXQgYm9vdHMgdXNpbmcgR1JVQi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSB0ZXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhlIEdydWJUYXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3AvbGliL29lcWEvY29udHJvbGxlcnMvZ3J1YnRhcmdldC5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IjxyZXBsYWNlYWJsZT55b3VyLXRhcmdldDwvcmVwbGFjZWFibGU+Ijo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSB5b3VyIG93biBjdXN0b20gdGFyZ2V0IGlmIHlvdSB3YW50IHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIHdoZW4geW91IGFyZSBkZXBsb3lpbmcgaW1hZ2VzIGFuZCBydW5uaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgb24gYSBjdXN0b20gbWFjaGluZSB3aXRoaW4geW91ciBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gZG8gdGhpcywgeW91IG5lZWQgdG8gYWRkIGEgUHl0aG9uIHVuaXQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZXMgdGhlIHRhcmdldCBjbGFzcyB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWIvb2VxYS9jb250cm9sbGVycy88L2ZpbGVuYW1lPiB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gcHJvdmlkZSBhbiBlbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fX2luaXRfXy5weTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlcywgc2VlIGZpbGVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2xpYi9vZXFhL2NvbnRyb2xsZXJzLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzZWxlY3Rpbmctc3lzdGVtZGJvb3R0YXJnZXQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TZWxlY3RpbmcgU3lzdGVtZGJvb3RUYXJnZXQ8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkaWQgbm90IHNldCA8ZmlsZW5hbWU+VEVTVF9UQVJHRVQ8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICAiU3lzdGVtZGJvb3RUYXJnZXQiLCB0aGVuIHlvdSBkbyBub3QgbmVlZCBhbnkgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNraXAgZG93biB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3FlbXUtaW1hZ2UtcnVubmluZy10ZXN0cyc+UnVubmluZyBUZXN0czwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkaWQgc2V0IDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICJTeXN0ZW1kYm9vdFRhcmdldCIsIHlvdSBhbHNvIG5lZWQgdG8gcGVyZm9ybSBhIG9uZS10aW1lCisgICAgICAgICAgICAgICAgICAgIHNldHVwIG9mIHlvdXIgbWFzdGVyIGltYWdlIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IDxmaWxlbmFtZT5FRklfUFJPVklERVI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhhdCA8ZmlsZW5hbWU+RUZJX1BST1ZJREVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRUZJX1BST1ZJREVSID0gInN5c3RlbWQtYm9vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIHRoZSBtYXN0ZXIgaW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtdGVzdG1hc3RlcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXRlc3RtYXN0ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpcyBwcm92aWRlZCBhcyBhbiBleGFtcGxlIGZvciBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgaW1hZ2UgYW5kIHlvdSBjYW4gY3VzdG9taXplIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhcyB5b3Ugd291bGQgYW55IG90aGVyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBhcmUgdGhlIGltYWdlIHJlY2lwZSByZXF1aXJlbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluaGVyaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbyB0aGF0IGtlcm5lbCBtb2R1bGVzIGFyZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluc3RhbGxzIG5vcm1hbCBsaW51eCB1dGlsaXRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBidXN5Ym94IG9uZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZXV0aWxzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3ppcDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rbW9kPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2VzIGEgY3VzdG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsIFJBTSBEaXNrIChpbml0cmFtZnMpIGltYWdlIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tIGluc3RhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbm9ybWFsIGltYWdlIHRoYXQgeW91IGNhbiBpbnN0YWxsIHVzdWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBzaW5nbGUgcm9vdGZzIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaW1hZ2UgdXNlcyBhbm90aGVyIGluc3RhbGxlciB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgc3BlY2lmaWMgcGFydGl0aW9uIGxheW91dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiB1c2UgYW4gaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBwYXJ0aXRpb24gbGF5b3V0IG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Rmlyc3QgcGFydGl0aW9uIG1vdW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgPGZpbGVuYW1lPi9ib290PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsZWQgImJvb3QiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIG1haW4gcm9vdGZzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiB3aGVyZSB0aGlzIGltYWdlIGdldHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLCB3aGljaCBpcyBtb3VudGVkIHVuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Bbm90aGVyIHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGVkICJ0ZXN0cm9vdGZzIiB3aGVyZSB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyBnZXQgZGVwbG95ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5zdGFsbCBpbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIGltYWdlIHRoYXQgeW91IGp1c3QgYnVpbHQgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHRoaW5nIHlvdSBuZWVkIHRvIGRvIHdoZW4gc2V0dGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9UQVJHRVQ8L2ZpbGVuYW1lPiB0byAiU3lzdGVtZGJvb3RUYXJnZXQiIGlzCisgICAgICAgICAgICAgICAgICAgIHRvIHNldCB1cCB0aGUgdGVzdCBpbWFnZToKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZXQgdXAgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91IGhhdmUgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9GU1RZUEVTICs9ICJ0YXIuZ3oiCisgICAgIElOSEVSSVQgKz0gInRlc3RpbWFnZSIKKyAgICAgVEVTVF9UQVJHRVQgPSAiU3lzdGVtZGJvb3RUYXJnZXQiCisgICAgIFRFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguMi4zIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgeW91ciB0ZXN0IGltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwb3dlci1jb250cm9sJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UG93ZXIgQ29udHJvbDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vc3QgaGFyZHdhcmUgdGFyZ2V0cyBvdGhlciB0aGFuICJzaW1wbGVyZW1vdGUiLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNvbnRyb2wgcG93ZXI6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9QT1dFUkNPTlRST0xfQ01EPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dldGhlciB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfUE9XRVJDT05UUk9MX0VYVFJBX0FSR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgY29tbWFuZCB0aGF0IHJ1bnMgb24gdGhlIGhvc3QgYW5kIGRvZXMgcG93ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeWNsaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXN0IGNvZGUgcGFzc2VzIG9uZSBhcmd1bWVudCB0byB0aGF0IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmLCBvbiBvciBjeWNsZSAob2ZmIHRoZW4gb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNvdWxkIGFwcGVhciBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEVTVF9QT1dFUkNPTlRST0xfQ01EID0gInBvd2VyY29udHJvbC5leHAgdGVzdCAxMC4xMS4xMi4xIG51YzEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIGV4cGVjdCBzY3JpcHQgZG9lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBzc2ggdGVzdEAxMC4xMS4xMi4xICJweWN0bCBudWMxIDxyZXBsYWNlYWJsZT5hcmc8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgdGhlbiBydW5zIGEgUHl0aG9uIHNjcmlwdCB0aGF0IGNvbnRyb2xzIHBvd2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGFiZWwgY2FsbGVkIDxmaWxlbmFtZT5udWMxPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGN1c3RvbWl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9QT1dFUkNPTlRST0xfQ01EPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1BPV0VSQ09OVFJPTF9FWFRSQV9BUkdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgb3duIHNldHVwLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb25lIHJlcXVpcmVtZW50IGlzIHRoYXQgaXQgYWNjZXB0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24iLCAib2ZmIiwgYW5kICJjeWNsZSIgYXMgdGhlIGxhc3QgYXJndW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gbm8gY29tbWFuZCBpcyBkZWZpbmVkLCBpdCBjb25uZWN0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2Ugb3ZlciBTU0ggYW5kIHVzZXMgdGhlIGNsYXNzaWMgcmVib290IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWJvb3QgdGhlIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2ljIHJlYm9vdCBpcyBmaW5lIGFzIGxvbmcgYXMgdGhlIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxseSByZWJvb3RzIChpLmUuIHRoZSBTU0ggdGVzdCBoYXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyB1c2VmdWwgZm9yIHNjZW5hcmlvcyB3aGVyZSB5b3UgaGF2ZSBhIHNpbXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwLCB0eXBpY2FsbHkgd2l0aCBhIHNpbmdsZSBib2FyZCwgYW5kIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBtYW51YWwgaW50ZXJhY3Rpb24gaXMgb2theSBmcm9tIHRpbWUgdG8gdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG5vIGhhcmR3YXJlIHRvIGF1dG9tYXRpY2FsbHkgcGVyZm9ybSBwb3dlcgorICAgICAgICAgICAgICAgICAgICBjb250cm9sIGJ1dCBzdGlsbCB3aXNoIHRvIGV4cGVyaW1lbnQgd2l0aCBhdXRvbWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgdGVzdGluZywgeW91IGNhbiB1c2UgdGhlIGRpYWxvZy1wb3dlci1jb250cm9sCisgICAgICAgICAgICAgICAgICAgIHNjcmlwdCB0aGF0IHNob3dzIGEgZGlhbG9nIHByb21wdGluZyB5b3UgdG8gcGVyZm9ybSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgcG93ZXIgYWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNjcmlwdCByZXF1aXJlcyBlaXRoZXIgS0RpYWxvZyBvciBaZW5pdHkgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBUbyB1c2UgdGhpcyBzY3JpcHQsIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRFU1RfUE9XRVJDT05UUk9MX0NNRCc+PGZpbGVuYW1lPlRFU1RfUE9XRVJDT05UUk9MX0NNRDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURVNUX1BPV0VSQ09OVFJPTF9DTUQgPSAiJHtDT1JFQkFTRX0vc2NyaXB0cy9jb250cmliL2RpYWxvZy1wb3dlci1jb250cm9sIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc2VyaWFsLWNvbnNvbGUtY29ubmVjdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNlcmlhbCBDb25zb2xlIENvbm5lY3Rpb248L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciB0ZXN0IHRhcmdldCBjbGFzc2VzIHJlcXVpcmluZyBhIHNlcmlhbCBjb25zb2xlCisgICAgICAgICAgICAgICAgICAgIHRvIGludGVyYWN0IHdpdGggdGhlIGJvb3Rsb2FkZXIgKGUuZy4gQmVhZ2xlQm9uZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgRWRnZVJvdXRlclRhcmdldCwgYW5kIEdydWJUYXJnZXQpLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGEgY29tbWFuZCB0byB1c2UgdG8gY29ubmVjdCB0byB0aGUgc2VyaWFsIGNvbnNvbGUKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHRhcmdldCBtYWNoaW5lIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEVTVF9TRVJJQUxDT05UUk9MX0NNRCc+PGZpbGVuYW1lPlRFU1RfU0VSSUFMQ09OVFJPTF9DTUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBvcHRpb25hbGx5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEVTVF9TRVJJQUxDT05UUk9MX0VYVFJBX0FSR1MnPjxmaWxlbmFtZT5URVNUX1NFUklBTENPTlRST0xfRVhUUkFfQVJHUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGNhc2VzIGNvdWxkIGJlIGEgc2VyaWFsIHRlcm1pbmFsIHByb2dyYW0gaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgaXMgY29ubmVjdGVkIHRvIGEgbG9jYWwgc2VyaWFsIHBvcnQsIG9yIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlbG5ldDwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBjb21tYW5kIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2UsIHRoZSBjb21tYW5kIHNpbXBseSBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBjb25uZWN0IHRvIHRoZSBzZXJpYWwgY29uc29sZSBhbmQgZm9yd2FyZCB0aGF0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgdG8gc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dCBhcyBhbnkgbm9ybWFsIHRlcm1pbmFsCisgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gZG9lcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHVzZSB0aGUgcGljb2NvbSB0ZXJtaW5hbCBwcm9ncmFtIG9uCisgICAgICAgICAgICAgICAgICAgIHNlcmlhbCBkZXZpY2UgPGZpbGVuYW1lPi9kZXYvdHR5VVNCMDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGF0IDExNTIwMGJwcywgeW91IHdvdWxkIHNldCB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURVNUX1NFUklBTENPTlRST0xfQ01EID0gInBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgbG9jYWwgZGV2aWNlcyB3aGVyZSB0aGUgc2VyaWFsIHBvcnQgZGV2aWNlIGRpc2FwcGVhcnMKKyAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgZGV2aWNlIHJlYm9vdHMsIGFuIGFkZGl0aW9uYWwgInNlcmRldnRyeSIgd3JhcHBlcgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgaXMgcHJvdmlkZWQuCisgICAgICAgICAgICAgICAgICAgIFRvIHVzZSB0aGlzIHdyYXBwZXIsIHNpbXBseSBwcmVmaXggdGhlIHRlcm1pbmFsIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtDT1JFQkFTRX0vc2NyaXB0cy9jb250cmliL3NlcmRldnRyeTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRFU1RfU0VSSUFMQ09OVFJPTF9DTUQgPSAiJHtDT1JFQkFTRX0vc2NyaXB0cy9jb250cmliL3NlcmRldnRyeSBwaWNvY29tIC1iCisxMTUyMDAgL2Rldi90dHlVU0IwIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InFlbXUtaW1hZ2UtcnVubmluZy10ZXN0cyI+CisgICAgICAgICAgICA8dGl0bGU+UnVubmluZyBUZXN0czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc3RhcnQgdGhlIHRlc3RzIGF1dG9tYXRpY2FsbHkgb3IgbWFudWFsbHk6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BdXRvbWF0aWNhbGx5IHJ1bm5pbmcgdGVzdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJ1biB0aGUgdGVzdHMgYXV0b21hdGljYWxseSBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc3VjY2Vzc2Z1bGx5IGNyZWF0ZXMgYW4gaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEVTVElNQUdFX0FVVE8nPjxmaWxlbmFtZT5URVNUSU1BR0VfQVVUTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIiBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURVNUSU1BR0VfQVVUTyA9ICIxIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgTmV4dCwgYnVpbGQgeW91ciBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBpbWFnZSBzdWNjZXNzZnVsbHkgYnVpbGRzLCB0aGUgdGVzdHMgcnVuOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1hbnVhbGx5IHJ1bm5pbmcgdGVzdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdHMsIGZpcnN0IGdsb2JhbGx5IGluaGVyaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgYnkgZWRpdGluZyB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgSU5IRVJJVCArPSAidGVzdGltYWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgTmV4dCwgdXNlIEJpdEJha2UgdG8gcnVuIHRoZSB0ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYml0YmFrZSAtYyB0ZXN0aW1hZ2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWxsIHRlc3QgZmlsZXMgcmVzaWRlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvcnVudGltZTwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBBIHRlc3QgbmFtZSBtYXBzIGRpcmVjdGx5IHRvIGEgUHl0aG9uIG1vZHVsZS4KKyAgICAgICAgICAgICAgICBFYWNoIHRlc3QgbW9kdWxlIG1heSBjb250YWluIGEgbnVtYmVyIG9mIGluZGl2aWR1YWwgdGVzdHMuCisgICAgICAgICAgICAgICAgVGVzdHMgYXJlIHVzdWFsbHkgZ3JvdXBlZCB0b2dldGhlciBieSB0aGUgYXJlYQorICAgICAgICAgICAgICAgIHRlc3RlZCAoZS5nIHRlc3RzIGZvciBzeXN0ZW1kIHJlc2lkZSBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2xpYi9vZXFhL3J1bnRpbWUvc3lzdGVtZC5weTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhZGQgdGVzdHMgdG8gYW55IGxheWVyIHByb3ZpZGVkIHlvdSBwbGFjZSB0aGVtIGluIHRoZQorICAgICAgICAgICAgICAgIHByb3BlciBhcmVhIGFuZCB5b3UgZXh0ZW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFzIG5vcm1hbC4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRoYXQgdGVzdHMgcmVzaWRlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sYXllcjwvcmVwbGFjZWFibGU+L2xpYi9vZXFhL3J1bnRpbWU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0aGF0IG1vZHVsZSBuYW1lcyBkbyBub3QgY29sbGlkZSB3aXRoIG1vZHVsZSBuYW1lcworICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSBkZWZhdWx0IHNldCBvZiB0ZXN0IG1vZHVsZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvcnVudGltZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBjaGFuZ2UgdGhlIHNldCBvZiB0ZXN0cyBydW4gYnkgYXBwZW5kaW5nIG9yIG92ZXJyaWRpbmcKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEVTVF9TVUlURVMnPjxmaWxlbmFtZT5URVNUX1NVSVRFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEVhY2ggbmFtZSBpbiA8ZmlsZW5hbWU+VEVTVF9TVUlURVM8L2ZpbGVuYW1lPiByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICByZXF1aXJlZCB0ZXN0IGZvciB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgVGVzdCBtb2R1bGVzIG5hbWVkIHdpdGhpbiA8ZmlsZW5hbWU+VEVTVF9TVUlURVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBza2lwcGVkIGV2ZW4gaWYgYSB0ZXN0IGlzIG5vdCBzdWl0YWJsZSBmb3IgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAoZS5nLiBydW5uaW5nIHRoZSBSUE0gdGVzdHMgb24gYW4gaW1hZ2Ugd2l0aG91dAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycG08L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgQXBwZW5kaW5nICJhdXRvIiB0byA8ZmlsZW5hbWU+VEVTVF9TVUlURVM8L2ZpbGVuYW1lPiBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIHRyeSB0byBydW4gYWxsIHRlc3RzIHRoYXQgYXJlIHN1aXRhYmxlIGZvciB0aGUKKyAgICAgICAgICAgICAgICBpbWFnZSAoaS5lLiBlYWNoIHRlc3QgbW9kdWxlIG1heSBlbGVjdCB0byBza2lwIGl0c2VsZikuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBvcmRlciB5b3UgbGlzdCB0ZXN0cyBpbiA8ZmlsZW5hbWU+VEVTVF9TVUlURVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGlzIGltcG9ydGFudCBhbmQgaW5mbHVlbmNlcyB0ZXN0IGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRlc3RzIHRoYXQgZGVwZW5kIG9uIG90aGVyIHRlc3RzIHNob3VsZCBiZSBhZGRlZAorICAgICAgICAgICAgICAgIGFmdGVyIHRoZSB0ZXN0IG9uIHdoaWNoIHRoZXkgZGVwZW5kLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzaW5jZSB0aGUgPGZpbGVuYW1lPnNzaDwvZmlsZW5hbWU+IHRlc3QKKyAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5waW5nPC9maWxlbmFtZT4gdGVzdCwgInNzaCIgbmVlZHMgdG8gY29tZSBhZnRlcgorICAgICAgICAgICAgICAgICJwaW5nIiBpbiB0aGUgbGlzdC4KKyAgICAgICAgICAgICAgICBUaGUgdGVzdCBjbGFzcyBwcm92aWRlcyBubyByZS1vcmRlcmluZyBvciBkZXBlbmRlbmN5IGhhbmRsaW5nLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBFYWNoIG1vZHVsZSBjYW4gaGF2ZSBtdWx0aXBsZSBjbGFzc2VzIHdpdGggbXVsdGlwbGUgdGVzdAorICAgICAgICAgICAgICAgICAgICBtZXRob2RzLgorICAgICAgICAgICAgICAgICAgICBBbmQsIFB5dGhvbiA8ZmlsZW5hbWU+dW5pdHRlc3Q8L2ZpbGVuYW1lPiBydWxlcyBhcHBseS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgdGhpbmdzIHRvIGtlZXAgaW4gbWluZCB3aGVuIHJ1bm5pbmcgdGVzdHM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBkZWZhdWx0IHRlc3RzIGZvciB0aGUgaW1hZ2UgYXJlIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLTxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+ID0gInBpbmcgc3NoIGRmIGNvbm5tYW4gc3lzbG9nIHhvcmcgc2NwIHZuYyBkYXRlIHJwbSBkbmYgZG1lc2ciCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGQgeW91ciBvd24gdGVzdCB0byB0aGUgbGlzdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRFU1RfU1VJVEVTX2FwcGVuZCA9ICIgbXl0ZXN0IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UnVuIGEgc3BlY2lmaWMgbGlzdCBvZiB0ZXN0cyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURVNUX1NVSVRFUyA9ICJ0ZXN0MSB0ZXN0MiB0ZXN0MyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbWVtYmVyLCBvcmRlciBpcyBpbXBvcnRhbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHBsYWNlIGEgdGVzdCB0aGF0IGlzIGRlcGVuZGVudCBvbiBhbm90aGVyIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVyIGluIHRoZSBvcmRlci48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJleHBvcnRpbmctdGVzdHMiPgorICAgICAgICAgICAgPHRpdGxlPkV4cG9ydGluZyBUZXN0czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZXhwb3J0IHRlc3RzIHNvIHRoYXQgdGhleSBjYW4gcnVuIGluZGVwZW5kZW50bHkgb2YKKyAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIEV4cG9ydGluZyB0ZXN0cyBpcyByZXF1aXJlZCBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGhhbmQKKyAgICAgICAgICAgICAgICB0aGUgdGVzdCBleGVjdXRpb24gb2ZmIHRvIGEgc2NoZWR1bGVyLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBleHBvcnQgdGVzdHMgdGhhdCBhcmUgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1URVNUX1NVSVRFUyc+PGZpbGVuYW1lPlRFU1RfU1VJVEVTPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91ciBpbWFnZSBpcyBhbHJlYWR5IGJ1aWx0LCBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBhcmUgc2V0CisgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9InRlc3RleHBvcnQiCisgICAgIFRFU1RfVEFSR0VUX0lQID0gIjxyZXBsYWNlYWJsZT5JUC1hZGRyZXNzLWZvci10aGUtdGVzdC10YXJnZXQ8L3JlcGxhY2VhYmxlPiIKKyAgICAgVEVTVF9TRVJWRVJfSVAgPSAiPHJlcGxhY2VhYmxlPklQLWFkZHJlc3MtZm9yLXRoZS10ZXN0LXNlcnZlcjwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gZXhwb3J0IHRoZSB0ZXN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgQml0QmFrZQorICAgICAgICAgICAgICAgIGNvbW1hbmQgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0ZXhwb3J0CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEV4cG9ydGluZyB0aGUgdGVzdHMgcGxhY2VzIHRoZW0gaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC90ZXN0ZXhwb3J0LzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgY29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9FWFBPUlRfRElSPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IHJ1biB0aGUgdGVzdHMgb3V0c2lkZSBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHRtcC90ZXN0ZXhwb3J0LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICQgLi9ydW5leHBvcnRlZC5weSB0ZXN0ZGF0YS5qc29uCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgY29tcGxldGUgZXhhbXBsZSB0aGF0IHNob3dzIElQIGFkZHJlc3NlcyBhbmQgdXNlcworICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9InRlc3RleHBvcnQiCisgICAgIFRFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguNy4yIgorICAgICBURVNUX1NFUlZFUl9JUCA9ICIxOTIuMTY4LjcuMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVXNlIEJpdEJha2UgdG8gZXhwb3J0IHRoZSB0ZXN0czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8gLWMgdGVzdGV4cG9ydAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBSdW4gdGhlIHRlc3RzIG91dHNpZGUgb2YgdGhlIGJ1aWxkIGVudmlyb25tZW50IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgdG1wL3Rlc3RleHBvcnQvY29yZS1pbWFnZS1zYXRvCisgICAgICQgLi9ydW5leHBvcnRlZC5weSB0ZXN0ZGF0YS5qc29uCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InFlbXUtaW1hZ2Utd3JpdGluZy1uZXctdGVzdHMiPgorICAgICAgICAgICAgPHRpdGxlPldyaXRpbmcgTmV3IFRlc3RzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIHByZXZpb3VzbHksIGFsbCBuZXcgdGVzdCBmaWxlcyBuZWVkIHRvIGJlIGluIHRoZQorICAgICAgICAgICAgICAgIHByb3BlciBwbGFjZSBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHRoZW0uCisgICAgICAgICAgICAgICAgTmV3IHRlc3RzIGZvciBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgb3V0c2lkZSBvZiB0aGUgY29yZQorICAgICAgICAgICAgICAgIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgbGF5ZXIgdGhhdCBhZGRzIHRoZSBmdW5jdGlvbmFsaXR5LCBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48cmVwbGFjZWFibGU+bGF5ZXI8L3JlcGxhY2VhYmxlPi9saWIvb2VxYS9ydW50aW1lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAoYXMgbG9uZyBhcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgaXMgZXh0ZW5kZWQgaW4gdGhlIGxheWVyJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgYXMgbm9ybWFsKS4KKyAgICAgICAgICAgICAgICBKdXN0IHJlbWVtYmVyIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZpbGVuYW1lcyBuZWVkIHRvIG1hcCBkaXJlY3RseSB0byB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAobW9kdWxlKSBuYW1lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RG8gbm90IHVzZSBtb2R1bGUgbmFtZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgY29sbGlkZSB3aXRoIGV4aXN0aW5nIGNvcmUgdGVzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1pbmltYWxseSwgYW4gZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fX2luaXRfXy5weTwvZmlsZW5hbWU+IGZpbGUgbXVzdCBleGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJ1bnRpbWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIG5ldyB0ZXN0LCBzdGFydCBieSBjb3B5aW5nIGFuIGV4aXN0aW5nIG1vZHVsZQorICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5zeXNsb2cucHk8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MucHk8L2ZpbGVuYW1lPiBhcmUgZ29vZCBvbmVzIHRvIHVzZSkuCisgICAgICAgICAgICAgICAgVGVzdCBtb2R1bGVzIGNhbiB1c2UgY29kZSBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvdXRpbHM8L2ZpbGVuYW1lPiwgd2hpY2ggYXJlIGhlbHBlcgorICAgICAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFN0cnVjdHVyZSBzaGVsbCBjb21tYW5kcyBzdWNoIHRoYXQgeW91IHJlbHkgb24gdGhlbSBhbmQgdGhleQorICAgICAgICAgICAgICAgIHJldHVybiBhIHNpbmdsZSBjb2RlIGZvciBzdWNjZXNzLgorICAgICAgICAgICAgICAgIEJlIGF3YXJlIHRoYXQgc29tZXRpbWVzIHlvdSB3aWxsIG5lZWQgdG8gcGFyc2UgdGhlIG91dHB1dC4KKyAgICAgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5kZi5weTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kYXRlLnB5PC9maWxlbmFtZT4gbW9kdWxlcyBmb3IgZXhhbXBsZXMuCisgICAgICAgICAgICA8L25vdGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSB3aWxsIG5vdGljZSB0aGF0IGFsbCB0ZXN0IGNsYXNzZXMgaW5oZXJpdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZVJ1bnRpbWVUZXN0PC9maWxlbmFtZT4sIHdoaWNoIGlzIGZvdW5kIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29ldGVzdC5weTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoaXMgYmFzZSBjbGFzcyBvZmZlcnMgc29tZSBoZWxwZXIgYXR0cmlidXRlcywgd2hpY2ggYXJlCisgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdxZW11LWltYWdlLXdyaXRpbmctdGVzdHMtY2xhc3MtbWV0aG9kcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNsYXNzIE1ldGhvZHM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENsYXNzIG1ldGhvZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5oYXNQYWNrYWdlKHBrZyk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybnMgIlRydWUiIGlmIDxmaWxlbmFtZT5wa2c8L2ZpbGVuYW1lPiBpcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgcGFja2FnZSBsaXN0IG9mIHRoZSBpbWFnZSwgd2hpY2ggaXMgYmFzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGlzIGdlbmVyYXRlZCBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5oYXNGZWF0dXJlKGZlYXR1cmUpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5zICJUcnVlIiBpZiB0aGUgZmVhdHVyZSBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3FlbXUtaW1hZ2Utd3JpdGluZy10ZXN0cy1jbGFzcy1hdHRyaWJ1dGVzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q2xhc3MgQXR0cmlidXRlczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ2xhc3MgYXR0cmlidXRlcyBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnBzY21kPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcXVhbHMgInBzIC1lZiIgaWYgPGZpbGVuYW1lPnByb2NwczwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIDxmaWxlbmFtZT5wc2NtZDwvZmlsZW5hbWU+IGVxdWFscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcyIgKGJ1c3lib3gpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+dGM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjYWxsZWQgdGVzdCBjb250ZXh0LCB3aGljaCBnaXZlcyBhY2Nlc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBkYXRhc3RvcmUsIHdoaWNoIGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBzdHVmZiBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2VSdW50aW1lVGVzdC50Yy5kLmdldFZhcigiVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciIpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+dGVzdHNsaXN0PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT50ZXN0c3JlcXVpcmVkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZWQgaW50ZXJuYWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXN0cyBkbyBub3QgbmVlZCB0aGVzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5maWxlc2RpcjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvcnVudGltZS9maWxlczwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggY29udGFpbnMgaGVscGVyIGZpbGVzIGZvciB0ZXN0cyBtZWFudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvcHlpbmcgb24gdGhlIHRhcmdldCBzdWNoIGFzIHNtYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyB3cml0dGVuIGluIEMgZm9yIGNvbXBpbGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnRhcmdldDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGNvbnRyb2xsZXIgb2JqZWN0IHVzZWQgdG8gZGVwbG95CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RhcnQgYW4gaW1hZ2Ugb24gYSBwYXJ0aWN1bGFyIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gUWVtdSwgU2ltcGxlUmVtb3RlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbWRib290VGFyZ2V0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIHVzdWFsbHkgdXNlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmlwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCdzIElQIGFkZHJlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnNlcnZlcl9pcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0J3MgSVAgYWRkcmVzcywgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1YWxseSB1c2VkIGJ5IHRoZSBETkYgdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cnVuKGNtZCwgdGltZW91dD1Ob25lKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzaW5nbGUsIG1vc3QgdXNlZCBtZXRob2QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhIHdyYXBwZXIgZm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3NoIHJvb3RAaG9zdCAiY21kIjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCByZXR1cm5zIGEgdHVwbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCksIHdoaWNoIGFyZSB3aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIG5hbWVzIGltcGx5IC0gdGhlIHJldHVybiBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mICJjbWQiIGFuZCB3aGF0ZXZlciBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgcHJvZHVjZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHNob3VsZCB3YWl0IGZvciAiY21kIiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyAiTm9uZSIsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHVzZXMgdGhlIGRlZmF1bHQgaW5zdGFuY2UncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0IHBlcmlvZCwgd2hpY2ggaXMgMzAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyAiMCIsIHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnMgdW50aWwgdGhlIGNvbW1hbmQgcmV0dXJucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Y29weV90byhsb2NhbHBhdGgsIHJlbW90ZXBhdGgpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcCBsb2NhbHBhdGggcm9vdEBpcDpyZW1vdGVwYXRoPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmNvcHlfZnJvbShyZW1vdGVwYXRoLCBsb2NhbHBhdGgpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcCByb290QGhvc3Q6cmVtb3RlcGF0aCBsb2NhbHBhdGg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncWVtdS1pbWFnZS13cml0aW5nLXRlc3RzLWluc3RhbmNlLWF0dHJpYnV0ZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YW5jZSBBdHRyaWJ1dGVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIHNpbmdsZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZXhpc3RzLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+dGFyZ2V0PC9maWxlbmFtZT4gaW5zdGFuY2UgYXR0cmlidXRlIGlzCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbCB0byB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSBzYW1lIG5hbWUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgZXhpc3RzIGFzIGJvdGggYW4gaW5zdGFuY2UgYW5kIGNsYXNzCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBzbyB0ZXN0cyBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZWxmLnRhcmdldC5ydW4oY21kKTwvZmlsZW5hbWU+IGluIGluc3RhbmNlCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZHMgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2VSdW50aW1lVGVzdC50Yy50YXJnZXQucnVuKGNtZCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW5zdGFsbGluZy1wYWNrYWdlcy1pbi10aGUtZHV0LXdpdGhvdXQtdGhlLXBhY2thZ2UtbWFuYWdlcic+CisgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBQYWNrYWdlcyBpbiB0aGUgRFVUIFdpdGhvdXQgdGhlIFBhY2thZ2UgTWFuYWdlcjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4gYSB0ZXN0IHJlcXVpcmVzIGEgcGFja2FnZSBidWlsdCBieSBCaXRCYWtlLCBpdCBpcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgdGhhdCBwYWNrYWdlLgorICAgICAgICAgICAgICAgIEluc3RhbGxpbmcgdGhlIHBhY2thZ2UgZG9lcyBub3QgcmVxdWlyZSBhIHBhY2thZ2UgbWFuYWdlciBiZQorICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgKERVVCkuCisgICAgICAgICAgICAgICAgSXQgZG9lcywgaG93ZXZlciwgcmVxdWlyZSBhbiBTU0ggY29ubmVjdGlvbiBhbmQgdGhlIHRhcmdldCBtdXN0CisgICAgICAgICAgICAgICAgYmUgdXNpbmcgdGhlIDxmaWxlbmFtZT5zc2hjb250cm9sPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHVzZXMgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+IHRvIGNvcHkgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgaG9zdCB0byB0aGUgdGFyZ2V0LCB3aGljaCBjYXVzZXMgcGVybWlzc2lvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgYXR0cmlidXRlcyB0byBiZSBsb3N0LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBKU09OIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHBhY2thZ2VzIG5lZWRlZCBieSBhIHRlc3QuCisgICAgICAgICAgICAgICAgVGhpcyBmaWxlIG11c3QgYmUgaW4gdGhlIHNhbWUgcGF0aCBhcyB0aGUgZmlsZSB1c2VkIHRvIGRlZmluZQorICAgICAgICAgICAgICAgIHRoZSB0ZXN0cy4KKyAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGZpbGVuYW1lIG11c3QgbWFwIGRpcmVjdGx5IHRvIHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgbW9kdWxlIG5hbWUgd2l0aCBhIDxmaWxlbmFtZT4uanNvbjwvZmlsZW5hbWU+IGV4dGVuc2lvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIEpTT04gZmlsZSBtdXN0IGluY2x1ZGUgYW4gb2JqZWN0IHdpdGggdGhlIHRlc3QgbmFtZSBhcworICAgICAgICAgICAgICAgIGtleXMgb2YgYW4gb2JqZWN0IG9yIGFuIGFycmF5LgorICAgICAgICAgICAgICAgIFRoaXMgb2JqZWN0IChvciBhcnJheSBvZiBvYmplY3RzKSB1c2VzIHRoZSBmb2xsb3dpbmcgZGF0YToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+InBrZyIgLSBBIG1hbmRhdG9yeSBzdHJpbmcgdGhhdCBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHBhY2thZ2UgdG8gYmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4icm0iIC0gQW4gb3B0aW9uYWwgYm9vbGVhbiwgd2hpY2ggZGVmYXVsdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICJmYWxzZSIsIHRoYXQgc3BlY2lmaWVzIHRvIHJlbW92ZSB0aGUgcGFja2FnZSBhZnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPiJleHRyYWN0IiAtIEFuIG9wdGlvbmFsIGJvb2xlYW4sIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cyB0byAiZmFsc2UiLCB0aGF0IHNwZWNpZmllcyBpZiB0aGUgcGFja2FnZSBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgcGFja2FnZSBmb3JtYXQuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHNldCB0byAidHJ1ZSIsIHRoZSBwYWNrYWdlIGlzIG5vdCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW50byB0aGUgRFVULgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIEpTT04gZmlsZSB0aGF0IGhhbmRsZXMgdGVzdCAiZm9vIgorICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgcGFja2FnZSAiYmFyIiBhbmQgdGVzdCAiZm9vYmFyIiBpbnN0YWxsaW5nCisgICAgICAgICAgICAgICAgcGFja2FnZXMgImZvbyIgYW5kICJiYXIiLgorICAgICAgICAgICAgICAgIE9uY2UgdGhlIHRlc3QgaXMgY29tcGxldGUsIHRoZSBwYWNrYWdlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIERVVC4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHsKKyAgICAgICAgICJmb28iOiB7CisgICAgICAgICAgICAgInBrZyI6ICJiYXIiCisgICAgICAgICB9LAorICAgICAgICAgImZvb2JhciI6IFsKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICJwa2ciOiAiZm9vIiwKKyAgICAgICAgICAgICAgICAgInJtIjogdHJ1ZQorICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAicGtnIjogImJhciIsCisgICAgICAgICAgICAgICAgICJybSI6IHRydWUKKyAgICAgICAgICAgICB9CisgICAgICAgICBdCisgICAgIH0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWRlYnVnZ2luZy10b29scy1hbmQtdGVjaG5pcXVlcyc+CisgICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgVG9vbHMgYW5kIFRlY2huaXF1ZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGV4YWN0IG1ldGhvZCBmb3IgZGVidWdnaW5nIGJ1aWxkIGZhaWx1cmVzIGRlcGVuZHMgb24gdGhlIG5hdHVyZQorICAgICAgICAgICAgb2YgdGhlIHByb2JsZW0gYW5kIG9uIHRoZSBzeXN0ZW0ncyBhcmVhIGZyb20gd2hpY2ggdGhlIGJ1ZworICAgICAgICAgICAgb3JpZ2luYXRlcy4KKyAgICAgICAgICAgIFN0YW5kYXJkIGRlYnVnZ2luZyBwcmFjdGljZXMgc3VjaCBhcyBjb21wYXJpc29uIGFnYWluc3QgdGhlIGxhc3QKKyAgICAgICAgICAgIGtub3duIHdvcmtpbmcgdmVyc2lvbiB3aXRoIGV4YW1pbmF0aW9uIG9mIHRoZSBjaGFuZ2VzIGFuZCB0aGUKKyAgICAgICAgICAgIHJlLWFwcGxpY2F0aW9uIG9mIHN0ZXBzIHRvIGlkZW50aWZ5IHRoZSBvbmUgY2F1c2luZyB0aGUgcHJvYmxlbSBhcmUKKyAgICAgICAgICAgIHZhbGlkIGZvciB0aGUgWW9jdG8gUHJvamVjdCBqdXN0IGFzIHRoZXkgYXJlIGZvciBhbnkgb3RoZXIgc3lzdGVtLgorICAgICAgICAgICAgRXZlbiB0aG91Z2ggaXQgaXMgaW1wb3NzaWJsZSB0byBkZXRhaWwgZXZlcnkgcG9zc2libGUgcG90ZW50aWFsCisgICAgICAgICAgICBmYWlsdXJlLCB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBnZW5lcmFsIHRpcHMgdG8gYWlkIGluCisgICAgICAgICAgICBkZWJ1Z2dpbmcgZ2l2ZW4gYSB2YXJpZXR5IG9mIHNpdHVhdGlvbnMuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBBIHVzZWZ1bCBmZWF0dXJlIGZvciBkZWJ1Z2dpbmcgaXMgdGhlIGVycm9yIHJlcG9ydGluZyB0b29sLgorICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBZb2N0byBQcm9qZWN0IHRvIHVzZSB0aGlzIHRvb2wgY2F1c2VzIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBlcnJvciByZXBvcnRpbmcgY29tbWFuZHMgYXMKKyAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBjb25zb2xlIG91dHB1dC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGVudGVyIHRoZSBjb21tYW5kcyBhZnRlciB0aGUgYnVpbGQgY29tcGxldGVzIHRvIGxvZworICAgICAgICAgICAgICAgIGVycm9yIGluZm9ybWF0aW9uIGludG8gYSBjb21tb24gZGF0YWJhc2UsIHRoYXQgY2FuIGhlbHAgeW91CisgICAgICAgICAgICAgICAgZmlndXJlIG91dCB3aGF0IG1pZ2h0IGJlIGdvaW5nIHdyb25nLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlIGFuZCB1c2UgdGhpcyBmZWF0dXJlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLXRoZS1lcnJvci1yZXBvcnRpbmctdG9vbCc+VXNpbmcgdGhlIEVycm9yIFJlcG9ydGluZyBUb29sPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIGRlYnVnZ2luZyB0b3BpY3MgaW4gdGhlIHJlbWFpbmRlciBvZgorICAgICAgICAgICAgdGhpcyBzZWN0aW9uOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLXZpZXdpbmctbG9ncy1mcm9tLWZhaWxlZC10YXNrcyc+Vmlld2luZyBMb2dzIGZyb20gRmFpbGVkIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byBmaW5kIGFuZCB2aWV3IGxvZ3MgZnJvbSB0YXNrcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy12YXJpYWJsZS12YWx1ZXMnPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEJpdEJha2UgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIGV4YW1pbmUgdmFyaWFibGUgdmFsdWVzIGFmdGVyIGEgcmVjaXBlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+IHV0aWxpdHkgdG8gcXVlcnkKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBkaXNwbGF5IHBhY2thZ2UtcmVsYXRlZCBpbmZvcm1hdGlvbiBmb3IgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi12aWV3aW5nLWRlcGVuZGVuY2llcy1iZXR3ZWVuLXJlY2lwZXMtYW5kLXRhc2tzJz5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEJpdEJha2UgPGZpbGVuYW1lPi1nPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIGRpc3BsYXkgcmVjaXBlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gdXNlZAorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnPC9maWxlbmFtZT4gY29tbWFuZCBpbgorICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIGtleSBzdWJkaXJlY3RvcmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0byBkZXRlcm1pbmUgdmFyaWFibGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLXRhc2tydW5uaW5nJz5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2Ugc2V2ZXJhbCBCaXRCYWtlIG9wdGlvbnMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4pIHRvIHJ1biBzcGVjaWZpYyB0YXNrcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSB1c2VmdWwgdG8gcnVuIHRhc2tzICJvdXQtb2Ytb3JkZXIiIHdoZW4gdHJ5aW5nCisgICAgICAgICAgICAgICAgICAgIGlzb2xhdGUgYnVpbGQgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLWJpdGJha2UnPkdlbmVyYWwgQml0QmFrZSBQcm9ibGVtczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIEJpdEJha2UncyA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBvdXRwdXQgb3B0aW9uIHRvIHJldmVhbCBtb3JlIGFib3V0IHdoYXQgQml0QmFrZSBpcworICAgICAgICAgICAgICAgICAgICBkb2luZyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLWJ1aWxkZmlsZSc+QnVpbGRpbmcgd2l0aCBObyBEZXBlbmRlbmNpZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQml0QmFrZSA8ZmlsZW5hbWU+LWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gYnVpbGQgYSByZWNpcGUgd2hpbGUgaWdub3JpbmcgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWNpcGUtbG9nZ2luZy1tZWNoYW5pc21zJz5SZWNpcGUgTG9nZ2luZyBNZWNoYW5pc21zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIG1hbnkgcmVjaXBlIGxvZ2dpbmcgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgIHRvIHByb2R1Y2UgZGVidWdnaW5nIG91dHB1dCBhbmQgcmVwb3J0IGVycm9ycyBhbmQgd2FybmluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz5EZWJ1Z2dpbmcgUGFyYWxsZWwgTWFrZSBSYWNlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gZGVidWcgc2l0dWF0aW9ucyB3aGVyZSB0aGUgYnVpbGQgY29uc2lzdHMKKyAgICAgICAgICAgICAgICAgICAgb2Ygc2V2ZXJhbCBwYXJ0cyB0aGF0IGFyZSBydW4gc2ltdWx0YW5lb3VzbHkgYW5kIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCBvciByZXN1bHQgb2Ygb25lIHBhcnQgaXMgbm90IHJlYWR5IGZvciB1c2Ugd2l0aCBhCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBidWlsZCB0aGF0IGRlcGVuZHMgb24gdGhhdCBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSBHREIgdG8gYWxsb3cgeW91IHRvIGV4YW1pbmUgcnVubmluZworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtcywgd2hpY2ggY2FuIGhlbHAgeW91IGZpeCBwcm9ibGVtcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGVidWdnaW5nLXdpdGgtdGhlLWdudS1wcm9qZWN0LWRlYnVnZ2VyLWdkYi1vbi10aGUtdGFyZ2V0Jz5EZWJ1Z2dpbmcgd2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgb24gdGhlIFRhcmdldDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIEdEQiBkaXJlY3RseSBvbiB0YXJnZXQgaGFyZHdhcmUgZm9yCisgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LW90aGVyLWRlYnVnZ2luZy1vdGhlcnMnPk90aGVyIERlYnVnZ2luZyBUaXBzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIG1pc2NlbGxhbmVvdXMgZGVidWdnaW5nIHRpcHMgdGhhdCBjYW4gYmUgdXNlZnVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy1sb2dzLWZyb20tZmFpbGVkLXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIExvZ3MgZnJvbSBGYWlsZWQgVGFza3M8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIGxvZyBmb3IgYSB0YXNrIGluIHRoZSBmaWxlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vdGVtcC9sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGxvZyBmb3IgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2sgb2YgdGhlIFFFTVUgbWluaW1hbCBpbWFnZSBmb3IgdGhlIHg4NiBtYWNoaW5lCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4pIG1pZ2h0IGJlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3RlbXAvbG9nLmRvX2NvbXBpbGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUbyBzZWUgdGhlIGNvbW1hbmRzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgICAgICByYW4gdG8gZ2VuZXJhdGUgYSBsb2csIGxvb2sgYXQgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVuLmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYXJlIGFjdHVhbGx5IHN5bWJvbGljIGxpbmtzIHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cucnVuXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBpZDwvcmVwbGFjZWFibGU+LAorICAgICAgICAgICAgICAgIHdoZXJlIDxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPiBpcyB0aGUgUElEIHRoZSB0YXNrIGhhZAorICAgICAgICAgICAgICAgIHdoZW4gaXQgcmFuLgorICAgICAgICAgICAgICAgIFRoZSBzeW1saW5rcyBhbHdheXMgcG9pbnQgdG8gdGhlIGZpbGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1vc3QKKyAgICAgICAgICAgICAgICByZWNlbnQgcnVuLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy12YXJpYWJsZS12YWx1ZXMnPgorICAgICAgICAgICAgPHRpdGxlPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBuZWVkIHRvIGtub3cgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUgYXMgYQorICAgICAgICAgICAgICAgIHJlc3VsdCBvZiBCaXRCYWtlJ3MgcGFyc2luZyBzdGVwLgorICAgICAgICAgICAgICAgIFRoaXMgY291bGQgYmUgYmVjYXVzZSBzb21lIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb2NjdXJyZWQKKyAgICAgICAgICAgICAgICBpbiB5b3VyIHByb2plY3QuCisgICAgICAgICAgICAgICAgUGVyaGFwcyBhbiBhdHRlbXB0IHRvCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNtb2RpZnlpbmctZXhpc3RpbmctdmFyaWFibGVzJz5tb2RpZnkgYSB2YXJpYWJsZTwvdWxpbms+CisgICAgICAgICAgICAgICAgZGlkIG5vdCB3b3JrIG91dCBhcyBleHBlY3RlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSdzIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+IG9wdGlvbiBpcyB1c2VkIHRvIGRpc3BsYXkKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB2YWx1ZXMgYWZ0ZXIgcGFyc2luZy4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdGhlIHZhcmlhYmxlIHZhbHVlcyBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIChpLmUuIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoKSBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICBwYXJzZWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGRpc3BsYXlzIHZhcmlhYmxlIHZhbHVlcyBhZnRlciBhIHNwZWNpZmljCisgICAgICAgICAgICAgICAgcmVjaXBlIGhhcyBiZWVuIHBhcnNlZC4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGVzIGluY2x1ZGUgdGhvc2UgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBhcyB3ZWxsOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1lIHJlY2lwZW5hbWUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEVhY2ggcmVjaXBlIGhhcyBpdHMgb3duIHByaXZhdGUgc2V0IG9mIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAoZGF0YXN0b3JlKS4KKyAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxseSwgYWZ0ZXIgcGFyc2luZyB0aGUgY29uZmlndXJhdGlvbiwgYSBjb3B5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmcgZGF0YXN0b3JlIGlzIG1hZGUgcHJpb3IgdG8gcGFyc2luZyBlYWNoIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb3B5aW5nIGltcGxpZXMgdGhhdCB2YXJpYWJsZXMgc2V0IGluIG9uZSByZWNpcGUgd2lsbAorICAgICAgICAgICAgICAgICAgICBub3QgYmUgdmlzaWJsZSB0byBvdGhlciByZWNpcGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5MaWtld2lzZSwgZWFjaCB0YXNrIHdpdGhpbiBhIHJlY2lwZSBnZXRzIGEgcHJpdmF0ZQorICAgICAgICAgICAgICAgICAgICBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIHJlY2lwZSBkYXRhc3RvcmUsIHdoaWNoIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHNldCB3aXRoaW4gb25lIHRhc2sgd2lsbCBub3QgYmUgdmlzaWJsZSB0bworICAgICAgICAgICAgICAgICAgICBvdGhlciB0YXNrcy48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiB0aGUgb3V0cHV0IG9mIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4sIGVhY2gKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBwcmVjZWRlZCBieSBhIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgICAgICBnb3QgaXRzIHZhbHVlLCBpbmNsdWRpbmcgdGVtcG9yYXJ5IHZhbHVlcyB0aGF0IHdlcmUgbGF0ZXIKKyAgICAgICAgICAgICAgICBvdmVycmlkZW4uCisgICAgICAgICAgICAgICAgVGhpcyBkZXNjcmlwdGlvbiBhbHNvIGluY2x1ZGVzIHZhcmlhYmxlIGZsYWdzICh2YXJmbGFncykgc2V0IG9uCisgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgY2FuIGJlIHZlcnkgaGVscGZ1bCBkdXJpbmcgZGVidWdnaW5nLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBWYXJpYWJsZXMgdGhhdCBhcmUgZXhwb3J0ZWQgdG8gdGhlIGVudmlyb25tZW50IGFyZSBwcmVjZWRlZCBieQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHBvcnQ8L2ZpbGVuYW1lPiBpbiB0aGUgb3V0cHV0IG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBTZWUgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZXhwb3J0IENDPSJpNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9ob21lL3VsZi9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy9xZW11eDg2IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdmFyaWFibGUgdmFsdWVzLCB0aGUgb3V0cHV0IG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiZuYnNwOzxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGNvbW1hbmRzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBzdGFydHMgd2l0aCBhIHRyZWUgbGlzdGluZyBhbGwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgYW5kIGNsYXNzZXMgaW5jbHVkZWQgZ2xvYmFsbHksIHJlY3Vyc2l2ZWx5IGxpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcyB0aGV5IGluY2x1ZGUgb3IgaW5oZXJpdCBpbiB0dXJuLgorICAgICAgICAgICAgICAgICAgICAgICAgTXVjaCBvZiB0aGUgYmVoYXZpb3Igb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIChpbmNsdWRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbm9ybWFsLXJlY2lwZS1idWlsZC10YXNrcyc+bm9ybWFsIHJlY2lwZSBidWlsZCB0YXNrczwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW1wbGVtZW50ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGUgY2xhc3NlcyBpdCBpbmhlcml0cywgcmF0aGVyIHRoYW4gYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGludG8gQml0QmFrZSBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHZhcmlhYmxlIHZhbHVlcywgYWxsIGZ1bmN0aW9ucyBhcHBlYXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc2hlbGwgZnVuY3Rpb25zLCB2YXJpYWJsZXMgcmVmZXJlbmNlZCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFyZSBleHBhbmRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIGEgZnVuY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgdXNpbmcgb3ZlcnJpZGVzIG9yCisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBvdmVycmlkZS1zdHlsZSBvcGVyYXRvcnMgbGlrZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+LCB0aGVuIHRoZSBmaW5hbCBhc3NlbWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGJvZHkgYXBwZWFycyBpbiB0aGUgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIHV0aWxpdHkgdG8gcXVlcnkKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgZGlzcGxheSB2YXJpb3VzIHBhY2thZ2UtcmVsYXRlZCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIHV0aWxpdHksIHlvdSBtdXN0IHVzZSBpdCB0byB2aWV3IGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgb24gcGFja2FnZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBidWlsdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBhIGZldyBvZiB0aGUgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+IHN1YmNvbW1hbmRzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgc3RhbmRhcmQgKiBhbmQgPyBnbG9iYmluZyB3aWxkY2FyZHMgYXMgcGFydAorICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlIG5hbWVzIGFuZCBwYXRocy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgWzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT5dPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhbGwgcGFja2FnZXMgdGhhdCBoYXZlIGJlZW4gYnVpbHQsIG9wdGlvbmFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0aW5nIHRoZSBtYXRjaCB0byBwYWNrYWdlcyB0aGF0IG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cGF0dGVybjwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+Jm5ic3A7Li4uPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGNvbnRhaW5lZCBpbiB0aGUgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBkaWZmZXJlbnQgd2F5IHRvIHZpZXcgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGxvb2sgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vcGFja2FnZXMtc3BsaXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgcmVjaXBlIHRoYXQgZ2VuZXJhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgY3JlYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBhbmQgaGFzIG9uZSBzdWJkaXJlY3RvcnkgZm9yIGVhY2ggcGFja2FnZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZ2VuZXJhdGVzLCB3aGljaCBjb250YWlucyB0aGUgZmlsZXMgc3RvcmVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBwYWNrYWdlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBpbnNwZWN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3BhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIG1ha2Ugc3VyZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGVuYWJsZWQgd2hlbiB5b3UgYnVpbGQgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGF0aDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiZuYnNwOy4uLjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIG5hbWVzIG9mIHRoZSBwYWNrYWdlcyB0aGF0IGNvbnRhaW4gdGhlIGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRocy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlbGxzIHVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL3NoYXJlL21hbi9tYW4xL21ha2UuMTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBjb250YWluZWQgaW4gdGhlIDxmaWxlbmFtZT5tYWtlLWRvYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG9lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL3Vzci9zaGFyZS9tYW4vbWFuMS9tYWtlLjEKKyAgICAgbWFrZS1kb2M6IC91c3Ivc2hhcmUvbWFuL21hbjEvbWFrZS4xCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiZuYnNwOy4uLjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIG5hbWUgb2YgdGhlIHJlY2lwZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZSB0aGUgZ2l2ZW4gcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQsIHVzZSB0aGUgaGVscCBmYWNpbGl0eToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgb2UtcGtnZGF0YS11dGlsICZkYXNoOyZkYXNoO2hlbHAKKyAgICAgJCBvZS1wa2dkYXRhLXV0aWwgPHJlcGxhY2VhYmxlPnN1YmNvbW1hbmQ8L3JlcGxhY2VhYmxlPiAtLWhlbHAKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LXZpZXdpbmctZGVwZW5kZW5jaWVzLWJldHdlZW4tcmVjaXBlcy1hbmQtdGFza3MnPgorICAgICAgICAgICAgPHRpdGxlPlZpZXdpbmcgRGVwZW5kZW5jaWVzIEJldHdlZW4gUmVjaXBlcyBhbmQgVGFza3M8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgaXQgY2FuIGJlIGhhcmQgdG8gc2VlIHdoeSBCaXRCYWtlIHdhbnRzIHRvIGJ1aWxkIG90aGVyCisgICAgICAgICAgICAgICAgcmVjaXBlcyBiZWZvcmUgdGhlIG9uZSB5b3UgaGF2ZSBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgRGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBjYW4gaGVscCB5b3UgdW5kZXJzdGFuZCB3aHkgYSByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICBidWlsdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZ2VuZXJhdGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBmb3IgYSByZWNpcGUsIHJ1biB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZyA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCB3cml0ZXMgdGhlIGZvbGxvd2luZyBmaWxlcyBpbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG4tYnVpbGRsaXN0PC9maWxlbmFtZT46IEEgbGlzdCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy90YXJnZXRzIGludm9sdmVkIGluIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICAgICAgIkludm9sdmVkIiBoZXJlIG1lYW5zIHRoYXQgYXQgbGVhc3Qgb25lIHRhc2sgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmVlZHMgdG8gcnVuIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4gZnJvbSBzY3JhdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0cyB0aGF0IGFyZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUFTU1VNRV9QUk9WSURFRCc+PGZpbGVuYW1lPkFTU1VNRV9QUk9WSURFRDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgbGlzdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXNrLWRlcGVuZHMuZG90PC9maWxlbmFtZT46IEEgZ3JhcGggc2hvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGFza3MuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGdyYXBocyBhcmUgaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ET1RfJTI4Z3JhcGhfZGVzY3JpcHRpb25fbGFuZ3VhZ2UlMjknPkRPVDwvdWxpbms+CisgICAgICAgICAgICAgICAgZm9ybWF0IGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGltYWdlcyAoZS5nLiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG90PC9maWxlbmFtZT4gdG9vbCBmcm9tCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5ncmFwaHZpei5vcmcvJz5HcmFwaHZpejwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPVCBmaWxlcyB1c2UgYSBwbGFpbiB0ZXh0IGZvcm1hdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZ3JhcGhzIGdlbmVyYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZzwvZmlsZW5hbWU+IGNvbW1hbmQgYXJlIG9mdGVuIHNvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFyZ2UgYXMgdG8gYmUgZGlmZmljdWx0IHRvIHJlYWQgd2l0aG91dCBzcGVjaWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmluZyAoZS5nLiB3aXRoIEJpdGJha2UncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tSTwvZmlsZW5hbWU+IG9wdGlvbikgYW5kIHByb2Nlc3NpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzcGl0ZSB0aGUgZm9ybSBhbmQgc2l6ZSBvZiB0aGUgZ3JhcGhzLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIDxmaWxlbmFtZT4uZG90PC9maWxlbmFtZT4gZmlsZXMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgYmUgcG9zc2libGUgdG8gcmVhZCBhbmQgcHJvdmlkZSB1c2VmdWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhbiBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFzay1kZXBlbmRzLmRvdDwvZmlsZW5hbWU+IGZpbGUgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcyBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAibGlieHNsdC5kb19jb25maWd1cmUiIC0+ICJsaWJ4bWwyLmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhYm92ZSBleGFtcGxlIGxpbmUgcmV2ZWFscyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBpbiA8ZmlsZW5hbWU+bGlieHNsdDwvZmlsZW5hbWU+IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gPGZpbGVuYW1lPmxpYnhtbDI8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHR3byByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGhvdyA8ZmlsZW5hbWU+LmRvdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgY2FuIGJlIHByb2Nlc3NlZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2NvbnRyaWIvZ3JhcGgtdG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIHNjcmlwdCwgd2hpY2ggZmluZHMgYW5kIGRpc3BsYXlzIHBhdGhzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiBncmFwaCBub2Rlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhIGRpZmZlcmVudCBtZXRob2QgdG8gdmlldyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1nIC11IHRhc2tleHAgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgZGlzcGxheXMgYSBHVUkgd2luZG93IGZyb20gd2hpY2ggeW91IGNhbiB2aWV3CisgICAgICAgICAgICAgICAgYnVpbGQtdGltZSBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSByZWNpcGVzIGludm9sdmVkIGluCisgICAgICAgICAgICAgICAgYnVpbGRpbmcgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+CisgICAgICAgICAgICA8dGl0bGU+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNjaGVja3N1bXMnPkNoZWNrc3VtcyAoU2lnbmF0dXJlcyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLCBCaXRCYWtlIHRyaWVzIHRvCisgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBkZXRlcm1pbmUgd2hhdCB2YXJpYWJsZXMgYSB0YXNrIGRlcGVuZHMgb24gc28KKyAgICAgICAgICAgICAgICB0aGF0IGl0IGNhbiByZXJ1biB0aGUgdGFzayBpZiBhbnkgdmFsdWVzIG9mIHRoZSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICBjaGFuZ2UuCisgICAgICAgICAgICAgICAgVGhpcyBkZXRlcm1pbmF0aW9uIGlzIHVzdWFsbHkgcmVsaWFibGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGRvIHRoaW5ncyBsaWtlIGNvbnN0cnVjdCB2YXJpYWJsZSBuYW1lcyBhdAorICAgICAgICAgICAgICAgIHJ1bnRpbWUsIHRoZW4geW91IG1pZ2h0IGhhdmUgdG8gbWFudWFsbHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICBvbiB0aG9zZSB2YXJpYWJsZXMgdXNpbmcgPGZpbGVuYW1lPnZhcmRlcHM8L2ZpbGVuYW1lPiBhcworICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+VmFyaWFibGUgRmxhZ3M8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVuc3VyZSB3aGV0aGVyIGEgdmFyaWFibGUgZGVwZW5kZW5jeSBpcyBiZWluZworICAgICAgICAgICAgICAgIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5IGZvciBhIGdpdmVuIHRhc2ssIHlvdSBjYW4gbGlzdCB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZXBlbmRlbmNpZXMgQml0QmFrZSBoYXMgZGV0ZXJtaW5lZCBieSBkb2luZyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgcmVjaXBlIGNvbnRhaW5pbmcgdGhlIHRhc2s6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNUQU1QU19ESVInPjxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBmaW5kIHRoZSBzaWduYXR1cmUgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4pIGZpbGUgdGhhdCBjb3JyZXNwb25kcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlcyBjb250YWluIGEgcGlja2xlZAorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGRhdGFiYXNlIG9mIGFsbCB0aGUgbWV0YWRhdGEgdGhhdCB3ZW50IGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW5nIHRoZSBpbnB1dCBjaGVja3N1bSBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgb2YgdGhlIDxmaWxlbmFtZT5kYjwvZmlsZW5hbWU+IHJlY2lwZSwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGUgbWlnaHQgYmUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbG9jYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7QlVJTERESVJ9L3RtcC9zdGFtcHMvaTU4Ni1wb2t5LWxpbnV4L2RiLzYuMC4zMC1yMS5kb19mZXRjaC5zaWdkYXRhLjdjMDQ4YzE4MjIyYjE2ZmYwYmNlZTIwMDBlZjY0OGIxCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGFza3MgdGhhdCBhcmUgYWNjZWxlcmF0ZWQgdGhyb3VnaCB0aGUgc2hhcmVkIHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUsIGFuIGFkZGl0aW9uYWwgPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBpcyB3cml0dGVuIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggdGhlIGNhY2hlZCB0YXNrIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2lnaW5mbzwvZmlsZW5hbWU+IGZpbGVzIGNvbnRhaW4gZXhhY3RseQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlLWR1bXBzaWcgJHtCVUlMRERJUn0vdG1wL3N0YW1wcy9pNTg2LXBva3ktbGludXgvZGIvNi4wLjMwLXIxLmRvX2ZldGNoLnNpZ2RhdGEuN2MwNDhjMTgyMjJiMTZmZjBiY2VlMjAwMGVmNjQ4YjEKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBvdXRwdXQgb2YgdGhlIGFib3ZlIGNvbW1hbmQsIHlvdSB3aWxsIGZpbmQgYQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBsaWtlIHRoZSBmb2xsb3dpbmcsIHdoaWNoIGxpc3RzIGFsbCB0aGUgKGluZmVycmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGlzdCBhbHNvIGluY2x1ZGVzIGluZGlyZWN0IGRlcGVuZGVuY2llcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZGVwZW5kaW5nIG9uIG90aGVyIHZhcmlhYmxlcywgcmVjdXJzaXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRhc2sgZGVwZW5kZW5jaWVzOiBbJ1BWJywgJ1NSQ1JFVicsICdTUkNfVVJJJywgJ1NSQ19VUklbbWQ1c3VtXScsICdTUkNfVVJJW3NoYTI1NnN1bV0nLCAnYmFzZV9kb19mZXRjaCddCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbnMgKGUuZy4gPGZpbGVuYW1lPmJhc2VfZG9fZmV0Y2g8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNvdW50IGFzIHZhcmlhYmxlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgaW4gdHVybiBkZXBlbmQgb24gdGhlIHZhcmlhYmxlcyB0aGV5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnPC9maWxlbmFtZT4gYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgdGhlIHZhbHVlIGVhY2ggdmFyaWFibGUgaGFkLCBhIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBmb3IgZWFjaCB2YXJpYWJsZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9IQVNIQkFTRV9XSElURUxJU1QnPjxmaWxlbmFtZT5CQl9IQVNIQkFTRV9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZXJlIGlzIGFsc28gYSA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICBmb3IgY29tcGFyaW5nIHR3byA8ZmlsZW5hbWU+c2lnaW5mbzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgY2FuIGJlIGhlbHBmdWwgd2hlbiB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGF0CisgICAgICAgICAgICAgICAgY2hhbmdlZCBiZXR3ZWVuIHR3byB2ZXJzaW9ucyBvZiBhIHRhc2suCisgICAgICAgICAgICAgICAgSWYgeW91IGNhbGwgPGZpbGVuYW1lPmJpdGJha2UtZGlmZnNpZ3M8L2ZpbGVuYW1lPiB3aXRoIGp1c3Qgb25lCisgICAgICAgICAgICAgICAgZmlsZSwgdGhlIGNvbW1hbmQgYmVoYXZlcyBsaWtlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtZHVtcHNpZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIEJpdEJha2UgdG8gZHVtcCBvdXQgdGhlIHNpZ25hdHVyZSBjb25zdHJ1Y3Rpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiB3aXRob3V0IGV4ZWN1dGluZyB0YXNrcyBieSB1c2luZyBlaXRoZXIgb2YgdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZC1saW5lIG9wdGlvbnM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmZGFzaDsmZGFzaDtkdW1wLXNpZ25hdHVyZXM9PHJlcGxhY2VhYmxlPlNJR05BVFVSRV9IQU5ETEVSPC9yZXBsYWNlYWJsZT4KKyAgICAgLVMgPHJlcGxhY2VhYmxlPlNJR05BVFVSRV9IQU5ETEVSPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFR3byBjb21tb24gdmFsdWVzIGZvcgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+U0lHTkFUVVJFX0hBTkRMRVI8L3JlcGxhY2VhYmxlPiBhcmUgIm5vbmUiIGFuZAorICAgICAgICAgICAgICAgICAgICAicHJpbnRkaWZmIiwgd2hpY2ggZHVtcCBvbmx5IHRoZSBzaWduYXR1cmUgb3IgY29tcGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZHVtcGVkIHNpZ25hdHVyZSB3aXRoIHRoZSBjYWNoZWQgb25lLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFVzaW5nIEJpdEJha2Ugd2l0aCBlaXRoZXIgb2YgdGhlc2Ugb3B0aW9ucyBjYXVzZXMgQml0QmFrZSB0bworICAgICAgICAgICAgICAgIGR1bXAgb3V0IDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW1wczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBmb3IgZXZlcnkgdGFzayBpdCB3b3VsZAorICAgICAgICAgICAgICAgIGhhdmUgZXhlY3V0ZWQgaW5zdGVhZCBvZiBidWlsZGluZyB0aGUgc3BlY2lmaWVkIHRhcmdldCBwYWNrYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi12aWV3aW5nLW1ldGFkYXRhLXVzZWQtdG8tY3JlYXRlLXRoZS1pbnB1dC1zaWduYXR1cmUtb2YtYS1zaGFyZWQtc3RhdGUtdGFzayc+CisgICAgICAgICAgICA8dGl0bGU+Vmlld2luZyBNZXRhZGF0YSBVc2VkIHRvIENyZWF0ZSB0aGUgSW5wdXQgU2lnbmF0dXJlIG9mIGEgU2hhcmVkIFN0YXRlIFRhc2s8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTZWVpbmcgd2hhdCBtZXRhZGF0YSB3ZW50IGludG8gY3JlYXRpbmcgdGhlIGlucHV0IHNpZ25hdHVyZQorICAgICAgICAgICAgICAgIG9mIGEgc2hhcmVkIHN0YXRlIChzc3RhdGUpIHRhc2sgY2FuIGJlIGEgdXNlZnVsIGRlYnVnZ2luZworICAgICAgICAgICAgICAgIGFpZC4KKyAgICAgICAgICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbiBzaWduYXR1cmUgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPikgZmlsZXMgaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdmlldyBhbmQgaW50ZXJwcmV0IGluZm9ybWF0aW9uIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gb24gc2hhcmVkIHN0YXRlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlJz5TaGFyZWQgU3RhdGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LWludmFsaWRhdGluZy1zaGFyZWQtc3RhdGUtdG8tZm9yY2UtYS10YXNrLXRvLXJ1bic+CisgICAgICAgICAgICA8dGl0bGU+SW52YWxpZGF0aW5nIFNoYXJlZCBTdGF0ZSB0byBGb3JjZSBhIFRhc2sgdG8gUnVuPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjb3ZlcnZpZXctY2hlY2tzdW1zJz5jaGVja3N1bXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlJz5zaGFyZWQgc3RhdGU8L3VsaW5rPgorICAgICAgICAgICAgICAgIGNhY2hlIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcmVidWlsZGluZyB0YXNrcy4KKyAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoaXMgc2NoZW1lIGlzIGtub3duIGFzICJzaGFyZWQgc3RhdGUgY29kZS4iCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHNjaGVtZXMsIHRoaXMgb25lIGhhcyBzb21lIGRyYXdiYWNrcy4KKyAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBjb3VsZCBtYWtlIGltcGxpY2l0IGNoYW5nZXMgdG8geW91cgorICAgICAgICAgICAgICAgIGNvZGUgdGhhdCB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb25zIGRvIG5vdCB0YWtlIGludG8KKyAgICAgICAgICAgICAgICBhY2NvdW50LgorICAgICAgICAgICAgICAgIFRoZXNlIGltcGxpY2l0IGNoYW5nZXMgYWZmZWN0IGEgdGFzaydzIG91dHB1dCBidXQgZG8gbm90CisgICAgICAgICAgICAgICAgdHJpZ2dlciB0aGUgc2hhcmVkIHN0YXRlIGNvZGUgaW50byByZWJ1aWxkaW5nIGEgcmVjaXBlLgorICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgZHVyaW5nIHdoaWNoIGEgdG9vbCBjaGFuZ2VzIGl0cyBvdXRwdXQuCisgICAgICAgICAgICAgICAgQXNzdW1lIHRoYXQgdGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+cnBtZGVwczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBjaGFuZ2Ugc2hvdWxkIGJlIHRoYXQgYWxsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vfd3JpdGVfcnBtPC9maWxlbmFtZT4gc2hhcmVkIHN0YXRlIGNhY2hlCisgICAgICAgICAgICAgICAgaXRlbXMgYmVjb21lIGludmFsaWQuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgYmVjYXVzZSB0aGUgY2hhbmdlIHRvIHRoZSBvdXRwdXQgaXMKKyAgICAgICAgICAgICAgICBleHRlcm5hbCB0byB0aGUgY29kZSBhbmQgdGhlcmVmb3JlIGltcGxpY2l0LAorICAgICAgICAgICAgICAgIHRoZSBhc3NvY2lhdGVkIHNoYXJlZCBzdGF0ZSBjYWNoZSBpdGVtcyBkbyBub3QgYmVjb21lCisgICAgICAgICAgICAgICAgaW52YWxpZGF0ZWQuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgYnVpbGQgcHJvY2VzcyB1c2VzIHRoZSBjYWNoZWQgaXRlbXMKKyAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBydW5uaW5nIHRoZSB0YXNrIGFnYWluLgorICAgICAgICAgICAgICAgIE9idmlvdXNseSwgdGhlc2UgdHlwZXMgb2YgaW1wbGljaXQgY2hhbmdlcyBjYW4gY2F1c2UKKyAgICAgICAgICAgICAgICBwcm9ibGVtcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gYXZvaWQgdGhlc2UgcHJvYmxlbXMgZHVyaW5nIHRoZSBidWlsZCwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzIG9mIGFueSBjaGFuZ2VzIHlvdSBtYWtlLgorICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBjaGFuZ2VzIHlvdSBtYWtlIGRpcmVjdGx5IHRvIGEgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBhcmUgYXV0b21hdGljYWxseSBmYWN0b3JlZCBpbnRvIHRoZSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KKyAgICAgICAgICAgICAgICBUaHVzLCB0aGVzZSBleHBsaWNpdCBjaGFuZ2VzIGludmFsaWRhdGUgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICBhcmVhIG9mIHNoYXJlZCBzdGF0ZSBjYWNoZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbmVlZCB0byBiZSBhd2FyZSBvZiBhbnkgaW1wbGljaXQgY2hhbmdlcyB0aGF0CisgICAgICAgICAgICAgICAgYXJlIG5vdCBvYnZpb3VzIGNoYW5nZXMgdG8gdGhlIGNvZGUgYW5kIGNvdWxkIGFmZmVjdAorICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2YgYSBnaXZlbiB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSBpZGVudGlmeSBhbiBpbXBsaWNpdCBjaGFuZ2UsIHlvdSBjYW4gZWFzaWx5CisgICAgICAgICAgICAgICAgdGFrZSBzdGVwcyB0byBpbnZhbGlkYXRlIHRoZSBjYWNoZSBhbmQgZm9yY2UgdGhlIHRhc2tzCisgICAgICAgICAgICAgICAgdG8gcnVuLgorICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB5b3UgY2FuIHRha2UgYXJlIGFzIHNpbXBsZSBhcyBjaGFuZ2luZyBhCisgICAgICAgICAgICAgICAgZnVuY3Rpb24ncyBjb21tZW50cyBpbiB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGludmFsaWRhdGUgcGFja2FnZSBzaGFyZWQgc3RhdGUgZmlsZXMsCisgICAgICAgICAgICAgICAgY2hhbmdlIHRoZSBjb21tZW50IHN0YXRlbWVudHMgb2YKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgb3IgdGhlIGNvbW1lbnRzIG9mIG9uZSBvZiB0aGUgZnVuY3Rpb25zIGl0IGNhbGxzLgorICAgICAgICAgICAgICAgIEV2ZW4gdGhvdWdoIHRoZSBjaGFuZ2UgaXMgcHVyZWx5IGNvc21ldGljLCBpdCBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgY2hlY2tzdW0gdG8gYmUgcmVjYWxjdWxhdGVkIGFuZCBmb3JjZXMgdGhlIGJ1aWxkIHN5c3RlbSB0bworICAgICAgICAgICAgICAgIHJ1biB0aGUgdGFzayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgYSBjb21taXQgdGhhdCBtYWtlcyBhIGNvc21ldGljCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZSB0byBpbnZhbGlkYXRlIHNoYXJlZCBzdGF0ZSwgc2VlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvY29tbWl0L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3M/aWQ9NzM3ZjhiYmI0ZjI3YjQ4MzcwNDdjYjliNGZiZmUwMWRmZGUzNmQ1NCc+Y29tbWl0PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1kZWJ1Z2dpbmctdGFza3J1bm5pbmcnPgorICAgICAgICAgICAgPHRpdGxlPlJ1bm5pbmcgU3BlY2lmaWMgVGFza3M8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbnkgZ2l2ZW4gcmVjaXBlIGNvbnNpc3RzIG9mIGEgc2V0IG9mIHRhc2tzLgorICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBCaXRCYWtlIGJlaGF2aW9yIGluIG1vc3QgY2FzZXMgaXM6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHRhc2sgaXMgPGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT4gYW5kIGFueSB0YXNrcworICAgICAgICAgICAgICAgIG9uIHdoaWNoIGl0IGRlcGVuZHMgYnVpbGQgZmlyc3QuCisgICAgICAgICAgICAgICAgU29tZSB0YXNrcywgc3VjaCBhcyA8ZmlsZW5hbWU+ZG9fZGV2c2hlbGw8L2ZpbGVuYW1lPiwgYXJlIG5vdAorICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIGRlZmF1bHQgYnVpbGQgY2hhaW4uCisgICAgICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gcnVuIGEgdGFzayB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkCisgICAgICAgICAgICAgICAgY2hhaW4sIHlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiBvcHRpb24gaW4KKyAgICAgICAgICAgICAgICBCaXRCYWtlLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGRldnNoZWxsCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4gb3B0aW9uIHJlc3BlY3RzIHRhc2sgZGVwZW5kZW5jaWVzLAorICAgICAgICAgICAgICAgIHdoaWNoIG1lYW5zIHRoYXQgYWxsIG90aGVyIHRhc2tzIChpbmNsdWRpbmcgdGFza3MgZnJvbSBvdGhlcgorICAgICAgICAgICAgICAgIHJlY2lwZXMpIHRoYXQgdGhlIHNwZWNpZmllZCB0YXNrIGRlcGVuZHMgb24gd2lsbCBiZSBydW4gYmVmb3JlCisgICAgICAgICAgICAgICAgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgRXZlbiB3aGVuIHlvdSBtYW51YWxseSBzcGVjaWZ5IGEgdGFzayB0byBydW4gd2l0aAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+LCBCaXRCYWtlIHdpbGwgb25seSBydW4gdGhlIHRhc2sgaWYgaXQKKyAgICAgICAgICAgICAgICBjb25zaWRlcnMgaXQgIm91dCBvZiBkYXRlIi4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc3RhbXAtZmlsZXMtYW5kLXRoZS1yZXJ1bm5pbmctb2YtdGFza3MnPlN0YW1wIEZpbGVzIGFuZCB0aGUgUmVydW5uaW5nIG9mIFRhc2tzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIGhvdyBCaXRCYWtlIGRldGVybWluZXMgd2hldGhlciBhIHRhc2sgaXMgIm91dCBvZiBkYXRlIi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZm9yY2UgYW4gdXAtdG8tZGF0ZSB0YXNrIHRvIGJlIHJlcnVuIChlLmcuCisgICAgICAgICAgICAgICAgYmVjYXVzZSB5b3UgbWFkZSBtYW51YWwgbW9kaWZpY2F0aW9ucyB0byB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGhhdCB5b3Ugd2FudCB0byB0cnkgb3V0KSwgdGhlbiB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBvcHRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gaXMgbmV2ZXIgcmVxdWlyZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZGV2c2hlbGwnPjxmaWxlbmFtZT5kb19kZXZzaGVsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBpcyBiZWNhdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WzwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPm5vc3RhbXA8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPl08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmbGFnIGlzIGFscmVhZHkgc2V0IGZvciB0aGUgdGFzay4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIG9uZSB3YXkgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AKKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgbWFrZSBzb21lIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoZSB3b3JrIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBjb21waWxlIC1mCisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlcXVlbmNlIGZpcnN0IGJ1aWxkcyBhbmQgdGhlbiByZWNvbXBpbGVzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hdGNoYm94LWRlc2t0b3A8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgbGFzdCBjb21tYW5kIHJlcnVucyBhbGwgdGFza3MgKGJhc2ljYWxseSB0aGUgcGFja2FnaW5nCisgICAgICAgICAgICAgICAgdGFza3MpIGFmdGVyIHRoZSBjb21waWxlLgorICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjb2duaXplcyB0aGF0IHRoZSA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGFzayB3YXMgcmVydW4gYW5kIHRoZXJlZm9yZSB1bmRlcnN0YW5kcyB0aGF0IHRoZSBvdGhlciB0YXNrcworICAgICAgICAgICAgICAgIGFsc28gbmVlZCB0byBiZSBydW4gYWdhaW4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFub3RoZXIsIHNob3J0ZXIgd2F5IHRvIHJlcnVuIGEgdGFzayBhbmQgYWxsCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbm9ybWFsLXJlY2lwZS1idWlsZC10YXNrcyc+bm9ybWFsIHJlY2lwZSBidWlsZCB0YXNrczwvdWxpbms+CisgICAgICAgICAgICAgICAgdGhhdCBkZXBlbmQgb24gaXQgaXMgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+LUM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9wdGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgdXBwZXItY2FzZWQgYW5kIGlzIHNlcGFyYXRlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+IG9wdGlvbiwgd2hpY2ggaXMgbG93ZXItY2FzZWQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFVzaW5nIHRoaXMgb3B0aW9uIGludmFsaWRhdGVzIHRoZSBnaXZlbiB0YXNrIGFuZCB0aGVuIHJ1bnMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWJ1aWxkJz48ZmlsZW5hbWU+ZG9fYnVpbGQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzaywgd2hpY2ggaXMgdGhlIGRlZmF1bHQgdGFzayBpZiBubyB0YXNrIGlzIGdpdmVuLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgdGFza3Mgb24gd2hpY2ggaXQgZGVwZW5kcy4KKyAgICAgICAgICAgICAgICBZb3UgY291bGQgcmVwbGFjZSB0aGUgZmluYWwgdHdvIGNvbW1hbmRzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlCisgICAgICAgICAgICAgICAgd2l0aCB0aGUgZm9sbG93aW5nIHNpbmdsZSBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLUMgY29tcGlsZQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbnRlcm5hbGx5LCB0aGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1DPC9maWxlbmFtZT4gb3B0aW9ucyB3b3JrIGJ5IHRhaW50aW5nIChtb2RpZnlpbmcpIHRoZQorICAgICAgICAgICAgICAgIGlucHV0IGNoZWNrc3VtIG9mIHRoZSBzcGVjaWZpZWQgdGFzay4KKyAgICAgICAgICAgICAgICBUaGlzIHRhaW50aW5nIGluZGlyZWN0bHkgY2F1c2VzIHRoZSB0YXNrIGFuZCBpdHMKKyAgICAgICAgICAgICAgICBkZXBlbmRlbnQgdGFza3MgdG8gYmUgcmVydW4gdGhyb3VnaCB0aGUgbm9ybWFsIHRhc2sgZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgIG1lY2hhbmlzbXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZXhwbGljaXRseSBrZWVwcyB0cmFjayBvZiB3aGljaCB0YXNrcyBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgdGFpbnRlZCBpbiB0aGlzIGZhc2hpb24sIGFuZCB3aWxsIHByaW50IHdhcm5pbmdzIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBmb3IgYnVpbGRzIGludm9sdmluZyBzdWNoIHRhc2tzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFdBUk5JTkc6IC9ob21lL3VsZi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvbWF0Y2hib3gtZGVza3RvcF8yLjEuYmIuZG9fY29tcGlsZSBpcyB0YWludGVkIGZyb20gYSBmb3JjZWQgcnVuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhlIHdhcm5pbmcgaXMgdG8gbGV0IHlvdSBrbm93IHRoYXQgdGhlIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBidWlsZCBvdXRwdXQgbWlnaHQgbm90IGJlIGluIHRoZSBjbGVhbiBzdGF0ZQorICAgICAgICAgICAgICAgICAgICB0aGV5IHdvdWxkIGJlIGluIGZvciBhICJub3JtYWwiIGJ1aWxkLCBkZXBlbmRpbmcgb24gd2hhdAorICAgICAgICAgICAgICAgICAgICBhY3Rpb25zIHlvdSB0b29rLgorICAgICAgICAgICAgICAgICAgICBUbyBnZXQgcmlkIG9mIHN1Y2ggd2FybmluZ3MsIHlvdSBjYW4gcmVtb3ZlIHRoZSB3b3JrCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgcmVidWlsZCB0aGUgcmVjaXBlLCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGNsZWFuCisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdmlldyBhIGxpc3Qgb2YgdGFza3MgaW4gYSBnaXZlbiBwYWNrYWdlIGJ5IHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+IHRhc2sgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGxpc3R0YXNrcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcHBlYXIgYXMgb3V0cHV0IHRvIHRoZSBjb25zb2xlIGFuZCBhcmUgYWxzbyBpbiB0aGUKKyAgICAgICAgICAgICAgICBmaWxlIDxmaWxlbmFtZT4ke1dPUktESVJ9L3RlbXAvbG9nLmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1kZWJ1Z2dpbmctYml0YmFrZSc+CisgICAgICAgICAgICA8dGl0bGU+R2VuZXJhbCBCaXRCYWtlIFByb2JsZW1zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgZGVidWcgb3V0cHV0IGZyb20gQml0QmFrZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPiBvcHRpb24uCisgICAgICAgICAgICAgICAgVGhlIGRlYnVnIG91dHB1dCBnaXZlcyBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgQml0QmFrZQorICAgICAgICAgICAgICAgIGlzIGRvaW5nIGFuZCB0aGUgcmVhc29uIGJlaGluZCBpdC4KKyAgICAgICAgICAgICAgICBFYWNoIDxmaWxlbmFtZT4tRDwvZmlsZW5hbWU+IG9wdGlvbiB5b3UgdXNlIGluY3JlYXNlcyB0aGUKKyAgICAgICAgICAgICAgICBsb2dnaW5nIGxldmVsLgorICAgICAgICAgICAgICAgIFRoZSBtb3N0IGNvbW1vbiB1c2FnZSBpcyA8ZmlsZW5hbWU+LURERDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGZyb20KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtREREIC12PC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPnRhcmdldG5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGNhbiByZXZlYWwgd2h5IEJpdEJha2UgY2hvc2UgYSBjZXJ0YWluIHZlcnNpb24gb2YgYSBwYWNrYWdlIG9yCisgICAgICAgICAgICAgICAgd2h5IEJpdEJha2UgcGlja2VkIGEgY2VydGFpbiBwcm92aWRlci4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgY291bGQgYWxzbyBoZWxwIHlvdSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB5b3UgdGhpbmsKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGRpZCBzb21ldGhpbmcgdW5leHBlY3RlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLWJ1aWxkZmlsZSc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgd2l0aCBObyBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBidWlsZCBhIHNwZWNpZmljIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUpLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3JtOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1iIDxyZXBsYWNlYWJsZT5zb21lcGF0aDwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5zb21lcmVjaXBlPC9yZXBsYWNlYWJsZT4uYmIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGZvcm0gZG9lcyBub3QgY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBzaG91bGQgdXNlIGl0IG9ubHkgd2hlbiB5b3Uga25vdyBleGlzdGluZworICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gbWV0LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gc3BlY2lmeSBmcmFnbWVudHMgb2YgdGhlIGZpbGVuYW1lLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIEJpdEJha2UgY2hlY2tzIGZvciBhIHVuaXF1ZSBtYXRjaC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncmVjaXBlLWxvZ2dpbmctbWVjaGFuaXNtcyc+CisgICAgICAgICAgICA8dGl0bGU+UmVjaXBlIExvZ2dpbmcgTWVjaGFuaXNtczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgbG9nZ2luZyBmdW5jdGlvbnMgZm9yCisgICAgICAgICAgICAgICAgcHJvZHVjaW5nIGRlYnVnZ2luZyBvdXRwdXQgYW5kIHJlcG9ydGluZyBlcnJvcnMgYW5kIHdhcm5pbmdzLgorICAgICAgICAgICAgICAgIEZvciBQeXRob24gZnVuY3Rpb25zLCB0aGUgZm9sbG93aW5nIGxvZ2dpbmcgZnVuY3Rpb25zIGV4aXN0LgorICAgICAgICAgICAgICAgIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgbG9nIHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7VH0vbG9nLmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2s8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgICAgICAgICBhbmQgY2FuIGFsc28gbG9nIHRvIHN0YW5kYXJkIG91dHB1dCAoc3Rkb3V0KSB3aXRoIHRoZSByaWdodAorICAgICAgICAgICAgICAgIHNldHRpbmdzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5wbGFpbig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZXMgPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IGFzIGlzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nIHdoaWxlIGFsc28gbG9nZ2luZyB0byBzdGRvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLm5vdGUoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzICJOT1RFOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbyBsb2dzIHRvIHN0ZG91dCBpZiBCaXRCYWtlIGlzIGNhbGxlZCB3aXRoICItdiIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmRlYnVnKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LCZuYnNwOzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiREVCVUc6IDxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPiIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvIGxvZ3MgdG8gc3Rkb3V0IGlmIHRoZSBsb2cgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBlcXVhbCB0byA8cmVwbGFjZWFibGU+bGV2ZWw8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3VzYWdlLWFuZC1zeW50YXgnPi1EPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLndhcm4oPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzICJXQVJOSU5HOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nIHdoaWxlIGFsc28gbG9nZ2luZyB0byBzdGRvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmVycm9yKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiRVJST1I6IDxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPiIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsb2cgd2hpbGUgYWxzbyBsb2dnaW5nIHRvIHN0YW5kYXJkIG91dCAoc3Rkb3V0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXVzZSB0aGUgdGFzayB0byBmYWlsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5mYXRhbCg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxvZ2dpbmcgZnVuY3Rpb24gaXMgc2ltaWxhciB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmVycm9yKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gY2F1c2VzIHRoZSBjYWxsaW5nIHRhc2sgdG8gZmFpbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5mYXRhbCgpPC9maWxlbmFtZT4gcmFpc2VzIGFuIGV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBtZWFucyB5b3UgZG8gbm90IG5lZWQgdG8gcHV0IGEgInJldHVybiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgYWZ0ZXIgdGhlIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzYW1lIGxvZ2dpbmcgZnVuY3Rpb25zIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiBzaGVsbAorICAgICAgICAgICAgICAgIGZ1bmN0aW9ucywgdW5kZXIgdGhlIG5hbWVzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJicGxhaW48L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJibm90ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmRlYnVnPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYndhcm48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJlcnJvcjwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPmJiZmF0YWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1sb2dnaW5nJz48ZmlsZW5hbWU+bG9nZ2luZzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcyBpbXBsZW1lbnRzIHRoZXNlIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBTZWUgdGhhdCBjbGFzcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4gZm9sZGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2xvZ2dpbmctd2l0aC1weXRob24nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Mb2dnaW5nIFdpdGggUHl0aG9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIHJlY2lwZXMgdXNpbmcgUHl0aG9uIGFuZCBpbnNlcnRpbmcgY29kZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXMgYnVpbGQgbG9ncywga2VlcCBpbiBtaW5kIHRoZSBnb2FsIGlzIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpdmUgbG9ncyB3aGlsZSBrZWVwaW5nIHRoZSBjb25zb2xlIGFzICJzaWxlbnQiIGFzCisgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICBBbHNvLCBpZiB5b3Ugd2FudCBzdGF0dXMgbWVzc2FnZXMgaW4gdGhlIGxvZywgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAiZGVidWciIGxvZ2xldmVsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB3cml0dGVuIGluIFB5dGhvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNvZGUgaGFuZGxlcyBsb2dnaW5nIGZvciBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRhc2tzIG5lZWRlZCB0byBiZSBydW4uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1saXN0dGFza3MnPjxmaWxlbmFtZT5kb19saXN0dGFza3M8L2ZpbGVuYW1lPjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHB5dGhvbiBkb19saXN0dGFza3MoKSB7CisgICAgICAgICBiYi5kZWJ1ZygyLCAiU3RhcnRpbmcgdG8gZmlndXJlIG91dCB0aGUgdGFzayBsaXN0IikKKyAgICAgICAgIGlmIG5vdGV3b3J0aHlfY29uZGl0aW9uOgorICAgICAgICAgICAgIGJiLm5vdGUoIlRoZXJlIGFyZSA0NyB0YXNrcyB0byBydW4iKQorICAgICAgICAgYmIuZGVidWcoMiwgIkdvdCB0byBwb2ludCB4eXoiKQorICAgICAgICAgaWYgd2FybmluZ190cmlnZ2VyOgorICAgICAgICAgICAgIGJiLndhcm4oIkRldGVjdGVkIHdhcm5pbmdfdHJpZ2dlciwgdGhpcyBtaWdodCBiZSBhIHByb2JsZW0gbGF0ZXIuIikKKyAgICAgICAgIGlmIHJlY292ZXJhYmxlX2Vycm9yOgorICAgICAgICAgICAgIGJiLmVycm9yKCJIaXQgcmVjb3ZlcmFibGVfZXJyb3IsIHlvdSByZWFsbHkgbmVlZCB0byBmaXggdGhpcyEiKQorICAgICAgICAgaWYgZmF0YWxfZXJyb3I6CisgICAgICAgICAgICAgYmIuZmF0YWwoImZhdGFsX2Vycm9yIGRldGVjdGVkLCB1bmFibGUgdG8gcHJpbnQgdGhlIHRhc2sgbGlzdCIpCisgICAgICAgICBiYi5wbGFpbigiVGhlIHRhc2tzIHByZXNlbnQgYXJlIGFiYyIpCisgICAgICAgICBiYi5kZWJ1ZygyLCAiRmluaXNoZWQgZmlndXJpbmcgb3V0IHRoZSB0YXNrbGlzdCIpCisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2xvZ2dpbmctd2l0aC1iYXNoJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIEJhc2g8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gY3JlYXRpbmcgcmVjaXBlcyB1c2luZyBCYXNoIGFuZCBpbnNlcnRpbmcgY29kZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXMgYnVpbGQgbG9ncywgeW91IGhhdmUgdGhlIHNhbWUgZ29hbHMgLSBpbmZvcm1hdGl2ZQorICAgICAgICAgICAgICAgICAgICB3aXRoIG1pbmltYWwgY29uc29sZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzeW50YXggeW91IHVzZSBmb3IgcmVjaXBlcyB3cml0dGVuIGluIEJhc2ggaXMgc2ltaWxhcgorICAgICAgICAgICAgICAgICAgICB0byB0aGF0IG9mIHJlY2lwZXMgd3JpdHRlbiBpbiBQeXRob24gZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB3cml0dGVuIGluIEJhc2guCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb2RlIGxvZ3MgdGhlIHByb2dyZXNzIG9mIHRoZSA8ZmlsZW5hbWU+ZG9fbXlfZnVuY3Rpb248L2ZpbGVuYW1lPiBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19teV9mdW5jdGlvbigpIHsKKyAgICAgICAgIGJiZGVidWcgMiAiUnVubmluZyBkb19teV9mdW5jdGlvbiIKKyAgICAgICAgIGlmIFsgZXhjZXB0aW9uYWxfY29uZGl0aW9uIF07IHRoZW4KKyAgICAgICAgICAgICBiYm5vdGUgIkhpdCBleGNlcHRpb25hbF9jb25kaXRpb24iCisgICAgICAgICBmaQorICAgICAgICAgYmJkZWJ1ZyAyICAiR290IHRvIHBvaW50IHh5eiIKKyAgICAgICAgIGlmIFsgd2FybmluZ190cmlnZ2VyIF07IHRoZW4KKyAgICAgICAgICAgICBiYndhcm4gIkRldGVjdGVkIHdhcm5pbmdfdHJpZ2dlciwgdGhpcyBtaWdodCBjYXVzZSBhIHByb2JsZW0gbGF0ZXIuIgorICAgICAgICAgZmkKKyAgICAgICAgIGlmIFsgcmVjb3ZlcmFibGVfZXJyb3IgXTsgdGhlbgorICAgICAgICAgICAgIGJiZXJyb3IgIkhpdCByZWNvdmVyYWJsZV9lcnJvciwgY29ycmVjdGluZyIKKyAgICAgICAgIGZpCisgICAgICAgICBpZiBbIGZhdGFsX2Vycm9yIF07IHRoZW4KKyAgICAgICAgICAgICBiYmZhdGFsICJmYXRhbF9lcnJvciBkZXRlY3RlZCIKKyAgICAgICAgIGZpCisgICAgICAgICBiYmRlYnVnIDIgIkNvbXBsZXRlZCBkb19teV9mdW5jdGlvbiIKKyAgICAgfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgUGFyYWxsZWwgTWFrZSBSYWNlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgcGFyYWxsZWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiByYWNlIG9jY3VycyB3aGVuIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGNvbnNpc3RzIG9mIHNldmVyYWwgcGFydHMgdGhhdCBhcmUgcnVuIHNpbXVsdGFuZW91c2x5IGFuZAorICAgICAgICAgICAgICAgIGEgc2l0dWF0aW9uIG9jY3VycyB3aGVuIHRoZSBvdXRwdXQgb3IgcmVzdWx0IG9mIG9uZQorICAgICAgICAgICAgICAgIHBhcnQgaXMgbm90IHJlYWR5IGZvciB1c2Ugd2l0aCBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIHRoYXQgZGVwZW5kcyBvbiB0aGF0IG91dHB1dC4KKyAgICAgICAgICAgICAgICBQYXJhbGxlbCBtYWtlIHJhY2VzIGFyZSBhbm5veWluZyBhbmQgY2FuIHNvbWV0aW1lcyBiZSBkaWZmaWN1bHQKKyAgICAgICAgICAgICAgICB0byByZXByb2R1Y2UgYW5kIGZpeC4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBzb21lIHNpbXBsZSB0aXBzIGFuZCB0cmlja3MgZXhpc3QgdGhhdCBjYW4gaGVscAorICAgICAgICAgICAgICAgIHlvdSBkZWJ1ZyBhbmQgZml4IHRoZW0uCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgcmVhbC13b3JsZCBleGFtcGxlIG9mIGFuIGVycm9yCisgICAgICAgICAgICAgICAgZW5jb3VudGVyZWQgb24gdGhlIFlvY3RvIFByb2plY3QgYXV0b2J1aWxkZXIgYW5kIHRoZSBwcm9jZXNzCisgICAgICAgICAgICAgICAgdXNlZCB0byBmaXggaXQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjYW5ub3QgcHJvcGVybHkgZml4IGEgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiByYWNlCisgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiwgeW91IGNhbiB3b3JrIGFyb3VuZCBpdCBieSBjbGVhcmluZyBlaXRoZXIgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0VJTlNUJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRUlOU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd0aGUtZmFpbHVyZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlRoZSBGYWlsdXJlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdCB5b3UgYXJlIGJ1aWxkaW5nIGFuIGltYWdlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgIm5lYXJkIiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBBbmQsIGR1cmluZyB0aGUgYnVpbGQsIEJpdEJha2UgcnVucyBpbnRvIHByb2JsZW1zIGFuZAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBmb2xsb3dpbmcgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBsb2cgZmlsZSBoYXMgbG9uZ2VyIGxpbmVzIGFydGlmaWNpYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgYnJva2VuIHRvIG1ha2UgdGhlIGxpc3RpbmcgZWFzaWVyIHRvIHJlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGV4YW1pbmUgdGhlIG91dHB1dCBvciB0aGUgbG9nIGZpbGUsIHlvdSBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgZHVyaW5nIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgfCBERUJVRzogU0lURSBmaWxlcyBbJ2VuZGlhbi1saXR0bGUnLCAnYml0LTMyJywgJ2l4ODYtY29tbW9uJywgJ2NvbW1vbi1saW51eCcsICdjb21tb24tZ2xpYmMnLCAnaTU4Ni1saW51eCcsICdjb21tb24nXQorICAgICB8IERFQlVHOiBFeGVjdXRpbmcgc2hlbGwgZnVuY3Rpb24gZG9fY29tcGlsZQorICAgICB8IE5PVEU6IG1ha2UgLWogMTYKKyAgICAgfCBtYWtlIC0tbm8tcHJpbnQtZGlyZWN0b3J5IGFsbC1hbQorICAgICB8IC9iaW4vbWtkaXIgLXAgaW5jbHVkZS9uZWFyCisgICAgIHwgL2Jpbi9ta2RpciAtcCBpbmNsdWRlL25lYXIKKyAgICAgfCAvYmluL21rZGlyIC1wIGluY2x1ZGUvbmVhcgorICAgICB8IGxuIC1zIC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvbmVhcmQvCisgICAgICAgMC4xNC1yMC9uZWFyZC0wLjE0L2luY2x1ZGUvdHlwZXMuaCBpbmNsdWRlL25lYXIvdHlwZXMuaAorICAgICB8IGxuIC1zIC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvbmVhcmQvCisgICAgICAgMC4xNC1yMC9uZWFyZC0wLjE0L2luY2x1ZGUvbG9nLmggaW5jbHVkZS9uZWFyL2xvZy5oCisgICAgIHwgbG4gLXMgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXNsYXZlL25pZ2h0bHkteDg2L2J1aWxkL2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9uZWFyZC8KKyAgICAgICAwLjE0LXIwL25lYXJkLTAuMTQvaW5jbHVkZS9wbHVnaW4uaCBpbmNsdWRlL25lYXIvcGx1Z2luLmgKKyAgICAgfCAvYmluL21rZGlyIC1wIGluY2x1ZGUvbmVhcgorICAgICB8IC9iaW4vbWtkaXIgLXAgaW5jbHVkZS9uZWFyCisgICAgIHwgL2Jpbi9ta2RpciAtcCBpbmNsdWRlL25lYXIKKyAgICAgfCBsbiAtcyAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8tc2xhdmUvbmlnaHRseS14ODYvYnVpbGQvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L25lYXJkLworICAgICAgIDAuMTQtcjAvbmVhcmQtMC4xNC9pbmNsdWRlL3RhZy5oIGluY2x1ZGUvbmVhci90YWcuaAorICAgICB8IC9iaW4vbWtkaXIgLXAgaW5jbHVkZS9uZWFyCisgICAgIHwgbG4gLXMgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXNsYXZlL25pZ2h0bHkteDg2L2J1aWxkL2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9uZWFyZC8KKyAgICAgICAwLjE0LXIwL25lYXJkLTAuMTQvaW5jbHVkZS9hZGFwdGVyLmggaW5jbHVkZS9uZWFyL2FkYXB0ZXIuaAorICAgICB8IC9iaW4vbWtkaXIgLXAgaW5jbHVkZS9uZWFyCisgICAgIHwgbG4gLXMgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXNsYXZlL25pZ2h0bHkteDg2L2J1aWxkL2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9uZWFyZC8KKyAgICAgICAwLjE0LXIwL25lYXJkLTAuMTQvaW5jbHVkZS9uZGVmLmggaW5jbHVkZS9uZWFyL25kZWYuaAorICAgICB8IGxuIC1zIC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvbmVhcmQvCisgICAgICAgMC4xNC1yMC9uZWFyZC0wLjE0L2luY2x1ZGUvdGx2LmggaW5jbHVkZS9uZWFyL3Rsdi5oCisgICAgIHwgL2Jpbi9ta2RpciAtcCBpbmNsdWRlL25lYXIKKyAgICAgfCAvYmluL21rZGlyIC1wIGluY2x1ZGUvbmVhcgorICAgICB8IGxuIC1zIC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvbmVhcmQvCisgICAgICAgMC4xNC1yMC9uZWFyZC0wLjE0L2luY2x1ZGUvc2V0dGluZy5oIGluY2x1ZGUvbmVhci9zZXR0aW5nLmgKKyAgICAgfCAvYmluL21rZGlyIC1wIGluY2x1ZGUvbmVhcgorICAgICB8IC9iaW4vbWtkaXIgLXAgaW5jbHVkZS9uZWFyCisgICAgIHwgL2Jpbi9ta2RpciAtcCBpbmNsdWRlL25lYXIKKyAgICAgfCBsbiAtcyAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8tc2xhdmUvbmlnaHRseS14ODYvYnVpbGQvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L25lYXJkLworICAgICAgIDAuMTQtcjAvbmVhcmQtMC4xNC9pbmNsdWRlL2RldmljZS5oIGluY2x1ZGUvbmVhci9kZXZpY2UuaAorICAgICB8IGxuIC1zIC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvbmVhcmQvCisgICAgICAgMC4xNC1yMC9uZWFyZC0wLjE0L2luY2x1ZGUvbmZjX2NvcHkuaCBpbmNsdWRlL25lYXIvbmZjX2NvcHkuaAorICAgICB8IGxuIC1zIC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvbmVhcmQvCisgICAgICAgMC4xNC1yMC9uZWFyZC0wLjE0L2luY2x1ZGUvc25lcC5oIGluY2x1ZGUvbmVhci9zbmVwLmgKKyAgICAgfCBsbiAtcyAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8tc2xhdmUvbmlnaHRseS14ODYvYnVpbGQvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L25lYXJkLworICAgICAgIDAuMTQtcjAvbmVhcmQtMC4xNC9pbmNsdWRlL3ZlcnNpb24uaCBpbmNsdWRlL25lYXIvdmVyc2lvbi5oCisgICAgIHwgbG4gLXMgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXNsYXZlL25pZ2h0bHkteDg2L2J1aWxkL2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9uZWFyZC8KKyAgICAgICAwLjE0LXIwL25lYXJkLTAuMTQvaW5jbHVkZS9kYnVzLmggaW5jbHVkZS9uZWFyL2RidXMuaAorICAgICB8IC4vc3JjL2dlbmJ1aWx0aW4gbmZjdHlwZTEgbmZjdHlwZTIgbmZjdHlwZTMgbmZjdHlwZTQgcDJwID4gc3JjL2J1aWx0aW4uaAorICAgICB8IGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni8KKyAgICAgICBidWlsZC9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4NiAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi9pbmNsdWRlIC1JLi9zcmMgLUkuL2dkYnVzICAtSS9ob21lL3Bva3lidWlsZC8KKyAgICAgICB5b2N0by1hdXRvYnVpbGRlci95b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9nbGliLTIuMAorICAgICAgIC1JL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXNsYXZlL25pZ2h0bHkteDg2L2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy9xZW11eDg2L3Vzci8KKyAgICAgICBsaWIvZ2xpYi0yLjAvaW5jbHVkZSAgLUkvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8tc2xhdmUvbmlnaHRseS14ODYvYnVpbGQvYnVpbGQvCisgICAgICAgdG1wL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvZGJ1cy0xLjAgLUkvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8tc2xhdmUvCisgICAgICAgbmlnaHRseS14ODYvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2xpYi9kYnVzLTEuMC9pbmNsdWRlICAtSS9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci8KKyAgICAgICB5b2N0by1zbGF2ZS9uaWdodGx5LXg4Ni9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9saWJubDMKKyAgICAgICAtRE5FQVJfUExVR0lOX0JVSUxUSU4gLURQTFVHSU5ESVI9XCIiL3Vzci9saWIvbmVhci9wbHVnaW5zIlwiCisgICAgICAgLURDT05GSUdESVI9XCIiL2V0Yy9uZWFyZFwiIiAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1jCisgICAgICAgLW8gdG9vbHMvc25lcC1zZW5kLm8gdG9vbHMvc25lcC1zZW5kLmMKKyAgICAgfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gdG9vbHMvc25lcC1zZW5kLmM6MTY6MDoKKyAgICAgfCB0b29scy8uLi9zcmMvbmVhci5oOjQxOjIzOiBmYXRhbCBlcnJvcjogbmVhci9kYnVzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAgICAgfCAgI2luY2x1ZGUgJmx0O25lYXIvZGJ1cy5oJmd0OworICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICB8IGNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCisgICAgIHwgbWFrZVsxXTogKioqIFt0b29scy9zbmVwLXNlbmQub10gRXJyb3IgMQorICAgICB8IG1ha2VbMV06ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCisgICAgIHwgbWFrZTogKioqIFthbGxdIEVycm9yIDIKKyAgICAgfCBFUlJPUjogb2VfcnVubWFrZSBmYWlsZWQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcHJvZHVjaW5nLXRoZS1lcnJvcic+CisgICAgICAgICAgICAgICAgPHRpdGxlPlJlcHJvZHVjaW5nIHRoZSBFcnJvcjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSByYWNlIGNvbmRpdGlvbnMgYXJlIGludGVybWl0dGVudCwgdGhleSBkbyBub3QKKyAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgdGhlbXNlbHZlcyBldmVyeSB0aW1lIHlvdSBkbyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEluIGZhY3QsIG1vc3QgdGltZXMgdGhlIGJ1aWxkIHdpbGwgY29tcGxldGUgd2l0aG91dCBwcm9ibGVtcworICAgICAgICAgICAgICAgICAgICBldmVuIHRob3VnaCB0aGUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgb25jZSB0aGUgZXJyb3Igc3VyZmFjZXMsIHlvdSBuZWVkIGEgd2F5IHRvIHJlcHJvZHVjZQorICAgICAgICAgICAgICAgICAgICBpdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCBjb21waWxpbmcgdGhlICJuZWFyZCIgcGFja2FnZSBpcyBjYXVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBwcm9ibGVtLgorICAgICAgICAgICAgICAgICAgICBTbyB0aGUgZmlyc3QgdGhpbmcgdG8gZG8gaXMgYnVpbGQgIm5lYXJkIiBsb2NhbGx5LgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IHN0YXJ0IHRoZSBidWlsZCwgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvCisgICAgICAgICAgICAgICAgICAgIGEgaGlnaCBudW1iZXIgKGUuZy4gIi1qIDIwIikuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIGEgaGlnaCB2YWx1ZSBmb3IgPGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZXMgdGhlIGNoYW5jZXMgb2YgdGhlIHJhY2UgY29uZGl0aW9uIHNob3dpbmcgdXA6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG5lYXJkCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgbG9jYWwgYnVpbGQgZm9yICJuZWFyZCIgY29tcGxldGVzLCBzdGFydCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGJ1aWxkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBuZWFyZCAtYyBkZXZzaGVsbAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BsYXRkZXYtYXBwZGV2LWRldnNoZWxsJz5Vc2luZyBhIERldmVsb3BtZW50IFNoZWxsPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWFrZSBjbGVhbgorICAgICAkIG1ha2UgdG9vbHMvc25lcC1zZW5kLm8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gY29tbWFuZHMgY2F1c2UgdGhlIGZhaWx1cmUKKyAgICAgICAgICAgICAgICAgICAgdG8gY2xlYXJseSBiZSB2aXNpYmxlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgbWlzc2luZyBkZXBlbmRlbmN5IGV4aXN0cyBmb3IgdGhlICJuZWFyZCIKKyAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHNvbWUgYWJicmV2aWF0ZWQsIHNhbXBsZSBvdXRwdXQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBkZXBlbmRlbmN5IGNsZWFybHkgdmlzaWJsZSBhdCB0aGUgZW5kOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9ob21lL3Njb3R0LWxlbm92by8uLi4uLi4KKyAgICAgICAgLgorICAgICAgICAuCisgICAgICAgIC4KKyAgICAgdG9vbHMvc25lcC1zZW5kLmMKKyAgICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRvb2xzL3NuZXAtc2VuZC5jOjE2OjA6CisgICAgIHRvb2xzLy4uL3NyYy9uZWFyLmg6NDE6MjM6IGZhdGFsIGVycm9yOiBuZWFyL2RidXMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICAgICAgI2luY2x1ZGUgJmx0O25lYXIvZGJ1cy5oJmd0OworICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgIGNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCisgICAgIG1ha2U6ICoqKiBbdG9vbHMvc25lcC1zZW5kLm9dIEVycm9yIDEKKyAgICAgJAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1wYXRjaC1mb3ItdGhlLWZpeCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEgUGF0Y2ggZm9yIHRoZSBGaXg8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlcmUgaXMgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZm9yIHRoZSBNYWtlZmlsZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIHlvdSBuZWVkIHRvIHBhdGNoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgUXVpbHQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHF1aWx0IG5ldyBwYXJhbGxlbG1ha2UucGF0Y2gKKyAgICAgUGF0Y2ggcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2ggaXMgbm93IG9uIHRvcAorICAgICAkIHF1aWx0IGFkZCBNYWtlZmlsZS5hbQorICAgICBGaWxlIE1ha2VmaWxlLmFtIGFkZGVkIHRvIHBhdGNoIHBhdGNoZXMvcGFyYWxsZWxtYWtlLnBhdGNoCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUXVpbHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBuZWVkIHRvIG1ha2UgdGhlIGVkaXRzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IHRvIGFkZCB0aGUgbWlzc2luZworICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgICAgICBGb3Igb3VyIGV4YW1wbGUsIHlvdSBoYXZlIHRvIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgdG9vbHMvc25lcC1zZW5kLiQoT0JKRVhUKTogaW5jbHVkZS9uZWFyL2RidXMuaAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgZWRpdGVkIHRoZSBmaWxlLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWZyZXNoPC9maWxlbmFtZT4gY29tbWFuZCB0byBjcmVhdGUgdGhlIHBhdGNoOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcXVpbHQgcmVmcmVzaAorICAgICBSZWZyZXNoZWQgcGF0Y2ggcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBwYXRjaCBmaWxlIGV4aXN0cywgeW91IG5lZWQgdG8gYWRkIGl0IGJhY2sgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmF0aW5nIHJlY2lwZSBmb2xkZXIuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBhc3N1bWluZyBhIHRvcC1sZXZlbAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNwIHBhdGNoZXMvcGFyYWxsZWxtYWtlLnBhdGNoIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCB0aGluZyB5b3UgbmVlZCB0byBkbyB0byBpbXBsZW1lbnQgdGhlIGZpeCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaXMgdG8gdXBkYXRlIHRoZSAibmVhcmQiIHJlY2lwZSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVhcmQtMC4xNC5iYjwvZmlsZW5hbWU+KSBzbyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbmNsdWRlcyB0aGUgcGF0Y2ggZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBmaWxlIGlzIGluIHRoZSBmb2xkZXIgYWJvdmUgdGhlIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHdoYXQgdGhlIGVkaXRlZCA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCB3b3VsZCBsb29rIGxpa2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvbmZjLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9uZWFyZC5pbiBcCisgICAgICAgICAgICAgICAgZmlsZTovL25lYXJkLnNlcnZpY2UuaW4gXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbG1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdpdGggdGhlIHBhdGNoIGNvbXBsZXRlIGFuZCBtb3ZlZCB0byB0aGUgY29ycmVjdCBmb2xkZXIgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB1cGRhdGVkLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGV4aXQgdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZXhpdAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndGVzdGluZy10aGUtYnVpbGQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5UZXN0aW5nIHRoZSBCdWlsZDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCBldmVyeXRoaW5nIGluIHBsYWNlLCB5b3UgY2FuIGdldCBiYWNrIHRvIHRyeWluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgYWdhaW4gbG9jYWxseToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbmVhcmQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIGJ1aWxkIHNob3VsZCBzdWNjZWVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBOb3cgeW91IGNhbiBvcGVuIHVwIGEgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gYWdhaW4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHJlcGVhdCB0aGUgY2xlYW4gYW5kIG1ha2Ugb3BlcmF0aW9ucyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBuZWFyZCAtYyBkZXZzaGVsbAorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgJCBtYWtlIHRvb2xzL3NuZXAtc2VuZC5vCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHNob3VsZCB3b3JrIHdpdGhvdXQgaXNzdWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHNvbHZlZCBwcm9ibGVtcywgaWYgdGhleSBvcmlnaW5hdGVkIHVwc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBzdWJtaXQgdGhlIGZpeCBmb3IgdGhlIHJlY2lwZSBpbiBPRS1Db3JlIGFuZAorICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBzbyB0aGF0IHRoZSBwcm9ibGVtIGlzIHRha2VuIGNhcmUgb2YgYXQgaXRzCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnIj4KKyAgICAgICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBHREIgYWxsb3dzIHlvdSB0byBleGFtaW5lIHJ1bm5pbmcgcHJvZ3JhbXMsIHdoaWNoIGluIHR1cm4gaGVscHMKKyAgICAgICAgICAgICAgICB5b3UgdG8gdW5kZXJzdGFuZCBhbmQgZml4IHByb2JsZW1zLgorICAgICAgICAgICAgICAgIEl0IGFsc28gYWxsb3dzIHlvdSB0byBwZXJmb3JtIHBvc3QtbW9ydGVtIHN0eWxlIGFuYWx5c2lzIG9mCisgICAgICAgICAgICAgICAgcHJvZ3JhbSBjcmFzaGVzLgorICAgICAgICAgICAgICAgIEdEQiBpcyBhdmFpbGFibGUgYXMgYSBwYWNrYWdlIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXMKKyAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gU0RLIGltYWdlcyBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBhIGRlc2NyaXB0aW9uIG9mCisgICAgICAgICAgICAgICAgdGhlc2UgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiBHREIgYXQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiLyIvPi4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGJlc3QgcmVzdWx0cywgaW5zdGFsbCBkZWJ1ZyAoPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgZm9yIHRoZSBhcHBsaWNhdGlvbnMgeW91IGFyZSBnb2luZyB0byBkZWJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gbWFrZXMgZXh0cmEgZGVidWcgc3ltYm9scyBhdmFpbGFibGUgdGhhdCBnaXZlIHlvdQorICAgICAgICAgICAgICAgICAgICBtb3JlIG1lYW5pbmdmdWwgb3V0cHV0LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzLCBkdWUgdG8gbWVtb3J5IG9yIGRpc2sgc3BhY2UgY29uc3RyYWludHMsIGl0IGlzIG5vdAorICAgICAgICAgICAgICAgIHBvc3NpYmxlIHRvIHVzZSBHREIgZGlyZWN0bHkgb24gdGhlIHJlbW90ZSB0YXJnZXQgdG8gZGVidWcKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMuCisgICAgICAgICAgICAgICAgVGhlc2UgY29uc3RyYWludHMgYXJpc2UgYmVjYXVzZSBHREIgbmVlZHMgdG8gbG9hZCB0aGUgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYW5kIHRoZSBiaW5hcmllcyBvZiB0aGUgcHJvY2VzcyBiZWluZyBkZWJ1Z2dlZC4KKyAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIEdEQiBuZWVkcyB0byBwZXJmb3JtIG1hbnkgY29tcHV0YXRpb25zIHRvIGxvY2F0ZQorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIHN1Y2ggYXMgZnVuY3Rpb24gbmFtZXMsIHZhcmlhYmxlIG5hbWVzIGFuZCB2YWx1ZXMsCisgICAgICAgICAgICAgICAgc3RhY2sgdHJhY2VzIGFuZCBzbyBmb3J0aCAtIGV2ZW4gYmVmb3JlIHN0YXJ0aW5nIHRoZSBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFRoZXNlIGV4dHJhIGNvbXB1dGF0aW9ucyBwbGFjZSBtb3JlIGxvYWQgb24gdGhlIHRhcmdldCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBhbmQgY2FuIGFsdGVyIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGhlbHAgZ2V0IHBhc3QgdGhlIHByZXZpb3VzbHkgbWVudGlvbmVkIGNvbnN0cmFpbnRzLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgdXNlIGdkYnNlcnZlciwgd2hpY2ggcnVucyBvbiB0aGUgcmVtb3RlIHRhcmdldCBhbmQgZG9lcyBub3QKKyAgICAgICAgICAgICAgICBsb2FkIGFueSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGVidWdnZWQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBJbnN0ZWFkLCBhIEdEQiBpbnN0YW5jZSBwcm9jZXNzZXMgdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgaXMgcnVuIG9uIGEgcmVtb3RlIGNvbXB1dGVyIC0gdGhlIGhvc3QgR0RCLgorICAgICAgICAgICAgICAgIFRoZSBob3N0IEdEQiB0aGVuIHNlbmRzIGNvbnRyb2wgY29tbWFuZHMgdG8gZ2Ric2VydmVyIHRvIG1ha2UKKyAgICAgICAgICAgICAgICBpdCBzdG9wIG9yIHN0YXJ0IHRoZSBkZWJ1Z2dlZCBwcm9ncmFtLCBhcyB3ZWxsIGFzIHJlYWQgb3Igd3JpdGUKKyAgICAgICAgICAgICAgICBtZW1vcnkgcmVnaW9ucyBvZiB0aGF0IGRlYnVnZ2VkIHByb2dyYW0uCisgICAgICAgICAgICAgICAgQWxsIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gbG9hZGVkIGFuZCBwcm9jZXNzZWQgYXMgd2VsbAorICAgICAgICAgICAgICAgYXMgYWxsIHRoZSBoZWF2eSBkZWJ1Z2dpbmcgaXMgZG9uZSBieSB0aGUgaG9zdCBHREIuCisgICAgICAgICAgICAgICAgT2ZmbG9hZGluZyB0aGVzZSBwcm9jZXNzZXMgZ2l2ZXMgdGhlIGdkYnNlcnZlciBydW5uaW5nIG9uIHRoZQorICAgICAgICAgICAgICAgIHRhcmdldCBhIGNoYW5jZSB0byByZW1haW4gc21hbGwgYW5kIGZhc3QuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIGhvc3QgR0RCIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhbmQgZm9yIGRvaW5nIHRoZSBuZWNlc3NhcnkgcHJvY2Vzc2luZyB0byBtYWtlCisgICAgICAgICAgICAgICAgYWN0dWFsIGRlYnVnZ2luZyBoYXBwZW4sIHlvdSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgaG9zdCBjYW4KKyAgICAgICAgICAgICAgICBhY2Nlc3MgdGhlIHVuc3RyaXBwZWQgYmluYXJpZXMgY29tcGxldGUgd2l0aCB0aGVpciBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhbmQgYWxzbyBiZSBzdXJlIHRoZSB0YXJnZXQgaXMgY29tcGlsZWQgd2l0aCBubworICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbnMuCisgICAgICAgICAgICAgICAgVGhlIGhvc3QgR0RCIG11c3QgYWxzbyBoYXZlIGxvY2FsIGFjY2VzcyB0byBhbGwgdGhlIGxpYnJhcmllcworICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VkIHByb2dyYW0uCisgICAgICAgICAgICAgICAgQmVjYXVzZSBnZGJzZXJ2ZXIgZG9lcyBub3QgbmVlZCBhbnkgbG9jYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgIHRoZSBiaW5hcmllcyBvbiB0aGUgcmVtb3RlIHRhcmdldCBjYW4gcmVtYWluIHN0cmlwcGVkLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBiaW5hcmllcyBtdXN0IGFsc28gYmUgY29tcGlsZWQgd2l0aG91dCBvcHRpbWl6YXRpb24KKyAgICAgICAgICAgICAgICBzbyB0aGV5IG1hdGNoIHRoZSBob3N0J3MgYmluYXJpZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHJlbWFpbiBjb25zaXN0ZW50IHdpdGggR0RCIGRvY3VtZW50YXRpb24gYW5kIHRlcm1pbm9sb2d5LAorICAgICAgICAgICAgICAgIHRoZSBiaW5hcnkgYmVpbmcgZGVidWdnZWQgb24gdGhlIHJlbW90ZSB0YXJnZXQgbWFjaGluZSBpcworICAgICAgICAgICAgICAgIHJlZmVycmVkIHRvIGFzIHRoZSAiaW5mZXJpb3IiIGJpbmFyeS4KKyAgICAgICAgICAgICAgICBGb3IgZG9jdW1lbnRhdGlvbiBvbiBHREIgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvZG9jdW1lbnRhdGlvbi8iPkdEQiBzaXRlPC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgc2hvdyB5b3UgaG93IHRvIGRlYnVnIHVzaW5nIHRoZSBHTlUgcHJvamVjdAorICAgICAgICAgICAgICAgIGRlYnVnZ2VyLgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyZSB5b3VyIGJ1aWxkIHN5c3RlbSB0byBjb25zdHJ1Y3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW5pb24gZGVidWcgZmlsZXN5c3RlbTo8L2VtcGhhc2lzPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfR0VOX0RFQlVHRlMgPSAiMSIKKyAgICAgSU1BR0VfRlNUWVBFU19ERUJVR0ZTID0gInRhci5iejIiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBvcHRpb25zIGNhdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBhIHNwZWNpYWwgY29tcGFuaW9uIGZpbGVzeXN0ZW0gZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBjb250YWlucyB0aGUgbWF0Y2hpbmcgc291cmNlIGFuZCBkZWJ1ZyBzeW1ib2xzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGRlcGxveWFibGUgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZG9lcyB0aGlzIGJ5IGxvb2tpbmcgYXQgd2hhdCBpcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxveWVkIGZpbGVzeXN0ZW0sIGFuZCBwdWxsaW5nIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+IHBhY2thZ2VzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGNvbXBhbmlvbiBkZWJ1ZyBmaWxlc3lzdGVtIGlzIG5vdCBhIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLCBidXQgb25seSBjb250YWlucyB0aGUgZGVidWcgZnJhZ21lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlc3lzdGVtIG11c3QgYmUgY29tYmluZWQgd2l0aCB0aGUgZnVsbCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGVidWdnaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCBzdGVwcyBpbiB0aGlzIHByb2NlZHVyZSBzaG93IGhvdyB0byBjb21iaW5lCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFydGlhbCBmaWxlc3lzdGVtIHdpdGggdGhlIGZ1bGwgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJlIHRoZSBzeXN0ZW0gdG8gaW5jbHVkZSBnZGJzZXJ2ZXIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgZmlsZXN5c3RlbTo8L2VtcGhhc2lzPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+TWFrZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uIGluIGVpdGhlciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3IgaW4gYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGdkYnNlcnZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgbWFrZXMgc3VyZSB0aGUgPGZpbGVuYW1lPmdkYnNlcnZlcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGlzIGluY2x1ZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgZW52aXJvbm1lbnQ6PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gY29uc3RydWN0IHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBjb21wYW5pb24gRGVidWcgRmlsZXN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgY3Jvc3MgR0RCIGNvbXBvbmVudCBhbmQgbWFrZSBpdCBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgU0RLIHRoYXQgbWF0Y2hlcyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyB0aGUgU0RLIGlzIGJlc3QgZm9yIGEgcHJvZHVjdGlvbiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBsYXRlciBmb3IgZGVidWdnaW5nLCBlc3BlY2lhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgbG9uZyB0ZXJtIG1haW50ZW5hbmNlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGJ1aWxkIHRoZSBtaW5pbWFsCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gY29tcG9uZW50cyB0aGF0IG1hdGNoIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGEgc21hbGxlciB0aGFuIHR5cGljYWwgU0RLIGFuZCBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIG1pbmltYWwgc2V0IG9mIGNvbXBvbmVudHMgd2l0aCB3aGljaCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2ltcGxlIHRlc3QgYXBwbGljYXRpb25zLCBhcyB3ZWxsIGFzIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWV0YS10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgZmluYWwgbWV0aG9kIGlzIHRvIGJ1aWxkIEdkYiBpdHNlbGYgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgZ2RiLWNyb3NzLTxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gcHJvZHVjZXMgYSB0ZW1wb3JhcnkgY29weSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzLWdkYjwvZmlsZW5hbWU+IHlvdSBjYW4gdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIGR1cmluZyBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgaXMgdGhlIHF1aWNrZXN0IGFwcHJvYWNoLCB0aGUgdHdvIHByZXZpb3VzCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RzIGluIHRoaXMgc3RlcCBhcmUgYmV0dGVyIHdoZW4gY29uc2lkZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvbmctdGVybSBtYWludGVuYW5jZSBzdHJhdGVnaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIGdkYi1jcm9zczwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN1Z2dlc3RzIHRoZSBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSAoZS5nLiA8ZmlsZW5hbWU+Z2RiLWNyb3NzLWk1ODY8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN1Z2dlc3Rpb24gaXMgdXN1YWxseSB0aGUgYWN0dWFsIG5hbWUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGU8L2VtcGhhc2lzPiZuYnNwOzxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWtkaXIgZGVidWdmcworICAgICAkIGNkIGRlYnVnZnMKKyAgICAgJCB0YXIgeHZmaiA8cmVwbGFjZWFibGU+YnVpbGQtZGlyPC9yZXBsYWNlYWJsZT4vdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi5yb290ZnMudGFyLmJ6MgorICAgICAkIHRhciB4dmZqIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LWRiZy5yb290ZnMudGFyLmJ6MgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgR0RCPC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluc3RhbGwgdGhlIFNESyAoaWYgeW91IGJ1aWx0IG9uZSkgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNpbmcgdGhlIGVudmlyb25tZW50IGZpbGUgcHV0cyB0aGUgU0RLIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0sIEdkYiBpcworICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1aWxkLWRpcjwvcmVwbGFjZWFibGU+L3RtcC9zeXNyb290cy88cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+L3Vzci9iaW4vPHJlcGxhY2VhYmxlPmFyY2hpdGVjdHVyZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPi1nZGIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdCB0aGUgdGFyZ2V0OjwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBRRU1VLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9Eb2N1bWVudGF0aW9uL0dldHRpbmdTdGFydGVkRGV2ZWxvcGVycyc+UUVNVSBEb2N1bWVudGF0aW9uPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHlvdXIgaG9zdCBjYW4gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCB2aWEgVENQLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZWJ1ZyBhIHByb2dyYW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlYnVnZ2luZyBhIHByb2dyYW0gaW52b2x2ZXMgcnVubmluZyBnZGJzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgYW5kIHRoZW4gcnVubmluZyBHZGIgb24gdGhlIGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBpbiB0aGlzIHN0ZXAgZGVidWdzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3ppcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHFlbXV4ODY6fiMgZ2Ric2VydmVyIGxvY2FsaG9zdDoxMjM0IC9iaW4vZ3ppcCDigJRoZWxwCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBnZGJzZXJ2ZXIgb3B0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvZG9jdW1lbnRhdGlvbi8nPkdEQiBTZXJ2ZXIgRG9jdW1lbnRhdGlvbjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBydW5uaW5nIGdkYnNlcnZlciBvbiB0aGUgdGFyZ2V0LCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcnVuIEdkYiBvbiB0aGUgaG9zdCBhbmQgY29uZmlndXJlIGl0IGFuZCBjb25uZWN0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIDxyZXBsYWNlYWJsZT5kaXJlY3RvcnktaG9sZGluZy10aGUtZGVidWdmcy1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tZ2RiCisKKyAgICAgKGdkYikgc2V0IHN5c3Jvb3QgZGVidWdmcworICAgICAoZ2RiKSBzZXQgc3Vic3RpdHV0ZS1wYXRoIC91c3Ivc3JjL2RlYnVnIGRlYnVnZnMvdXNyL3NyYy9kZWJ1ZworICAgICAoZ2RiKSB0YXJnZXQgcmVtb3RlIDxyZXBsYWNlYWJsZT5JUC1vZi10YXJnZXQ8L3JlcGxhY2VhYmxlPjoxMjM0CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCBldmVyeXRoaW5nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIG1hdGNoaW5nIGJpbmFyaWVzLCBzeW1ib2xzIGFuZCBoZWFkZXJzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBHZGIgPGZpbGVuYW1lPnNldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUgY2FuIGJlIHBsYWNlZCBpbnRvIHRoZSB1c2VycworICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vLmdkYmluaXQ8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwb24gc3RhcnRpbmcsIEdkYiBhdXRvbWF0aWNhbGx5IHJ1bnMgd2hhdGV2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyBhcmUgaW4gdGhhdCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3lpbmcgd2l0aG91dCBhIGZ1bGwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYnVpbGQ6PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIG1hbnkgY2FzZXMsIGR1cmluZyBkZXZlbG9wbWVudCB5b3Ugd2FudCBhCisgICAgICAgICAgICAgICAgICAgICAgICBxdWljayBtZXRob2QgdG8gZGVwbG95IGEgbmV3IGJpbmFyeSB0byB0aGUgdGFyZ2V0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcgaXQsIHdpdGhvdXQgd2FpdGluZyBmb3IgYSBmdWxsIGltYWdlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgYXBwcm9hY2ggdG8gc29sdmluZyB0aGlzIHNpdHVhdGlvbiBpcyB0bworICAgICAgICAgICAgICAgICAgICAgICAganVzdCBidWlsZCB0aGUgY29tcG9uZW50IHlvdSB3YW50IHRvIGRlYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBidWlsdCB0aGUgY29tcG9uZW50LCBjb3B5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSBkaXJlY3RseSB0byBib3RoIHRoZSB0YXJnZXQgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA8ZmlsZW5hbWU+ZGVidWdmczwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgdGhlIGJpbmFyeSBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0dGluZyBpbiBPcGVuRW1iZWRkZWQsIHlvdSBzaG91bGQgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgY29weSB0aGUgZGVidWcgaXRlbXMgKGkuZS4gPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhbmQgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc3JjL2RlYnVnPC9maWxlbmFtZT4gZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGJhc2gKKyAgICAgJCBiaXRiYWtlIC1jIGRldnNoZWxsIGJhc2gKKyAgICAgJCBjZCAuLgorICAgICAkIHNjcCBwYWNrYWdlcy1zcGxpdC9iYXNoL2Jpbi9iYXNoIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPjovYmluL2Jhc2gKKyAgICAgJCBjcCAtYSBwYWNrYWdlcy1zcGxpdC9iYXNoLWRiZy8qIDxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4vZGVidWdmcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZWJ1Z2dpbmctd2l0aC10aGUtZ251LXByb2plY3QtZGVidWdnZXItZ2RiLW9uLXRoZS10YXJnZXQnPgorICAgICAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyB3aXRoIHRoZSBHTlUgUHJvamVjdCBEZWJ1Z2dlciAoR0RCKSBvbiB0aGUgVGFyZ2V0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHNlY3Rpb24gYWRkcmVzc2VkIHVzaW5nIEdEQiByZW1vdGVseSBmb3IgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgcHVycG9zZXMsIHdoaWNoIGlzIHRoZSBtb3N0IHVzdWFsIGNhc2UgZHVlIHRvIHRoZSBpbmhlcmVudAorICAgICAgICAgICAgICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIG1hbnkgZW1iZWRkZWQgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBkZWJ1Z2dpbmcgaW4gdGhlIHRhcmdldCBoYXJkd2FyZSBpdHNlbGYgaXMgYWxzbworICAgICAgICAgICAgICAgIHBvc3NpYmxlIHdpdGggbW9yZSBwb3dlcmZ1bCBkZXZpY2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyBpbiBvcmRlciB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgdXNpbmcgR0RCIHRvIGRlYnVnIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN1cHBvcnQgdGhpcyBraW5kIG9mIGRlYnVnZ2luZywgeW91IG5lZWQgZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhhdCBHREIgaXMgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZG8gdGhpcyBieSBhZGRpbmcgImdkYiIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBnZGIiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFkZCAidG9vbHMtZGVidWciIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgdG9vbHMtZGVidWciCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHRoYXQgZGVidWcgc3ltYm9scyBhcmUgcHJlc2VudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZXNlIHN5bWJvbHMgYXJlIHByZXNlbnQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIDxyZXBsYWNlYWJsZT5wYWNrYWdlbmFtZTwvcmVwbGFjZWFibGU+LWRiZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZyB0byBpbmNsdWRlIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlYnVnIHN5bWJvbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZGJnLXBrZ3MiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW1wcm92ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gYWNjdXJhY3ksIHlvdSBjYW4gcmVkdWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSBsZXZlbCBvZiBvcHRpbWl6YXRpb24gdXNlZCBieSB0aGUgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIGFkZGluZyB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdSB3aWxsIHJlZHVjZQorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRlVMTF9PUFRJTUlaQVRJT04nPjxmaWxlbmFtZT5GVUxMX09QVElNSVpBVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgIi1PMiIgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFQlVHX09QVElNSVpBVElPTic+PGZpbGVuYW1lPkRFQlVHX09QVElNSVpBVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgIi1PIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERUJVR19CVUlMRCA9ICIxIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoYXQgdGhpcyB3aWxsIHJlZHVjZSB0aGUgYXBwbGljYXRpb24ncyBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgICAgICBhbmQgaXMgcmVjb21tZW5kZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtb3RoZXItZGVidWdnaW5nLW90aGVycyc+CisgICAgICAgICAgICA8dGl0bGU+T3RoZXIgRGVidWdnaW5nIFRpcHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIG90aGVyIHRpcHMgdGhhdCB5b3UgbWlnaHQgZmluZCB1c2VmdWw6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBhZGRpbmcgbmV3IHBhY2thZ2VzLCBpdCBpcyB3b3J0aCB3YXRjaGluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlIGl0ZW1zIG1ha2luZyB0aGVpciB3YXkgaW50byBjb21waWxlciBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgZG8gbm90IHdhbnQgcmVmZXJlbmNlcyB0byBsb2NhbCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYi88L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byByZW1vdmUgdGhlIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Qgc3BsYXNoc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIDxmaWxlbmFtZT5wc3BsYXNoPWZhbHNlPC9maWxlbmFtZT4gdG8gIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHByZXZlbnRzIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZyBhbmQgdGh1cyBhbGxvd3MgeW91IHRvIHNlZSB0aGUgY29uc29sZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3dpdGNoIG91dCBvZiB0aGUgc3BsYXNoc2NyZWVuIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmcgdGhlIHZpcnR1YWwgY29uc29sZSAoZS5nLiBGbitMZWZ0IG9yIEZuK1JpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBvbiBhIFphdXJ1cykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+dG1wLzwvZmlsZW5hbWU+LCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIG9mdGVuIGZpeCB0ZW1wb3JhcnkgYnVpbGQgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVseSBjaGVhcCBvcGVyYXRpb24sIGJlY2F1c2UgdGFzayBvdXRwdXQgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+c3N0YXRlLWNhY2hlLzwvZmlsZW5hbWU+LCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBtaWdodCBiZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Fyb3VuZCByYXRoZXIgdGhhbiBhIGZpeC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSBvZiBhbiBpc3N1ZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZ29vZCBpZGVhLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgaG93IGEgZmVhdHVyZSBpcyB1c2VkIGluIHByYWN0aWNlIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVjaXBlcyBjYW4gYmUgdmVyeSBoZWxwZnVsLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY29uZmlndXJlIHNvbWUgbWV0aG9kIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gcXVpY2tseSBzZWFyY2ggdGhyb3VnaCBmaWxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIEdOVSBHcmVwLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZWN1cnNpdmVseSBzZWFyY2ggdGhyb3VnaCBjb21tb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS1yZWxhdGVkIGZpbGVzLCBza2lwcGluZyBiaW5hcnkgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkgKGFzc3VtaW5nIGl0cyBuYW1lIHN0YXJ0cyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZygpIHsKKyAgICAgICAgIGdyZXAgLUlyIFwKKyAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0uZ2l0IFwKKyAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0nYnVpbGQqJyBcCisgICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5iYionIFwKKyAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmluYyonIFwKKyAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmNvbmYqJyBcCisgICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5weSonIFwKKyAgICAgICAgICAgICAgIiRAIgorICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgdXNhZ2UgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZyBGT08gICAgIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iCisgICAgICQgZyAtaSBmb28gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJmb28iLCBpZ25vcmluZyBjYXNlCisgICAgICQgZyAtdyBGT08gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iIGFzIGEgd29yZCwgaWdub3JpbmcgZS5nLiAiRk9PQkFSIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgZmlndXJpbmcgb3V0IGhvdyBzb21lIGZlYXR1cmUgd29ya3MgcmVxdWlyZXMgYSBsb3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZywgaXQgbWlnaHQgaW5kaWNhdGUgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dGVuZGVkIG9yIGltcHJvdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gc3VjaCBjYXNlcywgY29uc2lkZXIgZmlsaW5nIGEgZG9jdW1lbnRhdGlvbiBidWcgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvJz5CdWd6aWxsYTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzdWJtaXQgYSBidWcgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+d2lraSBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1hbnVhbHMgbWlnaHQgbm90IGJlIHRoZSByaWdodCBwbGFjZSB0byBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBwdXJlbHkgaW50ZXJuYWwgYW5kIGhhdmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZWQgc2NvcGUgKGUuZy4gaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgYSBzaW5nbGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21ha2luZy1jaGFuZ2VzLXRvLXRoZS15b2N0by1wcm9qZWN0Jz4KKyAgICAgICAgPHRpdGxlPk1ha2luZyBDaGFuZ2VzIHRvIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIFlvY3RvIFByb2plY3QgaXMgYW4gb3Blbi1zb3VyY2UsIGNvbW11bml0eS1iYXNlZAorICAgICAgICAgICAgcHJvamVjdCwgeW91IGNhbiBlZmZlY3QgY2hhbmdlcyB0byB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBwcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHN1Ym1pdAorICAgICAgICAgICAgYSBkZWZlY3QgYWdhaW5zdCB0aGUgcHJvamVjdCBhbmQgaG93IHRvIHN1Ym1pdCBhIGNoYW5nZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPgorICAgICAgICAgICAgPHRpdGxlPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVzZSB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuYnVnemlsbGEub3JnL2Fib3V0Lyc+QnVnemlsbGE8L3VsaW5rPgorICAgICAgICAgICAgICAgIHRvIHN1Ym1pdCBhIGRlZmVjdCAoYnVnKSBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgQnVnemlsbGEgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtYnVndHJhY2tlcic+WW9jdG8gUHJvamVjdCBCdWd6aWxsYTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWwgb24gYW55IG9mIHRoZSBmb2xsb3dpbmcgc3RlcHMsIHNlZSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPkJ1Z3ppbGxhIHdpa2kgcGFnZTwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0ZXBzIHRvIHN1Ym1pdCBhIGJ1ZyIKKworICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbiB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbGUgYSBCdWciIHRvIGVudGVyIGEgbmV3IGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFwcHJvcHJpYXRlICJDbGFzc2lmaWNhdGlvbiIsICJQcm9kdWN0IiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcG9uZW50IiBmb3Igd2hpY2ggdGhlIGJ1ZyB3YXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWdzIGZvciB0aGUgWW9jdG8gUHJvamVjdCBmYWxsIGludG8gb25lIG9mIHNldmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9ucywgd2hpY2ggaW4gdHVybiBicmVhayBkb3duIGludG8gc2V2ZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHMgYW5kIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIGEgYnVnIGFnYWluc3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLCB5b3Ugd291bGQgY2hvb3NlCisgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbGQgU3lzdGVtLCBNZXRhZGF0YSAmYW1wOyBSdW50aW1lIiwgIkJTUHMiLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICJic3BzLW1ldGEtaW50ZWwiLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiVmVyc2lvbiIgb2YgdGhlIFlvY3RvIFByb2plY3QgZm9yIHdoaWNoIHlvdSBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1ZyAoZS5nLiAmRElTVFJPOykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGFuZCBzZWxlY3QgdGhlICJTZXZlcml0eSIgb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzZXZlcml0eSBpbmRpY2F0ZXMgaG93IHRoZSBidWcgaW1wYWN0ZWQgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSB0aGUgIkhhcmR3YXJlIiB0aGF0IHRoZSBidWcgaW1wYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJBcmNoaXRlY3R1cmUiIHRoYXQgdGhlIGJ1ZyBpbXBhY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSBhICJEb2N1bWVudGF0aW9uIGNoYW5nZSIgaXRlbSBmb3IgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpeGluZyBhIGJ1ZyBtaWdodCBvciBtaWdodCBub3QgYWZmZWN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bnN1cmUgb2YgdGhlIGltcGFjdCB0byB0aGUgZG9jdW1lbnRhdGlvbiwgc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAiRG9uJ3QgS25vdyIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGJyaWVmICJTdW1tYXJ5IiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIGxpbWl0IHlvdXIgc3VtbWFyeSB0byBqdXN0IGEgbGluZSBvciB0d28gYW5kIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhcHR1cmUgdGhlIGVzc2VuY2Ugb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgZGV0YWlsZWQgIkRlc2NyaXB0aW9uIiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gYWJvdXQgdGhlIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvciwgb3V0cHV0LCBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZXZlbiBhdHRhY2ggc3VwcG9ydGluZyBmaWxlcyBmb3Igb3V0cHV0IGZyb20gbG9ncyBieQorICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlICJBZGQgYW4gYXR0YWNobWVudCIgYnV0dG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiU3VibWl0IEJ1ZyIgYnV0dG9uIHN1Ym1pdCB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBuZXcgQnVnemlsbGEgbnVtYmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBidWcgYW5kIHRoZSBkZWZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxvZ2dlZCBpbiB0aGUgYnVnIHRyYWNraW5nIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgZmlsZSBhIGJ1ZywgdGhlIGJ1ZyBpcyBwcm9jZXNzZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgQnVnCisgICAgICAgICAgICAgICAgVHJpYWdlIFRlYW0gYW5kIGZ1cnRoZXIgZGV0YWlscyBjb25jZXJuaW5nIHRoZSBidWcgYXJlIGFzc2lnbmVkCisgICAgICAgICAgICAgICAgKGUuZy4gcHJpb3JpdHkgYW5kIG93bmVyKS4KKyAgICAgICAgICAgICAgICBZb3UgYXJlIHRoZSAiU3VibWl0dGVyIiBvZiB0aGUgYnVnIGFuZCBhbnkgZnVydGhlciBjYXRlZ29yaXphdGlvbiwKKyAgICAgICAgICAgICAgICBwcm9ncmVzcywgb3IgY29tbWVudHMgb24gdGhlIGJ1ZyByZXN1bHQgaW4gQnVnemlsbGEgc2VuZGluZyB5b3UgYW4KKyAgICAgICAgICAgICAgICBhdXRvbWF0ZWQgZW1haWwgY29uY2VybmluZyB0aGUgcGFydGljdWxhciBjaGFuZ2Ugb3IgcHJvZ3Jlc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgYnVnLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPgorICAgICAgICAgICAgPHRpdGxlPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDb250cmlidXRpb25zIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBPcGVuRW1iZWRkZWQgYXJlIHZlcnkgd2VsY29tZS4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzeXN0ZW0gaXMgZXh0cmVtZWx5IGNvbmZpZ3VyYWJsZSBhbmQgZmxleGlibGUsIHdlIHJlY29nbml6ZQorICAgICAgICAgICAgICAgIHRoYXQgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gZXh0ZW5kLCBjb25maWd1cmUgb3Igb3B0aW1pemUgaXQgZm9yCisgICAgICAgICAgICAgICAgdGhlaXIgc3BlY2lmaWMgdXNlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIG1haWxpbmcgbGlzdCBhbmQgYSBwYXRjaC1iYXNlZCB3b3JrZmxvdworICAgICAgICAgICAgICAgIHRoYXQgaXMgc2ltaWxhciB0byB0aGUgTGludXgga2VybmVsIGJ1dCBjb250YWlucyBpbXBvcnRhbnQKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcy4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIG1haWxpbmcgbGlzdCBleGlzdHMgdGhyb3VnaCB3aGljaCB5b3UgY2FuIHN1Ym1pdAorICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKKyAgICAgICAgICAgICAgICBjYW4gYmUgcmV2aWV3ZWQgYW5kIG1lcmdlZCBieSB0aGUgYXBwcm9wcmlhdGUgbWFpbnRhaW5lci4KKyAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWMgbWFpbGluZyBsaXN0IHlvdSBuZWVkIHRvIHVzZSBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCisgICAgICAgICAgICAgICAgRWFjaCBjb21wb25lbnQgKGUuZy4gbGF5ZXIpIHNob3VsZCBoYXZlIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSB0aGF0IGluZGljYXRlcyB3aGVyZSB0byBzZW5kCisgICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlbmQgdGhlIHBhdGNoIHRvIHRoZSBtYWlsaW5nIGxpc3QgdXNpbmcgd2hpY2hldmVyIGFwcHJvYWNoCisgICAgICAgICAgICAgICAgeW91IGZlZWwgY29tZm9ydGFibGUgd2l0aCB0byBnZW5lcmF0ZSB0aGUgcGF0Y2guCisgICAgICAgICAgICAgICAgT25jZSBzZW50LCB0aGUgcGF0Y2ggaXMgdXN1YWxseSByZXZpZXdlZCBieSB0aGUgY29tbXVuaXR5IGF0IGxhcmdlLgorICAgICAgICAgICAgICAgIElmIHNvbWVib2R5IGhhcyBjb25jZXJucyB3aXRoIHRoZSBwYXRjaCwgdGhleSB3aWxsIHVzdWFsbHkgdm9pY2UKKyAgICAgICAgICAgICAgICB0aGVpciBjb25jZXJuIG92ZXIgdGhlIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICBJZiBhIHBhdGNoIGRvZXMgbm90IHJlY2VpdmUgYW55IG5lZ2F0aXZlIHJldmlld3MsIHRoZSBtYWludGFpbmVyIG9mCisgICAgICAgICAgICAgICAgdGhlIGFmZmVjdGVkIGxheWVyIHR5cGljYWxseSB0YWtlcyB0aGUgcGF0Y2gsIHRlc3RzIGl0LCBhbmQgdGhlbgorICAgICAgICAgICAgICAgIGJhc2VkIG9uIHN1Y2Nlc3NmdWwgdGVzdGluZywgbWVyZ2VzIHRoZSBwYXRjaC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmEgaWQ9J2ZpZ3VyaW5nLW91dC10aGUtbWFpbGluZy1saXN0LXRvLXVzZSc+CisgICAgICAgICAgICAgICAgVGhlICJwb2t5IiByZXBvc2l0b3J5LCB3aGljaCBpcyB0aGUgWW9jdG8gUHJvamVjdCdzIHJlZmVyZW5jZSBidWlsZAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBpcyBhIGh5YnJpZCByZXBvc2l0b3J5IHRoYXQgY29udGFpbnMgc2V2ZXJhbAorICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgcGllY2VzIChlLmcuIEJpdEJha2UsIE1ldGFkYXRhLCBkb2N1bWVudGF0aW9uLAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkgYnVpbHQgdXNpbmcgdGhlIGNvbWJvLWxheWVyIHRvb2wuCisgICAgICAgICAgICAgICAgVGhlIHVwc3RyZWFtIGxvY2F0aW9uIHVzZWQgZm9yIHN1Ym1pdHRpbmcgY2hhbmdlcyB2YXJpZXMgYnkKKyAgICAgICAgICAgICAgICBjb21wb25lbnQ6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcmUgTWV0YWRhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgeW91ciBwYXRjaCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vb3BlbmVtYmVkZGVkLWNvcmUnPm9wZW5lbWJlZGRlZC1jb3JlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4gIEZvciBleGFtcGxlLCBhIGNoYW5nZSB0byBhbnl0aGluZyB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgc2hvdWxkIGJlIHNlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoaXMgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgY2hhbmdlcyB0byBCaXRCYWtlIChpLmUuIGFueXRoaW5nIHVuZGVyIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBkaXJlY3RvcnkpLCBzZW5kIHlvdXIgcGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9iaXRiYWtlLWRldmVsJz5iaXRiYWtlLWRldmVsPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1ldGEtKiIgdHJlZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHRyZWVzIGNvbnRhaW4gTWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8vcG9reSc+cG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGNoYW5nZXMgdG8gb3RoZXIgbGF5ZXJzIGhvc3RlZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMgKGkuZS4gPGZpbGVuYW1lPnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiksIHRvb2xzLAorICAgICAgICAgICAgICAgIGFuZCB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL2xpc3RpbmZvL3lvY3RvJz5Zb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgICAgICBnZW5lcmFsIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGEgbGF5ZXIncyBkb2N1bWVudGF0aW9uIHNwZWNpZmllcyB0byB1c2UgYQorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgSWYgc28sIHVzZSB0aGF0IGxpc3QuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIHJlY2lwZXMgdGhhdCBkbyBub3QgZml0IGludG8gdGhlIGNvcmUgTWV0YWRhdGEsIHlvdQorICAgICAgICAgICAgICAgIHNob3VsZCBkZXRlcm1pbmUgd2hpY2ggbGF5ZXIgdGhlIHJlY2lwZSBzaG91bGQgZ28gaW50byBhbmQgc3VibWl0CisgICAgICAgICAgICAgICAgdGhlIGNoYW5nZSBpbiB0aGUgbWFubmVyIHJlY29tbWVuZGVkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIChlLmcuCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlKSBzdXBwbGllZCB3aXRoIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICBJZiBpbiBkb3VidCwgcGxlYXNlIGFzayBvbiB0aGUgWW9jdG8gZ2VuZXJhbCBtYWlsaW5nIGxpc3Qgb3Igb24KKyAgICAgICAgICAgICAgICB0aGUgb3BlbmVtYmVkZGVkLWRldmVsIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHB1c2ggYSBjaGFuZ2UgdXBzdHJlYW0gYW5kIHJlcXVlc3QgYSBtYWludGFpbmVyIHRvCisgICAgICAgICAgICAgICAgcHVsbCB0aGUgY2hhbmdlIGludG8gdGhlIGNvbXBvbmVudCdzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgWW91IGRvIHRoaXMgYnkgcHVzaGluZyB0byBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5IHRoYXQgaXMgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dzLWdpdC13b3JrZmxvd3MtYW5kLXRoZS15b2N0by1wcm9qZWN0Jz5HaXQgV29ya2Zsb3dzIGFuZCB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgIGNvbmNlcHRzIG9uIHdvcmtpbmcgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFR3byBjb21tb25seSB1c2VkIHRlc3RpbmcgcmVwb3NpdG9yaWVzIGV4aXN0IGZvcgorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4icm9zcy9tdXQiIGJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlICJtdXQiIChtYXN0ZXItdW5kZXItdGVzdCkgdHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4gcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPllvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWFzdGVyLW5leHQiIGJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBicmFuY2ggaXMgcGFydCBvZiB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiIHJlcG9zaXRvcnkgaW4gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIE1haW50YWluZXJzIHVzZSB0aGVzZSBicmFuY2hlcyB0byB0ZXN0IHN1Ym1pc3Npb25zIHByaW9yIHRvIG1lcmdpbmcKKyAgICAgICAgICAgICAgICBwYXRjaGVzLgorICAgICAgICAgICAgICAgIFRodXMsIHlvdSBjYW4gZ2V0IGFuIGlkZWEgb2YgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgd2hldGhlciB0aGUgcGF0Y2ggaGFzIGJlZW4gbWVyZ2VkIGludG8gb25lIG9mIHRoZXNlIGJyYW5jaGVzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN5c3RlbSBpcyBpbXBlcmZlY3QgYW5kIGNoYW5nZXMgY2FuIHNvbWV0aW1lcyBnZXQgbG9zdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgQXNraW5nIGFib3V0IHRoZSBzdGF0dXMgb2YgYSBwYXRjaCBvciBjaGFuZ2UgaXMgcmVhc29uYWJsZSBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlIGhhcyBiZWVuIGlkbGUgZm9yIGEgd2hpbGUgd2l0aCBubyBmZWVkYmFjay4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZG9lcyBoYXZlIHBsYW5zIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXRjaHdvcmtfKHNvZnR3YXJlKSc+UGF0Y2h3b3JrPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdG8gdHJhY2sgdGhlIHN0YXR1cyBvZiBwYXRjaGVzIGFuZCBhbHNvIHRvIGF1dG9tYXRpY2FsbHkgcHJldmlldworICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwcm92aWRlIHByb2NlZHVyZXMgZm9yIHN1Ym1pdHRpbmcgYSBjaGFuZ2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwdXNoaW5nLWEtY2hhbmdlLXVwc3RyZWFtJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgU2NyaXB0cyB0byBQdXNoIGEgQ2hhbmdlIFVwc3RyZWFtIGFuZCBSZXF1ZXN0IGEgUHVsbDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoaXMgcHJvY2VkdXJlIHRvIHB1c2ggYSBjaGFuZ2UgdG8gYW4gdXBzdHJlYW0gImNvbnRyaWIiCisgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBnZW5lcmFsIEdpdCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcHVzaCBhIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vYm9vay9lbi92Mi9EaXN0cmlidXRlZC1HaXQtRGlzdHJpYnV0ZWQtV29ya2Zsb3dzJz5HaXQgQ29tbXVuaXR5IEJvb2s8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgWW91ciBDaGFuZ2VzIExvY2FsbHk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHlvdXIgY2hhbmdlcyBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbWFrZSBzbWFsbCwgY29udHJvbGxlZCwgaXNvbGF0ZWQgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWVwaW5nIGNoYW5nZXMgc21hbGwgYW5kIGlzb2xhdGVkIGFpZHMgcmV2aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VzIG1lcmdpbmcvcmViYXNpbmcgZWFzaWVyIGFuZCBrZWVwcyB0aGUgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeSBjbGVhbiBzaG91bGQgYW55b25lIG5lZWQgdG8gcmVmZXIgdG8gaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXR1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWdlIHlvdXIgY2hhbmdlcyBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb24gZWFjaCBmaWxlIHlvdSBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdtYWtpbmctc3VyZS15b3UtaGF2ZS1jb3JyZWN0LWNvbW1pdC1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1pdCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNvbW1pdDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSBzdXJlIHlvdXIgY29tbWl0IGluZm9ybWF0aW9uIGZvbGxvd3Mgc3RhbmRhcmRzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZXNlIGFjY2VwdGVkIGNvbnZlbnRpb25zOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5jbHVkZSBhICJTaWduZWQtb2ZmLWJ5OiIgbGluZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgc3R5bGUgYXMgcmVxdWlyZWQgYnkgdGhlIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGlzIGxpbmUgc2lnbmlmaWVzIHRoYXQgeW91LCB0aGUgc3VibWl0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBhZ3JlZWQgdG8gdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW4gMS4xIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbiAxLjEKKworICAgICBCeSBtYWtpbmcgYSBjb250cmlidXRpb24gdG8gdGhpcyBwcm9qZWN0LCBJIGNlcnRpZnkgdGhhdDoKKworICAgICAoYSkgVGhlIGNvbnRyaWJ1dGlvbiB3YXMgY3JlYXRlZCBpbiB3aG9sZSBvciBpbiBwYXJ0IGJ5IG1lIGFuZCBJCisgICAgICAgICBoYXZlIHRoZSByaWdodCB0byBzdWJtaXQgaXQgdW5kZXIgdGhlIG9wZW4gc291cmNlIGxpY2Vuc2UKKyAgICAgICAgIGluZGljYXRlZCBpbiB0aGUgZmlsZTsgb3IKKworICAgICAoYikgVGhlIGNvbnRyaWJ1dGlvbiBpcyBiYXNlZCB1cG9uIHByZXZpb3VzIHdvcmsgdGhhdCwgdG8gdGhlIGJlc3QKKyAgICAgICAgIG9mIG15IGtub3dsZWRnZSwgaXMgY292ZXJlZCB1bmRlciBhbiBhcHByb3ByaWF0ZSBvcGVuIHNvdXJjZQorICAgICAgICAgbGljZW5zZSBhbmQgSSBoYXZlIHRoZSByaWdodCB1bmRlciB0aGF0IGxpY2Vuc2UgdG8gc3VibWl0IHRoYXQKKyAgICAgICAgIHdvcmsgd2l0aCBtb2RpZmljYXRpb25zLCB3aGV0aGVyIGNyZWF0ZWQgaW4gd2hvbGUgb3IgaW4gcGFydAorICAgICAgICAgYnkgbWUsIHVuZGVyIHRoZSBzYW1lIG9wZW4gc291cmNlIGxpY2Vuc2UgKHVubGVzcyBJIGFtCisgICAgICAgICBwZXJtaXR0ZWQgdG8gc3VibWl0IHVuZGVyIGEgZGlmZmVyZW50IGxpY2Vuc2UpLCBhcyBpbmRpY2F0ZWQKKyAgICAgICAgIGluIHRoZSBmaWxlOyBvcgorCisgICAgIChjKSBUaGUgY29udHJpYnV0aW9uIHdhcyBwcm92aWRlZCBkaXJlY3RseSB0byBtZSBieSBzb21lIG90aGVyCisgICAgICAgICBwZXJzb24gd2hvIGNlcnRpZmllZCAoYSksIChiKSBvciAoYykgYW5kIEkgaGF2ZSBub3QgbW9kaWZpZWQKKyAgICAgICAgIGl0LgorCisgICAgIChkKSBJIHVuZGVyc3RhbmQgYW5kIGFncmVlIHRoYXQgdGhpcyBwcm9qZWN0IGFuZCB0aGUgY29udHJpYnV0aW9uCisgICAgICAgICBhcmUgcHVibGljIGFuZCB0aGF0IGEgcmVjb3JkIG9mIHRoZSBjb250cmlidXRpb24gKGluY2x1ZGluZyBhbGwKKyAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIEkgc3VibWl0IHdpdGggaXQsIGluY2x1ZGluZyBteSBzaWduLW9mZikgaXMKKyAgICAgICAgIG1haW50YWluZWQgaW5kZWZpbml0ZWx5IGFuZCBtYXkgYmUgcmVkaXN0cmlidXRlZCBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgIHRoaXMgcHJvamVjdCBvciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZShzKSBpbnZvbHZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgc2luZ2xlLWxpbmUgc3VtbWFyeSBvZiB0aGUgY2hhbmdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbW9yZSBleHBsYW5hdGlvbiBpcyBuZWVkZWQsIHByb3ZpZGUgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsIGluIHRoZSBib2R5IG9mIHRoZSBjb21taXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN1bW1hcnkgaXMgdHlwaWNhbGx5IHZpZXdhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3J0bGlzdCIgb2YgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHByb3ZpZGluZyBzb21ldGhpbmcgc2hvcnQgYW5kIGRlc2NyaXB0aXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGdpdmVzIHRoZSByZWFkZXIgYSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWZ1bCB3aGVuIHZpZXdpbmcgYSBsaXN0IG9mIG1hbnkgY29tbWl0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgcHJlZml4IHRoaXMgc2hvcnQgZGVzY3JpcHRpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIChpZiBjaGFuZ2luZyBhIHJlY2lwZSksIG9yIGVsc2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNob3J0IGZvcm0gcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgYm9keSBvZiB0aGUgY29tbWl0IG1lc3NhZ2UsIHByb3ZpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGVkIGluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIHdoYXQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLCB3aHkgeW91IG1hZGUgdGhlIGNoYW5nZSwgYW5kIHRoZSBhcHByb2FjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBtaWdodCBhbHNvIGJlIGhlbHBmdWwgaWYgeW91IG1lbnRpb24gaG93IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkIHRoZSBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gaW4gdGhlIGJvZHkgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBwcm92aWRlIGEgbW9yZSBkZXRhaWxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uIG9mIGEgY2hhbmdlIGlmIHRoZSBjaGFuZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciB0byB0aGUgcG9pbnQgb2YgdGhlIHNpbmdsZSBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSBwcm92aWRpbmcgYWxsIHRoZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgY2hhbmdlIGFkZHJlc3NlcyBhIHNwZWNpZmljIGJ1ZyBvciBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBidWctdHJhY2tpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGEgcmVmZXJlbmNlIHRvIHRoYXQgSUQgaW4geW91ciBkZXRhaWxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZW50aW9uIGZvciBidWcgcmVmZXJlbmNlcyAtIGFueSBjb21taXQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIHNob3VsZCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byB1c2UgdGhlIGFjdHVhbCBidWctdHJhY2tpbmcgSUQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVnemlsbGEgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZpeGVzIFtZT0NUTyAjPHJlcGxhY2VhYmxlPmJ1Zy1pZDwvcmVwbGFjZWFibGU+XQorCisgICAgIDxyZXBsYWNlYWJsZT5kZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBjaGFuZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlB1c2ggWW91ciBDb21taXRzIHRvIGEgIkNvbnRyaWIiIFVwc3RyZWFtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYXJyYW5nZWQgZm9yIHBlcm1pc3Npb25zIHRvIHB1c2ggdG8gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBjb250cmliIHJlcG9zaXRvcnksIHB1c2ggdGhlIGNoYW5nZSB0byB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IHB1c2ggPHJlcGxhY2VhYmxlPnVwc3RyZWFtX3JlbW90ZV9yZXBvPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmxvY2FsX2JyYW5jaF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgcGVybWlzc2lvbnMgdG8gcHVzaCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIDxmaWxlbmFtZT5tZXRhLWludGVsLWNvbnRyaWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIHlvdSBhcmUgd29ya2luZyBpbiBhIGxvY2FsIGJyYW5jaCBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT55b3VyX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vUkVBRE1FPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHB1c2hlcyB5b3VyIGxvY2FsIGNvbW1pdHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWwtY29udHJpYjwvZmlsZW5hbWU+IHVwc3RyZWFtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgcHV0cyB0aGUgY29tbWl0IGluIGEgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IHB1c2ggbWV0YS1pbnRlbC1jb250cmliIDxyZXBsYWNlYWJsZT55b3VyX25hbWU8L3JlcGxhY2VhYmxlPi9SRUFETUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3B1c2gtZGV0ZXJtaW5lLXdoby10by1ub3RpZnknPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIHRvIE5vdGlmeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldGVybWluZSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbmVlZCB0byBub3RpZnkgZm9yIHRoZSBjaGFuZ2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIHN1Ym1pdHRpbmcgYW55IGNoYW5nZSwgeW91IG5lZWQgdG8gYmUgc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdobyB0aGUgbWFpbnRhaW5lciBpcyBvciB3aGF0IG1haWxpbmcgbGlzdCB0aGF0IHlvdSBuZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbm90aWZ5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBlaXRoZXIgdGhlc2UgbWV0aG9kcyB0byBmaW5kIG91dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFpbnRlbmFuY2UgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSB0aGUgPGZpbGVuYW1lPm1haW50YWluZXJzLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VhcmNoIGJ5IEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gZW50ZXIgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGJyaW5nIHVwIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IGxpc3Qgb2YgYWxsIGNvbW1pdHMgYWdhaW5zdCBhIHNwZWNpZmljIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGdpdCBzaG9ydGxvZyAtLSA8cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVzdCBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZvciB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGlzIG5vdCBvcmRlcmVkIGJ5IGhpc3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkb2VzIGluY2x1ZGUgYSBsaXN0IG9mIGV2ZXJ5b25lIHdobyBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCBncm91cGVkIGJ5IG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSBsaXN0LCB5b3UgY2FuIHNlZSB3aG8gaXMgcmVzcG9uc2libGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhZ2FpbnN0IHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIHRoZSBMaXN0IG9mIE1haWxpbmcgTGlzdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIFlvY3RvIFByb2plY3QgYW5kIHJlbGF0ZWQgbWFpbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgbGlzdHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIGEgUHVsbCBSZXF1ZXN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5IHRoZSBtYWludGFpbmVyIG9yIHRoZSBtYWlsaW5nIGxpc3QgdGhhdCB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hlZCBhIGNoYW5nZSBieSBtYWtpbmcgYSBwdWxsIHJlcXVlc3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdHdvIHNjcmlwdHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbmllbnRseSBsZXQgeW91IGdlbmVyYXRlIGFuZCBzZW5kIHB1bGwgcmVxdWVzdHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBzY3JpcHRzIGFyZSA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBzY3JpcHRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+fi9wb2t5L3NjcmlwdHM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgdGhlc2Ugc2NyaXB0cyBjb3JyZWN0bHkgZm9ybWF0cyB0aGUgcmVxdWVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGludHJvZHVjaW5nIGFueSB3aGl0ZXNwYWNlIG9yIEhUTUwgZm9ybWF0dGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBlaXRoZXIgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aHJvdWdoIHRoZSBtYWlsaW5nIGxpc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBzYXZlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5IHRoZW0gZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGVzZSBzY3JpcHRzIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5GaXJzdCwgY3JlYXRlIHRoZSBwdWxsIHJlcXVlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGluIHRoZSBjb250cmliIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gd2hpY2ggeW91IHB1c2hlZCB0aGUgY2hhbmdlLCBhbmQgcHJvdmlkZXMgYSBzdWJqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBpbiB0aGUgY3JlYXRlZCBwYXRjaCBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgfi9wb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtdSBtZXRhLWludGVsLWNvbnRyaWIgLXMgIlVwZGF0ZWQgTWFudWFsIFNlY3Rpb24gUmVmZXJlbmNlIGluIFJFQURNRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGlzIHNjcmlwdCBmb3JtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gZmlsZXMgaW4gYSBmb2xkZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHVsbC08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5QSUQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUgb2YgdGhlIHBhdGNoIGZpbGVzIGlzIGEgY292ZXIgbGV0dGVyLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlZm9yZSBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdCwgeW91IG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0IHRoZSBjb3ZlciBsZXR0ZXIgcGF0Y2ggdG8gaW5zZXJ0IGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWRpdGluZyB0aGUgY292ZXIgbGV0dGVyLCBzZW5kIHRoZSBwdWxsIHJlcXVlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBzY3JpcHQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBwYXRjaCBkaXJlY3RvcnkgYW5kIGVtYWlsIGFkZHJlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZW1haWwgYWRkcmVzcyBpcyBhIG1haWxpbmcgbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgfi9wb2t5L3NjcmlwdHMvc2VuZC1wdWxsLXJlcXVlc3QgLXAgfi9tZXRhLWludGVsL3B1bGwtMTA1NjUgLXQgbWV0YS1pbnRlbEB5b2N0b3Byb2plY3Qub3JnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGZvbGxvdyB0aGUgcHJvbXB0cyBhcyB0aGUgc2NyaXB0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBoZWxwIG9uIHVzaW5nIHRoZXNlIHNjcmlwdHMsIHNpbXBseSBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWg8L2ZpbGVuYW1lPiBhcmd1bWVudCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QgLWgKKyAgICAgJCBwb2t5L3NjcmlwdHMvc2VuZC1wdWxsLXJlcXVlc3QgLWgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzdWJtaXR0aW5nLWEtcGF0Y2gnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBFbWFpbCB0byBTdWJtaXQgYSBQYXRjaDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzdWJtaXQgcGF0Y2hlcyB3aXRob3V0IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBzY3JpcHRzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwga2VlcCBpbiBtaW5kLCB0aGUgcHJlZmVycmVkIG1ldGhvZCBpcyB0byB1c2UgdGhlIHNjcmlwdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgY29tcG9uZW50cyBjaGFuZ2VkLCB5b3UgbmVlZCB0byBzdWJtaXQgdGhlIGVtYWlsCisgICAgICAgICAgICAgICAgICAgIHRvIGEgc3BlY2lmaWMgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiB3aGljaCBtYWlsaW5nIGxpc3QgdG8gdXNlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ZpZ3VyaW5nLW91dC10aGUtbWFpbGluZy1saXN0LXRvLXVzZSc+bGlzdDwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGdlbmVyYWwgcHJvY2VkdXJlIG9uIGhvdyB0byBzdWJtaXQgYSBwYXRjaCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIGVtYWlsIHdpdGhvdXQgdXNpbmcgdGhlIHNjcmlwdHM6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBZb3VyIENoYW5nZXMgTG9jYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYWtlIHNtYWxsLCBjb250cm9sbGVkLCBpc29sYXRlZCBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgY2hhbmdlcyBzbWFsbCBhbmQgaXNvbGF0ZWQgYWlkcyByZXZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgbWVyZ2luZy9yZWJhc2luZyBlYXNpZXIgYW5kIGtlZXBzIHRoZSBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IGNsZWFuIHNob3VsZCBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhZ2UgeW91ciBjaGFuZ2VzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1pdCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNvbW1pdCAtLXNpZ25vZmY8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+LS1zaWdub2ZmPC9maWxlbmFtZT4gb3B0aW9uIGlkZW50aWZpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXMgdGhlIHBlcnNvbiBtYWtpbmcgdGhlIGNoYW5nZSBhbmQgYWxzbyBzYXRpc2ZpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIChEQ08pIHNob3duIGVhcmxpZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgZm9ybSBhIGNvbW1pdCwgeW91IG11c3QgZm9sbG93IGNlcnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZHMgZXN0YWJsaXNoZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ha2luZy1zdXJlLXlvdS1oYXZlLWNvcnJlY3QtY29tbWl0LWluZm9ybWF0aW9uJz5TdGVwIDM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgY29tbWl0IGluZm9ybWF0aW9uIHRoYXQgbWVldHMgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlIHN0YW5kYXJkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Rm9ybWF0IHRoZSBDb21taXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgdGhlIGNvbW1pdCBpbnRvIGFuIGVtYWlsIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gZm9ybWF0IGNvbW1pdHMsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSB0aGUgY29tbWFuZCwgeW91IG11c3QgaW5jbHVkZSBhIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCBvciBhIG51bWJlciBvZiBwYXRjaGVzIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGVpdGhlciBvZiB0aGVzZSB0d28gY29tbWFuZHMgdGFrZXMgeW91ciBtb3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZW50IHNpbmdsZSBjb21taXQgYW5kIGZvcm1hdHMgaXQgYXMgYW4gZW1haWwgbWVzc2FnZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIEhFQUR+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFmdGVyIHRoZSBjb21tYW5kIGlzIHJ1biwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSBudW1iZXJlZCA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWl0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBwcm92aWRlIHNldmVyYWwgY29tbWl0cyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHRoZSA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBhIHNlcmllcyBvZiBudW1iZXJlZCBmaWxlcyBpbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSDigJMgb25lIGZvciBlYWNoIGNvbW1pdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIHBhdGNoLCB5b3Ugc2hvdWxkIGFsc28gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWNvdmVyPC9maWxlbmFtZT4gb3B0aW9uIHdpdGggdGhlIGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggZ2VuZXJhdGVzIGEgY292ZXIgbGV0dGVyIGFzIHRoZSBmaXJzdCAicGF0Y2giIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gZWRpdCB0aGUgY292ZXIgbGV0dGVyIHRvIHByb3ZpZGUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VyaWVzIG9mIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgPGZpbGVuYW1lPkdJVF9GT1JNQVRfUEFUQ0goMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPm1hbiBnaXQtZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9yIHdpbGwgYmUgYSBmcmVxdWVudCBjb250cmlidXRvciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBvciB0byBPcGVuRW1iZWRkZWQsIHlvdSBtaWdodCBjb25zaWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0aW5nIGEgY29udHJpYiBhcmVhIGFuZCB0aGUgbmVjZXNzYXJ5IGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1wb3J0IHRoZSBGaWxlcyBJbnRvIFlvdXIgTWFpbCBDbGllbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnQgdGhlIGZpbGVzIGludG8geW91ciBtYWlsIGNsaWVudCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBtdXN0IGhhdmUgdGhlIHByb3BlciBHaXQgcGFja2FnZXMgaW5zdGFsbGVkIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFVidW50dSwgRGViaWFuLCBhbmQgRmVkb3JhIHRoZSBwYWNrYWdlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQtZW1haWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kcyBlbWFpbCBieSB1c2luZyBhIGxvY2FsIG9yIHJlbW90ZSBNYWlsIFRyYW5zcG9ydCBBZ2VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNVEEpIHN1Y2ggYXMgPGZpbGVuYW1lPm1zbXRwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmRtYWlsPC9maWxlbmFtZT4sIG9yIHRocm91Z2ggYSBkaXJlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c210cDwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gaW4geW91ciBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi8uZ2l0Y29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHN1Ym1pdHRpbmcgcGF0Y2hlcyB0aHJvdWdoIGVtYWlsIG9ubHksIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyeSBpbXBvcnRhbnQgdGhhdCB5b3Ugc3VibWl0IHRoZW0gd2l0aG91dCBhbnkgd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEhUTUwgZm9ybWF0dGluZyB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBtYWlsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIHRoYXQgcmVjZWl2ZXMgeW91ciBwYXRjaGVzIG5lZWRzIHRvIGJlIGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzYXZlIGFuZCBhcHBseSB0aGVtIGRpcmVjdGx5IGZyb20geW91ciBlbWFpbHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIHdheSB0byB2ZXJpZnkgdGhhdCB3aGF0IHlvdSBhcmUgc2VuZGluZyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBieSB0aGUgbWFpbnRhaW5lciBpcyB0byBkbyBhIGRyeSBydW4gYW5kIHNlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtIHRvIHlvdXJzZWxmIGFuZCB0aGVuIHNhdmUgYW5kIGFwcGx5IHRoZW0gYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciB3b3VsZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nIHlvdXIgcGF0Y2hlcyB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsIHNpbmNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgY29tcHJvbWlzaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZSwgd2hpY2ggY2FuIG9jY3VyIHdoZW4geW91IHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgb3duIG1haWwgY2xpZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGFsc28gaGFzIHNldmVyYWwgb3B0aW9ucyB0aGF0IGxldCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHJlY2lwaWVudHMgYW5kIHBlcmZvcm0gZnVydGhlciBlZGl0aW5nIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgPGZpbGVuYW1lPkdJVC1TRU5ELUVNQUlMKDEpPC9maWxlbmFtZT4gZGlzcGxheWVkIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tYW4gZ2l0LXNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd3b3JraW5nLXdpdGgtbGljZW5zZXMnPgorICAgICAgICA8dGl0bGU+V29ya2luZyBXaXRoIExpY2Vuc2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2xpY2Vuc2luZyc+TGljZW5zaW5nPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwsCisgICAgICAgICAgICBvcGVuIHNvdXJjZSBwcm9qZWN0cyBhcmUgb3BlbiB0byB0aGUgcHVibGljIGFuZCB0aGV5CisgICAgICAgICAgICBjb25zZXF1ZW50bHkgaGF2ZSBkaWZmZXJlbnQgbGljZW5zaW5nIHN0cnVjdHVyZXMgaW4gcGxhY2UuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICB0cmFja3MgY2hhbmdlcyB0byBsaWNlbnNpbmcgdGV4dCBhbmQgY292ZXJzIGhvdyB0byBtYWludGFpbiBvcGVuCisgICAgICAgICAgICBzb3VyY2UgbGljZW5zZSBjb21wbGlhbmNlIGR1cmluZyB5b3VyIHByb2plY3QncyBsaWZlY3ljbGUuCisgICAgICAgICAgICBUaGUgc2VjdGlvbiBhbHNvIGRlc2NyaWJlcyBob3cgdG8gZW5hYmxlIGNvbW1lcmNpYWxseSBsaWNlbnNlZAorICAgICAgICAgICAgcmVjaXBlcywgd2hpY2ggYnkgZGVmYXVsdCBhcmUgZGlzYWJsZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LWNvbmZpZ3VyaW5nLUxJQ19GSUxFU19DSEtTVU0iPgorICAgICAgICAgICAgPHRpdGxlPlRyYWNraW5nIExpY2Vuc2UgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBsaWNlbnNlIG9mIGFuIHVwc3RyZWFtIHByb2plY3QgbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gcHJldmVudCB0aGVzZSBjaGFuZ2VzIGdvaW5nIHVubm90aWNlZCwgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRyYWNrcyBjaGFuZ2VzIHRvIHRoZSBsaWNlbnNlIHRleHQuIFRoZSBjaGVja3N1bXMgYXJlCisgICAgICAgICAgICAgICAgdmFsaWRhdGVkIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzdGVwLCBhbmQgaWYgdGhlCisgICAgICAgICAgICAgICAgY2hlY2tzdW1zIGRvIG5vdCBtYXRjaCwgdGhlIGJ1aWxkIHdpbGwgZmFpbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InVzaW5ncG9reS1zcGVjaWZ5aW5nLUxJQ19GSUxFU19DSEtTVU0iPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TcGVjaWZ5aW5nIHRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IFZhcmlhYmxlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjb250YWlucyBjaGVja3N1bXMgb2YgdGhlIGxpY2Vuc2UgdGV4dCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUgZm9yIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGhvdyB0byBzcGVjaWZ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9eHh4eCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpY2ZpbGUxLnR4dDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI5O21kNT15eXl5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGljZmlsZTIudHh0O2VuZGxpbmU9NTA7bWQ1PXp6enogXAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgImJlZ2lubGluZSIgYW5kICJlbmRsaW5lIiwgcmVhbGl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGxpbmUgbnVtYmVyaW5nIGJlZ2lucyB3aXRoIG9uZSBhbmQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm8uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHRoZSBpbmNsdWRlZCBsaW5lcyBhcmUgaW5jbHVzaXZlIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzIGZpdmUgdGhyb3VnaCBhbmQgaW5jbHVkaW5nIDI5IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBleGFtcGxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGljZmlsZTEudHh0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYSBsaWNlbnNlIGNoZWNrIGZhaWxzLCB0aGUgc2VsZWN0ZWQgbGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0IGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIFFBIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoaXMgb3V0cHV0LCB5b3UgY2FuIGRldGVybWluZSB0aGUgZXhhY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgYW5kIGZpbmlzaCBmb3IgdGhlIG5lZWRlZCBsaWNlbnNlIHRleHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFzIHRoZSBkZWZhdWx0IGRpcmVjdG9yeSB3aGVuIHNlYXJjaGluZyBmaWxlcworICAgICAgICAgICAgICAgICAgICBsaXN0ZWQgaW4gPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZW1wbG95cyB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoaXMgbmV4dCBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZDU9YmIxNGVkM2M0Y2RhNTgzYWJjODU0MDEzMDRiNWNkNGUiCisgICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vbGljZW5zZS5odG1sO21kNT01Yzk0NzY3Y2VkYjVkNjk4N2M5MDJhYzg1MGRlZDJjNiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlyc3QgbGluZSBsb2NhdGVzIGEgZmlsZSBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTfS9zcmMvbHMuYzwvZmlsZW5hbWU+IGFuZCBpc29sYXRlcyBsaW5lcyBmaXZlCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggMTYgYXMgbGljZW5zZSB0ZXh0LgorICAgICAgICAgICAgICAgICAgICBUaGUgc2Vjb25kIGxpbmUgcmVmZXJzIHRvIGEgZmlsZSBpbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnkgZm9yIGFsbCByZWNpcGVzLCB1bmxlc3MgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgc2V0IHRvICJDTE9TRUQiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InVzaW5ncG9reS1MSUNfRklMRVNfQ0hLU1VNLWV4cGxhbmF0aW9uLW9mLXN5bnRheCI+CisgICAgICAgICAgICAgICAgPHRpdGxlPkV4cGxhbmF0aW9uIG9mIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YXJpYWJsZSBsaXN0cyBhbGwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltcG9ydGFudCBmaWxlcyB0aGF0IGNvbnRhaW4gdGhlIGxpY2Vuc2UgdGV4dCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2hlY2tzdW0gZm9yIGFuIGVudGlyZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICBvciBhIHNwZWNpZmljIHNlY3Rpb24gb2YgYSBmaWxlIChzcGVjaWZpZWQgYnkgYmVnaW5uaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICBlbmRpbmcgbGluZSBudW1iZXJzIHdpdGggdGhlICJiZWdpbmxpbmUiIGFuZCAiZW5kbGluZSIKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycywgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgZm9yIHNvdXJjZSBmaWxlcyB3aXRoIGEgbGljZW5zZQorICAgICAgICAgICAgICAgICAgICBub3RpY2UgaGVhZGVyLCBSRUFETUUgZG9jdW1lbnRzLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgdXNlIHRoZSAiYmVnaW5saW5lIiBwYXJhbWV0ZXIsIHRoZW4gaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgYXNzdW1lZCB0aGF0IHRoZSB0ZXh0IGJlZ2lucyBvbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgU2ltaWxhcmx5LCBpZiB5b3UgZG8gbm90IHVzZSB0aGUgImVuZGxpbmUiIHBhcmFtZXRlciwKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBsaWNlbnNlIHRleHQgZW5kcyB3aXRoIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgICAgIGxpbmUgb2YgdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSAibWQ1IiBwYXJhbWV0ZXIgc3RvcmVzIHRoZSBtZDUgY2hlY2tzdW0gb2YgdGhlIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGxpY2Vuc2UgdGV4dCBjaGFuZ2VzIGluIGFueSB3YXkgYXMgY29tcGFyZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIgdGhlbiBhIG1pc21hdGNoIG9jY3Vycy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtaXNtYXRjaCB0cmlnZ2VycyBhIGJ1aWxkIGZhaWx1cmUgYW5kIG5vdGlmaWVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZXZlbG9wZXIuCisgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBhbGxvd3MgdGhlIGRldmVsb3BlciB0byByZXZpZXcgYW5kIGFkZHJlc3MKKyAgICAgICAgICAgICAgICAgICAgdGhlIGxpY2Vuc2UgdGV4dCBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICBBbHNvIG5vdGUgdGhhdCBpZiBhIG1pc21hdGNoIG9jY3VycyBkdXJpbmcgdGhlIGJ1aWxkLAorICAgICAgICAgICAgICAgICAgICB0aGUgY29ycmVjdCBtZDUgY2hlY2tzdW0gaXMgcGxhY2VkIGluIHRoZSBidWlsZCBsb2cgYW5kCisgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBlYXNpbHkgY29waWVkIHRvIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIG5vIGxpbWl0IHRvIGhvdyBtYW55IGZpbGVzIHlvdSBjYW4gc3BlY2lmeSB1c2luZworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgR2VuZXJhbGx5LCBob3dldmVyLCBldmVyeSBwcm9qZWN0IHJlcXVpcmVzIGEgZmV3CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb25zIGZvciBsaWNlbnNlIHRyYWNraW5nLgorICAgICAgICAgICAgICAgICAgICBNYW55IHByb2plY3RzIGhhdmUgYSAiQ09QWUlORyIgZmlsZSB0aGF0IHN0b3JlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZSBpbmZvcm1hdGlvbiBmb3IgYWxsIHRoZSBzb3VyY2UgY29kZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBwcmFjdGljZSBhbGxvd3MgeW91IHRvIGp1c3QgdHJhY2sgdGhlICJDT1BZSU5HIgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGxvbmcgYXMgaXQgaXMga2VwdCB1cCB0byBkYXRlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgYW4gZW1wdHkgb3IgaW52YWxpZCAibWQ1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgYW4gbWQ1IG1pcy1tYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBhbmQgZGlzcGxheXMgdGhlIGNvcnJlY3QgIm1kNSIgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb3JyZWN0IHBhcmFtZXRlciBpcyBhbHNvIGNhcHR1cmVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBsb2cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHdob2xlIGZpbGUgY29udGFpbnMgb25seSBsaWNlbnNlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBkbyBub3QgbmVlZCB0byB1c2UgdGhlICJiZWdpbmxpbmUiIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmRsaW5lIiBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxpbmctY29tbWVyY2lhbGx5LWxpY2Vuc2VkLXJlY2lwZXMiPgorICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIENvbW1lcmNpYWxseSBMaWNlbnNlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZGlzYWJsZXMKKyAgICAgICAgICAgICAgICBjb21wb25lbnRzIHRoYXQgaGF2ZSBjb21tZXJjaWFsIG9yIG90aGVyIHNwZWNpYWwgbGljZW5zaW5nCisgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgIFN1Y2ggcmVxdWlyZW1lbnRzIGFyZSBkZWZpbmVkIG9uIGEKKyAgICAgICAgICAgICAgICByZWNpcGUtYnktcmVjaXBlIGJhc2lzIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlZmluaXRpb24gaW4gdGhlIGFmZmVjdGVkIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBGb3IgaW5zdGFuY2UsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy11Z2x5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZWNpcGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsaWNhdGVkIGV4YW1wbGUgdGhhdCBjb250YWlucyBib3RoCisgICAgICAgICAgICAgICAgYW4gZXhwbGljaXQgcmVjaXBlIG5hbWUgYW5kIHZlcnNpb24gKGFmdGVyIHZhcmlhYmxlIGV4cGFuc2lvbik6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNFTlNFX0ZMQUdTID0gImxpY2Vuc2VfJHtQTn1fJHtQVn0iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorCSAgICAgICAgICAgIEluIG9yZGVyIGZvciBhIGNvbXBvbmVudCByZXN0cmljdGVkIGJ5IGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IGRlZmluaXRpb24gdG8gYmUgZW5hYmxlZCBhbmQKKyAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiBhbiBpbWFnZSwgaXQgbmVlZHMgdG8gaGF2ZSBhIG1hdGNoaW5nIGVudHJ5IGluIHRoZQorICAgICAgICAgICAgICAgIGdsb2JhbAorCSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFX0ZMQUdTX1dISVRFTElTVCc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBpcyBhIHZhcmlhYmxlIHR5cGljYWxseSBkZWZpbmVkIGluIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGVuYWJsZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtdWdseTwvZmlsZW5hbWU+CisJICAgICAgICAgICAgcGFja2FnZSwgeW91IGNvdWxkIGFkZCBlaXRoZXIgdGhlIHN0cmluZworCSAgICAgICAgICAgICJjb21tZXJjaWFsX2dzdC1wbHVnaW5zLXVnbHkiIG9yIHRoZSBtb3JlIGdlbmVyYWwgc3RyaW5nCisJICAgICAgICAgICAgImNvbW1lcmNpYWwiIHRvIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbGljZW5zZS1mbGFnLW1hdGNoaW5nJz5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGEgZnVsbAorICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uIG9mIGhvdyA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IG1hdGNoaW5nCisgICAgICAgICAgICAgICAgd29ya3MuCisgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisJICAgICAgICAgICAgTGlrZXdpc2UsIHRvIGFkZGl0aW9uYWxseSBlbmFibGUgdGhlIHBhY2thZ2UgYnVpbHQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUgY29udGFpbmluZworCSAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTID0gImxpY2Vuc2VfJHtQTn1fJHtQVn0iPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIGFzc3VtaW5nIHRoYXQgdGhlIGFjdHVhbCByZWNpcGUgbmFtZSB3YXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZW1nZF8xLjEwLmJiPC9maWxlbmFtZT4sIHRoZSBmb2xsb3dpbmcgc3RyaW5nIHdvdWxkCisgICAgICAgICAgICAgICAgZW5hYmxlIHRoYXQgcGFja2FnZSBhcyB3ZWxsIGFzIHRoZSBvcmlnaW5hbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nc3QtcGx1Z2lucy11Z2x5PC9maWxlbmFtZT4gcGFja2FnZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSBsaWNlbnNlX2VtZ2RfMS4xMCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisJICAgICAgICAgICAgQXMgYSBjb252ZW5pZW5jZSwgeW91IGRvIG5vdCBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgbGljZW5zZSBzdHJpbmcgaW4gdGhlIHdoaXRlbGlzdCBmb3IgZXZlcnkgcGFja2FnZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhbiBhYmJyZXZpYXRlZCBmb3JtLCB3aGljaCBjb25zaXN0cworICAgICAgICAgICAgICAgIG9mIGp1c3QgdGhlIGZpcnN0IHBvcnRpb24gb3IgcG9ydGlvbnMgb2YgdGhlIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICBzdHJpbmcgYmVmb3JlIHRoZSBpbml0aWFsIHVuZGVyc2NvcmUgY2hhcmFjdGVyIG9yIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgQSBwYXJ0aWFsIHN0cmluZyB3aWxsIG1hdGNoIGFueSBsaWNlbnNlIHRoYXQgY29udGFpbnMgdGhlCisgICAgICAgICAgICAgICAgZ2l2ZW4gc3RyaW5nIGFzIHRoZSBmaXJzdCBwb3J0aW9uIG9mIGl0cyBsaWNlbnNlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHdoaXRlbGlzdCBzdHJpbmcgd2lsbCBhbHNvIG1hdGNoCisgICAgICAgICAgICAgICAgYm90aCBvZiB0aGUgcGFja2FnZXMgcHJldmlvdXNseSBtZW50aW9uZWQgYXMgd2VsbCBhcyBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICBwYWNrYWdlcyB0aGF0IGhhdmUgbGljZW5zZXMgc3RhcnRpbmcgd2l0aCAiY29tbWVyY2lhbCIgb3IKKyAgICAgICAgICAgICAgICAibGljZW5zZSIuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsIGxpY2Vuc2UiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ibGljZW5zZS1mbGFnLW1hdGNoaW5nIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TGljZW5zZSBGbGFnIE1hdGNoaW5nPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorCQkgICAgICAgICAgICBMaWNlbnNlIGZsYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBjb250cm9sIHdoYXQgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbmNsdWRlcyBpbiB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEZ1bmRhbWVudGFsbHksIHRoZSBidWlsZCBzeXN0ZW0gYXR0ZW1wdHMgdG8gbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPiBzdHJpbmdzIGZvdW5kIGluIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdHJpbmdzIGZvdW5kIGluIHRoZSB3aGl0ZWxpc3QuCisgICAgICAgICAgICAgICAgICAgIEEgbWF0Y2ggY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIHJlY2lwZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQsIHdoaWxlIGZhaWx1cmUgdG8gZmluZCBhIG1hdGNoIGNhdXNlcyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGV4Y2x1ZGUgYSByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGxpY2Vuc2UgZmxhZyBtYXRjaGluZyBpcyBzaW1wbGUuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHVuZGVyc3RhbmRpbmcgc29tZSBjb25jZXB0cyB3aWxsIGhlbHAgeW91CisgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RseSBhbmQgZWZmZWN0aXZlbHkgdXNlIG1hdGNoaW5nLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgYSBmbGFnCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyIHJlY2lwZSBpcyB0ZXN0ZWQgYWdhaW5zdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29udGVudHMgb2YgdGhlIHdoaXRlbGlzdCwgdGhlIGV4cGFuZGVkIHN0cmluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+XyR7UE59PC9maWxlbmFtZT4gaXMgYXBwZW5kZWQgdG8gdGhlIGZsYWcuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhwYW5zaW9uIG1ha2VzIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPiB2YWx1ZSByZWNpcGUtc3BlY2lmaWMuCisgICAgICAgICAgICAgICAgICAgIEFmdGVyIGV4cGFuc2lvbiwgdGhlIHN0cmluZyBpcyB0aGVuIG1hdGNoZWQgYWdhaW5zdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LgorICAgICAgICAgICAgICAgICAgICBUaHVzLCBzcGVjaWZ5aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW4gcmVjaXBlICJmb28iLCBmb3IgZXhhbXBsZSwgcmVzdWx0cyBpbiB0aGUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4iY29tbWVyY2lhbF9mb28iPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEFuZCwgdG8gY3JlYXRlIGEgbWF0Y2gsIHRoYXQgc3RyaW5nIG11c3QgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEp1ZGljaW91cyB1c2Ugb2YgdGhlIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc3RyaW5ncyBhbmQgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IGEgbG90IG9mIGZsZXhpYmlsaXR5IGZvciBpbmNsdWRpbmcgb3IgZXhjbHVkaW5nCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgYmFzZWQgb24gbGljZW5zaW5nLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBicm9hZGVuIHRoZSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgbGljZW5zZSBmbGFncyBzdHJpbmcgc3Vic2V0cyBpbiB0aGUgd2hpdGVsaXN0LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgYSBzdHJpbmcgc3Vic2V0LCBiZSBzdXJlIHRvIHVzZSB0aGUgcGFydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGV4cGFuZGVkIHN0cmluZyB0aGF0IHByZWNlZGVzIHRoZSBhcHBlbmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZSBjaGFyYWN0ZXIgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51c2V0aGlzcGFydF8xLjM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51c2V0aGlzcGFydF8xLjQ8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2ltcGx5IHNwZWNpZnlpbmcgdGhlIHN0cmluZyAiY29tbWVyY2lhbCIgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHdoaXRlbGlzdCBtYXRjaGVzIGFueSBleHBhbmRlZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IGRlZmluaXRpb24gdGhhdCBzdGFydHMKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBzdWNoIGFzICJjb21tZXJjaWFsX2ZvbyIgYW5kCisgICAgICAgICAgICAgICAgICAgICJjb21tZXJjaWFsX2JhciIsIHdoaWNoIGFyZSB0aGUgc3RyaW5ncyB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGZvciBoeXBvdGhldGljYWwgcmVjaXBlcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAiZm9vIiBhbmQgImJhciIgYXNzdW1pbmcgdGhvc2UgcmVjaXBlcyBzaW1wbHkgc3BlY2lmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaHVzLCB5b3UgY2FuIGNob29zZSB0byBleGhhdXN0aXZlbHkKKyAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRlIGVhY2ggbGljZW5zZSBmbGFnIGluIHRoZSB3aGl0ZWxpc3QgYW5kCisgICAgICAgICAgICAgICAgICAgIGFsbG93IG9ubHkgc3BlY2lmaWMgcmVjaXBlcyBpbnRvIHRoZSBpbWFnZSwgb3IKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgYSBzdHJpbmcgc3Vic2V0IHRoYXQgY2F1c2VzIGEgYnJvYWRlciByYW5nZSBvZgorICAgICAgICAgICAgICAgICAgICBtYXRjaGVzIHRvIGFsbG93IGEgcmFuZ2Ugb2YgcmVjaXBlcyBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzY2hlbWUgd29ya3MgZXZlbiBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPiBzdHJpbmcgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICBoYXMgPGZpbGVuYW1lPl8ke1BOfTwvZmlsZW5hbWU+IGFwcGVuZGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGJ1aWxkIHN5c3RlbSB0dXJucyB0aGUgbGljZW5zZSBmbGFnCisgICAgICAgICAgICAgICAgICAgICJjb21tZXJjaWFsXzEuMl9mb28iIGludG8gImNvbW1lcmNpYWxfMS4yX2Zvb19mb28iIGFuZAorICAgICAgICAgICAgICAgICAgICB3b3VsZCBtYXRjaCBib3RoIHRoZSBnZW5lcmFsICJjb21tZXJjaWFsIiBhbmQgdGhlIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICJjb21tZXJjaWFsXzEuMl9mb28iIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdCwgYXMKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgb3RoZXIgc2NlbmFyaW9zOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBhIHZlcnNpb25lZCBzdHJpbmcgaW4gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgImNvbW1lcmNpYWxfZm9vXzEuMiIgaW4gYSAiZm9vIiByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBleHBhbmRzIHRoaXMgc3RyaW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMl9mb28iLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUgdGhpcyBsaWNlbnNlIGZsYWcgd2l0aCBhIHdoaXRlbGlzdCB0aGF0IGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJpbmcgImNvbW1lcmNpYWwiIGFuZCB5b3UgbWF0Y2ggdGhlIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGFueSBvdGhlciBmbGFnIHRoYXQgc3RhcnRzIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICJjb21tZXJjaWFsIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlciB0aGUgc2FtZSBjaXJjdW1zdGFuY2VzLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tZXJjaWFsX2ZvbyIgaW4gdGhlIHdoaXRlbGlzdCBhbmQgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIG5vdCBvbmx5IG1hdGNoZXMgImNvbW1lcmNpYWxfZm9vXzEuMiIgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBtYXRjaGVzIGFueSBsaWNlbnNlIGZsYWcgd2l0aCB0aGUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vIiwgcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGJlIHZlcnkgc3BlY2lmaWMgYW5kIHVzZSBib3RoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYW5kIHZlcnNpb24gcGFydHMgaW4gdGhlIHdoaXRlbGlzdCAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tZXJjaWFsX2Zvb18xLjIiKSB0byBzcGVjaWZpY2FsbHkgbWF0Y2ggYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25lZCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9Im90aGVyLXZhcmlhYmxlcy1yZWxhdGVkLXRvLWNvbW1lcmNpYWwtbGljZW5zZXMiPgorICAgICAgICAgICAgICAgIDx0aXRsZT5PdGhlciBWYXJpYWJsZXMgUmVsYXRlZCB0byBDb21tZXJjaWFsIExpY2Vuc2VzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPdGhlciBoZWxwZnVsIHZhcmlhYmxlcyByZWxhdGVkIHRvIGNvbW1lcmNpYWwKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZSBoYW5kbGluZyBleGlzdCBhbmQgYXJlIGRlZmluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDT01NRVJDSUFMX0FVRElPX1BMVUdJTlMgPz0gIiIKKyAgICAgQ09NTUVSQ0lBTF9WSURFT19QTFVHSU5TID89ICIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZW5hYmxlIHRoZXNlIGNvbXBvbmVudHMsIHlvdSBjYW4gZG8gc28gYnkKKyAgICAgICAgICAgICAgICAgICAgbWFraW5nIHN1cmUgeW91IGhhdmUgc3RhdGVtZW50cyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDT01NRVJDSUFMX0FVRElPX1BMVUdJTlMgPSAiZ3N0LXBsdWdpbnMtdWdseS1tYWQgXAorICAgICAgICBnc3QtcGx1Z2lucy11Z2x5LW1wZWdhdWRpb3BhcnNlIgorICAgICBDT01NRVJDSUFMX1ZJREVPX1BMVUdJTlMgPSAiZ3N0LXBsdWdpbnMtdWdseS1tcGVnMmRlYyBcCisgICAgICAgIGdzdC1wbHVnaW5zLXVnbHktbXBlZ3N0cmVhbSBnc3QtcGx1Z2lucy1iYWQtbXBlZ3ZpZGVvcGFyc2UiCisgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSBjb21tZXJjaWFsX2dzdC1wbHVnaW5zLWJhZCBjb21tZXJjaWFsX3FtbXAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgY291bGQgYWxzbyBjcmVhdGUgYSBtYXRjaGluZyB3aGl0ZWxpc3QKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRob3NlIGNvbXBvbmVudHMgdXNpbmcgdGhlIG1vcmUgZ2VuZXJhbCAiY29tbWVyY2lhbCIKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHdoaXRlbGlzdCwgYnV0IHRoYXQgd291bGQgYWxzbyBlbmFibGUgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBvdGhlciBwYWNrYWdlcyB3aXRoIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyAiY29tbWVyY2lhbCIsIHdoaWNoIHlvdSBtYXkgb3IgbWF5IG5vdCB3YW50OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWwiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmeWluZyBhdWRpbyBhbmQgdmlkZW8gcGx1Z2lucyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09NTUVSQ0lBTF9BVURJT19QTFVHSU5TPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01NRVJDSUFMX1ZJREVPX1BMVUdJTlM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIChhbG9uZyB3aXRoIHRoZSBlbmFibGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPikgaW5jbHVkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMgb3IgY29tcG9uZW50cyBpbnRvIGJ1aWx0IGltYWdlcywgdGh1cyBhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgbWVkaWEgZm9ybWF0cyBvciBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz4KKyAgICAgICAgICAgIDx0aXRsZT5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uZSBvZiB0aGUgY29uY2VybnMgZm9yIGEgZGV2ZWxvcG1lbnQgb3JnYW5pemF0aW9uIHVzaW5nIG9wZW4gc291cmNlCisgICAgICAgICAgICAgICAgc29mdHdhcmUgaXMgaG93IHRvIG1haW50YWluIGNvbXBsaWFuY2Ugd2l0aCB2YXJpb3VzIG9wZW4gc291cmNlCisgICAgICAgICAgICAgICAgbGljZW5zaW5nIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBwcm9kdWN0LgorICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCBwcm92aWRlIGxlZ2FsIGFkdmljZSBvcgorICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpdmVseSBjb3ZlciBhbGwgc2NlbmFyaW9zLCBpdCBkb2VzCisgICAgICAgICAgICAgICAgcHJlc2VudCBtZXRob2RzIHRoYXQgeW91IGNhbiB1c2UgdG8KKyAgICAgICAgICAgICAgICBhc3Npc3QgeW91IGluIG1lZXRpbmcgdGhlIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzIGR1cmluZyBhIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2l0aCBodW5kcmVkcyBvZiBkaWZmZXJlbnQgb3BlbiBzb3VyY2UgbGljZW5zZXMgdGhhdCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IHRyYWNrcywgaXQgaXMgZGlmZmljdWx0IHRvIGtub3cgdGhlIHJlcXVpcmVtZW50cyBvZiBlYWNoCisgICAgICAgICAgICAgICAgYW5kIGV2ZXJ5IGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgbWFqb3IgRkxPU1MgbGljZW5zZXMgY2FuIGJlZ2luCisgICAgICAgICAgICAgICAgdG8gYmUgY292ZXJlZCBieQorICAgICAgICAgICAgICAgIGFzc3VtaW5nIHRoYXQgdGhyZWUgbWFpbiBhcmVhcyBvZiBjb25jZXJuIGV4aXN0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Tb3VyY2UgY29kZSBtdXN0IGJlIHByb3ZpZGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TGljZW5zZSB0ZXh0IGZvciB0aGUgc29mdHdhcmUgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db21waWxhdGlvbiBzY3JpcHRzIGFuZCBtb2RpZmljYXRpb25zIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUgbXVzdCBiZSBwcm92aWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIFRoZXJlIGFyZSBvdGhlciByZXF1aXJlbWVudHMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGVzZQorICAgICAgICAgICAgICAgIHRocmVlIGFuZCB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uCisgICAgICAgICAgICAgICAgKGUuZy4gdGhlIG1lY2hhbmlzbSB0aHJvdWdoIHdoaWNoIHNvdXJjZSBjb2RlIGlzIGRpc3RyaWJ1dGVkKS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgZGlmZmVyZW50IG9yZ2FuaXphdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWV0aG9kcyBvZiBjb21wbHlpbmcgd2l0aAorICAgICAgICAgICAgICAgIG9wZW4gc291cmNlIGxpY2Vuc2luZywgdGhpcyBzZWN0aW9uIGlzIG5vdCBtZWFudCB0byBpbXBseSB0aGF0CisgICAgICAgICAgICAgICAgdGhlcmUgaXMgb25seSBvbmUgc2luZ2xlIHdheSB0byBtZWV0IHlvdXIgY29tcGxpYW5jZSBvYmxpZ2F0aW9ucywKKyAgICAgICAgICAgICAgICBidXQgcmF0aGVyIHRvIGRlc2NyaWJlIG9uZSBtZXRob2Qgb2YgYWNoaWV2aW5nIGNvbXBsaWFuY2UuCisgICAgICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gZGVzY3JpYmVzIG1ldGhvZHMgc3VwcG9ydGVkIHRvIG1lZXQgdGhlCisgICAgICAgICAgICAgICAgcHJldmlvdXNseSBtZW50aW9uZWQgdGhyZWUgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IHRha2Ugc3RlcHMgdG8gbWVldCB0aGVzZSByZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgYW5kIHByaW9yIHRvIHJlbGVhc2luZyBpbWFnZXMsIHNvdXJjZXMsIGFuZCB0aGUgYnVpbGQgc3lzdGVtLAorICAgICAgICAgICAgICAgIHlvdSBzaG91bGQgYXVkaXQgYWxsIGFydGlmYWN0cyB0byBlbnN1cmUgY29tcGxldGVuZXNzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBnZW5lcmF0ZXMgYSBsaWNlbnNlIG1hbmlmZXN0IGR1cmluZworICAgICAgICAgICAgICAgICAgICBpbWFnZSBjcmVhdGlvbiB0aGF0IGlzIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPiR7REVQTE9ZX0RJUn0vbGljZW5zZXMvPHJlcGxhY2VhYmxlPmltYWdlX25hbWUtZGF0ZXN0YW1wPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBhc3Npc3Qgd2l0aCBhbnkgYXVkaXRzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Byb3ZpZGluZy10aGUtc291cmNlLWNvZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Qcm92aWRpbmcgdGhlIFNvdXJjZSBDb2RlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb21wbGlhbmNlIGFjdGl2aXRpZXMgc2hvdWxkIGJlZ2luIGJlZm9yZSB5b3UgZ2VuZXJhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlyc3QgdGhpbmcgeW91IHNob3VsZCBsb29rIGF0IGlzIHRoZSByZXF1aXJlbWVudCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRvcHMgdGhlIGxpc3QgZm9yIG1vc3QgY29tcGxpYW5jZSBncm91cHMgLSBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIGEgZmV3IHdheXMgb2YgbWVldGluZyB0aGlzCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPbmUgb2YgdGhlIGVhc2llc3Qgd2F5cyB0byBtZWV0IHRoaXMgcmVxdWlyZW1lbnQgaXMKKyAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgZW50aXJlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCwgaG93ZXZlciwgaGFzIGEgZmV3IGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBpcyB0aGUgc2l6ZSBvZiB0aGUgZGlyZWN0b3J5IHNpbmNlIGl0IGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgIGFsbCBzb3VyY2VzIHVzZWQgaW4gdGhlIGJ1aWxkIGFuZCBub3QganVzdCB0aGUgc291cmNlIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlbGVhc2VkIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJdCB3aWxsIGluY2x1ZGUgdG9vbGNoYWluIHNvdXJjZSwgYW5kIG90aGVyIGFydGlmYWN0cywgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgeW91IHdvdWxkIG5vdCBnZW5lcmFsbHkgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1vcmUgc2VyaW91cyBpc3N1ZSBmb3IgbW9zdCBjb21wYW5pZXMgaXMgYWNjaWRlbnRhbAorICAgICAgICAgICAgICAgICAgICByZWxlYXNlIG9mIHByb3ByaWV0YXJ5IHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hcmNoaXZlcic+PGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB0byBoZWxwIGF2b2lkIHNvbWUgb2YgdGhlc2UgY29uY2VybnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB5b3UgZW1wbG95IDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MsIHlvdSBuZWVkIHRvIGRlY2lkZSBob3cKKyAgICAgICAgICAgICAgICAgICAgeW91IGNob29zZSB0byBwcm92aWRlIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNvdXJjZSA8ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPiBjbGFzcyBjYW4gZ2VuZXJhdGUKKyAgICAgICAgICAgICAgICAgICAgdGFyYmFsbHMgYW5kIFNSUE1zIGFuZCBjYW4gY3JlYXRlIHRoZW0gd2l0aCB2YXJpb3VzIGxldmVscyBvZgorICAgICAgICAgICAgICAgICAgICBjb21wbGlhbmNlIGluIG1pbmQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uZSB3YXkgb2YgZG9pbmcgdGhpcyAoYnV0IGNlcnRhaW5seSBub3QgdGhlIG9ubHkgd2F5KSBpcyB0bworICAgICAgICAgICAgICAgICAgICByZWxlYXNlIGp1c3QgdGhlIHNvdXJjZSBhcyBhIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZG8gdGhpcyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVQgKz0gImFyY2hpdmVyIgorICAgICBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB5b3VyIGltYWdlLCB0aGUgc291cmNlIGZyb20gYWxsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBkZXBsb3kgcGFja2FnZXMgdG8gdGhlIGltYWdlIGlzIHBsYWNlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUExPWV9ESVIvc291cmNlczwvZmlsZW5hbWU+IGJhc2VkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzaW5nIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGVuYWJsZXMgeW91IHRvIGNvbXBseSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cyBjb25jZXJuaW5nIHByb3ZpZGluZyB0aGUgdW5tb2RpZmllZCBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBjYW4KKyAgICAgICAgICAgICAgICAgICAgZ2V0IGxhcmdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIHdheSB0byBoZWxwIG1pdGlnYXRlIHRoZSBzaXplIGlzc3VlIGlzIHRvIG9ubHkgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICB0YXJiYWxscyBmb3IgbGljZW5zZXMgdGhhdCByZXF1aXJlIHRoZSByZWxlYXNlIG9mCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICAgTGV0IHVzIGFzc3VtZSB5b3UgYXJlIG9ubHkgY29uY2VybmVkIHdpdGggR1BMIGNvZGUgYXMKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgc2NyaXB0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgU2NyaXB0IHRvIGFyY2hpdmUgYSBzdWJzZXQgb2YgcGFja2FnZXMgbWF0Y2hpbmcgc3BlY2lmaWMgbGljZW5zZShzKQorICAgICAjIFNvdXJjZSBhbmQgbGljZW5zZSBmaWxlcyBhcmUgY29waWVkIGludG8gc3ViIGZvbGRlcnMgb2YgcGFja2FnZSBmb2xkZXIKKyAgICAgIyBNdXN0IGJlIHJ1biBmcm9tIGJ1aWxkIGZvbGRlcgorICAgICAjIS9iaW4vYmFzaAorICAgICBzcmNfcmVsZWFzZV9kaXI9InNvdXJjZS1yZWxlYXNlIgorICAgICBta2RpciAtcCAkc3JjX3JlbGVhc2VfZGlyCisgICAgIGZvciBhIGluIHRtcC9kZXBsb3kvc291cmNlcy8qOyBkbworICAgICAgICBmb3IgZCBpbiAkYS8qOyBkbworICAgICAgICAgICAjIEdldCBwYWNrYWdlIG5hbWUgZnJvbSBwYXRoCisgICAgICAgICAgIHA9YGJhc2VuYW1lICRkYAorICAgICAgICAgICBwPSR7cCUtKn0KKyAgICAgICAgICAgcD0ke3AlLSp9CisgICAgICAgICAgICMgT25seSBhcmNoaXZlIEdQTCBwYWNrYWdlcyAodXBkYXRlICpHUEwqIHJlZ2V4IGZvciB5b3VyIGxpY2Vuc2UgY2hlY2spCisgICAgICAgICAgIG51bWZpbGVzPWBscyB0bXAvZGVwbG95L2xpY2Vuc2VzLyRwLypHUEwqIDI+IC9kZXYvbnVsbCB8IHdjIC1sYAorICAgICAgICAgICBpZiBbICRudW1maWxlcyAtZ3QgMSBdOyB0aGVuCisgICAgICAgICAgICAgIGVjaG8gQXJjaGl2aW5nICRwCisgICAgICAgICAgICAgIG1rZGlyIC1wICRzcmNfcmVsZWFzZV9kaXIvJHAvc291cmNlCisgICAgICAgICAgICAgIGNwICRkLyogJHNyY19yZWxlYXNlX2Rpci8kcC9zb3VyY2UgMj4gL2Rldi9udWxsCisgICAgICAgICAgICAgIG1rZGlyIC1wICRzcmNfcmVsZWFzZV9kaXIvJHAvbGljZW5zZQorICAgICAgICAgICAgICBjcCB0bXAvZGVwbG95L2xpY2Vuc2VzLyRwLyogJHNyY19yZWxlYXNlX2Rpci8kcC9saWNlbnNlIDI+IC9kZXYvbnVsbAorICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgY291bGQgY3JlYXRlIGEgdGFyYmFsbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3BsX3NvdXJjZV9yZWxlYXNlPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZAorICAgICAgICAgICAgICAgICAgICBwcm92aWRlIHRoYXQgdG8gdGhlIGVuZCB1c2VyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3VsZCBiZSBhIHN0ZXAgdG93YXJkIGFjaGlldmluZyBjb21wbGlhbmNlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VjdGlvbiAzYSBvZiBHUEx2MiBhbmQgd2l0aCBzZWN0aW9uIDYgb2YgR1BMdjMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncHJvdmlkaW5nLWxpY2Vuc2UtdGV4dCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlByb3ZpZGluZyBMaWNlbnNlIFRleHQ8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uZSByZXF1aXJlbWVudCB0aGF0IGlzIG9mdGVuIG92ZXJsb29rZWQgaXMgaW5jbHVzaW9uCisgICAgICAgICAgICAgICAgICAgIG9mIGxpY2Vuc2UgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZXF1aXJlbWVudCBhbHNvIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggcHJpb3IgdG8KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGluZyB0aGUgZmluYWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFNvbWUgbGljZW5zZXMgcmVxdWlyZSB0aGUgbGljZW5zZSB0ZXh0IHRvIGFjY29tcGFueQorICAgICAgICAgICAgICAgICAgICB0aGUgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFjaGlldmUgdGhpcyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDT1BZX0xJQ19NQU5JRkVTVCA9ICIxIgorICAgICBDT1BZX0xJQ19ESVJTID0gIjEiCisgICAgIExJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0UgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhlc2Ugc3RhdGVtZW50cyB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGVuc3VyZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgbGljZW5zZXMgY29sbGVjdGVkIGR1cmluZyBwYWNrYWdlIGdlbmVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYXJlIGluY2x1ZGVkIG9uIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2V0dGluZyBhbGwgdGhyZWUgdmFyaWFibGVzIHRvICIxIiByZXN1bHRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgaGF2aW5nIHR3byBjb3BpZXMgb2YgdGhlIHNhbWUgbGljZW5zZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIGNvcHkgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3RoZXIgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvbGljZW5zZTwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHJlYXNvbiBmb3IgdGhpcyBiZWhhdmlvciBpcyBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09QWV9MSUNfRElSUyc+PGZpbGVuYW1lPkNPUFlfTElDX0RJUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT1BZX0xJQ19NQU5JRkVTVCc+PGZpbGVuYW1lPkNPUFlfTElDX01BTklGRVNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGEgY29weSBvZiB0aGUgbGljZW5zZSB3aGVuIHRoZSBpbWFnZSBpcyBidWlsdCBidXQgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvZmZlciBhIHBhdGggZm9yIGFkZGluZyBsaWNlbnNlcyBmb3IgbmV3bHkgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0byBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFX0NSRUFURV9QQUNLQUdFJz48ZmlsZW5hbWU+TElDRU5TRV9DUkVBVEVfUEFDS0FHRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHMgYSBzZXBhcmF0ZSBwYWNrYWdlIGFuZCBhbiB1cGdyYWRlIHBhdGggZm9yIGFkZGluZworICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgdG8gYW4gaW1hZ2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIHRoZSBzb3VyY2UgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MgaGFzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWQgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWQgc291cmNlIHRoYXQgY29udGFpbnMgdGhlIGxpY2Vuc2UgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBoYXZlIGFscmVhZHkgbWV0IHRoZSByZXF1aXJlbWVudHMgZm9yIGluY2x1c2lvbgorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgbGljZW5zZSBpbmZvcm1hdGlvbiB3aXRoIHNvdXJjZSBhcyBkZWZpbmVkIGJ5IHRoZSBHUEwKKyAgICAgICAgICAgICAgICAgICAgYW5kIG90aGVyIG9wZW4gc291cmNlIGxpY2Vuc2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Byb3ZpZGluZy1jb21waWxhdGlvbi1zY3JpcHRzLWFuZC1zb3VyY2UtY29kZS1tb2RpZmljYXRpb25zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIENvbXBpbGF0aW9uIFNjcmlwdHMgYW5kIFNvdXJjZSBDb2RlIE1vZGlmaWNhdGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYWRkcmVzc2VkIGFsbCB3ZSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgIHByaW9yIHRvIGdlbmVyYXRpbmcgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgbmV4dCB0d28gcmVxdWlyZW1lbnRzIGFyZSBhZGRyZXNzZWQgZHVyaW5nIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgICBwYWNrYWdpbmcgb2YgdGhlIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IHJlbGVhc2luZyB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGxheWVycyB1c2VkIGR1cmluZyB0aGUgYnVpbGQsIHlvdSB3aWxsIGJlIHByb3ZpZGluZyBib3RoCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIHRoZSBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zIGluIG9uZQorICAgICAgICAgICAgICAgICAgICBzdGVwLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZGVwbG95bWVudCB0ZWFtIGhhcyBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBsYXllcjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBhIGRpc3RybyBsYXllciwgYW5kIHRob3NlIHRob3NlIGxheWVycyBhcmUgdXNlZCB0byBwYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZSwgcGFja2FnZSwgb3IgbW9kaWZ5IChpbiBhbnkgd2F5KSBhbnkgb3BlbiBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgaW5jbHVkZWQgaW4geW91ciByZWxlYXNlZCBpbWFnZXMsIHlvdQorICAgICAgICAgICAgICAgICAgICBtaWdodCBiZSByZXF1aXJlZCB0byByZWxlYXNlIHRob3NlIGxheWVycyB1bmRlciBzZWN0aW9uIDMgb2YKKyAgICAgICAgICAgICAgICAgICAgR1BMdjIgb3Igc2VjdGlvbiAxIG9mIEdQTHYzLgorICAgICAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoYXQgaXMgd2l0aCBhIGNsZWFuCisgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0IG9mIHRoZSB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBsYXllcnMgdXNlZAorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgeW91ciBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgV2UgYnVpbHQgdXNpbmcgdGhlICZESVNUUk9fTkFNRV9OT19DQVA7IGJyYW5jaCBvZiB0aGUgcG9reSByZXBvCisgICAgICQgZ2l0IGNsb25lIC1iICZESVNUUk9fTkFNRV9OT19DQVA7IGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgJCBjZCBwb2t5CisgICAgICMgV2UgYnVpbHQgdXNpbmcgdGhlIHJlbGVhc2VfYnJhbmNoIGZvciBvdXIgbGF5ZXJzCisgICAgICQgZ2l0IGNsb25lIC1iIHJlbGVhc2VfYnJhbmNoIGdpdDovL2dpdC5teWNvbXBhbnkuY29tL21ldGEtbXktYnNwLWxheWVyCisgICAgICQgZ2l0IGNsb25lIC1iIHJlbGVhc2VfYnJhbmNoIGdpdDovL2dpdC5teWNvbXBhbnkuY29tL21ldGEtbXktc29mdHdhcmUtbGF5ZXIKKyAgICAgIyBjbGVhbiB1cCB0aGUgLmdpdCByZXBvcworICAgICAkIGZpbmQgLiAtbmFtZSAiLmdpdCIgLXR5cGUgZCAtZXhlYyBybSAtcmYge30gXDsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmUgdGhpbmcgYSBkZXZlbG9wbWVudCBvcmdhbml6YXRpb24gbWlnaHQgd2FudCB0byBjb25zaWRlcgorICAgICAgICAgICAgICAgICAgICBmb3IgZW5kLXVzZXIgY29udmVuaWVuY2UgaXMgdG8gbW9kaWZ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZSB0aGF0IHdoZW4gdGhlIGVuZCB1c2VyIHV0aWxpemVzIHRoZSByZWxlYXNlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gYnVpbGQgYW4gaW1hZ2UsIHRoZSBkZXZlbG9wbWVudCBvcmdhbml6YXRpb24ncworICAgICAgICAgICAgICAgICAgICBsYXllcnMgYXJlIGluY2x1ZGVkIGluIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXV0b21hdGljYWxseToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFBPS1lfQkJMQVlFUlNfQ09ORl9WRVJTSU9OIGlzIGluY3JlYXNlZCBlYWNoIHRpbWUgYnVpbGQvY29uZi9iYmxheWVycy5jb25mCisgICAgICMgY2hhbmdlcyBpbmNvbXBhdGlibHkKKyAgICAgUE9LWV9CQkxBWUVSU19DT05GX1ZFUlNJT04gPSAiMiIKKworICAgICBCQlBBVEggPSAiJHtUT1BESVJ9IgorICAgICBCQkZJTEVTID89ICIiCisKKyAgICAgQkJMQVlFUlMgPz0gIiBcCisgICAgICAgIyNPRVJPT1QjIy9tZXRhIFwKKyAgICAgICAjI09FUk9PVCMjL21ldGEtcG9reSBcCisgICAgICAgIyNPRVJPT1QjIy9tZXRhLXlvY3RvLWJzcCBcCisgICAgICAgIyNPRVJPT1QjIy9tZXRhLW15bGF5ZXIgXAorICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbmQgcHJvdmlkaW5nIGFuIGFyY2hpdmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGxheWVycyAocmVjaXBlcywgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgICAgICAgICBlbmFibGVzIHlvdSB0byBtZWV0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHRvIGluY2x1ZGUgdGhlIHNjcmlwdHMgdG8gY29udHJvbCBjb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NvcHlpbmctbGljZW5zZXMtdGhhdC1kby1ub3QtZXhpc3QnPgorICAgICAgICAgICAgPHRpdGxlPkNvcHlpbmcgTGljZW5zZXMgdGhhdCBEbyBOb3QgRXhpc3Q8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21lIHBhY2thZ2VzLCBzdWNoIGFzIHRoZSBsaW51eC1maXJtd2FyZSBwYWNrYWdlLCBoYXZlIG1hbnkKKyAgICAgICAgICAgICAgICBsaWNlbnNlcyB0aGF0IGFyZSBub3QgaW4gYW55IHdheSBjb21tb24uCisgICAgICAgICAgICAgICAgWW91IGNhbiBhdm9pZCBhZGRpbmcgYSBsb3Qgb2YgdGhlc2UgdHlwZXMgb2YgY29tbW9uIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICBmaWxlcywgd2hpY2ggYXJlIG9ubHkgYXBwbGljYWJsZSB0byBhIHNwZWNpZmljIHBhY2thZ2UsIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU5PX0dFTkVSSUNfTElDRU5TRSc+PGZpbGVuYW1lPk5PX0dFTkVSSUNfTElDRU5TRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGlzIHZhcmlhYmxlIGFsc28gYXZvaWRzIFFBIGVycm9ycyB3aGVuIHlvdSB1c2UgYQorICAgICAgICAgICAgICAgIG5vbi1jb21tb24sIG5vbi1DTE9TRUQgbGljZW5zZSBpbiBhIHJlY2lwZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRS5BYmlsaXMudHh0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGFzIHRoZSBsaWNlbnNlIGZyb20gdGhlIGZldGNoZWQgc291cmNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5TRS5BYmlsaXMudHh0IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZy10aGUtZXJyb3ItcmVwb3J0aW5nLXRvb2wnPgorICAgICAgICA8dGl0bGU+VXNpbmcgdGhlIEVycm9yIFJlcG9ydGluZyBUb29sPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBlcnJvciByZXBvcnRpbmcgdG9vbCBhbGxvd3MgeW91IHRvCisgICAgICAgICAgICBzdWJtaXQgZXJyb3JzIGVuY291bnRlcmVkIGR1cmluZyBidWlsZHMgdG8gYSBjZW50cmFsIGRhdGFiYXNlLgorICAgICAgICAgICAgT3V0c2lkZSBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQsIHlvdSBjYW4gdXNlIGEgd2ViIGludGVyZmFjZSB0bworICAgICAgICAgICAgYnJvd3NlIGVycm9ycywgdmlldyBzdGF0aXN0aWNzLCBhbmQgcXVlcnkgZm9yIGVycm9ycy4KKyAgICAgICAgICAgIFRoZSB0b29sIHdvcmtzIHVzaW5nIGEgY2xpZW50LXNlcnZlciBzeXN0ZW0gd2hlcmUgdGhlIGNsaWVudAorICAgICAgICAgICAgcG9ydGlvbiBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIGluc3RhbGxlZCBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgVGhlIHNlcnZlciByZWNlaXZlcyB0aGUgaW5mb3JtYXRpb24gY29sbGVjdGVkIGFuZCBzYXZlcyBpdCBpbiBhCisgICAgICAgICAgICBkYXRhYmFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBsaXZlIGluc3RhbmNlIG9mIHRoZSBlcnJvciByZXBvcnRpbmcgc2VydmVyIGV4aXN0cyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnJz48L3VsaW5rPi4KKyAgICAgICAgICAgIFRoaXMgc2VydmVyIGV4aXN0cyBzbyB0aGF0IHdoZW4geW91IHdhbnQgdG8gZ2V0IGhlbHAgd2l0aAorICAgICAgICAgICAgYnVpbGQgZmFpbHVyZXMsIHlvdSBjYW4gc3VibWl0IGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICBmYWlsdXJlIGVhc2lseSBhbmQgdGhlbiBwb2ludCB0byB0aGUgVVJMIGluIHlvdXIgYnVnIHJlcG9ydAorICAgICAgICAgICAgb3Igc2VuZCBhbiBlbWFpbCB0byB0aGUgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91IHNlbmQgZXJyb3IgcmVwb3J0cyB0byB0aGlzIHNlcnZlciwgdGhlIHJlcG9ydHMgYmVjb21lCisgICAgICAgICAgICAgICAgcHVibGljbHkgdmlzaWJsZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdlbmFibGluZy1hbmQtdXNpbmctdGhlLXRvb2wnPgorICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIGFuZCBVc2luZyB0aGUgVG9vbDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBlcnJvciByZXBvcnRpbmcgdG9vbCBpcyBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGVuYWJsZSBpdCBieSBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJlcG9ydC1lcnJvcic+PGZpbGVuYW1lPnJlcG9ydC1lcnJvcjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgdG8gdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAicmVwb3J0LWVycm9yIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGVycm9yIHJlcG9ydGluZyBmZWF0dXJlIHN0b3JlcyBpbmZvcm1hdGlvbiBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxPR19ESVInPjxmaWxlbmFtZT5MT0dfRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L2Vycm9yLXJlcG9ydDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBjYW4gc3BlY2lmeSBhIGRpcmVjdG9yeSB0byB1c2UgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICB0byB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVSUl9SRVBPUlRfRElSID0gInBhdGgiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEVuYWJsaW5nIGVycm9yIHJlcG9ydGluZyBjYXVzZXMgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gY29sbGVjdAorICAgICAgICAgICAgICAgIHRoZSBlcnJvcnMgYW5kIHN0b3JlIHRoZW0gaW4gYSBmaWxlIGFzIHByZXZpb3VzbHkgZGVzY3JpYmVkLgorICAgICAgICAgICAgICAgIFdoZW4gdGhlIGJ1aWxkIHN5c3RlbSBlbmNvdW50ZXJzIGFuIGVycm9yLCBpdCBpbmNsdWRlcyBhCisgICAgICAgICAgICAgICAgY29tbWFuZCBhcyBwYXJ0IG9mIHRoZSBjb25zb2xlIG91dHB1dC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGUgY29tbWFuZCB0byBzZW5kIHRoZSBlcnJvciBmaWxlIHRvIHRoZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBzZW5kcyB0aGUgZXJyb3JzIHRvIGFuCisgICAgICAgICAgICAgICAgdXBzdHJlYW0gc2VydmVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzZW5kLWVycm9yLXJlcG9ydCAvaG9tZS9icmFuZHVzYS9wcm9qZWN0L3Bva3kvYnVpbGQvdG1wL2xvZy9lcnJvci1yZXBvcnQvZXJyb3JfcmVwb3J0XzIwMTQwMzE0MTYxNy50eHQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSBlcnJvcnMgYXJlIHNlbnQgdG8gYSBwdWJsaWMKKyAgICAgICAgICAgICAgICBkYXRhYmFzZSBhdmFpbGFibGUgYXQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcnPjwvdWxpbms+LCB3aGljaCBpcworICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGVudGlyZSBjb21tdW5pdHkuCisgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgYSBwYXJ0aWN1bGFyIHNlcnZlciwgeW91IGNhbiBzZW5kIHRoZSBlcnJvcnMKKyAgICAgICAgICAgICAgICB0byBhIGRpZmZlcmVudCBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIG9wdGlvbnM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNlbmQtZXJyb3ItcmVwb3J0IC0taGVscAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiBzZW5kaW5nIHRoZSBlcnJvciBmaWxlLCB5b3UgYXJlIHByb21wdGVkIHRvIHJldmlldyB0aGUKKyAgICAgICAgICAgICAgICBkYXRhIGJlaW5nIHNlbnQgYXMgd2VsbCBhcyB0byBwcm92aWRlIGEgbmFtZSBhbmQgb3B0aW9uYWwKKyAgICAgICAgICAgICAgICBlbWFpbCBhZGRyZXNzLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IHNhdGlzZnkgdGhlc2UgcHJvbXB0cywgdGhlIGNvbW1hbmQgcmV0dXJucyBhIGxpbmsKKyAgICAgICAgICAgICAgICBmcm9tIHRoZSBzZXJ2ZXIgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIGVudHJ5IGluIHRoZSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaGVyZSBpcyBhIHR5cGljYWwgbGluazoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy85NTIyLworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgdGhlIGxpbmsgdGFrZXMgeW91IHRvIGEgd2ViIGludGVyZmFjZSB3aGVyZSB5b3UgY2FuCisgICAgICAgICAgICAgICAgYnJvd3NlLCBxdWVyeSB0aGUgZXJyb3JzLCBhbmQgdmlldyBzdGF0aXN0aWNzLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkaXNhYmxpbmctdGhlLXRvb2wnPgorICAgICAgICAgICAgPHRpdGxlPkRpc2FibGluZyB0aGUgVG9vbDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGRpc2FibGUgdGhlIGVycm9yIHJlcG9ydGluZyBmZWF0dXJlLCBzaW1wbHkgcmVtb3ZlIG9yIGNvbW1lbnQKKyAgICAgICAgICAgICAgICBvdXQgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgZnJvbSB0aGUgZW5kIG9mIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4geW91cgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJyZXBvcnQtZXJyb3IiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHRpbmctdXAteW91ci1vd24tZXJyb3ItcmVwb3J0aW5nLXNlcnZlcic+CisgICAgICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBZb3VyIE93biBFcnJvciBSZXBvcnRpbmcgU2VydmVyPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2V0IHVwIHlvdXIgb3duIGVycm9yIHJlcG9ydGluZyBzZXJ2ZXIsIHlvdQorICAgICAgICAgICAgICAgIGNhbiBvYnRhaW4gdGhlIGNvZGUgZnJvbSB0aGUgR2l0IHJlcG9zaXRvcnkgYXQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9lcnJvci1yZXBvcnQtd2ViLyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBzZXQgaXQgdXAgYXJlIGluIHRoZSBSRUFETUUgZG9jdW1lbnQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImRldi11c2luZy13YXlsYW5kLWFuZC13ZXN0b24iPgorICAgICAgICA8dGl0bGU+VXNpbmcgV2F5bGFuZCBhbmQgV2VzdG9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2F5bGFuZF8oZGlzcGxheV9zZXJ2ZXJfcHJvdG9jb2wpJz5XYXlsYW5kPC91bGluaz4KKyAgICAgICAgICAgIGlzIGEgY29tcHV0ZXIgZGlzcGxheSBzZXJ2ZXIgcHJvdG9jb2wgdGhhdAorICAgICAgICAgICAgcHJvdmlkZXMgYSBtZXRob2QgZm9yIGNvbXBvc2l0aW5nIHdpbmRvdyBtYW5hZ2VycyB0byBjb21tdW5pY2F0ZQorICAgICAgICAgICAgZGlyZWN0bHkgd2l0aCBhcHBsaWNhdGlvbnMgYW5kIHZpZGVvIGhhcmR3YXJlIGFuZCBleHBlY3RzIHRoZW0gdG8KKyAgICAgICAgICAgIGNvbW11bmljYXRlIHdpdGggaW5wdXQgaGFyZHdhcmUgdXNpbmcgb3RoZXIgbGlicmFyaWVzLgorICAgICAgICAgICAgVXNpbmcgV2F5bGFuZCB3aXRoIHN1cHBvcnRpbmcgdGFyZ2V0cyBjYW4gcmVzdWx0IGluIGJldHRlciBjb250cm9sCisgICAgICAgICAgICBvdmVyIGdyYXBoaWNzIGZyYW1lIHJlbmRlcmluZyB0aGFuIGFuIGFwcGxpY2F0aW9uIG1pZ2h0IG90aGVyd2lzZQorICAgICAgICAgICAgYWNoaWV2ZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdGhlIFdheWxhbmQgcHJvdG9jb2wgbGlicmFyaWVzIGFuZCB0aGUKKyAgICAgICAgICAgIHJlZmVyZW5jZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXlsYW5kXyhkaXNwbGF5X3NlcnZlcl9wcm90b2NvbCkjV2VzdG9uJz5XZXN0b248L3VsaW5rPgorICAgICAgICAgICAgY29tcG9zaXRvciBhcyBwYXJ0IG9mIGl0cyByZWxlYXNlLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBpbnRlZ3JhdGVkIHBhY2thZ2VzIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBsYXllciBvZiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIFNwZWNpZmljYWxseSwgeW91IGNhbiBmaW5kIHRoZSByZWNpcGVzIHRoYXQgYnVpbGQgYm90aCBXYXlsYW5kCisgICAgICAgICAgICBhbmQgV2VzdG9uIGF0IDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZDwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGJ1aWxkIGJvdGggdGhlIFdheWxhbmQgYW5kIFdlc3RvbiBwYWNrYWdlcyBmb3IgdXNlIG9ubHkKKyAgICAgICAgICAgIHdpdGggdGFyZ2V0cyB0aGF0IGFjY2VwdCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lc2FfKGNvbXB1dGVyX2dyYXBoaWNzKSc+TWVzYSAzRCBhbmQgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZTwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggaXMgYWxzbyBrbm93biBhcyBNZXNhIERSSS4KKyAgICAgICAgICAgIFRoaXMgaW1wbGllcyB0aGF0IHlvdSBjYW5ub3QgYnVpbGQgYW5kIHVzZSB0aGUgcGFja2FnZXMgaWYgeW91cgorICAgICAgICAgICAgdGFyZ2V0IHVzZXMsIGZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IEVtYmVkZGVkIE1lZGlhCisgICAgICAgICAgICBhbmQgR3JhcGhpY3MgRHJpdmVyCisgICAgICAgICAgICAoPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gRU1HRCkgdGhhdAorICAgICAgICAgICAgb3ZlcnJpZGVzIE1lc2EgRFJJLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRHVlIHRvIGxhY2sgb2YgRUdMIHN1cHBvcnQsIFdlc3RvbiAxLjAuMyB3aWxsIG5vdCBydW4KKyAgICAgICAgICAgICAgICBkaXJlY3RseSBvbiB0aGUgZW11bGF0ZWQgUUVNVSBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIHZlcnNpb24gb2YgV2VzdG9uIHdpbGwgcnVuIHVuZGVyIFggZW11bGF0aW9uCisgICAgICAgICAgICAgICAgd2l0aG91dCBpc3N1ZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyB0byBpbXBsZW1lbnQgV2F5bGFuZCBhbmQKKyAgICAgICAgICAgIHVzZSB0aGUgV2VzdG9uIGNvbXBvc2l0b3Igd2hlbiBidWlsZGluZyBhbiBpbWFnZSBmb3IgYSBzdXBwb3J0aW5nCisgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxpbmctd2F5bGFuZC1pbi1hbi1pbWFnZSI+CisgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgV2F5bGFuZCBpbiBhbiBJbWFnZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGVuYWJsZSBXYXlsYW5kLCB5b3UgbmVlZCB0byBlbmFibGUgaXQgdG8gYmUgYnVpbHQgYW5kIGVuYWJsZQorICAgICAgICAgICAgICAgIGl0IHRvIGJlIGluY2x1ZGVkIChpbnN0YWxsZWQpIGluIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImVuYWJsZS1idWlsZGluZyI+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBjYXVzZSBNZXNhIHRvIGJ1aWxkIHRoZSA8ZmlsZW5hbWU+d2F5bGFuZC1lZ2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSBhbmQgV2VzdG9uIHRvIGJ1aWxkIFdheWxhbmQgd2l0aCBLZXJuZWwgTW9kZQorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL3dpa2kuYXJjaGxpbnV4Lm9yZy9pbmRleC5waHAvS2VybmVsX01vZGVfU2V0dGluZyc+S01TPC91bGluaz4pCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQsIGluY2x1ZGUgdGhlICJ3YXlsYW5kIiBmbGFnIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPX0ZFQVRVUkVTIj48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgd2F5bGFuZCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIFgxMSBoYXMgYmVlbiBlbmFibGVkIGVsc2V3aGVyZSwgV2VzdG9uIHdpbGwgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIFdheWxhbmQgd2l0aCBYMTEgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxlLWluc3RhbGxhdGlvbi1pbi1hbi1pbWFnZSI+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIFdheWxhbmQgZmVhdHVyZSBpbnRvIGFuIGltYWdlLCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCc+PGZpbGVuYW1lPkNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAid2F5bGFuZCB3ZXN0b24iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0icnVubmluZy13ZXN0b24iPgorICAgICAgICAgICAgPHRpdGxlPlJ1bm5pbmcgV2VzdG9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gcnVuIFdlc3RvbiBpbnNpZGUgWDExLCBlbmFibGluZyBpdCBhcyBkZXNjcmliZWQgZWFybGllciBhbmQKKyAgICAgICAgICAgICAgICBidWlsZGluZyBhIFNhdG8gaW1hZ2UgaXMgc3VmZmljaWVudC4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHJ1bm5pbmcgeW91ciBpbWFnZSB1bmRlciBTYXRvLCBhIFdlc3RvbiBMYXVuY2hlcgorICAgICAgICAgICAgICAgIGFwcGVhcnMgaW4gdGhlICJVdGlsaXR5IiBjYXRlZ29yeS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBydW4gV2VzdG9uIHRocm91Z2ggdGhlIGNvbW1hbmQtbGluZQorICAgICAgICAgICAgICAgIGludGVycHJldG9yIChDTEkpLCB3aGljaCBpcyBiZXR0ZXIgc3VpdGVkIGZvciBkZXZlbG9wbWVudCB3b3JrLgorICAgICAgICAgICAgICAgIFRvIHJ1biBXZXN0b24gdW5kZXIgdGhlIENMSSwgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZyBhZnRlcgorICAgICAgICAgICAgICAgIHlvdXIgaW1hZ2UgaXMgYnVpbHQ6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlc2UgY29tbWFuZHMgdG8gZXhwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WERHX1JVTlRJTUVfRElSPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1rZGlyIC1wIC90bXAvJFVTRVItd2VzdG9uCisgICAgIGNobW9kIDA3MDAgL3RtcC8kVVNFUi13ZXN0b24KKyAgICAgZXhwb3J0IFhER19SVU5USU1FX0RJUj0vdG1wLyRVU0VSLXdlc3RvbgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExhdW5jaCBXZXN0b24gaW4gdGhlIHNoZWxsOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB3ZXN0b24KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorCis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY3VzdG9taXphdGlvbi54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMTZiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworPCEtLQorCisgIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworLS0+CisKKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3Blcm1hbGlua3MueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9zZWN0aW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvY29tcG9uZW50LnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZGl2aXNpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9mb3JtYWwub2JqZWN0LmhlYWRpbmcueHNsIi8+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJ2Rldi1zdHlsZS5jc3MnIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNoYXB0ZXIuYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYXBwZW5kaXguYXV0b2xhYmVsIiBzZWxlY3Q9IkEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmxhYmVsLmluY2x1ZGVzLmNvbXBvbmVudC5sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLmlkLmF0dHJpYnV0ZXMiIHNlbGVjdD0iMSIgLz4KKworPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby5yc3QKaW5kZXggZGEwOGI3Yi4uMzIyNWM2YyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogVGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZGU1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbApAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdkZXYtbWFudWFsLWludHJvJz4KKworPHRpdGxlPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J2Rldi13ZWxjb21lJz4KKyAgICAgICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwhCisgICAgICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyByZWxldmFudCBwcm9jZWR1cmVzIG5lY2Vzc2FyeSBmb3IgZGV2ZWxvcGluZworICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQgKGkuZS4gZGV2ZWxvcGluZyBlbWJlZGRlZCBMaW51eAorICAgICAgICAgICAgaW1hZ2VzIGFuZCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvbiB0YXJnZXRlZCBkZXZpY2VzKS4KKyAgICAgICAgICAgIFRoZSBtYW51YWwgZ3JvdXBzIHJlbGF0ZWQgcHJvY2VkdXJlcyBpbnRvIGhpZ2hlci1sZXZlbCBzZWN0aW9ucy4KKyAgICAgICAgICAgIFByb2NlZHVyZXMgY2FuIGNvbnNpc3Qgb2YgaGlnaC1sZXZlbCBzdGVwcyBvciBsb3ctbGV2ZWwgc3RlcHMKKyAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IGhlbHAgeW91IGdldCBnb2luZyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byBzZXQgdXAKKyAgICAgICAgICAgICAgICAgICAgYSBidWlsZCBob3N0IGFuZCB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHN1Ym1pdCBjaGFuZ2VzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBDaGFuZ2VzIGNhbiBiZSBpbXByb3ZlbWVudHMsIG5ldyBmZWF0dXJlcywgb3IgYnVnCisgICAgICAgICAgICAgICAgICAgIGZpeGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFByb2NlZHVyZXMgcmVsYXRlZCB0byAiZXZlcnlkYXkiIHRhc2tzIHlvdSBwZXJmb3JtIHdoaWxlCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BpbmcgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBwcm9jZWR1cmVzIHRvIGNyZWF0ZSBhIGxheWVyLCBjdXN0b21pemUgYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHdyaXRlIGEgbmV3IHJlY2lwZSwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIG1hbnVhbCBkb2VzIG5vdCBwcm92aWRlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVkdW5kYW50IFN0ZXAtYnktc3RlcCBJbnN0cnVjdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwgY29udGFpbnMgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBpbnN0YWxsIGFuCisgICAgICAgICAgICAgICAgICAgIFNESywgd2hpY2ggaXMgdXNlZCB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucyBmb3IgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBvciBDb25jZXB0dWFsIE1hdGVyaWFsOgorICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgbWF0ZXJpYWwgcmVzaWRlcyBpbiBhbiBhcHByb3ByaWF0ZSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3lzdGVtIHZhcmlhYmxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERldGFpbGVkIFB1YmxpYyBJbmZvcm1hdGlvbiBOb3QgU3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBleGhhdXN0aXZlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgR2l0IGlzIGJldHRlciBjb3ZlcmVkIHdpdGggSW50ZXJuZXQKKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoZXMgYW5kIG9mZmljaWFsIEdpdCBEb2N1bWVudGF0aW9uIHRoYW4gdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J290aGVyLWluZm9ybWF0aW9uJz4KKyAgICAgICAgPHRpdGxlPk90aGVyIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhpcyBtYW51YWwgcHJlc2VudHMgaW5mb3JtYXRpb24gZm9yIG1hbnkgZGlmZmVyZW50CisgICAgICAgICAgICB0b3BpY3MsIHN1cHBsZW1lbnRhbCBpbmZvcm1hdGlvbiBpcyByZWNvbW1lbmRlZCBmb3IgZnVsbAorICAgICAgICAgICAgY29tcHJlaGVuc2lvbi4KKyAgICAgICAgICAgIEZvciBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+LgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aCBubyBrbm93bGVkZ2Ugb2YgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgYXMgYSB3YXkgb2YgcXVpY2tseSB0ZXN0aW5nIGl0IG91dCwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlJJRUZfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdWxpbms+CisgICAgICAgICAgICBkb2N1bWVudC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGxpbmtzIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnJzdAppbmRleCA5MzM3YTM1Li4yODMzNjg5IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFVzaW5nIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNTI2ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCkBAIC0wLDAgKzEsNjkxIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J2Rldi1tYW51YWwtcWVtdSc+CisKKzx0aXRsZT5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkKKyAgICAgICAgT3BlbiBTb3VyY2UgcHJvamVjdCBhcyBwYXJ0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50ICJ0b29sCisgICAgICAgIHNldCIuCisgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBib3RoIHByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gdXNlIHRoZQorICAgICAgICBRdWljayBFTVVsYXRvciAoUUVNVSkgYW5kIG90aGVyIFFFTVUgaW5mb3JtYXRpb24gaGVscGZ1bCBmb3IKKyAgICAgICAgZGV2ZWxvcG1lbnQgcHVycG9zZXMuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtZGV2LW92ZXJ2aWV3Jz4KKyAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgUUVNVSBpcyBhbgorICAgICAgICAgICAgZW11bGF0b3IgYW5kIHZpcnR1YWxpemF0aW9uIG1hY2hpbmUgdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBhCisgICAgICAgICAgICBjb21wbGV0ZSBpbWFnZSB5b3UgaGF2ZSBidWlsdCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhcyBqdXN0CisgICAgICAgICAgICBhbm90aGVyIHRhc2sgb24geW91ciBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICBRRU1VIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhbmQgdGVzdGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyBvbgorICAgICAgICAgICAgc3VwcG9ydGVkIFlvY3RvIFByb2plY3QgYXJjaGl0ZWN0dXJlcyB3aXRob3V0IGhhdmluZyBhY3R1YWwKKyAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFFFTVUgdG8gcnVuIGF1dG9tYXRlZAorICAgICAgICAgICAgUXVhbGl0eSBBc3N1cmFuY2UgKFFBKSB0ZXN0cyBvbiBmaW5hbCBpbWFnZXMgc2hpcHBlZCB3aXRoIGVhY2gKKyAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCB0aGUgc2FtZSBhcyBRRU1VIGluIGdlbmVyYWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBicmllZiByZWZlcmVuY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBRRU1VLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3Igb2ZmaWNpYWwgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gUUVNVSBpbiBnZW5lcmFsLCBzZWUKKyAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFpbl9QYWdlJz5RRU1VIFdlYnNpdGU8L3VsaW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgdGhlIFFFTVUgT3BlbiBTb3VyY2UgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFudWFsJz5Eb2N1bWVudGF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFFFTVUgdXNlciBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXFlbXUnPgorICAgICAgICA8dGl0bGU+UnVubmluZyBRRU1VPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHVzZSBRRU1VLCB5b3UgbmVlZCB0byBoYXZlIFFFTVUgaW5zdGFsbGVkIGFuZCBpbml0aWFsaXplZCBhcworICAgICAgICAgICAgd2VsbCBhcyBoYXZlIHRoZSBwcm9wZXIgYXJ0aWZhY3RzIChpLmUuIGltYWdlIGZpbGVzIGFuZCByb290CisgICAgICAgICAgICBmaWxlc3lzdGVtcykgYXZhaWxhYmxlLgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gcnVuIFFFTVU6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFFFTVUgaXMgbWFkZSBhdmFpbGFibGUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICB3YXlzLgorICAgICAgICAgICAgICAgICAgICBPbmUgbWV0aG9kIGlzIHRvIGluc3RhbGwgYSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykuCisgICAgICAgICAgICAgICAgICAgIFNlZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdGhlLXFlbXUtZW11bGF0b3InPlRoZSBRRU1VIEVtdWxhdG9yPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsCisgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXR0aW5nIFVwIHRoZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBIb3cgeW91IHNldCB1cCB0aGUgUUVNVSBlbnZpcm9ubWVudCBkZXBlbmRzIG9uIGhvdyB5b3UKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIFFFTVU6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNsb25lZCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgb3IgeW91IGRvd25sb2FkZWQgYW5kIHVucGFja2VkIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgdGFyYmFsbCwgeW91IGNhbiBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5CisgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBpbnN0YWxsZWQgYSBjcm9zcy10b29sY2hhaW4sIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4gdGhlIHNjcmlwdCB0aGF0IGluaXRpYWxpemVzIHRoZSB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIHNjcmlwdCBmcm9tIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3lfc2RrPC9maWxlbmFtZT4gZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgLiB+L3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWNvcmUyLTY0LXBva3ktbGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FbnN1cmUgdGhlIEFydGlmYWN0cyBhcmUgaW4gUGxhY2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB5b3UgaGF2ZSBhIHByZS1idWlsdCBrZXJuZWwgdGhhdAorICAgICAgICAgICAgICAgICAgICB3aWxsIGJvb3QgaW4gUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGFsc28gbmVlZCB0aGUgdGFyZ2V0IHJvb3QgZmlsZXN5c3RlbSBmb3IgeW91ciB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSdzIGFyY2hpdGVjdHVyZToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBwcmV2aW91c2x5IGJ1aWx0IGFuIGltYWdlIGZvciBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gdGhlIGFydGlmYWN0cyBhcmUgaW4gcGxhY2UgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgbm90IGJ1aWx0IGFuIGltYWdlLCB5b3UgY2FuIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19NQUNISU5FU19ETF9VUkw7Jz5tYWNoaW5lcy9xZW11PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhIGFuZCBkb3dubG9hZCBhIHByZS1idWlsdCBpbWFnZSB0aGF0IG1hdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGFyY2hpdGVjdHVyZSBhbmQgY2FuIGJlIHJ1biBvbiBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWV4dHJhY3RpbmctdGhlLXJvb3QtZmlsZXN5c3RlbSc+RXh0cmFjdGluZyB0aGUgUm9vdCBGaWxlc3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsCisgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXh0cmFjdCBhIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UnVuIFFFTVU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2ljIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gY29tbWFuZCBzeW50YXggaXMgYXMKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgWzxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxhY2VhYmxlPiBdICBbLi4uXQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEJhc2VkIG9uIHdoYXQgeW91IHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkb2VzIGEgZ29vZCBqb2Igb2YgZmlndXJpbmcKKyAgICAgICAgICAgICAgICAgICAgb3V0IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZG8uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBieSBkZWZhdWx0LCBRRU1VIGxvb2tzIGZvciB0aGUgbW9zdCByZWNlbnRseQorICAgICAgICAgICAgICAgICAgICBidWlsdCBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlIHRpbWVzdGFtcCB3aGVuIGl0IG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgIGxvb2sgZm9yIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBNaW5pbWFsbHksIHRocm91Z2ggdGhlIHVzZSBvZiBvcHRpb25zLCB5b3UgbXVzdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgIGVpdGhlciBhIG1hY2hpbmUgbmFtZSwgYSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qd2ljLnZtZGs8L2ZpbGVuYW1lPiksIG9yIGEga2VybmVsIGltYWdlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5iaW48L2ZpbGVuYW1lPikuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCBleGFtcGxlcyB0byBoZWxwIGlsbHVzdHJhdGUKKyAgICAgICAgICAgICAgICAgICAgZnVydGhlciBRRU1VOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzdGFydHMgUUVNVSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBzZXQgdG8gInFlbXV4ODYtNjQiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gYXV0b21hdGljYWxseSBmaW5kcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LTY0LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LTIwMjAwMjE4MDAyODUwLnJvb3Rmcy5leHQ0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYnVpbGQgY3JlYXRlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIG1vcmUgdGhhbiBvbmUgaW1hZ2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0cywgUUVNVSBmaW5kcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2VzIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0IGltYWdlIGFjY29yZGluZyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHByb2R1Y2VzIHRoZSBleGFjdCBzYW1lIHJlc3VsdHMgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQsIGhvd2V2ZXIsIHNwZWNpZmljYWxseSBwcm92aWRlcyB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcm9vdCBmaWxlc3lzdGVtIHR5cGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgcWVtdXg4Ni02NCBjb3JlLWltYWdlLW1pbmltYWwgZXh0NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3BlY2lmaWVzIHRvIGJvb3QgYW4gaW5pdGlhbCBSQU0gZGlzayBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0byBlbmFibGUgYXVkaW8gaW4gUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBjYXNlLCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCB2YXJpYWJsZSA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Bpby5neiIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgZm9yIGF1ZGlvIHRvIGJlIGVuYWJsZWQsIGFuIGFwcHJvcHJpYXRlIGRyaXZlciBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaW5zdGFsbGVkIChzZWUgdGhlIHByZXZpb3VzIGRlc2NyaXB0aW9uIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPiBvcHRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgcmFtZnMgYXVkaW8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgdG8gbGF1bmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoZSBjb21tYW5kIGRvZXMgcHJvdmlkZSBhIHJvb3QgZmlsZXN5c3RlbSB0eXBlLCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYWxzbyBtaW5pbWFsbHkgcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT4sIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT4gb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IGV4dDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHNwZWNpZmllcyB0byBib290IGEgdmlydHVhbCBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgKDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlcm1pbmVzIHRoZSBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlICg8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+KSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2LTY0IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdSAvaG9tZS9zY290dC1sZW5vdm8vdm0vY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQud2ljLnZtZGsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3dpdGNoaW5nLWJldHdlZW4tY29uc29sZXMnPgorICAgICAgICA8dGl0bGU+U3dpdGNoaW5nIEJldHdlZW4gQ29uc29sZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiBib290aW5nIG9yIHJ1bm5pbmcgUUVNVSwgeW91IGNhbiBzd2l0Y2ggYmV0d2VlbgorICAgICAgICAgICAgc3VwcG9ydGVkIGNvbnNvbGVzIGJ5IHVzaW5nCisgICAgICAgICAgICBDdHJsK0FsdCs8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgQ3RybCtBbHQrMyBzd2l0Y2hlcyB5b3UgdG8gdGhlIHNlcmlhbCBjb25zb2xlCisgICAgICAgICAgICBhcyBsb25nIGFzIHRoYXQgY29uc29sZSBpcyBlbmFibGVkLgorICAgICAgICAgICAgQmVpbmcgYWJsZSB0byBzd2l0Y2ggY29uc29sZXMgaXMgaGVscGZ1bCwgZm9yIGV4YW1wbGUsIGlmCisgICAgICAgICAgICB0aGUgbWFpbiBRRU1VIGNvbnNvbGUgYnJlYWtzIGZvciBzb21lIHJlYXNvbi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFVzdWFsbHksICIyIiBnZXRzIHlvdSB0byB0aGUgbWFpbiBjb25zb2xlIGFuZCAiMyIKKyAgICAgICAgICAgICAgICBnZXRzIHlvdSB0byB0aGUgc2VyaWFsIGNvbnNvbGUuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVtb3ZpbmctdGhlLXNwbGFzaC1zY3JlZW4nPgorICAgICAgICA8dGl0bGU+UmVtb3ZpbmcgdGhlIFNwbGFzaCBTY3JlZW48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiByZW1vdmUgdGhlIHNwbGFzaCBzY3JlZW4gd2hlbiBRRU1VIGlzIGJvb3RpbmcgYnkKKyAgICAgICAgICAgIHVzaW5nIEFsdCtsZWZ0LgorICAgICAgICAgICAgUmVtb3ZpbmcgdGhlIHNwbGFzaCBzY3JlZW4gYWxsb3dzIHlvdSB0byBzZWUgd2hhdCBpcworICAgICAgICAgICAgaGFwcGVuaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Rpc2FibGluZy10aGUtY3Vyc29yLWdyYWInPgorICAgICAgICA8dGl0bGU+RGlzYWJsaW5nIHRoZSBDdXJzb3IgR3JhYjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZGVmYXVsdCBRRU1VIGludGVncmF0aW9uIGNhcHR1cmVzIHRoZSBjdXJzb3Igd2l0aGluIHRoZQorICAgICAgICAgICAgbWFpbiB3aW5kb3cuCisgICAgICAgICAgICBJdCBkb2VzIHRoaXMgc2luY2Ugc3RhbmRhcmQgbW91c2UgZGV2aWNlcyBvbmx5IHByb3ZpZGUKKyAgICAgICAgICAgIHJlbGF0aXZlIGlucHV0IGFuZCBub3QgYWJzb2x1dGUgY29vcmRpbmF0ZXMuCisgICAgICAgICAgICBZb3UgdGhlbiBoYXZlIHRvIGJyZWFrIG91dCBvZiB0aGUgZ3JhYiB1c2luZyB0aGUgIkN0cmwrQWx0IgorICAgICAgICAgICAga2V5IGNvbWJpbmF0aW9uLgorICAgICAgICAgICAgSG93ZXZlciwgdGhlIFlvY3RvIFByb2plY3QncyBpbnRlZ3JhdGlvbiBvZiBRRU1VIGVuYWJsZXMKKyAgICAgICAgICAgIHRoZSB3YWNvbSBVU0IgdG91Y2ggcGFkIGRyaXZlciBieSBkZWZhdWx0IHRvIGFsbG93IGlucHV0CisgICAgICAgICAgICBvZiBhYnNvbHV0ZSBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIFRoaXMgZGVmYXVsdCBtZWFucyB0aGF0IHRoZSBtb3VzZSBjYW4gZW50ZXIgYW5kIGxlYXZlIHRoZQorICAgICAgICAgICAgbWFpbiB3aW5kb3cgd2l0aG91dCB0aGUgZ3JhYiB0YWtpbmcgZWZmZWN0IGxlYWRpbmcgdG8gYQorICAgICAgICAgICAgYmV0dGVyIHVzZXIgZXhwZXJpZW5jZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LXJ1bm5pbmctdW5kZXItYS1uZXR3b3JrLWZpbGUtc3lzdGVtLW5mcy1zZXJ2ZXInPgorICAgICAgICA8dGl0bGU+UnVubmluZyBVbmRlciBhIE5ldHdvcmsgRmlsZSBTeXN0ZW0gKE5GUykgU2VydmVyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBtZXRob2QgZm9yIHJ1bm5pbmcgUUVNVSBpcyB0byBydW4gaXQgb24gYW4gTkZTIHNlcnZlci4KKyAgICAgICAgICAgIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lIGZpbGUgc3lzdGVtCisgICAgICAgICAgICBmcm9tIGJvdGggdGhlIGJ1aWxkIGFuZCB0aGUgZW11bGF0ZWQgc3lzdGVtIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBzeXN0ZW0gZG9lcyBub3QgbmVlZCByb290CisgICAgICAgICAgICBwcml2aWxlZ2VzIHRvIHJ1bi4KKyAgICAgICAgICAgIEl0IHVzZXMgYSB1c2VyIHNwYWNlIE5GUyBzZXJ2ZXIgdG8gYXZvaWQgdGhhdC4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBzZXQgdXAgZm9yIHJ1bm5pbmcgUUVNVSB1c2luZyBhbiBORlMKKyAgICAgICAgICAgIHNlcnZlci4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRyYWN0IGEgUm9vdCBGaWxlc3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBhYmxlIHRvIHJ1biBRRU1VIGluIHlvdXIgZW52aXJvbm1lbnQsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IHNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYWxvbmcgd2l0aCB0aGUgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IHRha2VzIGEKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRhcmJhbGwgYW5kIGV4dHJhY3RzIGl0IGludG8gYSBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBzcGVjaWZ5LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB0YWtlcyBhIGZpbGUgc3lzdGVtIGFuZAorICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyBpdCB0byBhIGRpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC1uZnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBydW5xZW11LWV4dHJhY3Qtc2RrIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLXNhdG8tcWVtdXg4Ni02NC50YXIuYnoyIHRlc3QtbmZzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhcnQgUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGV4dHJhY3RlZCB0aGUgZmlsZSBzeXN0ZW0sIHlvdSBjYW4gcnVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gbm9ybWFsbHkgd2l0aCB0aGUgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhlbiBhbHNvIG1ha2UgY2hhbmdlcyB0byB0aGUgZmlsZXMgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uL3Rlc3QtbmZzPC9maWxlbmFtZT4gYW5kIHNlZSB0aG9zZSBjaGFuZ2VzCisgICAgICAgICAgICAgICAgICAgIGFwcGVhciBpbiB0aGUgaW1hZ2UgaW4gcmVhbCB0aW1lLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcnVucWVtdSBxZW11eDg2LTY0IC4vdGVzdC1uZnMKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2hvdWxkIHlvdSBuZWVkIHRvIHN0YXJ0LCBzdG9wLCBvciByZXN0YXJ0IHRoZSBORlMgc2hhcmUsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHN0YXJ0cyB0aGUgTkZTIHNoYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcnVucWVtdS1leHBvcnQtcm9vdGZzIHN0YXJ0IDxyZXBsYWNlYWJsZT5maWxlLXN5c3RlbS1sb2NhdGlvbjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzdG9wcyB0aGUgTkZTIHNoYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgIHJ1bnFlbXUtZXhwb3J0LXJvb3RmcyBzdG9wIDxyZXBsYWNlYWJsZT5maWxlLXN5c3RlbS1sb2NhdGlvbjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCByZXN0YXJ0cyB0aGUgTkZTIHNoYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcnVucWVtdS1leHBvcnQtcm9vdGZzIHJlc3RhcnQgPHJlcGxhY2VhYmxlPmZpbGUtc3lzdGVtLWxvY2F0aW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWt2bS1jcHUtY29tcGF0aWJpbGl0eSc+CisgICAgICAgIDx0aXRsZT5RRU1VIENQVSBDb21wYXRpYmlsaXR5IFVuZGVyIEtWTTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgUUVNVSBidWlsZCBjb21waWxlcyBmb3IgYW5kIHRhcmdldHMgNjQtYml0IGFuZCB4ODYKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlbWFyayc+Q29yZTwvdHJhZGVtYXJrPjIKKyAgICAgICAgICAgIER1byBwcm9jZXNzb3JzIGFuZCAzMi1iaXQgeDg2CisgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5QZW50aXVtPC90cmFkZW1hcms+CisgICAgICAgICAgICBJSSBwcm9jZXNzb3JzLgorICAgICAgICAgICAgUUVNVSBidWlsZHMgZm9yIGFuZCB0YXJnZXRzIHRoZXNlIENQVSB0eXBlcyBiZWNhdXNlIHRoZXkgZGlzcGxheQorICAgICAgICAgICAgYSBicm9hZCByYW5nZSBvZiBDUFUgZmVhdHVyZSBjb21wYXRpYmlsaXR5IHdpdGggbWFueSBjb21tb25seQorICAgICAgICAgICAgdXNlZCBDUFVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEZXNwaXRlIHRoaXMgYnJvYWQgcmFuZ2Ugb2YgY29tcGF0aWJpbGl0eSwgdGhlIENQVXMgY291bGQgc3VwcG9ydAorICAgICAgICAgICAgYSBmZWF0dXJlIHRoYXQgeW91ciBob3N0IENQVSBkb2VzIG5vdCBzdXBwb3J0LgorICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBzaXR1YXRpb24gaXMgbm90IGEgcHJvYmxlbSB3aGVuIFFFTVUgdXNlcyBzb2Z0d2FyZQorICAgICAgICAgICAgZW11bGF0aW9uIG9mIHRoZSBmZWF0dXJlLCBpdCBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gUUVNVSBpcworICAgICAgICAgICAgcnVubmluZyB3aXRoIEtWTSBlbmFibGVkLgorICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCBzb2Z0d2FyZSBjb21waWxlZCB3aXRoIGEgY2VydGFpbiBDUFUgZmVhdHVyZSBjcmFzaGVzCisgICAgICAgICAgICB3aGVuIHJ1biBvbiBhIENQVSB1bmRlciBLVk0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgZmVhdHVyZS4KKyAgICAgICAgICAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbSwgeW91IGNhbiBvdmVycmlkZSBRRU1VJ3MgcnVudGltZSBDUFUKKyAgICAgICAgICAgIHNldHRpbmcgYnkgY2hhbmdpbmcgdGhlIDxmaWxlbmFtZT5RQl9DUFVfS1ZNPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHZhcmlhYmxlIGluIDxmaWxlbmFtZT5xZW11Ym9vdC5jb25mPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeSdzPC91bGluaz4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2U8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGlzIHNldHRpbmcgc3BlY2lmaWVzIGEgPGZpbGVuYW1lPi1jcHU8L2ZpbGVuYW1lPiBvcHRpb24KKyAgICAgICAgICAgIHBhc3NlZCBpbnRvIFFFTVUgaW4gdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgUnVubmluZyA8ZmlsZW5hbWU+cWVtdSAtY3B1IGhlbHA8L2ZpbGVuYW1lPiByZXR1cm5zIGEgbGlzdCBvZgorICAgICAgICAgICAgYXZhaWxhYmxlIHN1cHBvcnRlZCBDUFUgdHlwZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1kZXYtcGVyZm9ybWFuY2UnPgorICAgICAgICA8dGl0bGU+UUVNVSBQZXJmb3JtYW5jZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2luZyBRRU1VIHRvIGVtdWxhdGUgeW91ciBoYXJkd2FyZSBjYW4gcmVzdWx0IGluIHNwZWVkIGlzc3VlcworICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlIG1peC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBpbWFnZSBpbiB0aGUKKyAgICAgICAgICAgIGVtdWxhdG9yIG9uIGFuIEludGVsLWJhc2VkIDMyLWJpdCAoeDg2KSBob3N0IG1hY2hpbmUgaXMgZmFzdAorICAgICAgICAgICAgYmVjYXVzZSB0aGUgdGFyZ2V0IGFuZCBob3N0IGFyY2hpdGVjdHVyZXMgbWF0Y2guCisgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4gaW1hZ2UKKyAgICAgICAgICAgIG9uIHRoZSBzYW1lIEludGVsLWJhc2VkIGhvc3QgY2FuIGJlIHNsb3dlci4KKyAgICAgICAgICAgIEJ1dCwgeW91IHN0aWxsIGFjaGlldmUgZmFpdGhmdWwgZW11bGF0aW9uIG9mIEFSTS1zcGVjaWZpYyBpc3N1ZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHNwZWVkIHRoaW5ncyB1cCwgdGhlIFFFTVUgaW1hZ2VzIHN1cHBvcnQgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPiB0byBjYWxsIGEgY3Jvc3MtY29tcGlsZXIgb3V0c2lkZSB0aGUKKyAgICAgICAgICAgIGVtdWxhdGVkIHN5c3RlbS4KKyAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gdG8gc3RhcnQgUUVNVSwgYW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3RjY2Q8L2ZpbGVuYW1lPiBhcHBsaWNhdGlvbiBpcyBwcmVzZW50IG9uIHRoZSBob3N0CisgICAgICAgICAgICBzeXN0ZW0sIGFueSBCaXRCYWtlIGNyb3NzLWNvbXBpbGluZyB0b29sY2hhaW4gYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXMgYXV0b21hdGljYWxseSB1c2VkIGZyb20gd2l0aGluIFFFTVUgc2ltcGx5IGJ5CisgICAgICAgICAgICBjYWxsaW5nIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IGRlZmluaW5nIHRoZSBjcm9zcy1jb21waWxlciB2YXJpYWJsZQorICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmV4cG9ydCBDQz0iZGlzdGNjIjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgdXNpbmcgYSBzdWl0YWJsZSBTREsgaW1hZ2Ugb3IgdGhlCisgICAgICAgICAgICBhcHByb3ByaWF0ZSBzdGFuZC1hbG9uZSB0b29sY2hhaW4gaXMgcHJlc2VudCwgdGhlIHRvb2xjaGFpbiBpcworICAgICAgICAgICAgYWxzbyBhdXRvbWF0aWNhbGx5IHVzZWQuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIG1lY2hhbmlzbXMgZXhpc3QgdGhhdCBsZXQgeW91IGNvbm5lY3QgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gdGhlIFFFTVUgZW11bGF0b3I6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSBwcm92aWRlcyBhIGZyYW1lYnVmZmVyIGludGVyZmFjZSB0aGF0IG1ha2VzCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCBjb25zb2xlcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbGx5LCBoZWFkbGVzcyBlbWJlZGRlZCBkZXZpY2VzIGhhdmUgYSBzZXJpYWwgcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIGNvbmZpZ3VyZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgaW1hZ2UgdG8gdXNlIHRoYXQgcG9ydCB0byBydW4gYSBjb25zb2xlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbm5lY3Rpb24gdXNlcyBzdGFuZGFyZCBJUCBuZXR3b3JraW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNTSCBzZXJ2ZXJzIGV4aXN0IGluIHNvbWUgUUVNVSBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IFFFTVUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBhIERyb3BiZWFyIHNlY3VyZSBzaGVsbCAoU1NIKSBzZXJ2ZXIgdGhhdCBydW5zCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSByb290IHBhc3N3b3JkIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWZ1bGwtY21kbGluZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gUUVNVSBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgT3BlblNTSCBpbnN0ZWFkIG9mIERyb3BiZWFyLgorICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nIHRoZXNlIFNTSCBzZXJ2ZXJzIGFsbG93IHlvdSB0byB1c2Ugc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gUUVNVSBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvd2V2ZXIsIGNvbnRhaW5zIG5vIFNTSCBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBwcm92aWRlZCwgdXNlci1zcGFjZSBORlMgc2VydmVyIHRvIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIHNlc3Npb24gdXNpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIG9uIHRoZSBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSB0aGlzIGNvbm5lY3Rpb24sIHlvdSBtdXN0IGV4dHJhY3QgYQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRhcmJhbGwgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCB5b3UgbXVzdCB0aGVuIHBvaW50IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHRvIHRoZSBleHRyYWN0ZWQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncWVtdS1ydW5uaW5nLXVuZGVyLWEtbmV0d29yay1maWxlLXN5c3RlbS1uZnMtc2VydmVyJz5SdW5uaW5nIFVuZGVyIGEgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBTZXJ2ZXI8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtZGV2LWNvbW1hbmQtbGluZS1zeW50YXgnPgorICAgICAgICA8dGl0bGU+UUVNVSBDb21tYW5kLUxpbmUgU3ludGF4PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBiYXNpYyA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgc3ludGF4IGlzIGFzCisgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgWzxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxhY2VhYmxlPiBdICBbLi4uXQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQmFzZWQgb24gd2hhdCB5b3UgcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkb2VzIGEgZ29vZCBqb2Igb2YgZmlndXJpbmcgb3V0IHdoYXQKKyAgICAgICAgICAgIHlvdSBhcmUgdHJ5aW5nIHRvIGRvLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQsIFFFTVUgbG9va3MgZm9yIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0CisgICAgICAgICAgICBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlIHRpbWVzdGFtcCB3aGVuIGl0IG5lZWRzIHRvIGxvb2sgZm9yIGFuCisgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgIE1pbmltYWxseSwgdGhyb3VnaCB0aGUgdXNlIG9mIG9wdGlvbnMsIHlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyCisgICAgICAgICAgICBhIG1hY2hpbmUgbmFtZSwgYSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+KndpYy52bWRrPC9maWxlbmFtZT4pLCBvciBhIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJpbjwvZmlsZW5hbWU+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBjb21tYW5kLWxpbmUgaGVscCBvdXRwdXQgZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgLS1oZWxwCisKKyAgICAgVXNhZ2U6IHlvdSBjYW4gcnVuIHRoaXMgc2NyaXB0IHdpdGggYW55IHZhbGlkIGNvbWJpbmF0aW9uCisgICAgIG9mIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChpbiBhbnkgb3JkZXIpOgorICAgICAgIEtFUk5FTCAtIHRoZSBrZXJuZWwgaW1hZ2UgZmlsZSB0byB1c2UKKyAgICAgICBST09URlMgLSB0aGUgcm9vdGZzIGltYWdlIGZpbGUgb3IgbmZzcm9vdCBkaXJlY3RvcnkgdG8gdXNlCisgICAgICAgTUFDSElORSAtIHRoZSBtYWNoaW5lIG5hbWUgKG9wdGlvbmFsLCBhdXRvZGV0ZWN0ZWQgZnJvbSBLRVJORUwgZmlsZW5hbWUgaWYgdW5zcGVjaWZpZWQpCisgICAgICAgU2ltcGxpZmllZCBRRU1VIGNvbW1hbmQtbGluZSBvcHRpb25zIGNhbiBiZSBwYXNzZWQgd2l0aDoKKyAgICAgICAgIG5vZ3JhcGhpYyAtIGRpc2FibGUgdmlkZW8gY29uc29sZQorICAgICAgICAgc2VyaWFsIC0gZW5hYmxlIGEgc2VyaWFsIGNvbnNvbGUgb24gL2Rldi90dHlTMAorICAgICAgICAgc2xpcnAgLSBlbmFibGUgdXNlciBuZXR3b3JraW5nLCBubyByb290IHByaXZpbGVnZXMgaXMgcmVxdWlyZWQKKyAgICAgICAgIGt2bSAtIGVuYWJsZSBLVk0gd2hlbiBydW5uaW5nIHg4Ni94ODZfNjQgKFZULWNhcGFibGUgQ1BVIHJlcXVpcmVkKQorICAgICAgICAga3ZtLXZob3N0IC0gZW5hYmxlIEtWTSB3aXRoIHZob3N0IHdoZW4gcnVubmluZyB4ODYveDg2XzY0IChWVC1jYXBhYmxlIENQVSByZXF1aXJlZCkKKyAgICAgICAgIHB1YmxpY3ZuYyAtIGVuYWJsZSBhIFZOQyBzZXJ2ZXIgb3BlbiB0byBhbGwgaG9zdHMKKyAgICAgICAgIGF1ZGlvIC0gZW5hYmxlIGF1ZGlvCisgICAgICAgICBbKi9db3ZtZiogLSBPVk1GIGZpcm13YXJlIGZpbGUgb3IgYmFzZSBuYW1lIGZvciBib290aW5nIHdpdGggVUVGSQorICAgICAgIHRjcHNlcmlhbD0mbHQ7cG9ydCZndDsgLSBzcGVjaWZ5IHRjcCBzZXJpYWwgcG9ydCBudW1iZXIKKyAgICAgICBiaW9zZGlyPSZsdDtkaXImZ3Q7IC0gc3BlY2lmeSBjdXN0b20gYmlvcyBkaXIKKyAgICAgICBiaW9zZmlsZW5hbWU9Jmx0O2ZpbGVuYW1lJmd0OyAtIHNwZWNpZnkgYmlvcyBmaWxlbmFtZQorICAgICAgIHFlbXVwYXJhbXM9Jmx0O3h5eiZndDsgLSBzcGVjaWZ5IGN1c3RvbSBwYXJhbWV0ZXJzIHRvIFFFTVUKKyAgICAgICBib290cGFyYW1zPSZsdDt4eXomZ3Q7IC0gc3BlY2lmeSBjdXN0b20ga2VybmVsIHBhcmFtZXRlcnMgZHVyaW5nIGJvb3QKKyAgICAgICBoZWxwLCAtaCwgLS1oZWxwOiBwcmludCB0aGlzIHRleHQKKworICAgICBFeGFtcGxlczoKKyAgICAgICBydW5xZW11CisgICAgICAgcnVucWVtdSBxZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LyZsdDtxZW11Ym9vdC5jb25mJmd0OworICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCBjb3JlLWltYWdlLXNhdG8gZXh0NAorICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCB3aWMtaW1hZ2UtbWluaW1hbCB3aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vYnpJbWFnZS1xZW11eDg2LmJpbiBwYXRoL3RvL25mc3Jvb3RkaXIvIHNlcmlhbAorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBpc28vaGRkaW1nL3dpYy52bWRrL3dpYy5xY293Mi93aWMudmRpL3JhbWZzL2NwaW8uZ3ouLi4KKyAgICAgICBydW5xZW11IHFlbXV4ODYgcWVtdXBhcmFtcz0iLW0gMjU2IgorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBib290cGFyYW1zPSJwc3BsYXNoPWZhbHNlIgorICAgICAgIHJ1bnFlbXUgcGF0aC90by8mbHQ7aW1hZ2UmZ3Q7LSZsdDttYWNoaW5lJmd0Oy53aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vJmx0O2ltYWdlJmd0Oy0mbHQ7bWFjaGluZSZndDsud2ljLnZtZGsKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWRldi1ydW5xZW11LWNvbW1hbmQtbGluZS1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gQ29tbWFuZC1MaW5lIE9wdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgZGVzY3JpcHRpb24gb2YgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3B0aW9ucyB5b3UgY2FuIHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBwcm92aWRlIHNvbWUgImlsbGVnYWwiIG9wdGlvbiBjb21iaW5hdGlvbiBvciBwZXJoYXBzCisgICAgICAgICAgICAgICAgeW91IGRvIG5vdCBwcm92aWRlIGVub3VnaCBpbiB0aGUgd2F5IG9mIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBwcm92aWRlcyBhcHByb3ByaWF0ZSBlcnJvcgorICAgICAgICAgICAgICAgIG1lc3NhZ2luZyB0byBoZWxwIHlvdSBjb3JyZWN0IHRoZSBwcm9ibGVtLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgUUVNVSBtYWNoaW5lIGFyY2hpdGVjdHVyZSwgd2hpY2ggbXVzdCBiZSAicWVtdWFybSIsCisgICAgICAgICAgICAgICAgICAgICJxZW11YXJtNjQiLCAicWVtdW1pcHMiLCAicWVtdW1pcHM2NCIsICJxZW11cHBjIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiLCBvciAicWVtdXg4Ni02NCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5WTTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UsIHdoaWNoIG11c3QgYmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHdoZW4geW91IHdhbnQgdG8gYm9vdCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGltYWdlIGZpbGVuYW1lIHlvdSBwcm92aWRlIG11c3QgY29udGFpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzdHJpbmdzOiAicWVtdXg4Ni02NCIsICJxZW11eDg2IiwgInFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAicWVtdW1pcHM2NCIsICJxZW11bWlwcyIsICJxZW11cHBjIiwgb3IgInFlbXVzaDQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ST09URlM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgQSByb290IGZpbGVzeXN0ZW0gdGhhdCBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGUgZXh0ZW5zaW9uczogImV4dDIiLCAiZXh0MyIsICJleHQ0IiwgImpmZnMyIiwKKyAgICAgICAgICAgICAgICAgICAgIm5mcyIsIG9yICJidHJmcyIuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlbmFtZSB5b3UgcHJvdmlkZSBmb3IgdGhpcyBvcHRpb24gdXNlcyAibmZzIiwgaXQKKyAgICAgICAgICAgICAgICAgICAgbXVzdCBwcm92aWRlIGFuIGV4cGxpY2l0IHJvb3QgZmlsZXN5c3RlbSBwYXRoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgaW1hZ2UsIHdoaWNoIGlzIGEgPGZpbGVuYW1lPi5iaW48L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIGEgPGZpbGVuYW1lPi5iaW48L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRldGVjdHMgaXQgYW5kIGFzc3VtZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbGUgaXMgYSBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgUUVNVSBtYWNoaW5lLCB3aGljaCBtdXN0IGJlIG9uZQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nOiAicWVtdXg4NiIsICJxZW11eDg2LTY0IiwgInFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAicWVtdWFybTY0IiwgInFlbXVtaXBzIiwgInFlbXVtaXBzNjQiLCBvciAicWVtdXBwYyIuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPiBvcHRpb25zIGFyZSBiYXNpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0cmllcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgaXQgYmFzZWQgb24gb3RoZXIgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmFtZnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHlvdSBhcmUgYm9vdGluZyBhbiBpbml0aWFsIFJBTSBkaXNrIChpbml0cmFtZnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCB3aGljaCBtZWFucyB0aGUgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcGlvLmd6PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlzbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIElTTyBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmlzbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsZXMgdGhlIHZpZGVvIGNvbnNvbGUsIHdoaWNoIHNldHMgdGhlIGNvbnNvbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgInR0eXMwIi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IGhhdmUgbG9nZ2VkIGludG8gYSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBkbyBub3Qgd2FudCB0byBkaXNhYmxlIGZvcndhcmRpbmcgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgWCBXaW5kb3cgU3lzdGVtIChYMTEpIHRvIHlvdXIgd29ya3N0YXRpb24gb3IgbGFwdG9wLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZXJpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhIHNlcmlhbCBjb25zb2xlIG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L3R0eVMwPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpb3NkaXI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXMgYSBjdXN0b20gZGlyZWN0b3J5IGZvciBCSU9TLCBWR0EgQklPUyBhbmQKKyAgICAgICAgICAgICAgICAgICAga2V5bWFwcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ymlvc2ZpbGVuYW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIEJJT1MgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gUUVNVSBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gdG8gcGFzcyBvcHRpb25zIG90aGVyIHRoYW4gdGhlIHNpbXBsZQorICAgICAgICAgICAgICAgICAgICAia3ZtIiBhbmQgInNlcmlhbCIgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ib290cGFyYW1zPVwiPHJlcGxhY2VhYmxlPnh5ejwvcmVwbGFjZWFibGU+XCI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGN1c3RvbSBib290IHBhcmFtZXRlcnMgZm9yIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1ZGlvPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYXVkaW8gaW4gUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gb3B0aW9uIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgZWl0aGVyICJxZW11eDg2IiBvciAicWVtdXg4Ni02NCIgaW4gb3JkZXIgZm9yIGF1ZGlvIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5zbmRfaW50ZWw4eDA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+c25kX2VuczEzNzA8L2ZpbGVuYW1lPiBkcml2ZXIgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gbGludXggZ3Vlc3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNsaXJwPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgInNsaXJwIiBuZXR3b3JraW5nLCB3aGljaCBpcyBhIGRpZmZlcmVudCB3YXkKKyAgICAgICAgICAgICAgICAgICAgb2YgbmV0d29ya2luZyB0aGF0IGRvZXMgbm90IG5lZWQgcm9vdCBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gaXMgbm90IGFzIGVhc3kgdG8gdXNlIG9yIGNvbXByZWhlbnNpdmUKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0na3ZtLWNvbmQnPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdoZW4gcnVubmluZyAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiCisgICAgICAgICAgICAgICAgICAgIFFFTVUgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB0byB3b3JrLCBhbGwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG11c3QgYmUgbWV0OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBtdXN0IGJlIGVpdGhlcgorcWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB0aGUgS1ZNIG1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L2t2bTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgYnVpbGQgaG9zdCA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXMgdG8gYmUgYm90aCB3cml0YWJsZSBhbmQgcmVhZGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rdm0tdmhvc3Q8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBLVk0gd2l0aCBWSE9TVCBzdXBwb3J0IHdoZW4gcnVubmluZyAicWVtdXg4NiIKKyAgICAgICAgICAgICAgICAgICAgb3IgInFlbXV4ODYtNjQiIFFFTVUgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB3aXRoIFZIT1NUIHRvIHdvcmssIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0CisgICAgICAgICAgICAgICAgICAgIGJlIG1ldDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdrdm0tY29uZCc+a3ZtPC9saW5rPiBvcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zIG11c3QgYmUgbWV0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB2aXJ0aW8gbmV0IGRldmljZSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPi9kZXYvdmhvc3QtbmV0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGhvc3QgPGZpbGVuYW1lPi9kZXYvdmhvc3QtbmV0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIHRvIGJlIGVpdGhlciByZWFkYWJsZSBvciB3cml0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCAic2xpcnAtZW5hYmxlZCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWJsaWN2bmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhIFZOQyBzZXJ2ZXIgb3BlbiB0byBhbGwgaG9zdHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC5yc3QKaW5kZXggMzMzYzZhNS4uZDljMWU0ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmY5YWM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKQEAgLTAsMCArMSwxMjg4IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J2Rldi1tYW51YWwtc3RhcnQnPgorCis8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgZ3VpZGFuY2Ugb24gaG93IHRvIHByZXBhcmUgdG8gdXNlIHRoZQorICAgIFlvY3RvIFByb2plY3QuCisgICAgWW91IGNhbiBsZWFybiBhYm91dCBjcmVhdGluZyBhIHRlYW0gZW52aXJvbm1lbnQgdGhhdCBkZXZlbG9wcyB1c2luZyB0aGUKKyAgICBZb2N0byBQcm9qZWN0LCBob3cgdG8gc2V0IHVwIGEKKyAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+LAorICAgIGhvdyB0byBsb2NhdGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBhbmQgaG93IHRvIGNyZWF0ZSBsb2NhbAorICAgIEdpdCByZXBvc2l0b3JpZXMuCis8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY2hhbmdlcy1jb2xsYWJvcmF0ZSI+CisgICAgPHRpdGxlPkNyZWF0aW5nIGEgVGVhbSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGNsZWFyIGhvdyB5b3UgY2FuIHVzZSB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBpbiBhIHRlYW0gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG9yIGhvdyB0byBzY2FsZSBpdCBmb3IgYQorICAgICAgICBsYXJnZSB0ZWFtIG9mIGRldmVsb3BlcnMuCisgICAgICAgIFlvdSBjYW4gYWRhcHQgdGhlIFlvY3RvIFByb2plY3QgdG8gbWFueSBkaWZmZXJlbnQgdXNlIGNhc2VzIGFuZAorICAgICAgICBzY2VuYXJpb3M7CisgICAgICAgIGhvd2V2ZXIsIHRoaXMgZmxleGliaWxpdHkgY291bGQgY2F1c2UgZGlmZmljdWx0aWVzIGlmIHlvdSBhcmUgdHJ5aW5nCisgICAgICAgIHRvIGNyZWF0ZSBhIHdvcmtpbmcgc2V0dXAgdGhhdCBzY2FsZXMgZWZmZWN0aXZlbHkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHRvIHNldCB1cCB0aGlzIHR5cGUgb2YgZW52aXJvbm1lbnQsCisgICAgICAgIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHByb2NlZHVyZSB0aGF0IGdpdmVzIHlvdSBpbmZvcm1hdGlvbgorICAgICAgICB0aGF0IGNhbiBoZWxwIHlvdSBnZXQgdGhlIHJlc3VsdHMgeW91IHdhbnQuCisgICAgICAgIFRoZSBwcm9jZWR1cmUgaXMgaGlnaC1sZXZlbCBhbmQgcHJlc2VudHMgc29tZSBvZiB0aGUgcHJvamVjdCdzIG1vc3QKKyAgICAgICAgc3VjY2Vzc2Z1bCBleHBlcmllbmNlcywgcHJhY3RpY2VzLCBzb2x1dGlvbnMsIGFuZCBhdmFpbGFibGUKKyAgICAgICAgdGVjaG5vbG9naWVzIHRoYXQgaGF2ZSBwcm92ZWQgdG8gd29yayB3ZWxsIGluIHRoZSBwYXN0OworICAgICAgICBob3dldmVyLCBrZWVwIGluIG1pbmQsIHRoZSBwcm9jZWR1cmUgaGVyZSBpcyBzaW1wbHkgYSBzdGFydGluZyBwb2ludC4KKyAgICAgICAgWW91IGNhbiBidWlsZCBvZmYgdGhlc2Ugc3RlcHMgYW5kIGN1c3RvbWl6ZSB0aGUgcHJvY2VkdXJlIHRvIGZpdCBhbnkKKyAgICAgICAgcGFydGljdWxhciB3b3JraW5nIGVudmlyb25tZW50IGFuZCBzZXQgb2YgcHJhY3RpY2VzLgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gaXMgR29pbmcgdG8gYmUgRGV2ZWxvcGluZzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBmaXJzdCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hvIGlzIGdvaW5nIHRvIGJlIGRvaW5nIGFueXRoaW5nCisgICAgICAgICAgICAgICAgcmVsYXRlZCB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgZGV0ZXJtaW5lIHRoZWlyIHJvbGVzLgorICAgICAgICAgICAgICAgIE1ha2luZyB0aGlzIGRldGVybWluYXRpb24gaXMgZXNzZW50aWFsIHRvIGNvbXBsZXRpbmcKKyAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IHN0ZXBzLCB3aGljaCBhcmUgdG8gZ2V0IHlvdXIgZXF1aXBtZW50IHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgYW5kIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50J3MgaGFyZHdhcmUgdG9wb2xvZ3kuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyByb2xlcyBleGlzdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBkb2VzIGFwcGxpY2F0aW9uIGxldmVsIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0b3Agb2YgYW4gZXhpc3Rpbmcgc29mdHdhcmUgc3RhY2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcmUgU3lzdGVtIERldmVsb3Blcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgd29ya3Mgb24gdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gaW1hZ2UgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBFbmdpbmVlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMuIERlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYWxsIHNpdHVhdGlvbnMgbWlnaHQgbmVlZCBhIEJ1aWxkIEVuZ2luZWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IEVuZ2luZWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBjcmVhdGVzIGFuZCBtYW5hZ2VzIGF1dG9tYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIHRoYXQgYXJlIHVzZWQgdG8gZW5zdXJlIGFsbCBhcHBsaWNhdGlvbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlIHN5c3RlbSBkZXZlbG9wbWVudCBtZWV0cyBkZXNpcmVkIHF1YWxpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HYXRoZXIgdGhlIEhhcmR3YXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmFzZWQgb24gdGhlIHNpemUgYW5kIG1ha2UtdXAgb2YgdGhlIHRlYW0sIGdldCB0aGUgaGFyZHdhcmUKKyAgICAgICAgICAgICAgICB0b2dldGhlci4KKyAgICAgICAgICAgICAgICBJZGVhbGx5LCBhbnkgZGV2ZWxvcG1lbnQsIGJ1aWxkLCBvciB0ZXN0IGVuZ2luZWVyIHVzZXMKKyAgICAgICAgICAgICAgICBhIHN5c3RlbSB0aGF0IHJ1bnMgYSBzdXBwb3J0ZWQgTGludXggZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIFRoZXNlIHN5c3RlbXMsIGluIGdlbmVyYWwsIHNob3VsZCBiZSBoaWdoIHBlcmZvcm1hbmNlCisgICAgICAgICAgICAgICAgKGUuZy4gZHVhbCwgc2l4LWNvcmUgWGVvbnMgd2l0aCAyNCBHYnl0ZXMgb2YgUkFNIGFuZCBwbGVudHkKKyAgICAgICAgICAgICAgICBvZiBkaXNrIHNwYWNlKS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGhlbHAgZW5zdXJlIGVmZmljaWVuY3kgYnkgaGF2aW5nIGFueSBtYWNoaW5lcyB1c2VkCisgICAgICAgICAgICAgICAgZm9yIHRlc3Rpbmcgb3IgdGhhdCBydW4gQXV0b2J1aWxkZXJzIGJlIGFzIGhpZ2ggcGVyZm9ybWFuY2UKKyAgICAgICAgICAgICAgICBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgR2l2ZW4gc3VmZmljaWVudCBwcm9jZXNzaW5nIHBvd2VyLCB5b3UgbWlnaHQgYWxzbyBjb25zaWRlcgorICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGNvbnRhaW5lcnMgdG8gYmUgcnVuCisgICAgICAgICAgICAgICAgICAgIHVuZGVyIERvY2tlciwgd2hpY2ggaXMgZGVzY3JpYmVkIGxhdGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5kZXJzdGFuZCB0aGUgSGFyZHdhcmUgVG9wb2xvZ3kgb2YgdGhlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW52b2x2ZWQgYW5kIHRoZSBtYWtlLXVwCisgICAgICAgICAgICAgICAgb2YgdGhlIHRlYW0sIHlvdSBjYW4gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgdG9wb2xvZ3kgb2YgdGhlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgYSB2aXN1YWwgaWRlYSBvZiB0aGUgbWFjaGluZXMgYW5kIHRoZWlyIHJvbGVzCisgICAgICAgICAgICAgICAgYWNyb3NzIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKworPCEtLQorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgbW9kZXJhdGVseSBzaXplZCBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisKKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJ3cml0ZXJub3RlcyI+CisgICAgICAgICAgICAgICAgTmVlZCBmaWd1cmUuPC9wYXJhPgorLS0+CisKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIEdpdCBhcyBZb3VyIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBLZWVwaW5nIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgIChpLmUuIHJlY2lwZXMsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGNsYXNzZXMsIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgICAgICBhbmQgYW55IHNvZnR3YXJlIHlvdSBhcmUgZGV2ZWxvcGluZyB1bmRlciB0aGUgY29udHJvbCBvZiBhbiBTQ00KKyAgICAgICAgICAgICAgICBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGlzIGFkdmlzYWJsZS4KKyAgICAgICAgICAgICAgICBPZiBhbGwgb2YgdGhlIFNDTXMgc3VwcG9ydGVkIGJ5IEJpdEJha2UsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3Ryb25nbHkKKyAgICAgICAgICAgICAgICByZWNvbW1lbmRzIHVzaW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFjayB1cCwKKyAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIHdvcmsgcmVtb3RlbHksIGFuZCB0aGVuIGNvbm5lY3RzIGJhY2sgdG8gdGhlCisgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgcmVsYXRpdmVseSBlYXN5IHRvIHNldCB1cCBHaXQgc2VydmljZXMgYW5kIGNyZWF0ZQorICAgICAgICAgICAgICAgIGluZnJhc3RydWN0dXJlIGxpa2UKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZzwvdWxpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIGJhc2VkIG9uIHNlcnZlciBzb2Z0d2FyZSBjYWxsZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiB3aXRoIDxmaWxlbmFtZT5jZ2l0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBiZWluZyB1c2VkIHRvIGdlbmVyYXRlIHRoZSB3ZWIgaW50ZXJmYWNlIHRoYXQgbGV0cyB5b3UgdmlldyB0aGUKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIGlkZW50aWZpZXMgdXNlcnMKKyAgICAgICAgICAgICAgICB1c2luZyBTU0gga2V5cyBhbmQgYWxsb3dzIGJyYW5jaC1iYXNlZCBhY2Nlc3MgY29udHJvbHMgdG8KKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMgdGhhdCB5b3UgY2FuIGNvbnRyb2wgYXMgbGl0dGxlIG9yIGFzIG11Y2ggYXMKKyAgICAgICAgICAgICAgICBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgVGhlIHNldHVwIG9mIHRoZXNlIHNlcnZpY2VzIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcworICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzaXRlcyBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgZXhpc3QgdGhhdCBkZXNjcmliZQorICAgICAgICAgICAgICAgICAgIGhvdyB0byBwZXJmb3JtIHNldHVwOgorICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2NoNC04Lmh0bWwnPkdpdCBkb2N1bWVudGF0aW9uPC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZXMgaG93IHRvIGluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IG9uIHRoZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdG9saXRlLmNvbSc+R2l0b2xpdGU8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBmb3IgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9JbnRlcmZhY2VzLF9mcm9udGVuZHMsX2FuZF90b29scyc+SW50ZXJmYWNlcywgZnJvbnRlbmRzLCBhbmQgdG9vbHM8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIG9uIGhvdyB0byBjcmVhdGUgaW50ZXJmYWNlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udGVuZHMgZm9yIEdpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgdGhlIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgYXJlIGNyZWF0aW5nCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIG9uIHRvcCBvZiBleGlzdGluZyBzb2Z0d2FyZSBzdGFja3MuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCisgICAgICAgICAgICAgICAgdXNlZCBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQ6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbiB0aGF0IGNvbnRhaW5zIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlbiwgZGV2ZWxvcCB0aGUgYXBwbGljYXRpb24gY29kZSBvbiB0b3Agb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHdvcmtzIHdlbGwgZm9yIHNtYWxsIG51bWJlcnMgb2YgcmVsYXRpdmVseQorICAgICAgICAgICAgICAgICAgICAgICAgaXNvbGF0ZWQgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEtlZXAgeW91ciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zIHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoaXMgdGhyb3VnaCBwcm92aXNpb25pbmcgZWl0aGVyIGFzIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGRvd25sb2FkcyBvciBhcyB1cGRhdGVzIHRocm91Z2ggYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgbWVjaGFuaXNtIHVzaW5nIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgdXBkYXRlcyB0byBhbiBleGlzdGluZyB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhhY3QgbWVjaGFuaWNzIG9mIGhvdyBhbmQgd2hlbiB0byBkbyB0aGlzIGRlcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgb24gbG9jYWwgcG9saWN5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBtdWx0aXBsZSB0b29sY2hhaW5zIGluc3RhbGxlZCBsb2NhbGx5IGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBsb2NhdGlvbnMgdG8gYWxsb3cgZGV2ZWxvcG1lbnQgYWNyb3NzCisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgdGhlIENvcmUgRGV2ZWxvcG1lbnQgTWFjaGluZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgY29yZSBkZXZlbG9wZXJzIHdvcmsgb24gdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXRzZWxmLgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBiZXN0IHByYWN0aWNlcyBmb3Igc2V0dGluZyB1cCBtYWNoaW5lcworICAgICAgICAgICAgICAgIHVzZWQgZm9yIGRldmVsb3BpbmcgaW1hZ2VzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgb24gdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgc28gZGV2ZWxvcGVycworICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHJ1biB0aGVpciBvd24gYnVpbGRzIGFuZCBkaXJlY3RseSByZWJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgc3RhY2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgS2VlcCB0aGUgY29yZSBzeXN0ZW0gdW5jaGFuZ2VkIGFzIG11Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIGFuZCBkbyB5b3VyIHdvcmsgaW4gbGF5ZXJzIG9uIHRvcCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gZ2l2ZXMgeW91IGEgZ3JlYXRlciBsZXZlbCBvZiBwb3J0YWJpbGl0eSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRpbmcgdG8gbmV3IHZlcnNpb25zIG9mIHRoZSBjb3JlIHN5c3RlbSBvciBCb2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmUgbGF5ZXJzIGFtb25nc3QgdGhlIGRldmVsb3BlcnMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBwcm9qZWN0IGFuZCBjb250YWluIHRoZSBwb2xpY3kgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBkZWZpbmVzIHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBhbiBBdXRvYnVpbGRlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhcmUgb2Z0ZW4gdGhlIGNvcmUgb2YgdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgSXQgaXMgaGVyZSB0aGF0IGNoYW5nZXMgZnJvbSBpbmRpdmlkdWFsIGRldmVsb3BlcnMgYXJlIGJyb3VnaHQKKyAgICAgICAgICAgICAgICB0b2dldGhlciBhbmQgY2VudHJhbGx5IHRlc3RlZC4KKyAgICAgICAgICAgICAgICBCYXNlZCBvbiB0aGlzIGF1dG9tYXRlZCBidWlsZCBhbmQgdGVzdCBlbnZpcm9ubWVudCwgc3Vic2VxdWVudAorICAgICAgICAgICAgICAgIGRlY2lzaW9ucyBhYm91dCByZWxlYXNlcyBjYW4gYmUgbWFkZS4KKyAgICAgICAgICAgICAgICBBdXRvYnVpbGRlcnMgYWxzbyBhbGxvdyBmb3IgImNvbnRpbnVvdXMgaW50ZWdyYXRpb24iIHN0eWxlCisgICAgICAgICAgICAgICAgdGVzdGluZyBvZiBzb2Z0d2FyZSBjb21wb25lbnRzIGFuZCByZWdyZXNzaW9uIGlkZW50aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgYW5kIHRyYWNraW5nLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlNlZSAiPHVsaW5rIHVybD0naHR0cDovL2F1dG9idWlsZGVyLnlvY3RvcHJvamVjdC5vcmcnPllvY3RvIFByb2plY3QgQXV0b2J1aWxkZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgbGlua3MgdG8gYnVpbGRib3QuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgZm91bmQgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgICAgIHdvcmtzIHdlbGwgaW4gdGhpcyByb2xlLgorICAgICAgICAgICAgICAgIEEgcHVibGljIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycywgd2hpY2ggdGhlIFlvY3RvIFByb2plY3QgdGVhbSB1c2VzIHRvIHRlc3QgdGhlCisgICAgICAgICAgICAgICAgb3ZlcmFsbCBoZWFsdGggb2YgdGhlIHByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZlYXR1cmVzIG9mIHRoaXMgc3lzdGVtIGFyZToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUG9wdWxhdGVzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlIGNhY2hlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsIHdoaWNoIHRyaWdnZXIgYnVpbGRzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHMgYXJlIG1hZGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIHVuZGVyIHRoZSBRdWlja0VNVWxhdG9yIChRRU1VKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBvdXRwdXQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgVGVzdCBNYWNoaW5lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFVzZSBhIHNtYWxsIG51bWJlciBvZiBzaGFyZWQsIGhpZ2ggcGVyZm9ybWFuY2Ugc3lzdGVtcworICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgIERldmVsb3BlcnMgY2FuIHVzZSB0aGVzZSBzeXN0ZW1zIGZvciB3aWRlciwgbW9yZQorICAgICAgICAgICAgICAgIGV4dGVuc2l2ZSB0ZXN0aW5nIHdoaWxlIHRoZXkgY29udGludWUgdG8gZGV2ZWxvcAorICAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCisgICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KKyAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKKyAgICAgICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0CisgICAgICAgICAgICAgICAgYW5kIGEgc2luZ2xlIG1haW50YWluZXIgaGFuZGxlcyB0aGUgZmluYWwgInRvcC1vZi10cmVlIiBtZXJnZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgYSBtb3JlIGNvbGxlY3RpdmUgcHVzaCBtb2RlbC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCisgICAgICAgICAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAorICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKKyAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwtc3RydWN0dXJlZAorICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCisgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KKyAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCisgICAgICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZQorICAgICAgICAgICAgICAgIGxheWVyIG9mIHRoZSBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgY29tbXVuaXR5IGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywKKyAgICAgICAgICAgICAgICBzb21lb25lIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BtZW50IEVudmlyb25tZW50IFN1bW1hcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZSBwcmV2aW91cyBzdGVwcywgc29tZSBiZXN0IHByYWN0aWNlcyBleGlzdAorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjdGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPlRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cworICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSB0aGUgcHJvamVjdCdzIE1ldGFkYXRhIGFuZCBjb2RlIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSBHaXQgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGxvY2FsIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzIGZvciByZWxhdGVkIHVwc3RyZWFtIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHVwIHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgaXQgbWFrZXMgc2Vuc2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2V0IHVwIHRoZSBzc3RhdGUgY2FjaGUgb24gYSBzeXN0ZW0gdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGV2ZWxvcGVycyBpbiB0aGUgc2FtZSBvcmdhbml6YXRpb24gYW5kIHNoYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBzb3VyY2UgZGlyZWN0b3JpZXMgb24gdGhlaXIgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHVwIGFuIEF1dG9idWlsZGVyIGFuZCBoYXZlIGl0IHBvcHVsYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3N0YXRlIGNhY2hlIGFuZCBzb3VyY2UgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGVuY291cmFnZXMgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB0byBzZW5kIHBhdGNoZXMgdG8gdGhlIHByb2plY3QgdG8gZml4IGJ1Z3Mgb3IgYWRkCisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBzdWJtaXQgcGF0Y2hlcywgZm9sbG93IHRoZSBwcm9qZWN0IGNvbW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcyBmb3Igd3JpdGluZyBnb29kIGNvbW1pdCBtZXNzYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZW5kIGNoYW5nZXMgdG8gdGhlIGNvcmUgc29vbmVyIHRoYW4gbGF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIG90aGVycyBhcmUgbGlrZWx5IHRvIHJ1biBpbnRvIHRoZSBzYW1lIGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIG1haWxpbmcgbGlzdHMgdG8gdXNlLCBzZWUgdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgTGlzdHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2Rldi1wcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QnPgorICAgIDx0aXRsZT5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBwcm9jZWR1cmVzIHRvIHNldCB1cCBhIHN5c3RlbSB0byBiZSB1c2VkIGFzIHlvdXIKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPgorICAgICAgICBmb3IgZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBjYW4gYmUgYSBuYXRpdmUgTGludXggbWFjaGluZSAocmVjb21tZW5kZWQpLCBpdCBjYW4KKyAgICAgICAgYmUgYSBtYWNoaW5lIChMaW51eCwgTWFjLCBvciBXaW5kb3dzKSB0aGF0IHVzZXMKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAorICAgICAgICB3aGljaCBsZXZlcmFnZXMKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4gb3IgaXQgY2FuCisgICAgICAgIGJlIGEgV2luZG93cyBtYWNoaW5lIGNhcGFibGUgb2YgcnVubmluZyBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgKFdTTCkuCisgICAgICAgIDxub3RlPgorICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGgKKyAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCB2MTwvdWxpbms+LgorICAgICAgICAgIEl0IGlzIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkIHdpdGggV1NMdjIuCisgICAgICAgICAgSWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlIHRvCisgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsJz5XU0x2MjwvdWxpbms+LgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE9uY2UgeW91ciBidWlsZCBob3N0IGlzIHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIGZ1cnRoZXIgc3RlcHMgYXJlIG5lY2Vzc2FyeSBkZXBlbmRpbmcgb24gd2hhdCB5b3Ugd2FudCB0bworICAgICAgICBhY2NvbXBsaXNoLgorICAgICAgICBTZWUgdGhlIGZvbGxvd2luZyByZWZlcmVuY2VzIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcHJlcGFyZSBmb3IKKyAgICAgICAgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGRldmVsb3BtZW50IGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQ6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJTUCBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjcHJlcGFyaW5nLXlvdXItYnVpbGQtaG9zdC10by13b3JrLXdpdGgtYnNwLWxheWVycyc+UHJlcGFyaW5nIFlvdXIgQnVpbGQgSG9zdCB0byBXb3JrIFdpdGggQlNQIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCisgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPktlcm5lbCBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3ByZXBhcmluZy10aGUtYnVpbGQtaG9zdC10by13b3JrLW9uLXRoZS1rZXJuZWwnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLWEtbmF0aXZlLWxpbnV4LWhvc3QnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBhIE5hdGl2ZSBMaW51eCBIb3N0PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBwcmVwYXJlIGEgbmF0aXZlIExpbnV4IG1hY2hpbmUgYXMgeW91cgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBCdWlsZCBIb3N0OgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBhIFN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBoYXZlIGEgcmVhc29uYWJseSBjdXJyZW50IExpbnV4LWJhc2VkIGhvc3QKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBoYXZlIHRoZSBiZXN0IHJlc3VsdHMgd2l0aCBhIHJlY2VudCByZWxlYXNlIG9mCisgICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIERlYmlhbiwgVWJ1bnR1LCBSSEVMIG9yIENlbnRPUyBhcyB0aGVzZQorICAgICAgICAgICAgICAgICAgICByZWxlYXNlcyBhcmUgZnJlcXVlbnRseSB0ZXN0ZWQgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICBhbmQgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgdW5kZXIgdmFsaWRhdGlvbiBhbmQgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFuZCB0aGUgd2lraSBwYWdlIGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9EaXN0cmlidXRpb25fU3VwcG9ydCc+RGlzdHJpYnV0aW9uIFN1cHBvcnQ8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SGF2ZSBFbm91Z2ggRnJlZSBNZW1vcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91ciBzeXN0ZW0gc2hvdWxkIGhhdmUgYXQgbGVhc3QgNTAgR2J5dGVzIG9mIGZyZWUgZGlzaworICAgICAgICAgICAgICAgICAgICBzcGFjZSBmb3IgYnVpbGRpbmcgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZWV0IE1pbmltYWwgVmVyc2lvbiBSZXF1aXJlbWVudHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2hvdWxkIGJlIGFibGUgdG8gcnVuIG9uIGFueQorICAgICAgICAgICAgICAgICAgICBtb2Rlcm4gZGlzdHJpYnV0aW9uIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgZm9yCisgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYy4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjggb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjIDUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgZG9lcyBub3QgbWVldCBhbnkgb2YgdGhlc2UgdGhyZWUgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnRzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gcHJlcGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNvIHRoYXQgeW91IGNhbiBzdGlsbCB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIERldmVsb3BtZW50IEhvc3QgUGFja2FnZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWQgZGV2ZWxvcG1lbnQgaG9zdCBwYWNrYWdlcyB2YXJ5IGRlcGVuZGluZyBvbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QgYW5kIHdoYXQgeW91IHdhbnQgdG8gZG8gd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2ZWx5LCB0aGUgbnVtYmVyIG9mIHJlcXVpcmVkIHBhY2thZ2VzIGlzIGxhcmdlCisgICAgICAgICAgICAgICAgICAgIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gY292ZXIgYWxsIGNhc2VzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbGlzdHMgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIGFsbCBzY2VuYXJpb3MsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjb21wbGV0ZWQgdGhlIHByZXZpb3VzIHN0ZXBzLCB5b3UgYXJlIHJlYWR5IHRvCisgICAgICAgICAgICBjb250aW51ZSB1c2luZyBhIGdpdmVuIGRldmVsb3BtZW50IHBhdGggb24geW91ciBuYXRpdmUgTGludXgKKyAgICAgICAgICAgIG1hY2hpbmUuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKKyAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHdvcmsgb24gdGhlIGtlcm5lbCwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIFRvYXN0ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10by11c2UtY3JvcHMnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPiwKKyAgICAgICAgICAgIHlvdSBjYW4gY3JlYXRlIGEgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0CisgICAgICAgICAgICBpcyBvcGVyYXRpbmcgc3lzdGVtIGFnbm9zdGljLgorICAgICAgICAgICAgWW91IGNhbiBzZXQgdXAgYSBjb250YWluZXIgaW4gd2hpY2ggeW91IGNhbiBkZXZlbG9wIHVzaW5nIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBvbiBhIFdpbmRvd3MsIE1hYywgb3IgTGludXggIG1hY2hpbmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBnZW5lcmFsIHN0ZXBzIHRvIHByZXBhcmUgYSBXaW5kb3dzLCBNYWMsIG9yIExpbnV4CisgICAgICAgICAgICBtYWNoaW5lIGFzIHlvdXIgWW9jdG8gUHJvamVjdCBidWlsZCBob3N0OgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaGF0IFlvdXIgQnVpbGQgSG9zdCBOZWVkczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tL3doYXQtZG9ja2VyJz5Eb2NrZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBhIHNvZnR3YXJlIGNvbnRhaW5lciBwbGF0Zm9ybSB0aGF0IHlvdSBuZWVkIHRvIGluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGJ1aWxkIGhvc3QsIHlvdSBtaWdodCBoYXZlIHRvIGluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IHNvZnR3YXJlIHRvIHN1cHBvcnQgRG9ja2VyIGNvbnRhaW5lcnMuCisgICAgICAgICAgICAgICAgICAgIEdvIHRvIHRoZSBEb2NrZXIgaW5zdGFsbGF0aW9uIHBhZ2UgYW5kIHJlYWQgYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHJlcXVpcmVtZW50cyBpbgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vaW5zdGFsbC8jc3VwcG9ydGVkLXBsYXRmb3Jtcyc+U3VwcG9ydGVkIFBsYXRmb3JtczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgbmVlZHMgdG8gcnVuIGNvbnRhaW5lcnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNob29zZSBXaGF0IFRvIEluc3RhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHlvdXIgYnVpbGQgaG9zdCBtZWV0cyBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLCB5b3UgbmVlZCB0byBpbnN0YWxsICJEb2NrZXIgQ0UgU3RhYmxlIiBvcgorICAgICAgICAgICAgICAgICAgICB0aGUgIkRvY2tlciBUb29sYm94Ii4KKyAgICAgICAgICAgICAgICAgICAgTW9zdCBzaXR1YXRpb25zIGNhbGwgZm9yIERvY2tlciBDRS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBidWlsZCBob3N0IHRoYXQgZG9lcyBub3QgbWVldAorICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgKGUuZy4gUHJlLVdpbmRvd3MgMTAgb3IgV2luZG93cyAxMCAiSG9tZSIKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiksIHlvdSBtdXN0IGluc3RhbGwgRG9ja2VyIFRvb2xib3ggaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R28gdG8gdGhlIEluc3RhbGwgU2l0ZSBmb3IgWW91ciBQbGF0Zm9ybTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgbGluayBmb3IgdGhlIERvY2tlciBlZGl0aW9uIGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QncyBuYXRpdmUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGJ1aWxkIGhvc3QgaXMgcnVubmluZyBNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgV2luZG93cyBWZXJzaW9uIDEwIGFuZCB5b3Ugd2FudCB0aGUgRG9ja2VyIENFIFN0YWJsZQorICAgICAgICAgICAgICAgICAgICBlZGl0aW9uLCBjbGljayB0aGF0IGxpbmsgdW5kZXIgIlN1cHBvcnRlZCBQbGF0Zm9ybXMiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTb2Z0d2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVuZGVyc3Rvb2QgYWxsIHRoZSBwcmUtcmVxdWlzaXRlcywgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgYXBwcm9wcmlhdGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIHNwZWNpZmljIG1hY2hpbmUgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRoZSBzb2Z0d2FyZSB5b3UgbmVlZCB0byBpbnN0YWxsOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS9kb2NrZXItZm9yLXdpbmRvd3MvaW5zdGFsbC8jaW5zdGFsbC1kb2NrZXItZm9yLXdpbmRvd3MtZGVza3RvcC1hcHAnPkRvY2tlciBDRSBmb3IgV2luZG93czwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIFdpbmRvd3MgYnVpbGQgaG9zdHMgdGhhdCBtZWV0IHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZG9ja2VyLWZvci1tYWMvaW5zdGFsbC8jaW5zdGFsbC1hbmQtcnVuLWRvY2tlci1mb3ItbWFjJz5Eb2NrZXIgQ0UgZm9yIE1hY3M8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBNYWMgYnVpbGQgaG9zdHMgdGhhdCBtZWV0IHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vdG9vbGJveC90b29sYm94X2luc3RhbGxfd2luZG93cy8nPkRvY2tlciBUb29sYm94IGZvciBXaW5kb3dzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgV2luZG93cyBidWlsZCBob3N0cyB0aGF0IGRvIG5vdCBtZWV0IERvY2tlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vdG9vbGJveC90b29sYm94X2luc3RhbGxfbWFjLyc+RG9ja2VyIFRvb2xib3ggZm9yIE1hY09TPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgTWFjIGJ1aWxkIGhvc3RzIHRoYXQgZG8gbm90IG1lZXQgRG9ja2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS9pbnN0YWxsL2xpbnV4L2RvY2tlci1jZS9jZW50b3MvJz5Eb2NrZXIgQ0UgZm9yIENlbnRPUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIExpbnV4IGJ1aWxkIGhvc3RzIHJ1bm5pbmcgdGhlIENlbnRPUworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vaW5zdGFsbC9saW51eC9kb2NrZXItY2UvZGViaWFuLyc+RG9ja2VyIENFIGZvciBEZWJpYW48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBMaW51eCBidWlsZCBob3N0cyBydW5uaW5nIHRoZSBEZWJpYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2luc3RhbGwvbGludXgvZG9ja2VyLWNlL2ZlZG9yYS8nPkRvY2tlciBDRSBmb3IgRmVkb3JhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgTGludXggYnVpbGQgaG9zdHMgcnVubmluZyB0aGUgRmVkb3JhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS9pbnN0YWxsL2xpbnV4L2RvY2tlci1jZS91YnVudHUvJz5Eb2NrZXIgQ0UgZm9yIFVidW50dTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIExpbnV4IGJ1aWxkIGhvc3RzIHJ1bm5pbmcgdGhlIFVidW50dQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgT3JpZW50IFlvdXJzZWxmIFdpdGggRG9ja2VyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5mYW1pbGlhciB3aXRoIERvY2tlciBhbmQgdGhlIGNvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgICBjb25jZXB0LCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2dldC1zdGFydGVkLyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBEb2NrZXIgb3IgRG9ja2VyIFRvb2xib3g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBiZSBhYmxlIHRvIGxhdW5jaCBEb2NrZXIgb3IgdGhlIERvY2tlciBUb29sYm94CisgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZlIGEgdGVybWluYWwgc2hlbGwgb24geW91ciBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgdGhlIENvbnRhaW5lcnMgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9kb2NrZXItd2luLW1hYy1kb2NzL3dpa2knPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBmb2xsb3cgdGhlIGRpcmVjdGlvbnMgZm9yIHlvdXIgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IChpLmUuIExpbnV4LCBNYWMsIG9yIFdpbmRvd3MpLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBjb21wbGV0ZSB0aGUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBoYXZlIHRoZSBQb2t5LCBFeHRlbnNpYmxlIFNESywgYW5kIFRvYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVycyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgdGhvc2UgbGlua3MgZnJvbSB0aGUgcGFnZSBhbmQgbGVhcm4gbW9yZQorICAgICAgICAgICAgICAgICAgICBhYm91dCB1c2luZyBlYWNoIG9mIHRob3NlIGNvbnRhaW5lcnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYSBjb250YWluZXIgc2V0IHVwLCBldmVyeXRoaW5nIGlzIGluIHBsYWNlIHRvCisgICAgICAgICAgICBkZXZlbG9wIGp1c3QgYXMgaWYgeW91IHdlcmUgcnVubmluZyBvbiBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lLgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFBva3kgY29udGFpbmVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESyBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgVG9hc3RlciBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10by11c2Utd3NsJz4KKyAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCAoV1NMdjIpPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGggPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1hYm91dCc+CisgICAgICAgICAgICBXaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXggKFdTTHYyKTwvdWxpbms+LCB5b3UgY2FuIGNyZWF0ZSBhCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgYWxsb3dzIHlvdSB0byBidWlsZAorICAgICAgICAgICAgb24gV2luZG93cy4gWW91IGNhbiBzZXQgdXAgYSBMaW51eCBkaXN0cmlidXRpb24gaW5zaWRlIFdpbmRvd3MKKyAgICAgICAgICAgIGluIHdoaWNoIHlvdSBjYW4gZGV2ZWxvcCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gcHJlcGFyZSBhIFdpbmRvd3MgbWFjaGluZSB1c2luZyBXU0x2MgorICAgICAgICAgICAgYXMgeW91ciBZb2N0byBQcm9qZWN0IGJ1aWxkIGhvc3Q6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBzdXJlIHlvdXIgV2luZG93cyAxMCBtYWNoaW5lIGlzIGNhcGFibGUgb2YgcnVubmluZyBXU0x2Mjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFdTTHYyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBXaW5kb3dzIDEwIGJ1aWxkcyA+IDE4OTE3LiBUbworICAgICAgICAgICAgICAgICAgICBjaGVjayB3aGljaCBidWlsZCB2ZXJzaW9uIHlvdSBhcmUgcnVubmluZywgeW91IG1heSBvcGVuIGEKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBwcm9tcHQgb24gV2luZG93cyBhbmQgZXhlY3V0ZSB0aGUgY29tbWFuZCAidmVyIi4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFVzZXJzXG15dXNlcj4gdmVyCisKKyAgICBNaWNyb3NvZnQgV2luZG93cyBbVmVyc2lvbiAxMC4wLjE5MDQxLjE1M10KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGlzIGNhcGFibGUgb2YgcnVubmluZyBXU0x2MiB5b3UgbWF5IGNvbnRpbnVlLAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHN1YmplY3Qgb3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdworICAgICAgICAgICAgICAgICAgICB0byB1cGdyYWRlIHRvIFdTTHYyIHZpc2l0IDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItaW5zdGFsbCc+V2luZG93cyAxMCBXU0x2MjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgdGhlIExpbnV4IGRpc3RyaWJ1dGlvbiBvZiB5b3VyIGNob2ljZSBpbnNpZGUgV2luZG93cyAxMDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBrbm93IHlvdXIgdmVyc2lvbiBvZiBXaW5kb3dzIDEwIHN1cHBvcnRzIFdTTHYyLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGluc3RhbGwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB5b3VyIGNob2ljZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBNaWNyb3NvZnQgU3RvcmUuCisgICAgICAgICAgICAgICAgICAgIE9wZW4gdGhlIE1pY3Jvc29mdCBTdG9yZSBhbmQgc2VhcmNoIGZvciBMaW51eC4gV2hpbGUgdGhlcmUKKyAgICAgICAgICAgICAgICAgICAgYXJlIHNldmVyYWwgTGludXggZGlzdHJpYnV0aW9ucyBhdmFpbGFibGUsIHRoZSBhc3N1bXB0aW9uCisgICAgICAgICAgICAgICAgICAgIGlzIHRoYXQgeW91ciBwaWNrIHdpbGwgYmUgb25lIG9mIHRoZSBkaXN0cmlidXRpb25zIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICBieSB0aGUgWW9jdG8gUHJvamVjdCBhcyBzdGF0ZWQgb24gdGhlIGluc3RydWN0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSBuYXRpdmUgTGludXggaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHlvdXIgc2VsZWN0aW9uLCBzaW1wbHkgY2xpY2sgIkdldCIgdG8gZG93bmxvYWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGwgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgeW91ciBMaW51eCBkaXN0cmlidXRpb24gaXMgdXNpbmcgV1NMdjI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIFdpbmRvd3MgUG93ZXJTaGVsbCBhbmQgcnVuOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gd3NsIC1sIC12CisgICAgTkFNRSAgICAgIFNUQVRFICAgICAgICAgICBWRVJTSU9OCisgICAgKlVidW50dSAgICBSdW5uaW5nICAgICAgICAgMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIHZlcnNpb24gY29sdW1uIHdoaWNoIHNheXMgdGhlIFdTTCB2ZXJzaW9uIGJlaW5nIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkaXN0cmlidXRpb24sIG9uIGNvbXBhdGlibGUgc3lzdGVtcywgdGhpcyBjYW4gYmUgY2hhbmdlZCBiYWNrCisgICAgICAgICAgICAgICAgICAgIGF0IGFueSBwb2ludCBpbiB0aW1lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IE9yaWVudCBZb3Vyc2VsZiBvbiBXU0w6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bmZhbWlsaWFyIHdpdGggV1NMLCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItYWJvdXQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggeW91ciBXU0wgRGlzdGlidXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgV2luZG93cyBzdGFydCBtZW51IHNpbXBseSBsYXVuY2ggeW91ciBXU0wgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGp1c3QgbGlrZSBhbnkgb3RoZXIgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGltaXplIHlvdXIgV1NMdjIgc3RvcmFnZSBvZnRlbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEdWUgdG8gdGhlIHdheSBzdG9yYWdlIGlzIGhhbmRsZWQgb24gV1NMdjIsIHRoZSBzdG9yYWdlCisgICAgICAgICAgICAgICAgICAgIHNwYWNlIHVzZWQgYnkgdGhlIHVuZGVseWluZyBMaW51eCBkaXN0cmlidXRpb24gaXMgbm90CisgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RlZCBpbW1lZGF0ZWx5LCBhbmQgc2luY2UgYml0YmFrZSBoZWF2aWx5IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwgYWZ0ZXIgc2V2ZXJhbCBidWlsZHMsIHlvdSBtYXkgYmUgdW5hd2FyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgYXJlIHJ1bm5pbmcgb3V0IG9mIHNwYWNlLiBXU0x2MiB1c2VzIGEgVkhEWCBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCB0aGlzIGlzc3VlIGNhbiBiZSBlYXNpbHkgYXZvaWRlZCBieSBtYW51YWxseQorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6aW5nIHRoaXMgZmlsZSBvZnRlbiwgdGhpcyBjYW4gYmUgZG9uZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHdheToKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBsb2NhdGlvbiBvZiB5b3VyIFZIRFggZmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpcnN0IHlvdSBuZWVkIHRvIGZpbmQgdGhlIGRpc3RybyBhcHAgcGFja2FnZSBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSB0aGlzIG9wZW4gYSBXaW5kb3dzIFBvd2Vyc2hlbGwgYXMgQWRtaW5pc3RyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBydW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI+IEdldC1BcHB4UGFja2FnZSAtTmFtZSAiKlVidW50dSoiIHwgU2VsZWN0IFBhY2thZ2VGYW1pbHlOYW1lCisgICAgUGFja2FnZUZhbWlseU5hbWUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLQorICAgIENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG5vdyByZXBsYWNlIHRoZSA8cmVwbGFjZWFibGU+UGFja2FnZUZhbWlseU5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3VyIDxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4gb24gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gZmluZCB5b3VyIFZIRFggZmlsZTogPGZpbGVuYW1lPkM6XFVzZXJzXHVzZXJcQXBwRGF0YVxMb2NhbFxQYWNrYWdlc1xQYWNrYWdlRmFtaWx5TmFtZVxMb2NhbFN0YXRlXDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIGxzIEM6XFVzZXJzXG15dXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaFxMb2NhbFN0YXRlXAorICAgIE1vZGUgICAgICAgICAgICAgICAgIExhc3RXcml0ZVRpbWUgICAgICAgICBMZW5ndGggTmFtZQorICAgIC1hLS0tLSAgICAgICAgIDMvMTQvMjAyMCAgIDk6NTIgUE0gICAgNTc0MTg5NzMxODQgZXh0NC52aGR4ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIFZIRFggZmlsZSBwYXRoIGlzOiA8ZmlsZW5hbWU+QzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcZXh0NC52aGR4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3B0aW1pemUgeW91ciBWSERYIGZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIGEgV2luZG93cyBQb3dlcnNoZWxsIGFzIEFkbWluaXN0cmF0b3IgdG8gb3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIFZIRFggZmlsZSwgc2h1dHRpbmcgZG93biBXU0wgZmlyc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI+IHdzbCAtLXNodXRkb3duCisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gb3B0aW1pemUtdmhkIC1QYXRoIEM6XFVzZXJzXG15dXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaFxMb2NhbFN0YXRlXGV4dDQudmhkeCAtTW9kZSBmdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcHJvZ3Jlc3MgYmFyIHNob3VsZCBiZSBzaG93biB3aGlsZSBvcHRpbWl6aW5nIHRoZSBWSERYIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0b3JhZ2Ugc2hvdWxkIG5vdyBiZSByZWZsZWN0ZWQgY29ycmVjdGx5IG9uIHRoZSBXaW5kb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwbG9yZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFdTTHYyIGRvZXMgbm90IGhhdmUgb3V0LW9mLXRoZS1ib3gKKyAgICAgICAgICAgICAgYWNjZXNzIHRvIGV4dGVybmFsIGRldmljZXMgc3VjaCBhcyB0aG9zZSBjb25uZWN0ZWQgdGhyb3VnaCBhCisgICAgICAgICAgICAgIFVTQiBwb3J0LCBidXQgaXQgYXV0b21hdGljYWxseSBtb3VudHMgeW91ciA8ZmlsZW5hbWU+Qzo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICBkcml2ZSBvbiA8ZmlsZW5hbWU+L21udC9jLzwvZmlsZW5hbWU+IChhbmQgb3RoZXJzKSwgd2hpY2gKKyAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdG8gc2hhcmUgZGVwbG95IGFydGlmYWN0cyB0byBiZSBsYXRlciBmbGFzaGVkIG9uCisgICAgICAgICAgICAgIGhhcmR3YXJlIHRocm91Z2ggV2luZG93cywgYnV0IHlvdXIgYnVpbGQgZGlyZWN0b3J5IHNob3VsZCBub3QKKyAgICAgICAgICAgICAgcmVzaWRlIGluc2lkZSB0aGlzIG1vdW50cG9pbnQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIFdTTHYyIHNldCB1cCwgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSB0bworICAgICAgICAgICAgZGV2ZWxvcCBqdXN0IGFzIGlmIHlvdSB3ZXJlIHJ1bm5pbmcgb24gYSBuYXRpdmUgTGludXggbWFjaGluZS4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESyBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgVG9hc3RlciBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+CisgICAgPHRpdGxlPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBsb2NhdGUsIGZldGNoIGFuZCBjb25maWd1cmUgdGhlIHNvdXJjZQorICAgICAgICBmaWxlcyB5b3UnbGwgbmVlZCB0byB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNvbmNlcHRzIGFuZCBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gYWJvdXQgR2l0IGFzIGl0CisgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBjb25jZXB0cyBvbiBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuIgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2FjY2Vzc2luZy1zb3VyY2UtcmVwb3NpdG9yaWVzJz4KKyAgICAgICAgPHRpdGxlPkFjY2Vzc2luZyBTb3VyY2UgUmVwb3NpdG9yaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdvcmtpbmcgZnJvbSBhIGNvcHkgb2YgdGhlIHVwc3RyZWFtIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBmb3Igb2J0YWluaW5nIGFuZCB1c2luZyBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICBZb3UgY2FuIHZpZXcgdGhlIFlvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHlvdSBjYW4gZmluZCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS8nPjwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgdG8gbG9jYXRlIHRoZSBsYXRlc3QgdXBzdHJlYW0gY29weSBvZgorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnk6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWNjZXNzIFJlcG9zaXRvcmllczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPcGVuIGEgYnJvd3NlciBhbmQgZ28gdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPiB0byBhY2Nlc3MgdGhlCisgICAgICAgICAgICAgICAgICAgIEdVSS1iYXNlZCBpbnRlcmZhY2UgaW50byB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgdGhlIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlIHJlcG9zaXRvcnkgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBVUkwgVXNlZCB0byBDbG9uZSB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGUgYm90dG9tIG9mIHRoZSBwYWdlLCBub3RlIHRoZSBVUkwgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdC1jb21tYW5kcy1jbG9uZSc+Y2xvbmU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0aGF0IHJlcG9zaXRvcnkgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19HSVRfVVJMOy9wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjbG9uaW5nIGEgcmVwb3NpdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2FjY2Vzc2luZy1pbmRleC1vZi1yZWxlYXNlcyc+CisgICAgICAgIDx0aXRsZT5BY2Nlc3NpbmcgSW5kZXggb2YgUmVsZWFzZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgYW4gSW5kZXggb2YgUmVsZWFzZXMgYXJlYSB0aGF0IGNvbnRhaW5zCisgICAgICAgICAgICByZWxhdGVkIGZpbGVzIHRoYXQgY29udHJpYnV0ZSB0byB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFJhdGhlciB0aGFuIEdpdCByZXBvc2l0b3JpZXMsIHRoZXNlIGZpbGVzIGFyZSB0YXJiYWxscyB0aGF0CisgICAgICAgICAgICByZXByZXNlbnQgc25hcHNob3RzIGluIHRpbWUgb2YgYSBnaXZlbiBjb21wb25lbnQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBhY2Nlc3NpbmcgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGNvbXBvbmVudHMgaXMgdG8gdXNlIEdpdCB0byBjbG9uZSB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBhbmQKKyAgICAgICAgICAgICAgICB3b3JrIGZyb20gd2l0aGluIHRoYXQgbG9jYWxseSBjbG9uZWQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VkdXJlIGluIHRoaXMgc2VjdGlvbiBleGlzdHMgc2hvdWxkIHlvdSBkZXNpcmUgYQorICAgICAgICAgICAgICAgIHRhcmJhbGwgc25hcHNob3Qgb2YgYW55IGdpdmVuIGNvbXBvbmVudC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBsb2NhdGUgYW5kIGRvd25sb2FkIGEgcGFydGljdWxhciB0YXJiYWxsOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFjY2VzcyB0aGUgSW5kZXggb2YgUmVsZWFzZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIGJyb3dzZXIgYW5kIGdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzJz48L3VsaW5rPiB0byBhY2Nlc3MgdGhlCisgICAgICAgICAgICAgICAgICAgIEluZGV4IG9mIFJlbGVhc2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCByZXByZXNlbnRzIHJlbGVhc2VkIGNvbXBvbmVudHMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNhdG88L2ZpbGVuYW1lPiwgYW5kIHNvIG9uKS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCBhcnJheSBvZiByZWxlYXNlZCBQb2t5IHRhcmJhbGxzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggb2YgUmVsZWFzZXMgd2FzIGhpc3RvcmljYWxseSB1c2VkIGZvciB2ZXJ5CisgICAgICAgICAgICAgICAgICAgICAgICBlYXJseSByZWxlYXNlcyBhbmQgZXhpc3RzIG5vdyBvbmx5IGZvciByZXRyb2FjdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVuZXNzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCBhIENvbXBvbmVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayBvbiBhbnkgcmVsZWFzZWQgY29tcG9uZW50IGluIHdoaWNoIHlvdSBhcmUgaW50ZXJlc3RlZAorICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+eW9jdG88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRHJpbGwgZG93biB0byBmaW5kIHRoZSBhc3NvY2lhdGVkIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjbGljayBvbiA8ZmlsZW5hbWU+eW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICB2aWV3IGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAmRElTVFJPOworICAgICAgICAgICAgICAgICAgICByZWxlYXNlIChlLmcuIDxmaWxlbmFtZT5wb2t5LSZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjsudGFyLmJ6MjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgcmVsZWFzZWQgUG9reSB0YXJiYWxsKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlIHRhcmJhbGwgdG8gZG93bmxvYWQgYW5kIHNhdmUgYSBzbmFwc2hvdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gY29tcG9uZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndXNpbmctdGhlLWRvd25sb2Fkcy1wYWdlJz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSBEb3dubG9hZHMgUGFnZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+CisgICAgICAgICAgICB1c2VzIGEgIkRPV05MT0FEUyIgcGFnZSBmcm9tIHdoaWNoIHlvdSBjYW4gbG9jYXRlIGFuZCBkb3dubG9hZAorICAgICAgICAgICAgdGFyYmFsbHMgb2YgYW55IFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgIFJhdGhlciB0aGFuIEdpdCByZXBvc2l0b3JpZXMsIHRoZXNlIGZpbGVzIHJlcHJlc2VudCBzbmFwc2hvdAorICAgICAgICAgICAgdGFyYmFsbHMgc2ltaWxhciB0byB0aGUgdGFyYmFsbHMgbG9jYXRlZCBpbiB0aGUgSW5kZXggb2YgUmVsZWFzZXMKKyAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdhY2Nlc3NpbmctaW5kZXgtb2YtcmVsZWFzZXMnPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3IgYWNjZXNzaW5nIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBjb21wb25lbnRzIGlzIHRvIHVzZSBHaXQgdG8gY2xvbmUgYSByZXBvc2l0b3J5IGFuZCB3b3JrIGZyb20KKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhhdCBsb2NhbCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBwcm9jZWR1cmUgaW4gdGhpcyBzZWN0aW9uIGV4aXN0cyBzaG91bGQgeW91IGRlc2lyZSBhCisgICAgICAgICAgICAgICAgdGFyYmFsbCBzbmFwc2hvdCBvZiBhbnkgZ2l2ZW4gY29tcG9uZW50LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBZb2N0byBQcm9qZWN0IFdlYnNpdGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciBicm93c2VyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HZXQgdG8gdGhlIERvd25sb2FkcyBBcmVhOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgIkRPV05MT0FEUyIgaXRlbSBmcm9tIHRoZSBwdWxsLWRvd24KKyAgICAgICAgICAgICAgICAgICAgIlNPRlRXQVJFIiB0YWIgbWVudSBuZWFyIHRoZSB0b3Agb2YgdGhlIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCBhIFlvY3RvIFByb2plY3QgUmVsZWFzZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIG1lbnUgbmV4dCB0byAiUkVMRUFTRSIgdG8gZGlzcGxheSBhbmQgY2hvb3NlCisgICAgICAgICAgICAgICAgICAgIGEgcmVjZW50IG9yIHBhc3Qgc3VwcG9ydGVkIFlvY3RvIFByb2plY3QgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOywKKyAgICAgICAgICAgICAgICAgICAgJkRJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkU7LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhICJtYXAiIG9mIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgdG8gdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSAiUkVMRUFTRSBBUkNISVZFIiBsaW5rIHRvIHJldmVhbCBhIG1lbnUgb2YKKyAgICAgICAgICAgICAgICAgICAgYWxsIFlvY3RvIFByb2plY3QgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgVG9vbHMgb3IgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgIkRPV05MT0FEUyIgcGFnZSwgeW91IGNhbiBkb3dubG9hZCB0b29scyBvcgorICAgICAgICAgICAgICAgICAgICBCU1BzIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgIEp1c3Qgc2Nyb2xsIGRvd24gdGhlIHBhZ2UgYW5kIGxvb2sgZm9yIHdoYXQgeW91IG5lZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdhY2Nlc3NpbmctbmlnaHRseS1idWlsZHMnPgorICAgICAgICA8dGl0bGU+QWNjZXNzaW5nIE5pZ2h0bHkgQnVpbGRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIGFuIGFyZWEgZm9yIG5pZ2h0bHkgYnVpbGRzIHRoYXQgY29udGFpbnMKKyAgICAgICAgICAgIHRhcmJhbGwgcmVsZWFzZXMgYXQgPHVsaW5rIHVybD0nJllPQ1RPX0FCX05JR0hUTFlfVVJMOycvPi4KKyAgICAgICAgICAgIFRoZXNlIGJ1aWxkcyBpbmNsdWRlIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgKCJwb2t5IiksCisgICAgICAgICAgICB0b29sY2hhaW5zLCBhbmQgYnVpbGRzIGZvciBzdXBwb3J0ZWQgbWFjaGluZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNob3VsZCB5b3UgZXZlciB3YW50IHRvIGFjY2VzcyBhIG5pZ2h0bHkgYnVpbGQgb2YgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGNvbXBvbmVudCwgdXNlIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSB0aGUgSW5kZXggb2YgTmlnaHRseSBCdWlsZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIGJyb3dzZXIgYW5kIGdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19BQl9OSUdIVExZX1VSTDsnLz4gdG8gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICBOaWdodGx5IEJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgRGF0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgZGF0ZSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBsYXRlc3QgYnVpbGRzLCB1c2UgIkNVUlJFTlQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgYSBCdWlsZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFyZWEgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBsb29raW5nIGZvciB0aGUgbW9zdCByZWNlbnQKKyAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWlucywgc2VsZWN0IHRoZSAidG9vbGNoYWluIiBsaW5rLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERyaWxsIGRvd24gdG8gZmluZCB0aGUgYXNzb2NpYXRlZCB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdGFyYmFsbCB0byBkb3dubG9hZCBhbmQgc2F2ZSBhIHNuYXBzaG90IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBnaXZlbiBjb21wb25lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2Nsb25pbmctYW5kLWNoZWNraW5nLW91dC1icmFuY2hlcyc+CisgICAgPHRpdGxlPkNsb25pbmcgYW5kIENoZWNraW5nIE91dCBCcmFuY2hlczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IGZvciBkZXZlbG9wbWVudCwgeW91IG5lZWQgYSByZWxlYXNlIGxvY2FsbHkKKyAgICAgICAgaW5zdGFsbGVkIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgorICAgICAgICBUaGlzIGxvY2FsbHkgaW5zdGFsbGVkIHNldCBvZiBmaWxlcyBpcyByZWZlcnJlZCB0byBhcyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBwcmVmZXJyZWQgbWV0aG9kIG9mIGNyZWF0aW5nIHlvdXIgU291cmNlIERpcmVjdG9yeSBpcyBieSB1c2luZworICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdCc+R2l0PC91bGluaz4gdG8gY2xvbmUgYSBsb2NhbAorICAgICAgICBjb3B5IG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgIFdvcmtpbmcgZnJvbSBhIGNsb25lZCBjb3B5IG9mIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGFsbG93cyB5b3UKKyAgICAgICAgdG8gY29udHJpYnV0ZSBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3Qgb3IgdG8gc2ltcGx5IHdvcmsgd2l0aAorICAgICAgICB0aGUgbGF0ZXN0IHNvZnR3YXJlIG9uIGEgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICBCZWNhdXNlIEdpdCBtYWludGFpbnMgYW5kIGNyZWF0ZXMgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeSB3aXRoCisgICAgICAgIGEgY29tcGxldGUgaGlzdG9yeSBvZiBjaGFuZ2VzIGFuZCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhIGxvY2FsCisgICAgICAgIGNsb25lIG9mIHRoYXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBicmFuY2hlcyBhbmQgdGFnIG5hbWVzIHVzZWQgaW4gdGhlIHVwc3RyZWFtCisgICAgICAgIHJlcG9zaXRvcnkuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+CisgICAgICAgIDx0aXRsZT5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhIGxvY2FsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICB1cHN0cmVhbQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+PGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgWW91ciBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hhbmdlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgdG8gd2hlcmUgeW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHlvdXIgbG9jYWwgY29weSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29tbWFuZCBjbG9uZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBhbmQgdXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBuYW1lICJwb2t5IiBmb3IgeW91ciBsb2NhbCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDQzMjE2MCwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgxMDIwNTYvMTAyMDU2KSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCA0MzIxNjAgKGRlbHRhIDMyMzExNiksIHJldXNlZCA0MzIwMzcgKGRlbHRhIDMyMzAwMCkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDQzMjE2MC80MzIxNjApLCAxNTMuODEgTWlCIHwgOC41NCBNaUIvcywgZG9uZS4KKyAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMzIzMTE2LzMyMzExNiksIGRvbmUuCisgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVubGVzcyB5b3Ugc3BlY2lmeSBhIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaCBvcgorICAgICAgICAgICAgICAgICAgICB0YWcgbmFtZSwgR2l0IGNsb25lcyB0aGUgIm1hc3RlciIgYnJhbmNoLCB3aGljaCByZXN1bHRzCisgICAgICAgICAgICAgICAgICAgIGluIGEgc25hcHNob3Qgb2YgdGhlIGxhdGVzdCBkZXZlbG9wbWVudCBjaGFuZ2VzIGZvcgorICAgICAgICAgICAgICAgICAgICAibWFzdGVyIi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjaGVjayBvdXQgYSBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBicmFuY2ggb3Igb24gaG93IHRvIGNoZWNrIG91dCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBCeSBCcmFuY2ggaW4gUG9reTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjaGVja291dC1vdXQtYnktdGFnLWluLXBva3knPkNoZWNraW5nIE91dCBCeSBUYWcgaW4gUG9reTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLCByZXNwZWN0aXZlbHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgdGhlIGxvY2FsIHJlcG9zaXRvcnkgaXMgY3JlYXRlZCwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgdG8gdGhhdCBkaXJlY3RvcnkgYW5kIGNoZWNrIGl0cyBzdGF0dXMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUsIHRoZSBzaW5nbGUgIm1hc3RlciIgYnJhbmNoIGV4aXN0cyBvbiB5b3VyIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgYnkgZGVmYXVsdCwgaXQgaXMgY2hlY2tlZCBvdXQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBnaXQgc3RhdHVzCisgICAgIE9uIGJyYW5jaCBtYXN0ZXIKKyAgICAgWW91ciBicmFuY2ggaXMgdXAtdG8tZGF0ZSB3aXRoICdvcmlnaW4vbWFzdGVyJy4KKyAgICAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuCisgICAgICQgZ2l0IGJyYW5jaAorICAgICAqIG1hc3RlcgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdXIgbG9jYWwgcmVwb3NpdG9yeSBvZiBwb2t5IGlzIGlkZW50aWNhbCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gcG9reSByZXBvc2l0b3J5IGF0IHRoZSB0aW1lIGZyb20gd2hpY2ggaXQgd2FzCisgICAgICAgICAgICAgICAgICAgIGNsb25lZC4KKyAgICAgICAgICAgICAgICAgICAgQXMgeW91IHdvcmsgd2l0aCB0aGUgbG9jYWwgYnJhbmNoLCB5b3UgY2FuIHBlcmlvZGljYWxseQorICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIDxmaWxlbmFtZT5naXQgcHVsbCAmZGFzaDsmZGFzaDtyZWJhc2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGJlIHN1cmUgeW91IGFyZSB1cC10by1kYXRlIHdpdGggdGhlIHVwc3RyZWFtCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+CisgICAgICAgIDx0aXRsZT5DaGVja2luZyBPdXQgYnkgQnJhbmNoIGluIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgdGhlIHVwc3RyZWFtIHBva3kgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvCisgICAgICAgICAgICBhbGwgaXRzIGRldmVsb3BtZW50IGJyYW5jaGVzLgorICAgICAgICAgICAgRWFjaCBkZXZlbG9wbWVudCBicmFuY2ggaW4gYSByZXBvc2l0b3J5IGlzIHVuaXF1ZSBhcyBpdCBmb3JrcworICAgICAgICAgICAgb2ZmIHRoZSAibWFzdGVyIiBicmFuY2guCisgICAgICAgICAgICBUbyBzZWUgYW5kIHVzZSB0aGUgZmlsZXMgb2YgYSBwYXJ0aWN1bGFyIGRldmVsb3BtZW50IGJyYW5jaAorICAgICAgICAgICAgbG9jYWxseSwgeW91IG5lZWQgdG8ga25vdyB0aGUgYnJhbmNoIG5hbWUgYW5kIHRoZW4gc3BlY2lmaWNhbGx5CisgICAgICAgICAgICBjaGVjayBvdXQgdGhhdCBkZXZlbG9wbWVudCBicmFuY2guCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBDaGVja2luZyBvdXQgYW4gYWN0aXZlIGRldmVsb3BtZW50IGJyYW5jaCBieSBicmFuY2ggbmFtZQorICAgICAgICAgICAgICAgIGdpdmVzIHlvdSBhIHNuYXBzaG90IG9mIHRoYXQgcGFydGljdWxhciBicmFuY2ggYXQgdGhlIHRpbWUKKyAgICAgICAgICAgICAgICB5b3UgY2hlY2sgaXQgb3V0LgorICAgICAgICAgICAgICAgIEZ1cnRoZXIgZGV2ZWxvcG1lbnQgb24gdG9wIG9mIHRoZSBicmFuY2ggdGhhdCBvY2N1cnMgYWZ0ZXIKKyAgICAgICAgICAgICAgICBjaGVjayBpdCBvdXQgY2FuIG9jY3VyLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN3aXRjaCB0byB0aGUgUG9reSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBsb2NhbCBwb2t5IEdpdCByZXBvc2l0b3J5LCBzd2l0Y2ggdG8gdGhhdAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgbG9jYWwgY29weSBvZiBwb2t5LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBFeGlzdGluZyBCcmFuY2ggTmFtZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBicmFuY2ggLWEKKyAgICAgKiBtYXN0ZXIKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTEKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTIKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTMKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjFfTTQKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjJfTTEKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjJfTTIKKyAgICAgICByZW1vdGVzL29yaWdpbi8xLjJfTTMKKyAgICAgICAgICAgLgorICAgICAgICAgICAuCisgICAgICAgICAgIC4KKyAgICAgICByZW1vdGVzL29yaWdpbi90aHVkCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vdGh1ZC1uZXh0CisgICAgICAgcmVtb3Rlcy9vcmlnaW4vd2FycmlvcgorICAgICAgIHJlbW90ZXMvb3JpZ2luL3dhcnJpb3ItbmV4dAorICAgICAgIHJlbW90ZXMvb3JpZ2luL3pldXMKKyAgICAgICByZW1vdGVzL29yaWdpbi96ZXVzLW5leHQKKyAgICAgICAuLi4gYW5kIHNvIG9uIC4uLgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIG91dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENoZWNrIG91dCB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoIGluIHdoaWNoIHlvdSB3YW50IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBhY2Nlc3MgdGhlIGZpbGVzIGZvciB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAmRElTVFJPOyBSZWxlYXNlICgmRElTVFJPX05BTUU7KSwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBvcmlnaW4vJkRJU1RST19OQU1FX05PX0NBUDsKKyAgICAgQnJhbmNoICZESVNUUk9fTkFNRV9OT19DQVA7IHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICZESVNUUk9fTkFNRV9OT19DQVA7IGZyb20gb3JpZ2luLgorICAgICBTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJyZESVNUUk9fTkFNRV9OT19DQVA7JworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kIGNoZWNrcyBvdXQgdGhlICImRElTVFJPX05BTUVfTk9fQ0FQOyIKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGFuZCByZXBvcnRzIHRoYXQgdGhlIGJyYW5jaCBpcyB0cmFja2luZworICAgICAgICAgICAgICAgICAgICB0aGUgdXBzdHJlYW0gIm9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdGhlIGJyYW5jaGVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdyBwYXJ0IG9mIHlvdXIgbG9jYWwgcG9reSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGUgYXN0ZXJpc2sgY2hhcmFjdGVyIGluZGljYXRlcyB0aGUgYnJhbmNoIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGNoZWNrZWQgb3V0IGZvciB3b3JrOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGJyYW5jaAorICAgICAgIG1hc3RlcgorICAgICAqICZESVNUUk9fTkFNRV9OT19DQVA7CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+CisgICAgICAgIDx0aXRsZT5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2ltaWxhciB0byBicmFuY2hlcywgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgdXNlcyB0YWdzCisgICAgICAgICAgICB0byBtYXJrIHNwZWNpZmljIGNvbW1pdHMgYXNzb2NpYXRlZCB3aXRoIHNpZ25pZmljYW50IHBvaW50cyBpbgorICAgICAgICAgICAgYSBkZXZlbG9wbWVudCBicmFuY2ggKGkuZS4gYSByZWxlYXNlIHBvaW50IG9yIHN0YWdlIG9mIGEKKyAgICAgICAgICAgIHJlbGVhc2UpLgorICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gc2V0IHVwIGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uIG9uZSBvZiB0aG9zZQorICAgICAgICAgICAgcG9pbnRzIGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgVGhlIHByb2Nlc3MgaXMgc2ltaWxhciB0byBjaGVja2luZyBvdXQgYnkgYnJhbmNoIG5hbWUgZXhjZXB0IHlvdQorICAgICAgICAgICAgdXNlIHRhZyBuYW1lcy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIENoZWNraW5nIG91dCBhIGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBnaXZlcyB5b3UgYQorICAgICAgICAgICAgICAgIHN0YWJsZSBzZXQgb2YgZmlsZXMgbm90IGFmZmVjdGVkIGJ5IGRldmVsb3BtZW50IG9uIHRoZQorICAgICAgICAgICAgICAgIGJyYW5jaCBhYm92ZSB0aGUgdGFnLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN3aXRjaCB0byB0aGUgUG9reSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBsb2NhbCBwb2t5IEdpdCByZXBvc2l0b3J5LCBzd2l0Y2ggdG8gdGhhdAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgbG9jYWwgY29weSBvZiBwb2t5LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZldGNoIHRoZSBUYWcgTmFtZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gY2hlY2tvdXQgdGhlIGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBmZXRjaCB0aGUgdXBzdHJlYW0gdGFncyBpbnRvIHlvdXIgbG9jYWwgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBmZXRjaCAtLXRhZ3MKKyAgICAgJAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxpc3QgdGhlIFRhZyBOYW1lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGxpc3QgdGhlIHRhZyBuYW1lcyBub3c6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgdGFnCisgICAgIDEuMV9NMS5maW5hbAorICAgICAxLjFfTTEucmMxCisgICAgIDEuMV9NMS5yYzIKKyAgICAgMS4xX00yLmZpbmFsCisgICAgIDEuMV9NMi5yYzEKKyAgICAgICAgLgorICAgICAgICAuCisgICAgICAgIC4KKyAgICAgeW9jdG8tMi41CisgICAgIHlvY3RvLTIuNS4xCisgICAgIHlvY3RvLTIuNS4yCisgICAgIHlvY3RvLTIuNS4zCisgICAgIHlvY3RvLTIuNgorICAgICB5b2N0by0yLjYuMQorICAgICB5b2N0by0yLjYuMgorICAgICB5b2N0by0yLjcKKyAgICAgeW9jdG9fMS41X001LnJjOAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIG91dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPX1JFTF9UQUc7IC1iIG15X3lvY3RvXyZESVNUUk87CisgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbXlfeW9jdG9fJkRJU1RSTzsnCisgICAgICQgZ2l0IGJyYW5jaAorICAgICAgIG1hc3RlcgorICAgICAqIG15X3lvY3RvXyZESVNUUk87CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmQgY3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBuYW1lZCAibXlfeW9jdG9fJkRJU1RSTzsiLCB3aGljaCBpcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWl0IGluIHRoZSB1cHN0cmVhbSBwb2t5IHJlcG9zaXRvcnkgdGhhdCBoYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgdGFnLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBmaWxlcyB5b3UgaGF2ZSBhdmFpbGFibGUgbG9jYWxseQorICAgICAgICAgICAgICAgICAgICBhcyBhIHJlc3VsdCBvZiB0aGUgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBhcmUgYSBzbmFwc2hvdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBkZXZlbG9wbWVudCBicmFuY2ggYXQgdGhlIHBvaW50CisgICAgICAgICAgICAgICAgICAgIHdoZXJlIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgd2FzIHJlbGVhc2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnJzdAppbmRleCA4ZjA5MjI0Li5jNjI5MDY3IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY2NDM5OTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbApAQCAtMCwwICsxLDE5NSBAQAorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxib29rIGlkPSdkZXYtbWFudWFsJyBsYW5nPSdlbicKKyAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIgorICAgICAgeG1sbnM9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICAgICAgPgorICAgIDxib29raW5mbz4KKworICAgICAgICA8bWVkaWFvYmplY3Q+CisgICAgICAgICAgICA8aW1hZ2VvYmplY3Q+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSdmaWd1cmVzL2Rldi10aXRsZS5wbmcnCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nU1ZHJworICAgICAgICAgICAgICAgICAgICBhbGlnbj0nbGVmdCcgc2NhbGVmaXQ9JzEnIHdpZHRoPScxMDAlJy8+CisgICAgICAgICAgICA8L2ltYWdlb2JqZWN0PgorICAgICAgICA8L21lZGlhb2JqZWN0PgorCisgICAgICAgIDx0aXRsZT4KKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgIDwvdGl0bGU+CisKKyAgICAgICAgPGF1dGhvcmdyb3VwPgorICAgICAgICAgICAgPGF1dGhvcj4KKyAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEyPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTI8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTM8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS42IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS43PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE0PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjcgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjg8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE1PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjA8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTU8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTY8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk5vdmVtYmVyIDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE5PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjcgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgPC9yZXZoaXN0b3J5PgorCisgICAgPGNvcHlyaWdodD4KKyAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj4KKyAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieQorICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMuCisgICAgICA8L3BhcmE+CisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1pbnRyby54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImRldi1tYW51YWwtc3RhcnQueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImRldi1tYW51YWwtcWVtdS54bWwiLz4KKworPC9ib29rPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtc3R5bGUuY3NzIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzFjN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LXN0eWxlLmNzcwpAQCAtMCwwICsxLDk5MSBAQAorLyoKKworICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSworCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvZGV2LXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IC0xZW07CisgIG1hcmdpbi1sZWZ0OiAyNS41ZW07Cit9CisKKy5nbG9zc2FyeSBkZCBwLAorLnZhcmlhYmxlbGlzdCBkZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworZGl2IHAuY29weXJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmxlZ2Fsbm90aWNlIHAubGVnYWxub3RpY2UtdGl0bGUgeworICBtYXJnaW4tYm90dG9tOiAwZW07Cit9CisKK3AgeworICBsaW5lLWhlaWdodDogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKworfQorCitkbCB7CisgIHBhZGRpbmctdG9wOiAwZW07Cit9CisKK2hyIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKKworLm1lZGlhb2JqZWN0LAorLm1lZGlhb2JqZWN0Y28geworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2ltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKwordWwgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAxLjVlbTsKK30KKwordWwgbGkgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK3VsIGxpIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCit0YWJsZSB7CisgIHdpZHRoIDoxMDAlOworfQorCit0aCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKwordGQgeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3AgYVtpZF0geworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogMHB4OworICBkaXNwbGF5OiBpbmxpbmU7CisgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK2EgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK3ByZSB7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKK2E6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgLypmb250LXdlaWdodDogYm9sZDsqLworfQorCisvKiBUaGlzIHN0eWxlIGRlZmluZXMgaG93IHRoZSBwZXJtYWxpbmsgY2hhcmFjdGVyCisgICBhcHBlYXJzIGJ5IGl0c2VsZiBhbmQgd2hlbiBob3ZlcmVkIG92ZXIgd2l0aAorICAgdGhlIG1vdXNlLiAqLworCitbYWx0PSdQZXJtYWxpbmsnXSB7IGNvbG9yOiAjZWVlOyB9CitbYWx0PSdQZXJtYWxpbmsnXTpob3ZlciB7IGNvbG9yOiBibGFjazsgfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSB7CisgIG1hcmdpbjogMWVtIDBlbTsKKyAgcGFkZGluZzogMWVtOworICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cit9CisKKworZGl2LmluZm9ybWFsZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsdGFibGUgcC50aXRsZSBiLAorZGl2LmZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYudGFibGUgcC50aXRsZSBieworICAgIHBhZGRpbmctdG9wOiAwZW07CisgICAgbWFyZ2luLXRvcDogMGVtOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisubWVkaWFvYmplY3QgLmNhcHRpb24sCisubWVkaWFvYmplY3QgLmNhcHRpb24gcCAgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nLXRvcDogMC41ZW07CisgIHBhZGRpbmctYm90dG9tOiAwLjVlbTsKK30KKworLmVwaWdyYXBoIHsKKyAgcGFkZGluZy1sZWZ0OiA1NSU7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworLmVwaWdyYXBoIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuZXBpZ3JhcGggLnF1b3RlIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorLmVwaWdyYXBoIC5hdHRyaWJ1dGlvbiB7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK3NwYW4uYXBwbGljYXRpb24geworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogODAlOworICB3aGl0ZS1zcGFjZTogcHJlOworICBtYXJnaW46IDEuMzNlbSAwZW07CisgIHBhZGRpbmc6IDEuMzNlbTsKK30KKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIG1hcmdpbi10b3A6IDFlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworCit9CisKKy8qIGZvcmNlIGZ1bGwgd2lkdGggb2YgdGFibGUgd2l0aGluIGRpdiAqLworLnRpcCB0YWJsZSwKKy53YXJuaW5nIHRhYmxlLAorLmNhdXRpb24gdGFibGUsCisubm90ZSB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIHBhZGRpbmc6IDAuOGVtIDAuMGVtIDAuMGVtIDAuMGVtOworICBtYXJnaW4gOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50aXAgcCwKKy53YXJuaW5nIHAsCisuY2F1dGlvbiBwLAorLm5vdGUgcCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWNyb255bSB7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIHBhZGRpbmc6IDAuMDllbSAwLjNlbTsKKyAgbWFyZ2luOiAwZW07Cit9CisKKy5pdGVtaXplZGxpc3QgbGkgeworICBjbGVhcjogbm9uZTsKK30KKworLmZpbGVuYW1lIHsKKyAgZm9udC1zaXplOiBtZWRpdW07CisgIGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2U7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMGVtOworICB0b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNjZGY7CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgcG9zaXRpb246IGZpeGVkOworICBsZWZ0OiAwZW07CisgIGJvdHRvbTogMGVtOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICB3aWR0aDogMTAwJTsKK30KKworCitkaXYubmF2aGVhZGVyIHRkLAorZGl2Lm5hdmZvb3RlciB0ZCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRoIHsKKyAgLypmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMsIHNlcmlmOyovCisgIC8qZm9udC1zaXplOiB4LWxhcmdlOyovCisgIGZvbnQtc2l6ZTogODAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci10b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhIHsKKyAgY29sb3I6ICM3Nzc7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyogbm9ybWFsIHRleHQgaW4gdGhlIGZvb3RlciAqLworZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCB7CisgIGNvbG9yOiBibGFjazsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOnZpc2l0ZWQsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6dmlzaXRlZCB7CisgIGNvbG9yOiAjNDQ0OworfQorCisKKy8qIGxpbmtzIGluIGhlYWRlciBhbmQgZm9vdGVyICovCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6aG92ZXIsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGNvbG9yOiAjMzNhOworfQorCitkaXYubmF2aGVhZGVyIGhyLAorZGl2Lm5hdmZvb3RlciBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworLnFhbmRhc2V0IHRyLnF1ZXN0aW9uIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisucWFuZGFzZXQgdHIuYW5zd2VyIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorLmFuc3dlciB0ZCB7CisgIHBhZGRpbmctYm90dG9tOiAxLjVlbTsKK30KKworLmVtcGhhc2lzIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKworICAvKioqKioqKioqKioqKiAvCisgLyBkZWNvcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqLworCisudGl0bGVwYWdlIHsKK30KKworLnBhcnQgLnRpdGxlIHsKK30KKworLnN1YnRpdGxlIHsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qCitoMSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworaDIgeworICBib3JkZXItdG9wOiBzb2xpZCAwLjJlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoMyB7CisgIGJvcmRlci10b3A6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNCB7CisgIGJvcmRlcjogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g1IHsKKyAgYm9yZGVyOiAwZW07Cit9CisqLworCisucHJvZ3JhbWxpc3RpbmcgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKy5xdWVzdGlvbiB0ZCB7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KKworLmFuc3dlciB7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkOworfQorCisgIC8qKioqKioqKiogLworIC8gIGNvbG9ycyAgLworLyAqKioqKioqKiovCisKK2JvZHkgeworICBjb2xvcjogIzMzMzsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisKK2EgeworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKK30KKworYTpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNkZWRlZGU7Cit9CisKKworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDcsCitoOCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCitociB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworCisudGlwLCAud2FybmluZywgLmNhdXRpb24sIC5ub3RlIHsKKyAgYm9yZGVyLWNvbG9yOiAjZmZmOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOworfQorCisKKy53YXJuaW5nIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisudGlwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLm5vdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9oaXN0b3J5LnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2hpc3RvcnkucnN0CmluZGV4IDFiYTMxMjQuLjhiMTQ5YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2hpc3RvcnkucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2hpc3RvcnkucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKgogTWFudWFsIFJldmlzaW9uIEhpc3RvcnkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vaW5kZXgucnN0CmluZGV4IDI4OTFhOTguLjgyMTMxNjkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2luZGV4LnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogLi4gVGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYXN0ZXIgZmlsZSwgY3JlYXRlZCBieQogICAgc3BoaW54LXF1aWNrc3RhcnQgb24gTW9uIEFwciAxMyAwOTozODozMyAyMDIwLgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvaGlzdG9yeS5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9oaXN0b3J5LnJzdAppbmRleCA3NjFiNTA2Li4zZmZiN2VhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9oaXN0b3J5LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9oaXN0b3J5LnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqKioqKioqKioqKioKIE1hbnVhbCBSZXZpc2lvbiBIaXN0b3J5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQucnN0CmluZGV4IGVlYjhmODcuLjM2MTMzY2EgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBXb3JraW5nIHdpdGggQWR2YW5jZWQgTWV0YWRhdGEgKGBgeW9jdG8ta2VybmVsLWNhY2hlYGApCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MTc3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnhtbApAQCAtMCwwICsxLDEyNTcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0na2VybmVsLWRldi1hZHZhbmNlZCc+Cis8dGl0bGU+V29ya2luZyB3aXRoIEFkdmFuY2VkIE1ldGFkYXRhICg8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4pPC90aXRsZT4KKworPHNlY3Rpb24gaWQ9J2tlcm5lbC1kZXYtYWR2YW5jZWQtb3ZlcnZpZXcnPgorICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIGZyYWdtZW50cyBhbmQgcGF0Y2hlcywgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3Qga2VybmVsIHRvb2xzIGFsc28gc3VwcG9ydCByaWNoCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IHRoYXQgeW91IGNhbgorICAgICAgICB1c2UgdG8gZGVmaW5lIGNvbXBsZXggcG9saWNpZXMgYW5kIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBzdXBwb3J0LgorICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgTWV0YWRhdGEgYW5kIHRoZSB0b29scyB0aGF0IG1hbmFnZSBpdCBpcworICAgICAgICB0byBoZWxwIHlvdSBtYW5hZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHNvdXJjZXMKKyAgICAgICAgdXNlZCB0byBzdXBwb3J0IG11bHRpcGxlIEJTUHMgYW5kIExpbnV4IGtlcm5lbCB0eXBlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgS2VybmVsIE1ldGFkYXRhIGV4aXN0cyBpbiBtYW55IHBsYWNlcy4KKyAgICAgICAgT25lIGFyZWEgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgaXMgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcmVwb3NpdG9yeSBncm91cGVkIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIgorICAgICAgICBoZWFkaW5nIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBLZXJuZWwgZGV2ZWxvcG1lbnQgdG9vbHMgKCJrZXJuLXRvb2xzIikgZXhpc3QgYWxzbyBpbiB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIiBoZWFkaW5nCisgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLXRvb2xzPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIFRoZSByZWNpcGUgdGhhdCBidWlsZHMgdGhlc2UgdG9vbHMgaXMKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmI8L2ZpbGVuYW1lPgorICAgICAgICBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3VzaW5nLWtlcm5lbC1tZXRhZGF0YS1pbi1hLXJlY2lwZSc+CisgICAgPHRpdGxlPlVzaW5nIEtlcm5lbCBNZXRhZGF0YSBpbiBhIFJlY2lwZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBpbnRyb2R1Y3Rpb24sIHRoZSBZb2N0byBQcm9qZWN0IGNvbnRhaW5zIGtlcm5lbAorICAgICAgICBNZXRhZGF0YSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICBUaGlzIE1ldGFkYXRhIGRlZmluZXMgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykgdGhhdAorICAgICAgICBjb3JyZXNwb25kIHRvIGRlZmluaXRpb25zIGluIGxpbnV4LXlvY3RvIHJlY2lwZXMgZm9yIGNvcnJlc3BvbmRpbmcgQlNQcy4KKyAgICAgICAgQSBCU1AgY29uc2lzdHMgb2YgYW4gYWdncmVnYXRpb24gb2Yga2VybmVsIHBvbGljeSBhbmQgZW5hYmxlZAorICAgICAgICBoYXJkd2FyZS1zcGVjaWZpYyBmZWF0dXJlcy4KKyAgICAgICAgVGhlIEJTUCBjYW4gYmUgaW5mbHVlbmNlZCBmcm9tIHdpdGhpbiB0aGUgbGludXgteW9jdG8gcmVjaXBlLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEEgTGludXgga2VybmVsIHJlY2lwZSB0aGF0IGNvbnRhaW5zIGtlcm5lbCBNZXRhZGF0YSAoZS5nLgorICAgICAgICAgICAgaW5oZXJpdHMgZnJvbSB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLmluYzwvZmlsZW5hbWU+IGZpbGUpCisgICAgICAgICAgICBpcyBzYWlkIHRvIGJlIGEgImxpbnV4LXlvY3RvIHN0eWxlIiByZWNpcGUuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRXZlcnkgbGludXgteW9jdG8gc3R5bGUgcmVjaXBlIG11c3QgZGVmaW5lIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgdmFyaWFibGUuCisgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdHlwaWNhbGx5IHNldCB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKKyAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgd2hpY2ggaXMgdXNlZCBieQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPi4KKyAgICAgICAgSG93ZXZlciwgaW4gc29tZSBjYXNlcywgdGhlIHZhcmlhYmxlIG1pZ2h0IGluc3RlYWQgcmVmZXIgdG8gdGhlCisgICAgICAgIHVuZGVybHlpbmcgcGxhdGZvcm0gb2YgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE11bHRpcGxlIEJTUHMgY2FuIHJldXNlIHRoZSBzYW1lIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+CisgICAgICAgIG5hbWUgaWYgdGhleSBhcmUgYnVpbHQgdXNpbmcgdGhlIHNhbWUgQlNQIGRlc2NyaXB0aW9uLgorICAgICAgICBNdWx0aXBsZSBDb3JlaTctYmFzZWQgQlNQcyBjb3VsZCBzaGFyZSB0aGUgc2FtZSAiaW50ZWwtY29yZWk3LTY0IgorICAgICAgICB2YWx1ZSBmb3IgPGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT4uCisgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHRoYXQgPGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT4gaXMKKyAgICAgICAganVzdCBmb3Iga2VybmVsIG1hcHBpbmcsIHdoaWxlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4KKyAgICAgICAgaXMgdGhlIG1hY2hpbmUgdHlwZSB3aXRoaW4gYSBCU1AgTGF5ZXIuCisgICAgICAgIEV2ZW4gd2l0aCB0aGlzIGRpc3RpbmN0aW9uLCBob3dldmVyLCB0aGVzZSB0d28gdmFyaWFibGVzIGNhbiBob2xkCisgICAgICAgIHRoZSBzYW1lIHZhbHVlLgorICAgICAgICBTZWUgdGhlIDxsaW5rIGxpbmtlbmQ9J2JzcC1kZXNjcmlwdGlvbnMnPkJTUCBEZXNjcmlwdGlvbnM8L2xpbms+CisgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEV2ZXJ5IGxpbnV4LXlvY3RvIHN0eWxlIHJlY2lwZSBtdXN0IGFsc28gaW5kaWNhdGUgdGhlIExpbnV4IGtlcm5lbAorICAgICAgICBzb3VyY2UgcmVwb3NpdG9yeSBicmFuY2ggdXNlZCB0byBidWlsZCB0aGUgTGludXgga2VybmVsLgorICAgICAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBpbmRpY2F0ZSB0aGUgYnJhbmNoLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+IHZhbHVlIHRvIGRlZmluZSBhbgorICAgICAgICAgICAgYWx0ZXJuYXRlIGJyYW5jaCB0eXBpY2FsbHkgd2l0aCBhIG1hY2hpbmUgb3ZlcnJpZGUgYXMgc2hvd24gaGVyZQorICAgICAgICAgICAgZnJvbSB0aGUgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBsaW51eC15b2N0byBzdHlsZSByZWNpcGVzIGNhbiBvcHRpb25hbGx5IGRlZmluZSB0aGUgZm9sbG93aW5nCisgICAgICAgIHZhcmlhYmxlczoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfRkVBVFVSRVMKKyAgICAgTElOVVhfS0VSTkVMX1RZUEUKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElOVVhfS0VSTkVMX1RZUEUnPjxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgZGVmaW5lcyB0aGUga2VybmVsIHR5cGUgdG8gYmUKKyAgICAgICAgdXNlZCBpbiBhc3NlbWJsaW5nIHRoZSBjb25maWd1cmF0aW9uLgorICAgICAgICBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSA8ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPiwKKyAgICAgICAgaXQgZGVmYXVsdHMgdG8gInN0YW5kYXJkIi4KKyAgICAgICAgVG9nZXRoZXIgd2l0aCA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwKKyAgICAgICAgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4gZGVmaW5lcyB0aGUgc2VhcmNoCisgICAgICAgIGFyZ3VtZW50cyB1c2VkIGJ5IHRoZSBrZXJuZWwgdG9vbHMgdG8gZmluZCB0aGUKKyAgICAgICAgYXBwcm9wcmlhdGUgZGVzY3JpcHRpb24gd2l0aGluIHRoZSBrZXJuZWwgTWV0YWRhdGEgd2l0aCB3aGljaCB0bworICAgICAgICBidWlsZCBvdXQgdGhlIHNvdXJjZXMgYW5kIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIFRoZSBsaW51eC15b2N0byByZWNpcGVzIGRlZmluZSAic3RhbmRhcmQiLCAidGlueSIsIGFuZCAicHJlZW1wdC1ydCIKKyAgICAgICAga2VybmVsIHR5cGVzLgorICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdrZXJuZWwtdHlwZXMnPktlcm5lbCBUeXBlczwvbGluaz4iIHNlY3Rpb24KKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIHR5cGVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUga2Vybi10b29scyBzZWFyY2ggZm9yIHRoZSBCU1AgZGVzY3JpcHRpb24KKyAgICAgICAgZmlsZSB0aGF0IG1vc3QgY2xvc2VseSBtYXRjaGVzIHRoZSA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPgorICAgICAgICBhbmQgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4gdmFyaWFibGVzIHBhc3NlZCBpbiBmcm9tIHRoZQorICAgICAgICByZWNpcGUuCisgICAgICAgIFRoZSB0b29scyB1c2UgdGhlIGZpcnN0IEJTUCBkZXNjcmlwdGlvbiBpdCBmaW5kcyB0aGF0IG1hdGNoCisgICAgICAgIGJvdGggdmFyaWFibGVzLgorICAgICAgICBJZiB0aGUgdG9vbHMgY2Fubm90IGZpbmQgYSBtYXRjaCwgdGhleSBpc3N1ZSBhIHdhcm5pbmcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSB0b29scyBmaXJzdCBzZWFyY2ggZm9yIHRoZSA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgdGhlbiBmb3IgdGhlIDxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+LgorICAgICAgICBJZiB0aGUgdG9vbHMgY2Fubm90IGZpbmQgYSBwYXJ0aWFsIG1hdGNoLCB0aGV5IHdpbGwgdXNlIHRoZQorICAgICAgICBzb3VyY2VzIGZyb20gdGhlIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gYW5kIGFueSBjb25maWd1cmF0aW9uCisgICAgICAgIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfRkVBVFVSRVMnPjxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlCisgICAgICAgIHRvIGluY2x1ZGUgZmVhdHVyZXMgKGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBwYXRjaGVzLCBvciBib3RoKSB0aGF0CisgICAgICAgIGFyZSBub3QgYWxyZWFkeSBpbmNsdWRlZCBieSB0aGUgPGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT4gYW5kCisgICAgICAgIDxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGNvbWJpbmF0aW9uLgorICAgICAgICBGb3IgZXhhbXBsZSwgdG8gaW5jbHVkZSBhIGZlYXR1cmUgc3BlY2lmaWVkIGFzCisgICAgICAgICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIsCisgICAgICAgIHNwZWNpZnk6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0ZFQVRVUkVTICs9ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBUbyBpbmNsdWRlIGEgZmVhdHVyZSBjYWxsZWQgImNmZy9zb3VuZC5zY2MiIGp1c3QgZm9yIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IG1hY2hpbmUsIHNwZWNpZnk6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2ID0gIiBjZmcvc291bmQuc2NjIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgZW50cmllcyBpbiA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4KKyAgICAgICAgYXJlIGRlcGVuZGVudCBvbiB0aGVpciBsb2NhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBNZXRhZGF0YSBpdHNlbGYuCisgICAgICAgIFRoZSBleGFtcGxlcyBoZXJlIGFyZSB0YWtlbiBmcm9tIHRoZQorICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgRWFjaCBicmFuY2ggb2YgdGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zICJmZWF0dXJlcyIgYW5kICJjZmciCisgICAgICAgIHN1YmRpcmVjdG9yaWVzIGF0IHRoZSB0b3AtbGV2ZWwuCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtbWV0YWRhdGEtc3ludGF4Jz5LZXJuZWwgTWV0YWRhdGEgU3ludGF4PC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdrZXJuZWwtbWV0YWRhdGEtc3ludGF4Jz4KKyAgICA8dGl0bGU+S2VybmVsIE1ldGFkYXRhIFN5bnRheDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGtlcm5lbCBNZXRhZGF0YSBjb25zaXN0cyBvZiB0aHJlZSBwcmltYXJ5IHR5cGVzIG9mIGZpbGVzOgorICAgICAgICA8ZmlsZW5hbWU+c2NjPC9maWxlbmFtZT4KKyAgICAgICAgPGZvb3Rub3RlPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjYzwvZmlsZW5hbWU+IHN0YW5kcyBmb3IgU2VyaWVzIENvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBDb250cm9sLCBidXQgdGhlIG5hbWluZyBoYXMgbGVzcyBzaWduaWZpY2FuY2UgaW4gdGhlCisgICAgICAgICAgICAgICAgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdG9vbGluZyB0aGFuIGl0IGhhZCBpbiB0aGUKKyAgICAgICAgICAgICAgICBwYXN0LgorICAgICAgICAgICAgICAgIENvbnNpZGVyIDxmaWxlbmFtZT5zY2M8L2ZpbGVuYW1lPiBmaWxlcyB0byBiZSBkZXNjcmlwdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9mb290bm90ZT4KKyAgICAgICAgZGVzY3JpcHRpb24gZmlsZXMsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBhbmQgcGF0Y2hlcy4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zY2M8L2ZpbGVuYW1lPiBmaWxlcyBkZWZpbmUgdmFyaWFibGVzIGFuZCBpbmNsdWRlIG9yCisgICAgICAgIG90aGVyd2lzZSByZWZlcmVuY2UgYW55IG9mIHRoZSB0aHJlZSBmaWxlIHR5cGVzLgorICAgICAgICBUaGUgZGVzY3JpcHRpb24gZmlsZXMgYXJlIHVzZWQgdG8gYWdncmVnYXRlIGFsbCB0eXBlcyBvZiBrZXJuZWwKKyAgICAgICAgTWV0YWRhdGEgaW50bworICAgICAgICB3aGF0IHVsdGltYXRlbHkgZGVzY3JpYmVzIHRoZSBzb3VyY2VzIGFuZCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlZAorICAgICAgICB0byBidWlsZCBhIExpbnV4IGtlcm5lbCB0YWlsb3JlZCB0byBhIHNwZWNpZmljIG1hY2hpbmUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NjPC9maWxlbmFtZT4gZGVzY3JpcHRpb24gZmlsZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHR3bworICAgICAgICBmdW5kYW1lbnRhbCB0eXBlcyBvZiBrZXJuZWwgTWV0YWRhdGE6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVhdHVyZXM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRmVhdHVyZXMgYWdncmVnYXRlIHNvdXJjZXMgaW4gdGhlIGZvcm0gb2YgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbgorICAgICAgICBmcmFnbWVudHMgaW50byBhIG1vZHVsYXIgcmV1c2FibGUgdW5pdC4KKyAgICAgICAgWW91IGNhbiB1c2UgZmVhdHVyZXMgdG8gaW1wbGVtZW50IGNvbmNlcHR1YWxseSBzZXBhcmF0ZSBrZXJuZWwKKyAgICAgICAgTWV0YWRhdGEgZGVzY3JpcHRpb25zIHN1Y2ggYXMgcHVyZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cywKKyAgICAgICAgc2ltcGxlIHBhdGNoZXMsIGNvbXBsZXggZmVhdHVyZXMsIGFuZCBrZXJuZWwgdHlwZXMuCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2tlcm5lbC10eXBlcyc+S2VybmVsIHR5cGVzPC9saW5rPiBkZWZpbmUgZ2VuZXJhbAorICAgICAgICBrZXJuZWwgZmVhdHVyZXMgYW5kIHBvbGljeSB0byBiZSByZXVzZWQgaW4gdGhlIEJTUHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEJTUHMgZGVmaW5lIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmVzIGFuZCBhZ2dyZWdhdGUgdGhlbSB3aXRoIGtlcm5lbAorICAgICAgICB0eXBlcyB0byBmb3JtIHRoZSBmaW5hbCBkZXNjcmlwdGlvbiBvZiB3aGF0IHdpbGwgYmUgYXNzZW1ibGVkIGFuZCBidWlsdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hpbGUgdGhlIGtlcm5lbCBNZXRhZGF0YSBzeW50YXggZG9lcyBub3QgZW5mb3JjZSBhbnkgbG9naWNhbAorICAgICAgICBzZXBhcmF0aW9uIG9mIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBwYXRjaGVzLCBmZWF0dXJlcyBvciBrZXJuZWwKKyAgICAgICAgdHlwZXMsIGJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgYSBsb2dpY2FsIHNlcGFyYXRpb24gb2YgdGhlc2UgdHlwZXMKKyAgICAgICAgb2YgTWV0YWRhdGEuCisgICAgICAgIFRoZSBmb2xsb3dpbmcgTWV0YWRhdGEgZmlsZSBoaWVyYXJjaHkgaXMgcmVjb21tZW5kZWQ6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPmJhc2U8L3JlcGxhY2VhYmxlPi8KKyAgICAgICAgYnNwLworICAgICAgICBjZmcvCisgICAgICAgIGZlYXR1cmVzLworICAgICAgICBrdHlwZXMvCisgICAgICAgIHBhdGNoZXMvCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5ic3A8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgY29udGFpbnMgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1kZXNjcmlwdGlvbnMnPkJTUCBkZXNjcmlwdGlvbnM8L2xpbms+LgorICAgICAgICBUaGUgcmVtYWluaW5nIGRpcmVjdG9yaWVzIGFsbCBjb250YWluICJmZWF0dXJlcyIuCisgICAgICAgIFNlcGFyYXRpbmcgPGZpbGVuYW1lPmJzcDwvZmlsZW5hbWU+IGZyb20gdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZQorICAgICAgICBhaWRzIGNvbmNlcHR1YWxpemluZyBpbnRlbmRlZCB1c2FnZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVXNlIHRoZXNlIGd1aWRlbGluZXMgdG8gaGVscCBwbGFjZSB5b3VyIDxmaWxlbmFtZT5zY2M8L2ZpbGVuYW1lPgorICAgICAgICBkZXNjcmlwdGlvbiBmaWxlcyB3aXRoaW4gdGhlIHN0cnVjdHVyZToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiB5b3VyIGZpbGUgY29udGFpbnMKKyAgICAgICAgICAgICAgICBvbmx5IGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBwbGFjZSB0aGUgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2ZnPC9maWxlbmFtZT4gZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIHlvdXIgZmlsZSBjb250YWlucworICAgICAgICAgICAgICAgIG9ubHkgc291cmNlLWNvZGUgZml4ZXMsIHBsYWNlIHRoZSBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXRjaGVzPC9maWxlbmFtZT4gZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIHlvdXIgZmlsZSBlbmNhcHN1bGF0ZXMKKyAgICAgICAgICAgICAgICBhIG1ham9yIGZlYXR1cmUsIG9mdGVuIGNvbWJpbmluZyBzb3VyY2VzIGFuZCBjb25maWd1cmF0aW9ucywKKyAgICAgICAgICAgICAgICBwbGFjZSB0aGUgZmlsZSBpbiA8ZmlsZW5hbWU+ZmVhdHVyZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgeW91ciBmaWxlIGFnZ3JlZ2F0ZXMKKyAgICAgICAgICAgICAgICBub24taGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgcGF0Y2hlcyBpbiBvcmRlciB0byBkZWZpbmUgYQorICAgICAgICAgICAgICAgIGJhc2Uga2VybmVsIHBvbGljeSBvciBtYWpvciBrZXJuZWwgdHlwZSB0byBiZSByZXVzZWQgYWNyb3NzCisgICAgICAgICAgICAgICAgbXVsdGlwbGUgQlNQcywgcGxhY2UgdGhlIGZpbGUgaW4gPGZpbGVuYW1lPmt0eXBlczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlc2UgZGlzdGluY3Rpb25zIGNhbiBlYXNpbHkgYmVjb21lIGJsdXJyZWQgLSBlc3BlY2lhbGx5IGFzCisgICAgICAgIG91dC1vZi10cmVlIGZlYXR1cmVzIHNsb3dseSBtZXJnZSB1cHN0cmVhbSBvdmVyIHRpbWUuCisgICAgICAgIEFsc28sIHJlbWVtYmVyIHRoYXQgaG93IHRoZSBkZXNjcmlwdGlvbiBmaWxlcyBhcmUgcGxhY2VkIGlzCisgICAgICAgIGEgcHVyZWx5IGxvZ2ljYWwgb3JnYW5pemF0aW9uIGFuZCBoYXMgbm8gaW1wYWN0IG9uIHRoZSBmdW5jdGlvbmFsaXR5CisgICAgICAgIG9mIHRoZSBrZXJuZWwgTWV0YWRhdGEuCisgICAgICAgIFRoZXJlIGlzIG5vIGltcGFjdCBiZWNhdXNlIGFsbCBvZiA8ZmlsZW5hbWU+Y2ZnPC9maWxlbmFtZT4sCisgICAgICAgIDxmaWxlbmFtZT5mZWF0dXJlczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cGF0Y2hlczwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgPGZpbGVuYW1lPmt0eXBlczwvZmlsZW5hbWU+LCBjb250YWluICJmZWF0dXJlcyIgYXMgZmFyIGFzIHRoZSBrZXJuZWwKKyAgICAgICAgdG9vbHMgYXJlIGNvbmNlcm5lZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgUGF0aHMgdXNlZCBpbiBrZXJuZWwgTWV0YWRhdGEgZmlsZXMgYXJlIHJlbGF0aXZlIHRvCisgICAgICAgIDxyZXBsYWNlYWJsZT5iYXNlPC9yZXBsYWNlYWJsZT4sIHdoaWNoIGlzIGVpdGhlcgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICBpZiB5b3UgYXJlIGNyZWF0aW5nIE1ldGFkYXRhIGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlY2lwZS1zcGFjZS1tZXRhZGF0YSc+cmVjaXBlLXNwYWNlPC9saW5rPiwKKyAgICAgICAgb3IgdGhlIHRvcCBsZXZlbCBvZgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS95b2N0by1rZXJuZWwtY2FjaGUvdHJlZS8nPjxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGlmIHlvdSBhcmUgY3JlYXRpbmcKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEtb3V0c2lkZS10aGUtcmVjaXBlLXNwYWNlJz5NZXRhZGF0YSBvdXRzaWRlIG9mIHRoZSByZWNpcGUtc3BhY2U8L2xpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmF0aW9uJz4KKyAgICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHNpbXBsZXN0IHVuaXQgb2Yga2VybmVsIE1ldGFkYXRhIGlzIHRoZSBjb25maWd1cmF0aW9uLW9ubHkKKyAgICAgICAgICAgIGZlYXR1cmUuCisgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgTGludXgga2VybmVsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIHBhcmFtZXRlcnMgaW4gYSBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGUKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+KSBhbmQgYSA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgIHRoYXQgZGVzY3JpYmVzIHRoZSBmcmFnbWVudC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIFN5bW1ldHJpYyBNdWx0aS1Qcm9jZXNzaW5nIChTTVApCisgICAgICAgICAgICBmcmFnbWVudCB1c2VkIHdpdGggdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by00LjEyPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGtlcm5lbCBhcyBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIHJlY2lwZSBzcGFjZSAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIFRoaXMgTWV0YWRhdGEgY29uc2lzdHMgb2YgdHdvIGZpbGVzOiA8ZmlsZW5hbWU+c21wLnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnNtcC5jZmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgPGZpbGVuYW1lPmNmZzwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT55b2N0by00LjEyPC9maWxlbmFtZT4gYnJhbmNoIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBjZmcvc21wLnNjYzoKKyAgICAgICAgZGVmaW5lIEtGRUFUVVJFX0RFU0NSSVBUSU9OICJFbmFibGUgU01QIGZvciAzMiBiaXQgYnVpbGRzIgorICAgICAgICBkZWZpbmUgS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSBhbGwKKworICAgICAgICBrY29uZiBoYXJkd2FyZSBzbXAuY2ZnCisKKyAgICAgY2ZnL3NtcC5jZmc6CisgICAgICAgIENPTkZJR19TTVA9eQorICAgICAgICBDT05GSUdfU0NIRURfU01UPXkKKyAgICAgICAgIyBJbmNyZWFzZSBkZWZhdWx0IE5SX0NQVVMgZnJvbSA4IHRvIDY0IHNvIHRoYXQgcGxhdGZvcm0gd2l0aAorICAgICAgICAjIG1vcmUgdGhhbiA4IHByb2Nlc3NvcnMgY2FuIGJlIGFsbCBhY3RpdmF0ZWQgYXQgYm9vdCB0aW1lCisgICAgICAgIENPTkZJR19OUl9DUFVTPTY0CisgICAgICAgICMgVGhlIGZvbGxvd2luZyBpcyBuZWVkZWQgd2hlbiBzZXR0aW5nIE5SX0NQVVMgdG8gc29tZXRoaW5nCisgICAgICAgICMgZ3JlYXRlciB0aGFuIDggb24geDg2IGFyY2hpdGVjdHVyZXMsIGl0IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5CisgICAgICAgICMgZGlzcmVnYXJkZWQgYnkgS2NvbmZpZyB3aGVuIHVzaW5nIGEgZGlmZmVyZW50IGFyY2gKKyAgICAgICAgQ09ORklHX1g4Nl9CSUdTTVA9eQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyBpbgorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aGluIHRoZSA8ZmlsZW5hbWU+c21wLnNjYzwvZmlsZW5hbWU+IGZpbGUsIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtGRUFUVVJFX0RFU0NSSVBUSU9OJz48ZmlsZW5hbWU+S0ZFQVRVUkVfREVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBzdGF0ZW1lbnQgcHJvdmlkZXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgZnJhZ21lbnQuCisgICAgICAgICAgICBIaWdoZXIgbGV2ZWwga2VybmVsIHRvb2xzIHVzZSB0aGlzIGRlc2NyaXB0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbHNvIHdpdGhpbiB0aGUgPGZpbGVuYW1lPnNtcC5zY2M8L2ZpbGVuYW1lPiBmaWxlLCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5rY29uZjwvZmlsZW5hbWU+IGNvbW1hbmQgaW5jbHVkZXMgdGhlCisgICAgICAgICAgICBhY3R1YWwgY29uZmlndXJhdGlvbiBmcmFnbWVudCBpbiBhbiA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlLCBhbmQgdGhlICJoYXJkd2FyZSIga2V5d29yZCBpZGVudGlmaWVzIHRoZSBmcmFnbWVudCBhcworICAgICAgICAgICAgYmVpbmcgaGFyZHdhcmUgZW5hYmxpbmcsIGFzIG9wcG9zZWQgdG8gZ2VuZXJhbCBwb2xpY3ksCisgICAgICAgICAgICB3aGljaCB3b3VsZCB1c2UgdGhlICJub24taGFyZHdhcmUiIGtleXdvcmQuCisgICAgICAgICAgICBUaGUgZGlzdGluY3Rpb24gaXMgbWFkZSBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIHZhbGlkYXRpb24gdG9vbHMsIHdoaWNoIHdhcm4geW91IGlmIGEgaGFyZHdhcmUgZnJhZ21lbnQKKyAgICAgICAgICAgIG92ZXJyaWRlcyBhIHBvbGljeSBzZXQgYnkgYSBub24taGFyZHdhcmUgZnJhZ21lbnQuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gZmlsZSBjYW4gaW5jbHVkZSBtdWx0aXBsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rY29uZjwvZmlsZW5hbWU+IHN0YXRlbWVudHMsIG9uZSBwZXIgZnJhZ21lbnQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd2YWxpZGF0aW5nLWNvbmZpZ3VyYXRpb24nPlZhbGlkYXRpbmcgQ29uZmlndXJhdGlvbjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCB0byBhdWRpdCB5b3VyCisgICAgICAgICAgICBjb25maWd1cmF0aW9uOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncGF0Y2hlcyc+CisgICAgICAgIDx0aXRsZT5QYXRjaGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFBhdGNoIGRlc2NyaXB0aW9ucyBhcmUgdmVyeSBzaW1pbGFyIHRvIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQKKyAgICAgICAgICAgIGRlc2NyaXB0aW9ucywgd2hpY2ggYXJlIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGluc3RlYWQgb2YgYSA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGZpbGUsIHRoZXNlCisgICAgICAgICAgICBkZXNjcmlwdGlvbnMgd29yayB3aXRoIHNvdXJjZSBwYXRjaGVzIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZXMpLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIHR5cGljYWwgcGF0Y2ggaW5jbHVkZXMgYSBkZXNjcmlwdGlvbiBmaWxlIGFuZCB0aGUgcGF0Y2ggaXRzZWxmLgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGJ1aWxkIHBhdGNoZXMgdXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgYXMgZGVmaW5lZCBvdXRzaWRlIG9mCisgICAgICAgICAgICB0aGUgcmVjaXBlIHNwYWNlIChpLmUuIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBUaGlzIE1ldGFkYXRhIGNvbnNpc3RzIG9mIHNldmVyYWwgZmlsZXM6CisgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQuc2NjPC9maWxlbmFtZT4gYW5kIGEgc2V0IG9mCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+cGF0Y2hlcy9idWlsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIDxmaWxlbmFtZT55b2N0by00LjEyPC9maWxlbmFtZT4gYnJhbmNoIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3RpbmdzIHNob3cgdGhlIDxmaWxlbmFtZT5idWlsZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSBhbmQgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tb2Rwb3N0LW1hc2stdHJpdmlhbC13YXJuaW5ncy5wYXRjaDwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBhdGNoZXMvYnVpbGQvYnVpbGQuc2NjOgorICAgICAgICBwYXRjaCBhcm0tc2VyaWFsaXplLWJ1aWxkLXRhcmdldHMucGF0Y2gKKyAgICAgICAgcGF0Y2ggcG93ZXJwYy1zZXJpYWxpemUtaW1hZ2UtdGFyZ2V0cy5wYXRjaAorICAgICAgICBwYXRjaCBrYnVpbGQtZXhjbHVkZS1tZXRhLWRpcmVjdG9yeS1mcm9tLWRpc3RjbGVhbi1wcm9jZXNzaS5wYXRjaAorCisgICAgICAgICMgYXBwbGllZCBieSBrZ2l0CisgICAgICAgICMgcGF0Y2gga2J1aWxkLWFkZC1tZXRhLWZpbGVzLXRvLXRoZS1pZ25vcmUtbGkucGF0Y2gKKworICAgICAgICBwYXRjaCBtb2Rwb3N0LW1hc2stdHJpdmlhbC13YXJuaW5ncy5wYXRjaAorICAgICAgICBwYXRjaCBtZW51Y29uZmlnLWNoZWNrLWx4ZGlhZ2xvZy5zaC1BbGxvdy1zcGVjaWZpY2F0aW9uLW9mLnBhdGNoCisKKyAgICAgcGF0Y2hlcy9idWlsZC9tb2Rwb3N0LW1hc2stdHJpdmlhbC13YXJuaW5ncy5wYXRjaDoKKyAgICAgICAgRnJvbSBiZDQ4OTMxYmMxNDJiZGQxMDQ2NjhmM2EwNjJhMWYyMjYwMGFhZTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorICAgICAgICBGcm9tOiBQYXVsIEdvcnRtYWtlciAmbHQ7cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbSZndDsKKyAgICAgICAgRGF0ZTogU3VuLCAyNSBKYW4gMjAwOSAxNzo1ODowOSAtMDUwMAorICAgICAgICBTdWJqZWN0OiBbUEFUQ0hdIG1vZHBvc3Q6IG1hc2sgdHJpdmlhbCB3YXJuaW5ncworCisgICAgICAgIE5ld2VyIEhPU1RDQyB3aWxsIGNvbXBsYWluIGFib3V0IHZhcmlvdXMgc3RkaW8gZmNucyBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAuCisgCSAgICAgICAgY2hhciAqZHVtcF93cml0ZSA9IE5VTEwsICpmaWxlc19zb3VyY2UgPSBOVUxMOworIAkgICAgICAgIGludCBvcHQ7CisgICAgICAgIC0tCisgICAgICAgIDIuMTAuMQorCisgICAgICAgIGdlbmVyYXRlZCBieSBjZ2l0IHYwLjEwLjIgYXQgMjAxNy0wOS0yOCAxNToyMzoyMyAoR01UKQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIGZpbGUgY2FuIGluY2x1ZGUgbXVsdGlwbGUgcGF0Y2ggc3RhdGVtZW50cyB3aGVyZQorICAgICAgICAgICAgZWFjaCBzdGF0ZW1lbnQgaGFuZGxlcyBhIHNpbmdsZSBwYXRjaC4KKyAgICAgICAgICAgIEluIHRoZSBleGFtcGxlIDxmaWxlbmFtZT5idWlsZC5zY2M8L2ZpbGVuYW1lPiBmaWxlLCBmaXZlIHBhdGNoCisgICAgICAgICAgICBzdGF0ZW1lbnRzIGV4aXN0IGZvciB0aGUgZml2ZSBwYXRjaGVzIGluIHRoZSBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgdHlwaWNhbCA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZSB1c2luZworICAgICAgICAgICAgPGZpbGVuYW1lPmRpZmYgLU51cnA8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kcy4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIHBhdGNoZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZmVhdHVyZXMnPgorICAgICAgICA8dGl0bGU+RmVhdHVyZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRmVhdHVyZXMgYXJlIGNvbXBsZXgga2VybmVsIE1ldGFkYXRhIHR5cGVzIHRoYXQgY29uc2lzdAorICAgICAgICAgICAgb2YgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIHBhdGNoZXMsIGFuZCBwb3NzaWJseSBvdGhlciBmZWF0dXJlCisgICAgICAgICAgICBkZXNjcmlwdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBsaXN0aW5nOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBmZWF0dXJlcy88cmVwbGFjZWFibGU+bXlmZWF0dXJlPC9yZXBsYWNlYWJsZT4uc2NjCisgICAgICAgIGRlZmluZSBLRkVBVFVSRV9ERVNDUklQVElPTiAiRW5hYmxlIDxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPiIKKworICAgICAgICBwYXRjaCAwMDAxLTxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPi1jb3JlLnBhdGNoCisgICAgICAgIHBhdGNoIDAwMDItPHJlcGxhY2VhYmxlPm15ZmVhdHVyZTwvcmVwbGFjZWFibGU+LWludGVyZmFjZS5wYXRjaAorCisgICAgICAgIGluY2x1ZGUgY2ZnLzxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPl9kZXBlbmRlbmN5LnNjYworICAgICAgICBrY29uZiBub24taGFyZHdhcmUgPHJlcGxhY2VhYmxlPm15ZmVhdHVyZTwvcmVwbGFjZWFibGU+LmNmZworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0aGUgPGZpbGVuYW1lPnBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+a2NvbmY8L2ZpbGVuYW1lPiBjb21tYW5kcyBhcmUgdXNlZCBhcyB3ZWxsIGFzCisgICAgICAgICAgICBob3cgYW4gYWRkaXRpb25hbCBmZWF0dXJlIGRlc2NyaXB0aW9uIGZpbGUgaXMgaW5jbHVkZWQgd2l0aAorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVHlwaWNhbGx5LCBmZWF0dXJlcyBhcmUgbGVzcyBncmFudWxhciB0aGFuIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGZyYWdtZW50cyBhbmQgYXJlIG1vcmUgbGlrZWx5IHRoYW4gY29uZmlndXJhdGlvbiBmcmFnbWVudHMKKyAgICAgICAgICAgIGFuZCBwYXRjaGVzIHRvIGJlIHRoZSB0eXBlcyBvZiB0aGluZ3MgeW91IHdhbnQgdG8gc3BlY2lmeQorICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBvZiB0aGUKKyAgICAgICAgICAgIExpbnV4IGtlcm5lbCByZWNpcGUuCisgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSd1c2luZy1rZXJuZWwtbWV0YWRhdGEtaW4tYS1yZWNpcGUnPlVzaW5nIEtlcm5lbCBNZXRhZGF0YSBpbiBhIFJlY2lwZTwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGVhcmxpZXIgaW4gdGhlIG1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtdHlwZXMnPgorICAgICAgICA8dGl0bGU+S2VybmVsIFR5cGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEEga2VybmVsIHR5cGUgZGVmaW5lcyBhIGhpZ2gtbGV2ZWwga2VybmVsIHBvbGljeSBieQorICAgICAgICAgICAgYWdncmVnYXRpbmcgbm9uLWhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHdpdGgKKyAgICAgICAgICAgIHBhdGNoZXMgeW91IHdhbnQgdG8gdXNlIHdoZW4gYnVpbGRpbmcgYSBMaW51eCBrZXJuZWwgb2YgYQorICAgICAgICAgICAgc3BlY2lmaWMgdHlwZSAoZS5nLiBhIHJlYWwtdGltZSBrZXJuZWwpLgorICAgICAgICAgICAgU3ludGFjdGljYWxseSwga2VybmVsIHR5cGVzIGFyZSBubyBkaWZmZXJlbnQgdGhhbiBmZWF0dXJlcworICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSAiPGxpbmsgbGlua2VuZD0nZmVhdHVyZXMnPkZlYXR1cmVzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9LRVJORUxfVFlQRSc+PGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGtlcm5lbCByZWNpcGUgc2VsZWN0cyB0aGUga2VybmVsIHR5cGUuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgZm91bmQgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiwgYQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNyZXF1aXJlLWluY2x1c2lvbic+PGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBkaXJlY3RpdmUgaW5jbHVkZXMgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlLCB3aGljaCBoYXMgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgdGhhdCBkZWZpbmVzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICBrZXJuZWwgdHlwZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElOVVhfS0VSTkVMX1RZUEUgPz89ICJzdGFuZGFyZCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIHdvdWxkIGJlIHRoZSByZWFsLXRpbWUga2VybmVsIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tcnRfNC4xMi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIFRoaXMga2VybmVsIHJlY2lwZSBkaXJlY3RseSBzZXRzIHRoZSBrZXJuZWwgdHlwZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGtlcm5lbCByZWNpcGVzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSd1c2luZy1rZXJuZWwtbWV0YWRhdGEtaW4tYS1yZWNpcGUnPlVzaW5nIEtlcm5lbCBNZXRhZGF0YSBpbiBhIFJlY2lwZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhyZWUga2VybmVsIHR5cGVzICgic3RhbmRhcmQiLCAidGlueSIsIGFuZCAicHJlZW1wdC1ydCIpIGFyZQorICAgICAgICAgICAgc3VwcG9ydGVkIGZvciBMaW51eCBZb2N0byBrZXJuZWxzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+InN0YW5kYXJkIjoKKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkZXMgdGhlIGdlbmVyaWMgTGludXgga2VybmVsIHBvbGljeSBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBsaW51eC15b2N0byBrZXJuZWwgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBwb2xpY3kgaW5jbHVkZXMsIGFtb25nIG90aGVyIHRoaW5ncywgd2hpY2ggZmlsZQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zLCBuZXR3b3JraW5nIG9wdGlvbnMsIGNvcmUga2VybmVsIGZlYXR1cmVzLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIGFuZCB0cmFjaW5nIG9wdGlvbnMgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPiJwcmVlbXB0LXJ0IjoKKyAgICAgICAgICAgICAgICAgICAgQXBwbGllcyB0aGUgPGZpbGVuYW1lPlBSRUVNUFRfUlQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlcXVpcmVkIHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGEgcmVhbC10aW1lIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgdHlwZSBpbmhlcml0cyBmcm9tIHRoZSAic3RhbmRhcmQiIGtlcm5lbCB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+InRpbnkiOgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgYmFyZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24gbWVhbnQgdG8gc2VydmUgYXMgYQorICAgICAgICAgICAgICAgICAgICBiYXNlIGZvciB2ZXJ5IHNtYWxsIExpbnV4IGtlcm5lbHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSAidGlueSIga2VybmVsIHR5cGUgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgInN0YW5kYXJkIgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCB0aGUgInRpbnkiIGtlcm5lbCB0eXBlIGRvZXMgbm90IGN1cnJlbnRseSBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIGFueSBzb3VyY2UgY2hhbmdlcywgaXQgbWlnaHQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGFueSBnaXZlbiBrZXJuZWwgdHlwZSwgdGhlIE1ldGFkYXRhIGlzIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IChlLmcuIDxmaWxlbmFtZT5zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBIZXJlIGlzIGEgcGFydGlhbCBsaXN0aW5nIGZvciB0aGUgPGZpbGVuYW1lPnN0YW5kYXJkLnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPmt0eXBlcy9zdGFuZGFyZDwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgIHJlcG9zaXRvcnk6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgSW5jbHVkZSB0aGlzIGtlcm5lbCB0eXBlIGZyYWdtZW50IHRvIGdldCB0aGUgc3RhbmRhcmQgZmVhdHVyZXMgYW5kCisgICAgICMgY29uZmlndXJhdGlvbiB2YWx1ZXMuCisKKyAgICAgIyBOb3RlOiBpZiBvbmx5IHRoZSBmZWF0dXJlcyBhcmUgZGVzaXJlZCwgYnV0IG5vdCB0aGUgY29uZmlndXJhdGlvbgorICAgICAjICAgICAgIHRoZW4gdGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgYXM6CisgICAgICMgICAgICAgICAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjIG5vY2ZnCisgICAgICMgICAgICAgaWYgbm8gY2hhaW5lZCBjb25maWd1cmF0aW9uIGlzIGRlc2lyZWQsIGluY2x1ZGUgaXQgYXM6CisgICAgICMgICAgICAgICAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjIG5vY2ZnIGluaGVyaXQKKworCisKKyAgICAgaW5jbHVkZSBrdHlwZXMvYmFzZS9iYXNlLnNjYworICAgICBicmFuY2ggc3RhbmRhcmQKKworICAgICBrY29uZiBub24taGFyZHdhcmUgc3RhbmRhcmQuY2ZnCisKKyAgICAgaW5jbHVkZSBmZWF0dXJlcy9rZ2RiL2tnZGIuc2NjCisgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAuCisKKyAgICAgaW5jbHVkZSBjZmcvbmV0L2lwNl9uZi5zY2MKKyAgICAgaW5jbHVkZSBjZmcvbmV0L2JyaWRnZS5zY2MKKworICAgICBpbmNsdWRlIGNmZy9zeXN0ZW1kLnNjYworCisgICAgIGluY2x1ZGUgZmVhdHVyZXMvcmZraWxsL3Jma2lsbC5zY2MKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgd2l0aCBhbnkgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlLCBhCisgICAgICAgICAgICBrZXJuZWwgdHlwZSBkZWZpbml0aW9uIGNhbiBhZ2dyZWdhdGUgb3RoZXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZXMgd2l0aAorICAgICAgICAgICAgPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBjb21tYW5kcy4KKyAgICAgICAgICAgIFRoZXNlIGRlZmluaXRpb25zIGNhbiBhbHNvIGRpcmVjdGx5IHB1bGwgaW4KKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIGFuZCBwYXRjaGVzIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+a2NvbmY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnBhdGNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGNvbW1hbmRzLCByZXNwZWN0aXZlbHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEl0IGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8gY3JlYXRlIGEga2VybmVsIHR5cGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgIFRoZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgZmlsZSBjYW4gaW1wbGljaXRseSBkZWZpbmUKKyAgICAgICAgICAgIHRoZSBrZXJuZWwgdHlwZSB1c2luZyBhIDxmaWxlbmFtZT5kZWZpbmUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LVFlQRSc+S1RZUEU8L3VsaW5rPiBteWt0eXBlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGxpbmUuCisgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdic3AtZGVzY3JpcHRpb25zJz5CU1AgRGVzY3JpcHRpb25zPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYnNwLWRlc2NyaXB0aW9ucyc+CisgICAgICAgIDx0aXRsZT5CU1AgRGVzY3JpcHRpb25zPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJTUCBkZXNjcmlwdGlvbnMgKGkuZS4gPGZpbGVuYW1lPiouc2NjPC9maWxlbmFtZT4gZmlsZXMpCisgICAgICAgICAgICBjb21iaW5lIGtlcm5lbCB0eXBlcyB3aXRoIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmVzLgorICAgICAgICAgICAgVGhlIGhhcmR3YXJlLXNwZWNpZmljIE1ldGFkYXRhIGlzIHR5cGljYWxseSBkZWZpbmVkCisgICAgICAgICAgICBpbmRlcGVuZGVudGx5IGluIHRoZSBCU1AgbGF5ZXIsIGFuZCB0aGVuIGFnZ3JlZ2F0ZWQgd2l0aCBlYWNoCisgICAgICAgICAgICBzdXBwb3J0ZWQga2VybmVsIHR5cGUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIHRoZSBCU1AgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICBmaWxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgPGZpbGVuYW1lPmJzcDwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWtlcm5lbC1jYWNoZS90cmVlL2JzcCc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IG9yZ2FuaXplZCB1bmRlciB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIgaGVhZGluZworICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgQlNQIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSwgdGhlCisgICAgICAgICAgICBhZ2dyZWdhdGlvbiBjb25jZXB0cywgYW5kIHByZXNlbnRzIGEgZGV0YWlsZWQgZXhhbXBsZSB1c2luZworICAgICAgICAgICAgYSBCU1Agc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IChpLmUuIEJlYWdsZUJvbmUgQm9hcmQpLgorICAgICAgICAgICAgRm9yIGNvbXBsZXRlIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllciBmaWxlIGhpZXJhcmNoeSwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnNwLWRlc2NyaXB0aW9uLWZpbGUtb3ZlcnZpZXcnPgorICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgcm9vdCBCU1AgbGF5ZXIKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBmaWxlcyBmb3IgdGhlIEJlYWdsZUJvbmUgYm9hcmQuCisgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgZW1wbG95IGJvdGggYSBzdHJ1Y3R1cmUgYW5kIG5hbWluZyBjb252ZW50aW9uCisgICAgICAgICAgICAgICAgZm9yIGNvbnNpc3RlbmN5LgorICAgICAgICAgICAgICAgIFRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IgdGhlIGZpbGUgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4uc2NjCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZSByb290IGxheWVyIEJTUCBmaWxlbmFtZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgQm9hcmQgQlNQLCB3aGljaCBpcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBiZWFnbGVib25lLXN0YW5kYXJkLnNjYworICAgICBiZWFnbGVib25lLXByZWVtcHQtcnQuc2NjCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEVhY2ggZmlsZSB1c2VzIHRoZSByb290IG5hbWUgKGkuZSAiYmVhZ2xlYm9uZSIpIEJTUCBuYW1lCisgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgdGhlIGtlcm5lbCB0eXBlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS1zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkZWZpbmUgS01BQ0hJTkUgYmVhZ2xlYm9uZQorICAgICBkZWZpbmUgS1RZUEUgc3RhbmRhcmQKKyAgICAgZGVmaW5lIEtBUkNIIGFybQorCisgICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYworICAgICBicmFuY2ggYmVhZ2xlYm9uZQorCisgICAgIGluY2x1ZGUgYmVhZ2xlYm9uZS5zY2MKKworICAgICAjIGRlZmF1bHQgcG9saWN5IGZvciBzdGFuZGFyZCBrZXJuZWxzCisgICAgIGluY2x1ZGUgZmVhdHVyZXMvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLnNjYworICAgICBpbmNsdWRlIGZlYXR1cmVzL3Byb2ZpbGluZy9wcm9maWxpbmcuc2NjCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEV2ZXJ5IHRvcC1sZXZlbCBCU1AgZGVzY3JpcHRpb24gZmlsZSBzaG91bGQgZGVmaW5lIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS1RZUEUnPjxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgYW5kIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQVJDSCc+PGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBUaGVzZSB2YXJpYWJsZXMgYWxsb3cgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gaWRlbnRpZnkKKyAgICAgICAgICAgICAgICB0aGUgZGVzY3JpcHRpb24gYXMgbWVldGluZyB0aGUgY3JpdGVyaWEgc2V0IGJ5IHRoZSByZWNpcGUgYmVpbmcKKyAgICAgICAgICAgICAgICBidWlsdC4KKyAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3VwcG9ydHMgdGhlICJiZWFnbGVib25lIiBtYWNoaW5lIGZvciB0aGUKKyAgICAgICAgICAgICAgICAic3RhbmRhcmQiIGtlcm5lbCBhbmQgdGhlICJhcm0iIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQmUgYXdhcmUgdGhhdCBhIGhhcmQgbGluayBiZXR3ZWVuIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFuZCBhIGtlcm5lbCB0eXBlCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAgICAgICBUaHVzLCBpZiB5b3UgZG8gbm90IGhhdmUgdGhlIGtlcm5lbCB0eXBlIGRlZmluZWQgaW4geW91ciBrZXJuZWwKKyAgICAgICAgICAgICAgICBNZXRhZGF0YSBhcyBpdCBpcyBoZXJlLCB5b3Ugb25seSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9LRVJORUxfVFlQRSc+PGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSBrZXJuZWwgcmVjaXBlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUgQlNQIGRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgZmlsZSBtYXRjaC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gc2VwYXJhdGUgeW91ciBrZXJuZWwgcG9saWN5IGZyb20geW91ciBoYXJkd2FyZSBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHlvdSBpbmNsdWRlIGEga2VybmVsIHR5cGUgKDxmaWxlbmFtZT5rdHlwZTwvZmlsZW5hbWU+KSwgc3VjaCBhcworICAgICAgICAgICAgICAgICJzdGFuZGFyZCIuCisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBhZ2dyZWdhdGVzIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIHBhdGNoZXMsCisgICAgICAgICAgICAgICAgYW5kIGZlYXR1cmVzIHRoYXQgbWFrZSB1cCB5b3VyIHN0YW5kYXJkIGtlcm5lbCBwb2xpY3kuCisgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0na2VybmVsLXR5cGVzJz5LZXJuZWwgVHlwZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGFnZ3JlZ2F0ZSBjb21tb24gY29uZmlndXJhdGlvbnMgYW5kIGZlYXR1cmVzIHNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgIGtlcm5lbCBmb3IgPHJlcGxhY2VhYmxlPm15YnNwPC9yZXBsYWNlYWJsZT4sIHVzZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaW5jbHVkZSA8cmVwbGFjZWFibGU+bXlic3A8L3JlcGxhY2VhYmxlPi5zY2MKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhhdCBpbiB0aGUgQmVhZ2xlQm9uZSBleGFtcGxlIHdpdGggdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluY2x1ZGUgYmVhZ2xlYm9uZS5zY2MKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBicmVhayBhIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGludG8gdGhlIHZhcmlvdXMKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRmluYWxseSwgaWYgeW91IGhhdmUgYW55IGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgIGhhcmR3YXJlIHRoYXQgYXJlIG5vdCBpbiBhIDxmaWxlbmFtZT4qLnNjYzwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgeW91IGNhbiBpbmNsdWRlIHRoZW0gYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGtjb25mIGhhcmR3YXJlIDxyZXBsYWNlYWJsZT5teWJzcDwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5leHRyYTwvcmVwbGFjZWFibGU+LmNmZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgQmVhZ2xlQm9uZSBleGFtcGxlIGRvZXMgbm90IGluY2x1ZGUgdGhlc2UgdHlwZXMgb2YKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgTWFsdGEgMzItYml0IGJvYXJkIGRvZXMgKCJtdGktbWFsdGEzMiIpLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIDxmaWxlbmFtZT5tdGktbWFsdGEzMi1sZS1zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkZWZpbmUgS01BQ0hJTkUgbXRpLW1hbHRhMzItbGUKKyAgICAgZGVmaW5lIEtNQUNISU5FIHFlbXVtaXBzZWwKKyAgICAgZGVmaW5lIEtUWVBFIHN0YW5kYXJkCisgICAgIGRlZmluZSBLQVJDSCBtaXBzCisKKyAgICAgaW5jbHVkZSBrdHlwZXMvc3RhbmRhcmQvc3RhbmRhcmQuc2NjCisgICAgIGJyYW5jaCBtdGktbWFsdGEzMgorCisgICAgIGluY2x1ZGUgbXRpLW1hbHRhMzIuc2NjCisgICAgIGtjb25mIGhhcmR3YXJlIG10aS1tYWx0YTMyLWxlLmNmZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdic3AtZGVzY3JpcHRpb24tZmlsZS1leGFtcGxlLW1pbm5vdyc+CisgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE1hbnkgcmVhbC13b3JsZCBleGFtcGxlcyBhcmUgbW9yZSBjb21wbGV4LgorICAgICAgICAgICAgICAgIExpa2UgYW55IG90aGVyIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZSwgQlNQCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zIGNhbiBhZ2dyZWdhdGUgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIE1pbm5vdyBCU1AgZGVmaW5pdGlvbiBnaXZlbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT4gYnJhbmNoIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGUvYnNwL21pbm5vdy9taW5ub3cuc2NjPC9maWxlbmFtZT4pOgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCB0aGUgTWlubm93IEJvYXJkIEJTUCBpcyB1bnVzZWQsIHRoZSBNZXRhZGF0YQorICAgICAgICAgICAgICAgICAgICByZW1haW5zIGFuZCBpcyBiZWluZyB1c2VkIGhlcmUganVzdCBhcyBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICBpbmNsdWRlIGNmZy94ODYuc2NjCisgICAgICAgICBpbmNsdWRlIGZlYXR1cmVzL2VnMjB0L2VnMjB0LnNjYworICAgICAgICAgaW5jbHVkZSBjZmcvZG1hZW5naW5lLnNjYworICAgICAgICAgaW5jbHVkZSBmZWF0dXJlcy9wb3dlci9pbnRlbC5zY2MKKyAgICAgICAgIGluY2x1ZGUgY2ZnL2VmaS5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvdXNiL2VoY2ktaGNkLnNjYworICAgICAgICAgaW5jbHVkZSBmZWF0dXJlcy91c2Ivb2hjaS1oY2Quc2NjCisgICAgICAgICBpbmNsdWRlIGZlYXR1cmVzL3VzYi91c2ItZ2FkZ2V0cy5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvdXNiL3RvdWNoc2NyZWVuLWNvbXBvc2l0ZS5zY2MKKyAgICAgICAgIGluY2x1ZGUgY2ZnL3RpbWVyL2hwZXQuc2NjCisgICAgICAgICBpbmNsdWRlIGZlYXR1cmVzL2xlZHMvbGVkcy5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvc3BpL3NwaWRldi5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvaTJjL2kyY2Rldi5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvbWVpL21laS10eGUuc2NjCisKKyAgICAgICAgICMgRWFybHlwcmludGsgYW5kIHBvcnQgZGVidWcgcmVxdWlyZXMgODI1MAorICAgICAgICAga2NvbmYgaGFyZHdhcmUgY2ZnLzgyNTAuY2ZnCisKKyAgICAgICAgIGtjb25mIGhhcmR3YXJlIG1pbm5vdy5jZmcKKyAgICAgICAgIGtjb25mIGhhcmR3YXJlIG1pbm5vdy1kZXYuY2ZnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1pbm5vdy5zY2M8L2ZpbGVuYW1lPiBkZXNjcmlwdGlvbiBmaWxlIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgYSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZyYWdtZW50CisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5taW5ub3cuY2ZnPC9maWxlbmFtZT4pIHNwZWNpZmljIHRvIHRoZSBNaW5ub3cKKyAgICAgICAgICAgICAgICBCU1AgYXMgd2VsbCBhcyBzZXZlcmFsIG1vcmUgZ2VuZXJhbCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcyBlbmFibGluZyBoYXJkd2FyZSBmb3VuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgIFRoaXMgPGZpbGVuYW1lPm1pbm5vdy5zY2M8L2ZpbGVuYW1lPiBkZXNjcmlwdGlvbiBmaWxlIGlzIHRoZW4KKyAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiBlYWNoIG9mIHRoZSB0aHJlZQorICAgICAgICAgICAgICAgICJtaW5ub3ciIGRlc2NyaXB0aW9uIGZpbGVzIGZvciB0aGUgc3VwcG9ydGVkIGtlcm5lbCB0eXBlcworICAgICAgICAgICAgICAgIChpLmUuICJzdGFuZGFyZCIsICJwcmVlbXB0LXJ0IiwgYW5kICJ0aW55IikuCisgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlICJtaW5ub3ciIGRlc2NyaXB0aW9uIGZvciB0aGUgInN0YW5kYXJkIiBrZXJuZWwKKyAgICAgICAgICAgICAgICB0eXBlIChpLmUuIDxmaWxlbmFtZT5taW5ub3ctc3RhbmRhcmQuc2NjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgZGVmaW5lIEtNQUNISU5FIG1pbm5vdworICAgICAgICAgZGVmaW5lIEtUWVBFIHN0YW5kYXJkCisgICAgICAgICBkZWZpbmUgS0FSQ0ggaTM4NgorCisgICAgICAgICBpbmNsdWRlIGt0eXBlcy9zdGFuZGFyZAorCisgICAgICAgICBpbmNsdWRlIG1pbm5vdy5zY2MKKworICAgICAgICAgIyBFeHRyYSBtaW5ub3cgY29uZmlncyBhYm92ZSB0aGUgbWluaW1hbCBkZWZpbmVkIGluIG1pbm5vdy5zY2MKKyAgICAgICAgIGluY2x1ZGUgY2ZnL2VmaS1leHQuc2NjCisgICAgICAgICBpbmNsdWRlIGZlYXR1cmVzL21lZGlhL21lZGlhLWFsbC5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvc291bmQvc25kX2hkYV9pbnRlbC5zY2MKKworICAgICAgICAgIyBUaGUgZm9sbG93aW5nIHNob3VsZCByZWFsbHkgYmUgaW4gc3RhbmRhcmQuc2NjCisgICAgICAgICAjIFVTQiBsaXZlLWltYWdlIHN1cHBvcnQKKyAgICAgICAgIGluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCisgICAgICAgICBpbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCisKKyAgICAgICAgICMgQmFzaWMgcHJvZmlsaW5nCisgICAgICAgICBpbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKKyAgICAgICAgIGluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKKworICAgICAgICAgIyBSZXF1ZXN0ZWQgZHJpdmVycyB0aGF0IGRvbid0IGhhdmUgYW4gZXhpc3Rpbmcgc2NjCisgICAgICAgICBrY29uZiBoYXJkd2FyZSBtaW5ub3ctZHJpdmVycy1leHRyYS5jZmcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gY29tbWFuZCBtaWR3YXkgdGhyb3VnaCB0aGUgZmlsZQorICAgICAgICAgICAgICAgIGluY2x1ZGVzIHRoZSA8ZmlsZW5hbWU+bWlubm93LnNjYzwvZmlsZW5hbWU+IGRlc2NyaXB0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICBkZWZpbmVzIGFsbCBlbmFibGVkIGhhcmR3YXJlIGZvciB0aGUgQlNQIHRoYXQgaXMgY29tbW9uIHRvCisgICAgICAgICAgICAgICAgYWxsIGtlcm5lbCB0eXBlcy4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGlzIGNvbW1hbmQgc2lnbmlmaWNhbnRseSByZWR1Y2VzIGR1cGxpY2F0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBOb3cgY29uc2lkZXIgdGhlICJtaW5ub3ciIGRlc2NyaXB0aW9uIGZvciB0aGUgInRpbnkiIGtlcm5lbAorICAgICAgICAgICAgICAgIHR5cGUgKGkuZS4gPGZpbGVuYW1lPm1pbm5vdy10aW55LnNjYzwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgIGRlZmluZSBLTUFDSElORSBtaW5ub3cKKyAgICAgICAgZGVmaW5lIEtUWVBFIHRpbnkKKyAgICAgICAgZGVmaW5lIEtBUkNIIGkzODYKKworICAgICAgICBpbmNsdWRlIGt0eXBlcy90aW55CisKKyAgICAgICAgaW5jbHVkZSBtaW5ub3cuc2NjCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFzIHlvdSBtaWdodCBleHBlY3QsIHRoZSAidGlueSIgZGVzY3JpcHRpb24gaW5jbHVkZXMgcXVpdGUgYQorICAgICAgICAgICAgICAgIGJpdCBsZXNzLgorICAgICAgICAgICAgICAgIEluIGZhY3QsIGl0IGluY2x1ZGVzIG9ubHkgdGhlIG1pbmltYWwgcG9saWN5IGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgInRpbnkiIGtlcm5lbCB0eXBlIGFuZCB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIHJlcXVpcmVkIGZvciBib290aW5nIHRoZSBtYWNoaW5lIGFsb25nIHdpdGggdGhlIG1vc3QgYmFzaWMKKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzeXN0ZW0gYXMgZGVmaW5lZCBpbiB0aGUgYmFzZSAibWlubm93IgorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE5vdGljZSBhZ2FpbiB0aGUgdGhyZWUgY3JpdGljYWwgdmFyaWFibGVzOgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS1RZUEUnPjxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtBUkNIJz48ZmlsZW5hbWU+S0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIE9mIHRoZXNlIHZhcmlhYmxlcywgb25seSA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGhhcyBjaGFuZ2VkIHRvIHNwZWNpZnkgdGhlICJ0aW55IiBrZXJuZWwgdHlwZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2tlcm5lbC1tZXRhZGF0YS1sb2NhdGlvbic+CisgICAgPHRpdGxlPktlcm5lbCBNZXRhZGF0YSBMb2NhdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgS2VybmVsIE1ldGFkYXRhIGFsd2F5cyBleGlzdHMgb3V0c2lkZSBvZiB0aGUga2VybmVsIHRyZWUgZWl0aGVyCisgICAgICAgIGRlZmluZWQgaW4gYSBrZXJuZWwgcmVjaXBlIChyZWNpcGUtc3BhY2UpIG9yIG91dHNpZGUgb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgV2hlcmUgeW91IGNob29zZSB0byBkZWZpbmUgdGhlIE1ldGFkYXRhIGRlcGVuZHMgb24gd2hhdCB5b3Ugd2FudAorICAgICAgICB0byBkbyBhbmQgaG93IHlvdSBpbnRlbmQgdG8gd29yay4KKyAgICAgICAgUmVnYXJkbGVzcyBvZiB3aGVyZSB5b3UgZGVmaW5lIHRoZSBrZXJuZWwgTWV0YWRhdGEsIHRoZSBzeW50YXggdXNlZAorICAgICAgICBhcHBsaWVzIGVxdWFsbHkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSBhcmUgdW5mYW1pbGlhciB3aXRoIHRoZSBMaW51eCBrZXJuZWwgYW5kIG9ubHkgd2lzaAorICAgICAgICB0byBhcHBseSBhIGNvbmZpZ3VyYXRpb24gYW5kIHBvc3NpYmx5IGEgY291cGxlIG9mIHBhdGNoZXMgcHJvdmlkZWQgdG8KKyAgICAgICAgeW91IGJ5IG90aGVycywgdGhlIHJlY2lwZS1zcGFjZSBtZXRob2QgaXMgcmVjb21tZW5kZWQuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGFsc28gYSBnb29kIGFwcHJvYWNoIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIExpbnV4IGtlcm5lbAorICAgICAgICBzb3VyY2VzIHlvdSBkbyBub3QgY29udHJvbCBvciBpZiB5b3UganVzdCBkbyBub3Qgd2FudCB0byBtYWludGFpbiBhCisgICAgICAgIExpbnV4IGtlcm5lbCBHaXQgcmVwb3NpdG9yeSBvbiB5b3VyIG93bi4KKyAgICAgICAgRm9yIHBhcnRpYWwgaW5mb3JtYXRpb24gb24gaG93IHlvdSBjYW4gZGVmaW5lIGtlcm5lbCBNZXRhZGF0YSBpbgorICAgICAgICB0aGUgcmVjaXBlLXNwYWNlLCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdtb2RpZnlpbmctYW4tZXhpc3RpbmctcmVjaXBlJz5Nb2RpZnlpbmcgYW4gRXhpc3RpbmcgUmVjaXBlPC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQ29udmVyc2VseSwgaWYgeW91IGFyZSBhY3RpdmVseSBkZXZlbG9waW5nIGEga2VybmVsIGFuZCBhcmUgYWxyZWFkeQorICAgICAgICBtYWludGFpbmluZyBhIExpbnV4IGtlcm5lbCBHaXQgcmVwb3NpdG9yeSBvZiB5b3VyIG93biwgeW91IG1pZ2h0IGZpbmQKKyAgICAgICAgaXQgbW9yZSBjb252ZW5pZW50IHRvIHdvcmsgd2l0aCBrZXJuZWwgTWV0YWRhdGEga2VwdCBvdXRzaWRlIHRoZQorICAgICAgICByZWNpcGUtc3BhY2UuCisgICAgICAgIFdvcmtpbmcgd2l0aCBNZXRhZGF0YSBpbiB0aGlzIGFyZWEgY2FuIG1ha2UgaXRlcmF0aXZlIGRldmVsb3BtZW50IG9mCisgICAgICAgIHRoZSBMaW51eCBrZXJuZWwgbW9yZSBlZmZpY2llbnQgb3V0c2lkZSBvZiB0aGUgQml0QmFrZSBlbnZpcm9ubWVudC4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVjaXBlLXNwYWNlLW1ldGFkYXRhJz4KKyAgICAgICAgPHRpdGxlPlJlY2lwZS1TcGFjZSBNZXRhZGF0YTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHN0b3JlZCBpbiByZWNpcGUtc3BhY2UsIHRoZSBrZXJuZWwgTWV0YWRhdGEgZmlsZXMgcmVzaWRlIGluIGEKKyAgICAgICAgICAgIGRpcmVjdG9yeSBoaWVyYXJjaHkgYmVsb3cKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgRm9yIGEgbGludXgteW9jdG8gcmVjaXBlIG9yIGZvciBhIExpbnV4IGtlcm5lbCByZWNpcGUgZGVyaXZlZAorICAgICAgICAgICAgYnkgY29weWluZyBhbmQgbW9kaWZ5aW5nCisgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtY29yZS9tZXRhLXNrZWxldG9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICB0byBhIHJlY2lwZSBpbiB5b3VyIGxheWVyLCA8ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGlzIHR5cGljYWxseSBzZXQgdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRISVNESVInPjxmaWxlbmFtZT5USElTRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59LyR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nbW9kaWZ5aW5nLWFuLWV4aXN0aW5nLXJlY2lwZSc+TW9kaWZ5aW5nIGFuIEV4aXN0aW5nIFJlY2lwZTwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBhIHRyaXZpYWwgdHJlZSBvZiBrZXJuZWwgTWV0YWRhdGEKKyAgICAgICAgICAgIHN0b3JlZCBpbiByZWNpcGUtc3BhY2Ugd2l0aGluIGEgQlNQIGxheWVyOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5teV9ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPi8KKyAgICAgYC0tIHJlY2lwZXMta2VybmVsCisgICAgICAgICBgLS0gbGludXgKKyAgICAgICAgICAgICBgLS0gbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgfC0tIGJzcC1zdGFuZGFyZC5zY2MKKyAgICAgICAgICAgICAgICAgfC0tIGJzcC5jZmcKKyAgICAgICAgICAgICAgICAgYC0tIHN0YW5kYXJkLmNmZworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHRoZSBNZXRhZGF0YSBpcyBzdG9yZWQgaW4gcmVjaXBlLXNwYWNlLCB5b3UgbXVzdCB0YWtlCisgICAgICAgICAgICBzdGVwcyB0byBlbnN1cmUgQml0QmFrZSBoYXMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBkZWNpZGUKKyAgICAgICAgICAgIHdoYXQgZmlsZXMgdG8gZmV0Y2ggYW5kIHdoZW4gdGhleSBuZWVkIHRvIGJlIGZldGNoZWQgYWdhaW4uCisgICAgICAgICAgICBJdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBzcGVjaWZ5IHRoZSA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlcyBvbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICBCaXRCYWtlIHBhcnNlcyB0aGVtIGFuZCBmZXRjaGVzIGFueSBmaWxlcyByZWZlcmVuY2VkIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlcyBieSB0aGUgPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wYXRjaDwvZmlsZW5hbWU+LCBvciA8ZmlsZW5hbWU+a2NvbmY8L2ZpbGVuYW1lPiBjb21tYW5kcy4KKyAgICAgICAgICAgIEJlY2F1c2Ugb2YgdGhpcywgaXQgaXMgbmVjZXNzYXJ5IHRvIGJ1bXAgdGhlIHJlY2lwZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YWx1ZSB3aGVuIGNoYW5naW5nIHRoZSBjb250ZW50IG9mIGZpbGVzIG5vdCBleHBsaWNpdGx5IGxpc3RlZAorICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSBCU1AgZGVzY3JpcHRpb24gaXMgaW4gcmVjaXBlIHNwYWNlLCB5b3UgY2Fubm90IHNpbXBseSBsaXN0CisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPiouc2NjPC9maWxlbmFtZT4gaW4gdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHN0YXRlbWVudC4KKyAgICAgICAgICAgIFlvdSBuZWVkIHRvIHVzZSB0aGUgZm9sbG93aW5nIGZvcm0gZnJvbSB5b3VyIGtlcm5lbCBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSV9hcHBlbmRfPHJlcGxhY2VhYmxlPm15cGxhdGZvcm08L3JlcGxhY2VhYmxlPiA9ICIgXAorICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPm15cGxhdGZvcm08L3JlcGxhY2VhYmxlPjt0eXBlPWttZXRhO2Rlc3RzdWZmaXg9PHJlcGxhY2VhYmxlPm15cGxhdGZvcm08L3JlcGxhY2VhYmxlPiBcCisgICAgICAgICIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtZXRhZGF0YS1vdXRzaWRlLXRoZS1yZWNpcGUtc3BhY2UnPgorICAgICAgICA8dGl0bGU+TWV0YWRhdGEgT3V0c2lkZSB0aGUgUmVjaXBlLVNwYWNlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4gc3RvcmVkIG91dHNpZGUgb2YgdGhlIHJlY2lwZS1zcGFjZSwgdGhlIGtlcm5lbCBNZXRhZGF0YQorICAgICAgICAgICAgZmlsZXMgcmVzaWRlIGluIGEgc2VwYXJhdGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFkZHMgdGhlIE1ldGFkYXRhIHRvIHRoZSBidWlsZCBhcworICAgICAgICAgICAgYSAidHlwZT1rbWV0YSIgcmVwb3NpdG9yeSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHN0YXRlbWVudCBmcm9tIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICBrZXJuZWwgcmVjaXBlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPGZpbGVuYW1lPiR7S01FVEF9PC9maWxlbmFtZT4sIGluIHRoaXMgY29udGV4dCwgaXMgc2ltcGx5IHVzZWQgdG8KKyAgICAgICAgICAgIG5hbWUgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSBHaXQgZmV0Y2hlciBwbGFjZXMgdGhlIE1ldGFkYXRhLgorICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBpcyBubyBkaWZmZXJlbnQgdGhhbiBhbnkgbXVsdGktcmVwb3NpdG9yeQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgdXNlZCBpbiBhIHJlY2lwZSAoZS5nLgorICAgICAgICAgICAgc2VlIHRoZSBwcmV2aW91cyBzZWN0aW9uKS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBrZWVwIGtlcm5lbCBNZXRhZGF0YSBpbiBhICJrZXJuZWwtY2FjaGUiLCB3aGljaCBpcyBhCisgICAgICAgICAgICBkaXJlY3RvcnkgY29udGFpbmluZyBjb25maWd1cmF0aW9uIGZyYWdtZW50cy4KKyAgICAgICAgICAgIEFzIHdpdGggYW55IE1ldGFkYXRhIGtlcHQgb3V0c2lkZSB0aGUgcmVjaXBlLXNwYWNlLCB5b3Ugc2ltcGx5CisgICAgICAgICAgICBuZWVkIHRvIHVzZSB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgd2l0aCB0aGUKKyAgICAgICAgICAgICJ0eXBlPWttZXRhIiBhdHRyaWJ1dGUuCisgICAgICAgICAgICBEb2luZyBzbyBtYWtlcyB0aGUga2VybmVsIE1ldGFkYXRhIGF2YWlsYWJsZSBkdXJpbmcgdGhlCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIHBoYXNlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgbW9kaWZ5IHRoZSBNZXRhZGF0YSwgeW91IG11c3Qgbm90IGZvcmdldCB0byB1cGRhdGUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpbiB0aGUga2VybmVsJ3MgcmVjaXBlLgorICAgICAgICAgICAgSW4gcGFydGljdWxhciwgeW91IG5lZWQgdG8gdXBkYXRlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ1JFVl9tZXRhPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gbWF0Y2ggdGhlIGNvbW1pdCBpbgorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5LTUVUQTwvZmlsZW5hbWU+IGJyYW5jaCB5b3Ugd2lzaCB0byB1c2UuCisgICAgICAgICAgICBDaGFuZ2luZyB0aGUgZGF0YSBpbiB0aGVzZSBicmFuY2hlcyBhbmQgbm90IHVwZGF0aW5nIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IHN0YXRlbWVudHMgdG8gbWF0Y2ggd2lsbCBjYXVzZSB0aGUKKyAgICAgICAgICAgIGJ1aWxkIHRvIGZldGNoIGFuIG9sZGVyIGNvbW1pdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J29yZ2FuaXppbmcteW91ci1zb3VyY2UnPgorICAgIDx0aXRsZT5Pcmdhbml6aW5nIFlvdXIgU291cmNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBNYW55IHJlY2lwZXMgYmFzZWQgb24gdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by1jdXN0b20uYmI8L2ZpbGVuYW1lPgorICAgICAgICByZWNpcGUgdXNlIExpbnV4IGtlcm5lbCBzb3VyY2VzIHRoYXQgaGF2ZSBvbmx5IGEgc2luZ2xlCisgICAgICAgIGJyYW5jaCAtICJtYXN0ZXIiLgorICAgICAgICBUaGlzIHR5cGUgb2YgcmVwb3NpdG9yeSBzdHJ1Y3R1cmUgaXMgZmluZSBmb3IgbGluZWFyIGRldmVsb3BtZW50CisgICAgICAgIHN1cHBvcnRpbmcgYSBzaW5nbGUgbWFjaGluZSBhbmQgYXJjaGl0ZWN0dXJlLgorICAgICAgICBIb3dldmVyLCBpZiB5b3Ugd29yayB3aXRoIG11bHRpcGxlIGJvYXJkcyBhbmQgYXJjaGl0ZWN0dXJlcywKKyAgICAgICAgYSBrZXJuZWwgc291cmNlIHJlcG9zaXRvcnkgd2l0aCBtdWx0aXBsZSBicmFuY2hlcyBpcyBtb3JlCisgICAgICAgIGVmZmljaWVudC4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IG5lZWQgYSBzZXJpZXMgb2YgcGF0Y2hlcyBmb3Igb25lIGJvYXJkIHRvIGJvb3QuCisgICAgICAgIFNvbWV0aW1lcywgdGhlc2UgcGF0Y2hlcyBhcmUgd29ya3MtaW4tcHJvZ3Jlc3Mgb3IgZnVuZGFtZW50YWxseSB3cm9uZywKKyAgICAgICAgeWV0IHRoZXkgYXJlIHN0aWxsIG5lY2Vzc2FyeSBmb3Igc3BlY2lmaWMgYm9hcmRzLgorICAgICAgICBJbiB0aGVzZSBzaXR1YXRpb25zLCB5b3UgbW9zdCBsaWtlbHkgZG8gbm90IHdhbnQgdG8gaW5jbHVkZSB0aGVzZQorICAgICAgICBwYXRjaGVzIGluIGV2ZXJ5IGtlcm5lbCB5b3UgYnVpbGQgKGkuZS4gaGF2ZSB0aGUgcGF0Y2hlcyBhcyBwYXJ0IG9mCisgICAgICAgIHRoZSBsb25lICJtYXN0ZXIiIGJyYW5jaCkuCisgICAgICAgIEl0IGlzIHNpdHVhdGlvbnMgbGlrZSB0aGVzZSB0aGF0IGdpdmUgcmlzZSB0byBtdWx0aXBsZSBicmFuY2hlcyB1c2VkCisgICAgICAgIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBzb3VyY2VzIEdpdCByZXBvc2l0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBSZXBvc2l0b3J5IG9yZ2FuaXphdGlvbiBzdHJhdGVnaWVzIGV4aXN0IHRoYXQgbWF4aW1pemUgc291cmNlIHJldXNlLAorICAgICAgICByZW1vdmUgcmVkdW5kYW5jeSwgYW5kIGxvZ2ljYWxseSBvcmRlciB5b3VyIGNoYW5nZXMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBzdHJhdGVnaWVzIGZvciB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVuY2Fwc3VsYXRpbmcgcGF0Y2hlcyBpbiBhIGZlYXR1cmUgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICBhbmQgb25seSBpbmNsdWRpbmcgdGhlIHBhdGNoZXMgaW4gdGhlIEJTUCBkZXNjcmlwdGlvbnMgb2YKKyAgICAgICAgICAgICAgICB0aGUgYXBwbGljYWJsZSBib2FyZHMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRpbmcgYSBtYWNoaW5lIGJyYW5jaCBpbiB5b3VyCisgICAgICAgICAgICAgICAga2VybmVsIHNvdXJjZSByZXBvc2l0b3J5IGFuZCBhcHBseWluZyB0aGUgcGF0Y2hlcyBvbiB0aGF0CisgICAgICAgICAgICAgICAgYnJhbmNoIG9ubHkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRpbmcgYSBmZWF0dXJlIGJyYW5jaCBpbiB5b3VyCisgICAgICAgICAgICAgICAga2VybmVsIHNvdXJjZSByZXBvc2l0b3J5IGFuZCBtZXJnaW5nIHRoYXQgYnJhbmNoIGludG8geW91cgorICAgICAgICAgICAgICAgIEJTUCB3aGVuIG5lZWRlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBhcHByb2FjaCB5b3UgdGFrZSBpcyBlbnRpcmVseSB1cCB0byB5b3UKKyAgICAgICAgYW5kIGRlcGVuZHMgb24gd2hhdCB3b3JrcyBiZXN0IGZvciB5b3VyIGRldmVsb3BtZW50IG1vZGVsLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdlbmNhcHN1bGF0aW5nLXBhdGNoZXMnPgorICAgICAgICA8dGl0bGU+RW5jYXBzdWxhdGluZyBQYXRjaGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGlmIHlvdSBhcmUgcmV1c2luZyBwYXRjaGVzIGZyb20gYW4gZXh0ZXJuYWwgdHJlZSBhbmQgYXJlIG5vdAorICAgICAgICAgICAgd29ya2luZyBvbiB0aGUgcGF0Y2hlcywgeW91IG1pZ2h0IGZpbmQgdGhlIGVuY2Fwc3VsYXRlZCBmZWF0dXJlCisgICAgICAgICAgICB0byBiZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgIEdpdmVuIHRoaXMgc2NlbmFyaW8sIHlvdSBkbyBub3QgbmVlZCB0byBjcmVhdGUgYW55IGJyYW5jaGVzIGluIHRoZQorICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBSYXRoZXIsIHlvdSBqdXN0IHRha2UgdGhlIHN0YXRpYyBwYXRjaGVzIHlvdSBuZWVkIGFuZCBlbmNhcHN1bGF0ZQorICAgICAgICAgICAgdGhlbSB3aXRoaW4gYSBmZWF0dXJlIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgZmVhdHVyZSBkZXNjcmlwdGlvbiwgeW91IHNpbXBseSBpbmNsdWRlIHRoYXQgaW50bworICAgICAgICAgICAgdGhlIEJTUCBkZXNjcmlwdGlvbiBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWRlc2NyaXB0aW9ucyc+QlNQIERlc2NyaXB0aW9uczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBwYXRjaGVzIGFuZCBCU1AKKyAgICAgICAgICAgIGRlc2NyaXB0aW9ucyBpbiB0aGUgIjxsaW5rIGxpbmtlbmQ9J3BhdGNoZXMnPlBhdGNoZXM8L2xpbms+IiBhbmQKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtZGVzY3JpcHRpb25zJz5CU1AgRGVzY3JpcHRpb25zPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb25zLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21hY2hpbmUtYnJhbmNoZXMnPgorICAgICAgICA8dGl0bGU+TWFjaGluZSBCcmFuY2hlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBoYXZlIG11bHRpcGxlIG1hY2hpbmVzIGFuZCBhcmNoaXRlY3R1cmVzIHRvIHN1cHBvcnQsCisgICAgICAgICAgICBvciB5b3UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gYm9hcmQgc3VwcG9ydCwgaXQgaXMgbW9yZQorICAgICAgICAgICAgZWZmaWNpZW50IHRvIGNyZWF0ZSBicmFuY2hlcyBpbiB0aGUgcmVwb3NpdG9yeSBiYXNlZCBvbgorICAgICAgICAgICAgaW5kaXZpZHVhbCBtYWNoaW5lcy4KKyAgICAgICAgICAgIEhhdmluZyBtYWNoaW5lIGJyYW5jaGVzIGFsbG93cyBjb21tb24gc291cmNlIHRvIHJlbWFpbiBpbiB0aGUKKyAgICAgICAgICAgICJtYXN0ZXIiIGJyYW5jaCB3aXRoIGFueSBmZWF0dXJlcyBzcGVjaWZpYyB0byBhIG1hY2hpbmUgc3RvcmVkCisgICAgICAgICAgICBpbiB0aGUgYXBwcm9wcmlhdGUgbWFjaGluZSBicmFuY2guCisgICAgICAgICAgICBUaGlzIG9yZ2FuaXphdGlvbiBtZXRob2QgZnJlZXMgeW91IGZyb20gY29udGludWFsbHkgcmVpbnRlZ3JhdGluZworICAgICAgICAgICAgeW91ciBwYXRjaGVzIGludG8gYSBmZWF0dXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgbmV3IGJyYW5jaCwgeW91IGNhbiBzZXQgdXAgeW91ciBrZXJuZWwgTWV0YWRhdGEKKyAgICAgICAgICAgIHRvIHVzZSB0aGUgYnJhbmNoIGEgY291cGxlIGRpZmZlcmVudCB3YXlzLgorICAgICAgICAgICAgSW4gdGhlIHJlY2lwZSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBuZXcgYnJhbmNoIGFzIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPiB0byB1c2UgZm9yIHRoZSBib2FyZCBhcworICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSCA9ICJteW5ld2JyYW5jaCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFub3RoZXIgbWV0aG9kIGlzIHRvIHVzZSB0aGUgPGZpbGVuYW1lPmJyYW5jaDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIGluIHRoZSBCU1AgZGVzY3JpcHRpb246CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG15YnNwLnNjYzoKKyAgICAgICAgZGVmaW5lIEtNQUNISU5FIG15YnNwCisgICAgICAgIGRlZmluZSBLVFlQRSBzdGFuZGFyZAorICAgICAgICBkZWZpbmUgS0FSQ0ggaTM4NgorICAgICAgICBpbmNsdWRlIHN0YW5kYXJkLnNjYworCisgICAgICAgIGJyYW5jaCBteW5ld2JyYW5jaAorCisgICAgICAgIGluY2x1ZGUgbXlic3AtaHcuc2NjCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBmaW5kIHlvdXJzZWxmIHdpdGggbnVtZXJvdXMgYnJhbmNoZXMsIHlvdSBtaWdodCBjb25zaWRlcgorICAgICAgICAgICAgdXNpbmcgYSBoaWVyYXJjaGljYWwgYnJhbmNoaW5nIHN5c3RlbSBzaW1pbGFyIHRvIHdoYXQgdGhlCisgICAgICAgICAgICBZb2N0byBMaW51eCBLZXJuZWwgR2l0IHJlcG9zaXRvcmllcyB1c2U6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5jb21tb248L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBoYWQgdHdvIGtlcm5lbCB0eXBlcywgInN0YW5kYXJkIiBhbmQgInNtYWxsIiBmb3IKKyAgICAgICAgICAgIGluc3RhbmNlLCB0aHJlZSBtYWNoaW5lcywgYW5kIDxyZXBsYWNlYWJsZT5jb21tb248L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgYXMgPGZpbGVuYW1lPm15ZGlyPC9maWxlbmFtZT4sIHRoZSBicmFuY2hlcyBpbiB5b3VyCisgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBtaWdodCBsb29rIGxpa2UgdGhpczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbXlkaXIvYmFzZQorICAgICBteWRpci9zdGFuZGFyZC9iYXNlCisgICAgIG15ZGlyL3N0YW5kYXJkL21hY2hpbmVfYQorICAgICBteWRpci9zdGFuZGFyZC9tYWNoaW5lX2IKKyAgICAgbXlkaXIvc3RhbmRhcmQvbWFjaGluZV9jCisgICAgIG15ZGlyL3NtYWxsL2Jhc2UKKyAgICAgbXlkaXIvc21hbGwvbWFjaGluZV9hCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgb3JnYW5pemF0aW9uIGNhbiBoZWxwIGNsYXJpZnkgdGhlIGJyYW5jaCByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+bXlkaXIvc3RhbmRhcmQvbWFjaGluZV9hPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgaW4gPGZpbGVuYW1lPm15ZGlyL2Jhc2U8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5teWRpci9zdGFuZGFyZC9iYXNlPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUgInN0YW5kYXJkIiBhbmQgInNtYWxsIiBicmFuY2hlcyBhZGQgc291cmNlcyBzcGVjaWZpYyB0byB0aG9zZQorICAgICAgICAgICAga2VybmVsIHR5cGVzIHRoYXQgZm9yIHdoYXRldmVyIHJlYXNvbiBhcmUgbm90IGFwcHJvcHJpYXRlIGZvciB0aGUKKyAgICAgICAgICAgIG90aGVyIGJyYW5jaGVzLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlICJiYXNlIiBicmFuY2hlcyBhcmUgYW4gYXJ0aWZhY3Qgb2YgdGhlIHdheSBHaXQgbWFuYWdlcworICAgICAgICAgICAgICAgIGl0cyBkYXRhIGludGVybmFsbHkgb24gdGhlIGZpbGVzeXN0ZW06IEdpdCB3aWxsIG5vdCBhbGxvdyB5b3UKKyAgICAgICAgICAgICAgICB0byB1c2UgPGZpbGVuYW1lPm15ZGlyL3N0YW5kYXJkPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15ZGlyL3N0YW5kYXJkL21hY2hpbmVfYTwvZmlsZW5hbWU+IGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICB3b3VsZCBoYXZlIHRvIGNyZWF0ZSBhIGZpbGUgYW5kIGEgZGlyZWN0b3J5IG5hbWVkICJzdGFuZGFyZCIuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZmVhdHVyZS1icmFuY2hlcyc+CisgICAgICAgIDx0aXRsZT5GZWF0dXJlIEJyYW5jaGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGFyZSBhY3RpdmVseSBkZXZlbG9waW5nIG5ldyBmZWF0dXJlcywgaXQgY2FuIGJlIG1vcmUKKyAgICAgICAgICAgIGVmZmljaWVudCB0byB3b3JrIHdpdGggdGhhdCBmZWF0dXJlIGFzIGEgYnJhbmNoLCByYXRoZXIgdGhhbgorICAgICAgICAgICAgYXMgYSBzZXQgb2YgcGF0Y2hlcyB0aGF0IGhhdmUgdG8gYmUgcmVndWxhcmx5IHVwZGF0ZWQuCisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwgdG9vbHMgcHJvdmlkZSBmb3IgdGhpcyB3aXRoCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIG1lcmdlIGEgZmVhdHVyZSBicmFuY2ggaW50byBhIEJTUCwgaW5zZXJ0IHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+IGNvbW1hbmQgYWZ0ZXIgYW55CisgICAgICAgICAgICA8ZmlsZW5hbWU+YnJhbmNoPC9maWxlbmFtZT4gY29tbWFuZHM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG15YnNwLnNjYzoKKyAgICAgICAgZGVmaW5lIEtNQUNISU5FIG15YnNwCisgICAgICAgIGRlZmluZSBLVFlQRSBzdGFuZGFyZAorICAgICAgICBkZWZpbmUgS0FSQ0ggaTM4NgorICAgICAgICBpbmNsdWRlIHN0YW5kYXJkLnNjYworCisgICAgICAgIGJyYW5jaCBteW5ld2JyYW5jaAorICAgICAgICBnaXQgbWVyZ2UgbXlmZWF0dXJlCisKKyAgICAgICAgaW5jbHVkZSBteWJzcC1ody5zY2MKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3NjYy1yZWZlcmVuY2UnPgorICAgIDx0aXRsZT5TQ0MgRGVzY3JpcHRpb24gRmlsZSBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGJyaWVmIHJlZmVyZW5jZSBmb3IgdGhlIGNvbW1hbmRzIHlvdSBjYW4gdXNlCisgICAgICAgIHdpdGhpbiBhbiBTQ0MgZGVzY3JpcHRpb24gZmlsZSAoPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPik6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJyYW5jaCBbcmVmXTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBuZXcgYnJhbmNoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGJyYW5jaAorICAgICAgICAgICAgICAgICh0eXBpY2FsbHkgPGZpbGVuYW1lPiR7S1RZUEV9PC9maWxlbmFtZT4pIHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2gsIG9yICJyZWYiIGlmIHNwZWNpZmllZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmaW5lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgRGVmaW5lcyB2YXJpYWJsZXMsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtUWVBFJz48ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQVJDSCc+PGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0ZFQVRVUkVfREVTQ1JJUFRJT04nPjxmaWxlbmFtZT5LRkVBVFVSRV9ERVNDUklQVElPTjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluY2x1ZGUgU0NDX0ZJTEU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBJbmNsdWRlcyBhbiBTQ0MgZmlsZSBpbiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHBhcnNlZCBhcyBpZiB5b3UgaGFkIGluc2VydGVkIGl0IGlubGluZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2NvbmYgW2hhcmR3YXJlfG5vbi1oYXJkd2FyZV0gQ0ZHX0ZJTEU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBRdWV1ZXMgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZvciBtZXJnaW5nIGludG8gdGhlIGZpbmFsCisgICAgICAgICAgICAgICAgTGludXggPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgbWVyZ2UgR0lUX0JSQU5DSDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIE1lcmdlcyB0aGUgZmVhdHVyZSBicmFuY2ggaW50byB0aGUgY3VycmVudCBicmFuY2guCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhdGNoIFBBVENIX0ZJTEU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBcHBsaWVzIHRoZSBwYXRjaCB0byB0aGUgY3VycmVudCBHaXQgYnJhbmNoLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ucnN0CmluZGV4IDY0MjM1ZjMuLmQ0YjYwYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKgogQ29tbW9uIFRhc2tzCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU4YTZkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbApAQCAtMCwwICsxLDI3MzAgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0na2VybmVsLWRldi1jb21tb24nPgorPHRpdGxlPkNvbW1vbiBUYXNrczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjaGFwdGVyIHByZXNlbnRzIHNldmVyYWwgY29tbW9uIHRhc2tzIHlvdSBwZXJmb3JtIHdoZW4geW91CisgICAgICAgIHdvcmsgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwuCisgICAgICAgIFRoZXNlIHRhc2tzIGluY2x1ZGUgcHJlcGFyaW5nIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZm9yCisgICAgICAgIGtlcm5lbCBkZXZlbG9wbWVudCwgcHJlcGFyaW5nIGEgbGF5ZXIsIG1vZGlmeWluZyBhbiBleGlzdGluZyByZWNpcGUsCisgICAgICAgIHBhdGNoaW5nIHRoZSBrZXJuZWwsIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIGl0ZXJhdGl2ZSBkZXZlbG9wbWVudCwKKyAgICAgICAgd29ya2luZyB3aXRoIHlvdXIgb3duIHNvdXJjZXMsIGFuZCBpbmNvcnBvcmF0aW5nIG91dC1vZi10cmVlIG1vZHVsZXMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhlIGV4YW1wbGVzIHByZXNlbnRlZCBpbiB0aGlzIGNoYXB0ZXIgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAyLjQgUmVsZWFzZSBhbmQgZm9yd2FyZC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdwcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QtdG8td29yay1vbi10aGUta2VybmVsJz4KKyAgICAgICAgPHRpdGxlPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gZG8gYW55IGtlcm5lbCBkZXZlbG9wbWVudCwgeW91IG5lZWQgdG8gYmUKKyAgICAgICAgICAgIHN1cmUgeW91ciBidWlsZCBob3N0IGlzIHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBzZXQgdXAsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgUGFydCBvZiBwcmVwYXJpbmcgdGhlIHN5c3RlbSBpcyBjcmVhdGluZyBhIGxvY2FsIEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeSBvZiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgKDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIG9uIHlvdXIgc3lzdGVtLgorICAgICAgICAgICAgRm9sbG93IHRoZSBzdGVwcyBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgdG8gc2V0IHVwIHlvdXIKKyAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGRldmVsb3BtZW50IGJyYW5jaCBvcgorICAgICAgICAgICAgICAgIHlvdSBjcmVhdGUgeW91ciBsb2NhbCBicmFuY2ggYnkgY2hlY2tpbmcgb3V0IGEgc3BlY2lmaWMgdGFnCisgICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSBkZXNpcmVkIHZlcnNpb24gb2YgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEtlcm5lbCBkZXZlbG9wbWVudCBpcyBiZXN0IGFjY29tcGxpc2hlZCB1c2luZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBhbmQgbm90IHRocm91Z2ggdHJhZGl0aW9uYWwga2VybmVsIHdvcmtmbG93IG1ldGhvZHMuCisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBmb3IgYm90aAorICAgICAgICAgICAgc2NlbmFyaW9zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dldHRpbmctcmVhZHktdG8tZGV2ZWxvcC11c2luZy1kZXZ0b29sJz4KKyAgICAgICAgICAgIDx0aXRsZT5HZXR0aW5nIFJlYWR5IHRvIERldmVsb3AgVXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBwcmVwYXJlIHRvIHVwZGF0ZSB0aGUga2VybmVsIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBDb21wbGV0aW5nIHRoaXMgcHJvY2VkdXJlIGxlYXZlcyB5b3Ugd2l0aCBhIGNsZWFuIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgICAgIGFuZCByZWFkeSB0byBtYWtlIG1vZGlmaWNhdGlvbnMgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbjoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCaXRCYWtlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCZWZvcmUgYnVpbGRpbmcgYW4gZXh0ZW5zaWJsZSBTREssIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplIHRoZSBCaXRCYWtlIGJ1aWxkIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+PC91bGluaz4pOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reQorICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmRzIGFzc3VtZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGhhdmUgYmVlbiBjbG9uZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBHaXQgYW5kIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4Ni02NCIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDY0LWJpdCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkPC9maWxlbmFtZT4gaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHNvLCBzaW5jZSB5b3UgYXJlIHByZXBhcmluZyB0byB3b3JrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlLCB5b3UgbmVlZCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JbiB0aGlzIGV4YW1wbGUgd2Ugd2lzaCB0byBidWlsZCBmb3IgcWVtdXg4NiBzbworICAgICAgICAgICAgICAgICAgICAgICAgd2UgbXVzdCBzZXQgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICJxZW11eDg2IiBhbmQgYWxzbyBhZGQgdGhlICJrZXJuZWwtbW9kdWxlcyIuIEFzIGRlc2NyaWJlZAorICAgICAgICAgICAgICAgICAgICAgICAgd2UgZG8gdGhpcyBieSBhcHBlbmRpbmcgdG8gPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID0gInFlbXV4ODYiCisgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTGF5ZXIgZm9yIFBhdGNoZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIGxheWVyIHRvIGhvbGQgcGF0Y2hlcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBBZGQgeW91ciBuZXcgbGF5ZXIgd2l0aCAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcicKKyAgICAgJAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIGFuZCBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgKEJTUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcXVpY2tseSBzZXQgdXAgYSBsYXllciwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbmZvcm0gdGhlIEJpdEJha2UgQnVpbGQgRW52aXJvbm1lbnQgQWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFzIGRpcmVjdGVkIHdoZW4geW91IGNyZWF0ZWQgeW91ciBsYXllciwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgbGF5ZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICAkCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBFeHRlbnNpYmxlIFNESzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIGV4dGVuc2libGUgU0RLIHNwZWNpZmljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHVzZSB3aXRoIGltYWdlcyB0byBiZSBydW4gdXNpbmcgUUVNVToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCAtYyBwb3B1bGF0ZV9zZGtfZXh0CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBmaW5pc2hlcywgeW91IGNhbiBmaW5kIHRoZSBTREsgaW5zdGFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIChpLmUuIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gZmlsZSkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB+L3Bva3kvYnVpbGQvdG1wL2RlcGxveS9zZGsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHRoZSBpbnN0YWxsZXIgZmlsZSBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2UtbWluaW1hbC1pNTg2LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBFeHRlbnNpYmxlIFNESzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBpbnN0YWxsIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBpbnN0YWxsIHRoZSBTREsgaW4gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+L3Bva3lfc2RrPC9maWxlbmFtZT4gZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZC90bXAvZGVwbG95L3NkaworICAgICAkIC4vcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1taW5pbWFsLWk1ODYtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAorICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIEV4dGVuc2libGUgU0RLIGluc3RhbGxlciB2ZXJzaW9uICZESVNUUk87CisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgRW50ZXIgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgU0RLIChkZWZhdWx0OiB+L3Bva3lfc2RrKToKKyAgICAgWW91IGFyZSBhYm91dCB0byBpbnN0YWxsIHRoZSBTREsgdG8gIi9ob21lL3Njb3R0cmlmL3Bva3lfc2RrIi4gUHJvY2VlZCBbWS9uXT8gWQorICAgICBFeHRyYWN0aW5nIFNESy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uZG9uZQorICAgICBTZXR0aW5nIGl0IHVwLi4uCisgICAgIEV4dHJhY3RpbmcgYnVpbGR0b29scy4uLgorICAgICBQcmVwYXJpbmcgYnVpbGQgc3lzdGVtLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6NTIKKyAgICAgSW5pdGlhbGl6aW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowNAorICAgICBDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHk6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MzMKKyAgICAgSW5pdGlhbGl6aW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBkb25lCisgICAgIFNESyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2V0IHVwIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkLgorICAgICBFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLgorICAgICAgJCAuIC9ob21lL3Njb3R0cmlmL3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nc2V0dGluZy11cC10aGUtZXNkay10ZXJtaW5hbCc+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIGEgTmV3IFRlcm1pbmFsIHRvIFdvcmsgV2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU0RLOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzZXQgdXAgYSBuZXcgdGVybWluYWwgdG8gd29yayB3aXRoIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUgc2FtZSBCaXRCYWtlIHNoZWxsIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBvcGVuaW5nIGEgbmV3IHNoZWxsLCBydW4gdGhlIFNESyBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGFzIGRpcmVjdGVkIGJ5IHRoZSBvdXRwdXQgZnJvbSBpbnN0YWxsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0RLOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB+L3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAiU0RLIGVudmlyb25tZW50IG5vdyBzZXQgdXA7IGFkZGl0aW9uYWxseSB5b3UgbWF5IG5vdyBydW4gZGV2dG9vbCB0byBwZXJmb3JtIGRldmVsb3BtZW50IHRhc2tzLgorICAgICBSdW4gZGV2dG9vbCAtLWhlbHAgZm9yIGZ1cnRoZXIgZGV0YWlscy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBnZXQgYSB3YXJuaW5nIGFib3V0IGF0dGVtcHRpbmcgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLIGluIGFuIGVudmlyb25tZW50IHNldCB1cCB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlLCB5b3UgZGlkIG5vdCB1c2UgYSBuZXcgc2hlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBDbGVhbiBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHN0ZXAgaW4gcHJlcGFyaW5nIHRvIHdvcmsgb24gdGhlIGtlcm5lbCBpcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYW4gaW5pdGlhbCBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiB0aGUgbmV3IHRlcm1pbmFsIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAganVzdCBzZXQgdXAgYW5kIGluaXRpYWxpemVkIGZvciBTREsgd29yazoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjA1CisgICAgIFBhcnNpbmcgb2YgODMwIC5iYiBmaWxlcyBjb21wbGV0ZSAoMCBjYWNoZWQsIDgzMCBwYXJzZWQpLiAxMjk5IHRhcmdldHMsIDQ3IHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KKyAgICAgV0FSTklORzogTm8gcGFja2FnZXMgdG8gYWRkLCBidWlsZGluZyBpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwgdW5tb2RpZmllZAorICAgICBMb2FkaW5nIGNhY2hlOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBMb2FkZWQgMTI5OSBlbnRyaWVzIGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KKyAgICAgTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCisgICAgIEluaXRpYWxpemluZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjA3CisgICAgIENoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDI4NjYgdGFza3Mgb2Ygd2hpY2ggMjYwNCBkaWRuJ3QgbmVlZCB0byBiZSByZXJ1biBhbmQgYWxsIHN1Y2NlZWRlZC4KKyAgICAgTk9URTogU3VjY2Vzc2Z1bGx5IGJ1aWx0IGNvcmUtaW1hZ2UtbWluaW1hbC4gWW91IGNhbiBmaW5kIG91dHB1dCBmaWxlcyBpbiAvaG9tZS9zY290dHJpZi9wb2t5X3Nkay90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2VyZSBidWlsZGluZyBmb3IgYWN0dWFsIGhhcmR3YXJlIGFuZCBub3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRpb24sIHlvdSBjb3VsZCBmbGFzaCB0aGUgaW1hZ2UgdG8gYSBVU0Igc3RpY2sKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIDxmaWxlbmFtZT4vZGV2L3NkZDwvZmlsZW5hbWU+IGFuZCBib290IHlvdXIgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgdGhhdCB1c2VzIGEgTWlubm93Ym9hcmQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9LZXJuZWxEZXZlbG9wbWVudFdpdGhFc2RrJz5UaXBzQW5kVHJpY2tzL0tlcm5lbERldmVsb3BtZW50V2l0aEVzZGs8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgV2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3UgaGF2ZSBzZXQgdXAgdG8gc3RhcnQgbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8KKyAgICAgICAgICAgICAgICB0aGUga2VybmVsIGJ5IHVzaW5nIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICBGb3IgYSBjb250aW51ZWQgZXhhbXBsZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEdldHRpbmcgcmVhZHkgZm9yIHRyYWRpdGlvbmFsIGtlcm5lbCBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IGludm9sdmVzIG1hbnkgb2YgdGhlIHNhbWUgc3RlcHMgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgIHByZXZpb3VzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG5lZWQgdG8gZXN0YWJsaXNoIGEgbG9jYWwgY29weSBvZiB0aGUga2VybmVsIHNvdXJjZQorICAgICAgICAgICAgICAgIHNpbmNlIHlvdSB3aWxsIGJlIGVkaXRpbmcgdGhlc2UgZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBwcmVwYXJlIHRvIHVwZGF0ZSB0aGUga2VybmVsIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IGZsb3cgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBDb21wbGV0aW5nIHRoaXMgcHJvY2VkdXJlIGxlYXZlcyB5b3UgcmVhZHkgdG8gbWFrZSBtb2RpZmljYXRpb25zCisgICAgICAgICAgICAgICAgdG8gdGhlIGtlcm5lbCBzb3VyY2UgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb246CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQml0QmFrZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gZG8gYW55dGhpbmcgdXNpbmcgQml0QmFrZSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemUgdGhlIEJpdEJha2UgYnVpbGQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBmb3IgdGhpcyBleGFtcGxlLCBiZSBzdXJlIHRoYXQgdGhlIGxvY2FsIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgY2hlY2tlZCBvdXQgZm9yIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk9fTkFNRTsgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gY2hlY2tvdXQgb3V0IHRoZSAmRElTVFJPX05BTUU7IGJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIG91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5CisgICAgICQgZ2l0IGJyYW5jaAorICAgICBtYXN0ZXIKKyAgICAgKiAmRElTVFJPX05BTUU7CisgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgY29tbWFuZHMgYXNzdW1lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgaGF2ZSBiZWVuIGNsb25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEdpdCBhbmQgdGhlIGxvY2FsIHJlcG9zaXRvcnkgaXMgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9reSIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBhcmUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4Ni02NCIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDY0LWJpdCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkPC9maWxlbmFtZT4gaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHNvLCBzaW5jZSB5b3UgYXJlIHByZXBhcmluZyB0byB3b3JrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlLCB5b3UgbmVlZCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JbiB0aGlzIGV4YW1wbGUgd2Ugd2lzaCB0byBidWlsZCBmb3IgcWVtdXg4NiBzbworICAgICAgICAgICAgICAgICAgICAgICAgd2UgbXVzdCBzZXQgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICJxZW11eDg2IiBhbmQgYWxzbyBhZGQgdGhlICJrZXJuZWwtbW9kdWxlcyIuIEFzIGRlc2NyaWJlZAorICAgICAgICAgICAgICAgICAgICAgICAgd2UgZG8gdGhpcyBieSBhcHBlbmRpbmcgdG8gPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID0gInFlbXV4ODYiCisgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTGF5ZXIgZm9yIFBhdGNoZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIGxheWVyIHRvIGhvbGQgcGF0Y2hlcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBBZGQgeW91ciBuZXcgbGF5ZXIgd2l0aCAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcicKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBhbmQgQlNQIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IChCU1ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHF1aWNrbHkgc2V0IHVwIGEgbGF5ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5mb3JtIHRoZSBCaXRCYWtlIEJ1aWxkIEVudmlyb25tZW50IEFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBcyBkaXJlY3RlZCB3aGVuIHlvdSBjcmVhdGVkIHlvdXIgbGF5ZXIsIHlvdSBuZWVkIHRvIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAuLi8uLi9tZXRhLW15bGF5ZXIKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIgLi4uCisgICAgICQKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTG9jYWwgQ29weSBvZiB0aGUgS2VybmVsIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIEdpdCByZXBvc2l0b3JpZXMgb2Ygc3VwcG9ydGVkIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbHMgb3JnYW5pemVkIHVuZGVyICJZb2N0byBMaW51eCBLZXJuZWwiIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjcmVhdGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29weSBvZiB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5IG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c3VhbGx5IG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3RhbmRhcmQvYmFzZTwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3cgaG93IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIGluIHRoZSA8ZmlsZW5hbWU+c3RhbmRhcmQvYmFzZTwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSB1c2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZm9yd2FyZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMgcHJpb3IgdG8gWW9jdG8gUHJvamVjdCAyLjQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyIC0tYnJhbmNoIHN0YW5kYXJkL2Jhc2UKKyAgICAgQ2xvbmluZyBpbnRvICdsaW51eC15b2N0by00LjEyJy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDYwOTcxOTUsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoOTAxMDI2LzkwMTAyNiksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgNjA5NzE5NSAoZGVsdGEgNTE1MjYwNCksIHJldXNlZCA2MDk2ODQ3IChkZWx0YSA1MTUyMjU2KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoNjA5NzE5NS82MDk3MTk1KSwgMS4yNCBHaUIgfCA3LjgxIE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICg1MTUyNjA0LzUxNTI2MDQpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgQ2hlY2tpbmcgb3V0IGZpbGVzOiAxMDAlICg1OTg0Ni81OTg0NiksIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExvY2FsIENvcHkgb2YgdGhlIEtlcm5lbCBDYWNoZSBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjcmVhdGUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29weSBvZiB0aGUga2VybmVsIGNhY2hlIEdpdCByZXBvc2l0b3J5IG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c3VhbGx5IG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBmb3IgdGhpcyBleGFtcGxlLCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tNC4xMjwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3cgaG93IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBicmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGUgLS1icmFuY2ggeW9jdG8tNC4xMgorICAgICBDbG9uaW5nIGludG8gJ3lvY3RvLWtlcm5lbC1jYWNoZScuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAyMjYzOSwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg5NzYxLzk3NjEpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDIyNjM5IChkZWx0YSAxMjQwMCksIHJldXNlZCAyMjU4NiAoZGVsdGEgMTIzNDcpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgyMjYzOS8yMjYzOSksIDIyLjM0IE1pQiB8IDYuMjcgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDEyNDAwLzEyNDAwKSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgYXJlIHJlYWR5IHRvIHN0YXJ0IG1ha2luZyBtb2RpZmljYXRpb25zIHRvCisgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCB1c2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQgc3RlcHMuCisgICAgICAgICAgICAgICAgRm9yIGEgY29udGludWVkIGV4YW1wbGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWFuZC1wcmVwYXJpbmctYS1sYXllcic+CisgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhbmQgUHJlcGFyaW5nIGEgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byBiZSBtb2RpZnlpbmcga2VybmVsIHJlY2lwZXMsIGl0IGlzIHJlY29tbWVuZGVkCisgICAgICAgICAgICB0aGF0IHlvdSBjcmVhdGUgYW5kIHByZXBhcmUgeW91ciBvd24gbGF5ZXIgaW4gd2hpY2ggdG8gZG8geW91cgorICAgICAgICAgICAgd29yay4KKyAgICAgICAgICAgIFlvdXIgbGF5ZXIgY29udGFpbnMgaXRzIG93bgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIGFwcGVuZCBmaWxlcyAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBhbmQgcHJvdmlkZXMgYQorICAgICAgICAgICAgY29udmVuaWVudCBtZWNoYW5pc20gdG8gY3JlYXRlIHlvdXIgb3duIHJlY2lwZSBmaWxlcworICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikgYXMgd2VsbCBhcyBzdG9yZSBhbmQgdXNlIGtlcm5lbAorICAgICAgICAgICAgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB3b3JraW5nIHdpdGggbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgY29tZXMgd2l0aCBtYW55IHRvb2xzIHRoYXQgc2ltcGxpZnkKKyAgICAgICAgICAgICAgICB0YXNrcyB5b3UgbmVlZCB0byBwZXJmb3JtLgorICAgICAgICAgICAgICAgIE9uZSBzdWNoIHRvb2wgaXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZCwgd2hpY2ggc2ltcGxpZmllcyBjcmVhdGluZyBhIG5ldyBsYXllci4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhpcyBzY3JpcHQgdG8gcXVpY2sgc2V0IHVwIGEKKyAgICAgICAgICAgICAgICBuZXcgbGF5ZXIuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBsYXllciB5b3UgY3JlYXRlIGZvciBrZXJuZWwgZGV2ZWxvcG1lbnQsCisgICAgICAgICAgICB0aGUgZm9sbG93aW5nIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUgYSBsYXllcgorICAgICAgICAgICAgd2l0aG91dCB0aGUgYWlkIG9mIHRvb2xzLgorICAgICAgICAgICAgVGhlc2Ugc3RlcHMgYXNzdW1lIGNyZWF0aW9uIG9mIGEgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5teWxheWVyPC9maWxlbmFtZT4gaW4geW91ciBob21lIGRpcmVjdG9yeToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgU3RydWN0dXJlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZSB0aGUgbGF5ZXIncyBzdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAkSE9NRQorICAgICAkIG1rZGlyIG1ldGEtbXlsYXllcgorICAgICAkIG1rZGlyIG1ldGEtbXlsYXllci9jb25mCisgICAgICQgbWtkaXIgbWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsCisgICAgICQgbWtkaXIgbWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4CisgICAgICQgbWtkaXIgbWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IGhvbGRzIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbDwvZmlsZW5hbWU+IGRpcmVjdG9yeSBob2xkcyB5b3VyCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlIGFuZCBldmVudHVhbCBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBMYXllciBDb25maWd1cmF0aW9uIEZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgTW92ZSB0byB0aGUgPGZpbGVuYW1lPm1ldGEtbXlsYXllci9jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBjcmVhdGUgdGhlIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJQQVRICisgICAgIEJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgorCisgICAgICMgV2UgaGF2ZSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCisgICAgIEJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAorICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgorCisgICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAibXlsYXllciIKKyAgICAgQkJGSUxFX1BBVFRFUk5fbXlsYXllciA9ICJeJHtMQVlFUkRJUn0vIgorICAgICBCQkZJTEVfUFJJT1JJVFlfbXlsYXllciA9ICI1IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE5vdGljZSA8ZmlsZW5hbWU+bXlsYXllcjwvZmlsZW5hbWU+IGFzIHBhcnQgb2YgdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgdGhyZWUgc3RhdGVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBLZXJuZWwgUmVjaXBlIEFwcGVuZCBGaWxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIGNyZWF0ZSB0aGUga2VybmVsJ3MgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIG5hbWUgb2YgdGhlIGFwcGVuZCBmaWxlIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiYXBwZW5kPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorCisgICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGNoLWZpbGUtb25lPC9yZXBsYWNlYWJsZT4iCisgICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGNoLWZpbGUtdHdvPC9yZXBsYWNlYWJsZT4iCisgICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGNoLWZpbGUtdGhyZWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBlbmFibGUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gZmluZAorICAgICAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgYXBwZW5kIGZpbGVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtb2RpZnlpbmctYW4tZXhpc3RpbmctcmVjaXBlJz4KKyAgICAgICAgPHRpdGxlPk1vZGlmeWluZyBhbiBFeGlzdGluZyBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gbWFueSBjYXNlcywgeW91IGNhbiBjdXN0b21pemUgYW4gZXhpc3RpbmcgbGludXgteW9jdG8gcmVjaXBlIHRvCisgICAgICAgICAgICBtZWV0IHRoZSBuZWVkcyBvZiB5b3VyIHByb2plY3QuCisgICAgICAgICAgICBFYWNoIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYSBmZXcgTGludXgKKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGVzIGZyb20gd2hpY2ggeW91IGNhbiBjaG9vc2UuCisgICAgICAgICAgICBUaGVzZSBhcmUgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTW9kaWZ5aW5nIGFuIGV4aXN0aW5nIHJlY2lwZSBjYW4gY29uc2lzdCBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRpbmcgdGhlIGFwcGVuZCBmaWxlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFwcGx5aW5nIHBhdGNoZXM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2hhbmdpbmcgdGhlIGNvbmZpZ3VyYXRpb248L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCZWZvcmUgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIHJlY2lwZSwgYmUgc3VyZSB0aGF0IHlvdSBoYXZlIGNyZWF0ZWQKKyAgICAgICAgICAgIGEgbWluaW1hbCwgY3VzdG9tIGxheWVyIGZyb20gd2hpY2ggeW91IGNhbiB3b3JrLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWFuZC1wcmVwYXJpbmctYS1sYXllcic+Q3JlYXRpbmcgYW5kIFByZXBhcmluZyBhIExheWVyPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXRoZS1hcHBlbmQtZmlsZSc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIEFwcGVuZCBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNyZWF0ZSB0aGlzIGZpbGUgaW4geW91ciBjdXN0b20gbGF5ZXIuCisgICAgICAgICAgICAgICAgWW91IGFsc28gbmFtZSBpdCBhY2NvcmRpbmdseSBiYXNlZCBvbiB0aGUgbGludXgteW9jdG8gcmVjaXBlCisgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBtb2RpZnlpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlLCB0aGUgYXBwZW5kIGZpbGUgd2lsbCB0eXBpY2FsbHkgYmUgbG9jYXRlZCBhcyBmb2xsb3dzCisgICAgICAgICAgICAgICAgd2l0aGluIHlvdXIgY3VzdG9tIGxheWVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPnlvdXItbGF5ZXI8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBhcHBlbmQgZmlsZSBzaG91bGQgaW5pdGlhbGx5IGV4dGVuZCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHNlYXJjaCBwYXRoIGJ5IHByZXBlbmRpbmcgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHlvdXIKKyAgICAgICAgICAgICAgICBmaWxlcyB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBwYXRoIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRISVNESVInPjxmaWxlbmFtZT5USElTRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59LyR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZXhwYW5kcyB0byAibGludXgteW9jdG8iIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmb3IgdGhpcworICAgICAgICAgICAgICAgIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBhbnkgbmV3IGZpbGVzIHRoYXQgbW9kaWZ5IHRoZSBrZXJuZWwgcmVjaXBlIGFuZCB5b3UKKyAgICAgICAgICAgICAgICBoYXZlIGV4dGVuZGVkIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiBhcworICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBhYm92ZSwgeW91IG11c3QgcGxhY2UgdGhlIGZpbGVzIGluIHlvdXIgbGF5ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGFyZWE6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+eW91ci1sYXllcjwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT5JZiB5b3UgYXJlIHdvcmtpbmcgb24gYSBuZXcgbWFjaGluZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgKEJTUCksIGJlIHN1cmUgdG8gcmVmZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBhcHBlbmQgZmlsZQorICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIEJTUHMgaW4gPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdGluZyBzaG93cyB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IHRoZSBhY3R1YWwgY29tbWl0IElEIHN0cmluZ3MgaW4gdGhpcworICAgICAgICAgICAgICAgIGV4YW1wbGUgbGlzdGluZyBtaWdodCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgYWN0dWFsIHN0cmluZ3MKKyAgICAgICAgICAgICAgICBpbiB0aGUgZmlsZSBmcm9tIHRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGxheWVyIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCisKKyAgICAgS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorICAgICBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgorICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKKworICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgorICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgorICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgorCisKKyAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKKyAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKKyAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKKyAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUgPSAiYmVhZ2xlYm9uZSIKKworICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi43IgorICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi43IgorICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xMi4xMCIKKyAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuMTIuMTAiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgYXBwZW5kIGZpbGUgY29udGFpbnMgc3RhdGVtZW50cyB1c2VkIHRvIHN1cHBvcnQKKyAgICAgICAgICAgICAgICBzZXZlcmFsIEJTUHMgdGhhdCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgVGhlIGZpbGUgZGVmaW5lcyBtYWNoaW5lcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09NUEFUSUJMRV9NQUNISU5FJz48ZmlsZW5hbWU+Q09NUEFUSUJMRV9NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGVuc3VyZSB0aGUgbWFjaGluZSBuYW1lIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBtYXBzIHRvIHRoZSBtYWNoaW5lIG5hbWUgdXNlZCBieSB0aGUgTGludXggWW9jdG8KKyAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgVGhlIGZpbGUgYWxzbyB1c2VzIHRoZSBvcHRpb25hbAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LQlJBTkNIJz48ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBlbnN1cmUgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBrZXJuZWwgYnJhbmNoLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbHRob3VnaCB0aGlzIHBhcnRpY3VsYXIgZXhhbXBsZSBkb2VzIG5vdCB1c2UgaXQsIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfRkVBVFVSRVMnPjxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgY291bGQgYmUgdXNlZCB0byBlbmFibGUgZmVhdHVyZXMgc3BlY2lmaWMgdG8KKyAgICAgICAgICAgICAgICB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgIFRoZSBhcHBlbmQgZmlsZSBwb2ludHMgdG8gc3BlY2lmaWMgY29tbWl0cyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBhbmQgdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICBicmFuY2hlcyB0byBpZGVudGlmeSB0aGUgZXhhY3Qga2VybmVsIG5lZWRlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICBCU1AuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uZSB0aGluZyBtaXNzaW5nIGluIHRoaXMgcGFydGljdWxhciBCU1AsIHdoaWNoIHlvdSB3aWxsCisgICAgICAgICAgICAgICAgdHlwaWNhbGx5IG5lZWQgd2hlbiBkZXZlbG9waW5nIGEgQlNQLCBpcyB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlICg8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+KSBmb3IgeW91ciBCU1AuCisgICAgICAgICAgICAgICAgV2hlbiBkZXZlbG9waW5nIGEgQlNQLCB5b3UgcHJvYmFibHkgaGF2ZSBhIGtlcm5lbCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSBvciBhIHNldCBvZiBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0LCB3aGVuIHRha2VuCisgICAgICAgICAgICAgICAgdG9nZXRoZXIsIGRlZmluZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGRlZmluaXRpb24gYnkgcHV0dGluZyB0aGUgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAgICAgICBpbiBhIGZpbGUgb3IgYSBzZXQgb2YgZmlsZXMgaW5zaWRlIGEgZGlyZWN0b3J5IGxvY2F0ZWQgYXQgdGhlCisgICAgICAgICAgICAgICAgc2FtZSBsZXZlbCBhcyB5b3VyIGtlcm5lbCdzIGFwcGVuZCBmaWxlIGFuZCBoYXZpbmcgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBuYW1lIGFzIHRoZSBrZXJuZWwncyBtYWluIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIFdpdGggYWxsIHRoZXNlIGNvbmRpdGlvbnMgbWV0LCBzaW1wbHkgcmVmZXJlbmNlIHRob3NlIGZpbGVzIGluCisgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbiB0aGUgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyAgICAgICAgICAgICAgICBpbiBhIGZpbGUgY2FsbGVkIDxmaWxlbmFtZT5uZXR3b3JrX2NvbmZpZ3MuY2ZnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBwbGFjZSB0aGF0IGZpbGUgaW5zaWRlIGEgZGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gYW5kIHRoZW4gYWRkCisgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBzdWNoIGFzIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyB0byB0aGUgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgdGhlIGtlcm5lbCwgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBwaWNrZWQgdXAgYW5kIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbmV0d29ya19jb25maWdzLmNmZyIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGdyb3VwIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgaW50byBtdWx0aXBsZSBmaWxlcywgeW91CisgICAgICAgICAgICAgICAgcGVyZm9ybSBhIHNpbWlsYXIgcHJvY2VkdXJlLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGdyb3VwcyBzZXBhcmF0ZSBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBmb3IgRXRoZXJuZXQgYW5kIGdyYXBoaWNzIGludG8gdGhlaXIgb3duCisgICAgICAgICAgICAgICAgZmlsZXMgYW5kIGFkZHMgdGhlIGNvbmZpZ3VyYXRpb25zIGJ5IHVzaW5nIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBsaWtlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICBpbiB5b3VyIGFwcGVuZCBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSArPSAiZmlsZTovL215Y29uZmlnLmNmZyBcCisgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGguY2ZnIFwKKyAgICAgICAgICAgICAgICAgZmlsZTovL2dmeC5jZmciCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIHZhcmlhYmxlIHlvdSBjYW4gdXNlIGluIHlvdXIga2VybmVsIHJlY2lwZSBhcHBlbmQKKyAgICAgICAgICAgICAgICBmaWxlIGlzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoaXMgc3RhdGVtZW50LCB5b3UgYXJlIGV4dGVuZGluZyB0aGUgbG9jYXRpb25zCisgICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIHN5c3RlbSB0byBsb29rIGZvciBmaWxlcyBhbmQKKyAgICAgICAgICAgICAgICBwYXRjaGVzIGFzIHRoZSByZWNpcGUgaXMgcHJvY2Vzc2VkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT3RoZXIgbWV0aG9kcyBleGlzdCB0byBhY2NvbXBsaXNoIGdyb3VwaW5nIGFuZCBkZWZpbmluZworICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhIGxvY2FsIGNsb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgcmVwb3NpdG9yeSwgeW91IGNvdWxkIGNoZWNrb3V0IHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaCwgbWFrZSB5b3VyIGNoYW5nZXMsIGFuZAorICAgICAgICAgICAgICAgICAgICB0aGVuIHB1c2ggdGhlIGNoYW5nZXMgdG8gdGhlIGxvY2FsIGJhcmUgY2xvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHlvdSBkaXJlY3RseSBhZGQgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaCBmb3IgeW91ciBCU1AuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBsaWtlbHkgZW5kIHVwIGluIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gYW55d2F5IGlmIHRoZSBCU1AgZ2V0cyBhZGRlZCB0byB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgaG93ZXZlciwgdGhlIFlvY3RvIFByb2plY3QgbWFpbnRhaW5lcnMgdGFrZQorICAgICAgICAgICAgICAgICAgICBjYXJlIG9mIG1vdmluZyB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi1zcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgTm90IG9ubHkgaXMgaXQgZWFzaWVyIGZvciBCU1AgZGV2ZWxvcGVycyB0byBub3QgaGF2ZSB0bworICAgICAgICAgICAgICAgICAgICB3b3JyeSBhYm91dCBwdXR0aW5nIHRob3NlIGNvbmZpZ3VyYXRpb25zIGluIHRoZSBicmFuY2gsCisgICAgICAgICAgICAgICAgICAgIGJ1dCBoYXZpbmcgdGhlIG1haW50YWluZXJzIGRvIGl0IGFsbG93cyB0aGVtIHRvIGFwcGx5CisgICAgICAgICAgICAgICAgICAgICdnbG9iYWwnIGtub3dsZWRnZSBhYm91dCB0aGUga2luZHMgb2YgY29tbW9uIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyBtdWx0aXBsZSBCU1BzIGluIHRoZSB0cmVlIGFyZSB0eXBpY2FsbHkgdXNpbmcuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYWxsb3dzIGZvciBwcm9tb3Rpb24gb2YgY29tbW9uIGNvbmZpZ3VyYXRpb25zIGludG8KKyAgICAgICAgICAgICAgICAgICAgY29tbW9uIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdhcHBseWluZy1wYXRjaGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5BcHBseWluZyBQYXRjaGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBzaW5nbGUgcGF0Y2ggb3IgYSBzbWFsbCBzZXJpZXMgb2YgcGF0Y2hlcworICAgICAgICAgICAgICAgIHRoYXQgeW91IHdhbnQgdG8gYXBwbHkgdG8gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UsIHlvdQorICAgICAgICAgICAgICAgIGNhbiBkbyBzbyBqdXN0IGFzIHlvdSB3b3VsZCB3aXRoIGFueSBvdGhlciByZWNpcGUuCisgICAgICAgICAgICAgICAgWW91IGZpcnN0IGNvcHkgdGhlIHBhdGNoZXMgdG8gdGhlIHBhdGggYWRkZWQgdG8KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHlvdXIgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgYXMgZGVzY3JpYmVkIGluCisgICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIHNlY3Rpb24sIGFuZCB0aGVuIHJlZmVyZW5jZSB0aGVtIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGFwcGx5IGEgdGhyZWUtcGF0Y2ggc2VyaWVzIGJ5IGFkZGluZyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbGluZXMgdG8geW91ciBsaW51eC15b2N0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGluIHlvdXIgbGF5ZXI6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1maXJzdC1jaGFuZ2UucGF0Y2giCisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly8wMDAyLXNlY29uZC1jaGFuZ2UucGF0Y2giCisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly8wMDAzLXRoaXJkLWNoYW5nZS5wYXRjaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIG5leHQgdGltZSB5b3UgcnVuIEJpdEJha2UgdG8gYnVpbGQgdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGRldGVjdHMgdGhlIGNoYW5nZSBpbiB0aGUgcmVjaXBlIGFuZCBmZXRjaGVzIGFuZAorICAgICAgICAgICAgICAgIGFwcGxpZXMgdGhlIHBhdGNoZXMgYmVmb3JlIGJ1aWxkaW5nIHRoZSBrZXJuZWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBhIGRldGFpbGVkIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gcGF0Y2ggdGhlIGtlcm5lbCB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb25zLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz4KKyAgICAgICAgICAgIDx0aXRsZT5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSB3aG9sZXNhbGUgb3IgaW5jcmVtZW50YWwgY2hhbmdlcyB0byB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgdXNlZCBmb3IgdGhlIGV2ZW50dWFsCisgICAgICAgICAgICAgICAgTGludXgga2VybmVsIGNvbmZpZ3VyYXRpb24gYnkgaW5jbHVkaW5nIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhbmQgYnkgc3BlY2lmeWluZworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBiZSBhcHBsaWVkIHRvIHRoYXQgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBjb21wbGV0ZSwgd29ya2luZyBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSB5b3Ugd2FudCB0byB1c2UgZm9yIHRoZSBjb25maWd1cmF0aW9uLCBhcyBiZWZvcmUsIGNvcHkKKyAgICAgICAgICAgICAgICB0aGF0IGZpbGUgdG8gdGhlIGFwcHJvcHJpYXRlIDxmaWxlbmFtZT4ke1BOfTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIHlvdXIgbGF5ZXIncworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICBhbmQgcmVuYW1lIHRoZSBjb3BpZWQgZmlsZSB0byAiZGVmY29uZmlnIi4KKyAgICAgICAgICAgICAgICBUaGVuLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB0aGUgbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyIGxheWVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZGVmY29uZmlnIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB0ZWxscyB0aGUgYnVpbGQgc3lzdGVtIGhvdyB0bworICAgICAgICAgICAgICAgIHNlYXJjaCBmb3IgdGhlIGZpbGUsIHdoaWxlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXh0ZW5kcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIChzZWFyY2ggZGlyZWN0b3JpZXMpIHRvIGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4gZGlyZWN0b3J5IHlvdSBjcmVhdGVkIHRvIGhvbGQgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIGNvbmZpZ3VyYXRpb25zIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYmVmb3JlIGFwcGx5aW5nIGFueQorICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgY29uZmlndXJhdGlvbiBmcmFnbWVudHMuCisgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIGEgY29tYmluYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaW4gdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFuZAorICAgICAgICAgICAgICAgIGFueSBjb25maWd1cmF0aW9uIGZyYWdtZW50cyB5b3UgcHJvdmlkZS4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplIHRoYXQgaWYgeW91IGhhdmUgYW55IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBmcmFnbWVudHMsIHRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGVzZSBvbiB0b3Agb2YgYW5kCisgICAgICAgICAgICAgICAgYWZ0ZXIgYXBwbHlpbmcgdGhlIGV4aXN0aW5nIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICA8L25vdGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEdlbmVyYWxseSBzcGVha2luZywgdGhlIHByZWZlcnJlZCBhcHByb2FjaCBpcyB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgICAgICAgICAgaW5jcmVtZW50YWwgY2hhbmdlIHlvdSB3YW50IHRvIG1ha2UgYW5kIGFkZCB0aGF0IGFzIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgYSBiYXNpYyBzZXJpYWwKKyAgICAgICAgICAgICAgICBjb25zb2xlLCBjcmVhdGUgYSBmaWxlIG5hbWVkIDxmaWxlbmFtZT44MjUwLmNmZzwvZmlsZW5hbWU+IGluCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT4ke1BOfTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICBjb250ZW50ICh3aXRob3V0IGluZGVudGF0aW9uKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTkZJR19TRVJJQUxfODI1MD15CisgICAgIENPTkZJR19TRVJJQUxfODI1MF9DT05TT0xFPXkKKyAgICAgQ09ORklHX1NFUklBTF84MjUwX1BDST15CisgICAgIENPTkZJR19TRVJJQUxfODI1MF9OUl9VQVJUUz00CisgICAgIENPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTQKKyAgICAgQ09ORklHX1NFUklBTF9DT1JFPXkKKyAgICAgQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBOZXh0LCBpbmNsdWRlIHRoaXMgY29uZmlndXJhdGlvbiBmcmFnbWVudCBhbmQgZXh0ZW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly84MjUwLmNmZyIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIG5leHQgdGltZSB5b3UgcnVuIEJpdEJha2UgdG8gYnVpbGQgdGhlIExpbnV4IGtlcm5lbCwgQml0QmFrZQorICAgICAgICAgICAgICAgIGRldGVjdHMgdGhlIGNoYW5nZSBpbiB0aGUgcmVjaXBlIGFuZCBmZXRjaGVzIGFuZCBhcHBsaWVzIHRoZQorICAgICAgICAgICAgICAgIG5ldyBjb25maWd1cmF0aW9uIGJlZm9yZSBidWlsZGluZyB0aGUga2VybmVsLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgYSBkZXRhaWxlZCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGNvbmZpZ3VyZSB0aGUga2VybmVsLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+Q29uZmlndXJpbmcgdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1hbi1pbi10cmVlLWRlZmNvbmZpZy1maWxlJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhbiAiSW4tVHJlZSImbmJzcDsmbmJzcDs8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gRmlsZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBoYXZlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZyYWdtZW50CisgICAgICAgICAgICAgICAgc3VwcG9ydCB0aHJvdWdoIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgdGhhdAorICAgICAgICAgICAgICAgIGlzIHB1bGxlZCBmcm9tIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIHRoZSBjb25maWd1cmVkCisgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBsb29rcyBmb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZXMgaW4gdGhlIGxheWVyIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgTWV0YWRhdGEsIHdoaWNoIGlzICJvdXQtb2YtdHJlZSIsIGFuZCB0aGVuIGNvbmZpZ3VyZXMgdGhlbQorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZGVmY29uZmlnIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHdhbnQgdG8gbWFpbnRhaW4gY29waWVzIG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzIGluIHlvdXIgbGF5ZXIgYnV0IHdvdWxkCisgICAgICAgICAgICAgICAgcmF0aGVyIGFsbG93IHVzZXJzIHRvIHVzZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZyb20gdGhlCisgICAgICAgICAgICAgICAga2VybmVsIHRyZWUgYW5kIHN0aWxsIGJlIGFibGUgdG8gYWRkIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzCisgICAgICAgICAgICAgICAgdG8gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRocm91Z2gsIGZvciBleGFtcGxlLCBhcHBlbmQgZmlsZXMsIHlvdSBjYW4gZGlyZWN0IHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gdXNlIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IGlzICJpbi10cmVlIi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBhbiAiaW4tdHJlZSIgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgdXNlIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGZvcm06CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLQlVJTERfREVGQ09ORklHXzxyZXBsYWNlYWJsZT5LTUFDSElORTwvcmVwbGFjZWFibGU+ID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGFzc2lnbnMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPiB2YXJpYWJsZSBiYXNlZCBvbgorICAgICAgICAgICAgICAgICJyYXNwYmVycnlwaTIiIGFuZCBwcm92aWRlcyB0aGUgcGF0aCB0byB0aGUgImluLXRyZWUiCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICB0byBiZSB1c2VkIGZvciBhIFJhc3BiZXJyeSBQaSAyLAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIGJhc2VkIG9uIHRoZSBCcm9hZGNvbSAyNzA4LzI3MDkgY2hpcHNldDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkyID89ICJiY20yNzA5X2RlZmNvbmZpZyIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gbW9kaWZ5aW5nIHlvdXIga2VybmVsIHJlY2lwZSBhbmQgcHJvdmlkaW5nIHlvdXIgb3duCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsIHlvdSBuZWVkIHRvIGJlIHN1cmUgbm8KKyAgICAgICAgICAgICAgICBmaWxlcyBvciBzdGF0ZW1lbnRzIHNldCA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHRvIHVzZSBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IG90aGVyIHRoYW4geW91ciAiaW4tdHJlZSIKKyAgICAgICAgICAgICAgICBmaWxlIChlLmcuIGEga2VybmVsJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUpLgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgYnVpbGQgc3lzdGVtIGRldGVjdHMgYSBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICB0aGF0IGlkZW50aWZpZXMgYW4gIm91dC1vZi10cmVlIgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB0aGF0IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIHdpbGwgb3ZlcnJpZGUgeW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0JVSUxEX0RFRkNPTkZJRyc+PGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVzY3JpcHRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0idXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsIj4KKyAgICAgICAgPHRpdGxlPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgc3RlcHMgaW4gdGhpcyBwcm9jZWR1cmUgc2hvdyB5b3UgaG93IHlvdSBjYW4gcGF0Y2ggdGhlCisgICAgICAgICAgICBrZXJuZWwgdXNpbmcgdGhlIGV4dGVuc2libGUgU0RLIGFuZCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQmVmb3JlIGF0dGVtcHRpbmcgdGhpcyBwcm9jZWR1cmUsIGJlIHN1cmUgeW91IGhhdmUgcGVyZm9ybWVkCisgICAgICAgICAgICAgICAgdGhlIHN0ZXBzIHRvIGdldCByZWFkeSBmb3IgdXBkYXRpbmcgdGhlIGtlcm5lbCBhcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQYXRjaGluZyB0aGUga2VybmVsIGludm9sdmVzIGNoYW5naW5nIG9yIGFkZGluZyBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgdG8gYW4gZXhpc3Rpbmcga2VybmVsLCBjaGFuZ2luZyBvciBhZGRpbmcgcmVjaXBlcyB0byB0aGUga2VybmVsCisgICAgICAgICAgICB0aGF0IGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcywgb3IgZXZlbgorICAgICAgICAgICAgYWx0ZXJpbmcgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBleGFtcGxlIGNyZWF0ZXMgYSBzaW1wbGUgcGF0Y2ggYnkgYWRkaW5nIHNvbWUgUUVNVSBlbXVsYXRvcgorICAgICAgICAgICAgY29uc29sZSBvdXRwdXQgYXQgYm9vdCB0aW1lIHRocm91Z2ggPGZpbGVuYW1lPnByaW50azwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdGF0ZW1lbnRzIGluIHRoZSBrZXJuZWwncyA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBzb3VyY2UKKyAgICAgICAgICAgIGNvZGUgZmlsZS4KKyAgICAgICAgICAgIEFwcGx5aW5nIHRoZSBwYXRjaCBhbmQgYm9vdGluZyB0aGUgbW9kaWZpZWQgaW1hZ2UgY2F1c2VzIHRoZSBhZGRlZAorICAgICAgICAgICAgbWVzc2FnZXMgdG8gYXBwZWFyIG9uIHRoZSBlbXVsYXRvcidzIGNvbnNvbGUuCisgICAgICAgICAgICBUaGUgZXhhbXBsZSBpcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgc2V0dXAgcHJvY2VkdXJlIGZvdW5kIGluCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LXRvLWRldmVsb3AtdXNpbmctZGV2dG9vbCc+R2V0dGluZyBSZWFkeSB0byBEZXZlbG9wIFVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgU2VjdGlvbi4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBPdXQgdGhlIEtlcm5lbCBTb3VyY2UgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmlyc3QgeW91IG11c3QgdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gY2hlY2tvdXQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpbiBpdHMgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgaW4gdGhlIHRlcm1pbmFsIHNldCB1cCB0byBkbyB3b3JrCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzZXR0aW5nLXVwLXRoZS1lc2RrLXRlcm1pbmFsJz5zdGVwPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHRvIGNoZWNrIG91dCB0aGUgY29kZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgbW9kaWZ5IGxpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGNoZWNrb3V0IG9wZXJhdGlvbiwgYSBidWcgZXhpc3RzIHRoYXQgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlIGVycm9ycyBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgdG8gYXBwZWFyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFUlJPUjogVGFza2hhc2ggbWlzbWF0Y2ggMmM3OTM0MzhjMmQ5ZjhjMzY4MWZkNWY3YmM4MTllZmEgdmVyc3VzCisgICAgICAgICAgICBiZTNhODljZTdjNDcxNzg4ODBiYTdiZjYyOTNkNzQwNCBmb3IKKyAgICAgICAgICAgIC9wYXRoL3RvL2VzZGsvbGF5ZXJzL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiLmRvX3VucGFjaworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIG1lc3NhZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNvdXJjZSBjb2RlIGlzIGNvcnJlY3RseSBjaGVja2VkIG91dC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBTb3VyY2UgRmlsZXM8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gbWFrZSBzb21lIHNpbXBsZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hhbmdlIHRoZSB3b3JraW5nIGRpcmVjdG9yeTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBzdGVwLCB0aGUgb3V0cHV0IG5vdGVkIHdoZXJlIHlvdSBjYW4gZmluZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9wb2t5X3Nkay93b3Jrc3BhY2Uvc291cmNlcy9saW51eC15b2N0bzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2UgdG8gd2hlcmUgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpcyBiZWZvcmUgbWFraW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBlZGl0cyB0byB0aGUgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5X3Nkay93b3Jrc3BhY2Uvc291cmNlcy9saW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgc291cmNlIGZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSA8ZmlsZW5hbWU+aW5pdC9jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IGZpbGUgdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHZvaWQgY2FsaWJyYXRlX2RlbGF5KHZvaWQpCisgICAgIHsKKyAgICAgICAgIHVuc2lnbmVkIGxvbmcgbHBqOworICAgICAgICAgc3RhdGljIGJvb2wgcHJpbnRlZDsKKyAgICAgICAgIGludCB0aGlzX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKworICAgICAgICAgcHJpbnRrKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsKKyAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7CisgICAgICAgICBwcmludGsoIiogICAgICAgIEhFTExPIFlPQ1RPIEtFUk5FTCAgICAgICAgICpcbiIpOworICAgICAgICAgcHJpbnRrKCIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4iKTsKKyAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisKKyAgICAgCWlmIChwZXJfY3B1KGNwdV9sb29wc19wZXJfamlmZnksIHRoaXNfY3B1KSkgeworICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIFVwZGF0ZWQgS2VybmVsIFNvdXJjZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUbyBidWlsZCB0aGUgdXBkYXRlZCBrZXJuZWwgc291cmNlLCB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQgbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIEltYWdlIFdpdGggdGhlIE5ldyBLZXJuZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIGEgbmV3IGltYWdlIHRoYXQgaGFzIHRoZSBuZXcga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBpbWFnZSB5b3Ugb3JpZ2luYWxseSBjcmVhdGVkIHJlc3VsdGVkIGluIGEgV2ljCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCB5b3UgY2FuIHVzZSBhbiBhbHRlcm5hdGUgbWV0aG9kIHRvIGNyZWF0ZSB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSB1cGRhdGVkIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlLCBzZWUgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL0tlcm5lbERldmVsb3BtZW50V2l0aEVzZGsnPlRpcHNBbmRUcmlja3MvS2VybmVsRGV2ZWxvcG1lbnRXaXRoRXNkazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBXaWtpIFBhZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgdGhlIE5ldyBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB5b3UgY2FuIHJ1biB0aGUgbmV3IGltYWdlIHVzaW5nIFFFTVUKKyAgICAgICAgICAgICAgICAgICAgdG8gdmVyaWZ5IHlvdXIgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb290IHRoZSBpbWFnZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb3QgdGhlIG1vZGlmaWVkIGltYWdlIGluIHRoZSBRRU1VIGVtdWxhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhpcyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IHFlbXV4ODYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlZlcmlmeSB0aGUgY2hhbmdlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbnRvIHRoZSBtYWNoaW5lIHVzaW5nIDxmaWxlbmFtZT5yb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIHBhc3N3b3JkIGFuZCB0aGVuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBzY3JvbGwgdGhyb3VnaCB0aGUgY29uc29sZSdzIGJvb3Qgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBkbWVzZyB8IGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZWUgdGhlIHJlc3VsdHMgb2YgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgb3V0cHV0IHdoZW4geW91IHNjcm9sbCBkb3duIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUgd2luZG93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFnZSBhbmQgY29tbWl0IHlvdXIgY2hhbmdlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBXaXRoaW4geW91ciBlU0RLIHRlcm1pbmFsLCBjaGFuZ2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSB0bworICAgICAgICAgICAgICAgICAgICB3aGVyZSB5b3UgbW9kaWZpZWQgdGhlIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIHVzZSB0aGVzZSBHaXQgY29tbWFuZHMgdG8gc3RhZ2UgYW5kIGNvbW1pdCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3lfc2RrL3dvcmtzcGFjZS9zb3VyY2VzL2xpbnV4LXlvY3RvCisgICAgICQgZ2l0IHN0YXR1cworICAgICAkIGdpdCBhZGQgaW5pdC9jYWxpYnJhdGUuYworICAgICAkIGdpdCBjb21taXQgLW0gImNhbGlicmF0ZTogQWRkIHByaW50ayBleGFtcGxlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4cG9ydCB0aGUgUGF0Y2hlcyBhbmQgQ3JlYXRlIGFuIEFwcGVuZCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRvIGV4cG9ydCB5b3VyIGNvbW1pdHMgYXMgcGF0Y2hlcyBhbmQgY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgaW4gdGhlIHRlcm1pbmFsIHVzZWQgdG8gd29yayB3aXRoIHRoZSBleHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHVzZXMgdGhlIHByZXZpb3VzbHkgZXN0YWJsaXNoZWQgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBTdGVwIDMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyBkZXZ0b29sPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgdGhpcyBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBmaW5pc2ggbGludXgteW9jdG8gfi9tZXRhLW15bGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBjb21tYW5kIGZpbmlzaGVzLCB0aGUgcGF0Y2hlcyBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGFyZSBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9tZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZSBXaXRoIFlvdXIgTW9kaWZpZWQgS2VybmVsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IGJ1aWxkIGFuIGltYWdlIHRoYXQgaW5jbHVkZXMgeW91ciBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICAgICAgRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHRlcm1pbmFsIHNldCB1cCB0byBydW4gQml0QmFrZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InVzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsIj4KKyAgICAgICAgPHRpdGxlPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzdGVwcyBpbiB0aGlzIHByb2NlZHVyZSBzaG93IHlvdSBob3cgeW91IGNhbiBwYXRjaCB0aGUKKyAgICAgICAgICAgIGtlcm5lbCB1c2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQgKGkuZS4gbm90IHVzaW5nCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZCB0aGUgZXh0ZW5zaWJsZSBTREsgYXMKKyAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uKS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgcHJvY2VkdXJlLCBiZSBzdXJlIHlvdSBoYXZlIHBlcmZvcm1lZAorICAgICAgICAgICAgICAgIHRoZSBzdGVwcyB0byBnZXQgcmVhZHkgZm9yIHVwZGF0aW5nIHRoZSBrZXJuZWwgYXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktZm9yLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudCc+R2V0dGluZyBSZWFkeSBmb3IgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQYXRjaGluZyB0aGUga2VybmVsIGludm9sdmVzIGNoYW5naW5nIG9yIGFkZGluZyBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgdG8gYW4gZXhpc3Rpbmcga2VybmVsLCBjaGFuZ2luZyBvciBhZGRpbmcgcmVjaXBlcyB0byB0aGUga2VybmVsCisgICAgICAgICAgICB0aGF0IGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcywgb3IgZXZlbgorICAgICAgICAgICAgYWx0ZXJpbmcgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGV4YW1wbGUgaW4gdGhpcyBzZWN0aW9uIGNyZWF0ZXMgYSBzaW1wbGUgcGF0Y2ggYnkgYWRkaW5nIHNvbWUKKyAgICAgICAgICAgIFFFTVUgZW11bGF0b3IgY29uc29sZSBvdXRwdXQgYXQgYm9vdCB0aW1lIHRocm91Z2gKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGluIHRoZSBrZXJuZWwncworICAgICAgICAgICAgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gc291cmNlIGNvZGUgZmlsZS4KKyAgICAgICAgICAgIEFwcGx5aW5nIHRoZSBwYXRjaCBhbmQgYm9vdGluZyB0aGUgbW9kaWZpZWQgaW1hZ2UgY2F1c2VzIHRoZSBhZGRlZAorICAgICAgICAgICAgbWVzc2FnZXMgdG8gYXBwZWFyIG9uIHRoZSBlbXVsYXRvcidzIGNvbnNvbGUuCisgICAgICAgICAgICBUaGUgZXhhbXBsZSBpcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgc2V0dXAgcHJvY2VkdXJlIGZvdW5kIGluCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvbGluaz4iCisgICAgICAgICAgICBTZWN0aW9uLgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFNvdXJjZSBGaWxlczwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByaW9yIHRvIHRoaXMgc3RlcCwgeW91IHNob3VsZCBoYXZlIHVzZWQgR2l0IHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIHJlcG9zaXRvcnkgZm9yIHlvdXIga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgY3JlYXRlZCB0aGUgcmVwb3NpdG9yeSBhcyBkaXJlY3RlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktZm9yLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudCc+R2V0dGluZyBSZWFkeSBmb3IgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZWRpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGFuZ2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gbG9jYXRlIHRoZSBzb3VyY2UgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29weSBvZiB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZSB0byB3aGVyZSB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIGJlZm9yZSBtYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGVkaXRzIHRvIHRoZSA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L2xpbnV4LXlvY3RvLTQuMTIvaW5pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgc291cmNlIGZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB2b2lkIGNhbGlicmF0ZV9kZWxheSh2b2lkKQorICAgICB7CisgICAgICAgICB1bnNpZ25lZCBsb25nIGxwajsKKyAgICAgICAgIHN0YXRpYyBib29sIHByaW50ZWQ7CisgICAgICAgICBpbnQgdGhpc19jcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKyAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisgICAgICAgICBwcmludGsoIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiIpOworICAgICAgICAgcHJpbnRrKCIqICAgICAgICBIRUxMTyBZT0NUTyBLRVJORUwgICAgICAgICAqXG4iKTsKKyAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7CisgICAgICAgICBwcmludGsoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOworCisgICAgIAlpZiAocGVyX2NwdShjcHVfbG9vcHNfcGVyX2ppZmZ5LCB0aGlzX2NwdSkpIHsKKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIGFuZCBDb21taXQgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSBzdGFuZGFyZCBHaXQgY29tbWFuZHMgdG8gc3RhZ2UgYW5kIGNvbW1pdCB0aGUgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICB5b3UganVzdCBtYWRlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGFkZCBjYWxpYnJhdGUuYworICAgICAkIGdpdCBjb21taXQgLW0gImNhbGlicmF0ZS5jIC0gQWRkZWQgc29tZSBwcmludGsgc3RhdGVtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHN0YWdlIGFuZCBjb21taXQgeW91ciBjaGFuZ2VzLCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIEJ1aWxkIFN5c3RlbSB3aWxsIG5vdCBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGRhdGUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IEZpbGUKKyAgICAgICAgICAgICAgICAgICAgdG8gUG9pbnQgdG8gWW91ciBTb3VyY2UgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmeWluZyB0byB1c2UgImtlcm5lbC1tb2R1bGVzIiBhbmQgdGhlICJxZW11eDg2IgorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCBpdCBtdXN0IGFsc28gcG9pbnQgdG8gdGhlIHVwZGF0ZWQga2VybmVsIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgQWRkCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZC9jb25mCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSV9wbi1saW51eC15b2N0byA9ICJnaXQ6Ly8vPHJlcGxhY2VhYmxlPnBhdGgtdG88L3JlcGxhY2VhYmxlPi9saW51eC15b2N0by00LjEyO3Byb3RvY29sPWZpbGU7bmFtZT1tYWNoaW5lO2JyYW5jaD1zdGFuZGFyZC9iYXNlOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0Oi8vLzxyZXBsYWNlYWJsZT5wYXRoLXRvPC9yZXBsYWNlYWJsZT4veW9jdG8ta2VybmVsLWNhY2hlO3Byb3RvY29sPWZpbGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKyAgICAgU1JDUkVWX21ldGFfcWVtdXg4NiA9ICIke0FVVE9SRVZ9IgorICAgICBTUkNSRVZfbWFjaGluZV9xZW11eDg2ID0gIiR7QVVUT1JFVn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHJlcGxhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5wYXRoLXRvPC9yZXBsYWNlYWJsZT4gd2l0aCB0aGUgcGF0aG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHlvdSBtdXN0IGJlIHN1cmUgdG8gc3BlY2lmeSB0aGUgY29ycmVjdCBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtYWNoaW5lIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGJyYW5jaCBpcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW5kYXJkL2Jhc2U8L2ZpbGVuYW1lPiBhbmQgdGhlIG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGUgc291cmNlIG1vZGlmaWVkLCB5b3VyIGNoYW5nZXMgc3RhZ2VkIGFuZAorICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQsIGFuZCB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHBvaW50aW5nIHRvIHRoZSBrZXJuZWwgZmlsZXMsIHlvdSBjYW4gbm93IHVzZSBCaXRCYWtlIHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBpbWFnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdCB0aGUgaW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgQm9vdCB0aGUgbW9kaWZpZWQgaW1hZ2UgaW4gdGhlIFFFTVUgZW11bGF0b3IKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhpcyBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHByb21wdGVkIHRvIGxvZ2luIHRvIHRoZSBRRU1VIGNvbnNvbGUsIHVzZSAicm9vdCIKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBubyBwYXNzd29yZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvb2sgZm9yIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBcyBRRU1VIGJvb3RlZCwgeW91IG1pZ2h0IGhhdmUgc2VlbiB5b3VyIGNoYW5nZXMgcmFwaWRseQorICAgICAgICAgICAgICAgICAgICBzY3JvbGwgYnkuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdCwgdXNlIHRoZXNlIGNvbW1hbmRzIHRvIHNlZSB5b3VyIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBkbWVzZyB8IGxlc3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIG91dHB1dCB3aGVuIHlvdSBzY3JvbGwgZG93biB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZSB3aW5kb3cuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBQYXRjaCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBzdXJlIHRoYXQgeW91ciBwYXRjaCB3b3JrcyBjb3JyZWN0bHksIHlvdQorICAgICAgICAgICAgICAgICAgICBjYW4gZ2VuZXJhdGUgYSA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vbGludXgteW9jdG8tNC4xMi9pbml0CisgICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtMQorICAgICAwMDAxLWNhbGlicmF0ZS5jLUFkZGVkLXNvbWUtcHJpbnRrLXN0YXRlbWVudHMucGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Nb3ZlIHRoZSBQYXRjaCBGaWxlIHRvIFlvdXIgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHN1YnNlcXVlbnQgYnVpbGRzIHRvIHBpY2sgdXAgcGF0Y2hlcywgeW91CisgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gbW92ZSB0aGUgcGF0Y2ggZmlsZSB5b3UgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgc3RlcCB0byB5b3VyIGxheWVyIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGxheWVyIGNyZWF0ZWQgZWFybGllciBpcyBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkgYXMgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBsYXllciB3YXMgY3JlYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWNyZWF0ZTwvZmlsZW5hbWU+IHNjcmlwdCwgbm8gYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHkgd2FzIGNyZWF0ZWQgdG8gc3VwcG9ydCBwYXRjaGVzLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgbW92aW5nIHRoZSBwYXRjaCBmaWxlLCB5b3UgbmVlZCB0byBhZGQgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgdG8geW91ciBsYXllciB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9tZXRhLW15bGF5ZXIKKyAgICAgJCBta2RpciByZWNpcGVzLWtlcm5lbAorICAgICAkIG1rZGlyIHJlY2lwZXMta2VybmVsL2xpbnV4CisgICAgICQgbWtkaXIgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgdGhpcyBoaWVyYXJjaHkgaW4geW91ciBsYXllciwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBtb3ZlIHRoZSBwYXRjaCBmaWxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG12IH4vbGludXgteW9jdG8tNC4xMi9pbml0LzAwMDEtY2FsaWJyYXRlLmMtQWRkZWQtc29tZS1wcmludGstc3RhdGVtZW50cy5wYXRjaCB+L21ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgQXBwZW5kIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IG5lZWQgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgIGluc2VydCBzdGF0ZW1lbnRzIHRoYXQgYWxsb3cgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gZmluZCB0aGUgcGF0Y2guCisgICAgICAgICAgICAgICAgICAgIFRoZSBhcHBlbmQgZmlsZSBuZWVkcyB0byBiZSBpbiB5b3VyIGxheWVyJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBpdCBtdXN0IGJlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiYXBwZW5kPC9maWxlbmFtZT4gYW5kIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb250ZW50czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisKKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly8wMDAxLWNhbGlicmF0ZS5jLUFkZGVkLXNvbWUtcHJpbnRrLXN0YXRlbWVudHMucGF0Y2giCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgZW5hYmxlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGZpbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhdGNoIGZpbGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGFwcGVuZCBmaWxlcyBhbmQgcGF0Y2hlcywKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctdGhlLWFwcGVuZC1maWxlJz5DcmVhdGluZyB0aGUgQXBwZW5kIEZpbGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2FwcGx5aW5nLXBhdGNoZXMnPkFwcGx5aW5nIFBhdGNoZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllciI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gYnVpbGQgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbiBhbmQgc2VlIHRoZSBlZmZlY3RzIG9mIHlvdXIgcGF0Y2gsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVzc2VudGlhbGx5IGVsaW1pbmF0ZSB0aGUgdGVtcG9yYXJ5IHNvdXJjZSBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWQgaW4gPGZpbGVuYW1lPnBva3kvYnVpbGQvdG1wL3dvcmsvLi4uPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXNpZHVhbCBlZmZlY3RzIG9mIHRoZSBidWlsZCBieSBlbnRlcmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBjb21tYW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlIC1jIGNsZWFuYWxsIHlvY3RvLWxpbnV4CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwgLWMgY2xlYW5hbGwKKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmluZy10aGUta2VybmVsJz4KKyAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29uZmlndXJpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGNvbnNpc3RzIG9mIG1ha2luZyBzdXJlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGhhcyBhbGwgdGhlIHJpZ2h0IGluZm9ybWF0aW9uCisgICAgICAgICAgICBpbiBpdCBmb3IgdGhlIGltYWdlIHlvdSBhcmUgYnVpbGRpbmcuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sIGFuZAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgdG8gbWFrZSBzdXJlIHlvdXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBqdXN0IGhvdyB5b3UgbmVlZCBpdC4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzYXZlIGtub3duIGNvbmZpZ3VyYXRpb25zIGluIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gdXNlCisgICAgICAgICAgICBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHVzZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgY3JlYXRlIGFuZCB1c2UgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIGFuZCBob3cgdG8gaW50ZXJhY3RpdmVseQorICAgICAgICAgICAgbW9kaWZ5IHlvdXIgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgIGxlYW5lc3Qga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBwb3NzaWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIGNvbmZpZ3VyYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1tZW51Y29uZmlnJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyZuYnNwOyZuYnNwOzxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZWFzaWVzdCB3YXkgdG8gZGVmaW5lIGtlcm5lbCBjb25maWd1cmF0aW9ucyBpcyB0byBzZXQKKyAgICAgICAgICAgICAgICB0aGVtIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbC4KKyAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvdmlkZXMgYW4gaW50ZXJhY3RpdmUgbWV0aG9kIHdpdGggd2hpY2gKKyAgICAgICAgICAgICAgICB0byBzZXQga2VybmVsIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4sIHNlZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudWNvbmZpZyc+PC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sIGluIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHlvdSBtdXN0IGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB5b3UgbGF1bmNoIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEJpdEJha2UsIHlvdSBtdXN0IGJlIHN1cmUgdG8gc2V0IHVwIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGJ5IHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYmUgc3VyZSBvZiB0aGUgc3RhdGUgb2YgeW91ciBidWlsZCdzCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyB0d28gcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbGlibmN1cnNlczUtZGV2CisgICAgIGxpYnRpbmZvLWRldgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgaW5pdGlhbGl6ZSB0aGUgQml0QmFrZSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICBydW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWtlcm5lbF9jb25maWdtZSc+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrLCBhbmQgbGF1bmNoIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlc2UgY29tbWFuZHMgYXNzdW1lIHRoZSBTb3VyY2UgRGlyZWN0b3J5J3MgdG9wLWxldmVsIGZvbGRlcgorICAgICAgICAgICAgICAgIGlzIDxmaWxlbmFtZT5+L3Bva3k8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgcG9reQorICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mCisgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE9uY2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBjb21lcyB1cCwgaXRzIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGFsbG93cyB5b3UgdG8gaW50ZXJhY3RpdmVseSBleGFtaW5lIGFuZCBjb25maWd1cmUKKyAgICAgICAgICAgICAgICBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHlvdXIgY2hhbmdlcywgc2ltcGx5IGV4aXQgdGhlIHRvb2wgYW5kIHNhdmUgeW91cgorICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gY3JlYXRlIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIGVudGlyZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWFuLWluLXRyZWUtZGVmY29uZmlnLWZpbGUnPlVzaW5nIGFuIEluLVRyZWUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZGVmY29uZmlnLWZpbGUnPkNyZWF0aW5nIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgdGhhdCBjb25maWd1cmVzIHRoZSAiQ09ORklHX1NNUCIgc2V0dGluZworICAgICAgICAgICAgICAgIGZvciB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHJlY29nbml6ZXMgdGhpcyBrZXJuZWwgYXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gdGhyb3VnaCBNZXRhZGF0YSAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+X2xpbnV4LXlvY3RvID89ICIxMi40JSI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIE9uY2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBsYXVuY2hlcywgdXNlIHRoZQorICAgICAgICAgICAgICAgIGludGVyZmFjZSB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBzZWxlY3Rpb25zIHRvIGZpbmQgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgeW91IGRlc2VsZWN0ICJDT05GSUdfU01QIiBieSBjbGVhcmluZyB0aGUKKyAgICAgICAgICAgICAgICAiU3ltbWV0cmljIE11bHRpLVByb2Nlc3NpbmcgU3VwcG9ydCIgb3B0aW9uLgorICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBpbnRlcmZhY2UsIHlvdSBjYW4gZmluZCB0aGUgb3B0aW9uIHVuZGVyCisgICAgICAgICAgICAgICAgIlByb2Nlc3NvciBUeXBlIGFuZCBGZWF0dXJlcyIuCisgICAgICAgICAgICAgICAgVG8gZGVzZWxlY3QgIkNPTkZJR19TTVAiLCB1c2UgdGhlIGFycm93IGtleXMgdG8KKyAgICAgICAgICAgICAgICBoaWdobGlnaHQgIlN5bW1ldHJpYyBNdWx0aS1Qcm9jZXNzaW5nIFN1cHBvcnQiIGFuZCBlbnRlciAiTiIKKyAgICAgICAgICAgICAgICB0byBjbGVhciB0aGUgYXN0ZXJpc2suCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkLCBleGl0IG91dCBhbmQgc2F2ZSB0aGUgY2hhbmdlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTYXZpbmcgdGhlIHNlbGVjdGlvbnMgdXBkYXRlcyB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0bworICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSB0aGUga2VybmVsIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFuZCBleGFtaW5lIHRoaXMgZmlsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIGFyZWEgd2hlcmUgdGhlIHNwZWNpZmljIGtlcm5lbCBpcyBidWlsdC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHdlcmUgYnVpbGRpbmcgYSBMaW51eCBZb2N0byBrZXJuZWwgYmFzZWQKKyAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgYW5kIHlvdQorICAgICAgICAgICAgICAgIHdlcmUgYnVpbGRpbmcgYSBRRU1VIGltYWdlIHRhcmdldGVkIGZvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT54ODY8L2ZpbGVuYW1lPiBhcmNoaXRlY3R1cmUsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB3b3VsZCBiZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvLzQuMTIuMTIrZ2l0QVVUT0lOQytlZGE0ZDE4Li4uCisgICAgIC4uLjk2Ny1yMC9saW51eC1xZW11eDg2LXN0YW5kYXJkLWJ1aWxkLy5jb25maWcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGRpcmVjdG9yeSBpcyBhcnRpZmljaWFsbHkgc3BsaXQgYW5kCisgICAgICAgICAgICAgICAgICAgIG1hbnkgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGFjdHVhbCBmaWxlbmFtZSBhcmUgb21pdHRlZAorICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCisgICAgICAgICAgICAgICAgICAgIEFsc28sIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIHlvdSBhcmUgdXNpbmcsIHRoZSBleGFjdAorICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSBtaWdodCBkaWZmZXIuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgeW91IGNhbiBzZWUgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIHNldHRpbmdzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGVudHJ5IHNob3dzIHRoYXQgc3ltbWV0cmljCisgICAgICAgICAgICAgICAgbXVsdGktcHJvY2Vzc29yIHN1cHBvcnQgaXMgbm90IHNldDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgQ09ORklHX1NNUCBpcyBub3Qgc2V0CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGdvb2QgbWV0aG9kIHRvIGlzb2xhdGUgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBpcyB0byB1c2UgYQorICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uIG9mIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wgYW5kCisgICAgICAgICAgICAgICAgc2ltcGxlIHNoZWxsIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgIEJlZm9yZSBjaGFuZ2luZyBjb25maWd1cmF0aW9ucyB3aXRoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwgY29weSB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGFuZCByZW5hbWUgaXQgdG8gc29tZXRoaW5nIGVsc2UsCisgICAgICAgICAgICAgICAgdXNlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG8gbWFrZSBhcyBtYW55IGNoYW5nZXMgYXMKKyAgICAgICAgICAgICAgICB5b3Ugd2FudCBhbmQgc2F2ZSB0aGVtLCB0aGVuIGNvbXBhcmUgdGhlIHJlbmFtZWQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgYWdhaW5zdCB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSByZXN1bHRpbmcgZGlmZmVyZW5jZXMgYXMgeW91ciBiYXNlIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHRvIHBlcm1hbmVudGx5IHNhdmUgaW4geW91ciBrZXJuZWwKKyAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBtYWtlIGEgY29weSBvZiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBkbyBub3QganVzdCByZW5hbWUgaXQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gbmVlZHMgYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZyb20gd2hpY2ggdG8gd29yay4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1kZWZjb25maWctZmlsZSc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSZuYnNwOyZuYnNwOzxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgY29udGV4dCBvZgorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGlzIG9mdGVuIGEgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgdGhhdCBpcyBjb3BpZWQgZnJvbSBhIGJ1aWxkIG9yIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gdGFrZW4gZnJvbSB0aGUga2VybmVsIHRyZWUKKyAgICAgICAgICAgICAgICBhbmQgbW92ZWQgaW50byByZWNpcGUgc3BhY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHRvIHJldGFpbiBhIGtub3duIHNldCBvZiBrZXJuZWwgY29uZmlndXJhdGlvbnMgZnJvbSB3aGljaCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBkcmF3IHRvIGNyZWF0ZSB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIE91dC1vZi10aGUtYm94LCB0aGUgWW9jdG8gUHJvamVjdCBuZXZlciBzaGlwcyBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gY3JlYXRlIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+LCBzdGFydCB3aXRoIGEKKyAgICAgICAgICAgICAgICBjb21wbGV0ZSwgd29ya2luZyBMaW51eCBrZXJuZWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgQ29weSB0aGF0IGZpbGUgdG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIHlvdXIgbGF5ZXIncworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgYW5kIHJlbmFtZQorICAgICAgICAgICAgICAgIHRoZSBjb3BpZWQgZmlsZSB0byAiZGVmY29uZmlnIiAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+L21ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9kZWZjb25maWc8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgVGhlbiwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8gdGhlIGxpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaW4geW91ciBsYXllcjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKyAgICAgU1JDX1VSSSArPSAiZmlsZTovL2RlZmNvbmZpZyIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRlbGxzIHRoZSBidWlsZCBzeXN0ZW0gaG93IHRvIHNlYXJjaCBmb3IgdGhlIGZpbGUsIHdoaWxlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXh0ZW5kcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIChzZWFyY2ggZGlyZWN0b3JpZXMpIHRvIGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4gZGlyZWN0b3J5IHlvdSBjcmVhdGVkIHRvIGhvbGQgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIGNvbmZpZ3VyYXRpb25zIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGJlZm9yZSBhcHBseWluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBjb25maWd1cmF0aW9uIGZyYWdtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIGEgY29tYmluYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGluIHRoZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhbmQgYW55IGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHlvdSBwcm92aWRlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplIHRoYXQgaWYgeW91IGhhdmUgYW55IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRzLCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlc2Ugb24gdG9wIG9mIGFuZAorICAgICAgICAgICAgICAgICAgICBhZnRlciBhcHBseWluZyB0aGUgZXhpc3RpbmcgZGVmY29uZmlnIGZpbGUgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2hhbmdpbmctdGhlLWNvbmZpZ3VyYXRpb24nPkNoYW5naW5nIHRoZSBDb25maWd1cmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPgorICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmcmFnbWVudHMgYXJlIHNpbXBseSBrZXJuZWwgb3B0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgYXBwZWFyIGluIGEgZmlsZSBwbGFjZWQgd2hlcmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBjYW4gZmluZCBhbmQgYXBwbHkgdGhlbS4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgYWZ0ZXIKKyAgICAgICAgICAgICAgICBhcHBseWluZyBjb25maWd1cmF0aW9ucyBmcm9tIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICBUaHVzLCB0aGUgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbiB0aGUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSBhbmQgdGhlbiBhbnkgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgeW91IHByb3ZpZGUuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIGZyYWdtZW50cyBvbiB0b3Agb2YgYW5kCisgICAgICAgICAgICAgICAgYWZ0ZXIgYXBwbHlpbmcgdGhlIGV4aXN0aW5nIGRlZmNvbmZpZyBmaWxlIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTeW50YWN0aWNhbGx5LCB0aGUgY29uZmlndXJhdGlvbiBzdGF0ZW1lbnQgaXMgaWRlbnRpY2FsIHRvCisgICAgICAgICAgICAgICAgd2hhdCB3b3VsZCBhcHBlYXIgaW4gdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGlzIGxvY2F0ZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXQgaXMgc2ltcGxlIHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgT25lIG1ldGhvZCBpcyB0byB1c2Ugc2hlbGwgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlzc3VpbmcgdGhlIGZvbGxvd2luZyBmcm9tIHRoZSBzaGVsbCBjcmVhdGVzIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGUgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXlfc21wLmNmZzwvZmlsZW5hbWU+IHRoYXQgZW5hYmxlcyBtdWx0aS1wcm9jZXNzb3IKKyAgICAgICAgICAgICAgICBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBlY2hvICJDT05GSUdfU01QPXkiID4+IG15X3NtcC5jZmcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFsbCBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzIG11c3QgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGV4dGVuc2lvbiBpbiBvcmRlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcmVjb2duaXplIHRoZW0gYXMgYQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBtZXRob2QgaXMgdG8gY3JlYXRlIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBjb25maWd1cmF0aW9uIGZpbGVzOiBvbmUgcHJldmlvdXNseQorICAgICAgICAgICAgICAgIGNyZWF0ZWQgYW5kIHNhdmVkLCBhbmQgb25lIGZyZXNobHkgY3JlYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgdXNpbmcgdGhpcyBtZXRob2QsIGZvbGxvdworICAgICAgICAgICAgICAgIHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbXBsZXRlIGEgQnVpbGQgVGhyb3VnaCBLZXJuZWwgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgYSBidWlsZCBhdCBsZWFzdCB0aHJvdWdoIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gdGFzayBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgZW5zdXJlcyB0aGF0IHlvdSBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZyb20gYSBrbm93biBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugc2l0dWF0aW9ucyBleGlzdCB3aGVyZSB5b3VyIGJ1aWxkIHN0YXRlIG1pZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWUgdW5rbm93biwgaXQgaXMgYmVzdCB0byBydW4gdGhpcyB0YXNrIHByaW9yCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzdGFydGluZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgQ29uZmlndXJhdGlvbiBGcmFnbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+ZGlmZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHByZXBhcmUgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdGluZyBmaWxlIDxmaWxlbmFtZT5mcmFnbWVudC5jZmc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgcGxhY2VkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBkaWZmY29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRpZmZjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kIGNyZWF0ZXMgYSBmaWxlCisgICAgICAgICAgICAgICAgdGhhdCBpcyBhIGxpc3Qgb2YgTGludXgga2VybmVsIDxmaWxlbmFtZT5DT05GSUdfPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy4KKyAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgb3V0cHV0CisgICAgICAgICAgICAgICAgYXMgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBmb3IgYSBCU1AuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2JzcC1kZXNjcmlwdGlvbnMnPkJTUCBEZXNjcmlwdGlvbnM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlcmUgZG8geW91IHB1dCB5b3VyIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXM/CisgICAgICAgICAgICAgICAgWW91IGNhbiBwbGFjZSB0aGVzZSBmaWxlcyBpbiBhbiBhcmVhIHBvaW50ZWQgdG8gYnkKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYXMgZGlyZWN0ZWQgYnkgeW91ciA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgbG9jYXRlZCBpbiB5b3VyIGxheWVyLgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBpY2tzIHVwIHRoZSBjb25maWd1cmF0aW9uIGFuZAorICAgICAgICAgICAgICAgIGFkZHMgaXQgdG8gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhZCBhIHNldCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyAgICAgICAgICAgICAgICBpbiBhIGZpbGUgY2FsbGVkIDxmaWxlbmFtZT5teWNvbmZpZy5jZmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBJZiB5b3UgcHV0IHRoYXQgZmlsZSBpbnNpZGUgYSBkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiB0aGF0IHJlc2lkZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYXMgdGhlIGtlcm5lbCdzIGFwcGVuZCBmaWxlIHdpdGhpbiB5b3VyIGxheWVyCisgICAgICAgICAgICAgICAgYW5kIHRoZW4gYWRkIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyB0byB0aGUga2VybmVsJ3MgYXBwZW5kCisgICAgICAgICAgICAgICAgZmlsZSwgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgcGlja2VkIHVwIGFuZCBhcHBsaWVkCisgICAgICAgICAgICAgICAgd2hlbiB0aGUga2VybmVsIGlzIGJ1aWx0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbXljb25maWcuY2ZnIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHlvdSBjYW4gZ3JvdXAgcmVsYXRlZCBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgIGludG8gbXVsdGlwbGUgZmlsZXMgYW5kIG5hbWUgdGhlbSBhbGwgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGdyb3VwIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGZvciBFdGhlcm5ldCBhbmQgZ3JhcGhpY3MgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgICAgICAgICBhbmQgYWRkIHRob3NlIGJ5IHVzaW5nIGEgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICBsaWtlIHRoZSBmb2xsb3dpbmcgaW4geW91ciBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9teWNvbmZpZy5jZmcgXAorICAgICAgICAgICAgZmlsZTovL2V0aC5jZmcgXAorICAgICAgICAgICAgZmlsZTovL2dmeC5jZmciCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ZhbGlkYXRpbmctY29uZmlndXJhdGlvbic+CisgICAgICAgICAgICA8dGl0bGU+VmFsaWRhdGluZyBDb25maWd1cmF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWtlcm5lbF9jb25maWdjaGVjayc+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdjaGVjayAtZgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgdGFzayBwcm9kdWNlcyB3YXJuaW5ncyBmb3Igd2hlbiBhCisgICAgICAgICAgICAgICAgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gZG9lcyBub3QgYXBwZWFyIGluIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBvciB3aGVuIHlvdSBvdmVycmlkZSBhCisgICAgICAgICAgICAgICAgcG9saWN5IGNvbmZpZ3VyYXRpb24gaW4gYSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBydW4gdGhpcyB0YXNrLCB5b3UgbXVzdCBoYXZlIGFuIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzazoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRlZCAxMjc1IGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgorICAgICBOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFzayBxdWV1ZSBkZXBlbmRlbmNpZXMKKworICAgICBCdWlsZCBDb25maWd1cmF0aW9uOgorICAgICAgICAgLgorICAgICAgICAgLgorICAgICAgICAgLgorCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgV0FSTklORzogbGludXgteW9jdG8tNC4xMi4xMitnaXRBVVRPSU5DK2VkYTRkMThjZTRfMTZkZTAxNDk2Ny1yMCBkb19rZXJuZWxfY29uZmlnY2hlY2s6CisgICAgICAgICBba2VybmVsIGNvbmZpZ106IHNwZWNpZmllZCB2YWx1ZXMgZGlkIG5vdCBtYWtlIGl0IGludG8gdGhlIGtlcm5lbCdzIGZpbmFsIGNvbmZpZ3VyYXRpb246CisKKyAgICAgLS0tLS0tLS0tLSBDT05GSUdfWDg2X1RTQyAtLS0tLS0tLS0tLS0tLS0tLQorICAgICBDb25maWc6IENPTkZJR19YODZfVFNDCisgICAgIEZyb206IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9ic3AvY29tbW9uLXBjL2NvbW1vbi1wYy1jcHUuY2ZnCisgICAgIFJlcXVlc3RlZCB2YWx1ZTogIENPTkZJR19YODZfVFNDPXkKKyAgICAgQWN0dWFsIHZhbHVlOgorCisKKyAgICAgLS0tLS0tLS0tLSBDT05GSUdfWDg2X0JJR1NNUCAtLS0tLS0tLS0tLS0tLS0tLQorICAgICBDb25maWc6IENPTkZJR19YODZfQklHU01QCisgICAgIEZyb206IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9jZmcvc21wLmNmZworICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvZGVmY29uZmlnCisgICAgIFJlcXVlc3RlZCB2YWx1ZTogICMgQ09ORklHX1g4Nl9CSUdTTVAgaXMgbm90IHNldAorICAgICBBY3R1YWwgdmFsdWU6CisKKworICAgICAtLS0tLS0tLS0tIENPTkZJR19OUl9DUFVTIC0tLS0tLS0tLS0tLS0tLS0tCisgICAgIENvbmZpZzogQ09ORklHX05SX0NQVVMKKyAgICAgRnJvbTogL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2NmZy9zbXAuY2ZnCisgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9ic3AvY29tbW9uLXBjL2NvbW1vbi1wYy5jZmcKKyAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2RlZmNvbmZpZworICAgICBSZXF1ZXN0ZWQgdmFsdWU6ICBDT05GSUdfTlJfQ1BVUz04CisgICAgIEFjdHVhbCB2YWx1ZTogICAgIENPTkZJR19OUl9DUFVTPTEKKworCisgICAgIC0tLS0tLS0tLS0gQ09ORklHX1NDSEVEX1NNVCAtLS0tLS0tLS0tLS0tLS0tLQorICAgICBDb25maWc6IENPTkZJR19TQ0hFRF9TTVQKKyAgICAgRnJvbTogL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2NmZy9zbXAuY2ZnCisgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9kZWZjb25maWcKKyAgICAgUmVxdWVzdGVkIHZhbHVlOiAgQ09ORklHX1NDSEVEX1NNVD15CisgICAgIEFjdHVhbCB2YWx1ZToKKworCisKKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDI4OCB0YXNrcyBvZiB3aGljaCAyODUgZGlkbid0IG5lZWQgdG8gYmUgcmVydW4gYW5kIGFsbCBzdWNjZWVkZWQuCisKKyAgICAgU3VtbWFyeTogVGhlcmUgd2VyZSAzIFdBUk5JTkcgbWVzc2FnZXMgc2hvd24uCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgb3V0cHV0IGV4YW1wbGUgaGFzIGFydGlmaWNpYWwgbGluZSBicmVha3MKKyAgICAgICAgICAgICAgICAgICAgdG8gbWFrZSBpdCBtb3JlIHJlYWRhYmxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBkZXNjcmliZXMgdGhlIHZhcmlvdXMgcHJvYmxlbXMgdGhhdCB5b3UgY2FuCisgICAgICAgICAgICAgICAgZW5jb3VudGVyIGFsb25nIHdpdGggd2hlcmUgdG8gZmluZCB0aGUgb2ZmZW5kaW5nIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpdGVtcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIGxvZ3MgdG8gYWRqdXN0IHlvdXIKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB0aGVuIHJlcGVhdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mta2VybmVsX2NvbmZpZ21lJz48ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1rZXJuZWxfY29uZmlnY2hlY2snPjxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFza3MgdW50aWwgdGhleSBwcm9kdWNlIG5vIHdhcm5pbmdzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1tZW51Y29uZmlnJz5Vc2luZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2ZpbmUtdHVuaW5nLXRoZS1rZXJuZWwtY29uZmlndXJhdGlvbi1maWxlJz4KKyAgICAgICAgICAgIDx0aXRsZT5GaW5lLVR1bmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gRmlsZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMgYXMKKyAgICAgICAgICAgICAgICBsZWFuIG9yIGVmZmljaWVudCBhcyBwb3NzaWJsZSBieSByZWFkaW5nIHRoZSBvdXRwdXQgb2YgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgYXVkaXQsIG5vdGluZyBhbnkgaXNzdWVzLCBtYWtpbmcKKyAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIGNvcnJlY3QgdGhlIGlzc3VlcywgYW5kIHRoZW4gcmVwZWF0aW5nLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcywgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2sgcnVucy4KKyAgICAgICAgICAgICAgICBUaGlzIHRhc2sgdmFsaWRhdGVzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBieSBjaGVja2luZyB0aGUKKyAgICAgICAgICAgICAgICBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYWdhaW5zdCB0aGUgaW5wdXQKKyAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGNoZWNrLCB0aGUgdGFzayBwcm9kdWNlcyB3YXJuaW5nIG1lc3NhZ2VzIGZvciB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3RlZCBvcHRpb25zIHRoYXQgZGlkIG5vdCBtYWtlIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gaXRlbXMgdGhhdCBhcHBlYXIgdHdpY2UgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBpdGVtcyB0YWdnZWQgYXMgInJlcXVpcmVkIiB0aGF0IHdlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRkZW4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQSBib2FyZCBvdmVycmlkZXMgYSBub24tYm9hcmQgc3BlY2lmaWMgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RlZCBvcHRpb25zIG5vdCB2YWxpZCBmb3IgdGhlIGtlcm5lbCBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBvcHRpb24gZG9lcyBub3QgYXBwZWFyIGFueXdoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzayBjYW4KKyAgICAgICAgICAgICAgICAgICAgYWxzbyBvcHRpb25hbGx5IHJlcG9ydCBpZiBhbiBvcHRpb24gaXMgb3ZlcnJpZGRlbiBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBlYWNoIG91dHB1dCB3YXJuaW5nLCBhIG1lc3NhZ2UgcG9pbnRzIHRvIHRoZSBmaWxlCisgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgdGhlIG9wdGlvbnMgYW5kIGEgcG9pbnRlciB0byB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVtLgorICAgICAgICAgICAgICAgIENvbGxlY3RpdmVseSwgdGhlIGZpbGVzIGFyZSB0aGUga2V5IHRvIHN0cmVhbWxpbmluZyB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBzdHJlYW1saW5lIHRoZSBjb25maWd1cmF0aW9uLCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBhIFdvcmtpbmcgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgd2l0aCBhIGZ1bGwgY29uZmlndXJhdGlvbiB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAga25vdyB3b3Jrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGFuZCBib290cworICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGFzIHlvdXIgYmFzZWxpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJ1biBDb25maWd1cmUgYW5kIENoZWNrIFRhc2tzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZWx5IHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnbWU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdtZSAtZgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByb2Nlc3MgdGhlIFJlc3VsdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRha2UgdGhlIHJlc3VsdGluZyBsaXN0IG9mIGZpbGVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgYW5kIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJvcCB2YWx1ZXMgdGhhdCBhcmUgcmVkZWZpbmVkIGluIHRoZSBmcmFnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZG8gbm90IGNoYW5nZSB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emUgYW5kIHBvdGVudGlhbGx5IGRyb3AgdmFsdWVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emUgYW5kIHBvdGVudGlhbGx5IHJlbW92ZSBub24tYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgcmVwZWF0ZWQgYW5kIGludmFsaWQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmUtUnVuIENvbmZpZ3VyZSBhbmQgQ2hlY2sgVGFza3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHdvcmtlZCB0aHJvdWdoIHRoZSBvdXRwdXQgb2YgdGhlIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhdWRpdCwgeW91IGNhbiByZS1ydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFza3MgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBtb3JlIGlzc3VlcywgeW91IGNhbiBkZWFsIHdpdGggdGhlbSBhcworICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlbHkgd29ya2luZyB0aHJvdWdoIHN0ZXBzIHR3byB0aHJvdWdoIGZvdXIgZXZlbnR1YWxseQorICAgICAgICAgICAgICAgIHlpZWxkcyBhIG1pbmltYWwsIHN0cmVhbWxpbmVkIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBiZXN0IDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4sIHlvdSBjYW4KKyAgICAgICAgICAgICAgICBidWlsZCB0aGUgTGludXggWW9jdG8ga2VybmVsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2V4cGFuZGluZy12YXJpYWJsZXMnPgorICAgICAgICA8dGl0bGU+RXhwYW5kaW5nIFZhcmlhYmxlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgaGVscGZ1bCB0byBkZXRlcm1pbmUgd2hhdCBhIHZhcmlhYmxlIGV4cGFuZHMKKyAgICAgICAgICAgIHRvIGR1cmluZyBhIGJ1aWxkLgorICAgICAgICAgICAgWW91IGNhbiBkbyBleGFtaW5lIHRoZSB2YWx1ZXMgb2YgdmFyaWFibGVzIGJ5IGV4YW1pbmluZyB0aGUKKyAgICAgICAgICAgIG91dHB1dCBvZiB0aGUgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgVGhlIG91dHB1dCBpcyBsb25nIGFuZCBpcyBtb3JlIGVhc2lseSBtYW5hZ2VkIGluIGEgdGV4dCBmaWxlLAorICAgICAgICAgICAgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHNlYXJjaGVzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWUgdmlydHVhbC9rZXJuZWwgPiA8cmVwbGFjZWFibGU+c29tZV90ZXh0X2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgV2l0aGluIHRoZSB0ZXh0IGZpbGUsIHlvdSBjYW4gc2VlIGV4YWN0bHkgaG93IGVhY2ggdmFyaWFibGUgaXMKKyAgICAgICAgICAgIGV4cGFuZGVkIGFuZCB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC1hLWRpcnR5LWtlcm5lbC12ZXJzaW9uLXN0cmluZyc+CisgICAgICAgIDx0aXRsZT5Xb3JraW5nIHdpdGggYSAiRGlydHkiIEtlcm5lbCBWZXJzaW9uIFN0cmluZzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgYnVpbGQgYSBrZXJuZWwgaW1hZ2UgYW5kIHRoZSB2ZXJzaW9uIHN0cmluZyBoYXMgYQorICAgICAgICAgICAgIisiIG9yIGEgIi1kaXJ0eSIgYXQgdGhlIGVuZCwgdW5jb21taXR0ZWQgbW9kaWZpY2F0aW9ucyBleGlzdAorICAgICAgICAgICAgaW4gdGhlIGtlcm5lbCdzIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY2xlYW4gdXAgdGhlIHZlcnNpb24gc3RyaW5nOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRpc2NvdmVyIHRoZSBVbmNvbW1pdHRlZCBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEdvIHRvIHRoZSBrZXJuZWwncyBsb2NhbGx5IGNsb25lZCBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAoc291cmNlIGRpcmVjdG9yeSkgYW5kIHVzZSB0aGUgZm9sbG93aW5nIEdpdCBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHRvIGxpc3QgdGhlIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIGFkZGVkLCBvcgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IHN0YXR1cworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1pdCB0aGUgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGNvbW1pdCB0aG9zZSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgc291cmNlCisgICAgICAgICAgICAgICAgICAgIHRyZWUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB5b3Ugd2lsbCBzYXZlLAorICAgICAgICAgICAgICAgICAgICBleHBvcnQsIG9yIHVzZSB0aGUgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBhZGQKKyAgICAgJCBnaXQgY29tbWl0IC1zIC1hIC1tICJnZXR0aW5nIHJpZCBvZiAtZGlydHkiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVidWlsZCB0aGUgS2VybmVsIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGNvbW1pdCB0aGUgY2hhbmdlcywgcmVidWlsZCB0aGUga2VybmVsLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIGtlcm5lbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB3b3JrZmxvdywgdGhlIGNvbW1hbmRzIHlvdSB1c2UgdG8gcmVidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIG1pZ2h0IGRpZmZlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2Ugd2hlbgorICAgICAgICAgICAgICAgICAgICB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyB0aGUga2VybmVsIGltYWdlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgQml0YmFrZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC15b3VyLW93bi1zb3VyY2VzJz4KKyAgICAgICAgPHRpdGxlPldvcmtpbmcgV2l0aCBZb3VyIE93biBTb3VyY2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBjYW5ub3Qgd29yayB3aXRoIG9uZSBvZiB0aGUgTGludXgga2VybmVsCisgICAgICAgICAgICB2ZXJzaW9ucyBzdXBwb3J0ZWQgYnkgZXhpc3RpbmcgbGludXgteW9jdG8gcmVjaXBlcywgeW91IGNhbgorICAgICAgICAgICAgc3RpbGwgbWFrZSB1c2Ugb2YgdGhlIFlvY3RvIFByb2plY3QgTGludXgga2VybmVsIHRvb2xpbmcgYnkKKyAgICAgICAgICAgIHdvcmtpbmcgd2l0aCB5b3VyIG93biBzb3VyY2VzLgorICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHlvdXIgb3duIHNvdXJjZXMsIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvCisgICAgICAgICAgICBsZXZlcmFnZSB0aGUgZXhpc3Rpbmcga2VybmVsCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIHN0YWJpbGl6YXRpb24gd29yayBvZiB0aGUgbGludXgteW9jdG8gc291cmNlcy4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSB3aWxsIGJlIGFibGUgdG8gbWFuYWdlIHlvdXIgb3duIE1ldGFkYXRhIGluIHRoZSBzYW1lCisgICAgICAgICAgICBmb3JtYXQgYXMgdGhlIGxpbnV4LXlvY3RvIHNvdXJjZXMuCisgICAgICAgICAgICBNYWludGFpbmluZyBmb3JtYXQgY29tcGF0aWJpbGl0eSBmYWNpbGl0YXRlcyBjb252ZXJnaW5nIHdpdGgKKyAgICAgICAgICAgIGxpbnV4LXlvY3RvIG9uIGEgZnV0dXJlLCBtdXR1YWxseS1zdXBwb3J0ZWQga2VybmVsIHZlcnNpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGhlbHAgeW91IHVzZSB5b3VyIG93biBzb3VyY2VzLCB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhCisgICAgICAgICAgICBsaW51eC15b2N0byBjdXN0b20gcmVjaXBlCisgICAgICAgICAgICAoPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWN1c3RvbS5iYjwvZmlsZW5hbWU+KSB0aGF0IHVzZXMKKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gc291cmNlcworICAgICAgICAgICAgYW5kIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbCB0b29scyBmb3IgbWFuYWdpbmcKKyAgICAgICAgICAgIGtlcm5lbCBNZXRhZGF0YS4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHJlY2lwZSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgb2YgdGhlCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcnk8L3VsaW5rPgorICAgICAgICAgICAgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgIHBva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20uYmIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBiYXNpYyBzdGVwcyB5b3UgY2FuIHVzZSB0byB3b3JrIHdpdGggeW91ciBvd24KKyAgICAgICAgICAgIHNvdXJjZXM6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgQ29weSBvZiB0aGUgS2VybmVsIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb3B5IHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tY3VzdG9tLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRvIHlvdXIgbGF5ZXIgYW5kIGdpdmUgaXQgYSBtZWFuaW5nZnVsIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIHNob3VsZCBpbmNsdWRlIHRoZSB2ZXJzaW9uIG9mIHRoZSBZb2N0byBMaW51eAorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgeW91IGFyZSB1c2luZyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tbXlwcm9qZWN0XzQuMTIuYmI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgIjQuMTIiIGlzIHRoZSBiYXNlIHZlcnNpb24gb2YgdGhlIExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHlvdSB3b3VsZCBiZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgRGlyZWN0b3J5IGZvciBZb3VyIFBhdGNoZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHNhbWUgZGlyZWN0b3J5IGluc2lkZSB5b3VyIGxheWVyLCBjcmVhdGUgYSBtYXRjaGluZworICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdG8gc3RvcmUgeW91ciBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5saW51eC15b2N0by1teXByb2plY3Q8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVuc3VyZSBZb3UgSGF2ZSBDb25maWd1cmF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91IGhhdmUgZWl0aGVyIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgb3IgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyBpbiB5b3VyIGxheWVyLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by1jdXN0b20uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGUsIHlvdSBtdXN0IHNwZWNpZnkgYSBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgY29tbWFuZCwgY29weSB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHlvdXIgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgYXMgImRlZmNvbmZpZyIgYW5kIHRoZW4gYWRkIGl0IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSByZWNpcGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlJ1bm5pbmcgdGhlIDxmaWxlbmFtZT5tYWtlIGRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgcmVzdWx0cyBpbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhcyBkZWZpbmVkIGJ5IHlvdXIga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBubyBndWFyYW50ZWUgZXhpc3RzIHRoYXQgdGhpcyBjb25maWd1cmF0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgIHZhbGlkIGZvciB5b3VyIHVzZSBjYXNlLCBvciB0aGF0IHlvdXIgYm9hcmQgd2lsbCBldmVuIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgZm9yIG5vbi14ODYgYXJjaGl0ZWN0dXJlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gdXNlIG5vbi14ODYgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzLAorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljIGFuZCBmaW5kIG9uZSB0aGF0IG1hdGNoZXMgeW91cgorICAgICAgICAgICAgICAgICAgICBib2FyZCAoaS5lLiBmb3IgYXJtLCB5b3UgbG9vayBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJjaC9hcm0vY29uZmlnczwvZmlsZW5hbWU+IGFuZCB1c2UgdGhlIG9uZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IGZvciB5b3VyIGJvYXJkKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgUmVjaXBlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4geW91ciByZWNpcGUgYXMgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgcHJvamVjdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHNob3VsZCBzcGVjaWZ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBHaXQgcmVwb3NpdG9yeSB0aGF0IHVzZXMgb25lIG9mIHRoZSBzdXBwb3J0ZWQgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlciBwcm90b2NvbHMgKGkuZS4gPGZpbGVuYW1lPmZpbGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0PC9maWxlbmFtZT4sIDxmaWxlbmFtZT5odHRwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB2YXJpYWJsZSBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIHNwZWNpZnkgZWl0aGVyIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBvciBzb21lIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNrZWxldG9uIHJlY2lwZSBwcm92aWRlcyBhbiBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBhcyBhIHN5bnRheCByZWZlcmVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT04nPjxmaWxlbmFtZT5MSU5VWF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTGludXgga2VybmVsIHZlcnNpb24geW91IGFyZSB1c2luZyAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LjEyIikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT05fRVhURU5TSU9OJz48ZmlsZW5hbWU+TElOVVhfVkVSU0lPTl9FWFRFTlNJT048L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09ORklHX0xPQ0FMVkVSU0lPTjwvZmlsZW5hbWU+IHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlZCBpbnRvIHRoZSByZXN1bHRpbmcga2VybmVsIGFuZCB2aXNpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgPGZpbGVuYW1lPnVuYW1lPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWl0IElEIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyZWF0IHRoaXMgdmFyaWFibGUgdGhlIHNhbWUgYXMgeW91IHdvdWxkIGluIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnQgdGhlIHZhcmlhYmxlIHRvIGluZGljYXRlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGhhdCB0aGUgcmVjaXBlIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGFzc2lnbm1lbnQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgYWRlcXVhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgY29tYmluZXMgdGhlIDxmaWxlbmFtZT5MSU5VWF9WRVJTSU9OPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIChTQ00pIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVyaXZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNQVic+PGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21iaW5lZCByZXN1bHRzIGFyZSBhIHN0cmluZyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgMy4xOS4xMStnaXQxKzY4YTYzNWJmOGRmYjY0YjAyMjYzYzFhYzgwYzk0ODY0N2NjNzZkNWZfMSsyMThiZDhkMjAyMmI5ODUyYzYwZDMyZjBkNzcwOTMxZTNjZjM0M2UyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGxlbmd0aHksIHRoZSBleHRyYSB2ZXJib3NpdHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiBoZWxwcyBlbnN1cmUgeW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBleGFjdCBzb3VyY2VzIGZyb20gd2hpY2ggeW91IGludGVuZCB0byBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09NUEFUSUJMRV9NQUNISU5FJz48ZmlsZW5hbWU+Q09NUEFUSUJMRV9NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdGhlIG1hY2hpbmVzIHN1cHBvcnRlZCBieSB5b3VyIG5ldyByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpbiB0aGUgZXhhbXBsZSByZWNpcGUgaXMgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IHRoZSBlbXB0eSBzdHJpbmcsICIoXiQpIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHQgc2V0dGluZyB0cmlnZ2VycyBhbiBleHBsaWNpdCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgY2hhbmdlIGl0IHRvIG1hdGNoIGEgbGlzdCBvZiB0aGUgbWFjaGluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdXIgbmV3IHJlY2lwZSBzdXBwb3J0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gc3VwcG9ydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LTY0PC9maWxlbmFtZT4gbWFjaGluZXMsIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3VzdG9taXplIFlvdXIgUmVjaXBlIGFzIE5lZWRlZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGZ1cnRoZXIgY3VzdG9taXphdGlvbnMgdG8geW91ciByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgYXMgbmVlZGVkIGp1c3QgYXMgeW91IHdvdWxkIGN1c3RvbWl6ZSBhbiBleGlzdGluZworICAgICAgICAgICAgICAgICAgICBsaW51eC15b2N0byByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21vZGlmeWluZy1hbi1leGlzdGluZy1yZWNpcGUnPk1vZGlmeWluZyBhbiBFeGlzdGluZyBSZWNpcGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC1vdXQtb2YtdHJlZS1tb2R1bGVzJz4KKyAgICAgICAgPHRpdGxlPldvcmtpbmcgd2l0aCBPdXQtb2YtVHJlZSBNb2R1bGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgc3RlcHMgdG8gYnVpbGQgb3V0LW9mLXRyZWUgbW9kdWxlcyBvbgorICAgICAgICAgICAgeW91ciB0YXJnZXQgYW5kIGRlc2NyaWJlcyBob3cgdG8gaW5jb3Jwb3JhdGUgb3V0LW9mLXRyZWUgbW9kdWxlcworICAgICAgICAgICAgaW4gdGhlIGJ1aWxkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLW91dC1vZi10cmVlLW1vZHVsZXMtb24tdGhlLXRhcmdldCc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgT3V0LW9mLVRyZWUgTW9kdWxlcyBvbiB0aGUgVGFyZ2V0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hpbGUgdGhlIHRyYWRpdGlvbmFsIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgbW9kZWwgd291bGQgYmUKKyAgICAgICAgICAgICAgICB0byBpbmNsdWRlIGtlcm5lbCBtb2R1bGVzIGFzIHBhcnQgb2YgdGhlIG5vcm1hbCBidWlsZAorICAgICAgICAgICAgICAgIHByb2Nlc3MsIHlvdSBtaWdodCBmaW5kIGl0IHVzZWZ1bCB0byBidWlsZCBtb2R1bGVzIG9uIHRoZQorICAgICAgICAgICAgICAgIHRhcmdldC4KKyAgICAgICAgICAgICAgICBUaGlzIGNvdWxkIGJlIHRoZSBjYXNlIGlmIHlvdXIgdGFyZ2V0IHN5c3RlbSBpcyBjYXBhYmxlCisgICAgICAgICAgICAgICAgYW5kIHBvd2VyZnVsIGVub3VnaCB0byBoYW5kbGUgdGhlIG5lY2Vzc2FyeSBjb21waWxhdGlvbi4KKyAgICAgICAgICAgICAgICBCZWZvcmUgZGVjaWRpbmcgdG8gYnVpbGQgb24geW91ciB0YXJnZXQsIGhvd2V2ZXIsIHlvdSBzaG91bGQKKyAgICAgICAgICAgICAgICBjb25zaWRlciB0aGUgYmVuZWZpdHMgb2YgdXNpbmcgYSBwcm9wZXIgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBmcm9tIHlvdXIgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBidWlsZCBvdXQtb2YtdHJlZSBtb2R1bGVzIG9uCisgICAgICAgICAgICAgICAgdGhlIHRhcmdldCwgdGhlcmUgYXJlIHNvbWUgc3RlcHMgeW91IG5lZWQgdG8gdGFrZQorICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgdGhhdCBpcyBydW5uaW5nIHlvdXIgU0RLIGltYWdlLgorICAgICAgICAgICAgICAgIEJyaWVmbHksIHRoZSA8ZmlsZW5hbWU+a2VybmVsLWRldjwvZmlsZW5hbWU+IHBhY2thZ2UKKyAgICAgICAgICAgICAgICBpcyBpbnN0YWxsZWQgYnkgZGVmYXVsdCBvbiBhbGwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5zZGs8L2ZpbGVuYW1lPiBpbWFnZXMgYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtZGV2c3JjPC9maWxlbmFtZT4gcGFja2FnZSBpcyBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICBvbiBtYW55IG9mIHRoZSA8ZmlsZW5hbWU+Ki5zZGs8L2ZpbGVuYW1lPiBpbWFnZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG5lZWQgdG8gY3JlYXRlIHNvbWUgc2NyaXB0cyBwcmlvciB0bworICAgICAgICAgICAgICAgIGF0dGVtcHRpbmcgdG8gYnVpbGQgdGhlIG91dC1vZi10cmVlIG1vZHVsZXMgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgIHRoYXQgaXMgcnVubmluZyB0aGF0IGltYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQcmlvciB0byBhdHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBvdXQtb2YtdHJlZSBtb2R1bGVzLAorICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGJlIG9uIHRoZSB0YXJnZXQgYXMgcm9vdCBhbmQgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICBjaGFuZ2UgdG8gdGhlIDxmaWxlbmFtZT4vdXNyL3NyYy9rZXJuZWw8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgTmV4dCwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0aGUgc2NyaXB0czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgY2QgL3Vzci9zcmMva2VybmVsCisgICAgICMgbWFrZSBzY3JpcHRzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlY2F1c2UgYWxsIFNESyBpbWFnZSByZWNpcGVzIGluY2x1ZGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2LXBrZ3M8L2ZpbGVuYW1lPiwgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlcyB3aWxsIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIFNESyBpbWFnZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC1kZXZzcmM8L2ZpbGVuYW1lPiBwYWNrYWdlcyB3aWxsIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgYXBwbGljYWJsZSBTREsgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFRoZSBTREsgdXNlcyB0aGUgc2NyaXB0cyB3aGVuIGJ1aWxkaW5nIG91dC1vZi10cmVlCisgICAgICAgICAgICAgICAgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHN3aXRjaGVkIHRvIHRoYXQgZGlyZWN0b3J5IGFuZCBjcmVhdGVkIHRoZQorICAgICAgICAgICAgICAgIHNjcmlwdHMsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBidWlsZCB5b3VyIG91dC1vZi10cmVlIG1vZHVsZXMKKyAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+CisgICAgICAgICAgICA8dGl0bGU+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hpbGUgaXQgaXMgYWx3YXlzIHByZWZlcmFibGUgdG8gd29yayB3aXRoIHNvdXJjZXMgaW50ZWdyYXRlZAorICAgICAgICAgICAgICAgIGludG8gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2VzLCBpZiB5b3UgbmVlZCBhbiBleHRlcm5hbCBrZXJuZWwKKyAgICAgICAgICAgICAgICBtb2R1bGUsIHRoZSA8ZmlsZW5hbWU+aGVsbG8tbW9kLmJiPC9maWxlbmFtZT4gcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGFzIGEgdGVtcGxhdGUgZnJvbSB3aGljaCB5b3UgY2FuIGNyZWF0ZSB5b3VyCisgICAgICAgICAgICAgICAgb3duIG91dC1vZi10cmVlIExpbnV4IGtlcm5lbCBtb2R1bGUgcmVjaXBlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHRlbXBsYXRlIHJlY2lwZSBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBhdDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgIHBva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWtlcm5lbC9oZWxsby1tb2QvaGVsbG8tbW9kXzAuMS5iYgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZ2V0IHN0YXJ0ZWQsIGNvcHkgdGhpcyByZWNpcGUgdG8geW91ciBsYXllciBhbmQgZ2l2ZSBpdCBhCisgICAgICAgICAgICAgICAgbWVhbmluZ2Z1bCBuYW1lIChlLmcuIDxmaWxlbmFtZT5teW1vZHVsZV8xLjAuYmI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgSW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4gd2hlcmUgeW91IGNhbiBzdG9yZSBhbnkgc291cmNlIGZpbGVzLAorICAgICAgICAgICAgICAgIHBhdGNoZXMsIG9yIG90aGVyIGZpbGVzIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcKKyAgICAgICAgICAgICAgICB0aGUgbW9kdWxlIHRoYXQgZG8gbm90IGNvbWUgd2l0aCB0aGUgc291cmNlcy4KKyAgICAgICAgICAgICAgICBGaW5hbGx5LCB1cGRhdGUgdGhlIHJlY2lwZSBhcyBuZWVkZWQgZm9yIHRoZSBtb2R1bGUuCisgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugd2lsbCBuZWVkIHRvIHNldCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFU0NSSVBUSU9OJz48ZmlsZW5hbWU+REVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRSo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBidWlsZCBzeXN0ZW0gdXNlZCBieSB0aGUgbW9kdWxlIHNvdXJjZXMsCisgICAgICAgICAgICAgICAgeW91IG1pZ2h0IG5lZWQgdG8gbWFrZSBzb21lIGFkanVzdG1lbnRzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIHR5cGljYWwgbW9kdWxlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgbG9va3MgbXVjaCBsaWtlIHRoZSBvbmUgcHJvdmlkZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVsbG8tbW9kPC9maWxlbmFtZT4gdGVtcGxhdGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBvYmotbSA6PSBoZWxsby5vCisKKyAgICAgU1JDIDo9ICQoc2hlbGwgcHdkKQorCisgICAgIGFsbDoKKyAgICAgICAgICQoTUFLRSkgLUMgJChLRVJORUxfU1JDKSBNPSQoU1JDKQorCisgICAgIG1vZHVsZXNfaW5zdGFsbDoKKyAgICAgICAgICQoTUFLRSkgLUMgJChLRVJORUxfU1JDKSBNPSQoU1JDKSBtb2R1bGVzX2luc3RhbGwKKyAgICAgLi4uCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgaW1wb3J0YW50IHBvaW50IHRvIG5vdGUgaGVyZSBpcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0VSTkVMX1NSQyc+PGZpbGVuYW1lPktFUk5FTF9TUkM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtbW9kdWxlJz48ZmlsZW5hbWU+bW9kdWxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIHNldHMgdGhpcyB2YXJpYWJsZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9QQVRIJz48ZmlsZW5hbWU+S0VSTkVMX1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19LRVJORUxfRElSJz48ZmlsZW5hbWU+U1RBR0lOR19LRVJORUxfRElSPC9maWxlbmFtZT48L3VsaW5rPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdpdGggdGhlIG5lY2Vzc2FyeSBMaW51eCBrZXJuZWwgYnVpbGQgaW5mb3JtYXRpb24gdG8gYnVpbGQKKyAgICAgICAgICAgICAgICBtb2R1bGVzLgorICAgICAgICAgICAgICAgIElmIHlvdXIgbW9kdWxlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzZXMgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSwgeW91IG1pZ2h0IHdhbnQgdG8gb3ZlcnJpZGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHN0ZXAsIG9yIGNyZWF0ZSBhIHBhdGNoIHRvCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHRvIHdvcmsgd2l0aCB0aGUgbW9yZSB0eXBpY2FsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9TUkM8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgcHJlcGFyZWQgeW91ciByZWNpcGUsIHlvdSB3aWxsIGxpa2VseSB3YW50IHRvCisgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgbW9kdWxlIGluIHlvdXIgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFRvIGRvIHRoaXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4KKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFuZCBzZXQgb25lIG9mIHRoZW0KKyAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZWx5IGZvciB5b3VyIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTJz48ZmlsZW5hbWU+TUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VYVFJBX1JERVBFTkRTJz48ZmlsZW5hbWU+TUFDSElORV9FWFRSQV9SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE1vZHVsZXMgYXJlIG9mdGVuIG5vdCByZXF1aXJlZCBmb3IgYm9vdCBhbmQgY2FuIGJlIGV4Y2x1ZGVkIGZyb20KKyAgICAgICAgICAgICAgICBjZXJ0YWluIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYWxsb3dzIGZvciB0aGUgbW9zdCBmbGV4aWJpbGl0eToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGUtbXltb2R1bGUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBpcyBkZXJpdmVkIGJ5IGFwcGVuZGluZyB0aGUgbW9kdWxlIGZpbGVuYW1lIHdpdGhvdXQKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPi5rbzwvZmlsZW5hbWU+IGV4dGVuc2lvbiB0byB0aGUgc3RyaW5nCisgICAgICAgICAgICAgICAgImtlcm5lbC1tb2R1bGUtIi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgdmFyaWFibGUgaXMKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgbm90IGEKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSwgdGhlIGJ1aWxkIHdpbGwgbm90IGZhaWwgaWYgdGhpcyBtb2R1bGUgaXMgbm90CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisKKyAgICA8c2VjdGlvbiBpZD0naW5zcGVjdGluZy1jaGFuZ2VzLWFuZC1jb21taXRzJz4KKyAgICAgICAgPHRpdGxlPkluc3BlY3RpbmcgQ2hhbmdlcyBhbmQgQ29tbWl0czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIGNvbW1vbiBxdWVzdGlvbiB3aGVuIHdvcmtpbmcgd2l0aCBhIGtlcm5lbCBpczoKKyAgICAgICAgICAgICJXaGF0IGNoYW5nZXMgaGF2ZSBiZWVuIGFwcGxpZWQgdG8gdGhpcyB0cmVlPyIKKyAgICAgICAgICAgIFJhdGhlciB0aGFuIHVzaW5nICJncmVwIiBhY3Jvc3MgZGlyZWN0b3JpZXMgdG8gc2VlIHdoYXQgaGFzCisgICAgICAgICAgICBjaGFuZ2VkLCB5b3UgY2FuIHVzZSBHaXQgdG8gaW5zcGVjdCBvciBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlLgorICAgICAgICAgICAgVXNpbmcgR2l0IGlzIGFuIGVmZmljaWVudCB3YXkgdG8gc2VlIHdoYXQgaGFzIGNoYW5nZWQgaW4gdGhlIHRyZWUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nd2hhdC1jaGFuZ2VkLWluLWEta2VybmVsJz4KKyAgICAgICAgICAgIDx0aXRsZT5XaGF0IENoYW5nZWQgaW4gYSBLZXJuZWw/PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBhIGZldyBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZSBHaXQKKyAgICAgICAgICAgICAgICBjb21tYW5kcyB0byBleGFtaW5lIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgVGhlc2UgZXhhbXBsZXMgYXJlIGJ5IG5vIG1lYW5zIHRoZSBvbmx5IHdheSB0byBzZWUgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlcywgdW5sZXNzIHlvdSBwcm92aWRlIGEgY29tbWl0CisgICAgICAgICAgICAgICAgICAgIHJhbmdlLCA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IGhpc3RvcnkgaXMgYmxlbmRlZAorICAgICAgICAgICAgICAgICAgICB3aXRoIFlvY3RvIFByb2plY3Qga2VybmVsIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZm9ybSByYW5nZXMgYnkgdXNpbmcgYnJhbmNoIG5hbWVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCB0cmVlIGFzIHRoZSB1cHBlciBhbmQgbG93ZXIgY29tbWl0IG1hcmtlcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICB0aGUgR2l0IGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgYnJhbmNoIG5hbWVzIHRocm91Z2ggdGhlIHdlYiBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBUbyBzZWUgYSBmdWxsIHJhbmdlIG9mIHRoZSBjaGFuZ2VzLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCB3aGF0Y2hhbmdlZDwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHNwZWNpZnkgYQorICAgICAgICAgICAgICAgIGNvbW1pdCByYW5nZSBmb3IgdGhlIGJyYW5jaAorICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+Y29tbWl0PC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+Li48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5jb21taXQ8L3JlcGxhY2VhYmxlPikuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGxvb2tzIGF0IHdoYXQgaGFzIGNoYW5nZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVtZW5sb3c8L2ZpbGVuYW1lPiBicmFuY2ggb2YgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTk8L2ZpbGVuYW1lPiBrZXJuZWwuCisgICAgICAgICAgICAgICAgVGhlIGxvd2VyIGNvbW1pdCByYW5nZSBpcyB0aGUgY29tbWl0IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3RhbmRhcmQvYmFzZTwvZmlsZW5hbWU+IGJyYW5jaCwgd2hpbGUKKyAgICAgICAgICAgICAgICB0aGUgdXBwZXIgY29tbWl0IHJhbmdlIGlzIHRoZSBjb21taXQgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdGFuZGFyZC9lbWVubG93PC9maWxlbmFtZT4gYnJhbmNoLgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgd2hhdGNoYW5nZWQgb3JpZ2luL3N0YW5kYXJkL2Jhc2UuLm9yaWdpbi9zdGFuZGFyZC9lbWVubG93CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBzZWUgc2hvcnQsIG9uZSBsaW5lIHN1bW1hcmllcyBvZiBjaGFuZ2VzIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGxvZzwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBsb2cgLS1vbmVsaW5lIG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVXNlIHRoaXMgY29tbWFuZCB0byBzZWUgY29kZSBkaWZmZXJlbmNlcyBmb3IgdGhlIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBkaWZmIG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVXNlIHRoaXMgY29tbWFuZCB0byBzZWUgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZXMgYW5kIHRoZQorICAgICAgICAgICAgICAgIHRleHQgZGlmZmVyZW5jZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBzaG93IG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVXNlIHRoaXMgY29tbWFuZCB0byBjcmVhdGUgaW5kaXZpZHVhbCBwYXRjaGVzIGZvcgorICAgICAgICAgICAgICAgIGVhY2ggY2hhbmdlLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHRoYXQgY3JlYXRlcyBwYXRjaCBmaWxlcyBmb3IgZWFjaAorICAgICAgICAgICAgICAgIGNvbW1pdCBhbmQgcGxhY2VzIHRoZW0gaW4geW91ciA8ZmlsZW5hbWU+RG9jdW1lbnRzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLW8gJEhPTUUvRG9jdW1lbnRzIG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzaG93aW5nLWEtcGFydGljdWxhci1mZWF0dXJlLW9yLWJyYW5jaC1jaGFuZ2UnPgorICAgICAgICAgICAgPHRpdGxlPlNob3dpbmcgYSBQYXJ0aWN1bGFyIEZlYXR1cmUgb3IgQnJhbmNoIENoYW5nZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRhZ3MgaW4gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHRyZWUgZGl2aWRlIGNoYW5nZXMgZm9yCisgICAgICAgICAgICAgICAgc2lnbmlmaWNhbnQgZmVhdHVyZXMgb3IgYnJhbmNoZXMuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXQgc2hvdzwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPnRhZzwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgY29tbWFuZCBzaG93cyBjaGFuZ2VzIGJhc2VkIG9uIGEgdGFnLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHNob3dzIDxmaWxlbmFtZT5zeXN0ZW10YXA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBzaG93IHN5c3RlbXRhcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGJyYW5jaCAtLWNvbnRhaW5zPC9maWxlbmFtZT4mbmJzcDs8cmVwbGFjZWFibGU+dGFnPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHNob3cgdGhlIGJyYW5jaGVzIHRoYXQgY29udGFpbiBhIHBhcnRpY3VsYXIgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgc2hvd3MgdGhlIGJyYW5jaGVzIHRoYXQgY29udGFpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtdGFwPC9maWxlbmFtZT4gZmVhdHVyZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGJyYW5jaCAtLWNvbnRhaW5zIHN5c3RlbXRhcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdhZGRpbmctcmVjaXBlLXNwYWNlLWtlcm5lbC1mZWF0dXJlcyc+CisgICAgICAgIDx0aXRsZT5BZGRpbmcgUmVjaXBlLVNwYWNlIEtlcm5lbCBGZWF0dXJlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGFkZCBrZXJuZWwgZmVhdHVyZXMgaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWNpcGUtc3BhY2UtbWV0YWRhdGEnPnJlY2lwZS1zcGFjZTwvbGluaz4gYnkKKyAgICAgICAgICAgIHVzaW5nIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9GRUFUVVJFUyc+PGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBieSBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlJ3MgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSBwYXRoIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgc3RhdGVtZW50LgorICAgICAgICAgICAgV2hlbiB5b3UgYWRkIGZlYXR1cmVzIHVzaW5nIHRoaXMgbWV0aG9kLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICBzeXN0ZW0gY2hlY2tzIHRvIGJlIHN1cmUgdGhlIGZlYXR1cmVzIGFyZSBwcmVzZW50LgorICAgICAgICAgICAgSWYgdGhlIGZlYXR1cmVzIGFyZSBub3QgcHJlc2VudCwgdGhlIGJ1aWxkIHN0b3BzLgorICAgICAgICAgICAgS2VybmVsIGZlYXR1cmVzIGFyZSB0aGUgbGFzdCBlbGVtZW50cyBwcm9jZXNzZWQgZm9yIGNvbmZpZ3VyaW5nCisgICAgICAgICAgICBhbmQgcGF0Y2hpbmcgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgIFRoZXJlZm9yZSwgYWRkaW5nIGZlYXR1cmVzIGluIHRoaXMgbWFubmVyIGlzIGEgd2F5CisgICAgICAgICAgICB0byBlbmZvcmNlIHNwZWNpZmljIGZlYXR1cmVzIGFyZSBwcmVzZW50IGFuZCBlbmFibGVkCisgICAgICAgICAgICB3aXRob3V0IG5lZWRpbmcgdG8gZG8gYSBmdWxsIGF1ZGl0IG9mIGFueSBvdGhlciBsYXllcidzIGFkZGl0aW9ucworICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgYWRkIGEga2VybmVsIGZlYXR1cmUgYnkgcHJvdmlkaW5nIHRoZSBmZWF0dXJlIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUgYW5kIGJ5IHByb3ZpZGluZyB0aGUKKyAgICAgICAgICAgIHBhdGggdG8gdGhlIGZlYXR1cmUncyA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzCisgICAgICAgICAgICByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUga2VybmVsIE1ldGFkYXRhLgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2VhcmNoZXMgYWxsIGZvcm1zIG9mIGtlcm5lbAorICAgICAgICAgICAgTWV0YWRhdGEgb24gdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IHJlZ2FyZGxlc3MKKyAgICAgICAgICAgIG9mIHdoZXRoZXIgdGhlIE1ldGFkYXRhIGlzIGluIHRoZSAia2VybmVsLWNhY2hlIiwgc3lzdGVtIGtlcm5lbAorICAgICAgICAgICAgTWV0YWRhdGEsIG9yIGEgcmVjaXBlLXNwYWNlIE1ldGFkYXRhIChpLmUuIHBhcnQgb2YgdGhlIGtlcm5lbAorICAgICAgICAgICAgcmVjaXBlKS4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtbWV0YWRhdGEtbG9jYXRpb24nPktlcm5lbCBNZXRhZGF0YSBMb2NhdGlvbjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBzcGVjaWZ5IHRoZSBmZWF0dXJlJ3MgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQsIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBhZGRzIHRoZSBkaXJlY3Rvcnkgb2YgdGhhdAorICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlIGFsb25nIHdpdGggYWxsIGl0cyBzdWJkaXJlY3RvcmllcworICAgICAgICAgICAgdG8gdGhlIGtlcm5lbCBmZWF0dXJlIHNlYXJjaCBwYXRoLgorICAgICAgICAgICAgQmVjYXVzZSBzdWJkaXJlY3RvcmllcyBhcmUgc2VhcmNoZWQsIHlvdSBjYW4gcmVmZXJlbmNlIGEgc2luZ2xlCisgICAgICAgICAgICA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB0byByZWZlcmVuY2UgbXVsdGlwbGUga2VybmVsCisgICAgICAgICAgICBmZWF0dXJlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIHRoYXQgYWRkcyB0aGUgInRlc3Quc2NjIiBmZWF0dXJlCisgICAgICAgICAgICB0byB0aGUgYnVpbGQuCisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBGZWF0dXJlIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlIGFuZCBsb2NhdGUgaXQKKyAgICAgICAgICAgICAgICAgICAganVzdCBhcyB5b3Ugd291bGQgYW55IG90aGVyIHBhdGNoIGZpbGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY2ZnPC9maWxlbmFtZT4gZmlsZSwgb3IgZmV0Y2hlciBpdGVtCisgICAgICAgICAgICAgICAgICAgIHlvdSBzcGVjaWZ5IGluIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBhZGQgdGhlIGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlIHRvIHRoZSBmZXRjaGVyJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoIHBhdGggaW4gdGhlIHNhbWUgbWFubmVyIGFzIHlvdSB3b3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgYSA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZXMgYmVuZWF0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIGZpbGUgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBzdWJkaXJlY3RvcmllcyBhcmUgc2VhcmNoZWQgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhcyBwb3RlbnRpYWwgZmVhdHVyZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGUsIHN1cHBvc2UgdGhlICJ0ZXN0LnNjYyIKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSB5b3UgYXJlIGFkZGluZyBoYXMgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC5zY2M8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5teV9yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICB8CisgICAgICAgICstbGludXgteW9jdG8KKyAgICAgICAgICAgfAorICAgICAgICAgICArLXRlc3QuY2ZnCisgICAgICAgICAgICstdGVzdC5zY2MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIGJvdGggdGhlIGZlYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3Quc2NjPC9maWxlbmFtZT4gZmlsZSBhbmQgYSBzaW1pbGFybHkKKyAgICAgICAgICAgICAgICAgICAgbmFtZWQgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0LmNmZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgdGhlIEZlYXR1cmUgRmlsZSB0byA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL3Rlc3Quc2NjIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsZWFkaW5nIHNwYWNlIGJlZm9yZSB0aGUgcGF0aCBpcyBpbXBvcnRhbnQgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhdGggaXMgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIHBhdGguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNwZWNpZnkgdGhlIEZlYXR1cmUgYXMgYSBLZXJuZWwgRmVhdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSB0aGUgZmVhdHVyZSBhcyBhIGtlcm5lbCBmZWF0dXJlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiIHRlc3Quc2NjIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHByb2Nlc3NlcyB0aGUga2VybmVsIGZlYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBpdCBidWlsZHMgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBvdGhlciBmZWF0dXJlcyBhcmUgY29udGFpbmVkIGJlbG93ICJ0ZXN0LnNjYyIsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIHRoZWlyIGRpcmVjdG9yaWVzIGFyZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nIHRoZSA8ZmlsZW5hbWU+dGVzdC5zY2M8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC5yc3QKaW5kZXggNWI2ZWJlZi4uMDRjYjExNyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioKIEFkdmFuY2VkIEtlcm5lbCBDb25jZXB0cwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYwYzUyNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKQEAgLTAsMCArMSw2MjIgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8YXBwZW5kaXggaWQ9J2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweCc+Cis8dGl0bGU+QWR2YW5jZWQgS2VybmVsIENvbmNlcHRzPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtYmlnLXBpY3R1cmUnPgorICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBLZXJuZWwgRGV2ZWxvcG1lbnQgYW5kIE1haW50ZW5hbmNlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEtlcm5lbHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFlvY3RvIFByb2plY3QgKFlvY3RvIExpbnV4IGtlcm5lbHMpLAorICAgICAgICAgICAgbGlrZSBvdGhlciBrZXJuZWxzLCBhcmUgYmFzZWQgb2ZmIHRoZSBMaW51eCBrZXJuZWwgcmVsZWFzZXMgZnJvbQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5rZXJuZWwub3JnJz48L3VsaW5rPi4KKyAgICAgICAgICAgIEF0IHRoZSBiZWdpbm5pbmcgb2YgYSBtYWpvciBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgY3ljbGUsIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIGNob29zZXMgYSBMaW51eCBrZXJuZWwgYmFzZWQgb24gZmFjdG9ycyBzdWNoIGFzCisgICAgICAgICAgICByZWxlYXNlIHRpbWluZywgdGhlIGFudGljaXBhdGVkIHJlbGVhc2UgdGltaW5nIG9mIGZpbmFsIHVwc3RyZWFtCisgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IHZlcnNpb25zLCBhbmQgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgZmVhdHVyZSByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBUeXBpY2FsbHksIHRoZSBMaW51eCBrZXJuZWwgY2hvc2VuIGlzIGluIHRoZSBmaW5hbCBzdGFnZXMgb2YKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJ5IHRoZSBMaW51eCBjb21tdW5pdHkuCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIExpbnV4IGtlcm5lbCBpcyBpbiB0aGUgcmVsZWFzZSBjYW5kaWRhdGUKKyAgICAgICAgICAgIG9yICJyYyIgcGhhc2UgYW5kIGhhcyB5ZXQgdG8gcmVhY2ggZmluYWwgcmVsZWFzZS4KKyAgICAgICAgICAgIEJ1dCwgYnkgYmVpbmcgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiBleHRlcm5hbCBkZXZlbG9wbWVudCwgdGhlCisgICAgICAgICAgICB0ZWFtIGtub3dzIHRoYXQgdGhlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gZmluYWwgcmVsZWFzZQorICAgICAgICAgICAgd2lsbCBjbGVhcmx5IGJlIHdpdGhpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBkZXZlbG9wbWVudCB3aW5kb3cuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgYmFsYW5jZSBhbGxvd3MgdGhlIFlvY3RvIFByb2plY3QgdGVhbSB0byBkZWxpdmVyIHRoZSBtb3N0CisgICAgICAgICAgICB1cC10by1kYXRlIFlvY3RvIExpbnV4IGtlcm5lbCBwb3NzaWJsZSwgd2hpbGUgc3RpbGwgZW5zdXJpbmcgdGhhdAorICAgICAgICAgICAgdGhlIHRlYW0gaGFzIGEgc3RhYmxlIG9mZmljaWFsIHJlbGVhc2UgZm9yIHRoZSBiYXNlbGluZSBMaW51eAorICAgICAgICAgICAga2VybmVsIHZlcnNpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIGltcGxpZWQgZWFybGllciwgdGhlIHVsdGltYXRlIHNvdXJjZSBmb3IgWW9jdG8gTGludXgga2VybmVscworICAgICAgICAgICAgYXJlIHJlbGVhc2VkIGtlcm5lbHMgZnJvbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYSBmb3VuZGF0aW9uYWwga2VybmVsIGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4sIHRoZSBhdmFpbGFibGUgWW9jdG8gTGludXgga2VybmVscworICAgICAgICAgICAgY29udGFpbiBhIG1peCBvZiBpbXBvcnRhbnQgbmV3IG1haW5saW5lIGRldmVsb3BtZW50cywgbm9uLW1haW5saW5lCisgICAgICAgICAgICBkZXZlbG9wbWVudHMgKHdoZW4gbm8gYWx0ZXJuYXRpdmUgZXhpc3RzKSwgQm9hcmQgU3VwcG9ydCBQYWNrYWdlCisgICAgICAgICAgICAoQlNQKSBkZXZlbG9wbWVudHMsIGFuZCBjdXN0b20gZmVhdHVyZXMuCisgICAgICAgICAgICBUaGVzZSBhZGRpdGlvbnMgcmVzdWx0IGluIGEgY29tbWVyY2lhbGx5IHJlbGVhc2VkIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IExpbnV4IGtlcm5lbCB0aGF0IGNhdGVycyB0byBzcGVjaWZpYyBlbWJlZGRlZCBkZXNpZ25lcgorICAgICAgICAgICAgbmVlZHMgZm9yIHRhcmdldGVkIGhhcmR3YXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBMaW51eCBrZXJuZWxzIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgIGF0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgorICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhlIGludGVyZmFjZSwgeW91IHdpbGwgc2VlIHRvIHRoZSBsZWZ0IGEKKyAgICAgICAgICAgIGdyb3VwaW5nIG9mIEdpdCByZXBvc2l0b3JpZXMgdGl0bGVkICJZb2N0byBMaW51eCBLZXJuZWwiLgorICAgICAgICAgICAgV2l0aGluIHRoaXMgZ3JvdXAsIHlvdSB3aWxsIGZpbmQgc2V2ZXJhbCBMaW51eCBZb2N0byBrZXJuZWxzCisgICAgICAgICAgICBkZXZlbG9wZWQgYW5kIGluY2x1ZGVkIHdpdGggWW9jdG8gUHJvamVjdCByZWxlYXNlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFibGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdG8gdXNlIHdpdGggdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZSAyLjAuCisgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCA0LjEgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuNCByZWxlYXNlZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by00LjY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIHRlbXBvcmFyeSBrZXJuZWwgdGhhdCBpcyBub3QgdGllZCB0byBhbnkgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC44PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHN0YWJsZSB5b2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuOTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFibGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdG8gdXNlIHdpdGggdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZSAyLjMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCA0LjkgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBSZWxlYXNlIDIuMy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuMTAgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBSZWxlYXNlIDIuNC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuMTIgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5saW51eC15b2N0by1jYWNoZTwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbGludXgteW9jdG8ga2VybmVsCisgICAgICAgICAgICAgICAgICAgIHRyZWUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVwb3NpdG9yeSBpcyB1c2VmdWwgd2hlbiB3b3JraW5nIG9uIHRoZSBsaW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgIkFkdmFuY2VkIEtlcm5lbCBNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC1kZXYtYWR2YW5jZWQnPldvcmtpbmcgV2l0aCBBZHZhbmNlZCBNZXRhZGF0YSAoPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by1kZXY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIGRldmVsb3BtZW50IGtlcm5lbCBiYXNlZCBvbiB0aGUgbGF0ZXN0IHVwc3RyZWFtIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgTG9uZyBUZXJtIFN1cHBvcnQgSW5pdGlhdGl2ZSAoTFRTSSkgZm9yIFlvY3RvIExpbnV4CisgICAgICAgICAgICAgICAga2VybmVscyBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIDEuNywgMS44LCBhbmQgMi4wLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIExUU0kga2VybmVsIGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIDIuMSwgMi4yLCBhbmQgMi4zLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIExUU0kga2VybmVsIGlzIDxmaWxlbmFtZT5saW51eC15b2N0by00LjE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgWW9jdG8gUHJvamVjdCByZWxlYXNlIDIuNCwgdGhlIExUU0kga2VybmVsIGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC45PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT4gaXMgYW4gTFRTCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSBhIFlvY3RvIExpbnV4IGtlcm5lbCBpcyBvZmZpY2lhbGx5IHJlbGVhc2VkLCB0aGUgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgdGVhbSBnb2VzIGludG8gdGhlaXIgbmV4dCBkZXZlbG9wbWVudCBjeWNsZSwgb3IgdXB3YXJkCisgICAgICAgICAgICByZXZpc2lvbiAodXByZXYpIGN5Y2xlLCB3aGlsZSBzdGlsbCBjb250aW51aW5nIG1haW50ZW5hbmNlIG9uIHRoZQorICAgICAgICAgICAgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgbW9zdCBzdXN0YWluYWJsZSBhbmQgc3RhYmxlIHdheQorICAgICAgICAgICAgdG8gaW5jbHVkZSBmZWF0dXJlIGRldmVsb3BtZW50IHVwc3RyZWFtIGlzIHRocm91Z2ggYSBrZXJuZWwgdXByZXYKKyAgICAgICAgICAgIHByb2Nlc3MuCisgICAgICAgICAgICBCYWNrLXBvcnRpbmcgaHVuZHJlZHMgb2YgaW5kaXZpZHVhbCBmaXhlcyBhbmQgbWlub3IgZmVhdHVyZXMgZnJvbQorICAgICAgICAgICAgdmFyaW91cyBrZXJuZWwgdmVyc2lvbnMgaXMgbm90IHN1c3RhaW5hYmxlIGFuZCBjYW4gZWFzaWx5CisgICAgICAgICAgICBjb21wcm9taXNlIHF1YWxpdHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIER1cmluZyB0aGUgdXByZXYgY3ljbGUsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdXNlcyBhbiBvbmdvaW5nCisgICAgICAgICAgICBhbmFseXNpcyBvZiBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQsIEJTUCBzdXBwb3J0LCBhbmQgcmVsZWFzZQorICAgICAgICAgICAgdGltaW5nIHRvIHNlbGVjdCB0aGUgYmVzdCBwb3NzaWJsZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+CisgICAgICAgICAgICBMaW51eCBrZXJuZWwgdmVyc2lvbiBvbiB3aGljaCB0byBiYXNlIHN1YnNlcXVlbnQgWW9jdG8gTGludXgKKyAgICAgICAgICAgIGtlcm5lbCBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIFRoZSB0ZWFtIGNvbnRpbnVhbGx5IG1vbml0b3JzIExpbnV4IGNvbW11bml0eSBrZXJuZWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIHRvIGxvb2sgZm9yIHNpZ25pZmljYW50IGZlYXR1cmVzIG9mIGludGVyZXN0LgorICAgICAgICAgICAgVGhlIHRlYW0gZG9lcyBjb25zaWRlciBiYWNrLXBvcnRpbmcgbGFyZ2UgZmVhdHVyZXMgaWYgdGhleSBoYXZlIGEKKyAgICAgICAgICAgIHNpZ25pZmljYW50IGFkdmFudGFnZS4KKyAgICAgICAgICAgIFVzZXIgb3IgY29tbXVuaXR5IGRlbWFuZCBjYW4gYWxzbyB0cmlnZ2VyIGEgYmFjay1wb3J0IG9yIGNyZWF0aW9uCisgICAgICAgICAgICBvZiBuZXcgZnVuY3Rpb25hbGl0eSBpbiB0aGUgWW9jdG8gUHJvamVjdCBiYXNlbGluZSBrZXJuZWwgZHVyaW5nCisgICAgICAgICAgICB0aGUgdXByZXYgY3ljbGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdlbmVyYWxseSBzcGVha2luZywgZXZlcnkgbmV3IExpbnV4IGtlcm5lbCBib3RoIGFkZHMgZmVhdHVyZXMgYW5kCisgICAgICAgICAgICBpbnRyb2R1Y2VzIG5ldyBidWdzLgorICAgICAgICAgICAgVGhlc2UgY29uc2VxdWVuY2VzIGFyZSB0aGUgYmFzaWMgcHJvcGVydGllcyBvZiB1cHN0cmVhbQorICAgICAgICAgICAgTGludXgga2VybmVsIGRldmVsb3BtZW50IGFuZCBhcmUgbWFuYWdlZCBieSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgdGVhbSdzIFlvY3RvIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBzdHJhdGVneS4KKyAgICAgICAgICAgIEl0IGlzIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0ncyBwb2xpY3kgdG8gbm90IGJhY2stcG9ydCBtaW5vcgorICAgICAgICAgICAgZmVhdHVyZXMgdG8gdGhlIHJlbGVhc2VkIFlvY3RvIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgIFRoZXkgb25seSBjb25zaWRlciBiYWNrLXBvcnRpbmcgc2lnbmlmaWNhbnQgdGVjaG5vbG9naWNhbAorICAgICAgICAgICAganVtcHMgJmRhc2g7IGFuZCwgdGhhdCBpcyBkb25lIGFmdGVyIGEgY29tcGxldGUgZ2FwIGFuYWx5c2lzLgorICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBwb2xpY3kgaXMgdGhhdCBiYWNrLXBvcnRpbmcgYW55IHNtYWxsIHRvCisgICAgICAgICAgICBtZWRpdW0gc2l6ZWQgY2hhbmdlIGZyb20gYW4gZXZvbHZpbmcgTGludXgga2VybmVsIGNhbiBlYXNpbHkKKyAgICAgICAgICAgIGNyZWF0ZSBtaXNtYXRjaGVzLCBpbmNvbXBhdGliaWxpdGllcyBhbmQgdmVyeSBzdWJ0bGUgZXJyb3JzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcG9saWNpZXMgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbiByZXN1bHQgaW4gYm90aCBhIHN0YWJsZQorICAgICAgICAgICAgYW5kIGEgY3V0dGluZyBlZGdlIFlvY3RvIExpbnV4IGtlcm5lbCB0aGF0IG1peGVzIGZvcndhcmQgcG9ydHMgb2YKKyAgICAgICAgICAgIGV4aXN0aW5nIExpbnV4IGtlcm5lbCBmZWF0dXJlcyBhbmQgc2lnbmlmaWNhbnQgYW5kIGNyaXRpY2FsIG5ldworICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIEZvcndhcmQgcG9ydGluZyBMaW51eCBrZXJuZWwgZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBZb2N0byBMaW51eAorICAgICAgICAgICAga2VybmVscyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCBjYW4gYmUgdGhvdWdodCBvZiBhcworICAgICAgICAgICAgYSAibWljcm8gdXByZXYuIgorICAgICAgICAgICAgVGhlIG1hbnkgIm1pY3JvIHVwcmV2cyIgcHJvZHVjZSBhIFlvY3RvIExpbnV4IGtlcm5lbCB2ZXJzaW9uIHdpdGgKKyAgICAgICAgICAgIGEgbWl4IG9mIGltcG9ydGFudCBuZXcgbWFpbmxpbmUsIG5vbi1tYWlubGluZSwgQlNQIGRldmVsb3BtZW50cworICAgICAgICAgICAgYW5kIGZlYXR1cmUgaW50ZWdyYXRpb25zLgorICAgICAgICAgICAgVGhpcyBZb2N0byBMaW51eCBrZXJuZWwgZ2l2ZXMgaW5zaWdodCBpbnRvIG5ldyBmZWF0dXJlcyBhbmQKKyAgICAgICAgICAgIGFsbG93cyBmb2N1c2VkIGFtb3VudHMgb2YgdGVzdGluZyB0byBiZSBkb25lIG9uIHRoZSBrZXJuZWwsCisgICAgICAgICAgICB3aGljaCBwcmV2ZW50cyBzdXJwcmlzZXMgd2hlbiBzZWxlY3RpbmcgdGhlIG5leHQgbWFqb3IgdXByZXYuCisgICAgICAgICAgICBUaGUgcXVhbGl0eSBvZiB0aGVzZSBjdXR0aW5nIGVkZ2UgWW9jdG8gTGludXgga2VybmVscyBpcyBldm9sdmluZworICAgICAgICAgICAgYW5kIHRoZSBrZXJuZWxzIGFyZSB1c2VkIGluIGxlYWRpbmcgZWRnZSBmZWF0dXJlIGFuZCBCU1AKKyAgICAgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3lvY3RvLWxpbnV4LWtlcm5lbC1hcmNoaXRlY3R1cmUtYW5kLWJyYW5jaGluZy1zdHJhdGVnaWVzJz4KKyAgICAgICAgPHRpdGxlPllvY3RvIExpbnV4IEtlcm5lbCBBcmNoaXRlY3R1cmUgYW5kIEJyYW5jaGluZyBTdHJhdGVnaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBhIGtleSBnb2FsIG9mIHRoZSBZb2N0byBQcm9qZWN0IGlzCisgICAgICAgICAgICB0byBwcmVzZW50IHRoZSBkZXZlbG9wZXIgd2l0aCBhIGtlcm5lbCB0aGF0IGhhcyBhIGNsZWFyIGFuZAorICAgICAgICAgICAgY29udGludW91cyBoaXN0b3J5IHRoYXQgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4KKyAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgYW5kIG1lY2hhbmlzbXMsIGluIHBhcnRpY3VsYXIgdGhlIGJyYW5jaGluZworICAgICAgICAgICAgc3RyYXRlZ2llcywgdXNlZCBhY2hpZXZlIHRoYXQgZ29hbCBpbiBhIG1hbm5lciBzaW1pbGFyIHRvCisgICAgICAgICAgICB1cHN0cmVhbSBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgYSBZb2N0byBMaW51eCBrZXJuZWwgYXMgY29uc2lzdGluZyBvZiBhCisgICAgICAgICAgICBiYXNlbGluZSBMaW51eCBrZXJuZWwgd2l0aCBhZGRlZCBmZWF0dXJlcyBsb2dpY2FsbHkgc3RydWN0dXJlZAorICAgICAgICAgICAgb24gdG9wIG9mIHRoZSBiYXNlbGluZS4KKyAgICAgICAgICAgIFRoZSBmZWF0dXJlcyBhcmUgdGFnZ2VkIGFuZCBvcmdhbml6ZWQgYnkgd2F5IG9mIGEgYnJhbmNoaW5nCisgICAgICAgICAgICBzdHJhdGVneSBpbXBsZW1lbnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHVzaW5nIHRoZQorICAgICAgICAgICAgU291cmNlIENvZGUgTWFuYWdlciAoU0NNKSBHaXQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCBpcyB0aGUgb2J2aW91cyBTQ00gZm9yIG1lZXRpbmcgdGhlIFlvY3RvIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgb3JnYW5pemF0aW9uYWwgYW5kIHN0cnVjdHVyYWwgZ29hbHMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGlzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBOb3Qgb25seSBpcyBHaXQgdGhlIFNDTSBmb3IgTGludXgga2VybmVsIGRldmVsb3BtZW50IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IGJ1dCwgR2l0IGNvbnRpbnVlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3cgaW4gcG9wdWxhcml0eSBhbmQgc3VwcG9ydHMgbWFueSBkaWZmZXJlbnQgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3dzLCBmcm9udC1lbmRzIGFuZCBtYW5hZ2VtZW50IHRlY2huaXF1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGRvY3VtZW50YXRpb24gb24gR2l0IGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG9jdW1lbnRhdGlvbic+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZ2V0IGFuIGludHJvZHVjdGlvbiB0byBHaXQgYXMgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXR0ZXIgcmVmZXJlbmNlIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mCisgICAgICAgICAgICAgICAgICAgICAgICBHaXQgYW5kIHByZXNlbnRzIGEgbWluaW1hbCBzZXQgb2YgR2l0IGNvbW1hbmRzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gYmUgZnVuY3Rpb25hbCB1c2luZyBHaXQuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhcyBtdWNoLCBvciBhcyBsaXR0bGUsIG9mIHdoYXQgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXMgdG8gb2ZmZXIgdG8gYWNjb21wbGlzaCB3aGF0IHlvdSBuZWVkIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGJlIGEgIkdpdCBFeHBlcnQiIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgaXQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2luZyBHaXQncyB0YWdnaW5nIGFuZCBicmFuY2hpbmcgZmVhdHVyZXMsIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICB0ZWFtIGNyZWF0ZXMga2VybmVsIGJyYW5jaGVzIGF0IHBvaW50cyB3aGVyZSBmdW5jdGlvbmFsaXR5IGlzCisgICAgICAgICAgICBubyBsb25nZXIgc2hhcmVkIGFuZCB0aHVzLCBuZWVkcyB0byBiZSBpc29sYXRlZC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBib2FyZC1zcGVjaWZpYyBpbmNvbXBhdGliaWxpdGllcyB3b3VsZCByZXF1aXJlCisgICAgICAgICAgICBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBhbmQgd291bGQgcmVxdWlyZSBhIGJyYW5jaCB0bworICAgICAgICAgICAgc2VwYXJhdGUgdGhlIGZlYXR1cmVzLgorICAgICAgICAgICAgTGlrZXdpc2UsIGZvciBzcGVjaWZpYyBrZXJuZWwgZmVhdHVyZXMsIHRoZSBzYW1lIGJyYW5jaGluZworICAgICAgICAgICAgc3RyYXRlZ3kgaXMgdXNlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyAidHJlZS1saWtlIiBhcmNoaXRlY3R1cmUgcmVzdWx0cyBpbiBhIHN0cnVjdHVyZSB0aGF0IGhhcworICAgICAgICAgICAgZmVhdHVyZXMgb3JnYW5pemVkIHRvIGJlIHNwZWNpZmljIGZvciBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksCisgICAgICAgICAgICBzaW5nbGUga2VybmVsIHR5cGVzLCBvciBhIHN1YnNldCBvZiBrZXJuZWwgdHlwZXMuCisgICAgICAgICAgICBUaHVzLCB0aGUgdXNlciBoYXMgdGhlIGFiaWxpdHkgdG8gc2VlIHRoZSBhZGRlZCBmZWF0dXJlcyBhbmQgdGhlCisgICAgICAgICAgICBjb21taXRzIHRoYXQgbWFrZSB1cCB0aG9zZSBmZWF0dXJlcy4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIGJlaW5nIGFibGUgdG8gc2VlIGFkZGVkIGZlYXR1cmVzLCB0aGUgdXNlcgorICAgICAgICAgICAgY2FuIGFsc28gdmlldyB0aGUgaGlzdG9yeSBvZiB3aGF0IG1hZGUgdXAgdGhlIGJhc2VsaW5lCisgICAgICAgICAgICBMaW51eCBrZXJuZWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFub3RoZXIgY29uc2VxdWVuY2Ugb2YgdGhpcyBzdHJhdGVneSByZXN1bHRzIGluIG5vdCBoYXZpbmcgdG8KKyAgICAgICAgICAgIHN0b3JlIHRoZSBzYW1lIGZlYXR1cmUgdHdpY2UgaW50ZXJuYWxseSBpbiB0aGUgdHJlZS4KKyAgICAgICAgICAgIFJhdGhlciwgdGhlIGtlcm5lbCB0ZWFtIHN0b3JlcyB0aGUgdW5pcXVlIGRpZmZlcmVuY2VzIHJlcXVpcmVkCisgICAgICAgICAgICB0byBhcHBseSB0aGUgZmVhdHVyZSBvbnRvIHRoZSBrZXJuZWwgdHlwZSBpbiBxdWVzdGlvbi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3RyaXZlcyB0byBwbGFjZSBmZWF0dXJlcyBpbiB0aGUgdHJlZQorICAgICAgICAgICAgICAgIHN1Y2ggdGhhdCBmZWF0dXJlcyBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBib2FyZHMgYW5kIGtlcm5lbAorICAgICAgICAgICAgICAgIHR5cGVzIHdoZXJlIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGR1cmluZyBkZXZlbG9wbWVudCBjeWNsZXMgb3Igd2hlbiBsYXJnZSBmZWF0dXJlcworICAgICAgICAgICAgICAgIGFyZSBtZXJnZWQsIHRoZSB0ZWFtIGNhbm5vdCBhbHdheXMgZm9sbG93IHRoaXMgcHJhY3RpY2UuCisgICAgICAgICAgICAgICAgSW4gdGhvc2UgY2FzZXMsIHRoZSB0ZWFtIHVzZXMgaXNvbGF0ZWQgYnJhbmNoZXMgdG8gbWVyZ2UKKyAgICAgICAgICAgICAgICBmZWF0dXJlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQlNQLXNwZWNpZmljIGNvZGUgYWRkaXRpb25zIGFyZSBoYW5kbGVkIGluIGEgc2ltaWxhciBtYW5uZXIgdG8KKyAgICAgICAgICAgIGtlcm5lbC1zcGVjaWZpYyBhZGRpdGlvbnMuCisgICAgICAgICAgICBTb21lIEJTUHMgb25seSBtYWtlIHNlbnNlIGdpdmVuIGNlcnRhaW4ga2VybmVsIHR5cGVzLgorICAgICAgICAgICAgU28sIGZvciB0aGVzZSB0eXBlcywgdGhlIHRlYW0gY3JlYXRlcyBicmFuY2hlcyBvZmYgdGhlIGVuZAorICAgICAgICAgICAgb2YgdGhhdCBrZXJuZWwgdHlwZSBmb3IgYWxsIG9mIHRoZSBCU1BzIHRoYXQgYXJlIHN1cHBvcnRlZCBvbgorICAgICAgICAgICAgdGhhdCBrZXJuZWwgdHlwZS4KKyAgICAgICAgICAgIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSB0b29scyB0aGF0IGNyZWF0ZSB0aGUgQlNQIGJyYW5jaCwKKyAgICAgICAgICAgIHRoZSBCU1AgaXMgcmVhbGx5IG5vIGRpZmZlcmVudCB0aGFuIGEgZmVhdHVyZS4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIHNhbWUgYnJhbmNoaW5nIHN0cmF0ZWd5IGFwcGxpZXMgdG8gQlNQcyBhcworICAgICAgICAgICAgaXQgZG9lcyB0byBrZXJuZWwgZmVhdHVyZXMuCisgICAgICAgICAgICBTbyBhZ2FpbiwgcmF0aGVyIHRoYW4gc3RvcmUgdGhlIEJTUCB0d2ljZSwgdGhlIHRlYW0gb25seQorICAgICAgICAgICAgc3RvcmVzIHRoZSB1bmlxdWUgZGlmZmVyZW5jZXMgZm9yIHRoZSBCU1AgYWNyb3NzIHRoZSBzdXBwb3J0ZWQKKyAgICAgICAgICAgIG11bHRpcGxlIGtlcm5lbHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoaWxlIHRoaXMgc3RyYXRlZ3kgY2FuIHJlc3VsdCBpbiBhIHRyZWUgd2l0aCBhIHNpZ25pZmljYW50IG51bWJlcgorICAgICAgICAgICAgb2YgYnJhbmNoZXMsIGl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHRoYXQgZnJvbSB0aGUgZGV2ZWxvcGVyJ3MKKyAgICAgICAgICAgIHBvaW50IG9mIHZpZXcsIHRoZXJlIGlzIGEgbGluZWFyIHBhdGggdGhhdCB0cmF2ZWxzIGZyb20gdGhlCisgICAgICAgICAgICBiYXNlbGluZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LCB0aHJvdWdoIGEgc2VsZWN0CisgICAgICAgICAgICBncm91cCBvZiBmZWF0dXJlcyBhbmQgZW5kcyB3aXRoIHRoZWlyIEJTUC1zcGVjaWZpYyBjb21taXRzLgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBkaXZpc2lvbnMgb2YgdGhlIGtlcm5lbCBhcmUgdHJhbnNwYXJlbnQgYW5kCisgICAgICAgICAgICBhcmUgbm90IHJlbGV2YW50IHRvIHRoZSBkZXZlbG9wZXIgb24gYSBkYXktdG8tZGF5IGJhc2lzLgorICAgICAgICAgICAgRnJvbSB0aGUgZGV2ZWxvcGVyJ3MgcGVyc3BlY3RpdmUsIHRoaXMgcGF0aCBpcyB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICBpbiBHaXQgdGVybXMuCisgICAgICAgICAgICBUaGUgZGV2ZWxvcGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGV4aXN0ZW5jZSBvZiBhbnkKKyAgICAgICAgICAgIG90aGVyIGJyYW5jaGVzIGF0IGFsbC4KKyAgICAgICAgICAgIE9mIGNvdXJzZSwgdmFsdWUgZXhpc3RzIGluIHRoZSBoYXZpbmcgdGhlc2UgYnJhbmNoZXMgaW4gdGhlIHRyZWUsCisgICAgICAgICAgICBzaG91bGQgYSBwZXJzb24gZGVjaWRlIHRvIGV4cGxvcmUgdGhlbS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gQlNQcyBhdCBlaXRoZXIgdGhlIGNvbW1pdAorICAgICAgICAgICAgbGV2ZWwgb3IgYXQgdGhlIGxpbmUtYnktbGluZSBjb2RlIDxmaWxlbmFtZT5kaWZmPC9maWxlbmFtZT4gbGV2ZWwKKyAgICAgICAgICAgIGlzIG5vdyBhIHRyaXZpYWwgb3BlcmF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlsbHVzdHJhdGlvbiBzaG93cyB0aGUgY29uY2VwdHVhbCBZb2N0bworICAgICAgICAgICAgTGludXgga2VybmVsLgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGUgaWxsdXN0cmF0aW9uLCB0aGUgIktlcm5lbC5vcmcgQnJhbmNoIFBvaW50IiBtYXJrcyB0aGUKKyAgICAgICAgICAgIHNwZWNpZmljIHNwb3QgKG9yIExpbnV4IGtlcm5lbCByZWxlYXNlKSBmcm9tIHdoaWNoIHRoZQorICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsIGlzIGNyZWF0ZWQuCisgICAgICAgICAgICBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCBpbiB0aGUgdHJlZSwgZmVhdHVyZXMgYW5kIGRpZmZlcmVuY2VzCisgICAgICAgICAgICBhcmUgb3JnYW5pemVkIGFuZCB0YWdnZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSAiWW9jdG8gUHJvamVjdCBCYXNlbGluZSBLZXJuZWwiIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgdGhhdAorICAgICAgICAgICAgaXMgY29tbW9uIHRvIGV2ZXJ5IGtlcm5lbCB0eXBlIGFuZCBCU1AgdGhhdCBpcyBvcmdhbml6ZWQKKyAgICAgICAgICAgIGZ1cnRoZXIgYWxvbmcgaW4gdGhlIHRyZWUuCisgICAgICAgICAgICBQbGFjaW5nIHRoZXNlIGNvbW1vbiBmZWF0dXJlcyBpbiB0aGUgdHJlZSB0aGlzIHdheSBtZWFucworICAgICAgICAgICAgZmVhdHVyZXMgZG8gbm90IGhhdmUgdG8gYmUgZHVwbGljYXRlZCBhbG9uZyBpbmRpdmlkdWFsCisgICAgICAgICAgICBicmFuY2hlcyBvZiB0aGUgdHJlZSBzdHJ1Y3R1cmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZyb20gdGhlICJZb2N0byBQcm9qZWN0IEJhc2VsaW5lIEtlcm5lbCIsIGJyYW5jaCBwb2ludHMgcmVwcmVzZW50CisgICAgICAgICAgICBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZvciBpbmRpdmlkdWFsIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMKKyAgICAgICAgICAgIChCU1BzKSBhcyB3ZWxsIGFzIHJlYWwtdGltZSBrZXJuZWxzLgorICAgICAgICAgICAgVGhlIGlsbHVzdHJhdGlvbiByZXByZXNlbnRzIHRoaXMgdGhyb3VnaCB0aHJlZSBCU1Atc3BlY2lmaWMKKyAgICAgICAgICAgIGJyYW5jaGVzIGFuZCBhIHJlYWwtdGltZSBrZXJuZWwgYnJhbmNoLgorICAgICAgICAgICAgRWFjaCBicmFuY2ggcmVwcmVzZW50cyBzb21lIHVuaXF1ZSBmdW5jdGlvbmFsaXR5IGZvciB0aGUgQlNQCisgICAgICAgICAgICBvciBmb3IgYSByZWFsLXRpbWUgWW9jdG8gTGludXgga2VybmVsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUgc3RydWN0dXJlLCB0aGUgIlJlYWwtdGltZSAocnQpIEtlcm5lbCIgYnJhbmNoIGhhcworICAgICAgICAgICAgY29tbW9uIGZlYXR1cmVzIGZvciBhbGwgcmVhbC10aW1lIFlvY3RvIExpbnV4IGtlcm5lbHMgYW5kCisgICAgICAgICAgICBjb250YWlucyBtb3JlIGJyYW5jaGVzIGZvciBpbmRpdmlkdWFsIEJTUC1zcGVjaWZpYyByZWFsLXRpbWUKKyAgICAgICAgICAgIGtlcm5lbHMuCisgICAgICAgICAgICBUaGUgaWxsdXN0cmF0aW9uIHNob3dzIHRocmVlIGJyYW5jaGVzIGFzIGFuIGV4YW1wbGUuCisgICAgICAgICAgICBFYWNoIGJyYW5jaCBwb2ludHMgdGhlIHdheSB0byBzcGVjaWZpYywgdW5pcXVlIGZlYXR1cmVzIGZvciBhCisgICAgICAgICAgICByZXNwZWN0aXZlIHJlYWwtdGltZSBrZXJuZWwgYXMgdGhleSBhcHBseSB0byBhIGdpdmVuIEJTUC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlc3VsdGluZyB0cmVlIHN0cnVjdHVyZSBwcmVzZW50cyBhIGNsZWFyIHBhdGggb2YgbWFya2VycworICAgICAgICAgICAgKG9yIGJyYW5jaGVzKSB0byB0aGUgZGV2ZWxvcGVyIHRoYXQsIGZvciBhbGwgcHJhY3RpY2FsCisgICAgICAgICAgICBwdXJwb3NlcywgaXMgdGhlIFlvY3RvIExpbnV4IGtlcm5lbCBuZWVkZWQgZm9yIGFueSBnaXZlbiBzZXQgb2YKKyAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEtlZXAgaW4gbWluZCB0aGUgZmlndXJlIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IGFsbCB0aGUKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgWW9jdG8gTGludXgga2VybmVscywgYnV0IHJhdGhlciBzaG93cyBhIHNpbmdsZQorICAgICAgICAgICAgICAgIGdlbmVyaWMga2VybmVsIGp1c3QgZm9yIGNvbmNlcHR1YWwgcHVycG9zZXMuCisgICAgICAgICAgICAgICAgQWxzbyBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIHRoYXQgYXJlIGVpdGhlciBwdWxsZWQgZnJvbSBkdXJpbmcgdGhlIGJ1aWxkIG9yIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIHByaW9yIHRvIHRoZSBidWlsZCBieSBlaXRoZXIKKyAgICAgICAgICAgICAgICBjbG9uaW5nIGEgcGFydGljdWxhciBrZXJuZWwncyBHaXQgcmVwb3NpdG9yeSBvciBieQorICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nIGFuZCB1bnBhY2tpbmcgYSB0YXJiYWxsLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXb3JraW5nIHdpdGggdGhlIGtlcm5lbCBhcyBhIHN0cnVjdHVyZWQgdHJlZSBmb2xsb3dzIHJlY29nbml6ZWQKKyAgICAgICAgICAgIGNvbW11bml0eSBiZXN0IHByYWN0aWNlcy4KKyAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBrZXJuZWwgYXMgc2hpcHBlZCB3aXRoIHRoZSBwcm9kdWN0LCBzaG91bGQgYmUKKyAgICAgICAgICAgIGNvbnNpZGVyZWQgYW4gInVwc3RyZWFtIHNvdXJjZSIgYW5kIHZpZXdlZCBhcyBhIHNlcmllcyBvZgorICAgICAgICAgICAgaGlzdG9yaWNhbCBhbmQgZG9jdW1lbnRlZCBtb2RpZmljYXRpb25zIChjb21taXRzKS4KKyAgICAgICAgICAgIFRoZXNlIG1vZGlmaWNhdGlvbnMgcmVwcmVzZW50IHRoZSBkZXZlbG9wbWVudCBhbmQgc3RhYmlsaXphdGlvbgorICAgICAgICAgICAgZG9uZSBieSB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgZGV2ZWxvcG1lbnQgdGVhbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVjYXVzZSBjb21taXRzIG9ubHkgY2hhbmdlIGF0IHNpZ25pZmljYW50IHJlbGVhc2UgcG9pbnRzIGluIHRoZQorICAgICAgICAgICAgcHJvZHVjdCBsaWZlIGN5Y2xlLCBkZXZlbG9wZXJzIGNhbiB3b3JrIG9uIGEgYnJhbmNoIGNyZWF0ZWQKKyAgICAgICAgICAgIGZyb20gdGhlIGxhc3QgcmVsZXZhbnQgY29tbWl0IGluIHRoZSBzaGlwcGVkIFlvY3RvIFByb2plY3QgTGludXgKKyAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBwcmV2aW91c2x5LCB0aGUgc3RydWN0dXJlIGlzIHRyYW5zcGFyZW50IHRvIHRoZQorICAgICAgICAgICAgZGV2ZWxvcGVyIGJlY2F1c2UgdGhlIGtlcm5lbCB0cmVlIGlzIGxlZnQgaW4gdGhpcyBzdGF0ZSBhZnRlcgorICAgICAgICAgICAgY2xvbmluZyBhbmQgYnVpbGRpbmcgdGhlIGtlcm5lbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtYnVpbGQtZmlsZS1oaWVyYXJjaHknPgorICAgICAgICA8dGl0bGU+S2VybmVsIEJ1aWxkIEZpbGUgSGllcmFyY2h5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVwc3RyZWFtIHN0b3JhZ2Ugb2YgYWxsIHRoZSBhdmFpbGFibGUga2VybmVsIHNvdXJjZSBjb2RlIGlzCisgICAgICAgICAgICBvbmUgdGhpbmcsIHdoaWxlIHJlcHJlc2VudGluZyBhbmQgdXNpbmcgdGhlIGNvZGUgb24geW91ciBob3N0CisgICAgICAgICAgICBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYW5vdGhlci4KKyAgICAgICAgICAgIENvbmNlcHR1YWxseSwgeW91IGNhbiB0aGluayBvZiB0aGUga2VybmVsIHNvdXJjZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgIGFzIGFsbCB0aGUgc291cmNlIGZpbGVzIG5lY2Vzc2FyeSBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQKKyAgICAgICAgICAgIFlvY3RvIExpbnV4IGtlcm5lbHMuCisgICAgICAgICAgICBBcyBhIGRldmVsb3BlciwgeW91IGFyZSBqdXN0IGludGVyZXN0ZWQgaW4gdGhlIHNvdXJjZSBmaWxlcworICAgICAgICAgICAgZm9yIHRoZSBrZXJuZWwgb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgorICAgICAgICAgICAgQW5kLCBmdXJ0aGVybW9yZSwgeW91IG5lZWQgdGhlbSBhdmFpbGFibGUgb24geW91ciBob3N0IHN5c3RlbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgS2VybmVsIHNvdXJjZSBjb2RlIGlzIGF2YWlsYWJsZSBvbiB5b3VyIGhvc3Qgc3lzdGVtIHNldmVyYWwKKyAgICAgICAgICAgIGRpZmZlcmVudCB3YXlzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaWxlcyBBY2Nlc3NlZCBXaGlsZSB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4sIHdoaWNoIGlzIGF2YWlsYWJsZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBieSB3aGljaCB0bworICAgICAgICAgICAgICAgICAgICBtb2RpZnkgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+S2VybmVsIE1vZGlmaWNhdGlvbiBXb3JrZmxvdzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lZCBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyBpbiB0aGUga2VybmVsIGFsbCB0aGUgdGltZSwgeW91IHByb2JhYmx5CisgICAgICAgICAgICAgICAgICAgIHdvdWxkIHdhbnQgdG8gc2V0IHVwIHlvdXIgb3duIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjbG9uZSBhIFlvY3RvIExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0LXRvLXdvcmstb24tdGhlLWtlcm5lbCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0IHRvIFdvcmsgb24gdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlbXBvcmFyeSBTb3VyY2UgRmlsZXMgZnJvbSBhIEJ1aWxkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBqdXN0IG5lZWQgdG8gbWFrZSBzb21lIHBhdGNoZXMgdG8gdGhlIGtlcm5lbCB1c2luZworICAgICAgICAgICAgICAgICAgICBhIHRyYWRpdGlvbmFsIEJpdEJha2Ugd29ya2Zsb3cgKGkuZS4gbm90IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+KSwgeW91IGNhbiBhY2Nlc3MgdGVtcG9yYXJ5CisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBzb3VyY2UgZmlsZXMgdGhhdCB3ZXJlIGV4dHJhY3RlZCBhbmQgdXNlZCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBrZXJuZWwgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSB0ZW1wb3Jhcnkga2VybmVsIHNvdXJjZSBmaWxlcyByZXN1bHRpbmcgZnJvbSBhIGJ1aWxkIHVzaW5nCisgICAgICAgICAgICBCaXRCYWtlIGhhdmUgYSBwYXJ0aWN1bGFyIGhpZXJhcmNoeS4KKyAgICAgICAgICAgIFdoZW4geW91IGJ1aWxkIHRoZSBrZXJuZWwgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0sIGFsbCBmaWxlcworICAgICAgICAgICAgbmVlZGVkIGZvciB0aGUgYnVpbGQgYXJlIHRha2VuIGZyb20gdGhlIHNvdXJjZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBhbmQgZ2F0aGVyZWQgaW4gYSB0ZW1wb3Jhcnkgd29yayBhcmVhIHdoZXJlIHRoZXkgYXJlCisgICAgICAgICAgICBzdWJzZXF1ZW50bHkgdXNlZCB0byBjcmVhdGUgdGhlIHVuaXF1ZSBrZXJuZWwuCisgICAgICAgICAgICBUaHVzLCBpbiBhIHNlbnNlLCB0aGUgcHJvY2VzcyBjb25zdHJ1Y3RzIGEgbG9jYWwgc291cmNlIHRyZWUKKyAgICAgICAgICAgIHNwZWNpZmljIHRvIHlvdXIga2VybmVsIGZyb20gd2hpY2ggdG8gZ2VuZXJhdGUgdGhlIG5ldyBrZXJuZWwKKyAgICAgICAgICAgIGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyB0aGUgdGVtcG9yYXJ5IGZpbGUgc3RydWN0dXJlCisgICAgICAgICAgICBjcmVhdGVkIG9uIHlvdXIgaG9zdCBzeXN0ZW0gd2hlbiB5b3UgYnVpbGQgdGhlIGtlcm5lbCB1c2luZworICAgICAgICAgICAgQml0YmFrZS4KKyAgICAgICAgICAgIFRoaXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIGNvbnRhaW5zIGFsbCB0aGUgc291cmNlIGZpbGVzIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyIKKyAgICAgICAgICAgICAgICB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZ2FpbiwgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3Qga2VybmVsJ3MKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgaXRzIGJyYW5jaGluZyBzdHJhdGVneSwgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3lvY3RvLWxpbnV4LWtlcm5lbC1hcmNoaXRlY3R1cmUtYW5kLWJyYW5jaGluZy1zdHJhdGVnaWVzJz5Zb2N0byBMaW51eCBLZXJuZWwgQXJjaGl0ZWN0dXJlIGFuZCBCcmFuY2hpbmcgU3RyYXRlZ2llczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbnMgZm9yIGRldGFpbGVkIGV4YW1wbGUgdGhhdCBtb2RpZmllcyB0aGUga2VybmVsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldGVybWluaW5nLWhhcmR3YXJlLWFuZC1ub24taGFyZHdhcmUtZmVhdHVyZXMtZm9yLXRoZS1rZXJuZWwtY29uZmlndXJhdGlvbi1hdWRpdC1waGFzZSc+CisgICAgICAgIDx0aXRsZT5EZXRlcm1pbmluZyBIYXJkd2FyZSBhbmQgTm9uLUhhcmR3YXJlIEZlYXR1cmVzIGZvciB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gQXVkaXQgUGhhc2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBwYXJ0IG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhdWRpdAorICAgICAgICAgICAgcGhhc2UgdGhhdCBtb3N0IGRldmVsb3BlcnMgY2FuIGlnbm9yZS4KKyAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGtlcm5lbCBjb25maWd1cmF0aW9uIGluY2x1ZGluZworICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlcywgYW5kIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+Q29uZmlndXJpbmcgdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdXJpbmcgdGhpcyBwYXJ0IG9mIHRoZSBhdWRpdCBwaGFzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaW5hbAorICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgZnJhZ21lbnRzIHNwZWNpZmllZCBieSB0aGUgc3lzdGVtLgorICAgICAgICAgICAgVGhlc2UgZnJhZ21lbnRzIGNhbiBiZSBzeXN0ZW0gZnJhZ21lbnRzLCBkaXN0cm8gZnJhZ21lbnRzLAorICAgICAgICAgICAgb3IgdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbiBlbGVtZW50cy4KKyAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlaXIgb3JpZ2luLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgd2FybnMgdGhlIHVzZXIgaWYgYSBzcGVjaWZpYyBvcHRpb24gaXMgbm90IGluY2x1ZGVkIGluIHRoZQorICAgICAgICAgICAgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGluIG9yZGVyIHRvIG5vdCBvdmVyd2hlbG0gdGhlIHVzZXIgd2l0aAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiB3YXJuaW5ncywgdGhlIHN5c3RlbSBvbmx5IHJlcG9ydHMgbWlzc2luZworICAgICAgICAgICAgImhhcmR3YXJlIiBvcHRpb25zIGFzIHRoZXkgY291bGQgcmVzdWx0IGluIGEgYm9vdAorICAgICAgICAgICAgZmFpbHVyZSBvciBpbmRpY2F0ZSB0aGF0IGltcG9ydGFudCBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiBvcHRpb24gaXMgImhhcmR3YXJlIiBvcgorICAgICAgICAgICAgIm5vbi1oYXJkd2FyZSIsIHRoZSBrZXJuZWwgTWV0YWRhdGEgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBjb250YWlucyBmaWxlcyB0aGF0CisgICAgICAgICAgICBjbGFzc2lmeSBpbmRpdmlkdWFsIG9yIGdyb3VwcyBvZiBvcHRpb25zIGFzIGVpdGhlciBoYXJkd2FyZQorICAgICAgICAgICAgb3Igbm9uLWhhcmR3YXJlLgorICAgICAgICAgICAgVG8gYmV0dGVyIHNob3cgdGhpcywgY29uc2lkZXIgYSBzaXR1YXRpb24gd2hlcmUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gY29udGFpbnMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgZmlsZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9kcm0tcHNiL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMva2dkYi9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTMyL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL3FlbXUtcHBjMzIvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdWFybWE5L2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTY0L2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2FybS12ZXJzYXRpbGUtOTI2ZWpzL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2NvbW1vbi1wYy9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9jb21tb24tcGMtNjQvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9yZmtpbGwvbm9uLWhhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2Uvbm9uLWhhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMvYXVmcy9ub24taGFyZHdhcmUua2NmCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9vY2Yvbm9uLWhhcmR3YXJlLmtjZgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2Uvbm9uLWhhcmR3YXJlLmtjZgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2UvaGFyZHdhcmUua2NmCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdS1wcGMzMi9oYXJkd2FyZS5rY2YKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBleHBsYW5hdGlvbnMgZm9yIHRoZSB2YXJpb3VzCisgICAgICAgICAgICBmaWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGFyZHdhcmUua2NmPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Yga2VybmVsIEtjb25maWcgZmlsZXMgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG9wdGlvbnMgb25seS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbCBLY29uZmlnIGZpbGVzIHRoYXQgY29udGFpbgorICAgICAgICAgICAgICAgICAgICBub24taGFyZHdhcmUgb3B0aW9ucyBvbmx5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5jZmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBrZXJuZWwgPGZpbGVuYW1lPkNPTkZJR188L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHRoYXQgYXJlIGhhcmR3YXJlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90CisgICAgICAgICAgICAgICAgICAgIHRoZXkgYXJlIHdpdGhpbiBhIEtjb25maWcgZmlsZSBzcGVjaWZpZWQgYnkgYSBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgICBvciBub24taGFyZHdhcmUgS2NvbmZpZyBmaWxlIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmNmZzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbCA8ZmlsZW5hbWU+Q09ORklHXzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgdGhhdCBhcmUgbm90IGhhcmR3YXJlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKKyAgICAgICAgICAgICAgICAgICAgbm90IHRoZXkgYXJlIHdpdGhpbiBhIEtjb25maWcgZmlsZSBzcGVjaWZpZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBvciBub24taGFyZHdhcmUgS2NvbmZpZyBmaWxlIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIEhlcmUgaXMgYSBzcGVjaWZpYyBleGFtcGxlIHVzaW5nIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhMzIvaGFyZHdhcmUuY2ZnPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTkZJR19TRVJJQUxfODI1MAorICAgICBDT05GSUdfU0VSSUFMXzgyNTBfQ09OU09MRQorICAgICBDT05GSUdfU0VSSUFMXzgyNTBfTlJfVUFSVFMKKyAgICAgQ09ORklHX1NFUklBTF84MjUwX1BDSQorICAgICBDT05GSUdfU0VSSUFMX0NPUkUKKyAgICAgQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEUKKyAgICAgQ09ORklHX1ZHQV9BUkIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhdWRpdCBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlc2UKKyAgICAgICAgICAgIGZpbGVzIChoZW5jZSB0aGUgbmFtZXMgbXVzdCBiZSBleGFjdGx5IHRoZSBvbmVzIGRpc2N1c3NlZCBoZXJlKSwKKyAgICAgICAgICAgIGFuZCB1c2VzIHRoZW0gYXMgaW5wdXRzIHdoZW4gZ2VuZXJhdGluZyB3YXJuaW5ncyBhYm91dCB0aGUKKyAgICAgICAgICAgIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSB1c2VyLXNwZWNpZmllZCBrZXJuZWwgTWV0YWRhdGEgcmVwb3NpdG9yeSwgb3IgcmVjaXBlIHNwYWNlCisgICAgICAgICAgICBmZWF0dXJlLCBjYW4gdXNlIHRoZXNlIHNhbWUgZmlsZXMgdG8gY2xhc3NpZnkgb3B0aW9ucyB0aGF0IGFyZQorICAgICAgICAgICAgZm91bmQgd2l0aGluIGl0cyA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGZpbGVzIGFzIGhhcmR3YXJlCisgICAgICAgICAgICBvciBub24taGFyZHdhcmUsIHRvIHByZXZlbnQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZnJvbQorICAgICAgICAgICAgcHJvZHVjaW5nIGFuIGVycm9yIG9yIHdhcm5pbmcgd2hlbiBhbiBvcHRpb24gaXMgbm90IGluIHRoZQorICAgICAgICAgICAgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9hcHBlbmRpeD4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jdXN0b21pemF0aW9uLnhzbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZjdjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSIna2VybmVsLWRldi1zdHlsZS5jc3MnIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNoYXB0ZXIuYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYXBwZW5kaXguYXV0b2xhYmVsIj5BPC94c2w6cGFyYW0+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmxhYmVsLmluY2x1ZGVzLmNvbXBvbmVudC5sYWJlbCIgc2VsZWN0PSIxIiAvPgorCis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1mYXEucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1mYXEucnN0CmluZGV4IDcwYmY0YTIuLmI1ZTZhODQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWZhcS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioKIEtlcm5lbCBEZXZlbG9wbWVudCBGQVEKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzZmMGE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1mYXEueG1sCkBAIC0wLDAgKzEsMTQzIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGFwcGVuZGl4IGlkPSdrZXJuZWwtZGV2LWZhcSc+Cis8dGl0bGU+S2VybmVsIERldmVsb3BtZW50IEZBUTwvdGl0bGU+CisKKzxzZWN0aW9uIGlkPSdrZXJuZWwtZGV2LWZhcS1zZWN0aW9uJz4KKyAgICA8dGl0bGU+Q29tbW9uIFF1ZXN0aW9ucyBhbmQgU29sdXRpb25zPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3RzIHNvbWUgc29sdXRpb25zIGZvciBjb21tb24gcXVlc3Rpb25zLgorCisKKyAgICAgICAgPHFhbmRhc2V0PgorICAgICAgICAgICAgPHFhbmRhZW50cnk+CisgICAgICAgICAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvdyBkbyBJIHVzZSBteSBvd24gTGludXgga2VybmVsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU/CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICAgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIHRvIHRoZSAiPGxpbmsgbGlua2VuZD0nY2hhbmdpbmctdGhlLWNvbmZpZ3VyYXRpb24nPkNoYW5naW5nIHRoZSBDb25maWd1cmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9hbnN3ZXI+CisgICAgICAgICAgICA8L3FhbmRhZW50cnk+CisKKyAgICAgICAgICAgIDxxYW5kYWVudHJ5PgorICAgICAgICAgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBIb3cgZG8gSSBjcmVhdGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHM/CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICAgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2Fuc3dlcj4KKyAgICAgICAgICAgIDwvcWFuZGFlbnRyeT4KKworICAgICAgICAgICAgPHFhbmRhZW50cnk+CisgICAgICAgICAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvdyBkbyBJIHVzZSBteSBvd24gTGludXgga2VybmVsIHNvdXJjZXM/CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICAgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXIgdG8gdGhlICI8bGluayBsaW5rZW5kPSd3b3JraW5nLXdpdGgteW91ci1vd24tc291cmNlcyc+V29ya2luZyBXaXRoIFlvdXIgT3duIFNvdXJjZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2Fuc3dlcj4KKyAgICAgICAgICAgIDwvcWFuZGFlbnRyeT4KKworICAgICAgICAgICAgPHFhbmRhZW50cnk+CisgICAgICAgICAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvdyBkbyBJIGluc3RhbGwvbm90LWluc3RhbGwgdGhlIGtlcm5lbCBpbWFnZSBvbiB0aGUgcm9vdGZzPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBrZXJuZWwgaW1hZ2UgKGUuZy4gPGZpbGVuYW1lPnZtbGludXo8L2ZpbGVuYW1lPikgaXMgcHJvdmlkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSA8ZmlsZW5hbWU+a2VybmVsLWltYWdlPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlIHJlY2lwZXMgZGVwZW5kIG9uIDxmaWxlbmFtZT5rZXJuZWwtYmFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBpcyBpbnN0YWxsZWQgaW4gdGhlIGdlbmVyYXRlZCByb290IGZpbGVzeXN0ZW0sIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFNfa2VybmVsLWJhc2U8L2ZpbGVuYW1lPiB0byBpbmNsdWRlIG9yIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSAia2VybmVsLWltYWdlIi48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYW4gYXBwZW5kIGZpbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9hbnN3ZXI+CisgICAgICAgICAgICA8L3FhbmRhZW50cnk+CisKKyAgICAgICAgICAgIDxxYW5kYWVudHJ5PgorICAgICAgICAgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBIb3cgZG8gSSBpbnN0YWxsIGEgc3BlY2lmaWMga2VybmVsIG1vZHVsZT8KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgICAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBrZXJuZWwgbW9kdWxlcyBhcmUgcGFja2FnZWQgaW5kaXZpZHVhbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gZW5zdXJlIGEgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBhbiBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgaXQgaW4gdGhlIGFwcHJvcHJpYXRlIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlc2Ugb3RoZXIgdmFyaWFibGVzIGFyZSB1c2VmdWwgZm9yIGluc3RhbGxpbmcgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRVhUUkFfUkRFUEVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VYVFJBX1JERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2V0IHRoZSBmb2xsb3dpbmcgaW4gdGhlIDxmaWxlbmFtZT5xZW11eDg2LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSB0byBpbmNsdWRlIHRoZSA8ZmlsZW5hbWU+YWIxMjM8L2ZpbGVuYW1lPiBrZXJuZWwgbW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBpbWFnZXMgYnVpbHQgZm9yIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IG1hY2hpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGUtYWIxMjMiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2Fuc3dlcj4KKyAgICAgICAgICAgIDwvcWFuZGFlbnRyeT4KKworICAgICAgICAgICAgPHFhbmRhZW50cnk+CisgICAgICAgICAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvdyBkbyBJIGNoYW5nZSB0aGUgTGludXgga2VybmVsIGNvbW1hbmQgbGluZT8KKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBrZXJuZWwgY29tbWFuZCBsaW5lIGlzIHR5cGljYWxseSBzcGVjaWZpZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lIGNvbmZpZyB1c2luZyB0aGUgPGZpbGVuYW1lPkFQUEVORDwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBzb21lIGhlbHBmdWwgZGVidWcgaW5mb3JtYXRpb24gZG9pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFQUEVORCArPSAicHJpbnRrLnRpbWU9eSBpbml0Y2FsbF9kZWJ1ZyBkZWJ1ZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvYW5zd2VyPgorICAgICAgICAgICAgPC9xYW5kYWVudHJ5PgorICAgICAgICA8L3FhbmRhc2V0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKzwvYXBwZW5kaXg+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby5yc3QKaW5kZXggNDQ3Y2RkYi4uMjFkNDNkNSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKgogSW50cm9kdWN0aW9uCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWVhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbApAQCAtMCwwICsxLDI2MCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdrZXJuZWwtZGV2LWludHJvJz4KKzx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCis8c2VjdGlvbiBpZD0na2VybmVsLWRldi1vdmVydmlldyc+CisgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBSZWdhcmRsZXNzIG9mIGhvdyB5b3UgaW50ZW5kIHRvIG1ha2UgdXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0LAorICAgICAgICBjaGFuY2VzIGFyZSB5b3Ugd2lsbCB3b3JrIHdpdGggdGhlIExpbnV4IGtlcm5lbC4KKyAgICAgICAgVGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgeW91ciBidWlsZCBob3N0IHRvIHN1cHBvcnQKKyAgICAgICAga2VybmVsIGRldmVsb3BtZW50LCBpbnRyb2R1Y2VzIHRoZSBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvY2VzcywKKyAgICAgICAgcHJvdmlkZXMgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gTGludXgga2VybmVsCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICBkZXNjcmliZXMgY29tbW9uIHRhc2tzIHlvdSBjYW4gcGVyZm9ybSB1c2luZyB0aGUga2VybmVsIHRvb2xzLAorICAgICAgICBzaG93cyB5b3UgaG93IHRvIHVzZSB0aGUga2VybmVsIE1ldGFkYXRhIG5lZWRlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgdGhlIGtlcm5lbCBpbnNpZGUgdGhlIFlvY3RvIFByb2plY3QsIGFuZCBwcm92aWRlcyBpbnNpZ2h0IGludG8gaG93CisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gZGV2ZWxvcHMgYW5kIG1haW50YWlucyBZb2N0byBMaW51eCBrZXJuZWwKKyAgICAgICAgR2l0IHJlcG9zaXRvcmllcyBhbmQgTWV0YWRhdGEuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICAgICBFYWNoIFlvY3RvIFByb2plY3QgcmVsZWFzZSBoYXMgYSBzZXQgb2YgWW9jdG8gTGludXgga2VybmVsIHJlY2lwZXMsCisgICAgICAgIHdob3NlIEdpdCByZXBvc2l0b3JpZXMgeW91IGNhbiB2aWV3IGluIHRoZSBZb2N0bworICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiB1bmRlcgorICAgICAgICB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIgaGVhZGluZy4KKyAgICAgICAgTmV3IHJlY2lwZXMgZm9yIHRoZSByZWxlYXNlIHRyYWNrIHRoZSBsYXRlc3QgTGludXgga2VybmVsCisgICAgICAgIHVwc3RyZWFtIGRldmVsb3BtZW50cyBmcm9tCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cua2VybmVsLm9yZyc+PC91bGluaz4gYW5kIGludHJvZHVjZQorICAgICAgICBuZXdseS1zdXBwb3J0ZWQgcGxhdGZvcm1zLgorICAgICAgICBQcmV2aW91cyByZWNpcGVzIGluIHRoZSByZWxlYXNlIGFyZSByZWZyZXNoZWQgYW5kIHN1cHBvcnRlZCBmb3IgYXQKKyAgICAgICAgbGVhc3Qgb25lIGFkZGl0aW9uYWwgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICBBcyB0aGV5IGFsaWduLCB0aGVzZSBwcmV2aW91cyByZWxlYXNlcyBhcmUgdXBkYXRlZCB0byBpbmNsdWRlIHRoZQorICAgICAgICBsYXRlc3QgZnJvbSB0aGUgTG9uZyBUZXJtIFN1cHBvcnQgSW5pdGlhdGl2ZSAoTFRTSSkgcHJvamVjdC4KKyAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IFlvY3RvIExpbnV4IGtlcm5lbHMgYW5kIExUU0kgaW4gdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtYmlnLXBpY3R1cmUnPllvY3RvIFByb2plY3QgS2VybmVsIERldmVsb3BtZW50IGFuZCBNYWludGVuYW5jZTwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEFsc28gaW5jbHVkZWQgaXMgYSBZb2N0byBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgcmVjaXBlCisgICAgICAgICg8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2LmJiPC9maWxlbmFtZT4pIHNob3VsZCB5b3Ugd2FudCB0byB3b3JrCisgICAgICAgIHdpdGggdGhlIHZlcnkgbGF0ZXN0IGluIHVwc3RyZWFtIFlvY3RvIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBhbmQKKyAgICAgICAga2VybmVsIE1ldGFkYXRhIGRldmVsb3BtZW50LgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEZvciBtb3JlIG9uIFlvY3RvIExpbnV4IGtlcm5lbHMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtYmlnLXBpY3R1cmUnPllvY3RvIFByb2plY3QgS2VybmVsIERldmVsb3BtZW50IGFuZCBNYWludGVuYW5jZTwvbGluaz4KKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYWxzbyBwcm92aWRlcyBhIHBvd2VyZnVsIHNldCBvZiBrZXJuZWwKKyAgICAgICAgdG9vbHMgZm9yIG1hbmFnaW5nIFlvY3RvIExpbnV4IGtlcm5lbCBzb3VyY2VzIGFuZCBjb25maWd1cmF0aW9uIGRhdGEuCisgICAgICAgIFlvdSBjYW4gdXNlIHRoZXNlIHRvb2xzIHRvIG1ha2UgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBjaGFuZ2UsCisgICAgICAgIGFwcGx5IG11bHRpcGxlIHBhdGNoZXMsIG9yIHdvcmsgd2l0aCB5b3VyIG93biBrZXJuZWwgc291cmNlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGtlcm5lbCB0b29scyBhbGxvdyB5b3UgdG8gZ2VuZXJhdGUgY29uZmlndXJhdGlvbgorICAgICAgICBmcmFnbWVudHMgdGhhdCBzcGVjaWZ5IG9ubHkgd2hhdCB5b3UgbXVzdCwgYW5kIG5vdGhpbmcgbW9yZS4KKyAgICAgICAgQ29uZmlndXJhdGlvbiBmcmFnbWVudHMgb25seSBuZWVkIHRvIGNvbnRhaW4gdGhlIGhpZ2hlc3QgbGV2ZWwKKyAgICAgICAgdmlzaWJsZSA8ZmlsZW5hbWU+Q09ORklHPC9maWxlbmFtZT4gb3B0aW9ucyBhcyBwcmVzZW50ZWQgYnkgdGhlCisgICAgICAgIFlvY3RvIExpbnV4IGtlcm5lbCA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHN5c3RlbS4KKyAgICAgICAgQ29udHJhc3QgdGhpcyBhZ2FpbnN0IGEgY29tcGxldGUgWW9jdG8gTGludXgga2VybmVsCisgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaW5jbHVkZXMgYWxsIHRoZSBhdXRvbWF0aWNhbGx5CisgICAgICAgIHNlbGVjdGVkIDxmaWxlbmFtZT5DT05GSUc8L2ZpbGVuYW1lPiBvcHRpb25zLgorICAgICAgICBUaGlzIGVmZmljaWVuY3kgcmVkdWNlcyB5b3VyIG1haW50ZW5hbmNlIGVmZm9ydCBhbmQgYWxsb3dzIHlvdQorICAgICAgICB0byBmdXJ0aGVyIHNlcGFyYXRlIHlvdXIgY29uZmlndXJhdGlvbiBpbiB3YXlzIHRoYXQgbWFrZSBzZW5zZSBmb3IKKyAgICAgICAgeW91ciBwcm9qZWN0LgorICAgICAgICBBIGNvbW1vbiBzcGxpdCBzZXBhcmF0ZXMgcG9saWN5IGFuZCBoYXJkd2FyZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGFsbCB5b3VyIGtlcm5lbHMgbWlnaHQgc3VwcG9ydCB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnByb2M8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnN5czwvZmlsZW5hbWU+IGZpbGVzeXN0ZW1zLAorICAgICAgICBidXQgb25seSBzcGVjaWZpYyBib2FyZHMgcmVxdWlyZSBzb3VuZCwgVVNCLCBvciBzcGVjaWZpYyBkcml2ZXJzLgorICAgICAgICBTcGVjaWZ5aW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGluZGl2aWR1YWxseSBhbGxvd3MgeW91IHRvIGFnZ3JlZ2F0ZQorICAgICAgICB0aGVtIHRvZ2V0aGVyIGFzIG5lZWRlZCwgYnV0IG1haW50YWlucyB0aGVtIGluIG9ubHkgb25lIHBsYWNlLgorICAgICAgICBTaW1pbGFyIGxvZ2ljIGFwcGxpZXMgdG8gc2VwYXJhdGluZyBzb3VyY2UgY2hhbmdlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IGRvIG5vdCBtYWludGFpbiB5b3VyIG93biBrZXJuZWwgc291cmNlcyBhbmQgbmVlZCB0byBtYWtlCisgICAgICAgIG9ubHkgbWluaW1hbCBjaGFuZ2VzIHRvIHRoZSBzb3VyY2VzLCB0aGUgcmVsZWFzZWQgcmVjaXBlcyBwcm92aWRlIGEKKyAgICAgICAgdmV0dGVkIGJhc2UgdXBvbiB3aGljaCB0byBsYXllciB5b3VyIGNoYW5nZXMuCisgICAgICAgIERvaW5nIHNvIGFsbG93cyB5b3UgdG8gYmVuZWZpdCBmcm9tIHRoZSBjb250aW51YWwga2VybmVsCisgICAgICAgIGludGVncmF0aW9uIGFuZCB0ZXN0aW5nIHBlcmZvcm1lZCBkdXJpbmcgZGV2ZWxvcG1lbnQgb2YgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmLCBpbnN0ZWFkLCB5b3UgaGF2ZSBhIHZlcnkgc3BlY2lmaWMgTGludXgga2VybmVsIHNvdXJjZSB0cmVlCisgICAgICAgIGFuZCBhcmUgdW5hYmxlIHRvIGFsaWduIHdpdGggb25lIG9mIHRoZSBvZmZpY2lhbCBZb2N0byBMaW51eCBrZXJuZWwKKyAgICAgICAgcmVjaXBlcywgYW4gYWx0ZXJuYXRpdmUgZXhpc3RzIGJ5IHdoaWNoIHlvdSBjYW4gdXNlIHRoZSBZb2N0bworICAgICAgICBQcm9qZWN0IExpbnV4IGtlcm5lbCB0b29scyB3aXRoIHlvdXIgb3duIGtlcm5lbCBzb3VyY2VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgbWFudWFsIHByb3ZpZGVzIGluc3RydWN0aW9ucyBmb3IgY29tcGxldGluZworICAgICAgICBzcGVjaWZpYyBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgdGFza3MuCisgICAgICAgIFRoZXNlIGluc3RydWN0aW9ucyBhc3N1bWUgeW91IGFyZSBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL29wZW5lbWJlZGRlZC5vcmcvd2lraS9CaXRiYWtlJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgcmVjaXBlcyBhbmQgYmFzaWMgb3Blbi1zb3VyY2UgZGV2ZWxvcG1lbnQgdG9vbHMuCisgICAgICAgIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uY2VwdHMgd2lsbCBmYWNpbGl0YXRlIHRoZSBwcm9jZXNzIG9mIHdvcmtpbmcKKyAgICAgICAgd2l0aCB0aGUga2VybmVsIHJlY2lwZXMuCisgICAgICAgIElmIHlvdSBmaW5kIHlvdSBuZWVkIHNvbWUgYWRkaXRpb25hbCBiYWNrZ3JvdW5kLCBwbGVhc2UgYmUgc3VyZSB0bworICAgICAgICByZXZpZXcgYW5kIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPgorICAgICAgICAgICAgICAgIGRvY3VtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya2Zsb3c8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+S2VybmVsIE1vZGlmaWNhdGlvbiBXb3JrZmxvdzwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+CisgICAgPHRpdGxlPktlcm5lbCBNb2RpZmljYXRpb24gV29ya2Zsb3c8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEtlcm5lbCBtb2RpZmljYXRpb24gaW52b2x2ZXMgY2hhbmdpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsLAorICAgICAgICB3aGljaCBjb3VsZCBpbnZvbHZlIGNoYW5naW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcyB3ZWxsIGFzIGFkZGluZworICAgICAgICBuZXcga2VybmVsIHJlY2lwZXMuCisgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBjYW4gYmUgYWRkZWQgaW4gdGhlIGZvcm0gb2YgY29uZmlndXJhdGlvbgorICAgICAgICBmcmFnbWVudHMsIHdoaWxlIHJlY2lwZSBtb2RpZmljYXRpb24gY29tZXMgdGhyb3VnaCB0aGUga2VybmVsJ3MKKyAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4gYXJlYSBpbiBhIGtlcm5lbCBsYXllciB5b3UgY3JlYXRlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIGtlcm5lbCBtb2RpZmljYXRpb24gd29ya2Zsb3cuCisgICAgICAgIFRoZSBpbGx1c3RyYXRpb24gYW5kIGFjY29tcGFueWluZyBsaXN0IHByb3ZpZGUgZ2VuZXJhbCBpbmZvcm1hdGlvbgorICAgICAgICBhbmQgcmVmZXJlbmNlcyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmciCisgICAgICAgICAgICB3aWR0aD0iOWluIiBkZXB0aD0iNWluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorCisKKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIFlvdXIgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW0gdG8gU3VwcG9ydAorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXN0YXJ0Jz5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIGZvciBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFuZCBhbiBleHRlbnNpYmxlIFNESyBmb3Iga2VybmVsIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRyYWRpdGlvbmFsIGtlcm5lbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIG1ldGhvZHMgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBFaXRoZXIgd2F5LCB0aGVyZSBhcmUgc3RlcHMgeW91IG5lZWQgdG8gdGFrZSB0byBnZXQgdGhlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgcmVhZHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBhbmQgdGhlIGVTREsgcmVxdWlyZXMKKyAgICAgICAgICAgICAgICB0aGF0IHlvdSBoYXZlIGEgY2xlYW4gYnVpbGQgb2YgdGhlIGltYWdlIGFuZCB0aGF0IHlvdSBhcmUKKyAgICAgICAgICAgICAgICBzZXQgdXAgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZVNESy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LXRvLWRldmVsb3AtdXNpbmctZGV2dG9vbCc+R2V0dGluZyBSZWFkeSB0byBEZXZlbG9wIFVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IHJlcXVpcmVzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgaGF2ZSB0aGUga2VybmVsIHNvdXJjZSBhdmFpbGFibGUgaW4gYW4gaXNvbGF0ZWQgbG9jYWwgR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBDaGFuZ2VzIHRvIHRoZSBLZXJuZWwgU291cmNlIENvZGUgaWYKKyAgICAgICAgICAgICAgICBhcHBsaWNhYmxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgTW9kaWZ5aW5nIHRoZSBrZXJuZWwgZG9lcyBub3QgYWx3YXlzIG1lYW4gZGlyZWN0bHkKKyAgICAgICAgICAgICAgICBjaGFuZ2luZyBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGhhdmUgdG8gZG8gdGhpcywgeW91IG1ha2UgdGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgZmlsZXMgaW4gdGhlIGVTREsncyBCdWlsZCBEaXJlY3RvcnkgaWYgeW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQsIHlvdQorICAgICAgICAgICAgICAgIGVkaXQgdGhlIHNvdXJjZSBmaWxlcyBpbiB0aGUga2VybmVsJ3MgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIEtlcm5lbCBDb25maWd1cmF0aW9uIENoYW5nZXMgaWYKKyAgICAgICAgICAgICAgICBBcHBsaWNhYmxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSWYgeW91ciBzaXR1YXRpb24gY2FsbHMgZm9yIGNoYW5naW5nIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctbWVudWNvbmZpZyc+PGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggYWxsb3dzIHlvdSB0byBpbnRlcmFjdGl2ZWx5IGRldmVsb3AgYW5kIHRlc3QgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHlvdSBhcmUgbWFraW5nIHRvIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgU2F2aW5nIGNoYW5nZXMgeW91IG1ha2Ugd2l0aCA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdXBkYXRlcyB0aGUga2VybmVsJ3MgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5XYXJuaW5nPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIHJlc2lzdCB0aGUgdGVtcHRhdGlvbiB0byBkaXJlY3RseSBlZGl0IGFuCisgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSBhbW9uZyB0aGUgc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbywgY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcmVnZW5lcmF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHRoZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgY2hhbmdlcyBtYWRlIHVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBhbmQgeW91IGhhdmUgc2F2ZWQgdGhlbSwgeW91IGNhbiBkaXJlY3RseSBjb21wYXJlIHRoZQorICAgICAgICAgICAgICAgIHJlc3VsdGluZyA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYWdhaW5zdCBhbgorICAgICAgICAgICAgICAgIGV4aXN0aW5nIG9yaWdpbmFsIGFuZCBnYXRoZXIgdGhvc2UgY2hhbmdlcyBpbnRvIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5jb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGU8L2xpbms+CisgICAgICAgICAgICAgICAgdG8gYmUgcmVmZXJlbmNlZCBmcm9tIHdpdGhpbiB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5BZGRpdGlvbmFsbHksIGlmIHlvdSBhcmUgd29ya2luZyBpbiBhIEJTUCBsYXllcgorICAgICAgICAgICAgICAgIGFuZCBuZWVkIHRvIG1vZGlmeSB0aGUgQlNQJ3Mga2VybmVsJ3MgY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgV2l0aCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZWJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2UgYXBwbGllcyB5b3VyIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgdGFyZ2V0IGhhcmR3YXJlLCB5b3UgY2FuIHZlcmlmeSB5b3VyIGNoYW5nZXMKKyAgICAgICAgICAgICAgICBvbiBhY3R1YWwgaGFyZHdhcmUgb3IgcGVyaGFwcyBRRU1VLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZGV2ZWxvcGVyJ3MgZ3VpZGUgY292ZXJzIGNvbW1vbiB0YXNrcyB0eXBpY2FsbHkKKyAgICAgICAgdXNlZCBkdXJpbmcga2VybmVsIGRldmVsb3BtZW50LCBhZHZhbmNlZCBNZXRhZGF0YSB1c2FnZSwgYW5kIFlvY3RvIExpbnV4CisgICAgICAgIGtlcm5lbCBtYWludGVuYW5jZSBjb25jZXB0cy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC5yc3QKaW5kZXggMTc4ODMzMi4uNTUxNGRhYyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LW1haW50LWFwcHgucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioKIEtlcm5lbCBNYWludGVuYW5jZQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5YzdjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwKQEAgLTAsMCArMSwzNTcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8YXBwZW5kaXggaWQ9J2tlcm5lbC1kZXYtbWFpbnQtYXBweCc+Cis8dGl0bGU+S2VybmVsIE1haW50ZW5hbmNlPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSd0cmVlLWNvbnN0cnVjdGlvbic+CisgICAgICAgIDx0aXRsZT5UcmVlIENvbnN0cnVjdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNvbnN0cnVjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwKKyAgICAgICAgICAgIHNvdXJjZSByZXBvc2l0b3JpZXMgYXMgYWNjb21wbGlzaGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdG8KKyAgICAgICAgICAgIGNyZWF0ZSBZb2N0byBMaW51eCBrZXJuZWwgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgVGhlc2Uga2VybmVsIHJlcG9zaXRvcmllcyBhcmUgZm91bmQgdW5kZXIgdGhlIGhlYWRpbmcgIllvY3RvIExpbnV4CisgICAgICAgICAgICBLZXJuZWwiIGF0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPiZZT0NUT19HSVRfVVJMOzwvdWxpbms+CisgICAgICAgICAgICBhbmQgYXJlIHNoaXBwZWQgYXMgcGFydCBvZiBhIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgIFRoZSB0ZWFtIGNyZWF0ZXMgdGhlc2UgcmVwb3NpdG9yaWVzIGJ5IGNvbXBpbGluZyBhbmQgZXhlY3V0aW5nIHRoZQorICAgICAgICAgICAgc2V0IG9mIGZlYXR1cmUgZGVzY3JpcHRpb25zIGZvciBldmVyeSBCU1AgYW5kIGZlYXR1cmUgaW4gdGhlCisgICAgICAgICAgICBwcm9kdWN0LgorICAgICAgICAgICAgVGhvc2UgZmVhdHVyZSBkZXNjcmlwdGlvbnMgbGlzdCBhbGwgbmVjZXNzYXJ5IHBhdGNoZXMsCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucywgYnJhbmNoZXMsIHRhZ3MsIGFuZCBmZWF0dXJlIGRpdmlzaW9ucyBmb3VuZCBpbiBhCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwuCisgICAgICAgICAgICBUaHVzLCB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwgcmVwb3NpdG9yeSAob3IgdHJlZSkgYW5kCisgICAgICAgICAgICBhY2NvbXBhbnlpbmcgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gYXJlIGJ1aWx0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZXhpc3RlbmNlIG9mIHRoZXNlIHJlcG9zaXRvcmllcyBhbGxvdyB5b3UgdG8gYWNjZXNzIGFuZCBjbG9uZSBhCisgICAgICAgICAgICBwYXJ0aWN1bGFyIFlvY3RvIFByb2plY3QgTGludXgga2VybmVsIHJlcG9zaXRvcnkgYW5kIHVzZSBpdCB0bworICAgICAgICAgICAgYnVpbGQgaW1hZ2VzIGJhc2VkIG9uIHRoZWlyIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBmaWxlcyB1c2VkIHRvIGRlc2NyaWJlIGFsbCB0aGUgdmFsaWQgZmVhdHVyZXMgYW5kCisgICAgICAgICAgICBCU1BzIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbCBpbiBhbnkgY2xvbmUgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IExpbnV4IGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yeSBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgdHJlZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBjbG9uZSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgYmFzZWxpbmUgTGludXgga2VybmVsIHRoYXQgYnJhbmNoZXMgb2ZmCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgub3JnPC9maWxlbmFtZT4gdmVyc2lvbiA0LjEyIGFuZCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiwgd2hpY2ggY29udGFpbnMgc3RvcmVzIG9mCisgICAgICAgICAgICBrZXJuZWwgTWV0YWRhdGE6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIKKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgta2VybmVsLWNhY2hlCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YKKyAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbCBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ByZXBhcmluZy10aGUtYnVpbGQtaG9zdC10by13b3JrLW9uLXRoZS1rZXJuZWwnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjbG9uZWQgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSBhbmQgdGhlCisgICAgICAgICAgICBjYWNoZSBvZiBNZXRhZGF0YSBvbiB5b3VyIGxvY2FsIG1hY2hpbmUsIHlvdSBjYW4gZGlzY292ZXIgdGhlCisgICAgICAgICAgICBicmFuY2hlcyB0aGF0IGFyZSBhdmFpbGFibGUgaW4gdGhlIHJlcG9zaXRvcnkgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgR2l0IGNvbW1hbmQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGJyYW5jaCAtYQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQ2hlY2tpbmcgb3V0IGEgYnJhbmNoIGFsbG93cyB5b3UgdG8gd29yayB3aXRoIGEgcGFydGljdWxhcgorICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgY2hlY2sgb3V0IHRoZQorICAgICAgICAgICAgInN0YW5kYXJkL2JlYWdsZWJvYXJkIiBicmFuY2ggb2YgdGhlIFlvY3RvIExpbnV4IGtlcm5lbCByZXBvc2l0b3J5CisgICAgICAgICAgICBhbmQgdGhlICJ5b2N0by00LjEyIiBicmFuY2ggb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L2xpbnV4LXlvY3RvLTQuMTIKKyAgICAgJCBnaXQgY2hlY2tvdXQgLWIgbXkta2VybmVsLTQuMTIgcmVtb3Rlcy9vcmlnaW4vc3RhbmRhcmQvYmVhZ2xlYm9hcmQKKyAgICAgJCBjZCB+L2xpbnV4LWtlcm5lbC1jYWNoZQorICAgICAkIGdpdCBjaGVja291dCAtYiBteS00LjEyLW1ldGFkYXRhIHJlbW90ZXMvb3JpZ2luL3lvY3RvLTQuMTIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEJyYW5jaGVzIGluIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGNvcnJlc3BvbmQgdG8gWW9jdG8gTGludXgga2VybmVsIHZlcnNpb25zCisgICAgICAgICAgICAgICAgKGUuZy4gInlvY3RvLTQuMTIiLCAieW9jdG8tNC4xMCIsICJ5b2N0by00LjkiLCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBjaGVja2VkIG91dCBhbmQgc3dpdGNoZWQgdG8gYXBwcm9wcmlhdGUgYnJhbmNoZXMsCisgICAgICAgICAgICB5b3UgY2FuIHNlZSBhIHNuYXBzaG90IG9mIGFsbCB0aGUga2VybmVsIHNvdXJjZSBmaWxlcyB1c2VkIHRvCisgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoYXQgcGFydGljdWxhciBZb2N0byBMaW51eCBrZXJuZWwgZm9yIGEKKyAgICAgICAgICAgIHBhcnRpY3VsYXIgYm9hcmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHNlZSB0aGUgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciBhIHBhcnRpY3VsYXIgWW9jdG8KKyAgICAgICAgICAgIExpbnV4IGtlcm5lbCwgeW91IG5lZWQgdG8gZXhhbWluZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCwgYnJhbmNoZXMgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeSBjb3JyZXNwb25kIHRvCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwgdmVyc2lvbnMgKGUuZy4gPGZpbGVuYW1lPnlvY3RvLTQuMTI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBCcmFuY2hlcyBjb250YWluIGRlc2NyaXB0aW9ucyBpbiB0aGUgZm9ybSBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCBob3dldmVyLCB0aGF0IGJyb3dzaW5nIHlvdXIgbG9jYWwKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGZvciBmZWF0dXJlCisgICAgICAgICAgICBkZXNjcmlwdGlvbnMgYW5kIHBhdGNoZXMgaXMgbm90IGFuIGVmZmVjdGl2ZSB3YXkgdG8gZGV0ZXJtaW5lIHdoYXQKKyAgICAgICAgICAgIGlzIGluIGEgcGFydGljdWxhciBrZXJuZWwgYnJhbmNoLgorICAgICAgICAgICAgSW5zdGVhZCwgeW91IHNob3VsZCB1c2UgR2l0IGRpcmVjdGx5IHRvIGRpc2NvdmVyIHRoZSBjaGFuZ2VzIGluCisgICAgICAgICAgICBhIGJyYW5jaC4KKyAgICAgICAgICAgIFVzaW5nIEdpdCBpcyBhbiBlZmZpY2llbnQgYW5kIGZsZXhpYmxlIHdheSB0byBpbnNwZWN0IGNoYW5nZXMgdG8KKyAgICAgICAgICAgIHRoZSBrZXJuZWwuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBHcm91bmQgdXAgcmVjb25zdHJ1Y3Rpb24gb2YgdGhlIGNvbXBsZXRlIGtlcm5lbCB0cmVlIGlzIGFuCisgICAgICAgICAgICAgICAgYWN0aW9uIG9ubHkgdGFrZW4gYnkgdGhlIFlvY3RvIFByb2plY3QgdGVhbSBkdXJpbmcgYW4gYWN0aXZlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgY3ljbGUuCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSwgeW91IGFyZQorICAgICAgICAgICAgICAgIHNpbXBseSBtYWtpbmcgaXQgZWZmaWNpZW50bHkgYXZhaWxhYmxlIGZvciBidWlsZGluZyBhbmQKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBkZXNjcmliZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgVGVhbSBjb25zdHJ1Y3RzIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgIChvciB0cmVlKSBmb3VuZCBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPiBnaXZlbiB0aGUKKyAgICAgICAgICAgIGludHJvZHVjdGlvbiBvZiBhIG5ldyB0b3AtbGV2ZWwga2VybmVsIGZlYXR1cmUgb3IgQlNQLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhY3Rpb25zIGVmZmVjdGl2ZWx5IHByb3ZpZGUgdGhlIE1ldGFkYXRhCisgICAgICAgICAgICBhbmQgY3JlYXRlIHRoZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5ldyBmZWF0dXJlLCBwYXRjaCwgb3IgQlNQOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhc3MgRmVhdHVyZSB0byB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzdWJzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGZlYXR1cmUgaXMgYSBCU1AgZm9yIGEgcGFydGljdWxhciBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9jYXRlIEZlYXR1cmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgdGhhdCBkZXNjcmliZXMgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIGlzIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgc2VhcmNoaW5nIHRoZXNlIHN5c3RlbSBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW4tdHJlZSBrZXJuZWwtY2FjaGUgZGlyZWN0b3JpZXMsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlL3RyZWUvYnNwJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgb3JnYW5pemVkIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2knPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZWFzIHBvaW50ZWQgdG8gYnkgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgZm91bmQgaW4ga2VybmVsIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIEZvciBhIHR5cGljYWwgYnVpbGQsIHRoZSB0YXJnZXQgb2YgdGhlIHNlYXJjaCBpcyBhCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgZGVzY3JpcHRpb24gaW4gYW4gPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHdob3NlIG5hbWUgZm9sbG93cyB0aGlzIGZvcm1hdCAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS1zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJlYWdsZWJvbmUtcHJlZW1wdC1ydC5zY2M8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4cGFuZCBGZWF0dXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgbG9jYXRlZCwgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb24gaXMgZWl0aGVyIGV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgIGludG8gYSBzaW1wbGUgc2NyaXB0IG9mIGFjdGlvbnMsIG9yIGludG8gYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVudCBzY3JpcHQgdGhhdCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHNoaXBwZWQKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BcHBlbmQgRXh0cmEgRmVhdHVyZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRXh0cmEgZmVhdHVyZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSB0b3AtbGV2ZWwgZmVhdHVyZQorICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmVhdHVyZXMgY2FuIGNvbWUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9GRUFUVVJFUyc+PGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9jYXRlLCBFeHBhbmQsIGFuZCBBcHBlbmQgRWFjaCBGZWF0dXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEVhY2ggZXh0cmEgZmVhdHVyZSBpcyBsb2NhdGVkLCBleHBhbmRlZCBhbmQgYXBwZW5kZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIHNjcmlwdCBhcyBkZXNjcmliZWQgaW4gc3RlcCB0aHJlZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSB0aGUgU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgdG8gcHJvZHVjZSBmaWxlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIGFwcHJvcHJpYXRlIGRpcmVjdG9yaWVzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgYXJlIGRlc2NyaXB0aW9ucyBvZiBhbGwgdGhlIGJyYW5jaGVzLCB0YWdzLAorICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgYXBwbGllZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgYmFzZSBHaXQgcmVwb3NpdG9yeSB0byBjb21wbGV0ZWx5IGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIChidWlsZCkgYnJhbmNoIGZvciB0aGUgbmV3IEJTUCBvciBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSBCYXNlIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgcmVwb3NpdG9yeSBpcyBjbG9uZWQsIGFuZCB0aGUgYWN0aW9ucworICAgICAgICAgICAgICAgICAgICBsaXN0ZWQgaW4gdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBhcmUgYXBwbGllZCB0byB0aGUgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGVyZm9ybSBDbGVhbnVwOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBHaXQgcmVwb3NpdG9yaWVzIGFyZSBsZWZ0IHdpdGggdGhlIGRlc2lyZWQgYnJhbmNoZXMKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCBvdXQgYW5kIGFueSByZXF1aXJlZCBicmFuY2hpbmcsIHBhdGNoaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICB0YWdnaW5nIGhhcyBiZWVuIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUga2VybmVsIHRyZWUgYW5kIGNhY2hlIGFyZSByZWFkeSBmb3IgZGV2ZWxvcGVyIGNvbnN1bXB0aW9uIHRvCisgICAgICAgICAgICBiZSBsb2NhbGx5IGNsb25lZCwgY29uZmlndXJlZCwgYW5kIGJ1aWx0IGludG8gYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBrZXJuZWwgc3BlY2lmaWMgdG8gc29tZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFkZHMgdG8gdGhlIGtlcm5lbCBhcyBzaGlwcGVkIHdpdGggdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgYWRkLW9ucyBhbmQgY29uZmlndXJhdGlvbiBkYXRhIGFyZSBhcHBsaWVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZW5kIG9mIGFuIGV4aXN0aW5nIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmdWxsIHJlcG9zaXRvcnkgZ2VuZXJhdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yaWVzIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGUgY29tYmluYXRpb24gb2YgYWxsIHN1cHBvcnRlZCBib2FyZHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGVjaG5pcXVlIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdXNlcyBpcyBmbGV4aWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFsbG93cyBmb3Igc2VhbWxlc3MgYmxlbmRpbmcgb2YgYW4gaW1tdXRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IHdpdGggYWRkaXRpb25hbCBwYXRjaGVzIHNwZWNpZmljIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxveW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgYWRkaXRpb25zIHRvIHRoZSBrZXJuZWwgYmVjb21lIGFuIGludGVncmF0ZWQgcGFydAorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGJyYW5jaGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmdWxsIGtlcm5lbCB0cmVlIHRoYXQgeW91IHNlZSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIHRocm91Z2ggcmVwZWF0aW5nIHRoZSBhYm92ZSBzdGVwcyBmb3IgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBCU1BzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGVuZCByZXN1bHQgaXMgYSBicmFuY2hlZCwgY2xlYW4gaGlzdG9yeSB0cmVlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VzIHVwIHRoZSBrZXJuZWwgZm9yIGEgZ2l2ZW4gcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBzY3JpcHQgKDxmaWxlbmFtZT5rZ2l0LXNjYzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kveW9jdG8ta2VybmVsLXRvb2xzL3RyZWUvdG9vbHMnPjxmaWxlbmFtZT55b2N0by1rZXJuZWwtdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgZnVsbCBrZXJuZWwgdHJlZSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHN0ZXBzIHRoYXQgQml0QmFrZSB1c2VzIHdoZW4gaXQgYnVpbGRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2J1aWxkLXN0cmF0ZWd5Jz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkIFN0cmF0ZWd5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2xvbmVkIGEgWW9jdG8gTGludXgga2VybmVsIHJlcG9zaXRvcnkgYW5kIHRoZQorICAgICAgICAgICAgY2FjaGUgcmVwb3NpdG9yeSAoPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KSBvbnRvCisgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSwgeW91IGNhbiBjb25zaWRlciB0aGUgY29tcGlsYXRpb24gcGhhc2UKKyAgICAgICAgICAgIG9mIGtlcm5lbCBkZXZlbG9wbWVudCwgd2hpY2ggaXMgYnVpbGRpbmcgYSBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICBTb21lIHByZXJlcXVpc2l0ZXMgZXhpc3QgdGhhdCBhcmUgdmFsaWRhdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzCisgICAgICAgICAgICBiZWZvcmUgY29tcGlsYXRpb24gc3RhcnRzOgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgcG9pbnRzIHRvIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQSBCU1AgYnVpbGQgYnJhbmNoIHdpdGggTWV0YWRhdGEgZXhpc3RzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggaXMgYmFzZWQgb24gdGhlIFlvY3RvIExpbnV4IGtlcm5lbCB2ZXJzaW9uIGFuZAorICAgICAgICAgICAgICAgIGhhcyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgZ3JvdXBlZCB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlL2JzcDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAgICAgICAgICAgICAgICBCZWFnbGVCb25lIEJvYXJkIGFzc3VtaW5nIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCByZXNpZGUgaW4gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGFyZWEgb2YgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2JlYWdsZWJvbmUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB0aGUgInlvY3RvLTQuMTIiIGJyYW5jaCBpcworICAgICAgICAgICAgICAgICAgICBjaGVja2VkIG91dCBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG1ha2VzIHN1cmUgdGhlc2UgY29uZGl0aW9ucyBleGlzdAorICAgICAgICAgICAgYmVmb3JlIGF0dGVtcHRpbmcgY29tcGlsYXRpb24uCisgICAgICAgICAgICBPdGhlciBtZWFucywgaG93ZXZlciwgZG8gZXhpc3QsIHN1Y2ggYXMgYXMgYm9vdHN0cmFwcGluZyBhIEJTUC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVmb3JlIGJ1aWxkaW5nIGEga2VybmVsLCB0aGUgYnVpbGQgcHJvY2VzcyB2ZXJpZmllcyB0aGUgdHJlZQorICAgICAgICAgICAgYW5kIGNvbmZpZ3VyZXMgdGhlIGtlcm5lbCBieSBwcm9jZXNzaW5nIGFsbCBvZiB0aGUKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gImZyYWdtZW50cyIgc3BlY2lmaWVkIGJ5IGZlYXR1cmUgZGVzY3JpcHRpb25zCisgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgIEFzIHRoZSBmZWF0dXJlcyBhcmUgY29tcGlsZWQsIGFzc29jaWF0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGZyYWdtZW50cyBhcmUgbm90ZWQgYW5kIHJlY29yZGVkIGluIHRoZSBzZXJpZXMgb2YgZGlyZWN0b3JpZXMKKyAgICAgICAgICAgIGluIHRoZWlyIGNvbXBpbGF0aW9uIG9yZGVyLgorICAgICAgICAgICAgVGhlIGZyYWdtZW50cyBhcmUgbWlncmF0ZWQsIHByZS1wcm9jZXNzZWQgYW5kIHBhc3NlZCB0byB0aGUKKyAgICAgICAgICAgIExpbnV4IEtlcm5lbCBDb25maWd1cmF0aW9uIHN1YnN5c3RlbSAoPGZpbGVuYW1lPmxrYzwvZmlsZW5hbWU+KSBhcworICAgICAgICAgICAgcmF3IGlucHV0IGluIHRoZSBmb3JtIG9mIGEgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sa2M8L2ZpbGVuYW1lPiB1c2VzIGl0cyBvd24gaW50ZXJuYWwgZGVwZW5kZW5jeQorICAgICAgICAgICAgY29uc3RyYWludHMgdG8gZG8gdGhlIGZpbmFsIHByb2Nlc3Npbmcgb2YgdGhhdCBpbmZvcm1hdGlvbiBhbmQKKyAgICAgICAgICAgIGdlbmVyYXRlcyB0aGUgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaXMgdXNlZAorICAgICAgICAgICAgZHVyaW5nIGNvbXBpbGF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2luZyB0aGUgYm9hcmQncyBhcmNoaXRlY3R1cmUgYW5kIG90aGVyIHJlbGV2YW50IHZhbHVlcyBmcm9tCisgICAgICAgICAgICB0aGUgYm9hcmQncyB0ZW1wbGF0ZSwga2VybmVsIGNvbXBpbGF0aW9uIGlzIHN0YXJ0ZWQgYW5kIGEga2VybmVsCisgICAgICAgICAgICBpbWFnZSBpcyBwcm9kdWNlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG90aGVyIHRoaW5nIHRoYXQgeW91IG5vdGljZSBvbmNlIHlvdSBjb25maWd1cmUgYSBrZXJuZWwgaXMgdGhhdAorICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgZ2VuZXJhdGVzIGEgYnVpbGQgdHJlZSB0aGF0IGlzIHNlcGFyYXRlIGZyb20KKyAgICAgICAgICAgIHlvdXIga2VybmVsJ3MgbG9jYWwgR2l0IHNvdXJjZSByZXBvc2l0b3J5IHRyZWUuCisgICAgICAgICAgICBUaGlzIGJ1aWxkIHRyZWUgaGFzIGEgbmFtZSB0aGF0IHVzZXMgdGhlIGZvbGxvd2luZyBmb3JtLCB3aGVyZQorICAgICAgICAgICAgPGZpbGVuYW1lPiR7TUFDSElORX08L2ZpbGVuYW1lPiBpcyB0aGUgbWV0YWRhdGEgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgIG1hY2hpbmUgKEJTUCkgYW5kICJrZXJuZWxfdHlwZSIgaXMgb25lIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBzdXBwb3J0ZWQga2VybmVsIHR5cGVzIChlLmcuICJzdGFuZGFyZCIpOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGxpbnV4LSR7TUFDSElORX0tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4tYnVpbGQKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZXhpc3Rpbmcgc3VwcG9ydCBpbiB0aGUgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiB0cmVlCisgICAgICAgICAgICBhY2hpZXZlcyB0aGlzIGRlZmF1bHQgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBtZWFucyB0aGF0IGFsbCB0aGUgZ2VuZXJhdGVkIGZpbGVzIGZvciBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgIG1hY2hpbmUgb3IgQlNQIGFyZSBub3cgaW4gdGhlIGJ1aWxkIHRyZWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgVGhlIGZpbGVzIGluY2x1ZGUgdGhlIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgIGFsbCB0aGUgPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMsIHRoZSA8ZmlsZW5hbWU+LmE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZXMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgIFNpbmNlIGVhY2ggbWFjaGluZSBvciBCU1AgaGFzIGl0cyBvd24gc2VwYXJhdGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIGluIGl0cyBvd24gc2VwYXJhdGUgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiBlYXNpbHkKKyAgICAgICAgICAgIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBidWlsZHMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2FwcGVuZGl4PgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LXN0eWxlLmNzcyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtc3R5bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNmZiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LXN0eWxlLmNzcwpAQCAtMCwwICsxLDk5MSBAQAorLyoKKworICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSworCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMva2VybmVsLWRldi10aXRsZS5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7CisgIG1hcmdpbi10b3A6IC0yNTZweDsKKyAgcGFkZGluZy1yaWdodDogNTBweDsKKyAgbWFyZ2luLWxlZnQ6IDBweDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7CisgIHdpZHRoOiA3NDBweDsKK30KKworaDMuYXV0aG9yIHsKKyAgbWFyZ2luOiAwZW0gMG1lIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zaXplOiAxMDAlOworICBjb2xvcjogIzMzMzsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5hdXRob3IgdHQuZW1haWwgeworICBmb250LXNpemU6IDY2JTsKK30KKworLnRpdGxlcGFnZSBociB7CisgIHdpZHRoOiAwZW07CisgIGNsZWFyOiBib3RoOworfQorCisucmV2aGlzdG9yeSB7CisgIHBhZGRpbmctdG9wOiAyZW07CisgIGNsZWFyOiBib3RoOworfQorCisudG9jLAorLmxpc3Qtb2YtdGFibGVzLAorLmxpc3Qtb2YtZXhhbXBsZXMsCisubGlzdC1vZi1maWd1cmVzIHsKKyAgcGFkZGluZzogMS4zM2VtIDBlbSAyLjVlbSAwZW07CisgIGNvbG9yOiAjMDA1NTdEOworfQorCisudG9jIHAsCisubGlzdC1vZi10YWJsZXMgcCwKKy5saXN0LW9mLWZpZ3VyZXMgcCwKKy5saXN0LW9mLWV4YW1wbGVzIHAgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMC4zZW07CisgIG1hcmdpbjogMS41ZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgcCBiLAorLmxpc3Qtb2YtdGFibGVzIHAgYiwKKy5saXN0LW9mLWZpZ3VyZXMgcCBiLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCBieworICBmb250LXNpemU6IDEwMC4wJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy50b2MgZGwsCisubGlzdC1vZi10YWJsZXMgZGwsCisubGlzdC1vZi1maWd1cmVzIGRsLAorLmxpc3Qtb2YtZXhhbXBsZXMgZGwgeworICBtYXJnaW46IDBlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZHQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGRkIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAyLjZlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuZ2xvc3NhcnkgZGwsCitkaXYudmFyaWFibGVsaXN0IGRsIHsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgd2lkdGg6IDIwZW07CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCisudmFyaWFibGVsaXN0IGRsIGR0IHsKKyAgbWFyZ2luLXRvcDogMC41ZW07Cit9CisKKy5nbG9zc2FyeSBkbCBkZCwKKy52YXJpYWJsZWxpc3QgZGwgZGQgeworICBtYXJnaW4tdG9wOiAtMWVtOworICBtYXJnaW4tbGVmdDogMjUuNWVtOworfQorCisuZ2xvc3NhcnkgZGQgcCwKKy52YXJpYWJsZWxpc3QgZGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK2RpdiBwLmNvcHlyaWdodCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK2Rpdi5sZWdhbG5vdGljZSBwLmxlZ2Fsbm90aWNlLXRpdGxlIHsKKyAgbWFyZ2luLWJvdHRvbTogMGVtOworfQorCitwIHsKKyAgbGluZS1oZWlnaHQ6IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisKK30KKworZGwgeworICBwYWRkaW5nLXRvcDogMGVtOworfQorCitociB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCisKKy5tZWRpYW9iamVjdCwKKy5tZWRpYW9iamVjdGNvIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitpbWcgeworICBib3JkZXI6IG5vbmU7Cit9CisKK3VsIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMS41ZW07Cit9CisKK3VsIGxpIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCit1bCBsaSBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwordGFibGUgeworICB3aWR0aCA6MTAwJTsKK30KKwordGggeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCitwIGFbaWRdIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDBweDsKKyAgZGlzcGxheTogaW5saW5lOworICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworfQorCithIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGNvbG9yOiAjNDQ0OworfQorCitwcmUgeworICAgIG92ZXJmbG93OiBhdXRvOworfQorCithOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIC8qZm9udC13ZWlnaHQ6IGJvbGQ7Ki8KK30KKworLyogVGhpcyBzdHlsZSBkZWZpbmVzIGhvdyB0aGUgcGVybWFsaW5rIGNoYXJhY3RlcgorICAgYXBwZWFycyBieSBpdHNlbGYgYW5kIHdoZW4gaG92ZXJlZCBvdmVyIHdpdGgKKyAgIHRoZSBtb3VzZS4gKi8KKworW2FsdD0nUGVybWFsaW5rJ10geyBjb2xvcjogI2VlZTsgfQorW2FsdD0nUGVybWFsaW5rJ106aG92ZXIgeyBjb2xvcjogYmxhY2s7IH0KKworCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUgeworICBtYXJnaW46IDFlbSAwZW07CisgIHBhZGRpbmc6IDFlbTsKKyAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWxleGFtcGxlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbHRhYmxlIHAudGl0bGUgYiwKK2Rpdi5maWd1cmUgcC50aXRsZSBiLAorZGl2LmV4YW1wbGUgcC50aXRsZSBiLAorZGl2LnRhYmxlIHAudGl0bGUgYnsKKyAgICBwYWRkaW5nLXRvcDogMGVtOworICAgIG1hcmdpbi10b3A6IDBlbTsKKyAgICBmb250LXNpemU6IDEwMCU7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKworLm1lZGlhb2JqZWN0IC5jYXB0aW9uLAorLm1lZGlhb2JqZWN0IC5jYXB0aW9uIHAgIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZy10b3A6IDAuNWVtOworICBwYWRkaW5nLWJvdHRvbTogMC41ZW07Cit9CisKKy5lcGlncmFwaCB7CisgIHBhZGRpbmctbGVmdDogNTUlOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKy5lcGlncmFwaCBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmVwaWdyYXBoIC5xdW90ZSB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKy5lcGlncmFwaCAuYXR0cmlidXRpb24geworICBmb250LXN0eWxlOiBub3JtYWw7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitzcGFuLmFwcGxpY2F0aW9uIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucHJvZ3JhbWxpc3RpbmcgeworICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICBmb250LXNpemU6IDgwJTsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgbWFyZ2luOiAxLjMzZW0gMGVtOworICBwYWRkaW5nOiAxLjMzZW07Cit9CisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBtYXJnaW4tdG9wOiAxZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKKworfQorCisvKiBmb3JjZSBmdWxsIHdpZHRoIG9mIHRhYmxlIHdpdGhpbiBkaXYgKi8KKy50aXAgdGFibGUsCisud2FybmluZyB0YWJsZSwKKy5jYXV0aW9uIHRhYmxlLAorLm5vdGUgdGFibGUgeworICBib3JkZXI6IG5vbmU7CisgIHdpZHRoOiAxMDAlOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBwYWRkaW5nOiAwLjhlbSAwLjBlbSAwLjBlbSAwLjBlbTsKKyAgbWFyZ2luIDogMGVtIDBlbSAwZW0gMGVtOworfQorCisudGlwIHAsCisud2FybmluZyBwLAorLmNhdXRpb24gcCwKKy5ub3RlIHAgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMC41ZW07CisgIHBhZGRpbmctcmlnaHQ6IDFlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmFjcm9ueW0geworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICBwYWRkaW5nOiAwLjA5ZW0gMC4zZW07CisgIG1hcmdpbjogMGVtOworfQorCisuaXRlbWl6ZWRsaXN0IGxpIHsKKyAgY2xlYXI6IG5vbmU7Cit9CisKKy5maWxlbmFtZSB7CisgIGZvbnQtc2l6ZTogbWVkaXVtOworICBmb250LWZhbWlseTogQ291cmllciwgbW9ub3NwYWNlOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDBlbTsKKyAgdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RmOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIHBvc2l0aW9uOiBmaXhlZDsKKyAgbGVmdDogMGVtOworICBib3R0b206IDBlbTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworZGl2Lm5hdmhlYWRlciB0ZCwKK2Rpdi5uYXZmb290ZXIgdGQgeworICBmb250LXNpemU6IDY2JTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0aCB7CisgIC8qZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzLCBzZXJpZjsqLworICAvKmZvbnQtc2l6ZTogeC1sYXJnZTsqLworICBmb250LXNpemU6IDgwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci1ib3R0b206IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYSwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYSB7CisgIGNvbG9yOiAjNzc3OworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKKy8qIG5vcm1hbCB0ZXh0IGluIHRoZSBmb290ZXIgKi8KK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgeworICBjb2xvcjogYmxhY2s7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTp2aXNpdGVkLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOnZpc2l0ZWQgeworICBjb2xvcjogIzQ0NDsKK30KKworCisvKiBsaW5rcyBpbiBoZWFkZXIgYW5kIGZvb3RlciAqLworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOmhvdmVyLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBjb2xvcjogIzMzYTsKK30KKworZGl2Lm5hdmhlYWRlciBociwKK2Rpdi5uYXZmb290ZXIgaHIgeworICBkaXNwbGF5OiBub25lOworfQorCisKKy5xYW5kYXNldCB0ci5xdWVzdGlvbiB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnFhbmRhc2V0IHRyLmFuc3dlciB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKy5hbnN3ZXIgdGQgeworICBwYWRkaW5nLWJvdHRvbTogMS41ZW07Cit9CisKKy5lbXBoYXNpcyB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisKKyAgLyoqKioqKioqKioqKiogLworIC8gZGVjb3JhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKi8KKworLnRpdGxlcGFnZSB7Cit9CisKKy5wYXJ0IC50aXRsZSB7Cit9CisKKy5zdWJ0aXRsZSB7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKgoraDEgeworICBib3JkZXI6IG5vbmU7Cit9CisKK2gyIHsKKyAgYm9yZGVyLXRvcDogc29saWQgMC4yZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDMgeworICBib3JkZXItdG9wOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDQgeworICBib3JkZXI6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNSB7CisgIGJvcmRlcjogMGVtOworfQorKi8KKworLnByb2dyYW1saXN0aW5nIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisucXVlc3Rpb24gdGQgeworICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Cit9CisKKy5hbnN3ZXIgeworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZDsKK30KKworICAvKioqKioqKioqIC8KKyAvICBjb2xvcnMgIC8KKy8gKioqKioqKioqLworCitib2R5IHsKKyAgY29sb3I6ICMzMzM7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorCithIHsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKK2E6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVkZWRlOworfQorCisKK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3LAoraDggeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworaHIgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKKworLnRpcCwgLndhcm5pbmcsIC5jYXV0aW9uLCAubm90ZSB7CisgIGJvcmRlci1jb2xvcjogI2ZmZjsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKK30KKworCisud2FybmluZyB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLnRpcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5ub3RlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgY29sb3I6ICMwNDQ7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworcHJlLnByb2dyYW1saXN0aW5nIHsKKyAgY29sb3I6IGJsYWNrOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworICBib3JkZXItY29sb3I6ICNhYWE7CisgIGJvcmRlci13aWR0aDogMnB4OworfQorCisuZ3VpbWVudSwKKy5ndWlsYWJlbCwKKy5ndWltZW51aXRlbSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgYm9yZGVyLWNvbG9yOiAjOTk5OworfQorCisKK2Rpdi5uYXZoZWFkZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKK2Rpdi5uYXZmb290ZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCisKKyAgLyoqKioqKioqKioqIC8KKyAvICBncmFwaGljcyAgLworLyAqKioqKioqKioqKi8KKworLyoKK2JvZHkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisubmF2aGVhZGVyLAorLm5vdGUsCisudGlwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLndhcm5pbmcsCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5maWd1cmUsCisuaW5mb3JtYWxmaWd1cmUsCisuZXhhbXBsZSwKKy5pbmZvcm1hbGV4YW1wbGUsCisudGFibGUsCisuaW5mb3JtYWx0YWJsZSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworKi8KK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3eworfQorCisvKgorRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCisKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisqLworCitkaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5jb2xvcGhvbiAudGl0bGUsCitkaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7Cit9CisKK2Rpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworfQorCisKK2gxLnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGhlaWdodDogMjU2cHg7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47CisgIHdpZHRoOiAwcHg7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyAgcGlwcGluLmdpbXAub3JnIHNwZWNpZmljIGFsdGVyYXRpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgY29sb3I6ICM3Nzc7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nOiAwOworICBtYXJnaW46IDA7CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgdG9wOiAwcHg7CisgIGxlZnQ6IDBweDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogNTBweDsKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2hlYWRpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKKyAgYm9yZGVyOiBub25lOworfQorCitkaXYuaGVhZGluZyBhIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyOiBub25lOworICBjb2xvcjogI2RkZDsKKyAgZm9udC1zaXplOiA4MCU7CisgIHRleHQtYWxpZ246cmlnaHQ7CisKKyAgd2lkdGg6IDEwMCU7CisgIHBhZGRpbmctdG9wOiAxMHB4OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogMHB4OworICBsZWZ0OiAwcHg7CisKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2Zvb3RpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Cit9CisqLworCisKKworICAvKioqKioqKioqKioqKioqKioqIC8KKyAvICBuYXN0eSBpZSB0d2Vha3MgIC8KKy8gKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKKyAgbWFyZ2luLWxlZnQ6ZXhwcmVzc2lvbigiLTVlbSIpOworfQorYm9keSB7CisgIHBhZGRpbmc6ZXhwcmVzc2lvbigiNGVtIDVlbSAwZW0gNWVtIik7Cit9CisqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvIG1vemlsbGEgdmVuZG9yIHNwZWNpZmljIGNzcyBleHRlbnNpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIC1tb3otb3BhY2l0eTogMC44ZW07Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSwKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtOworfQorKi8KKwordGFibGUgdHIgdGQgdGFibGUgdHIgdGQgeworICBkaXNwbGF5OiBub25lOworfQorCisKK2hyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKwordGFibGUgeworICBib3JkZXI6IDBlbTsKK30KKworIC5waG90byB7CisgIGZsb2F0OiByaWdodDsKKyAgbWFyZ2luLWxlZnQ6ICAgMS41ZW07CisgIG1hcmdpbi1ib3R0b206IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisgIG1heC13aWR0aDogICAgICAxN2VtOworICBib3JkZXI6ICAgICAxcHggc29saWQgZ3JheTsKKyAgcGFkZGluZzogICAgM3B4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKyAuc2VwZXJhdG9yIHsKKyAgIHBhZGRpbmctdG9wOiAyZW07CisgICBjbGVhcjogYm90aDsKKyAgfQorCisgICN2YWxpZGF0b3JzIHsKKyAgICAgIG1hcmdpbi10b3A6IDVlbTsKKyAgICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgICAgY29sb3I6ICM3Nzc7CisgIH0KKyAgQG1lZGlhIHByaW50IHsKKyAgICAgIGJvZHkgeworICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OworICAgICAgfQorICAgICAgLm5vcHJpbnQgeworICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgICB9CisgIH0KKworCisudGlwLAorLm5vdGUgeworICAgYmFja2dyb3VuZDogI2YwZjBmMjsKKyAgIGNvbG9yOiAjMzMzOworICAgcGFkZGluZzogMjBweDsKKyAgIG1hcmdpbjogMjBweDsKK30KKworLnRpcCBoMywKKy5ub3RlIGgzIHsKKyAgIHBhZGRpbmc6IDBlbTsKKyAgIG1hcmdpbjogMGVtOworICAgZm9udC1zaXplOiAyZW07CisgICBmb250LXdlaWdodDogYm9sZDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisudGlwIGEsCisubm90ZSBhIHsKKyAgIGNvbG9yOiAjMzMzOworICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy5mb290bm90ZSB7CisgICBmb250LXNpemU6IHNtYWxsOworICAgY29sb3I6ICMzMzM7Cit9CisKKy8qIENoYW5nZXMgdGhlIGFubm91bmNlbWVudCB0ZXh0ICovCisudGlwIGgzLAorLndhcm5pbmcgaDMsCisuY2F1dGlvbiBoMywKKy5ub3RlIGgzIHsKKyAgIGZvbnQtc2l6ZTpsYXJnZTsKKyAgIGNvbG9yOiAjMDA1NTdEOworfQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnJzdAppbmRleCA1NWI0MmVkLi4zMzJlMDg5IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODg3ZmY4MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCkBAIC0wLDAgKzEsMTg3IEBACis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGJvb2sgaWQ9J2tlcm5lbC1kZXYnIGxhbmc9J2VuJworICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiCisgICAgICB4bWxucz0iaHR0cDovL2RvY2Jvb2sub3JnL25zL2RvY2Jvb2siCisgICAgICA+CisgICAgPGJvb2tpbmZvPgorCisgICAgICAgIDxtZWRpYW9iamVjdD4KKyAgICAgICAgICAgIDxpbWFnZW9iamVjdD4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9J2ZpZ3VyZXMva2VybmVsLWRldi10aXRsZS5wbmcnCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nU1ZHJworICAgICAgICAgICAgICAgICAgICBhbGlnbj0nbGVmdCcgc2NhbGVmaXQ9JzEnIHdpZHRoPScxMDAlJy8+CisgICAgICAgICAgICA8L2ltYWdlb2JqZWN0PgorICAgICAgICA8L21lZGlhb2JqZWN0PgorCisgICAgICAgIDx0aXRsZT4KKwkJICBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwKKwkJPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgorICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgorICAgICAgICAgICAgPC9hdXRob3I+CisgICAgICAgIDwvYXV0aG9yZ3JvdXA+CisKKyAgICAgICAgPHJldmhpc3Rvcnk+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEzPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTM8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS44PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4wPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE1PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTY8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjc8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgIDwvcmV2aGlzdG9yeT4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4mQ09QWVJJR0hUX1lFQVI7PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUgPHVsaW5rIHR5cGU9Imh0dHAiIHVybD0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL3VrLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkgQ3JlYXRpdmUgQ29tbW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ia2VybmVsLWRldi1pbnRyby54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9Imtlcm5lbC1kZXYtY29tbW9uLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ia2VybmVsLWRldi1hZHZhbmNlZC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9Imtlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9Imtlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9Imtlcm5lbC1kZXYtZmFxLnhtbCIvPgorCis8IS0tICAgIDxpbmRleCBpZD0naW5kZXgnPgorICAgICAgPHRpdGxlPkluZGV4PC90aXRsZT4KKyAgICA8L2luZGV4PgorLS0+CisKKzwvYm9vaz4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5NjkwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYWRkLXZhcmlhYmxlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2FkZC12YXJpYWJsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJkY2NhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2FkZC12YXJpYWJsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNiMDM4NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYmFzaC1vZWNvcmUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYmFzaC1vZWNvcmUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMWE1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9iYXNoLW9lY29yZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYmJfbXVsdGljb25maWdfZmlsZXMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYmJfbXVsdGljb25maWdfZmlsZXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MWYwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9iYl9tdWx0aWNvbmZpZ19maWxlcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI5NWViMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS10aXRsZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9iaXRiYWtlLXRpdGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjI5MDE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNhMWZlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLXRpdGxlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyNGRkNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9idWlsZC13b3Jrc3BhY2UtZGlyZWN0b3J5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzg3ZDMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmRiODZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ1ZjhhNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFmYmVhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9idWlsZGluZy1hbi1pbWFnZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMGE1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY29tcGF0aWJsZS1sYXllcnMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY29tcGF0aWJsZS1sYXllcnMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NDM2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb21wYXRpYmxlLWxheWVycy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY29uY2VwdHMtbWFudWFsLXRpdGxlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmNlcHRzLW1hbnVhbC10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjN2E2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmNlcHRzLW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY29uZmlndXJhdGlvbi1jb21waWxlLWF1dG9yZWNvbmYucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY29uZmlndXJhdGlvbi1jb21waWxlLWF1dG9yZWNvbmYucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0M2QxOTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmU4MzcxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY3V0ZS1maWxlcy1ucG0tZXhhbXBsZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jdXRlLWZpbGVzLW5wbS1leGFtcGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWJlNzRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY3V0ZS1maWxlcy1ucG0tZXhhbXBsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMjI3MThhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXYtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTY3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXYtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2dpdC13b3JrZmxvdy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MDEzMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2hvc3RlZC1zZXJ2aWNlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2hvc3RlZC1zZXJ2aWNlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWZlYTdiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaG9zdGVkLXNlcnZpY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmOWZjMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYzAxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltcG9ydC1sYXllci5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbXBvcnQtbGF5ZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNmVjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbXBvcnQtbGF5ZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ4ZDQ0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWFyY2hpdGVjdHVyZS1vdmVydmlldy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmFhZDE3MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5M2EzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtdGl0bGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWRldi10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4ZGQ1NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0xLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0xLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTZjMGI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUyY2RiMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC10aXRsZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZDg2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbHNoYXJrLWFsbC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWxzaGFyay1hbGwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YjQwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWxzaGFyay1hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbHNoYXJrLWNob29zZS1ldmVudHMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsc2hhcmstY2hvb3NlLWV2ZW50cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkZDYyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbHNoYXJrLWNob29zZS1ldmVudHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbHNoYXJrLWk5MTUtZGlzcGxheS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWxzaGFyay1pOTE1LWRpc3BsYXkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMGVkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWxzaGFyay1pOTE1LWRpc3BsYXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbHNoYXJrLW91dHB1dC1kaXNwbGF5LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbHNoYXJrLW91dHB1dC1kaXNwbGF5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTJkMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsc2hhcmstb3V0cHV0LWRpc3BsYXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjNDQwNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2xheWVyLWlucHV0LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2xheWVyLWlucHV0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWI1NmY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL21lZ2EtdGl0bGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvbWVnYS10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RlMGI4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL21lZ2EtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL211bHRpY29uZmlnX2ZpbGVzLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL211bHRpY29uZmlnX2ZpbGVzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU5MzM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvbXVsdGljb25maWdfZmlsZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL25ldy1wcm9qZWN0LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL25ldy1wcm9qZWN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmM1MGI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvbmV3LXByb2plY3QucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL29wcm9maWxldWktYnVzeWJveC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vcHJvZmlsZXVpLWJ1c3lib3gucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4Mjc1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vcHJvZmlsZXVpLWJ1c3lib3gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL29wcm9maWxldWktY29weS10by11c2VyLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL29wcm9maWxldWktY29weS10by11c2VyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWI2NDcwMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL29wcm9maWxldWktY29weS10by11c2VyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vcHJvZmlsZXVpLWRvd25sb2FkaW5nLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL29wcm9maWxldWktZG93bmxvYWRpbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzQyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vcHJvZmlsZXVpLWRvd25sb2FkaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vcHJvZmlsZXVpLXByb2Nlc3Nlcy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vcHJvZmlsZXVpLXByb2Nlc3Nlcy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1NDcwMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL29wcm9maWxldWktcHJvY2Vzc2VzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWU5MDEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI2NjhkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmYmE3ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BhdGNoaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXByb2JlLWRvX2ZvcmstcHJvZmlsZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXByb2JlLWRvX2ZvcmstcHJvZmlsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExMDcwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtcHJvYmUtZG9fZm9yay1wcm9maWxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXJlcG9ydC1jeWNsZXMtdS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXJlcG9ydC1jeWNsZXMtdS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlYzZhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtcmVwb3J0LWN5Y2xlcy11LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXN5c3RlbXdpZGUtbGliYy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXN5c3RlbXdpZGUtbGliYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI3Mjg2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtc3lzdGVtd2lkZS1saWJjLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXN5c3RlbXdpZGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi1zeXN0ZW13aWRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmNlMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi1zeXN0ZW13aWRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1hbm5vdGF0ZS1tZW51LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWFubm90YXRlLW1lbnUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYjM0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1hbm5vdGF0ZS1tZW51LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1hbm5vdGF0ZS11ZGhjcGMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtYW5ub3RhdGUtdWRoY3BjLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTgxZTlkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtYW5ub3RhdGUtdWRoY3BjLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kZWJ1Z2luZm8ucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZGVidWdpbmZvLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzE3YjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZGVidWdpbmZvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kc28tem9vbS1tZW51LnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWRzby16b29tLW1lbnUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MTNjODYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kc28tem9vbS1tZW51LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kc28tem9vbS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1kc28tem9vbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE5NjJjNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWRzby16b29tLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1leHBhbmRlZC1zdHJpcHBlZC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtYnVzeWJveC1leHBhbmRlZC1zdHJpcHBlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY0MmQwNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWV4cGFuZGVkLXN0cmlwcGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZmxhdC1zdHJpcHBlZC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZmxhdC1zdHJpcHBlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhmMzk1YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1mbGF0LXN0cmlwcGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LWZyb20tdXNlci1leHBhbmRlZC1zdHJpcHBlZC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LWZyb20tdXNlci1leHBhbmRlZC1zdHJpcHBlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3Yzc2NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1nLWNvcHktZnJvbS11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LXRvLXVzZXItZXhwYW5kZWQtZGVidWdpbmZvLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BlcmYtd2dldC1nLWNvcHktdG8tdXNlci1leHBhbmRlZC1kZWJ1Z2luZm8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OTlhZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LXRvLXVzZXItZXhwYW5kZWQtZGVidWdpbmZvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LXRvLXVzZXItZXhwYW5kZWQtc3RyaXBwZWQtdW5yZXNvbHZlZC1oaWRkZW4ucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLXVucmVzb2x2ZWQtaGlkZGVuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTE4MDhhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLXVucmVzb2x2ZWQtaGlkZGVuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LXRvLXVzZXItZXhwYW5kZWQtc3RyaXBwZWQucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTIzMDJkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGVyZi13Z2V0LWctY29weS10by11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU4OWFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXRpdGxlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Bva3ktdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OTNkODQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wcm9maWxlLXRpdGxlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Byb2ZpbGUtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNWM2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wcm9maWxlLXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9weWJvb3RjaGFydGd1aS1saW51eC15b2N0by5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9weWJvb3RjaGFydGd1aS1saW51eC15b2N0by5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2YmZkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3B5Ym9vdGNoYXJ0Z3VpLWxpbnV4LXlvY3RvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9weWNoYXJ0LWxpbnV4LXlvY3RvLXJwbS1ub3N0cmlwLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3B5Y2hhcnQtbGludXgteW9jdG8tcnBtLW5vc3RyaXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDY3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9weWNoYXJ0LWxpbnV4LXlvY3RvLXJwbS1ub3N0cmlwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9weWNoYXJ0LWxpbnV4LXlvY3RvLXJwbS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9weWNoYXJ0LWxpbnV4LXlvY3RvLXJwbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlMzUzNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3B5Y2hhcnQtbGludXgteW9jdG8tcnBtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcmVjaXBlLXdvcmtmbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGU5NjBiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcmVjaXBlLXdvcmtmbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zY2hlZC13YWtldXAtcHJvZmlsZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zY2hlZC13YWtldXAtcHJvZmlsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYyNTgxMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NjaGVkLXdha2V1cC1wcm9maWxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzY2ODVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdkNjE3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThiYThiNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDRmMzk1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZW52aXJvbm1lbnQucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWVudmlyb25tZW50LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGI4Y2FkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWVudmlyb25tZW50LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM5ZjgzOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcxYzhhZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstaW5zdGFsbGVkLXN0YW5kYXJkLXNkay1kaXJlY3RvcnkucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWMwMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjQxOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLXRpdGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjllMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGsucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzc2ODcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZXQtdmFyaWFibGUucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2V0LXZhcmlhYmxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzZiNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2V0LXZhcmlhYmxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zaW1wbGUtY29uZmlndXJhdGlvbi5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zaW1wbGUtY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThmY2UyYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NpbXBsZS1jb25maWd1cmF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjVlMTg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjZiYTRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWNmZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zeXNwcm9mLWNhbGxlcnMucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc3lzcHJvZi1jYWxsZXJzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDBjOGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc3lzcHJvZi1jYWxsZXJzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zeXNwcm9mLWNvcHktZnJvbS11c2VyLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3N5c3Byb2YtY29weS1mcm9tLXVzZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMzE0MjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zeXNwcm9mLWNvcHktZnJvbS11c2VyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zeXNwcm9mLWNvcHktdG8tdXNlci5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zeXNwcm9mLWNvcHktdG8tdXNlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E1YmFiNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3N5c3Byb2YtY29weS10by11c2VyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy90b2FzdGVyLXRpdGxlLnBuZyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3RvYXN0ZXItdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZWEzOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy90b2FzdGVyLXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDI0NTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy91c2luZy1hLXByZS1idWlsdC1pbWFnZS5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy91c2luZy1hLXByZS1idWlsdC1pbWFnZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAzMTMwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3VzaW5nLWEtcHJlLWJ1aWx0LWltYWdlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy92YXJpYWJsZS1hZGRlZC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy92YXJpYWJsZS1hZGRlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4ZjI1ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3ZhcmlhYmxlLWFkZGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzFkMmIxNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkMTJiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwtY3VzdG9taXphdGlvbi54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhNmUxNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+Cis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLnRvYyI+CisgICBhcHBlbmRpeCAgdG9jCisgICBjaGFwdGVyICAgdG9jCisgICBhcnRpY2xlICAgbm9wCisgICBib29rICAgICAgbm9wCisgICBwYXJ0ICAgICAgbm9wCisgICBwcmVmYWNlICAgbm9wCisgICBxYW5kYWRpdiAgbm9wCisgICBxYW5kYXNldCAgbm9wCisgICByZWZlcmVuY2Ugbm9wCisgICBzZWN0aW9uICAgbm9wCisgICBzZXQgICAgICAgbm9wCisgIDwveHNsOnBhcmFtPgorCisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9wZXJtYWxpbmtzLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvc2VjdGlvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2NvbXBvbmVudC50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2RpdmlzaW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZ2xvc3MtcGVybWFsaW5rcy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInbWVnYS1zdHlsZS5jc3MnIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNoYXB0ZXIuYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYXBwZW5kaXguYXV0b2xhYmVsIj5BPC94c2w6cGFyYW0+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmxhYmVsLmluY2x1ZGVzLmNvbXBvbmVudC5sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLmlkLmF0dHJpYnV0ZXMiIHNlbGVjdD0iMSIgLz4KKworPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ5OTEyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCkBAIC0wLDAgKzEsMzYyIEBACis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGJvb2sgaWQ9J21lZ2EtbWFudWFsJyBsYW5nPSdlbicKKyAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIgorICAgICAgeG1sbnM9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICAgICAgPgorCisgICAgPGJvb2tpbmZvPgorCisgICAgICAgIDxhYnN0cmFjdD4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsIGlzIGEgY29uY2F0ZW5hdGlvbiBvZiB0aGUgcHVibGlzaGVkCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IEhUTUwgbWFudWFscyBhbG9uZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIEJpdEJha2UKKyAgICAgICAgICAgIFVzZXIgTWFudWFsIGZvciB0aGUgZ2l2ZW4gcmVsZWFzZS4KKyAgICAgICAgICAgIFRoZSBNZWdhLU1hbnVhbCBleGlzdHMgdG8gaGVscCB1c2VycyBlZmZpY2llbnRseSBzZWFyY2ggZm9yIHN0cmluZ3MKKyAgICAgICAgICAgIGFjcm9zcyB0aGUgZW50aXJlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQgaW5jbHVzaXZlIG9mCisgICAgICAgICAgICB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgPC9hYnN0cmFjdD4KKworICAgICAgICA8bWVkaWFvYmplY3Q+CisgICAgICAgICAgICA8aW1hZ2VvYmplY3Q+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSdmaWd1cmVzL21lZ2EtdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsCisgICAgICAgIDwvdGl0bGU+CisKKyAgICAgICAgPGF1dGhvcmdyb3VwPgorICAgICAgICAgICAgPGF1dGhvcj4KKyAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS44PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4wPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE1PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTY8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjc8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgPC9yZXZoaXN0b3J5PgorCisgICAgPGNvcHlyaWdodD4KKyAgICAgIDx5ZWFyPiZDT1BZUklHSFRfWUVBUjs8L3llYXI+CisgICAgICA8aG9sZGVyPkxpbnV4IEZvdW5kYXRpb248L2hvbGRlcj4KKyAgICA8L2NvcHlyaWdodD4KKworICAgIDxsZWdhbG5vdGljZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQgdW5kZXIKKyAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zLgorICAgICAgPC9wYXJhPgorICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorCisgICAgPC9sZWdhbG5vdGljZT4KKworICAgIDwvYm9va2luZm8+CisKKzwhLS0gSW5jbHVkZXMgYnJpZWYteW9jdG9wcm9qZWN0cXMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyIgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sIi8+CisKKzwhLS0gSW5jbHVkZXMgb3ZlcnZpZXctbWFudWFsIHRpdGxlIGltYWdlIGFuZCB0aGVuIG92ZXJ2aWV3LW1hbnVhbCBjaGFwdGVycyAtLT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZyIgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1pbnRyby54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cy54bWwiLz4KKworPCEtLSBJbmNsdWRlcyBkZXYtbWFudWFsIHRpdGxlIGltYWdlIGFuZCB0aGVuIGRldi1tYW51YWwgY2hhcHRlcnMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2Rldi10aXRsZS5wbmciIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgc2NhbGVmaXQ9IjEiIC8+CisgICAgPC9wYXJhPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwiLz4KKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCIvPgorICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwiLz4KKworPCEtLSBJbmNsdWRlcyBzZGstbWFudWFsIHRpdGxlIGltYWdlIGFuZCB0aGVuIHNkay1tYW51YWwgY2hhcHRlcnMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay10aXRsZS5wbmciIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgc2NhbGVmaXQ9IjEiIC8+CisgICAgPC9wYXJhPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Nkay1tYW51YWwvc2RrLWludHJvLnhtbCIvPgorICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay1leHRlbnNpYmxlLnhtbCIvPgorICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay11c2luZy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstd29ya2luZy1wcm9qZWN0cy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbCIvPgorICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQueG1sIi8+CisKKzwhLS0gSW5jbHVkZXMgYnNwLWd1aWRlIHRpdGxlIGltYWdlIGFuZCB0aGVuIGJzcC1ndWlkZSBjaGFwdGVycyAtLT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnNwLXRpdGxlLnBuZyIgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vYnNwLWd1aWRlL2JzcC54bWwiLz4KKworPCEtLSBJbmNsdWRlcyBrZXJuZWwtZGV2IHRpdGxlIGltYWdlIGFuZCB0aGVuIGtlcm5lbC1kZXYgY2hhcHRlcnMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1kZXYtdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sIi8+CisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbCIvPgorCis8IS0tIEluY2x1ZGVzIHByb2ZpbGUtbWFudWFsIHRpdGxlIGltYWdlIGFuZCB0aGVuIHByb2ZpbGUtbWFudWFsIGNoYXB0ZXJzIC0tPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wcm9maWxlLXRpdGxlLnBuZyIgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtaW50cm8ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWFyY2gueG1sIi8+CisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbCIvPgorICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1leGFtcGxlcy54bWwiLz4KKworPCEtLSBJbmNsdWRlcyByZWYtbWFudWFsIHRpdGxlIGltYWdlIGFuZCB0aGVuIHJlZi1tYW51YWwgY2hhcHRlcnMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Bva3ktdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtcWEtY2hlY2tzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvcmVmLWltYWdlcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtdmFybG9jYWxpdHkueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9mYXEueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZXNvdXJjZXMueG1sIi8+CisKKzwhLS0gSW5jbHVkZXMgdG9hc3Rlci1tYW51YWwgdGl0bGUgaW1hZ2UgYW5kIHRoZW4gdG9hc3Rlci1tYW51YWwgY2hhcHRlcnMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3RvYXN0ZXItdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXJlZmVyZW5jZS54bWwiLz4KKworPCEtLSBJbmNsdWRlcyBiaXRiYWtlLXVzZXItbWFudWFsIHRpdGxlIGltYWdlIGFuZCB0aGVuIGJpdGJha2UtdXNlci1tYW51YWwgY2hhcHRlcnMgLS0+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2JpdGJha2UtdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi8uLi9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vLi4vYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi8uLi9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vLi4vYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uLy4uL2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uLy4uL2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwiLz4KKworPC9ib29rPgorCis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLXN0eWxlLmNzcyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzQ4MzIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2Etc3R5bGUuY3NzCkBAIC0wLDAgKzEsOTkxIEBACisvKgorICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSworCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvbWVnYS10aXRsZS5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7CisgIG1hcmdpbi10b3A6IC0yNTZweDsKKyAgcGFkZGluZy1yaWdodDogNTBweDsKKyAgbWFyZ2luLWxlZnQ6IDBweDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7CisgIHdpZHRoOiA3NDBweDsKK30KKworaDMuYXV0aG9yIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zaXplOiAxMDAlOworICBjb2xvcjogIzMzMzsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5hdXRob3IgdHQuZW1haWwgeworICBmb250LXNpemU6IDY2JTsKK30KKworLnRpdGxlcGFnZSBociB7CisgIHdpZHRoOiAwZW07CisgIGNsZWFyOiBib3RoOworfQorCisucmV2aGlzdG9yeSB7CisgIHBhZGRpbmctdG9wOiAyZW07CisgIGNsZWFyOiBib3RoOworfQorCisudG9jLAorLmxpc3Qtb2YtdGFibGVzLAorLmxpc3Qtb2YtZXhhbXBsZXMsCisubGlzdC1vZi1maWd1cmVzIHsKKyAgcGFkZGluZzogMS4zM2VtIDBlbSAyLjVlbSAwZW07CisgIGNvbG9yOiAjMDA1NTdEOworfQorCisudG9jIHAsCisubGlzdC1vZi10YWJsZXMgcCwKKy5saXN0LW9mLWZpZ3VyZXMgcCwKKy5saXN0LW9mLWV4YW1wbGVzIHAgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMC4zZW07CisgIG1hcmdpbjogMS41ZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgcCBiLAorLmxpc3Qtb2YtdGFibGVzIHAgYiwKKy5saXN0LW9mLWZpZ3VyZXMgcCBiLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCBieworICBmb250LXNpemU6IDEwMC4wJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy50b2MgZGwsCisubGlzdC1vZi10YWJsZXMgZGwsCisubGlzdC1vZi1maWd1cmVzIGRsLAorLmxpc3Qtb2YtZXhhbXBsZXMgZGwgeworICBtYXJnaW46IDBlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZHQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGRkIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAyLjZlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuZ2xvc3NhcnkgZGwsCitkaXYudmFyaWFibGVsaXN0IGRsIHsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgd2lkdGg6IDIwZW07CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCisudmFyaWFibGVsaXN0IGRsIGR0IHsKKyAgbWFyZ2luLXRvcDogMC41ZW07Cit9CisKKy5nbG9zc2FyeSBkbCBkZCwKKy52YXJpYWJsZWxpc3QgZGwgZGQgeworICBtYXJnaW4tdG9wOiAtMWVtOworICBtYXJnaW4tbGVmdDogMjUuNWVtOworfQorCisuZ2xvc3NhcnkgZGQgcCwKKy52YXJpYWJsZWxpc3QgZGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK2RpdiBwLmNvcHlyaWdodCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK2Rpdi5sZWdhbG5vdGljZSBwLmxlZ2Fsbm90aWNlLXRpdGxlIHsKKyAgbWFyZ2luLWJvdHRvbTogMGVtOworfQorCitwIHsKKyAgbGluZS1oZWlnaHQ6IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisKK30KKworZGwgeworICBwYWRkaW5nLXRvcDogMGVtOworfQorCitociB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCisKKy5tZWRpYW9iamVjdCwKKy5tZWRpYW9iamVjdGNvIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitpbWcgeworICBib3JkZXI6IG5vbmU7Cit9CisKK3VsIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMS41ZW07Cit9CisKK3VsIGxpIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCit1bCBsaSBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwordGFibGUgeworICB3aWR0aCA6MTAwJTsKK30KKwordGggeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCitwIGFbaWRdIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDBweDsKKyAgZGlzcGxheTogaW5saW5lOworICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworfQorCithIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGNvbG9yOiAjNDQ0OworfQorCitwcmUgeworICAgIG92ZXJmbG93OiBhdXRvOworfQorCithOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIC8qZm9udC13ZWlnaHQ6IGJvbGQ7Ki8KK30KKworLyogVGhpcyBzdHlsZSBkZWZpbmVzIGhvdyB0aGUgcGVybWFsaW5rIGNoYXJhY3RlcgorICAgYXBwZWFycyBieSBpdHNlbGYgYW5kIHdoZW4gaG92ZXJlZCBvdmVyIHdpdGgKKyAgIHRoZSBtb3VzZS4gKi8KKworW2FsdD0nUGVybWFsaW5rJ10geyBjb2xvcjogI2VlZTsgfQorW2FsdD0nUGVybWFsaW5rJ106aG92ZXIgeyBjb2xvcjogYmxhY2s7IH0KKworCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUgeworICBtYXJnaW46IDFlbSAwZW07CisgIHBhZGRpbmc6IDFlbTsKKyAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWxleGFtcGxlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbHRhYmxlIHAudGl0bGUgYiwKK2Rpdi5maWd1cmUgcC50aXRsZSBiLAorZGl2LmV4YW1wbGUgcC50aXRsZSBiLAorZGl2LnRhYmxlIHAudGl0bGUgYnsKKyAgICBwYWRkaW5nLXRvcDogMGVtOworICAgIG1hcmdpbi10b3A6IDBlbTsKKyAgICBmb250LXNpemU6IDEwMCU7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKworLm1lZGlhb2JqZWN0IC5jYXB0aW9uLAorLm1lZGlhb2JqZWN0IC5jYXB0aW9uIHAgIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZy10b3A6IDAuNWVtOworICBwYWRkaW5nLWJvdHRvbTogMC41ZW07Cit9CisKKy5lcGlncmFwaCB7CisgIHBhZGRpbmctbGVmdDogNTUlOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKy5lcGlncmFwaCBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmVwaWdyYXBoIC5xdW90ZSB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKy5lcGlncmFwaCAuYXR0cmlidXRpb24geworICBmb250LXN0eWxlOiBub3JtYWw7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitzcGFuLmFwcGxpY2F0aW9uIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucHJvZ3JhbWxpc3RpbmcgeworICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICBmb250LXNpemU6IDgwJTsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgbWFyZ2luOiAxLjMzZW0gMGVtOworICBwYWRkaW5nOiAxLjMzZW07Cit9CisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBtYXJnaW4tdG9wOiAxZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKKworfQorCisvKiBmb3JjZSBmdWxsIHdpZHRoIG9mIHRhYmxlIHdpdGhpbiBkaXYgKi8KKy50aXAgdGFibGUsCisud2FybmluZyB0YWJsZSwKKy5jYXV0aW9uIHRhYmxlLAorLm5vdGUgdGFibGUgeworICBib3JkZXI6IG5vbmU7CisgIHdpZHRoOiAxMDAlOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBwYWRkaW5nOiAwLjhlbSAwLjBlbSAwLjBlbSAwLjBlbTsKKyAgbWFyZ2luIDogMGVtIDBlbSAwZW0gMGVtOworfQorCisudGlwIHAsCisud2FybmluZyBwLAorLmNhdXRpb24gcCwKKy5ub3RlIHAgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMC41ZW07CisgIHBhZGRpbmctcmlnaHQ6IDFlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmFjcm9ueW0geworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICBwYWRkaW5nOiAwLjA5ZW0gMC4zZW07CisgIG1hcmdpbjogMGVtOworfQorCisuaXRlbWl6ZWRsaXN0IGxpIHsKKyAgY2xlYXI6IG5vbmU7Cit9CisKKy5maWxlbmFtZSB7CisgIGZvbnQtc2l6ZTogbWVkaXVtOworICBmb250LWZhbWlseTogQ291cmllciwgbW9ub3NwYWNlOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDBlbTsKKyAgdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RmOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIHBvc2l0aW9uOiBmaXhlZDsKKyAgbGVmdDogMGVtOworICBib3R0b206IDBlbTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworZGl2Lm5hdmhlYWRlciB0ZCwKK2Rpdi5uYXZmb290ZXIgdGQgeworICBmb250LXNpemU6IDY2JTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0aCB7CisgIC8qZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzLCBzZXJpZjsqLworICAvKmZvbnQtc2l6ZTogeC1sYXJnZTsqLworICBmb250LXNpemU6IDgwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci1ib3R0b206IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYSwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYSB7CisgIGNvbG9yOiAjNzc3OworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKKy8qIG5vcm1hbCB0ZXh0IGluIHRoZSBmb290ZXIgKi8KK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgeworICBjb2xvcjogYmxhY2s7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTp2aXNpdGVkLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOnZpc2l0ZWQgeworICBjb2xvcjogIzQ0NDsKK30KKworCisvKiBsaW5rcyBpbiBoZWFkZXIgYW5kIGZvb3RlciAqLworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOmhvdmVyLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBjb2xvcjogIzMzYTsKK30KKworZGl2Lm5hdmhlYWRlciBociwKK2Rpdi5uYXZmb290ZXIgaHIgeworICBkaXNwbGF5OiBub25lOworfQorCisKKy5xYW5kYXNldCB0ci5xdWVzdGlvbiB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnFhbmRhc2V0IHRyLmFuc3dlciB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKy5hbnN3ZXIgdGQgeworICBwYWRkaW5nLWJvdHRvbTogMS41ZW07Cit9CisKKy5lbXBoYXNpcyB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisKKyAgLyoqKioqKioqKioqKiogLworIC8gZGVjb3JhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKi8KKworLnRpdGxlcGFnZSB7Cit9CisKKy5wYXJ0IC50aXRsZSB7Cit9CisKKy5zdWJ0aXRsZSB7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKgoraDEgeworICBib3JkZXI6IG5vbmU7Cit9CisKK2gyIHsKKyAgYm9yZGVyLXRvcDogc29saWQgMC4yZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDMgeworICBib3JkZXItdG9wOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDQgeworICBib3JkZXI6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNSB7CisgIGJvcmRlcjogMGVtOworfQorKi8KKworLnByb2dyYW1saXN0aW5nIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisucXVlc3Rpb24gdGQgeworICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Cit9CisKKy5hbnN3ZXIgeworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZDsKK30KKworICAvKioqKioqKioqIC8KKyAvICBjb2xvcnMgIC8KKy8gKioqKioqKioqLworCitib2R5IHsKKyAgY29sb3I6ICMzMzM7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorCithIHsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKK2E6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVkZWRlOworfQorCisKK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3LAoraDggeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworaHIgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKKworLnRpcCwgLndhcm5pbmcsIC5jYXV0aW9uLCAubm90ZSB7CisgIGJvcmRlci1jb2xvcjogI2ZmZjsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKK30KKworCisud2FybmluZyB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLnRpcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5ub3RlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgY29sb3I6ICMwNDQ7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworcHJlLnByb2dyYW1saXN0aW5nIHsKKyAgY29sb3I6IGJsYWNrOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworICBib3JkZXItY29sb3I6ICNhYWE7CisgIGJvcmRlci13aWR0aDogMnB4OworfQorCisuZ3VpbWVudSwKKy5ndWlsYWJlbCwKKy5ndWltZW51aXRlbSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgYm9yZGVyLWNvbG9yOiAjOTk5OworfQorCisKK2Rpdi5uYXZoZWFkZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKK2Rpdi5uYXZmb290ZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2hpc3RvcnkucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9oaXN0b3J5LnJzdAppbmRleCA2ZmM3MDBhLi4wMjczZDI4IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2hpc3RvcnkucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvaGlzdG9yeS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqCiBNYW51YWwgUmV2aXNpb24gSGlzdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY29uY2VwdHMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY29uY2VwdHMucnN0CmluZGV4IGQ5ZjUwZTUuLjZjZTVmODAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioKIFlvY3RvIFByb2plY3QgQ29uY2VwdHMKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGI2NGJkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY29uY2VwdHMueG1sCkBAIC0wLDAgKzEsMzIzNSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPScgb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzJz4KKzx0aXRsZT5Zb2N0byBQcm9qZWN0IENvbmNlcHRzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgZXhwbGFuYXRpb25zIGZvciBZb2N0byBQcm9qZWN0IGNvbmNlcHRzIHRoYXQKKyAgICAgICAgZ28gYmV5b25kIHRoZSBzdXJmYWNlIG9mICJob3ctdG8iIGluZm9ybWF0aW9uIGFuZCByZWZlcmVuY2UgKG9yCisgICAgICAgIGxvb2stdXApIG1hdGVyaWFsLgorICAgICAgICBDb25jZXB0cyBzdWNoIGFzIGNvbXBvbmVudHMsIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgIHdvcmtmbG93LCBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLCBzaGFyZWQgc3RhdGUgY2FjaGUsIGFuZCBzbworICAgICAgICBmb3J0aCBhcmUgZXhwbGFpbmVkLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LWNvbXBvbmVudHMnPgorICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBDb21wb25lbnRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIHRhc2sgZXhlY3V0b3IgdG9nZXRoZXIgd2l0aCB2YXJpb3VzIHR5cGVzIG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICAgICAgICAgIGZvcm0gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZTwvdWxpbms+LgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGVzZSBjb21wb25lbnRzIGJ5IGRlc2NyaWJpbmcgdGhlaXIgdXNlIGFuZAorICAgICAgICAgICAgaG93IHRoZXkgaW50ZXJhY3QuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgaGFuZGxlcyB0aGUgcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIHRoZSBkYXRhIGZpbGVzLgorICAgICAgICAgICAgVGhlIGRhdGEgaXRzZWxmIGlzIG9mIHZhcmlvdXMgdHlwZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgZGV0YWlscyBhYm91dCBwYXJ0aWN1bGFyIHBpZWNlcyBvZiBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xhc3MgRGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdHMgY29tbW9uIGJ1aWxkIGluZm9ybWF0aW9uIChlLmcuIGhvdyB0byBidWlsZCBhCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGtlcm5lbCkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyYXRpb24gRGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIG1hY2hpbmUtc3BlY2lmaWMgc2V0dGluZ3MsIHBvbGljeSBkZWNpc2lvbnMsIGFuZAorICAgICAgICAgICAgICAgICAgICBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBkYXRhIGFjdHMgYXMgdGhlIGdsdWUgdG8gYmluZCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgICAgIHRvZ2V0aGVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIGtub3dzIGhvdyB0byBjb21iaW5lIG11bHRpcGxlIGRhdGEgc291cmNlcyB0b2dldGhlciBhbmQKKyAgICAgICAgICAgIHJlZmVycyB0byBlYWNoIGRhdGEgc291cmNlIGFzIGEgbGF5ZXIuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYnJpZWYgZGV0YWlscyBvbiB0aGVzZSBjb3JlIGNvbXBvbmVudHMuCisgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgdGhlc2UgY29tcG9uZW50cyBpbnRlcmFjdCBkdXJpbmcKKyAgICAgICAgICAgIGEgYnVpbGQsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtLWJ1aWxkLWNvbmNlcHRzJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtIENvbmNlcHRzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWNvbXBvbmVudHMtYml0YmFrZSc+CisgICAgICAgICAgICA8dGl0bGU+Qml0QmFrZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgaXMgdGhlIHRvb2wgYXQgdGhlIGhlYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4sCisgICAgICAgICAgICAgICAgZ2VuZXJhdGluZyBhIGxpc3Qgb2YgdGFza3MgZnJvbSBpdCwgYW5kIHRoZW4gZXhlY3V0aW5nIHRob3NlCisgICAgICAgICAgICAgICAgdGFza3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBicmllZmx5IGludHJvZHVjZXMgQml0QmFrZS4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBtb3JlIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHNlZSBhIGxpc3Qgb2YgdGhlIG9wdGlvbnMgQml0QmFrZSBzdXBwb3J0cywgdXNlIGVpdGhlciBvZgorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWgKKyAgICAgJCBiaXRiYWtlIC0taGVscAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIGZvciBCaXRCYWtlIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICB3aGVyZSA8ZmlsZW5hbWU+cGFja2FnZW5hbWU8L2ZpbGVuYW1lPiBpcyB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBwYWNrYWdlIHlvdSB3YW50IHRvIGJ1aWxkIChyZWZlcnJlZCB0byBhcyB0aGUgInRhcmdldCIpLgorICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgb2Z0ZW4gZXF1YXRlcyB0byB0aGUgZmlyc3QgcGFydCBvZiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgZmlsZW5hbWUgKGUuZy4gImZvbyIgZm9yIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjMuMC1yMC5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBTbywgdG8gcHJvY2VzcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcF8xLjIuMy5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmaWxlLCB5b3UKKyAgICAgICAgICAgICAgICBtaWdodCB0eXBlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIGRpZmZlcmVudCB2ZXJzaW9ucyBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4gbWlnaHQgZXhpc3QuCisgICAgICAgICAgICAgICAgQml0QmFrZSBjaG9vc2VzIHRoZSBvbmUgc2VsZWN0ZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBCaXRCYWtlIGNob29zZXMgYmV0d2VlbgorICAgICAgICAgICAgICAgIGRpZmZlcmVudCB0YXJnZXQgdmVyc2lvbnMgYW5kIHByb3ZpZGVycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYi1iaXRiYWtlLXByZWZlcmVuY2VzJz5QcmVmZXJlbmNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyB0cmllcyB0byBleGVjdXRlIGFueSBkZXBlbmRlbnQgdGFza3MgZmlyc3QuCisgICAgICAgICAgICAgICAgU28gZm9yIGV4YW1wbGUsIGJlZm9yZSBidWlsZGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4sIEJpdEJha2Ugd291bGQgYnVpbGQgYQorICAgICAgICAgICAgICAgIGNyb3NzIGNvbXBpbGVyIGFuZCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBpZiB0aGV5IGhhZCBub3QKKyAgICAgICAgICAgICAgICBhbHJlYWR5IGJlZW4gYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgdXNlZnVsIEJpdEJha2Ugb3B0aW9uIHRvIGNvbnNpZGVyIGlzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tazwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4tLWNvbnRpbnVlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcHRpb24uCisgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEJpdEJha2UgdG8gdHJ5IGFuZCBjb250aW51ZSBwcm9jZXNzaW5nCisgICAgICAgICAgICAgICAgdGhlIGpvYiBhcyBsb25nIGFzIHBvc3NpYmxlIGV2ZW4gYWZ0ZXIgZW5jb3VudGVyaW5nIGFuIGVycm9yLgorICAgICAgICAgICAgICAgIFdoZW4gYW4gZXJyb3Igb2NjdXJzLCB0aGUgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCB0aG9zZSB0aGF0CisgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGNhbm5vdCBiZSByZW1hZGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgdXNlIHRoaXMgb3B0aW9uIG90aGVyIGRlcGVuZGVuY2llcyBjYW4KKyAgICAgICAgICAgICAgICBzdGlsbCBiZSBwcm9jZXNzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctY29tcG9uZW50cy1yZWNpcGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5SZWNpcGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBoYXZlIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gc3VmZml4IGFyZQorICAgICAgICAgICAgICAgICJyZWNpcGVzIiBmaWxlcy4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIHJlY2lwZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBwaWVjZQorICAgICAgICAgICAgICAgIG9mIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIGxvY2F0aW9uIGZyb20gd2hpY2ggdG8gZG93bmxvYWQKKyAgICAgICAgICAgICAgICB0aGUgdW5hbHRlcmVkIHNvdXJjZSwgYW55IHNvdXJjZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhhdAorICAgICAgICAgICAgICAgIHNvdXJjZSAoaWYgbmVlZGVkKSwgd2hpY2ggc3BlY2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8KKyAgICAgICAgICAgICAgICBhcHBseSwgaG93IHRvIGNvbXBpbGUgdGhlIHNvdXJjZSBmaWxlcywgYW5kIGhvdyB0byBwYWNrYWdlIHRoZQorICAgICAgICAgICAgICAgIGNvbXBpbGVkIG91dHB1dC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIHNvbWV0aW1lcyB1c2VkIHRvIHJlZmVyIHRvIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIHdvcmQgInBhY2thZ2UiIGlzIHVzZWQgZm9yIHRoZSBwYWNrYWdlZAorICAgICAgICAgICAgICAgIG91dHB1dCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pcGs8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LmRlYjwvZmlsZW5hbWU+IGZpbGVzKSwKKyAgICAgICAgICAgICAgICB0aGlzIGRvY3VtZW50IGF2b2lkcyB1c2luZyB0aGUgdGVybSAicGFja2FnZSIgd2hlbiByZWZlcnJpbmcKKyAgICAgICAgICAgICAgICB0byByZWNpcGVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNvbXBvbmVudHMtY2xhc3Nlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2xhc3NlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgY29udGFpbiBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlZnVsIHRvIHNoYXJlIGJldHdlZW4gcmVjaXBlcyBmaWxlcy4KKyAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgY29tbW9uIHNldHRpbmdzIGZvciBhbnkgYXBwbGljYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIEF1dG90b29scyB1c2VzLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBwcm92aWRlcworICAgICAgICAgICAgICAgIGRldGFpbHMgYWJvdXQgY2xhc3NlcyBhbmQgaG93IHRvIHVzZSB0aGVtLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNvbXBvbmVudHMtY29uZmlndXJhdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgKDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+KSBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgZ292ZXJuIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGZhbGwgaW50byBzZXZlcmFsIGFyZWFzIHRoYXQgZGVmaW5lIG1hY2hpbmUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgY29tcGlsZXIgdHVuaW5nIG9wdGlvbnMsIGdlbmVyYWwgY29tbW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywKKyAgICAgICAgICAgICAgICBhbmQgdXNlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4sIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctbGF5ZXJzJz4KKyAgICAgICAgPHRpdGxlPkxheWVyczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMYXllcnMgYXJlIHJlcG9zaXRvcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRlZCBtZXRhZGF0YSAoaS5lLgorICAgICAgICAgICAgc2V0cyBvZiBpbnN0cnVjdGlvbnMpIHRoYXQgdGVsbCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBob3cKKyAgICAgICAgICAgIHRvIGJ1aWxkIGEgdGFyZ2V0LgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+bGF5ZXIgbW9kZWw8L2xpbms+CisgICAgICAgICAgICBmYWNpbGl0YXRlcyBjb2xsYWJvcmF0aW9uLCBzaGFyaW5nLCBjdXN0b21pemF0aW9uLCBhbmQgcmV1c2UKKyAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIExheWVycyBsb2dpY2FsbHkgc2VwYXJhdGUgaW5mb3JtYXRpb24gZm9yIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBhIGxheWVyIHRvIGhvbGQgYWxsIHRoZSBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgZm9yIGEgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZS4KKyAgICAgICAgICAgIElzb2xhdGluZyBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbGxvd3MgeW91IHRvIHNoYXJlCisgICAgICAgICAgICBvdGhlciBtZXRhZGF0YSBieSB1c2luZyBhIGRpZmZlcmVudCBsYXllciB3aGVyZSB0aGF0IG1ldGFkYXRhCisgICAgICAgICAgICBtaWdodCBiZSBjb21tb24gYWNyb3NzIHNldmVyYWwgcGllY2VzIG9mIGhhcmR3YXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNYW55IGxheWVycyBleGlzdCB0aGF0IHdvcmsgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2NhZmZlbGxpLXN0YWdpbmcueW9jdG9wcm9qZWN0Lm9yZy9zb2Z0d2FyZS1vdmVydmlldy9sYXllcnMvJz5Zb2N0byBQcm9qZWN0IEN1cmF0ZWQgTGF5ZXIgSW5kZXg8L3VsaW5rPgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9icmFuY2gvbWFzdGVyL2xheWVycy8nPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+CisgICAgICAgICAgICBib3RoIGNvbnRhaW4gbGF5ZXJzIGZyb20gd2hpY2ggeW91IGNhbiB1c2Ugb3IgbGV2ZXJhZ2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGNvbnZlbnRpb24sIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCBmb2xsb3cgYSBzcGVjaWZpYyBmb3JtLgorICAgICAgICAgICAgQ29uZm9ybWluZyB0byBhIGtub3duIHN0cnVjdHVyZSBhbGxvd3MgQml0QmFrZSB0byBtYWtlIGFzc3VtcHRpb25zCisgICAgICAgICAgICBkdXJpbmcgYnVpbGRzIG9uIHdoZXJlIHRvIGZpbmQgdHlwZXMgb2YgbWV0YWRhdGEuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgcHJvY2VkdXJlcyBhbmQgbGVhcm4gYWJvdXQgdG9vbHMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+KSBmb3IgY3JlYXRpbmcgbGF5ZXJzIHN1aXRhYmxlCisgICAgICAgICAgICBmb3IgdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9Im9wZW5lbWJlZGRlZC1idWlsZC1zeXN0ZW0tYnVpbGQtY29uY2VwdHMiPgorICAgICAgICA8dGl0bGU+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb25jZXB0czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgaW5zaWRlIHRoZSBidWlsZAorICAgICAgICAgICAgcHJvY2VzcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBBdCB0aGUgaGVhcnQgb2YgdGhlIGJ1aWxkIHN5c3RlbSBpcyBCaXRCYWtlLCB0aGUgdGFzayBleGVjdXRvci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHJlcHJlc2VudHMgdGhlIGhpZ2gtbGV2ZWwgd29ya2Zsb3cgb2YgYQorICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBleHBhbmRzIG9uIHRoZSBmdW5kYW1lbnRhbCBpbnB1dCwKKyAgICAgICAgICAgIG91dHB1dCwgcHJvY2VzcywgYW5kIG1ldGFkYXRhIGxvZ2ljYWwgYmxvY2tzIHRoYXQgbWFrZSB1cCB0aGUKKyAgICAgICAgICAgIHdvcmtmbG93LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmEgaWQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nIiBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgYnVpbGQncyB3b3JrZmxvdyBjb25zaXN0cyBvZiBzZXZlcmFsIGZ1bmN0aW9uYWwKKyAgICAgICAgICAgIGFyZWFzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEgeW91IGNhbiB1c2UgdG8gY29udHJvbCB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWV0YWRhdGEgTGF5ZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFZhcmlvdXMgbGF5ZXJzIHRoYXQgcHJvdmlkZSBzb2Z0d2FyZSwgbWFjaGluZSwgYW5kCisgICAgICAgICAgICAgICAgICAgIGRpc3RybyBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVwc3RyZWFtIHJlbGVhc2VzLCBsb2NhbCBwcm9qZWN0cywgYW5kIFNDTXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm9jZXNzZXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYmxvY2sgZXhwYW5kcyBvbiBob3cgQml0QmFrZSBmZXRjaGVzIHNvdXJjZSwgYXBwbGllcworICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBjb21wbGV0ZXMgY29tcGlsYXRpb24sIGFuYWx5emVzIG91dHB1dCBmb3IgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGdlbmVyYXRlcyBjcm9zcy1kZXZlbG9wbWVudCB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZSBGZWVkczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyBjb250YWluaW5nIG91dHB1dCBwYWNrYWdlcyAoUlBNLCBERUIgb3IgSVBLKSwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2Ugb3IgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspLCBwcm9kdWNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmZWVkcyBjYW4gYWxzbyBiZSBjb3BpZWQgYW5kIHNoYXJlZCB1c2luZyBhIHdlYgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgb3Igb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgaW1hZ2VzIG9uIGRldmljZXMgYXQgcnVudGltZSBpZiBydW50aW1lIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbWFnZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSB3b3JrZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyb3NzLWRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHByb2R1Y2VkIGFsb25nIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2Ugb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0idXNlci1jb25maWd1cmF0aW9uIj4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2VyIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVc2VyIGNvbmZpZ3VyYXRpb24gaGVscHMgZGVmaW5lIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBUaHJvdWdoIHVzZXIgY29uZmlndXJhdGlvbiwgeW91IGNhbiB0ZWxsIEJpdEJha2UgdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCisgICAgICAgICAgICAgICAgd2hlcmUgdG8gc3RvcmUgZG93bmxvYWRlZCBzb3VyY2UsIGFuZCBvdGhlciBidWlsZCBwcm9wZXJ0aWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhbiBleHBhbmRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAiVXNlciBDb25maWd1cmF0aW9uIiBib3ggb2YgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPjoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI0LjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICBjb21wbGV0ZSBhIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSA8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKKyAgICAgICAgICAgICAgICB0aGUgIlBva3kgRGlyZWN0b3J5LiIKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgb3IgeW91IGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgcmVsZWFzZSwgeW91IGNhbiBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnkgdG8gYmUgbmFtZWQKKyAgICAgICAgICAgICAgICBhbnl0aGluZyB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBkaXNjdXNzaW9uLCB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgdXNlcyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgIG5hbWUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFBva3kgcmVwb3NpdG9yeSBpcyBwcmltYXJpbHkgYW4gYWdncmVnYXRpb24gb2YgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgUG9reSBjb250YWlucworICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdCBoYXMgZXhhbXBsZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlc2UgZXhhbXBsZSBmaWxlcyBhcmUgdXNlZCBhcyBhIGJhc2lzIGZvciBjcmVhdGluZyBhY3R1YWwKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIHdoZW4geW91IHNvdXJjZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb3VyY2luZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0IGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSBmb3IgYWxsIGl0cyB3b3JrIGR1cmluZworICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBUaGUgQnVpbGQgRGlyZWN0b3J5IGhhcyBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGNyZWF0ZWQgb25seSBpZiB2ZXJzaW9ucworICAgICAgICAgICAgICAgIGRvIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXQgdGhlIHRpbWUgeW91CisgICAgICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCisgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVwb3NpdG9yaWVzLCBzb21lIHVzZXJzIG1pZ2h0IGJlIGZhbWlsaWFyIHdpdGgKKyAgICAgICAgICAgICAgICBydW5uaW5nIHRoZSA8ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICBpbiB0aGUgY29udGV4dCBvZiBzZXBhcmF0ZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29lLWNvcmUnPk9wZW5FbWJlZGRlZC1Db3JlPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgQml0QmFrZSByZXBvc2l0b3JpZXMgcmF0aGVyIHRoYW4gYSBzaW5nbGUgUG9reSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgZGlzY3Vzc2lvbiBhc3N1bWVzIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgZnJvbQorICAgICAgICAgICAgICAgIHdpdGhpbiBhIGNsb25lZCBvciB1bnBhY2tlZCB2ZXJzaW9uIG9mIFBva3kuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGVyZSB0aGUgc2NyaXB0IGlzIHNvdXJjZWQsIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIHN1Yi1zY3JpcHRzIGFyZSBjYWxsZWQgdG8gc2V0IHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAoWW9jdG8gb3IgT3BlbkVtYmVkZGVkKS4KKyAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBzY3JpcHQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IGluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICBwb2t5IGRpcmVjdG9yeSBzZXRzIHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkgYW5kIHNlZWRzIHRoZQorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSAoaWYgbmVjZXNzYXJ5KSB3aXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICBmb3IgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZSB3aGljaCBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBsb2NhdGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHByb3ZpZGVzIG1hbnkKKyAgICAgICAgICAgICAgICBiYXNpYyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgYSBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhIGZldy4KKyAgICAgICAgICAgICAgICBUbyBzZWUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgaW4gYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBjcmVhdGVkIGJ5IHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSc+PGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRhcmdldCBNYWNoaW5lIFNlbGVjdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgT3V0cHV0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EaXN0cmlidXRpb24gUG9saWN5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWNrYWdpbmcgRm9ybWF0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TREsgVGFyZ2V0IEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRyYSBJbWFnZSBQYWNrYWdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBjYW4gYWxzbyBiZSBzZXQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9hdXRvLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0ZWxscyBCaXRCYWtlIHdoYXQKKyAgICAgICAgICAgICAgICBsYXllcnMgeW91IHdhbnQgY29uc2lkZXJlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsYXllcnMgbGlzdGVkIGluIHRoaXMgZmlsZSBpbmNsdWRlIGxheWVycworICAgICAgICAgICAgICAgIG1pbmltYWxseSBuZWVkZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbXVzdCBtYW51YWxseSBhZGQgYW55IGN1c3RvbSBsYXllcnMgeW91IGhhdmUKKyAgICAgICAgICAgICAgICBjcmVhdGVkLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZpbGVzIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gYXJlIG5vdCBjcmVhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgdG8gY3JlYXRlIHRoYXQgeW91cnNlbGYuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHR5cGljYWxseSBjcmVhdGVkIGJ5CisgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gY29uZmlndXJlIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc2V2ZXJhbCBidWlsZCBlbnZpcm9ubWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGV5IHNoYXJlZCBzb21lIGNvbW1vbiBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHQgYnVpbGQgcHJvcGVydGllcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgaXMgcGVyaGFwcyB0aGUgcGFja2FnaW5nIGZvcm1hdCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgdXNlZnVsIHNjZW5hcmlvIGZvciB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdG8gZXh0ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgcGF0aCB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIHdoZW4gQml0QmFrZSBsb29rcyBmb3IgTWV0YWRhdGEgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgaXQgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZCBhcHBsaWVzCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGNvbW1vbiBjb25maWd1cmF0aW9ucyBmb3VuZCBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zIGluIGEgcGFydGljdWxhciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBhbHRlciB0aGUgc2ltaWxhciBjb25maWd1cmF0aW9ucyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYnVpbGQgZGlyZWN0b3J5J3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHVzdWFsbHkgY3JlYXRlZCBhbmQgd3JpdHRlbiB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2V0dGluZ3MgcHV0IGludG8gdGhlIGZpbGUgYXJlIHR5cGljYWxseSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgYXMgeW91IHdvdWxkIGZpbmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGVkaXQgYWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZnVydGhlciBkZWZpbmUKKyAgICAgICAgICAgICAgICBhbnkgcGFydGljdWxhciBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgcmVwcmVzZW50ZWQgYnkgdGhlICJVc2VyIENvbmZpZ3VyYXRpb24gRWRpdHMiCisgICAgICAgICAgICAgICAgYm94IGluIHRoZSBmaWd1cmUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4geW91IGxhdW5jaCB5b3VyIGJ1aWxkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCBCaXRCYWtlIHNvcnRzIG91dCB0aGUgY29uZmlndXJhdGlvbnMgdG8gdWx0aW1hdGVseQorICAgICAgICAgICAgICAgIGRlZmluZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgICAgIHJlYWRzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGluIGEgc3BlY2lmaWMgb3JkZXI6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQW5kLCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIG5vcm1hbCBhc3NpZ25tZW50IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIHJ1bGVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhJz5TeW50YXggYW5kIE9wZXJhdG9yczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgZmlsZXMgYXJlIHBhcnNlZCBpbiBhIHNwZWNpZmljIG9yZGVyLCB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzIGZvciB0aGUgc2FtZSB2YXJpYWJsZSBjb3VsZCBiZSBhZmZlY3RlZC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZAorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHNldAorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiB0byBkaWZmZXJlbnQgdmFsdWVzLAorICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhlIGJ1aWxkIHN5c3RlbSBwYXJzZXMgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFmdGVyIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gaXMgYXNzaWduZWQgdGhlIHZhbHVlIGZyb20KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9Im1ldGFkYXRhLW1hY2hpbmUtY29uZmlndXJhdGlvbi1hbmQtcG9saWN5LWNvbmZpZ3VyYXRpb24iPgorICAgICAgICAgICAgPHRpdGxlPk1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzZWN0aW9uIGRlc2NyaWJlZCB0aGUgdXNlciBjb25maWd1cmF0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgZGVmaW5lIEJpdEJha2UncyBnbG9iYWwgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGxheWVycyB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgdXNlcyB0byBmdXJ0aGVyIGNvbnRyb2wgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBwcm92aWRlIE1ldGFkYXRhIGZvciB0aGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAorICAgICAgICAgICAgICAgIHBvbGljaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aHJlZSB0eXBlcyBvZiBsYXllciBpbnB1dCBleGlzdHMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlbSBiZWxvdyB0aGUgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz46CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ldGFkYXRhICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gKyBQYXRjaGVzKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgbGF5ZXJzIGNvbnRhaW5pbmcgdXNlci1zdXBwbGllZCByZWNpcGUgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBhbmQgYXBwZW5kIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYSBzb2Z0d2FyZSBsYXllciBtaWdodCBiZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLXF0NS9tZXRhLXF0NSc+PGZpbGVuYW1lPm1ldGEtcXQ1PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXJzLyc+T3BlbkVtYmVkZGVkIExheWVyIEluZGV4PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGlzIGZvciB2ZXJzaW9uIDUuMCBvZiB0aGUgcG9wdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnF0LmlvL0Fib3V0X1F0Jz5RdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBmcmFtZXdvcmsgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNrdG9wLCBlbWJlZGRlZCBhbmQgbW9iaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWNoaW5lIEJTUCBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgbGF5ZXJzIChpLmUuICJCU1AgTGF5ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIGZpZ3VyZSkgcHJvdmlkaW5nIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGluZm9ybWF0aW9uIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgZ29vZCBleGFtcGxlIG9mIGEgQlNQIGxheWVyIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdncy1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLXBva3knPlBva3kgUmVmZXJlbmNlIERpc3RyaWJ1dGlvbjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwJz48ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9saWN5IENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiBMYXllcnMgKGkuZS4gIkRpc3RybyBMYXllciIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZmlndXJlKSBwcm92aWRpbmcgdG9wLWxldmVsIG9yIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljaWVzIGZvciB0aGUgaW1hZ2VzIG9yIFNES3MgYmVpbmcgYnVpbHQgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBQb2t5IFJlZmVyZW5jZSBEaXN0cmlidXRpb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm8gbGF5ZXIgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS1wb2t5Jz48ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIGRpc3RybyBsYXllciBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgZGlzdHJvIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mJz48ZmlsZW5hbWU+cG9reS5jb25mPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWluIG1hbnkgcG9saWN5IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFBva3kgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgdGhlc2UgdGhyZWUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPjoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2xheWVyLWlucHV0LnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjhpbiIgZGVwdGg9IjhpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYWxsIGxheWVycyBoYXZlIGEgc2ltaWxhciBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgVGhleSBhbGwgY29udGFpbiBhIGxpY2Vuc2luZyBmaWxlCisgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT4pIGlmIHRoZSBsYXllciBpcyB0byBiZQorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkLCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFzIGdvb2QKKyAgICAgICAgICAgICAgICBwcmFjdGljZSBhbmQgZXNwZWNpYWxseSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUgZGlzdHJpYnV0ZWQsIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSwgYW5kIHJlY2lwZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIGFib3V0IHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBmb3IgbGF5ZXJzIHVzZWQgd2l0aAorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy15b3VyLW93bi1sYXllcic+Q3JlYXRpbmcgWW91ciBPd24gTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBnZW5lcmFsIGRpc2N1c3Npb24gb24gbGF5ZXJzIGFuZCB0aGUgbWFueSBsYXllcnMgZnJvbQorICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBjYW4gZHJhdywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvdmVydmlldy1sYXllcnMnPkxheWVyczwvbGluaz4iIGFuZAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+VGhlIFlvY3RvIFByb2plY3QgTGF5ZXIgTW9kZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb25zIGJvdGggZWFybGllciBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGV4cGxvcmVkIHRoZSBwcmV2aW91cyBsaW5rcywgeW91IGRpc2NvdmVyZWQgc29tZQorICAgICAgICAgICAgICAgIGFyZWFzIHdoZXJlIG1hbnkgbGF5ZXJzIHRoYXQgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZXhpc3QuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyI+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgYWxzbyBzaG93cyBsYXllcnMgY2F0ZWdvcml6ZWQgdW5kZXIgIllvY3RvIE1ldGFkYXRhIExheWVycy4iCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIExheWVycyBleGlzdCBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgTGF5ZXIgSW5kZXguCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZWl0aGVyIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsCisgICAgICAgICAgICAgICAgICAgIGluIG5hdHVyZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgcGFydCBvZiB0aGUgdXNlciBjb25maWd1cmF0aW9uLCB0byBmaW5kIHdoYXQgbGF5ZXJzIGl0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHVzaW5nIGFzIHBhcnQgb2YgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0iZGlzdHJvLWxheWVyIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RGlzdHJvIExheWVyPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlzdHJpYnV0aW9uIGxheWVyIHByb3ZpZGVzIHBvbGljeSBjb25maWd1cmF0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgaXNvbGF0ZSB0aGVzZSB0eXBlcyBvZgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbnRvIHRoZWlyIG93biBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MgeW91IHByb3ZpZGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgc2ltaWxhciBzZXR0aW5ncyB0aGF0IEJpdEJha2UgZmluZHMgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgcHJvdmlkZXMgc29tZSBleHBsYW5hdGlvbiBhbmQgcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgICBmb3Igd2hhdCB5b3UgdHlwaWNhbGx5IGZpbmQgaW4gdGhlIGRpc3RyaWJ1dGlvbiBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Y2xhc3Nlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgaG9sZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgY2FuIGJlIHNoYXJlZCBhbW9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdXIgcmVjaXBlcyBpbmhlcml0IGEgY2xhc3MsIHRoZXkgdGFrZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zIGZvciB0aGF0IGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNsYXNzIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPmNvbmY6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgaG9sZHMgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vPHJlcGxhY2VhYmxlPmRpc3RybzwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBkaXN0cmlidXRpb24td2lkZSBpbmNsdWRlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5yZWNpcGVzLSo6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMgdGhhdCBhZmZlY3QgY29tbW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY291bGQgaW5jbHVkZSByZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgZGlzdHJpYnV0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgY3VzdG9tIGltYWdlIHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGVzIG9mIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGFyZSA8ZmlsZW5hbWU+cmVjaXBlcy1jb3JlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnJlY2lwZXMtZXh0cmE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWVyYXJjaHkgYW5kIGNvbnRlbnRzIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4gdmFyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIHRoZXNlIGRpcmVjdG9yaWVzIGNvbnRhaW4gcmVjaXBlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiPC9maWxlbmFtZT4pLCByZWNpcGUgYXBwZW5kIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pLCBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGRpc3Ryby1zcGVjaWZpYyBmb3IgY29uZmlndXJhdGlvbiBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImJzcC1sYXllciI+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllciBwcm92aWRlcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIGluIHRoaXMgbGF5ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIG9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEEgY29tbW9uIHN0cnVjdHVyZSBvciBmb3JtIGlzIGRlZmluZWQgZm9yIEJTUCBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBpdCBtdXN0IG1lZXQgc29tZSBzdHJ1Y3R1cmFsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllcidzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhbmQsIG9mIGNvdXJzZSwgdGhlIGxheWVyCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBsYXllciBpcyBkZWRpY2F0ZWQgdG8gc3BlY2lmaWMgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICBieSBmdW5jdGlvbjogPGZpbGVuYW1lPnJlY2lwZXMtYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgY2FuIGV4aXN0IGZvciBtdWx0aXBsZSBmb3JtZmFjdG9ycywgZ3JhcGhpY3MKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBzeXN0ZW1zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIGZpZ3VyZSBzaG93cyBzZXZlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIG5vdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIGRpcmVjdG9yaWVzIGFwcGVhciBpbiBhbGwgQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNvZnR3YXJlLWxheWVyIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U29mdHdhcmUgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzb2Z0d2FyZSBsYXllciBwcm92aWRlcyB0aGUgTWV0YWRhdGEgZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgcGFja2FnZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGRvZXMgbm90IGluY2x1ZGUgTWV0YWRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZGlzdHJpYnV0aW9uIG9yIHRoZSBtYWNoaW5lLCB3aGljaCBhcmUgZm91bmQgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgYW55IHJlY2lwZXMsIGFwcGVuZCBmaWxlcywgYW5kCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMsIHRoYXQgeW91ciBwcm9qZWN0IG5lZWRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJzb3VyY2VzLWRldi1lbnZpcm9ubWVudCI+CisgICAgICAgICAgICA8dGl0bGU+U291cmNlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYW4KKyAgICAgICAgICAgICAgICBpbWFnZSBvciBhbnkgdGFyZ2V0LCBpdCBtdXN0IGJlIGFibGUgdG8gYWNjZXNzIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgcmVwcmVzZW50cyBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlICJVcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzIiwKKyAgICAgICAgICAgICAgICAiTG9jYWwgUHJvamVjdHMiLCBhbmQgIlNDTXMgKG9wdGlvbmFsKSIgYm94ZXMuCisgICAgICAgICAgICAgICAgVGhlIGZpZ3VyZSByZXByZXNlbnRzIG1pcnJvcnMsIHdoaWNoIGFsc28gcGxheSBhIHJvbGUgaW4KKyAgICAgICAgICAgICAgICBsb2NhdGluZyBzb3VyY2UgZmlsZXMsIHdpdGggdGhlICJTb3VyY2UgTWF0ZXJpYWxzIiBib3guCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggc291cmNlIGZpbGVzIGFyZSB1bHRpbWF0ZWx5IG9yZ2FuaXplZCBpcworICAgICAgICAgICAgICAgIGEgZnVuY3Rpb24gb2YgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZvciByZWxlYXNlZCBzb2Z0d2FyZSwgcHJvamVjdHMgdGVuZCB0byB1c2UKKyAgICAgICAgICAgICAgICB0YXJiYWxscyBvciBvdGhlciBhcmNoaXZlZCBmaWxlcyB0aGF0IGNhbiBjYXB0dXJlIHRoZQorICAgICAgICAgICAgICAgIHN0YXRlIG9mIGEgcmVsZWFzZSBndWFyYW50ZWVpbmcgdGhhdCBpdCBpcyBzdGF0aWNhbGx5CisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQuCisgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGZvciBhIHByb2plY3QgdGhhdCBpcyBtb3JlIGR5bmFtaWMgb3IKKyAgICAgICAgICAgICAgICBleHBlcmltZW50YWwgaW4gbmF0dXJlLCBhIHByb2plY3QgbWlnaHQga2VlcCBzb3VyY2UgZmlsZXMgaW4gYQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgY29udHJvbGxlZCBieSBhIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSkgc3VjaCBhcworICAgICAgICAgICAgICAgIEdpdC4KKyAgICAgICAgICAgICAgICBQdWxsaW5nIHNvdXJjZSBmcm9tIGEgcmVwb3NpdG9yeSBhbGxvd3MgeW91IHRvIGNvbnRyb2wKKyAgICAgICAgICAgICAgICB0aGUgcG9pbnQgaW4gdGhlIHJlcG9zaXRvcnkgKHRoZSByZXZpc2lvbikgZnJvbSB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICB3YW50IHRvIGJ1aWxkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIEZpbmFsbHksIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBtaWdodCBleGlzdCwgd2hpY2ggd291bGQKKyAgICAgICAgICAgICAgICBnaXZlIHRoZSBjb25zdW1lciBhIGNob2ljZSB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGdldAorICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byBzb3VyY2UgZmlsZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgdGhhdCBwb2ludHMgdG8gdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBhcmVhIHRoYXQgcGxheXMgYSBzaWduaWZpY2FudCByb2xlIGluIHdoZXJlIHNvdXJjZQorICAgICAgICAgICAgICAgIGZpbGVzIGNvbWUgZnJvbSBpcyBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGlzIGEgY2FjaGUgdGhhdCBjYW4gaG9sZCBwcmV2aW91c2x5IGRvd25sb2FkZWQKKyAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGluc3RydWN0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgIHRhcmJhbGxzIGZyb20gR2l0IHJlcG9zaXRvcmllcywgd2hpY2ggaXMgbm90IHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgYmVoYXZpb3IsIGFuZCBzdG9yZSB0aGVtIGluIHRoZSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJz48ZmlsZW5hbWU+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBKdWRpY2lvdXMgdXNlIG9mIGEgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4KKyAgICAgICAgICAgICAgICBzYXZlIHRoZSBidWlsZCBzeXN0ZW0gYSB0cmlwIGFjcm9zcyB0aGUgSW50ZXJuZXQgd2hlbiBsb29raW5nCisgICAgICAgICAgICAgICAgZm9yIGZpbGVzLgorICAgICAgICAgICAgICAgIEEgZ29vZCBtZXRob2QgZm9yIHVzaW5nIGEgZG93bmxvYWQgZGlyZWN0b3J5IGlzIHRvIGhhdmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gcG9pbnQgdG8gYW4gYXJlYSBvdXRzaWRlIG9mIHlvdXIKKyAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgRG9pbmcgc28gYWxsb3dzIHlvdSB0byBzYWZlbHkgZGVsZXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiBuZWVkZWQgd2l0aG91dCBmZWFyIG9mIHJlbW92aW5nIGFueSBkb3dubG9hZGVkIHNvdXJjZSBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGRlZXBlciBsb29rIGludG8gdGhlCisgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIGFuZCB0aGUgbWlycm9ycy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBzb3VyY2UgZmlsZSBhcmVhIG9mIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz46CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXBzdHJlYW0tcHJvamVjdC1yZWxlYXNlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVwc3RyZWFtIFByb2plY3QgUmVsZWFzZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVwc3RyZWFtIHByb2plY3QgcmVsZWFzZXMgZXhpc3QgYW55d2hlcmUgaW4gdGhlIGZvcm0gb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWQgZmlsZSAoZS5nLiB0YXJiYWxsIG9yIHppcCBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgY29ycmVzcG9uZCB0byBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlndXJlIHVzZXMgc3BlY2lmaWMgcmVsZWFzZXMgZWFjaCBmb3IKKyAgICAgICAgICAgICAgICAgICAgQnVzeUJveCwgUXQsIGFuZCBEYnVzLgorICAgICAgICAgICAgICAgICAgICBBbiBhcmNoaXZlIGZpbGUgY2FuIGJlIGZvciBhbnkgcmVsZWFzZWQgcHJvZHVjdCB0aGF0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICBidWlsdCB1c2luZyBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2NhbC1wcm9qZWN0cyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkxvY2FsIFByb2plY3RzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMb2NhbCBwcm9qZWN0cyBhcmUgY3VzdG9tIGJpdHMgb2Ygc29mdHdhcmUgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGJpdHMgcmVzaWRlIHNvbWV3aGVyZSBsb2NhbCB0byBhIHByb2plY3QgLSBwZXJoYXBzCisgICAgICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIHVzZXIgY2hlY2tzIGluIGl0ZW1zIChlLmcuCisgICAgICAgICAgICAgICAgICAgIGEgbG9jYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBkZXZlbG9wbWVudCBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBncm91cCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBjYW5vbmljYWwgbWV0aG9kIHRocm91Z2ggd2hpY2ggdG8gaW5jbHVkZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIHByb2plY3QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB0byBpbmNsdWRlIHRoYXQgbG9jYWwgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHVzZSBlaXRoZXIgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYQorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZSB0byBvdmVycmlkZSBvciBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBwb2ludCB0byB0aGUgbG9jYWwgZGlyZWN0b3J5IG9uIHlvdXIgZGlzayB0byBwdWxsCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSB3aG9sZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzY21zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U291cmNlIENvbnRyb2wgTWFuYWdlcnMgKE9wdGlvbmFsKTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBwbGFjZSBmcm9tIHdoaWNoIHRoZSBidWlsZCBzeXN0ZW0gY2FuIGdldCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaXMgd2l0aAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JiLWZldGNoZXJzJz5mZXRjaGVyczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGVtcGxveWluZyB2YXJpb3VzIFNvdXJjZSBDb250cm9sIE1hbmFnZXJzIChTQ01zKSBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIEdpdCBvciBTdWJ2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICBJbiBzdWNoIGNhc2VzLCBhIHJlcG9zaXRvcnkgaXMgY2xvbmVkIG9yIGNoZWNrZWQgb3V0LgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW5zaWRlIEJpdEJha2UgdXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlIGFyZ3VtZW50J3MgcHJlZml4IHRvIGRldGVybWluZSB0aGUgY29ycmVjdAorICAgICAgICAgICAgICAgICAgICBmZXRjaGVyIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGdlbmVyYXRlIHRhcmJhbGxzIGZvciBHaXQgcmVwb3NpdG9yaWVzIGFuZCBwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gZmV0Y2hpbmcgYSByZXBvc2l0b3J5LCBCaXRCYWtlIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGRldGVybWluZSB0aGUgc3BlY2lmaWMgcmV2aXNpb24gZnJvbSB3aGljaCB0bworICAgICAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzb3VyY2UtbWlycm9ycyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBNaXJyb3Iocyk8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFR3byBraW5kcyBvZiBtaXJyb3JzIGV4aXN0OiBwcmUtbWlycm9ycyBhbmQgcmVndWxhcgorICAgICAgICAgICAgICAgICAgICBtaXJyb3JzLgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlc2UsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBjaGVja3MgcHJlLW1pcnJvcnMgYmVmb3JlIGxvb2tpbmcgdXBzdHJlYW0gZm9yIGFueQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFByZS1taXJyb3JzIGFyZSBhcHByb3ByaWF0ZSB3aGVuIHlvdSBoYXZlIGEgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBhIGRpcmVjdG9yeSBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgQSBQcmUtbWlycm9yIHR5cGljYWxseSBwb2ludHMgdG8gYSBzaGFyZWQgZGlyZWN0b3J5IHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgdG8geW91ciBvcmdhbml6YXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJlZ3VsYXIgbWlycm9ycyBjYW4gYmUgYW55IHNpdGUgYWNyb3NzIHRoZSBJbnRlcm5ldAorICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgbG9jYXRpb24gZm9yIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBjb2RlIHNob3VsZCB0aGUgcHJpbWFyeSBzaXRlIG5vdCBiZSBmdW5jdGlvbmluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgc29tZSByZWFzb24gb3IgYW5vdGhlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0icGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQiPgorICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2UgRmVlZHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBhbiBpbWFnZSBvciBhbgorICAgICAgICAgICAgICAgIFNESywgaXQgZ2V0cyB0aGUgcGFja2FnZXMgZnJvbSBhIHBhY2thZ2UgZmVlZCBhcmVhIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz4KKyAgICAgICAgICAgICAgICBzaG93cyB0aGlzIHBhY2thZ2UgZmVlZHMgYXJlYSBpbiB0aGUgdXBwZXItcmlnaHQgY29ybmVyLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gbG9va3MgYSBsaXR0bGUgY2xvc2VyIGludG8gdGhlIHBhY2thZ2UgZmVlZHMKKyAgICAgICAgICAgICAgICBhcmVhIHVzZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBhcmVhOgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjZpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUGFja2FnZSBmZWVkcyBhcmUgYW4gaW50ZXJtZWRpYXJ5IHN0ZXAgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgY2xhc3NlcyB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICAgIGRpZmZlcmVudCBwYWNrYWdlIHR5cGVzLCBhbmQgeW91IHNwZWNpZnkgd2hpY2ggY2xhc3NlcyB0bworICAgICAgICAgICAgICAgIGVuYWJsZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgQmVmb3JlIHBsYWNpbmcgdGhlIHBhY2thZ2VzIGludG8gcGFja2FnZSBmZWVkcywKKyAgICAgICAgICAgICAgICB0aGUgYnVpbGQgcHJvY2VzcyB2YWxpZGF0ZXMgdGhlbSB3aXRoIGdlbmVyYXRlZCBvdXRwdXQgcXVhbGl0eQorICAgICAgICAgICAgICAgIGFzc3VyYW5jZSBjaGVja3MgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlIGZlZWQgYXJlYSByZXNpZGVzIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8gdGVtcG9yYXJpbHkgc3RvcmUKKyAgICAgICAgICAgICAgICBwYWNrYWdlcyBpcyBkZXRlcm1pbmVkIGJ5IGEgY29tYmluYXRpb24gb2YgdmFyaWFibGVzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHBhY2thZ2UgbWFuYWdlciBpbiB1c2UuCisgICAgICAgICAgICAgICAgU2VlIHRoZSAiUGFja2FnZSBGZWVkcyIgYm94IGluIHRoZSBpbGx1c3RyYXRpb24gYW5kIG5vdGUgdGhlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gdGhlIHJpZ2h0IG9mIHRoYXQgYXJlYS4KKyAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIGRlZmluZXMgd2hlcmUgcGFja2FnZSBmaWxlcyBhcmUKKyAgICAgICAgICAgICAgICBrZXB0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBEZWZpbmVkIGFzIDxmaWxlbmFtZT50bXAvZGVwbG95PC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUExPWV9ESVJfKjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCwgdGhlIHBhY2thZ2UgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgc3ViLWZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdmVuIFJQTSwgSVBLLCBvciBERUIgcGFja2FnaW5nIGFuZCB0YXJiYWxsIGNyZWF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQTE9ZX0RJUl9SUE0nPjxmaWxlbmFtZT5ERVBMT1lfRElSX1JQTTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQTE9ZX0RJUl9ERUInPjxmaWxlbmFtZT5ERVBMT1lfRElSX0RFQjwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfVEFSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGFyZSB1c2VkLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzdWItZm9sZGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBwYWNrYWdlcyBjb3VsZCBleGlzdCBmb3IgdGhlIGk1ODYgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHFlbXV4ODYgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfZGViJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2tzIHRvIGdlbmVyYXRlIHBhY2thZ2VzIGFuZCBwbGFjZSB0aGVtIGludG8gdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBob2xkaW5nIGFyZWEgKGUuZy4gPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfaXBrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmb3IgSVBLIHBhY2thZ2VzKS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfZGViPC9maWxlbmFtZT48L3VsaW5rPiIsCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2lwayc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfaXBrPC9maWxlbmFtZT48L3VsaW5rPiIsCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3JwbSc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfcnBtPC9maWxlbmFtZT48L3VsaW5rPiIsCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfdGFyPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsCisgICAgICAgICAgICAgICAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSBzY2VuYXJpbyB3aGVyZSBhbiBJUEsgcGFja2FnaW5nCisgICAgICAgICAgICAgICAgbWFuYWdlciBpcyBiZWluZyB1c2VkIGFuZCBwYWNrYWdlIGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvcgorICAgICAgICAgICAgICAgIGJvdGggaTU4NiBhbmQgcWVtdXg4NiBleGlzdC4KKyAgICAgICAgICAgICAgICBQYWNrYWdlcyBmb3IgdGhlIGk1ODYgYXJjaGl0ZWN0dXJlIGFyZSBwbGFjZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvaTU4NjwvZmlsZW5hbWU+LCB3aGlsZSBwYWNrYWdlcworICAgICAgICAgICAgICAgIGZvciB0aGUgcWVtdXg4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZC90bXAvZGVwbG95L2lway9xZW11eDg2PC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYml0YmFrZS1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkJpdEJha2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBwcm9kdWNlIGltYWdlcyBhbmQgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0cyAoU0RLcykuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+LAorICAgICAgICAgICAgICAgIHRoZSBCaXRCYWtlIGFyZWEgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IGVhY2ggb2YgdGhvc2UgYXJlYXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIGRvY3VtZW50YXRpb24gZXhpc3RzIGZvciB0aGUgQml0QmFrZSB0b29sLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgcmVmZXJlbmNlIG1hdGVyaWFsIG9uIEJpdEJha2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHN0YWdlcyBvZiBidWlsZGluZyBhIHJlY2lwZSBhcmUgdG8gZmV0Y2ggYW5kCisgICAgICAgICAgICAgICAgICAgIHVucGFjayB0aGUgc291cmNlIGNvZGU6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNi41aW4iIGRlcHRoPSI1aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIGZldGNoIHRoZSBzb3VyY2UgZmlsZXMgYW5kIHVucGFjayB0aGVtIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgcGFydCBvZiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRha2VzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtIG9mIHRoZSBmaWxlIGZvciB0aGUgcmVjaXBlIGFuZCBpbnNlcnRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW0gaW50byB0aGUgc2lnbmF0dXJlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhbnkgbG9jYWwgZmlsZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiB0YXNrIGFuZCBhbGwgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBldmVyeXRoaW5nIGlzIGFjY29tcGxpc2hlZCBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LCB3aGljaCBoYXMgYSBkZWZpbmVkIHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUgQnVpbGQgRGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1idWlsZCc+PGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGFuIGFyZWEgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdW5wYWNrZWQgc291cmNlIGNvZGUgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoaXMgYXJlYSBmb3IgYSByZWNpcGUncyB1bnBhY2tlZCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhhdCBkaXJlY3RvcnkgZm9yIGFueSBnaXZlbiByZWNpcGUgaXMgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHNldmVyYWwgZGlmZmVyZW50IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZWNlZGluZyBmaWd1cmUgYW5kIHRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZQorICAgICAgICAgICAgICAgICAgICB0aGUgQnVpbGQgRGlyZWN0b3J5J3MgaGllcmFyY2h5OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGRpcmVjdG9yeSB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHBlcmZvcm1zIGFsbCBpdHMgd29yayBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGJhc2UgZGlyZWN0b3J5IGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbHQgcGFja2FnZSBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGV2ZW50dWFsIGRlc3RpbmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb3IgcGFja2FnZXMgKGkuZS4gbWFjaGluZSBhcmNoaXRlY3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTREssIG9yIHNwZWNpZmljIG1hY2hpbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPiB2YXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSB2YXJpYWJsZSdzIGRlc2NyaXB0aW9uIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UQVJHRVRfT1MnPjxmaWxlbmFtZT5UQVJHRVRfT1M8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB2YWx1ZSB3b3VsZCBiZSAibGludXgiIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYtcG9reS1saW51eCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gaGF2ZSBtdWx0aXBsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB3aGVuIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgaW5wdXQgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gcmVwcmVzZW50cyB0aGUgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGEgcmVjaXBlIChpLmUuIGRvZXMgdGhlIHdvcmsgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSB1bnBhY2tlZCBzb3VyY2UgZmlsZXMgZm9yIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJQTic+PGZpbGVuYW1lPkJQTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5CUE48L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9uIG9mIHRoZSA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYnV0IHdpdGggY29tbW9uIHByZWZpeGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ZXMgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBmaWd1cmUsIG5vdGljZSB0aGF0IHR3byBzYW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWVzIGV4aXN0OiBvbmUgYmFzZWQgb24gcGFja2FnZSBhcmNoaXRlY3R1cmUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPikgYW5kIG9uZSBiYXNlZCBvbiBhCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIChpLmUuIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVuZGVybHlpbmcgc3RydWN0dXJlcyBhcmUgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVudGlhdG9yIGJlaW5nIHdoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGlzIHVzaW5nIGFzIGEgYnVpbGQgdGFyZ2V0IChlLmcuIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSwgYSBidWlsZCBob3N0LCBhbiBTREssIG9yIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UGF0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2Ugc291cmNlIGNvZGUgaXMgZmV0Y2hlZCBhbmQgdW5wYWNrZWQsIEJpdEJha2UgbG9jYXRlcworICAgICAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBzb3VyY2UgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB1c2VzIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIGFwcGxpY2FibGUgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgcHJvY2Vzc2luZyBmb3IgcGF0Y2ggZmlsZXMgYXNzdW1lcyB0aGUgZmlsZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZSB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBwYXJhbWV0ZXJzIHRvCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZSB0aGUgd2F5IHRoZSBidWlsZCBzeXN0ZW0gcmVjb2duaXplcyBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaW5kcyBhbmQgYXBwbGllcyBtdWx0aXBsZSBwYXRjaGVzIGZvciBhIHNpbmdsZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIGl0IGxvY2F0ZXMgdGhlIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmaW5lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBzZXQgb2YgZGlyZWN0b3JpZXMgdGhhdCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoIGZvciBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBmb3VuZCwgcGF0Y2hlcyBhcmUgYXBwbGllZCB0byB0aGUgcmVjaXBlJ3Mgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgc291cmNlIGRpcmVjdG9yaWVzIGFyZQorICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5Tb3VyY2UgRmV0Y2hpbmc8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIHBhdGNoZXMgYW5kIGhvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHByb2Nlc3NlcyBwYXRjaGVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPlBhdGNoaW5nIENvZGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZGV2dG9vbC11c2UtZGV2dG9vbC1tb2RpZnktdG8tbW9kaWZ5LXRoZS1zb3VyY2Utb2YtYW4tZXhpc3RpbmctY29tcG9uZW50Jz5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gdG8gTW9kaWZ5IHRoZSBTb3VyY2Ugb2YgYW4gRXhpc3RpbmcgQ29tcG9uZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBtYW51YWwgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3VzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQgdG8gUGF0Y2ggdGhlIEtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1jb21waWxhdGlvbi1hbmQtc3RhZ2luZy1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uLCBDb21waWxhdGlvbiwgYW5kIFN0YWdpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIHBhdGNoZWQsIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBPbmNlIGNvbXBpbGF0aW9uIG9jY3VycywgdGhlIGZpbGVzIGFyZSBjb3BpZWQgdG8gYSBob2xkaW5nCisgICAgICAgICAgICAgICAgICAgIGFyZWEgKHN0YWdlZCkgaW4gcHJlcGFyYXRpb24gZm9yIHBhY2thZ2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdGFza3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wcmVwYXJlX3JlY2lwZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC91bGluaz48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgc2V0cyB1cCB0aGUgdHdvIHN5c3Jvb3RzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPikgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcGFja2FnaW5nIHBoYXNlIHRoZSBzeXNyb290cyBjYW4gY29udGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza3Mgb2YgdGhlIHJlY2lwZXMgb24gd2hpY2ggdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIHRhc2tzIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzeXNyb290IGV4aXN0cyBmb3IgYm90aCB0aGUgdGFyZ2V0IGFuZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlIGJpbmFyaWVzLCB3aGljaCBydW4gb24gdGhlIGhvc3Qgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29uZmlndXJlcyB0aGUgc291cmNlIGJ5IGVuYWJsaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGluZyBhbnkgYnVpbGQtdGltZSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBjYW4gY29tZSBmcm9tIHRoZSByZWNpcGUgaXRzZWxmIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VsbCBhcyBmcm9tIGFuIGluaGVyaXRlZCBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBzb2Z0d2FyZSBpdHNlbGYgbWlnaHQgY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGZvciB3aGljaCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb25maWd1cmF0aW9ucyBoYW5kbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBhcmUgc3BlY2lmaWMgdG8gY29uZmlndXJhdGlvbnMgZm9yIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIGJlaW5nIGJ1aWx0IGJ5IHRoZSByZWNpcGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIHdvcmtzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzJz5oZXJlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGEgY29uZmlndXJhdGlvbiB0YXNrIGhhcyBiZWVuIHNhdGlzZmllZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGNvbXBpbGVzIHRoZSBzb3VyY2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsYXRpb24gb2NjdXJzIGluIHRoZSBkaXJlY3RvcnkgcG9pbnRlZCB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgdGhlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMsIGJ5IGRlZmF1bHQsIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBjb21waWxhdGlvbiBjb21wbGV0ZXMsIEJpdEJha2UgZXhlY3V0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvcGllcyBmaWxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZCBwbGFjZXMgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgaG9sZGluZyBhcmVhIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2luZyBvY2N1cnMgbGF0ZXIgdXNpbmcgZmlsZXMgZnJvbSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGluZyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3BhY2thZ2Utc3BsaXR0aW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2UgU3BsaXR0aW5nPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBzb3VyY2UgY29kZSBpcyBjb25maWd1cmVkLCBjb21waWxlZCwgYW5kIHN0YWdlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBhbmFseXplcyB0aGUgcmVzdWx0cyBhbmQgc3BsaXRzIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgaW50byBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFza3MgY29tYmluZSB0byBhbmFseXplIHRoZSBmaWxlcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHNwbGl0IHRoZW0gaW50byBzdWJzZXRzIGJhc2VkIG9uIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhbmQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEFuYWx5c2lzIGludm9sdmVzIHRoZSBmb2xsb3dpbmcgYXMgd2VsbCBhcyBvdGhlciBpdGVtczoKKyAgICAgICAgICAgICAgICAgICAgc3BsaXR0aW5nIG91dCBkZWJ1Z2dpbmcgc3ltYm9scywgbG9va2luZyBhdCBzaGFyZWQgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcywgYW5kIGxvb2tpbmcgYXQgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT4gdGFzayBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWV0YWRhdGEgYmFzZWQgb24gdGhlIGFuYWx5c2lzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGNhbiBnZW5lcmF0ZSB0aGUgZmluYWwgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgc3RhZ2VzIChjb3BpZXMpIGEgc3Vic2V0IG9mIHRoZSBmaWxlcyBpbnN0YWxsZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzeXNyb290LgorICAgICAgICAgICAgICAgICAgICBXb3JraW5nLCBzdGFnZWQsIGFuZCBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMKKyAgICAgICAgICAgICAgICAgICAgYW5kIHBhY2thZ2Ugc3BsaXR0aW5nIHByb2Nlc3MgdXNlIHNldmVyYWwgYXJlYXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0QnPjxmaWxlbmFtZT5QS0dEPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPikgZm9yIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHRoZXkgYXJlIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREVTVFdPUksnPjxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZW1wb3Jhcnkgd29yayBhcmVhIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ2RhdGE8L2ZpbGVuYW1lPikgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgdG8gc2F2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RFU1QnPjxmaWxlbmFtZT5QS0dERVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFyZW50IGRpcmVjdG9yeSAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+KSBmb3IgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciB0aGV5IGhhdmUgYmVlbiBzcGxpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzaGFyZWQsIGdsb2JhbC1zdGF0ZSBkaXJlY3RvcnkgdGhhdCBob2xkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2luZyBtZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdpbmcgcHJvY2VzcyBjb3BpZXMgbWV0YWRhdGEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGFyZWEgd2hlcmUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWVzIGdsb2JhbGx5IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19ESVJfSE9TVCc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX0hPU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGZvciB0aGUgc3lzcm9vdCBmb3IgdGhlIHN5c3RlbSBvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcG9uZW50IGlzIGJ1aWx0IHRvIHJ1biAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19ESVJfTkFUSVZFJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfTkFUSVZFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBmb3IgdGhlIHN5c3Jvb3QgdXNlZCB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyBmb3IgdGhlIGJ1aWxkIGhvc3QgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0RJUl9UQVJHRVQnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9UQVJHRVQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGZvciB0aGUgc3lzcm9vdCB1c2VkIHdoZW4gYSBjb21wb25lbnQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gYSBzeXN0ZW0gYW5kIGl0IGdlbmVyYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgZm9yIHlldCBhbm90aGVyIG1hY2hpbmUgKGUuZy4gY3Jvc3MtY2FuYWRpYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVmaW5lcyB0aGUgZmlsZXMgdGhhdCBnbyBpbnRvIGVhY2ggcGFja2FnZSBpbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGRldGFpbHMgb24gaG93IHRoaXMgaXMgYWNjb21wbGlzaGVkLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGxvb2sgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MnPjxmaWxlbmFtZT5wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgcGFja2FnZXMgYmVpbmcgY3JlYXRlZCAoUlBNLCBERUIsCisgICAgICAgICAgICAgICAgICAgIG9yIElQSyksIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgYWN0dWFsIHBhY2thZ2VzIGFuZCBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkIGFyZWEsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbCBvbiB0aGF0IHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgY3JlYXRpbmcgZmVlZHMgZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIHN1Y2ggZmVlZHMgdXN1YWxseSByZXF1aXJlcyBzb21lIGtpbmQgb2YgZmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgbWVjaGFuaXNtIHRoYXQgd291bGQgdXBsb2FkIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGludG8gYW4gb2ZmaWNpYWwgcGFja2FnZSBmZWVkIChlLmcuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgw4VuZ3N0csO2bSBkaXN0cmlidXRpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhpZ2hseSBkaXN0cmlidXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIGlzIG5vdCBwcm92aWRlZCBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBwYWNrYWdlcyBhcmUgc3BsaXQgYW5kIHN0b3JlZCBpbiB0aGUgUGFja2FnZSBGZWVkcworICAgICAgICAgICAgICAgICAgICBhcmVhLCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBnZW5lcmF0ZSB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3LjVpbiIgZGVwdGg9IjcuNWluIiAvPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGNvbnNpc3RzIG9mIHNldmVyYWwgc3RhZ2VzIGFuZAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHNldmVyYWwgdGFza3MgYW5kIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChmaWxlIGFuZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlKSBmb3IgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayB1c2VzIHNldmVyYWwga2V5IHZhcmlhYmxlcyB0byBoZWxwIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdCBvZiBwYWNrYWdlcyB0byBhY3R1YWxseSBpbnN0YWxsOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3V0IHRoZSBiYXNlIHNldCBvZiBwYWNrYWdlcyBmcm9tIHdoaWNoIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCBmcm9tIHRoZSBQYWNrYWdlIEZlZWRzIGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHBhY2thZ2VzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgZmVhdHVyZXMgbWFwIHRvIGFkZGl0aW9uYWwgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFja2FnZSBiYWNrZW5kIChlLmcuIFJQTSwgREVCLCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQSykgdG8gdXNlIGFuZCBjb25zZXF1ZW50bHkgaGVscHMgZGV0ZXJtaW5lIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbG9jYXRlIHBhY2thZ2VzIHdpdGhpbiB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9MSU5HVUFTJz48ZmlsZW5hbWU+SU1BR0VfTElOR1VBUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgbGFuZ3VhZ2UocykgZm9yIHdoaWNoIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBzdXBwb3J0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciBmb3IgaW5zdGFsbGF0aW9uIGludG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0gdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0aW9uIGFuZCB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHByb3ZpZGluZyB0aGUgZmluYWwgbGlzdCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsLAorICAgICAgICAgICAgICAgICAgICB0aGUgcm9vdCBmaWxlIHN5c3RlbSBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQYWNrYWdlIGluc3RhbGxhdGlvbiBpcyB1bmRlciBjb250cm9sIG9mIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIgKGUuZy4gZG5mL3JwbSwgb3BrZywgb3IgYXB0L2Rwa2cpIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgICAgICAgICAgICAgd2hldGhlciBvciBub3QgcGFja2FnZSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3MsIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCwgdGhlIHBhY2thZ2UgbWFuYWdlcidzIGRhdGEgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGRlbGV0ZWQgZnJvbSB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBmaW5hbCBzdGFnZSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgcG9zdCBpbnN0YWxsYXRpb24gc2NyaXB0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBhcmUgcnVuLgorICAgICAgICAgICAgICAgICAgICBBbnkgc2NyaXB0cyB0aGF0IGZhaWwgdG8gcnVuIG9uIHRoZSBidWlsZCBob3N0IGFyZSBydW4gb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCB3aGVuIHRoZSB0YXJnZXQgc3lzdGVtIGlzIGZpcnN0IGJvb3RlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+cmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgbXVzdCBzdWNjZWVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IGR1cmluZyB0aGUgcGFja2FnZSBpbnN0YWxsYXRpb24gcGhhc2Ugc2luY2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBvbiB0aGUgdGFyZ2V0IGlzIHJlYWQtb25seS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHN0YWdlcyBvZiB0aGUgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+IHRhc2sKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlIHBvc3QgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgICAgICAgICAgUG9zdCBwcm9jZXNzaW5nIGluY2x1ZGVzIGNyZWF0aW9uIG9mIGEgbWFuaWZlc3QgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgKDxmaWxlbmFtZT4ubWFuaWZlc3Q8L2ZpbGVuYW1lPikgcmVzaWRlcworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIG91dCwgbGluZS1ieS1saW5lLCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBpcyB1c2VmdWwgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgZm9yIGV4YW1wbGUsIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGVzdHMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX01BTklGRVNUJz48ZmlsZW5hbWU+SU1BR0VfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPcHRpbWl6aW5nIHByb2Nlc3NlcyB0aGF0IGFyZSBydW4gYWNyb3NzIHRoZSBpbWFnZSBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2xpYnM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBwb3N0LXByb2Nlc3NpbmcgY29tbWFuZHMgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+Uk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBzaXplCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWJyYXJpZXMsIHdoaWxlIHRoZSA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBkeW5hbWljIGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcworICAgICAgICAgICAgICAgICAgICB0byByZWR1Y2Ugc3RhcnQgdXAgdGltZSBvZiBleGVjdXRhYmxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBidWlsdCwgcHJvY2Vzc2luZyBiZWdpbnMgb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGR5bmFtaWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIGJhc2VkCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBpbWFnZSB0eXBlcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcm9jZXNzIHR1cm5zIGV2ZXJ5dGhpbmcgaW50byBhbiBpbWFnZSBmaWxlIG9yIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzIGFuZCBjYW4gY29tcHJlc3MgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICByZWR1Y2UgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb3JtYXRzIHVzZWQgZm9yIHRoZSByb290IGZpbGVzeXN0ZW0gZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2lvbiBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGZvcm1hdHMgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYSBkeW5hbWljYWxseSBjcmVhdGVkIHRhc2sgd2hlbiBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW1hZ2UgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiB3b3VsZAorICAgICAgICAgICAgICAgICAgICB0YWtlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbWFnZV88cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgU28sIGlmIHRoZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IGFzIHNwZWNpZmllZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB3ZXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQ0PC9maWxlbmFtZT4sIHRoZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgdGFzaworICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2ltYWdlX2V4dDQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGFzayBpbnZvbHZlZCBpbiBpbWFnZSBjcmVhdGlvbiBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlLWNvbXBsZXRlJz48ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb21wbGV0ZXMgdGhlIGltYWdlIGJ5IGFwcGx5aW5nIGFueSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBwb3N0IHByb2Nlc3NpbmcgYXMgZGVmaW5lZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCc+PGZpbGVuYW1lPklNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlIG91dHB1dCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZW50aXJlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBpcyBydW4gdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPlBzZXVkbzwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIHVuZGVyIFBzZXVkbyBlbnN1cmVzIHRoYXQgdGhlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGhhdmUgY29ycmVjdCBvd25lcnNoaXAuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TREsgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgaW5zdGFsbGVyIHNjcmlwdHMgZm9yIGJvdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIHN0YW5kYXJkIFNESyBhbmQgdGhlIGV4dGVuc2libGUgU0RLIChlU0RLKToKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyIgd2lkdGg9IjlpbiIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzaywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKQorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgorICAgICAgICAgICAgICAgICAgICBzZXZlcmFsIHN0YWdlcyBhbmQgZGVwZW5kcyBvbiBtYW55IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wb3B1bGF0ZV9zZGsnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc2RrX2V4dCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIHVzZSB0aGVzZSBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGFjdHVhbGx5IGluc3RhbGwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaWFibGVzIGxpc3RlZCBpbiB0aGUgZmlndXJlLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+IHRhc2sgaGVscHMgY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsgYW5kIGhhbmRsZXMgdHdvIHBhcnRzOiBhIHRhcmdldCBwYXJ0IGFuZCBhCisgICAgICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBwYXJ0IGlzIHRoZSBwYXJ0IGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgIGFuZCBpbmNsdWRlcyBsaWJyYXJpZXMgYW5kIGhlYWRlcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2sgaGVscHMKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50bHkgdGhhbiBpdHMgY291bnRlciBwYXJ0IGRvZXMgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZXh0ZW5zaWJsZSBTREssIHRoZSB0YXNrIGVuY2Fwc3VsYXRlcyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXNrcyBwZXJmb3JtIHNvbWUgY2xlYW51cCBhZnRlciB3aGljaCBhIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBhbmQgYW55IG5lZWRlZCBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgb3V0cHV0IGlzIHRoZSBDcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGF0aW9uIHNjcmlwdCAoPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUpLCB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCisgICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNUQU1QU19ESVInPjxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0YW1wIGZpbGUncyBmaWxlbmFtZSBpcyBkZXRlcm1pbmVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUgZW5kIG9mIHRoZSBuYW1lIGNvbnNpc3RzIG9mIHRoZSB0YXNrJ3MKKyAgICAgICAgICAgICAgICAgICAgbmFtZSBhbmQgY3VycmVudAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvdmVydmlldy1jaGVja3N1bXMnPmlucHV0IGNoZWNrc3VtPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9TSUdOQVRVUkVfSEFORExFUic+PGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgIk9FQmFzaWNIYXNoIiwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB0aGUgY2FzZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0byBiZSByZXJ1biwgQml0QmFrZSBjaGVja3MKKyAgICAgICAgICAgICAgICAgICAgaWYgYSBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgc3RhbXAgZmlsZSBleGlzdHMsIHRoZSB0YXNrJ3Mgb3V0cHV0IGlzCisgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQgdG8gZXhpc3QgYW5kIHN0aWxsIGJlIHZhbGlkLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHN0YW1wIG1lY2hhbmlzbSBpcyBtb3JlIGdlbmVyYWwgdGhhbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPlNldHNjZW5lIFRhc2tzIGFuZCBTaGFyZWQgU3RhdGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFtcCBmaWxlLCBub3QganVzdCB0YXNrcyB0aGF0IGNhbiBiZSBhY2NlbGVyYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgc3N0YXRlIGNhY2hlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SG93ZXZlciwgeW91IHNob3VsZCByZWFsaXplIHRoYXQgc3RhbXAgZmlsZXMgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlc2UgZmlsZXMgZG8gbm90IHJlY29yZCB0YXNrIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgdGFzayBvdXRwdXQgd291bGQgdXN1YWxseSBiZSBzb21ld2hlcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiBzb21lIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+LikKKyAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgdGhlIHNzdGF0ZSBjYWNoZSBtZWNoYW5pc20gYWRkcyBpcyBhIHdheSB0byBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFNpbmNlIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhCisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB3aWxsIGFsc28gcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zIHRhc2tzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mCisgICAgICAgICAgICAgICAgICAgIGRhdGUiLCB5b3UgY2FuIG1hcmsgaXQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPm5vc3RhbXA8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmZsYWcuCisgICAgICAgICAgICAgICAgICAgIElmIHNvbWUgb3RoZXIgdGFzayBkZXBlbmRzIG9uIHN1Y2ggYSB0YXNrLCB0aGVuIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGFzayB3aWxsIGFsc28gYWx3YXlzIGJlIGNvbnNpZGVyZWQgb3V0IG9mIGRhdGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IG5vdCBiZSB3aGF0IHlvdSB3YW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncworICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi12aWV3aW5nLXRhc2stdmFyaWFibGUtZGVwZW5kZW5jaWVzJz5WaWV3aW5nIFRhc2sgVmFyaWFibGUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gb2YgdGFza3Mgc28gZmFyIGFzc3VtZXMgdGhhdCBCaXRCYWtlIG5lZWRzCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIG5vIGF2YWlsYWJsZSBwcmVidWlsdCBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgIGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIG9iamVjdHMgYXJlIHVzdWFsbHkgbWFkZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlcyBhZmZlY3Rpbmcgc3N0YXRlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPl9zZXRzY2VuZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBpcyBhIHZlcnNpb24gb2YgdGhlIHRhc2sgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgYW5kIHNpbXBseSBwbGFjZSBhIHNldCBvZiBmaWxlcyBpbnRvIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucyBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgKGUuZy4gZ2VuZXJhdGluZyBwYWNrYWdlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2spLgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciBjYXNlcywgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSAoZS5nLiBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9yIGEKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzaykgc2luY2UgdGhlIHdvcmsgaW52b2x2ZWQgd291bGQgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICB0aGFuIHRoZSB1bmRlcmx5aW5nIHRhc2suCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBidWlsZCBzeXN0ZW0sIHRoZSBjb21tb24gdGFza3MgdGhhdCBoYXZlIHNldHNjZW5lCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzIGFyZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBOb3RpY2UgdGhhdCB0aGVzZSB0YXNrcyByZXByZXNlbnQgbW9zdCBvZiB0aGUgdGFza3Mgd2hvc2UKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIGFuIGVuZCByZXN1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gaGFzIGtub3dsZWRnZSBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGFza3MgYW5kIG90aGVyIHByZWNlZGluZyB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIEJpdEJha2UgcnVucworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcsIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcnVuIGFueSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFza3MuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgcnVuLCBCaXRCYWtlIG5lZWRzIHRvIHJ1biB0aG9zZSBvdGhlciB0YXNrcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgYmVjb21lcyBtb3JlIGNvbXBsaWNhdGVkIGlmIGV2ZXJ5dGhpbmcgY2FuIGNvbWUKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBhbiBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseQorICAgICAgICAgICAgICAgICAgICBub3QgcmVxdWlyZWQgYXQgYWxsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGRvIG5vdCBuZWVkIGEgY29tcGlsZXIgb3IgbmF0aXZlIHRvb2xzLAorICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHF1aWx0LCBpZiBub3RoaW5nIGV4aXN0cyB0byBjb21waWxlIG9yIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIGFyZSBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiB0YXNrIGRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhhbmRsZSBhbGwgdGhlc2UgY29tcGxleGl0aWVzLCBCaXRCYWtlIHJ1bnMgaW4gdHdvCisgICAgICAgICAgICAgICAgICAgIHBoYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGlzIHRoZSAic2V0c2NlbmUiIHN0YWdlLgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgICAgICBmb3IgYW55IHRhcmdldHMgaXQgaXMgcGxhbm5pbmcgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBhIGZhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdGhpbmcgZXhpc3RzLCB0aGUgc2Vjb25kIHBoYXNlLCB3aGljaCBpcyB0aGUgc2V0c2NlbmUKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2UsIGNvbXBsZXRlcyBhbmQgdGhlIG1haW4gYnVpbGQgcHJvY2VlZHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIG9iamVjdHMgYXJlIGZvdW5kIGluIHRoZSBzc3RhdGUgY2FjaGUsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgd29ya3MgYmFja3dhcmRzIGZyb20gdGhlIGVuZCB0YXJnZXRzIHNwZWNpZmllZCBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGFuIGltYWdlIGlzIGJlaW5nIGJ1aWx0LCB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGZpcnN0IGxvb2tzIGZvciB0aGUgcGFja2FnZXMgbmVlZGVkIGZvciB0aGF0IGltYWdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdG9vbHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBjb21waWxlciBpcyBub3QgZXZlbiBkb3dubG9hZGVkLgorICAgICAgICAgICAgICAgICAgICBJZiBzb21ldGhpbmcgd2FzIGZvdW5kIHRvIGJlIHVuYXZhaWxhYmxlLCBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgb3Igc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIGJ1aWxkIHN5c3RlbSB0aGVuCisgICAgICAgICAgICAgICAgICAgIHRyaWVzIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbQorICAgICAgICAgICAgICAgICAgICB0aGUgY2FjaGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgYnkgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSENIRUNLX0ZVTkNUSU9OJz48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NFVFNDRU5FX0RFUFZBTElEJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwIHRoZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBwYXNzZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgVHJ1ZSBvciBGYWxzZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+SW1hZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgYnVpbGQgc3lzdGVtIGFyZSBjb21wcmVzc2VkIGZvcm1zCisgICAgICAgICAgICAgICAgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBhbmQgYXJlIHJlYWR5IHRvIGJvb3Qgb24gYSB0YXJnZXQKKyAgICAgICAgICAgICAgICBkZXZpY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgdGhhdCBCaXRCYWtlIG91dHB1dCwgaW4gcGFydCwgY29uc2lzdHMgb2YgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNS41aW4iIGRlcHRoPSI1LjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiBleGFtcGxlIGltYWdlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPC9ub3RlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyB3cml0ZXMgaW1hZ2VzIG91dCB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIGFzIHNob3duIGluIHRoZSBmaWd1cmUuCisgICAgICAgICAgICAgICAgVGhpcyBmb2xkZXIgY29udGFpbnMgYW55IGZpbGVzIGV4cGVjdGVkIHRvIGJlIGxvYWRlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaW1hZ2VzCisgICAgICAgICAgICAgICAgZm9yIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgYmluYXJ5IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfSU1BR0VUWVBFJz48ZmlsZW5hbWU+S0VSTkVMX0lNQUdFVFlQRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRldGVybWluZXMgdGhlIG5hbWluZyBzY2hlbWUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhpcyB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSB2YXJpZXR5IG9mIG5hbWluZyBzdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSBpbWFnZSBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZSB0YXJnZXQgZGV2aWNlIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmJ6MjwvZmlsZW5hbWU+IGZpbGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHR5cGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+a2VybmVsLW1vZHVsZXM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRhcmJhbGxzIHRoYXQgY29udGFpbiBhbGwgdGhlIG1vZHVsZXMgYnVpbHQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHN1cHByZXNzZWQgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NT0RVTEVfVEFSQkFMTF9ERVBMT1knPjxmaWxlbmFtZT5NT0RVTEVfVEFSQkFMTF9ERVBMT1k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMCIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIElmIGFwcGxpY2FibGUgdG8gdGhlIHRhcmdldCBtYWNoaW5lLCBib290bG9hZGVycworICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGluZyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUgYm9vdGxvYWRlcnMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3ltbGlua3M8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXIgY29udGFpbnMgYSBzeW1ib2xpYyBsaW5rIHRoYXQgcG9pbnRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlIGZvciBlYWNoIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBsaW5rcyBtaWdodCBiZSB1c2VmdWwgZm9yIGV4dGVybmFsIHNjcmlwdHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBvYnRhaW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGVhY2ggZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz4sCisgICAgICAgICAgICAgICAgdGhlIG91dHB1dCBsYWJlbGVkICJBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREsiIHJlcHJlc2VudHMgYW4KKyAgICAgICAgICAgICAgICBTREsuCisgICAgICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UKKyAgICAgICAgICAgICAgICBidWlsZCBhbiBleHRlbnNpYmxlIFNESyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCisgICAgICAgICAgICAgICAgb3IgYSBzdGFuZGFyZCBTREsgKGUuZy4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGsucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNy4yNWluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWMgZm9ybSBvZiB0aGlzIG91dHB1dCBpcyBhIHNldCBvZiBmaWxlcyB0aGF0CisgICAgICAgICAgICAgICAgaW5jbHVkZXMgYSBzZWxmLWV4dHJhY3RpbmcgU0RLIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSwgaG9zdCBhbmQgdGFyZ2V0IG1hbmlmZXN0IGZpbGVzLAorICAgICAgICAgICAgICAgIGFuZCBmaWxlcyB1c2VkIGZvciBTREsgdGVzdGluZy4KKyAgICAgICAgICAgICAgICBXaGVuIHRoZSBTREsgaW5zdGFsbGVyIGZpbGUgaXMgcnVuLCBpdCBpbnN0YWxscyB0aGUgU0RLLgorICAgICAgICAgICAgICAgIFRoZSBTREsgY29uc2lzdHMgb2YgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4sIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgorICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGNyb3NzLXRvb2xjaGFpbiBhcyB0aGUgImhvc3QiCisgICAgICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGxpYnJhcmllcyBhbmQgaGVhZGVycyBhcyB0aGUgInRhcmdldCIKKyAgICAgICAgICAgICAgICBwYXJ0IGJlY2F1c2UgdGhleSBhcmUgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICBpbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgdXNpbmcgdGhlIHRvb2xzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBzZXQgdXAgdGhpcyBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIG1ldGhvZHMgaW5jbHVkZSBkb3dubG9hZGluZyBwcmUtYnVpbHQgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXJzIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW5zIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWxsIHRoZSBvdXRwdXQgZmlsZXMgZm9yIGFuIFNESyBhcmUgd3JpdHRlbiB0byB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95L3NkazwvZmlsZW5hbWU+IGZvbGRlciBpbnNpZGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFzIHNob3duIGluIHRoZSBwcmV2aW91cyBmaWd1cmUuCisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIFNESywgc2V2ZXJhbCB2YXJpYWJsZXMgZXhpc3QgdGhhdCBoZWxwCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBhbgorICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19FWFRfVFlQRSc+PGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIGludG8gdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYWxsIHJlcXVpcmVkIHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWQgaW50byB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9QS0dEQVRBJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfUEtHREFUQTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpYmxlIFNESyBmb3IgYWxsIHJlY2lwZXMgaW4gdGhlICJ3b3JsZCIgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRoZSB0b29sY2hhaW4gaXMgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIHRvIHJlbW92ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgZ2xvYmFsbHkgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGxpc3QsIHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICBTREs6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIG1hY2hpbmUgb24gd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvIGNyZWF0ZSBwYWNrYWdlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+U0RLSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlICJ0YXJnZXQiIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdCBwYXJ0IG9mIHRoZSBTREsKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSB0aGUgU0RLLCBhIHNldCBvZiBkZWZhdWx0IHBhY2thZ2VzIGFwcGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbGxvd3MgeW91IHRvIGFkZCBtb3JlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSB0YXJnZXQgcGFydCBvZiB0aGUgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES1BBVEgnPjxmaWxlbmFtZT5TREtQQVRIPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSE9TVF9NQU5JRkVTVCc+PGZpbGVuYW1lPlNES19IT1NUX01BTklGRVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbHNvIHBsYXlzIGEgbWlub3Igcm9sZSBmb3IgZXh0ZW5zaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgU0RLIGRldmVsb3BtZW50IGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBtYWlubHkgdXNlZCBmb3IgdGhlIHN0YW5kYXJkIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX1RBUkdFVF9NQU5JRkVTVCc+PGZpbGVuYW1lPlNES19UQVJHRVRfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxzbyBwbGF5cyBhIG1pbm9yIHJvbGUgZm9yIGV4dGVuc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFNESyBkZXZlbG9wbWVudCBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgbWFpbmx5IHVzZWQgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbiI+CisgICAgICAgIDx0aXRsZT5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHlvdSB3aGVuIGl0IGNvbWVzIHRvCisgICAgICAgICAgICBjcmVhdGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5jcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zPC91bGluaz4uCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSB0ZWNobmljYWwgYmFja2dyb3VuZCBvbiBob3cKKyAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW5zLCB5b3UgY2FuIGFsc28gc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgbWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIHRvb2xjaGFpbnMgYXJlIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4KKyAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBXaXRoIGp1c3QgYSBmZXcgY29tbWFuZHMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMKKyAgICAgICAgICAgIHRoZXNlIG5lY2Vzc2FyeSB0b29sY2hhaW5zIGZvciB5b3UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgaGlnaC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudCByZWdhcmRpbmcKKyAgICAgICAgICAgIHRvb2xjaGFpbiBjb25zdHJ1Y3Rpb24gYW5kIHVzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIiB3aWR0aD0iOGluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNb3N0IG9mIHRoZSB3b3JrIG9jY3VycyBvbiB0aGUgQnVpbGQgSG9zdC4KKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1hY2hpbmUgdXNlZCB0byBidWlsZCBpbWFnZXMgYW5kIGdlbmVyYWxseSB3b3JrIHdpdGhpbgorICAgICAgICAgICAgdGhlIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgdG8gY3JlYXRlIGFuIGltYWdlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgdXNlcyB0aGUgaG9zdCA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4gY29tcGlsZXIgdG8gYm9vdHN0cmFwIGEKKyAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIG5hbWVkIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4gY29tcGlsZXIgaXMgd2hhdCBCaXRCYWtlIHVzZXMgdG8KKyAgICAgICAgICAgIGNvbXBpbGUgc291cmNlIGZpbGVzIHdoZW4gY3JlYXRpbmcgdGhlIHRhcmdldCBpbWFnZS4KKyAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IHNpbXBseSBhcyBhbgorICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY3Jvc3MtY29tcGlsZXIgdGhhdCBpcyB1c2VkIGludGVybmFsbHkKKyAgICAgICAgICAgIHdpdGhpbiBCaXRCYWtlIG9ubHkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgZXh0ZW5zaWJsZSBTREsgZG9lcyBub3QgdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zcy1jYW5hZGlhbjwvZmlsZW5hbWU+IHNpbmNlIHRoaXMgU0RLCisgICAgICAgICAgICAgICAgc2hpcHMgYSBjb3B5IG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgIHdpdGhpbiBpdCBjb250YWlucyA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjaGFpbiBvZiBldmVudHMgdGhhdCBvY2N1cnMgd2hlbiA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgIGJvb3RzdHJhcHBlZCBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnY2MgLT4gYmludXRpbHMtY3Jvc3MgLT4gZ2NjLWNyb3NzLWluaXRpYWwgLT4gbGludXgtbGliYy1oZWFkZXJzIC0+IGdsaWJjLWluaXRpYWwgLT4gZ2xpYmMgLT4gZ2NjLWNyb3NzIC0+IGdjYy1ydW50aW1lCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCdzIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlscy1jcm9zczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFyZSBtaW5pbXVtIGJpbmFyeSB1dGlsaXRpZXMgbmVlZGVkIGluIG9yZGVyIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT4gcGhhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEFuIGVhcmx5IHN0YWdlIG9mIHRoZSBib290c3RyYXAgcHJvY2VzcyBmb3IgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNyb3NzLWNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0YWdlIGJ1aWxkcyBlbm91Z2ggb2YgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgdGhlIEMgbGlicmFyeSwgYW5kIG90aGVyIHBpZWNlcyBuZWVkZWQgdG8gZmluaXNoIGJ1aWxkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBjcm9zcy1jb21waWxlciBpbiBsYXRlciBzdGFnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMgZGVzaWduZWQgdG8gcnVuIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgtbGliYy1oZWFkZXJzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnMgbmVlZGVkIGZvciB0aGUgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjLWluaXRpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBFbWJlZGRlZCBHTlUgQyBMaWJyYXJ5CisgICAgICAgICAgICAgICAgICAgIChHTElCQykgbmVlZGVkIHRvIGJvb3RzdHJhcCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIEdOVSBDIExpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgcmVzdWx0cyBpbiB0aGUgYWN0dWFsIGNyb3NzLWNvbXBpbGVyIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHdoZW4gaXQgYnVpbGRzIGFuIGltYWdlIGZvciBhIHRhcmdldGVkCisgICAgICAgICAgICAgICAgICAgIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHJlcGxhY2luZyB0aGlzIGNyb3NzIGNvbXBpbGVyIHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGN1c3RvbSB2ZXJzaW9uLCB5b3UgbXVzdCByZXBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0b29sIGlzIGFsc28gYSAibmF0aXZlIiBwYWNrYWdlIChpLmUuIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIGRlc2lnbmVkIHRvIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1ydW50aW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWUgbGlicmFyaWVzIHJlc3VsdGluZyBmcm9tIHRoZSB0b29sY2hhaW4gYm9vdHN0cmFwcGluZworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvZHVjZXMgYSBiaW5hcnkgdGhhdCBjb25zaXN0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcnVudGltZSBsaWJyYXJpZXMgbmVlZCBmb3IgdGhlIHRhcmdldGVkIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgYW4gaW5zdGFsbGVyIGZvcgorICAgICAgICAgICAgdGhlIHJlbG9jYXRhYmxlIFNESyB1c2VkIHRvIGRldmVsb3AgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBpbnN0YWxsZXIsIGl0IGluc3RhbGxzIHRoZSB0b29sY2hhaW4sIHdoaWNoCisgICAgICAgICAgICBjb250YWlucyB0aGUgZGV2ZWxvcG1lbnQgdG9vbHMgKGUuZy4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiwgYW5kIG90aGVyCisgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrLSo8L2ZpbGVuYW1lPiB0b29scyksCisgICAgICAgICAgICB3aGljaCBhcmUgdG9vbHMgbmF0aXZlIHRvIHRoZSBTREsgKGkuZS4gbmF0aXZlIHRvCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0FSQ0gnPjxmaWxlbmFtZT5TREtfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gY3Jvc3MtY29tcGlsZSBhbmQgdGVzdCB5b3VyIHNvZnR3YXJlLgorICAgICAgICAgICAgVGhlIGZpZ3VyZSBzaG93cyB0aGUgY29tbWFuZHMgeW91IHVzZSB0byBlYXNpbHkgYnVpbGQgb3V0IHRoaXMKKyAgICAgICAgICAgIHRvb2xjaGFpbi4KKyAgICAgICAgICAgIFRoaXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggbWlnaHQgb3IgbWlnaHQgbm90IGJlIHRoZSBzYW1lCisgICAgICAgICAgICBtYWNoaW5lIGFzIHRoZSBCdWlsZCBIb3N0LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHByZS1idWlsdCBpbWFnZXMgdGhhdCBzaGlwIHdpdGggdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgYWxyZWFkeSBjb250YWluIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgIGluc3RhbGxlcnMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUgaXMgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUgcmVsb2NhdGFibGUgdG9vbGNoYWluOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnY2MgLT4gYmludXRpbHMtY3Jvc3NzZGsgLT4gZ2NjLWNyb3Nzc2RrLWluaXRpYWwgLT4gbGludXgtbGliYy1oZWFkZXJzIC0+CisgICAgICAgIGdsaWJjLWluaXRpYWwgLT4gbmF0aXZlc2RrLWdsaWJjIC0+IGdjYy1jcm9zc3NkayAtPiBnY2MtY3Jvc3MtY2FuYWRpYW4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0J3MgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbnV0aWxzLWNyb3Nzc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXJlIG1pbmltdW0gYmluYXJ5IHV0aWxpdGllcyBuZWVkZWQgaW4gb3JkZXIgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPiBwaGFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQW4gZWFybHkgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciBjcmVhdGluZworICAgICAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgYnVpbGRzIGVub3VnaCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+IGFuZCBzdXBwb3J0aW5nIHBpZWNlcyBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgY2FuIHByb2R1Y2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkIGNyb3NzLWNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYSAibmF0aXZlIiBiaW5hcnkgdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVycyBuZWVkZWQgZm9yIHRoZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmMtaW5pdGlhbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBBbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay1nbGliYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstZ2xpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPiBpcyBhIHRyYW5zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYW5kIG5ldmVyIGxlYXZlcyB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgSXRzIHB1cnBvc2UgaXMgdG8gaGVscCBpbiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBldmVudHVhbCA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIsIHdoaWNoIGlzIHJlbG9jYXRhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYWxzbyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgZGVzaWduZWQgdG8gcnVuIG9uIHRoZSBidWlsZCBob3N0KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBydW4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdG9vbAorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBleGVjdXRhYmxlIGNvZGUgdGhhdCBydW5zIG9uIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBPbmx5IG9uZSBjcm9zcy1jYW5hZGlhbiBjb21waWxlciBpcyBwcm9kdWNlZCBwZXIgYXJjaGl0ZWN0dXJlCisgICAgICAgICAgICAgICAgICAgIHNpbmNlIHRoZXkgY2FuIGJlIHRhcmdldGVkIGF0IGRpZmZlcmVudCBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucworICAgICAgICAgICAgICAgICAgICB1c2luZyBjb25maWd1cmF0aW9ucyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2lyY3VtdmVudHMgdGhlIG5lZWQgZm9yIG11bHRpcGxlIGNvbXBpbGVycyBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICByZWR1Y2VzIHRoZSBzaXplIG9mIHRoZSB0b29sY2hhaW5zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCisgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW5zdGFsbGVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIGFwcGVuZGl4IGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ic2hhcmVkLXN0YXRlLWNhY2hlIj4KKyAgICAgICAgPHRpdGxlPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZXNpZ24sIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGJ1aWxkcyBldmVyeXRoaW5nIGZyb20KKyAgICAgICAgICAgIHNjcmF0Y2ggdW5sZXNzCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgY2FuIGRldGVybWluZSB0aGF0IHBhcnRzIGRvIG5vdCBuZWVkIHRvIGJlIHJlYnVpbHQuCisgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggaXMgYXR0cmFjdGl2ZSBhcyBpdCBtZWFucyBhbGwKKyAgICAgICAgICAgIHBhcnRzIGFyZSBidWlsdCBmcmVzaCBhbmQgbm8gcG9zc2liaWxpdHkgb2Ygc3RhbGUgZGF0YSBleGlzdHMgdGhhdAorICAgICAgICAgICAgY2FuIGNhdXNlIHByb2JsZW1zLgorICAgICAgICAgICAgV2hlbiBkZXZlbG9wZXJzIGhpdCBwcm9ibGVtcywgdGhleSB0eXBpY2FsbHkgZGVmYXVsdCBiYWNrIHRvCisgICAgICAgICAgICBidWlsZGluZyBmcm9tIHNjcmF0Y2ggc28gdGhleSBoYXZlIGEga25vdyBzdGF0ZSBmcm9tIHRoZQorICAgICAgICAgICAgc3RhcnQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIGZyb20gc2NyYXRjaCBpcyBib3RoIGFuIGFkdmFudGFnZSBhbmQgYQorICAgICAgICAgICAgZGlzYWR2YW50YWdlIHRvIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaAorICAgICAgICAgICAgZW5zdXJlcyB0aGF0IGV2ZXJ5dGhpbmcgaXMgY3VycmVudCBhbmQgc3RhcnRzIGZyb20gYSBrbm93biBzdGF0ZS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBhbHNvIHRha2VzIG11Y2ggbG9uZ2VyIGFzIGl0CisgICAgICAgICAgICBnZW5lcmFsbHkgbWVhbnMgcmVidWlsZGluZyB0aGluZ3MgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgbmVlZAorICAgICAgICAgICAgdG8gYmUgcmVidWlsdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50cyBzaGFyZWQgc3RhdGUgY29kZSB0aGF0IHN1cHBvcnRzCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZHMuCisgICAgICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGFuc3dlcnMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgcXVlc3Rpb25zIHRoYXQgd2VyZSBmdW5kYW1lbnRhbCByb2FkYmxvY2tzIHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZCBzdXBwb3J0IHN5c3RlbToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGF0IHBpZWNlcyBvZiB0aGUgc3lzdGVtIGhhdmUgY2hhbmdlZCBhbmQgd2hhdCBwaWVjZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBub3QgY2hhbmdlZD8KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIb3cgYXJlIGNoYW5nZWQgcGllY2VzIG9mIHNvZnR3YXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhvdyBhcmUgcHJlLWJ1aWx0IGNvbXBvbmVudHMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSByZWJ1aWx0CisgICAgICAgICAgICAgICAgICAgIGZyb20gc2NyYXRjaCB1c2VkIHdoZW4gdGhleSBhcmUgYXZhaWxhYmxlPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdGhlIGZpcnN0IHF1ZXN0aW9uLCB0aGUgYnVpbGQgc3lzdGVtIGRldGVjdHMgY2hhbmdlcyBpbiB0aGUKKyAgICAgICAgICAgICJpbnB1dHMiIHRvIGEgZ2l2ZW4gdGFzayBieSBjcmVhdGluZyBhIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIG9mCisgICAgICAgICAgICB0aGUgdGFzaydzIGlucHV0cy4KKyAgICAgICAgICAgIElmIHRoZSBjaGVja3N1bSBjaGFuZ2VzLCB0aGUgc3lzdGVtIGFzc3VtZXMgdGhlIGlucHV0cyBoYXZlIGNoYW5nZWQKKyAgICAgICAgICAgIGFuZCB0aGUgdGFzayBuZWVkcyB0byBiZSByZXJ1bi4KKyAgICAgICAgICAgIEZvciB0aGUgc2Vjb25kIHF1ZXN0aW9uLCB0aGUgc2hhcmVkIHN0YXRlIChzc3RhdGUpIGNvZGUgdHJhY2tzCisgICAgICAgICAgICB3aGljaCB0YXNrcyBhZGQgd2hpY2ggb3V0cHV0IHRvIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgb3V0cHV0IGZyb20gYSBnaXZlbiB0YXNrIGNhbiBiZSByZW1vdmVkLCB1cGdyYWRlZAorICAgICAgICAgICAgb3Igb3RoZXJ3aXNlIG1hbmlwdWxhdGVkLgorICAgICAgICAgICAgVGhlIHRoaXJkIHF1ZXN0aW9uIGlzIHBhcnRseSBhZGRyZXNzZWQgYnkgdGhlIHNvbHV0aW9uIGZvciB0aGUKKyAgICAgICAgICAgIHNlY29uZCBxdWVzdGlvbiBhc3N1bWluZyB0aGUgYnVpbGQgc3lzdGVtIGNhbiBmZXRjaCB0aGUgc3N0YXRlCisgICAgICAgICAgICBvYmplY3RzIGZyb20gcmVtb3RlIGxvY2F0aW9ucyBhbmQgaW5zdGFsbCB0aGVtIGlmIHRoZXkgYXJlIGRlZW1lZAorICAgICAgICAgICAgdG8gYmUgdmFsaWQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZG9lcyBub3QgbWFpbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYXMgcGFydCBvZiB0aGUgc2hhcmVkIHN0YXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBjb25zaWRlcmF0aW9ucyBleGlzdCB0aGF0IGFmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5pbmcgc2hhcmVkIHN0YXRlIGZlZWRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgYnVpbGQgc3lzdGVtIHdvcmtzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFuZCBjYW4gdHJhY2sgaW5jcmVtZW50aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29kZSBpbiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyBpcyBub3Qgc2ltcGxlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGVjaG5pcXVlcyB0aGF0IGhlbHAgeW91IHdvcmsgYXJvdW5kIGlzc3VlcyByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzaGFyZWQgc3RhdGUgY29kZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi12aWV3aW5nLW1ldGFkYXRhLXVzZWQtdG8tY3JlYXRlLXRoZS1pbnB1dC1zaWduYXR1cmUtb2YtYS1zaGFyZWQtc3RhdGUtdGFzayc+Vmlld2luZyBNZXRhZGF0YSBVc2VkIHRvIENyZWF0ZSB0aGUgSW5wdXQgU2lnbmF0dXJlIG9mIGEgU2hhcmVkIFN0YXRlIFRhc2s8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1pbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlLXRvLWZvcmNlLWEtdGFzay10by1ydW4nPkludmFsaWRhdGluZyBTaGFyZWQgU3RhdGUgdG8gRm9yY2UgYSBUYXNrIHRvIFJ1bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgYm90aCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiBnb2VzIGludG8gZGV0YWlsIGFib3V0IHRoZSBvdmVyYWxsCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZCBhcmNoaXRlY3R1cmUsIHRoZSBjaGVja3N1bXMgKHNpZ25hdHVyZXMpLCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBzdGF0ZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb25jZXB0cy1vdmVyYWxsLWFyY2hpdGVjdHVyZSc+CisgICAgICAgICAgICA8dGl0bGU+T3ZlcmFsbCBBcmNoaXRlY3R1cmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIGRldGVybWluaW5nIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBuZWVkIHRvIGJlIGJ1aWx0LAorICAgICAgICAgICAgICAgIEJpdEJha2Ugd29ya3Mgb24gYSBwZXItdGFzayBiYXNpcyByYXRoZXIgdGhhbiBhIHBlci1yZWNpcGUKKyAgICAgICAgICAgICAgICBiYXNpcy4KKyAgICAgICAgICAgICAgICBZb3UgbWlnaHQgd29uZGVyIHdoeSB1c2luZyBhIHBlci10YXNrIGJhc2lzIGlzIHByZWZlcnJlZCBvdmVyCisgICAgICAgICAgICAgICAgYSBwZXItcmVjaXBlIGJhc2lzLgorICAgICAgICAgICAgICAgIFRvIGhlbHAgZXhwbGFpbiwgY29uc2lkZXIgaGF2aW5nIHRoZSBJUEsgcGFja2FnaW5nIGJhY2tlbmQKKyAgICAgICAgICAgICAgICBlbmFibGVkIGFuZCB0aGVuIHN3aXRjaGluZyB0byBERUIuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2sgb3V0cHV0cyBhcmUgc3RpbGwgdmFsaWQuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2l0aCBhIHBlci1yZWNpcGUgYXBwcm9hY2gsIHRoZSBidWlsZCB3b3VsZCBub3QKKyAgICAgICAgICAgICAgICBpbmNsdWRlIHRoZSA8ZmlsZW5hbWU+LmRlYjwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHdvdWxkIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgd2hvbGUgYnVpbGQgYW5kCisgICAgICAgICAgICAgICAgcmVydW4gaXQuCisgICAgICAgICAgICAgICAgUmVydW5uaW5nIGV2ZXJ5dGhpbmcgaXMgbm90IHRoZSBiZXN0IHNvbHV0aW9uLgorICAgICAgICAgICAgICAgIEFsc28sIGluIHRoaXMgY2FzZSwgdGhlIGNvcmUgbXVzdCBiZSAidGF1Z2h0IiBtdWNoIGFib3V0CisgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGFza3MuCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBkb2VzIG5vdCBzY2FsZSB3ZWxsIGFuZCBkb2VzIG5vdCBhbGxvdyB1c2VycworICAgICAgICAgICAgICAgIHRvIGVhc2lseSBhZGQgbmV3IHRhc2tzIGluIGxheWVycyBvciBhcyBleHRlcm5hbCByZWNpcGVzCisgICAgICAgICAgICAgICAgd2l0aG91dCB0b3VjaGluZyB0aGUgcGFja2FnZWQtc3RhZ2luZyBjb3JlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNoZWNrc3Vtcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2hlY2tzdW1zIChTaWduYXR1cmVzKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgY29kZSB1c2VzIGEgY2hlY2tzdW0sIHdoaWNoIGlzIGEgdW5pcXVlCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlIG9mIGEgdGFzaydzIGlucHV0cywgdG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0bworICAgICAgICAgICAgICAgIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIGl0IGlzIGEgY2hhbmdlIGluIGEgdGFzaydzIGlucHV0cyB0aGF0IHRyaWdnZXJzIGEKKyAgICAgICAgICAgICAgICByZXJ1biwgdGhlIHByb2Nlc3MgbmVlZHMgdG8gZGV0ZWN0IGFsbCB0aGUgaW5wdXRzIHRvIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgdGhpcyB0dXJucyBvdXQgdG8gYmUgZmFpcmx5IGVhc3kgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhICJydW4iIHNoZWxsIHNjcmlwdCBmb3IgZWFjaCB0YXNrCisgICAgICAgICAgICAgICAgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGNoZWNrc3VtIHRoYXQgZ2l2ZXMgeW91IGEgZ29vZAorICAgICAgICAgICAgICAgIGlkZWEgb2Ygd2hlbiB0aGUgdGFzaydzIGRhdGEgY2hhbmdlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gY29tcGxpY2F0ZSB0aGUgcHJvYmxlbSwgdGhlcmUgYXJlIHRoaW5ncyB0aGF0IHNob3VsZCBub3QgYmUKKyAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiB0aGUgY2hlY2tzdW0uCisgICAgICAgICAgICAgICAgRmlyc3QsIHRoZXJlIGlzIHRoZSBhY3R1YWwgc3BlY2lmaWMgYnVpbGQgcGF0aCBvZiBhIGdpdmVuCisgICAgICAgICAgICAgICAgdGFzayAtIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgSXQgZG9lcyBub3QgbWF0dGVyIGlmIHRoZSB3b3JrIGRpcmVjdG9yeSBjaGFuZ2VzIGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3V0cHV0IGZvciB0YXJnZXQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgQWxzbywgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRoZSBvYmplY3RpdmUgb2YgbWFraW5nIG5hdGl2ZQorICAgICAgICAgICAgICAgIG9yIGNyb3NzIHBhY2thZ2VzIHJlbG9jYXRhYmxlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCb3RoIG5hdGl2ZSBhbmQgY3Jvc3MgcGFja2FnZXMgcnVuIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBjcm9zcyBwYWNrYWdlcyBnZW5lcmF0ZSBvdXRwdXQgZm9yIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgY2hlY2tzdW0gdGhlcmVmb3JlIG5lZWRzIHRvIGV4Y2x1ZGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIGZvciBleGNsdWRpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGlzIHRvCisgICAgICAgICAgICAgICAgc2V0IDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4gdG8gc29tZSBmaXhlZCB2YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIGNoZWNrc3VtIGZvciB0aGUgInJ1biIgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIHByb2JsZW0gcmVzdWx0cyBmcm9tIHRoZSAicnVuIiBzY3JpcHRzIGNvbnRhaW5pbmcKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMgdGhhdCBtaWdodCBvciBtaWdodCBub3QgZ2V0IGNhbGxlZC4KKyAgICAgICAgICAgICAgICBUaGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpZ3VyZXMgb3V0CisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJldHdlZW4gc2hlbGwgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIFRoaXMgY29kZSBpcyB1c2VkIHRvIHBydW5lIHRoZSAicnVuIiBzY3JpcHRzIGRvd24gdG8gdGhlCisgICAgICAgICAgICAgICAgbWluaW11bSBzZXQsIHRoZXJlYnkgYWxsZXZpYXRpbmcgdGhpcyBwcm9ibGVtIGFuZCBtYWtpbmcgdGhlCisgICAgICAgICAgICAgICAgInJ1biIgc2NyaXB0cyBtdWNoIG1vcmUgcmVhZGFibGUgYXMgYSBib251cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU28gZmFyLCBzb2x1dGlvbnMgZm9yIHNoZWxsIHNjcmlwdHMgZXhpc3QuCisgICAgICAgICAgICAgICAgV2hhdCBhYm91dCBQeXRob24gdGFza3M/CisgICAgICAgICAgICAgICAgVGhlIHNhbWUgYXBwcm9hY2ggYXBwbGllcyBldmVuIHRob3VnaCB0aGVzZSB0YXNrcyBhcmUgbW9yZQorICAgICAgICAgICAgICAgIGRpZmZpY3VsdC4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBuZWVkcyB0byBmaWd1cmUgb3V0IHdoYXQgdmFyaWFibGVzIGEgUHl0aG9uCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWNjZXNzZXMgYW5kIHdoYXQgZnVuY3Rpb25zIGl0IGNhbGxzLgorICAgICAgICAgICAgICAgIEFnYWluLCB0aGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpcnN0CisgICAgICAgICAgICAgICAgZmlndXJlcyBvdXQgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgY3JlYXRlcyBhIGNoZWNrc3VtIGZvciB0aGUgZGF0YSB1c2VkIGFzIHRoZSBpbnB1dCB0byB0aGUgdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTGlrZSB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiBjYXNlLCBzaXR1YXRpb25zIGV4aXN0CisgICAgICAgICAgICAgICAgd2hlcmUgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgICAgIEZvciB0aGVzZSBzaXR1YXRpb25zLCB5b3UgY2FuIGluc3RydWN0IHRoZSBidWlsZCBwcm9jZXNzIHRvCisgICAgICAgICAgICAgICAgaWdub3JlIGEgZGVwZW5kZW5jeSBieSB1c2luZyBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9BUkNIU1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGVuc3VyZXMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgZXZlbiBpZiBpdCBkb2VzIHJlZmVyZW5jZSBpdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRXF1YWxseSwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHlvdSBuZWVkIHRvIGFkZCBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIG5vdCBhYmxlIHRvIGZpbmQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBQQUNLQUdFX0FSQ0hTW3ZhcmRlcHNdID0gIk1BQ0hJTkUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBleHBsaWNpdGx5IGFkZHMgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBhIGRlcGVuZGVuY3kgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSBjYXNlIHdpdGggaW4tbGluZSBQeXRob24gd2hlcmUKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIG5vdCBhYmxlIHRvIGZpZ3VyZSBvdXQgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIFdoZW4gcnVubmluZyBpbiBkZWJ1ZyBtb2RlIChpLmUuIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1EREQ8L2ZpbGVuYW1lPiksIEJpdEJha2UgcHJvZHVjZXMgb3V0cHV0IHdoZW4gaXQKKyAgICAgICAgICAgICAgICBkaXNjb3ZlcnMgc29tZXRoaW5nIGZvciB3aGljaCBpdCBjYW5ub3QgZmlndXJlIG91dCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgY3VycmVudGx5IG5vdCBtYW5hZ2VkIHRvIGNvdmVyCisgICAgICAgICAgICAgICAgdGhvc2UgZGVwZW5kZW5jaWVzIGluIGRldGFpbCBhbmQgaXMgYXdhcmUgb2YgdGhlIG5lZWQgdG8gZml4CisgICAgICAgICAgICAgICAgdGhpcyBzaXR1YXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRodXMgZmFyLCB0aGlzIHNlY3Rpb24gaGFzIGxpbWl0ZWQgZGlzY3Vzc2lvbiB0byB0aGUgZGlyZWN0CisgICAgICAgICAgICAgICAgaW5wdXRzIGludG8gYSB0YXNrLgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGJhc2VkIG9uIGRpcmVjdCBpbnB1dHMgaXMgcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICAgICAgICAgICAgImJhc2VoYXNoIiBpbiB0aGUgY29kZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcXVlc3Rpb24gb2YgYSB0YXNrJ3MgaW5kaXJlY3QgaW5wdXRzIHN0aWxsCisgICAgICAgICAgICAgICAgZXhpdHMgLSBpdGVtcyBhbHJlYWR5IGJ1aWx0IGFuZCBwcmVzZW50IGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGZvciBhIHBhcnRpY3VsYXIgdGFzayBuZWVkcyB0byBhZGQKKyAgICAgICAgICAgICAgICB0aGUgaGFzaGVzIG9mIGFsbCB0aGUgdGFza3Mgb24gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdGFzaworICAgICAgICAgICAgICAgIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgQ2hvb3Npbmcgd2hpY2ggZGVwZW5kZW5jaWVzIHRvIGFkZCBpcyBhIHBvbGljeSBkZWNpc2lvbi4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZWZmZWN0IGlzIHRvIGdlbmVyYXRlIGEgbWFzdGVyIGNoZWNrc3VtIHRoYXQKKyAgICAgICAgICAgICAgICBjb21iaW5lcyB0aGUgYmFzZWhhc2ggYW5kIHRoZSBoYXNoZXMgb2YgdGhlIHRhc2sncworICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXQgdGhlIGNvZGUgbGV2ZWwsIGEgdmFyaWV0eSBvZiB3YXlzIGV4aXN0IGJ5IHdoaWNoIGJvdGggdGhlCisgICAgICAgICAgICAgICAgYmFzZWhhc2ggYW5kIHRoZSBkZXBlbmRlbnQgdGFzayBoYXNoZXMgY2FuIGJlIGluZmx1ZW5jZWQuCisgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSwgeW91IGNhbiBnaXZlIEJpdEJha2UKKyAgICAgICAgICAgICAgICBzb21lIGV4dHJhIGluZm9ybWF0aW9uIHRvIGhlbHAgaXQgY29uc3RydWN0IHRoZSBiYXNlaGFzaC4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBlZmZlY3RpdmVseSByZXN1bHRzIGluIGEgbGlzdCBvZgorICAgICAgICAgICAgICAgIGdsb2JhbCB2YXJpYWJsZSBkZXBlbmRlbmN5IGV4Y2x1ZGVzIChpLmUuIHZhcmlhYmxlcyBuZXZlcgorICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIGFueSBjaGVja3N1bSk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBETF9ESVIgXAorICAgICAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAorICAgICAgICAgVVNFUiBGSUxFU1BBVEggU1RBR0lOR19ESVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgXAorICAgICAgICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKKyAgICAgICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfRElTQUJMRSBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBleGNsdWRlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzaW5jZSB0aGF0IHZhcmlhYmxlIGlzIGFjdHVhbGx5IGNvbnN0cnVjdGVkIGFzIGEgcGF0aCB3aXRoaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBvbiB0aGUgd2hpdGVsaXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcnVsZXMgZm9yIGRlY2lkaW5nIHdoaWNoIGhhc2hlcyBvZiBkZXBlbmRlbnQgdGFza3MgdG8KKyAgICAgICAgICAgICAgICBpbmNsdWRlIHRocm91Z2ggZGVwZW5kZW5jeSBjaGFpbnMgYXJlIG1vcmUgY29tcGxleCBhbmQgYXJlCisgICAgICAgICAgICAgICAgZ2VuZXJhbGx5IGFjY29tcGxpc2hlZCB3aXRoIGEgUHl0aG9uIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBjb2RlIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHk8L2ZpbGVuYW1lPiBzaG93cworICAgICAgICAgICAgICAgIHR3byBleGFtcGxlcyBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydAorICAgICAgICAgICAgICAgIHlvdXIgb3duIHBvbGljeSBpbnRvIHRoZSBzeXN0ZW0gaWYgc28gZGVzaXJlZC4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgdHdvIGJhc2ljIHNpZ25hdHVyZSBnZW5lcmF0b3JzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T0UtQ29yZTwvdWxpbms+CisgICAgICAgICAgICAgICAgdXNlczogICJPRUJhc2ljIiBhbmQgIk9FQmFzaWNIYXNoIi4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIGR1bW15ICJub29wIiBzaWduYXR1cmUgaGFuZGxlciBpcyBlbmFibGVkCisgICAgICAgICAgICAgICAgaW4gQml0QmFrZS4KKyAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgT0UtQ29yZSB1c2VzIHRoZSAiT0VCYXNpY0hhc2giIHNpZ25hdHVyZSBoYW5kbGVyIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICAgICB0aHJvdWdoIHRoaXMgc2V0dGluZyBpbiB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX1NJR05BVFVSRV9IQU5ETEVSID89ICJPRUJhc2ljSGFzaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlICJPRUJhc2ljSGFzaCIgPGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyB0aGUgc2FtZSBhcyB0aGUgIk9FQmFzaWMiIHZlcnNpb24gYnV0IGFkZHMgdGhlIHRhc2sgaGFzaCB0bworICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5zdGFtcCBmaWxlczwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFueSBtZXRhZGF0YSBjaGFuZ2UgdGhhdCBjaGFuZ2VzIHRoZSB0YXNrIGhhc2gsCisgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBjYXVzaW5nIHRoZSB0YXNrIHRvIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gYnVtcAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhbHVlcywgYW5kIGNoYW5nZXMgdG8gbWV0YWRhdGEgYXV0b21hdGljYWxseSByaXBwbGUgYWNyb3NzCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBlbmQgcmVzdWx0IG9mIHRoZXNlCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlIGdlbmVyYXRvcnMgaXMgdG8gbWFrZSBzb21lIGRlcGVuZGVuY3kgYW5kIGhhc2gKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhdmFpbGFibGUgdG8gdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0JBU0VIQVNIX3Rhc2stPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGhhc2hlcyBmb3IgZWFjaCB0YXNrIGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0JBU0VIQVNIXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+OjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBoYXNoZXMgZm9yIGVhY2ggZGVwZW5kZW50IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCSEFTSERFUFNfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT46PC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIGRlcGVuZGVuY2llcyBmb3IgZWFjaCB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhc2ggb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgPHRpdGxlPlNoYXJlZCBTdGF0ZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENoZWNrc3VtcyBhbmQgZGVwZW5kZW5jaWVzLCBhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc2VjdGlvbiwgc29sdmUgaGFsZiB0aGUgcHJvYmxlbSBvZiBzdXBwb3J0aW5nIGEgc2hhcmVkIHN0YXRlLgorICAgICAgICAgICAgICAgIFRoZSBvdGhlciBoYWxmIG9mIHRoZSBwcm9ibGVtIGlzIGJlaW5nIGFibGUgdG8gdXNlIGNoZWNrc3VtCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZHVyaW5nIHRoZSBidWlsZCBhbmQgYmVpbmcgYWJsZSB0byByZXVzZSBvciByZWJ1aWxkCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgY29tcG9uZW50cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGlzIGEgcmVsYXRpdmVseSBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGhvdyB0bworICAgICAgICAgICAgICAgICJjYXB0dXJlIiBhIHNuYXBzaG90IG9mIGEgZ2l2ZW4gdGFzay4KKyAgICAgICAgICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGRvZXMgbm90IGNhcmUgYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgc291cmNlIG9mIGEgdGFzaydzIG91dHB1dC4KKyAgICAgICAgICAgICAgICBPdXRwdXQgY291bGQgYmUgZnJlc2hseSBidWlsdCBvciBpdCBjb3VsZCBiZSBkb3dubG9hZGVkIGFuZAorICAgICAgICAgICAgICAgIHVucGFja2VkIGZyb20gc29tZXdoZXJlLgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgYnVpbGQgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0CisgICAgICAgICAgICAgICAgaXRzIG9yaWdpbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVHdvIHR5cGVzIG9mIG91dHB1dCBleGlzdC4KKyAgICAgICAgICAgICAgICBPbmUgdHlwZSBpcyBqdXN0IGFib3V0IGNyZWF0aW5nIGEgZGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyB0aGUgb3V0cHV0IG9mIGVpdGhlcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIG90aGVyIHR5cGUgb2Ygb3V0cHV0IG9jY3VycyB3aGVuIGEgc2V0IG9mIGRhdGEgaXMgbWVyZ2VkCisgICAgICAgICAgICAgICAgaW50byBhIHNoYXJlZCBkaXJlY3RvcnkgdHJlZSBzdWNoIGFzIHRoZSBzeXNyb290LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyB0cmllZCB0byBrZWVwIHRoZSBkZXRhaWxzIG9mIHRoZQorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGhpZGRlbiBpbiA8ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgRnJvbSBhIHVzZXIncyBwZXJzcGVjdGl2ZSwgYWRkaW5nIHNoYXJlZCBzdGF0ZSB3cmFwcGluZyB0byBhCisgICAgICAgICAgICAgICAgdGFzayBpcyBhcyBzaW1wbGUgYXMgdGhpcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXhhbXBsZSB0YWtlbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWRlcGxveSc+PGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUExPWURJUiA9ICIke1dPUktESVJ9L2RlcGxveS0ke1BOfSIKKyAgICAgU1NUQVRFVEFTS1MgKz0gImRvX2RlcGxveSIKKyAgICAgZG9fZGVwbG95W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7REVQTE9ZRElSfSIKKyAgICAgZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IgorCisgICAgIHB5dGhvbiBkb19kZXBsb3lfc2V0c2NlbmUgKCkgeworICAgICAgICAgc3N0YXRlX3NldHNjZW5lKGQpCisgICAgIH0KKyAgICAgYWRkdGFzayBkb19kZXBsb3lfc2V0c2NlbmUKKyAgICAgZG9fZGVwbG95W2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0J9IgorICAgICBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZXhwbGFpbnMgdGhlIHByZXZpb3VzIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nICJkb19kZXBsb3kiIHRvIDxmaWxlbmFtZT5TU1RBVEVUQVNLUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRzIHNvbWUgcmVxdWlyZWQgc3N0YXRlLXJlbGF0ZWQgcHJvY2Vzc2luZywgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZGVwbG95Jz48ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3lbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtERVBMT1lESVJ9IjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkZWNsYXJlcyB0aGF0IDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBwbGFjZXMgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaW4gPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IHdoZW4gcnVuCisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxseSAoaS5lLiB3aGVuIG5vdCB1c2luZyB0aGUgc3N0YXRlIGNhY2hlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3V0cHV0IGJlY29tZXMgdGhlIGlucHV0IHRvIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGNhdXNlcyB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIHRvIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJfSU1BR0V9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gaXMgbm90IGFscmVhZHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIG9yIGlmIGl0cyBpbnB1dCBjaGVja3N1bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaWduYXR1cmUpIGhhcyBjaGFuZ2VkIGZyb20gd2hlbiB0aGUgb3V0cHV0IHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCwgdGhlIHRhc2sgcnVucyB0byBwb3B1bGF0ZSB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUsIGFmdGVyIHdoaWNoIHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUgaXMgY29waWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7REVQTE9ZX0RJUl9JTUFHRX08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gaXMgaW4gdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIGNhY2hlIGFuZCBpdHMgc2lnbmF0dXJlIGluZGljYXRlcyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCBvdXRwdXQgaXMgc3RpbGwgdmFsaWQgKGkuZS4gaWYgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudCB0YXNrIGlucHV0cyBoYXZlIGNoYW5nZWQpLCB0aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUgY29waWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3lfc2V0c2NlbmU8L2ZpbGVuYW1lPiB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCwgc2tpcHBpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB0YXNrIGRlZmluaXRpb24gaXMgZ2x1ZSBsb2dpYyBuZWVkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UgdGhlIHByZXZpb3VzIHNldHRpbmdzIGVmZmVjdGl2ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHl0aG9uIGRvX2RlcGxveV9zZXRzY2VuZSAoKSB7CisgICAgICAgICBzc3RhdGVfc2V0c2NlbmUoZCkKKyAgICAgfQorICAgICBhZGR0YXNrIGRvX2RlcGxveV9zZXRzY2VuZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gdGFrZXMgdGhlIGZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZSBhcyBpbnB1dCBhbmQgYWNjZWxlcmF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlIGlmIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHRhc2sgd2FzIGFjY2VsZXJhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gcmV0dXJucyBUcnVlLgorICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEZhbHNlLCBhbmQgdGhlIG5vcm1hbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgcnVucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNzZXRzY2VuZSc+c2V0c2NlbmU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19kZXBsb3lbZGlyc10gPSAiJHtERVBMT1lESVJ9ICR7Qn0iPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgY3JlYXRlcyA8ZmlsZW5hbWU+JHtERVBMT1lESVJ9PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCfTwvZmlsZW5hbWU+IGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMsIGFuZCBhbHNvIHNldHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0J9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtb3V0cHV0ZGlyczwvZmlsZW5hbWU+IHdvdWxkIGJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1wbGFpbmRpcnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gcHJlc2VydmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UEtHRH08L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQS0dERVNUfTwvZmlsZW5hbWU+IG91dHB1dCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLCB1c2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2Vbc3N0YXRlLXBsYWluZGlyc10gPSAiJHtQS0dEfSAke1BLR0RFU1R9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2RlcGxveVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkVfQVJDSH0iPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgYXBwZW5kcyBleHRyYSBtZXRhZGF0YSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5zdGFtcCBmaWxlPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIG1ldGFkYXRhIG1ha2VzIHRoZSB0YXNrIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhIG1hY2hpbmUncyBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3JlZi1iaXRiYWtlLXRhc2tsaXN0Jz5UaGUgVGFzayBMaXN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnN0YW1wLWV4dHJhLWluZm88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1vdXRwdXRkaXJzPC9maWxlbmFtZT4gY2FuIGFsc28gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlY2xhcmVzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQldPUks8L2ZpbGVuYW1lPiBhcyBzaGFyZWQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IGRpcmVjdG9yaWVzLCB3aGljaCBwb3B1bGF0ZXMgdGhlIHNoYXJlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUsIGFuZCA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQlNESVI8L2ZpbGVuYW1lPiBhcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIG91dHB1dCBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fcGFja2FnZVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR0RFU1RXT1JLfSAke1NITElCU1dPUktESVJ9IgorICAgICBkb19wYWNrYWdlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1BLR0RBVEFfRElSfSAke1NITElCU0RJUn0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgbWV0aG9kcyBhbHNvIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gdGFrZSBhCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZmlsZSB3aGVuIG1hbmlwdWxhdGluZyBzaGFyZWQgc3RhdGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgY2FzZXMgd2hlcmUgZmlsZSBhZGRpdGlvbnMgb3IgcmVtb3ZhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzZW5zaXRpdmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2Vbc3N0YXRlLWxvY2tmaWxlXSA9ICIke1BBQ0tBR0VMT0NLfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWhpbmQgdGhlIHNjZW5lcywgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIHdvcmtzIGJ5IGxvb2tpbmcgaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZm9yIHNoYXJlZCBzdGF0ZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTU1RBVEVfTUlSUk9SUyA/PSAiXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NvbWVzZXJ2ZXIudGxkL3NoYXJlL3NzdGF0ZS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCisgICAgIGZpbGU6Ly8uKiBmaWxlOi8vL3NvbWUvbG9jYWwvZGlyL3NzdGF0ZS9QQVRIIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNoYXJlZCBzdGF0ZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT4pIGlzIG9yZ2FuaXplZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHR3by1jaGFyYWN0ZXIgc3ViZGlyZWN0b3JpZXMsIHdoZXJlIHRoZSBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgYXJlIGJhc2VkIG9uIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgaGFzaC4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNoYXJlZCBzdGF0ZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBhIG1pcnJvciBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHNhbWUgc3RydWN0dXJlIGFzIDxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT4sIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgIlBBVEgiIGFzIHBhcnQgb2YgdGhlIFVSSSB0byBlbmFibGUgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB0byBtYXAgdG8gdGhlIGFwcHJvcHJpYXRlIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgcGFja2FnZSB2YWxpZGl0eSBjYW4gYmUgZGV0ZWN0ZWQganVzdCBieQorICAgICAgICAgICAgICAgIGxvb2tpbmcgYXQgdGhlIGZpbGVuYW1lIHNpbmNlIHRoZSBmaWxlbmFtZSBjb250YWlucyB0aGUgdGFzaworICAgICAgICAgICAgICAgIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICBJZiBhIHZhbGlkIHNoYXJlZCBzdGF0ZSBwYWNrYWdlIGlzIGZvdW5kLCB0aGUgYnVpbGQgcHJvY2VzcworICAgICAgICAgICAgICAgIGRvd25sb2FkcyBpdCBhbmQgdXNlcyBpdCB0byBhY2NlbGVyYXRlIHRoZSB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2Vzc2VzIHVzZSB0aGUgPGZpbGVuYW1lPipfc2V0c2NlbmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2tzIGZvciB0aGUgdGFzayBhY2NlbGVyYXRpb24gcGhhc2UuCisgICAgICAgICAgICAgICAgQml0QmFrZSBnb2VzIHRocm91Z2ggdGhpcyBwaGFzZSBiZWZvcmUgdGhlIG1haW4gZXhlY3V0aW9uCisgICAgICAgICAgICAgICAgY29kZSBhbmQgdHJpZXMgdG8gYWNjZWxlcmF0ZSBhbnkgdGFza3MgZm9yIHdoaWNoIGl0IGNhbiBmaW5kCisgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIElmIGEgc2hhcmVkIHN0YXRlIHBhY2thZ2UgZm9yIGEgdGFzayBpcyBhdmFpbGFibGUsIHRoZQorICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSBwYWNrYWdlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgdGFzayBhbmQgYW55IHRhc2tzIG9uIHdoaWNoIGl0IGlzIGRlcGVuZGVudAorICAgICAgICAgICAgICAgIGFyZSBub3QgZXhlY3V0ZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGEgcmVhbCB3b3JsZCBleGFtcGxlLCB0aGUgYWltIGlzIHdoZW4gYnVpbGRpbmcgYW4gSVBLLWJhc2VkCisgICAgICAgICAgICAgICAgaW1hZ2UsIG9ubHkgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFza3Mgd291bGQgaGF2ZSB0aGVpciBzaGFyZWQgc3RhdGUgcGFja2FnZXMgZmV0Y2hlZCBhbmQKKyAgICAgICAgICAgICAgICBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgU2luY2UgdGhlIHN5c3Jvb3QgaXMgbm90IHVzZWQsIGl0IHdvdWxkIG5ldmVyIGdldCBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB3aHkgYSB0YXNrLWJhc2VkIGFwcHJvYWNoIGlzIHByZWZlcnJlZAorICAgICAgICAgICAgICAgIG92ZXIgYSByZWNpcGUtYmFzZWQgYXBwcm9hY2gsIHdoaWNoIHdvdWxkIGhhdmUgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICBvdXRwdXQgZnJvbSBldmVyeSB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICA8dGl0bGU+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGFkZHMgY29tbW9uIHR5cGVzIG9mCisgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzLCB3aGljaCBtZWFucyB0aGF0IHlvdSBkbyBub3QKKyAgICAgICAgICAgIG5lZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBwYWNrYWdlcyB1c2luZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgVGhyZWUgYXV0b21hdGljIG1lY2hhbmlzbXMgZXhpc3QgKDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgIHRoYXQgaGFuZGxlIHNoYXJlZCBsaWJyYXJpZXMsIHBhY2thZ2UgY29uZmlndXJhdGlvbiAocGtnLWNvbmZpZykKKyAgICAgICAgICAgIG1vZHVsZXMsIGFuZCA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgRm9yIG90aGVyIHR5cGVzIG9mIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCB5b3UgbXVzdCBtYW51YWxseSBkZWNsYXJlCisgICAgICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgb2YgZWFjaCByZWNpcGUsIGFsbCBzaGFyZWQgbGlicmFyaWVzIGluc3RhbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgaXMgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcgdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIHBhY2thZ2UgaXMgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvbmFtZSc+c29uYW1lPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgc2hhcmVkLWxpYnJhcnktdG8tcGFja2FnZSBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgIGlzIHNhdmVkIGdsb2JhbGx5IGluCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QS0dEQVRBX0RJUic+PGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNpbXVsdGFuZW91c2x5LCBhbGwgZXhlY3V0YWJsZXMgYW5kIHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGUgYXJlIGluc3BlY3RlZCB0byBzZWUgd2hhdCBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIHRoZXkgbGluayBhZ2FpbnN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IHRoYXQgaXMgZm91bmQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGlzIHF1ZXJpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHNvbWUgcGFja2FnZSAobGlrZWx5IGZyb20gYSBkaWZmZXJlbnQgcmVjaXBlKQorICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBwYWNrYWdlIGlzIGZvdW5kLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSBpcyBhZGRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2hhcmVkIGxpYnJhcnkgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbGlicmFyeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGF1dG9tYXRpY2FsbHkgYWRkZWQgcnVudGltZSBkZXBlbmRlbmN5IGFsc28KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgYSB2ZXJzaW9uIHJlc3RyaWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gcmVzdHJpY3Rpb24gc3BlY2lmaWVzIHRoYXQgYXQgbGVhc3QgdGhlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB0aGF0IHByb3ZpZGVzIHRoZSBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBtdXN0IGJlIHVzZWQsIGFzIGlmCisgICAgICAgICAgICAgICAgICAgICI8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+ICg+PSA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+KSIKKyAgICAgICAgICAgICAgICAgICAgaGFkIGJlZW4gYWRkZWQgdG8gPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZm9yY2VzIGFuIHVwZ3JhZGUgb2YgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgd2hlbiBpbnN0YWxsaW5nIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSwgaWYgbmVlZGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3Ugd2FudCB0byBhdm9pZCBhIHBhY2thZ2UgYmVpbmcgcmVnaXN0ZXJlZCBhcworICAgICAgICAgICAgICAgICAgICBwcm92aWRpbmcgYSBwYXJ0aWN1bGFyIHNoYXJlZCBsaWJyYXJ5IChlLmcuIGJlY2F1c2UgdGhlIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5KSwgdGhlbiBhZGQgdGhlIGxpYnJhcnkgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSSVZBVEVfTElCUyc+PGZpbGVuYW1lPlBSSVZBVEVfTElCUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBwYWNrYWdlJ3MgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgb2YgZWFjaAorICAgICAgICAgICAgICAgICAgICByZWNpcGUsIGFsbCBwa2ctY29uZmlnIG1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLnBjPC9maWxlbmFtZT4gZmlsZXMpIGluc3RhbGxlZCBieSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBtb2R1bGUsIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcworICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkIGFzIHByb3ZpZGluZyB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIG1vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaXMgc2F2ZWQgZ2xvYmFsbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT4gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNpbXVsdGFuZW91c2x5LCBhbGwgcGtnLWNvbmZpZyBtb2R1bGVzIGluc3RhbGxlZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgb3RoZXIgcGtnLWNvbmZpZworICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIHRoZXkgZGVwZW5kIG9uLgorICAgICAgICAgICAgICAgICAgICBBIG1vZHVsZSBpcyBzZWVuIGFzIGRlcGVuZGluZyBvbiBhbm90aGVyIG1vZHVsZSBpZiBpdAorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhICJSZXF1aXJlczoiIGxpbmUgdGhhdCBzcGVjaWZpZXMgdGhlIG90aGVyIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGVhY2ggbW9kdWxlIGRlcGVuZGVuY3ksCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGlzIHF1ZXJpZWQgdG8gc2VlIGlmIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBjb250YWlucyB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgcGFja2FnZSBpcyBmb3VuZCwgYSBydW50aW1lIGRlcGVuZGVuY3kgaXMgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhlIG1vZHVsZSB0byB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPiBtZWNoYW5pc20gbW9zdCBvZnRlbgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mZXJzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGNoYWluczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJZiBhIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+IGRlcGVuZHMgb24gYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXI8L2ZpbGVuYW1lPiwgdGhlbiA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Zm9vLWRiZzwvZmlsZW5hbWU+IGFyZSBhbHNvIG1hZGUgdG8gZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGV2PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGJnPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgVGFraW5nIHRoZSA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IHBhY2thZ2VzIGFzIGFuCisgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+YmFyLWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBoZWFkZXJzIGFuZCBzaGFyZWQgbGlicmFyeSBzeW1saW5rcyBuZWVkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvby1kZXY8L2ZpbGVuYW1lPiwgd2hpY2ggc2hvd3MgdGhlIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBwYWNrYWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGRlcGVuZGVuY2llcyBhZGRlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwY2hhaW5zPC9maWxlbmFtZT4gYXJlIGluIHRoZSBmb3JtIG9mCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+IGFsc28gaGFzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPi1zdHlsZSBkZXBlbmRlbmN5IG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT4sIGJlY2F1c2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke1BOfS1kZXY8L2ZpbGVuYW1lPiAoc2V0IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4pIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICAgICAiJHtQTn0iLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIGVuc3VyZSB0aGF0IHRoZSBkZXBlbmRlbmN5IGNoYWluIGlzIG5ldmVyIGJyb2tlbiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgYWx3YXlzIGdlbmVyYXRlZCBieSBkZWZhdWx0LCBldmVuIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0dXJuIG91dCB0byBiZSBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2sgb2YgZWFjaCByZWNpcGUgaW4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHRocm91Z2ggdXNlIG9mIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+ZGVwdGFzazwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkZWNsYXJhdGlvbiwgd2hpY2ggZ3VhcmFudGVlcyB0aGF0IHRoZSByZXF1aXJlZAorICAgICAgICAgICAgc2hhcmVkLWxpYnJhcnkvbW9kdWxlLXRvLXBhY2thZ2UgbWFwcGluZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgd2hlbiBuZWVkZWQgYXMgbG9uZyBhcyA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGhhcyBiZWVuCisgICAgICAgICAgICBjb3JyZWN0bHkgc2V0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPgorICAgICAgICA8dGl0bGU+RmFrZXJvb3QgYW5kIFBzZXVkbzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21lIHRhc2tzIGFyZSBlYXNpZXIgdG8gaW1wbGVtZW50IHdoZW4gYWxsb3dlZCB0byBwZXJmb3JtIGNlcnRhaW4KKyAgICAgICAgICAgIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm9ybWFsbHkgcmVzZXJ2ZWQgZm9yIHRoZSByb290IHVzZXIgKGUuZy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlKjwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlJz48ZmlsZW5hbWU+ZG9faW1hZ2UqPC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFzayBiZW5lZml0cworICAgICAgICAgICAgZnJvbSBiZWluZyBhYmxlIHRvIHNldCB0aGUgVUlEIGFuZCBHSUQgb2YgaW5zdGFsbGVkIGZpbGVzIHRvCisgICAgICAgICAgICBhcmJpdHJhcnkgdmFsdWVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgYXBwcm9hY2ggdG8gYWxsb3dpbmcgdGFza3MgdG8gcGVyZm9ybSByb290LW9ubHkgb3BlcmF0aW9ucworICAgICAgICAgICAgd291bGQgYmUgdG8gcmVxdWlyZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIHRvIHJ1biBhcyByb290LgorICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBtZXRob2QgaXMgY3VtYmVyc29tZSBhbmQgaGFzIHNlY3VyaXR5IGlzc3Vlcy4KKyAgICAgICAgICAgIFRoZSBhcHByb2FjaCB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgaXMgdG8gcnVuIHRhc2tzIHRoYXQgYmVuZWZpdAorICAgICAgICAgICAgZnJvbSByb290IHByaXZpbGVnZXMgaW4gYSAiZmFrZSIgcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFdpdGhpbiB0aGlzIGVudmlyb25tZW50LCB0aGUgdGFzayBhbmQgaXRzIGNoaWxkIHByb2Nlc3NlcyBiZWxpZXZlCisgICAgICAgICAgICB0aGF0IHRoZXkgYXJlIHJ1bm5pbmcgYXMgdGhlIHJvb3QgdXNlciwgYW5kIHNlZSBhbiBpbnRlcm5hbGx5CisgICAgICAgICAgICBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICBBcyBsb25nIGFzIGdlbmVyYXRpbmcgdGhlIGZpbmFsIG91dHB1dCAoZS5nLiBhIHBhY2thZ2Ugb3IgYW4gaW1hZ2UpCisgICAgICAgICAgICBkb2VzIG5vdCByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcywgdGhlIGZhY3QgdGhhdCBzb21lIGVhcmxpZXIKKyAgICAgICAgICAgIHN0ZXBzIHJhbiBpbiBhIGZha2Ugcm9vdCBlbnZpcm9ubWVudCBkb2VzIG5vdCBjYXVzZSBwcm9ibGVtcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGNhcGFiaWxpdHkgdG8gcnVuIHRhc2tzIGluIGEgZmFrZSByb290IGVudmlyb25tZW50IGlzIGtub3duIGFzCisgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cDovL21hbi5oZS5uZXQvbWFuMS9mYWtlcm9vdCc+ZmFrZXJvb3Q8L3VsaW5rPiIsCisgICAgICAgICAgICB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIEJpdEJha2Uga2V5d29yZC92YXJpYWJsZQorICAgICAgICAgICAgZmxhZyB0aGF0IHJlcXVlc3RzIGEgZmFrZSByb290IGVudmlyb25tZW50IGZvciBhIHRhc2suCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgIHRoZSBwcm9ncmFtIHRoYXQgaW1wbGVtZW50cyBmYWtlcm9vdCBpcyBrbm93biBhcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb2Z0d2FyZS1pdGVtL3BzZXVkby8nPlBzZXVkbzwvdWxpbms+LgorICAgICAgICAgICAgUHNldWRvIG92ZXJyaWRlcyBzeXN0ZW0gY2FsbHMgYnkgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgICAgICA8ZmlsZW5hbWU+TERfUFJFTE9BRDwvZmlsZW5hbWU+LCB3aGljaCByZXN1bHRzIGluIHRoZSBpbGx1c2lvbgorICAgICAgICAgICAgb2YgcnVubmluZyBhcyByb290LgorICAgICAgICAgICAgVG8ga2VlcCB0cmFjayBvZiAiZmFrZSIgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zIHJlc3VsdGluZworICAgICAgICAgICAgZnJvbSBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSByb290IHBlcm1pc3Npb25zLCBQc2V1ZG8gdXNlcworICAgICAgICAgICAgYW4gU1FMaXRlIDMgZGF0YWJhc2UuCisgICAgICAgICAgICBUaGlzIGRhdGFiYXNlIGlzIHN0b3JlZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vcHNldWRvL2ZpbGVzLmRiPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZvciBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICBTdG9yaW5nIHRoZSBkYXRhYmFzZSBpbiBhIGZpbGUgYXMgb3Bwb3NlZCB0byBpbiBtZW1vcnkKKyAgICAgICAgICAgIGdpdmVzIHBlcnNpc3RlbmNlIGJldHdlZW4gdGFza3MgYW5kIGJ1aWxkcywgd2hpY2ggaXMgbm90CisgICAgICAgICAgICBhY2NvbXBsaXNoZWQgdXNpbmcgZmFrZXJvb3QuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Q2F1dGlvbjwvdGl0bGU+CisgICAgICAgICAgICAgICAgSWYgeW91IGFkZCB5b3VyIG93biB0YXNrIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIHNhbWUgZmlsZXMgb3IKKyAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBhcyBhIGZha2Vyb290IHRhc2ssIHRoZW4gdGhhdCB0YXNrIGFsc28gbmVlZHMgdG8KKyAgICAgICAgICAgICAgICBydW4gdW5kZXIgZmFrZXJvb3QuCisgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGUgdGFzayBjYW5ub3QgcnVuIHJvb3Qtb25seSBvcGVyYXRpb25zLCBhbmQKKyAgICAgICAgICAgICAgICBjYW5ub3Qgc2VlIHRoZSBmYWtlIGZpbGUgb3duZXJzaGlwIGFuZCBwZXJtaXNzaW9ucyBzZXQgYnkgdGhlCisgICAgICAgICAgICAgICAgb3RoZXIgdGFzay4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBhbHNvIGFkZCBhIGRlcGVuZGVuY3kgb24KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIGdpdmluZyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICBmYWtlcm9vdCBkb19teXRhc2sgKCkgeworICAgICAgICAgICAuLi4KKyAgICAgICB9CisgICAgICAgZG9fbXl0YXNrW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1GQUtFUk9PVCc+PGZpbGVuYW1lPkZBS0VST09UKjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlcyBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL3dycHNldWRvL3BzZXVkby93aWtpL1doeU5vdEZha2Vyb290Jz5XaHkgTm90IEZha2Vyb290PzwvdWxpbms+IgorICAgICAgICAgICAgYXJ0aWNsZSBmb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBGYWtlcm9vdCBhbmQgUHNldWRvLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZDkxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiIHZlcnNpb249IjEuMCI+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9kb2Nib29rLW1pcnJvci9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKzwhLS0KKworICA8eHNsOmltcG9ydCBocmVmPSIuLi90ZW1wbGF0ZS8xLjc2LjEvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKy0tPgorCisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9wZXJtYWxpbmtzLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvc2VjdGlvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2NvbXBvbmVudC50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2RpdmlzaW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbCIvPgorCisgIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9IidvdmVydmlldy1tYW51YWwtc3R5bGUuY3NzJyIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaGFwdGVyLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImFwcGVuZGl4LmF1dG9sYWJlbCIgc2VsZWN0PSJBIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24uYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pZC5hdHRyaWJ1dGVzIiBzZWxlY3Q9IjEiIC8+CisKKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC5yc3QKaW5kZXggNGJlZGQ2ZC4uYmIyYzhlNyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhhZDA3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbApAQCAtMCwwICsxLDk1NCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+Cis8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGlzIGNoYXB0ZXIgdGFrZXMgYSBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgZW52aXJvbm1lbnQuCisgICAgVGhlIGNoYXB0ZXIgcHJvdmlkZXMgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25jZXB0cyB0aGF0CisgICAgaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgd29yayBpcyBhY2NvbXBsaXNoZWQgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsCisgICAgd2hpY2ggaXMgdmVyeSBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gd29yayBhY2NvbXBsaXNoZWQgaW4gYSBjbG9zZWQsCisgICAgcHJvcHJpZXRhcnkgZW52aXJvbm1lbnQuCis8L3BhcmE+CisKKzxwYXJhPgorICAgIFNwZWNpZmljYWxseSwgdGhpcyBjaGFwdGVyIGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCBzb3VyY2UKKyAgICByZXBvc2l0b3JpZXMsIHdvcmtmbG93cywgR2l0LCBhbmQgbGljZW5zaW5nLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nb3Blbi1zb3VyY2UtcGhpbG9zb3BoeSc+CisgICAgPHRpdGxlPk9wZW4gU291cmNlIFBoaWxvc29waHk8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIE9wZW4gc291cmNlIHBoaWxvc29waHkgaXMgY2hhcmFjdGVyaXplZCBieSBzb2Z0d2FyZSBkZXZlbG9wbWVudAorICAgICAgICBkaXJlY3RlZCBieSBwZWVyIHByb2R1Y3Rpb24gYW5kIGNvbGxhYm9yYXRpb24gdGhyb3VnaCBhbiBhY3RpdmUKKyAgICAgICAgY29tbXVuaXR5IG9mIGRldmVsb3BlcnMuCisgICAgICAgIENvbnRyYXN0IHRoaXMgdG8gdGhlIG1vcmUgc3RhbmRhcmQgY2VudHJhbGl6ZWQgZGV2ZWxvcG1lbnQgbW9kZWxzCisgICAgICAgIHVzZWQgYnkgY29tbWVyY2lhbCBzb2Z0d2FyZSBjb21wYW5pZXMgd2hlcmUgYSBmaW5pdGUgc2V0IG9mIGRldmVsb3BlcnMKKyAgICAgICAgcHJvZHVjZXMgYSBwcm9kdWN0IGZvciBzYWxlIHVzaW5nIGEgZGVmaW5lZCBzZXQgb2YgcHJvY2VkdXJlcyB0aGF0CisgICAgICAgIHVsdGltYXRlbHkgcmVzdWx0IGluIGFuIGVuZCBwcm9kdWN0IHdob3NlIGFyY2hpdGVjdHVyZSBhbmQgc291cmNlCisgICAgICAgIG1hdGVyaWFsIGFyZSBjbG9zZWQgdG8gdGhlIHB1YmxpYy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgT3BlbiBzb3VyY2UgcHJvamVjdHMgY29uY2VwdHVhbGx5IGhhdmUgZGlmZmVyaW5nIGNvbmN1cnJlbnQgYWdlbmRhcywKKyAgICAgICAgYXBwcm9hY2hlcywgYW5kIHByb2R1Y3Rpb24uCisgICAgICAgIFRoZXNlIGZhY2V0cyBvZiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBjYW4gY29tZSBmcm9tIGFueW9uZSBpbiB0aGUKKyAgICAgICAgcHVibGljIChjb21tdW5pdHkpIHdobyBoYXMgYSBzdGFrZSBpbiB0aGUgc29mdHdhcmUgcHJvamVjdC4KKyAgICAgICAgVGhlIG9wZW4gc291cmNlIGVudmlyb25tZW50IGNvbnRhaW5zIG5ldyBjb3B5cmlnaHQsIGxpY2Vuc2luZywgZG9tYWluLAorICAgICAgICBhbmQgY29uc3VtZXIgaXNzdWVzIHRoYXQgZGlmZmVyIGZyb20gdGhlIG1vcmUgdHJhZGl0aW9uYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgIEluIGFuIG9wZW4gc291cmNlIGVudmlyb25tZW50LCB0aGUgZW5kIHByb2R1Y3QsIHNvdXJjZSBtYXRlcmlhbCwKKyAgICAgICAgYW5kIGRvY3VtZW50YXRpb24gYXJlIGFsbCBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBhdCBubyBjb3N0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIGJlbmNobWFyayBleGFtcGxlIG9mIGFuIG9wZW4gc291cmNlIHByb2plY3QgaXMgdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICAgd2hpY2ggd2FzIGluaXRpYWxseSBjb25jZWl2ZWQgYW5kIGNyZWF0ZWQgYnkgRmlubmlzaCBjb21wdXRlciBzY2llbmNlCisgICAgICAgIHN0dWRlbnQgTGludXMgVG9ydmFsZHMgaW4gMTk5MS4KKyAgICAgICAgQ29udmVyc2VseSwgYSBnb29kIGV4YW1wbGUgb2YgYSBub24tb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+V2luZG93czwvdHJhZGVtYXJrPiBmYW1pbHkgb2Ygb3BlcmF0aW5nCisgICAgICAgIHN5c3RlbXMgZGV2ZWxvcGVkIGJ5CisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPk1pY3Jvc29mdDwvdHJhZGVtYXJrPiBDb3Jwb3JhdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2lraXBlZGlhIGhhcyBhIGdvb2QgaGlzdG9yaWNhbCBkZXNjcmlwdGlvbiBvZiB0aGUgT3BlbiBTb3VyY2UKKyAgICAgICAgUGhpbG9zb3BoeQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW5fc291cmNlJz5oZXJlPC91bGluaz4uCisgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGhlbHBmdWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHBhcnRpY2lwYXRlIGluIHRoZQorICAgICAgICBMaW51eCBDb21tdW5pdHkKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xkbi5saW51eGZvdW5kYXRpb24ub3JnL2Jvb2svaG93LXBhcnRpY2lwYXRlLWxpbnV4LWNvbW11bml0eSc+aGVyZTwvdWxpbms+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dzLXRoZS1kZXZlbG9wbWVudC1ob3N0Jz4KKyAgICA8dGl0bGU+VGhlIERldmVsb3BtZW50IEhvc3Q8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgZGV2ZWxvcG1lbnQgaG9zdCBvcgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgIGlzIGtleSB0byB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQmVjYXVzZSB0aGUgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBkZXZlbG9wIGltYWdlcyBvcgorICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZW1iZWRkZWQgaGFyZHdhcmUsIGRldmVsb3BtZW50IG9mIHRob3NlCisgICAgICAgIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIGdlbmVyYWxseSB0YWtlcyBwbGFjZSBvbiBhIHN5c3RlbSBub3QKKyAgICAgICAgaW50ZW5kZWQgdG8gcnVuIHRoZSBzb2Z0d2FyZSAtIHRoZSBkZXZlbG9wbWVudCBob3N0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgbmVlZCB0byBzZXQgdXAgYSBkZXZlbG9wbWVudCBob3N0IGluIG9yZGVyIHRvIHVzZSBpdCB3aXRoIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICBNb3N0IGZpbmQgdGhhdCBpdCBpcyBiZXN0IHRvIGhhdmUgYSBuYXRpdmUgTGludXggbWFjaGluZSBmdW5jdGlvbiBhcworICAgICAgICB0aGUgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gdXNlIGEgc3lzdGVtIHRoYXQgZG9lcyBub3QgcnVuIExpbnV4CisgICAgICAgIGFzIGl0cyBvcGVyYXRpbmcgc3lzdGVtIGFzIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgV2hlbiB5b3UgaGF2ZSBhIE1hYyBvciBXaW5kb3dzLWJhc2VkIHN5c3RlbSwgeW91IGNhbiBzZXQgaXQgdXAKKyAgICAgICAgYXMgdGhlIGRldmVsb3BtZW50IGhvc3QgYnkgdXNpbmcKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAorICAgICAgICB3aGljaCBsZXZlcmFnZXMKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgIE9uY2UgeW91IHRha2UgdGhlIHN0ZXBzIHRvIHNldCB1cCBhIENST1BTIG1hY2hpbmUsIHlvdSBlZmZlY3RpdmVseQorICAgICAgICBoYXZlIGFjY2VzcyB0byBhIHNoZWxsIGVudmlyb25tZW50IHRoYXQgaXMgc2ltaWxhciB0byB3aGF0IHlvdSBzZWUKKyAgICAgICAgd2hlbiB1c2luZyBhIExpbnV4LWJhc2VkIGRldmVsb3BtZW50IGhvc3QuCisgICAgICAgIEZvciB0aGUgc3RlcHMgbmVlZGVkIHRvIHNldCB1cCBhIHN5c3RlbSB1c2luZyBDUk9QUywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2UtY3JvcHMnPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiB5b3VyIGRldmVsb3BtZW50IGhvc3QgaXMgZ29pbmcgdG8gYmUgYSBzeXN0ZW0gdGhhdCBydW5zIGEgTGludXgKKyAgICAgICAgZGlzdHJpYnV0aW9uLCBzdGVwcyBzdGlsbCBleGlzdCB0aGF0IHlvdSBtdXN0IHRha2UgdG8gcHJlcGFyZSB0aGUKKyAgICAgICAgc3lzdGVtIGZvciB1c2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBMaW51eCBkaXN0cmlidXRpb24gb24gdGhlIHN5c3RlbSBpcworICAgICAgICBvbmUgdGhhdCBzdXBwb3J0cyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgWW91IGFsc28gbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGNvcnJlY3Qgc2V0IG9mIGhvc3QgcGFja2FnZXMgYXJlCisgICAgICAgIGluc3RhbGxlZCB0aGF0IGFsbG93IGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBGb3IgdGhlIHN0ZXBzIG5lZWRlZCB0byBzZXQgdXAgYSBkZXZlbG9wbWVudCBob3N0IHRoYXQgcnVucyBMaW51eCwKKyAgICAgICAgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC1hLW5hdGl2ZS1saW51eC1ob3N0Jz5TZXR0aW5nIFVwIGEgTmF0aXZlIExpbnV4IEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE9uY2UgeW91ciBkZXZlbG9wbWVudCBob3N0IGlzIHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIHNldmVyYWwgbWV0aG9kcyBleGlzdCBmb3IgeW91IHRvIGRvIHdvcmsgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgZW52aXJvbm1lbnQ6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1hbmQgTGluZXMsIEJpdEJha2UsIGFuZCBTaGVsbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUcmFkaXRpb25hbCBkZXZlbG9wbWVudCBpbiB0aGUgWW9jdG8gUHJvamVjdCBpbnZvbHZlcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIHVzZXMgQml0QmFrZSwgaW4gYSBjb21tYW5kLWxpbmUgZW52aXJvbm1lbnQgZnJvbSBhIHNoZWxsCisgICAgICAgICAgICAgICAgb24geW91ciBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGZyb20gYSBob3N0IHRoYXQgaXMgYSBuYXRpdmUgTGludXgKKyAgICAgICAgICAgICAgICBtYWNoaW5lIG9yIGZyb20gYSBob3N0IHRoYXQgaGFzIGJlZW4gc2V0IHVwIHdpdGggQ1JPUFMuCisgICAgICAgICAgICAgICAgRWl0aGVyIHdheSwgeW91IGNyZWF0ZSwgbW9kaWZ5LCBhbmQgYnVpbGQgaW1hZ2VzIGFuZAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBhbGwgd2l0aGluIGEgc2hlbGwtYmFzZWQgZW52aXJvbm1lbnQgdXNpbmcKKyAgICAgICAgICAgICAgICBjb21wb25lbnRzIGFuZCB0b29scyBhdmFpbGFibGUgdGhyb3VnaCB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgIGFuZCB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgYSBnZW5lcmFsIGZsb3cgb2YgdGhlIGJ1aWxkIHByb2NlZHVyZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LWJ1aWxkaW5nLWEtc2ltcGxlLWltYWdlJz5CdWlsZGluZyBhIFNpbXBsZSBJbWFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBvZiBCU1BzIGludm9sdmVzIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IHRvCisgICAgICAgICAgICAgICAgY3JlYXRlIGFuZCB0ZXN0IGxheWVycyB0aGF0IGFsbG93IGVhc3kgZGV2ZWxvcG1lbnQgb2YKKyAgICAgICAgICAgICAgICBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyB0YXJnZXRlZCBmb3Igc3BlY2lmaWMgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgVG8gZGV2ZWxvcG1lbnQgQlNQcywgeW91IG5lZWQgdG8gdGFrZSBzb21lIGFkZGl0aW9uYWwgc3RlcHMKKyAgICAgICAgICAgICAgICBiZXlvbmQgd2hhdCB3YXMgZGVzY3JpYmVkIGluIHNldHRpbmcgdXAgYSBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+CisgICAgICAgICAgICAgICAgcHJvdmlkZXMgQlNQLXJlbGF0ZWQgZGV2ZWxvcG1lbnQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIHNwZWNpZmljcyBvbiBkZXZlbG9wbWVudCBob3N0IHByZXBhcmF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPlByZXBhcmluZyBZb3VyIEJ1aWxkIEhvc3QgdG8gV29yayBXaXRoIEJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQorICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5LZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIGJlIGRldmVsb3Bpbmcga2VybmVscyB1c2luZyB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IHlvdSBsaWtlbHkgd2lsbCBiZSB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEEgd29ya2Zsb3cgdXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBtYWtlcyBrZXJuZWwKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBxdWlja2VyIGJ5IHJlZHVjaW5nIGl0ZXJhdGlvbiBjeWNsZSB0aW1lcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsnPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvdWxpbms+CisgICAgICAgICAgICAgICAgcHJvdmlkZXMga2VybmVsLXJlbGF0ZWQgZGV2ZWxvcG1lbnQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIHNwZWNpZmljcyBvbiBkZXZlbG9wbWVudCBob3N0IHByZXBhcmF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNwcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QtdG8td29yay1vbi10aGUta2VybmVsJz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3QgdG8gV29yayBvbiB0aGUgS2VybmVsPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2luZyBUb2FzdGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIG90aGVyIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgbWV0aG9kIHRoYXQgaW52b2x2ZXMgYW4KKyAgICAgICAgICAgICAgICBpbnRlcmZhY2UgdGhhdCBlZmZlY3RpdmVseSBwdXRzIHRoZSBZb2N0byBQcm9qZWN0IGludG8gdGhlCisgICAgICAgICAgICAgICAgYmFja2dyb3VuZCBpcyBUb2FzdGVyLgorICAgICAgICAgICAgICAgIFRvYXN0ZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZSBpbnRlcmZhY2UgZW5hYmxlcyB5b3UgdG8gY29uZmlndXJlIGFuZCBydW4geW91ciBidWlsZHMuCisgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzIGlzIGNvbGxlY3RlZCBhbmQgc3RvcmVkIGluIGEgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgVG9hc3RlciB0byBjb25maWd1cmUgYW5kIHN0YXJ0IGJ1aWxkcyBvbiBtdWx0aXBsZQorICAgICAgICAgICAgICAgIHJlbW90ZSBidWlsZCBzZXJ2ZXJzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvciBzdGVwcyB0aGF0IHNob3cgeW91IGhvdyB0byBzZXQgdXAgeW91ciBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGhvc3QgdG8gdXNlIFRvYXN0ZXIgYW5kIG9uIGhvdyB0byB1c2UgVG9hc3RlciBpbiBnZW5lcmFsLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz4KKyAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIG1haW50YWlucyBjb21wbGV0ZSBzb3VyY2UgcmVwb3NpdG9yaWVzIGZvciBhbGwKKyAgICAgICAgWW9jdG8gUHJvamVjdCBmaWxlcyBhdAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgorICAgICAgICBUaGlzIHdlYi1iYXNlZCBzb3VyY2UgY29kZSBicm93c2VyIGlzIG9yZ2FuaXplZCBpbnRvIGNhdGVnb3JpZXMgYnkKKyAgICAgICAgZnVuY3Rpb24gc3VjaCBhcyBJREUgUGx1Z2lucywgTWF0Y2hib3gsIFBva3ksIFlvY3RvIExpbnV4IEtlcm5lbCwgYW5kCisgICAgICAgIHNvIGZvcnRoLgorICAgICAgICBGcm9tIHRoZSBpbnRlcmZhY2UsIHlvdSBjYW4gY2xpY2sgb24gYW55IHBhcnRpY3VsYXIgaXRlbSBpbiB0aGUgIk5hbWUiCisgICAgICAgIGNvbHVtbiBhbmQgc2VlIHRoZSBVUkwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB0aGF0IHlvdSBuZWVkIHRvIGNsb25lCisgICAgICAgIGEgR2l0IHJlcG9zaXRvcnkgZm9yIHRoYXQgcGFydGljdWxhciBpdGVtLgorICAgICAgICBIYXZpbmcgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICB3aGljaCBpcyB1c3VhbGx5IG5hbWVkICJwb2t5IiwgYWxsb3dzCisgICAgICAgIHlvdSB0byBtYWtlIGNoYW5nZXMsIGNvbnRyaWJ1dGUgdG8gdGhlIGhpc3RvcnksIGFuZCB1bHRpbWF0ZWx5IGVuaGFuY2UKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QncyB0b29scywgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcywgYW5kIHNvIGZvcnRoLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgYW55IHN1cHBvcnRlZCByZWxlYXNlIG9mIFlvY3RvIFByb2plY3QsIHlvdSBjYW4gYWxzbyBnbyB0byB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4gYW5kCisgICAgICAgIHNlbGVjdCB0aGUgIkRPV05MT0FEUyIgaXRlbSBmcm9tIHRoZSAiU09GVFdBUkUiIG1lbnUgYW5kIGdldCBhCisgICAgICAgIHJlbGVhc2VkIHRhcmJhbGwgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSwgYW55CisgICAgICAgIHN1cHBvcnRlZCBCU1AgdGFyYmFsbCwgb3IgWW9jdG8gUHJvamVjdCB0b29scy4KKyAgICAgICAgVW5wYWNraW5nIHRoZXNlIHRhcmJhbGxzIGdpdmVzIHlvdSBhIHNuYXBzaG90IG9mIHRoZSByZWxlYXNlZAorICAgICAgICBmaWxlcy4KKyAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBzZXR0aW5nIHVwIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIGZvciBzdXBwb3J0ZWQgQlNQcworICAgICAgICAgICAgICAgICAgICAoZS5nLiwgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikgaXMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB0byBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgd29yayBpbiBtYXRjaGluZyBicmFuY2hlcyBmb3IgYm90aAorICAgICAgICAgICAgICAgICAgICB0aGUgc2VsZWN0ZWQgQlNQIHJlcG9zaXRvcnkgYW5kIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBjaGVja2VkIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gYW5kIHlvdSBhcmUgZ29pbmcgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4sIGJlIHN1cmUgdG8gY2hlY2tvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICJtYXN0ZXIiIGJyYW5jaCBvZiA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIHN1bW1hcnksIGhlcmUgaXMgd2hlcmUgeW91IGNhbiBnZXQgdGhlIHByb2plY3QgZmlsZXMgbmVlZGVkIGZvcgorICAgICAgICBkZXZlbG9wbWVudDoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nc291cmNlLXJlcG9zaXRvcmllcyc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvbnRhaW5zIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgUG9reSBTdXBwb3J0LAorICAgICAgICAgICAgICAgIFRvb2xzLCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZCBZb2N0byBNZXRhZGF0YSBMYXllcnMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgbG9jYWwgY29waWVzIG9mIEdpdCByZXBvc2l0b3JpZXMgZm9yIGVhY2ggb2YKKyAgICAgICAgICAgICAgICB0aGVzZSBhcmVhcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSB1cHN0cmVhbSBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLXNvdXJjZS1yZXBvc2l0b3JpZXMnPkFjY2Vzc2luZyBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgU2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGFuY2hvciBpZD0naW5kZXgtZG93bmxvYWRzJyAvPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBpbmRleCBvZiByZWxlYXNlcyBzdWNoIGFzIFBva3ksIFBzZXVkbywgaW5zdGFsbGVycworICAgICAgICAgICAgICAgIGZvciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLCBtaXNjZWxsYW5lb3VzIHN1cHBvcnQKKyAgICAgICAgICAgICAgICBhbmQgYWxsIHJlbGVhc2VkIHZlcnNpb25zIG9mIFlvY3RvIFByb2plY3QgaW4gdGhlIGZvcm0gb2YKKyAgICAgICAgICAgICAgICBpbWFnZXMgb3IgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGV4dHJhY3RpbmcgdGhlc2UgZmlsZXMgZG9lcyBub3QgcHJvZHVjZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgYnV0IHJhdGhlciBhIHNuYXBzaG90IG9mIGEKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJlbGVhc2Ugb3IgaW1hZ2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSIzLjVpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3NpbmctaW5kZXgtb2YtcmVsZWFzZXMnPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdkb3dubG9hZHMtcGFnZSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJET1dOTE9BRFMiIHBhZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZSBpbmNsdWRlcyBhICJET1dOTE9BRFMiIHBhZ2UKKyAgICAgICAgICAgICAgICBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlICJTT0ZUV0FSRSIgbWVudSB0aGF0IGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICBkb3dubG9hZCBhbnkgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB0b29sLCBhbmQgQm9hcmQgU3VwcG9ydAorICAgICAgICAgICAgICAgIFBhY2thZ2UgKEJTUCkgaW4gdGFyYmFsbCBmb3JtLgorICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFyZWEuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHVzZSB0aGUgIkRPV05MT0FEUyIgcGFnZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy10aGUtZG93bmxvYWRzLXBhZ2UnPlVzaW5nIHRoZSBEb3dubG9hZHMgUGFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdncy1naXQtd29ya2Zsb3dzLWFuZC10aGUteW9jdG8tcHJvamVjdCc+CisgICAgPHRpdGxlPkdpdCBXb3JrZmxvd3MgYW5kIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9waW5nIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGxpa2VseSByZXF1aXJlcyB0aGUgdXNlIG9mCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPi4KKyAgICAgICAgR2l0IGlzIGEgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbQorICAgICAgICB1c2VkIGFzIHBhcnQgb2YgbWFueSBjb2xsYWJvcmF0aXZlIGRlc2lnbiBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyB3b3JrZmxvdyBjb25jZXB0cyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbmQKKyAgICAgICAgR2l0LgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgaW5mb3JtYXRpb24gY292ZXJzIGJhc2ljIHByYWN0aWNlcyB0aGF0IGRlc2NyaWJlCisgICAgICAgIHJvbGVzIGFuZCBhY3Rpb25zIGluIGEgY29sbGFib3JhdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhpcyB0eXBlIG9mIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UKKyAgICAgICAgICAgIG1pZ2h0IG5vdCB3YW50IHRvIHJlYWQgdGhpcyBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGZpbGVzIGFyZSBtYWludGFpbmVkIHVzaW5nIEdpdCBpbiAiYnJhbmNoZXMiCisgICAgICAgIHdob3NlIEdpdCBoaXN0b3JpZXMgdHJhY2sgZXZlcnkgY2hhbmdlIGFuZCB3aG9zZSBzdHJ1Y3R1cmVzCisgICAgICAgIHByb3ZpZGUgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgorICAgIDxwYXJhPgorCisgICAgPC9wYXJhPgorICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlZ3JpdHkgb2YgdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiBhIGdpdmVuIEdpdAorICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICBUaGUgIm1hc3RlciIgYnJhbmNoIGlzIHRoZSAidXBzdHJlYW0iIHJlcG9zaXRvcnkgZnJvbSB3aGljaCBmaW5hbCBvcgorICAgICAgICBtb3N0IHJlY2VudCBidWlsZHMgb2YgYSBwcm9qZWN0IG9jY3VyLgorICAgICAgICBUaGUgbWFpbnRhaW5lciBpcyByZXNwb25zaWJsZSBmb3IgYWNjZXB0aW5nIGNoYW5nZXMgZnJvbSBvdGhlcgorICAgICAgICBkZXZlbG9wZXJzIGFuZCBmb3Igb3JnYW5pemluZyB0aGUgdW5kZXJseWluZyBicmFuY2ggc3RydWN0dXJlIHRvCisgICAgICAgIHJlZmxlY3QgcmVsZWFzZSBzdHJhdGVnaWVzIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gZmluZGluZyBvdXQgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciAobWFpbnRhaW5zKQorICAgICAgICAgICAgYSBwYXJ0aWN1bGFyIGFyZWEgb2YgY29kZSBpbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgYWxzbyBoYXMgYW4KKyAgICAgICAgdXBzdHJlYW0gY29udHJpYnV0aW9uIEdpdCByZXBvc2l0b3J5IG5hbWVkCisgICAgICAgIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPi4KKyAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBpbiB0aGlzIHJlcG9zaXRvcnkgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UKKyAgICAgICAgb2YgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IG9yZ2FuaXplZAorICAgICAgICB3aXRoaW4gdGhlICJQb2t5IFN1cHBvcnQiIGFyZWEuCisgICAgICAgIFRoZXNlIGJyYW5jaGVzIGhvbGQgY2hhbmdlcyAoY29tbWl0cykgdG8gdGhlIHByb2plY3QgdGhhdCBoYXZlIGJlZW4KKyAgICAgICAgc3VibWl0dGVkIG9yIGNvbW1pdHRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCB0ZWFtIGFuZCBieQorICAgICAgICBjb21tdW5pdHkgbWVtYmVycyB3aG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdC4KKyAgICAgICAgVGhlIG1haW50YWluZXIgZGV0ZXJtaW5lcyBpZiB0aGUgY2hhbmdlcyBhcmUgcXVhbGlmaWVkIHRvIGJlIG1vdmVkCisgICAgICAgIGZyb20gdGhlICJjb250cmliIiBicmFuY2hlcyBpbnRvIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgdGhlIEdpdAorICAgICAgICByZXBvc2l0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9wZXJzIChpbmNsdWRpbmcgY29udHJpYnV0aW5nIGNvbW11bml0eSBtZW1iZXJzKSBjcmVhdGUgYW5kCisgICAgICAgIG1haW50YWluIGNsb25lZCByZXBvc2l0b3JpZXMgb2YgdXBzdHJlYW0gYnJhbmNoZXMuCisgICAgICAgIFRoZSBjbG9uZWQgcmVwb3NpdG9yaWVzIGFyZSBsb2NhbCB0byB0aGVpciBkZXZlbG9wbWVudCBwbGF0Zm9ybXMgYW5kCisgICAgICAgIGFyZSB1c2VkIHRvIGRldmVsb3AgY2hhbmdlcy4KKyAgICAgICAgV2hlbiBhIGRldmVsb3BlciBpcyBzYXRpc2ZpZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBvciBjaGFuZ2UsCisgICAgICAgIHRoZXkgInB1c2giIHRoZSBjaGFuZ2UgdG8gdGhlIGFwcHJvcHJpYXRlICJjb250cmliIiByZXBvc2l0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3Iga2VlcGluZyB0aGVpciBsb2NhbCByZXBvc2l0b3J5CisgICAgICAgIHVwLXRvLWRhdGUgd2l0aCB3aGF0ZXZlciB1cHN0cmVhbSBicmFuY2ggdGhleSBhcmUgd29ya2luZyBhZ2FpbnN0LgorICAgICAgICBUaGV5IGFyZSBhbHNvIHJlc3BvbnNpYmxlIGZvciBzdHJhaWdodGVuaW5nIG91dCBhbnkgY29uZmxpY3RzIHRoYXQKKyAgICAgICAgbWlnaHQgYXJpc2Ugd2l0aGluIGZpbGVzIHRoYXQgYXJlIGJlaW5nIHdvcmtlZCBvbiBzaW11bHRhbmVvdXNseSBieQorICAgICAgICBtb3JlIHRoYW4gb25lIHBlcnNvbi4KKyAgICAgICAgQWxsIHRoaXMgd29yayBpcyBkb25lIGxvY2FsbHkgb24gdGhlIGRldmVsb3BtZW50IGhvc3QgYmVmb3JlCisgICAgICAgIGFueXRoaW5nIGlzIHB1c2hlZCB0byBhICJjb250cmliIiBhcmVhIGFuZCBleGFtaW5lZCBhdCB0aGUgbWFpbnRhaW5lcidzCisgICAgICAgIGxldmVsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMKKyAgICAgICAgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZSAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdAorICAgICAgICB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byBhbiB1cHN0cmVhbSBicmFuY2guCisgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBjYWxsZWQgInN1Ym1pdHRpbmcgYSBwYXRjaCIgb3IgInN1Ym1pdHRpbmcgYSBjaGFuZ2UuIgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc3VibWl0dGluZyBwYXRjaGVzIGFuZCBjaGFuZ2VzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBzdW1tYXJ5LCBhIHNpbmdsZSBwb2ludCBvZiBlbnRyeQorICAgICAgICBleGlzdHMgZm9yIGNoYW5nZXMgaW50byBhICJtYXN0ZXIiIG9yIGRldmVsb3BtZW50IGJyYW5jaCBvZiB0aGUKKyAgICAgICAgR2l0IHJlcG9zaXRvcnksIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHByb2plY3QncyBtYWludGFpbmVyLgorICAgICAgICBBbmQsIGEgc2V0IG9mIGRldmVsb3BlcnMgZXhpc3Qgd2hvIGluZGVwZW5kZW50bHkgZGV2ZWxvcCwgdGVzdCwgYW5kCisgICAgICAgIHN1Ym1pdCBjaGFuZ2VzIHRvICJjb250cmliIiBhcmVhcyBmb3IgdGhlIG1haW50YWluZXIgdG8gZXhhbWluZS4KKyAgICAgICAgVGhlIG1haW50YWluZXIgdGhlbiBjaG9vc2VzIHdoaWNoIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGJlY29tZSBhCisgICAgICAgIHBlcm1hbmVudCBwYXJ0IG9mIHRoZSBwcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjNpbiIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGlsZSBlYWNoIGRldmVsb3BtZW50IGVudmlyb25tZW50IGlzIHVuaXF1ZSwgdGhlcmUgYXJlIHNvbWUgYmVzdAorICAgICAgICBwcmFjdGljZXMgb3IgbWV0aG9kcyB0aGF0IGhlbHAgZGV2ZWxvcG1lbnQgcnVuIHNtb290aGx5LgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHNvbWUgb2YgdGhlc2UgcHJhY3RpY2VzLgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBHaXQgd29ya2Zsb3dzLCBzZWUgdGhlIHdvcmtmbG93IHRvcGljcyBpbgorICAgICAgICB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2Jvb2suZ2l0LXNjbS5jb20nPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFNtYWxsIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGtlZXAgdGhlIGNoYW5nZXMgeW91IGNvbW1pdCBzbWFsbCBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgIGJ1bmRsaW5nIG1hbnkgZGlzcGFyYXRlIGNoYW5nZXMgaW50byBhIHNpbmdsZSBjb21taXQuCisgICAgICAgICAgICAgICAgVGhpcyBwcmFjdGljZSBub3Qgb25seSBrZWVwcyB0aGluZ3MgbWFuYWdlYWJsZSBidXQgYWxzbyBhbGxvd3MKKyAgICAgICAgICAgICAgICB0aGUgbWFpbnRhaW5lciB0byBtb3JlIGVhc2lseSBpbmNsdWRlIG9yIHJlZnVzZSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbXBsZXRlIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIGdvb2QgcHJhY3RpY2UgdG8gbGVhdmUgdGhlIHJlcG9zaXRvcnkgaW4gYQorICAgICAgICAgICAgICAgIHN0YXRlIHRoYXQgYWxsb3dzIHlvdSB0byBzdGlsbCBzdWNjZXNzZnVsbHkgYnVpbGQgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29tbWl0IGhhbGYgb2YgYSBmZWF0dXJlLAorICAgICAgICAgICAgICAgIHRoZW4gYWRkIHRoZSBvdGhlciBoYWxmIGFzIGEgc2VwYXJhdGUsIGxhdGVyIGNvbW1pdC4KKyAgICAgICAgICAgICAgICBFYWNoIGNvbW1pdCBzaG91bGQgdGFrZSB5b3UgZnJvbSBvbmUgYnVpbGRhYmxlIHByb2plY3Qgc3RhdGUKKyAgICAgICAgICAgICAgICB0byBhbm90aGVyIGJ1aWxkYWJsZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIEJyYW5jaGVzIExpYmVyYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUsIHVzZSwgYW5kIGRlbGV0ZSBsb2NhbCBicmFuY2hlcyBpbgorICAgICAgICAgICAgICAgIHlvdXIgd29ya2luZyBHaXQgcmVwb3NpdG9yeSBvbiB0aGUgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG5hbWUgdGhlc2UgYnJhbmNoZXMgYW55dGhpbmcgeW91IGxpa2UuCisgICAgICAgICAgICAgICAgSXQgaXMgaGVscGZ1bCB0byBnaXZlIHRoZW0gbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgZmVhdHVyZSBvciBjaGFuZ2Ugb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBkb25lIHdpdGggYSBmZWF0dXJlIG9yIGNoYW5nZSBhbmQgaGF2ZSBtZXJnZWQgaXQKKyAgICAgICAgICAgICAgICBpbnRvIHlvdXIgbG9jYWwgbWFzdGVyIGJyYW5jaCwgc2ltcGx5IGRpc2NhcmQgdGhlIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIGJyYW5jaC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVyZ2UgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4gY29tbWFuZCBhbGxvd3MgeW91IHRvIHRha2UKKyAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmcm9tIG9uZSBicmFuY2ggYW5kIGZvbGQgdGhlbSBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBtb3JlIHRoYW4gYSBzaW5nbGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wZXIgbWlnaHQgYmUgd29ya2luZyBvbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBmZWF0dXJlLgorICAgICAgICAgICAgICAgIE1lcmdpbmcgY2hhbmdlcyBhbHNvIGF1dG9tYXRpY2FsbHkgaWRlbnRpZmllcyBhbnkgY29sbGlzaW9ucworICAgICAgICAgICAgICAgIG9yICJjb25mbGljdHMiIHRoYXQgbWlnaHQgaGFwcGVuIGFzIGEgcmVzdWx0IG9mIHRoZSBzYW1lIGxpbmVzCisgICAgICAgICAgICAgICAgb2YgY29kZSBiZWluZyBhbHRlcmVkIGJ5IHR3byBkaWZmZXJlbnQgZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEJyYW5jaGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmVjYXVzZSBicmFuY2hlcyBhcmUgZWFzeSB0byB1c2UsIHlvdSBzaG91bGQgdXNlIGEgc3lzdGVtCisgICAgICAgICAgICAgICAgd2hlcmUgYnJhbmNoZXMgaW5kaWNhdGUgdmFyeWluZyBsZXZlbHMgb2YgY29kZSByZWFkaW5lc3MuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gaGF2ZSBhICJ3b3JrIiBicmFuY2ggdG8gZGV2ZWxvcCBpbiwgYQorICAgICAgICAgICAgICAgICJ0ZXN0IiBicmFuY2ggd2hlcmUgdGhlIGNvZGUgb3IgY2hhbmdlIGlzIHRlc3RlZCwgYSAic3RhZ2UiCisgICAgICAgICAgICAgICAgYnJhbmNoIHdoZXJlIGNoYW5nZXMgYXJlIHJlYWR5IHRvIGJlIGNvbW1pdHRlZCwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgIEFzIHlvdXIgcHJvamVjdCBkZXZlbG9wcywgeW91IGNhbiBtZXJnZSBjb2RlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICBicmFuY2hlcyB0byByZWZsZWN0IGV2ZXItaW5jcmVhc2luZyBzdGFibGUgc3RhdGVzIG9mIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgUHVzaCBhbmQgUHVsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBwdXNoLXB1bGwgd29ya2Zsb3cgaXMgYmFzZWQgb24gdGhlIGNvbmNlcHQgb2YgZGV2ZWxvcGVycworICAgICAgICAgICAgICAgICJwdXNoaW5nIiBsb2NhbCBjb21taXRzIHRvIGEgcmVtb3RlIHJlcG9zaXRvcnksIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgdXN1YWxseSBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgd29ya2Zsb3cgaXMgYWxzbyBiYXNlZCBvbiBkZXZlbG9wZXJzICJwdWxsaW5nIiBrbm93bgorICAgICAgICAgICAgICAgIHN0YXRlcyBvZiB0aGUgcHJvamVjdCBkb3duIGludG8gdGhlaXIgbG9jYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgVGhlIHdvcmtmbG93IGVhc2lseSBhbGxvd3MgeW91IHRvIHB1bGwgY2hhbmdlcyBzdWJtaXR0ZWQgYnkKKyAgICAgICAgICAgICAgICBvdGhlciBkZXZlbG9wZXJzIGZyb20gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW50byB5b3VyCisgICAgICAgICAgICAgICAgd29yayBhcmVhIGVuc3VyaW5nIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHNvZnR3YXJlCisgICAgICAgICAgICAgICAgb24gd2hpY2ggdG8gZGV2ZWxvcC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgdHdvIHNjcmlwdHMgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHRoYXQgc2hpcCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIHJlbGVhc2UgdG8gZmFjaWxpdGF0ZSB0aGlzIHdvcmtmbG93LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBzY3JpcHRzIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZSBtYWludGFpbmVyIHRocm91Z2ggYW4KKyAgICAgICAgICAgICAgICBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UKKyAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgc2VuZCB0aGUgZW1haWwgdXNpbmcgdGhlIEdpdCBjb21tYW5kcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dpdCc+CisgICAgPHRpdGxlPkdpdDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBHaXQsIHdoaWNoIGlzIGEKKyAgICAgICAgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KKyAgICAgICAgR2l0IHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCBub24tbGluZWFyIGRldmVsb3BtZW50LAorICAgICAgICBhbmQgY2FuIGhhbmRsZSBsYXJnZSBwcm9qZWN0cy4KKyAgICAgICAgSXQgaXMgYmVzdCB0aGF0IHlvdSBoYXZlIHNvbWUgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZworICAgICAgICBvZiBob3cgR2l0IHRyYWNrcyBwcm9qZWN0cyBhbmQgaG93IHRvIHdvcmsgd2l0aCBHaXQgaWYKKyAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBob3cgR2l0IHdvcmtzIGFuZAorICAgICAgICBwcm92aWRlcyB5b3Ugd2l0aCBhIHN1bW1hcnkgb2Ygc29tZSBlc3NlbnRpYWwgR2l0IGNvbW1hbmRzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZAorICAgICAgICAgICAgICAgICAgICBHaXQgdG8geW91ciBzeXN0ZW0gdGhyb3VnaCB5b3VyIGRpc3RyaWJ1dGlvbidzICJzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICBzdG9yZSIgKGUuZy4gZm9yIFVidW50dSwgdXNlIHRoZSBVYnVudHUgU29mdHdhcmUgZmVhdHVyZSkuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgR2l0IGRvd25sb2FkIHBhZ2UsIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBiZXlvbmQgdGhlIGludHJvZHVjdG9yeSBuYXR1cmUgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVwb3NpdG9yaWVzLXRhZ3MtYW5kLWJyYW5jaGVzJz4KKyAgICAgICAgPHRpdGxlPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBicmllZmx5IGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGFuZCBhbHNvIGluIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dzLWdpdC13b3JrZmxvd3MtYW5kLXRoZS15b2N0by1wcm9qZWN0Jz5HaXQgV29ya2Zsb3dzIGFuZCB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLCB0aGUgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgc291cmNlIHJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBsb29rIGF0IHRoaXMgd2ViLWludGVyZmFjZSBvZiB0aGUgcmVwb3NpdG9yaWVzLCBlYWNoIGl0ZW0KKyAgICAgICAgICAgIGlzIGEgc2VwYXJhdGUgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgdXNlIGJyYW5jaGluZyB0ZWNobmlxdWVzIHRoYXQgdHJhY2sgY29udGVudAorICAgICAgICAgICAgY2hhbmdlIChub3QgZmlsZXMpIHdpdGhpbiBhIHByb2plY3QgKGUuZy4gYSBuZXcgZmVhdHVyZSBvciB1cGRhdGVkCisgICAgICAgICAgICBkb2N1bWVudGF0aW9uKS4KKyAgICAgICAgICAgIENyZWF0aW5nIGEgdHJlZS1saWtlIHN0cnVjdHVyZSBiYXNlZCBvbiBwcm9qZWN0IGRpdmVyZ2VuY2UgYWxsb3dzCisgICAgICAgICAgICBmb3IgZXhjZWxsZW50IGhpc3RvcmljYWwgaW5mb3JtYXRpb24gb3ZlciB0aGUgbGlmZSBvZiBhIHByb2plY3QuCisgICAgICAgICAgICBUaGlzIG1ldGhvZG9sb2d5IGFsc28gYWxsb3dzIGZvciBhbiBlbnZpcm9ubWVudCBmcm9tIHdoaWNoIHlvdSBjYW4KKyAgICAgICAgICAgIGRvIGxvdHMgb2YgbG9jYWwgZXhwZXJpbWVudGF0aW9uIG9uIHByb2plY3RzIGFzIHlvdSBkZXZlbG9wCisgICAgICAgICAgICBjaGFuZ2VzIG9yIG5ldyBmZWF0dXJlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBHaXQgcmVwb3NpdG9yeSByZXByZXNlbnRzIGFsbCBkZXZlbG9wbWVudCBlZmZvcnRzIGZvciBhIGdpdmVuCisgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBHaXQgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICBhbGwgY2hhbmdlcyBhbmQgZGV2ZWxvcG1lbnRzIGZvciB0aGF0IHJlcG9zaXRvcnkgb3ZlciB0aGUgY291cnNlCisgICAgICAgICAgICBvZiBpdHMgZW50aXJlIGxpZmUuCisgICAgICAgICAgICBUaGF0IG1lYW5zIHRoYXQgYWxsIGNoYW5nZXMgdGhhdCBtYWtlIHVwIGFsbCByZWxlYXNlcyBhcmUgY2FwdHVyZWQuCisgICAgICAgICAgICBUaGUgcmVwb3NpdG9yeSBtYWludGFpbnMgYSBjb21wbGV0ZSBoaXN0b3J5IG9mIGNoYW5nZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBhbnkgcmVwb3NpdG9yeSBieSAiY2xvbmluZyIgaXQKKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgYSBHaXQgcmVwb3NpdG9yeSwgeW91IGVuZCB1cCB3aXRoIGFuIGlkZW50aWNhbAorICAgICAgICAgICAgY29weSBvZiB0aGUgcmVwb3NpdG9yeSBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYSBsb2NhbCBjb3B5IG9mIGEgcmVwb3NpdG9yeSwgeW91IGNhbiB0YWtlIHN0ZXBzIHRvCisgICAgICAgICAgICBkZXZlbG9wIGxvY2FsbHkuCisgICAgICAgICAgICBGb3IgZXhhbXBsZXMgb24gaG93IHRvIGNsb25lIEdpdCByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IEdpdCB0cmFja3MgY29udGVudCBjaGFuZ2UgYW5kCisgICAgICAgICAgICBub3QgZmlsZXMuCisgICAgICAgICAgICBHaXQgdXNlcyAiYnJhbmNoZXMiIHRvIG9yZ2FuaXplIGRpZmZlcmVudCBkZXZlbG9wbWVudCBlZmZvcnRzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgaGFzCisgICAgICAgICAgICBzZXZlcmFsIGJyYW5jaGVzIHRoYXQgaW5jbHVkZSB0aGUgY3VycmVudCAiJkRJU1RST19OQU1FX05PX0NBUDsiCisgICAgICAgICAgICBicmFuY2gsIHRoZSAibWFzdGVyIiBicmFuY2gsIGFuZCBtYW55IGJyYW5jaGVzIGZvciBwYXN0CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvaGVhZHMnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiQnJhbmNoIiBoZWFkaW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJyYW5jaGVzIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBhcmVhIG9mIGRldmVsb3BtZW50LgorICAgICAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCByZXByZXNlbnRzIHRoZSBjdXJyZW50IG9yIG1vc3QgcmVjZW50CisgICAgICAgICAgICBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIEFsbCBvdGhlciBicmFuY2hlcyByZXByZXNlbnQgb2Zmc2hvb3RzIG9mIHRoZSAibWFzdGVyIiBicmFuY2guCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSwgdGhlIGNvcHkgaGFzCisgICAgICAgICAgICB0aGUgc2FtZSBzZXQgb2YgYnJhbmNoZXMgYXMgdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgVGhpcyBtZWFucyB5b3UgY2FuIHVzZSBHaXQgdG8gY3JlYXRlIGEgbG9jYWwgd29ya2luZyBhcmVhCisgICAgICAgICAgICAoYWxzbyBjYWxsZWQgYSBicmFuY2gpIHRoYXQgdHJhY2tzIGEgc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoCisgICAgICAgICAgICBmcm9tIHRoZSB1cHN0cmVhbSBzb3VyY2UgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBpbiBvdGhlciB3b3JkcywgeW91IGNhbiBkZWZpbmUgeW91ciBsb2NhbCBHaXQgZW52aXJvbm1lbnQgdG8KKyAgICAgICAgICAgIHdvcmsgb24gYW55IGRldmVsb3BtZW50IGJyYW5jaCBpbiB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRvIGhlbHAgaWxsdXN0cmF0ZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIEdpdCBjb21tYW5kczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgJCBjZCBwb2t5CisgICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgYWZ0ZXIgbW92aW5nIHRvIHRoZSBob21lIGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGEKKyAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBHaXQgY2hlY2tzIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICBBZnRlciBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIG5ldyBsb2NhbCByZXBvc2l0b3J5CisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCisgICAgICAgICAgICBhbmQgY2hlY2tzIG91dCBhIGxvY2FsIGJyYW5jaCBuYW1lZCAiJkRJU1RST19OQU1FX05PX0NBUDsiLCB3aGljaAorICAgICAgICAgICAgdHJhY2tzIHRoZSB1cHN0cmVhbSAib3JpZ2luLyZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2guCisgICAgICAgICAgICBDaGFuZ2VzIHlvdSBtYWtlIHdoaWxlIGluIHRoaXMgYnJhbmNoIHdvdWxkIHVsdGltYXRlbHkgYWZmZWN0CisgICAgICAgICAgICB0aGUgdXBzdHJlYW0gIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZCBjaGVja291dCBhCisgICAgICAgICAgICBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIGJyYW5jaCBuYW1lLAorICAgICAgICAgICAgeW91ciBsb2NhbCBlbnZpcm9ubWVudCBtYXRjaGVzIHRoZSAidGlwIiBvZiB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSB5b3UgY3JlYXRlZCB5b3VyIGxvY2FsIGJyYW5jaCwKKyAgICAgICAgICAgIHdoaWNoIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBmaWxlcyBpbiB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBjcmVhdGluZyBhbmQgY2hlY2tpbmcgb3V0IGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uCisgICAgICAgICAgICB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggbmFtZSBpcyBub3QgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgIGNoZWNraW5nIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgS2VlcCByZWFkaW5nIHRvIHNlZSBob3cgeW91IGNyZWF0ZSBhIGxvY2FsIHNuYXBzaG90IG9mIGEgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgR2l0IHVzZXMgInRhZ3MiIHRvIG1hcmsgc3BlY2lmaWMgY2hhbmdlcyBpbiBhIHJlcG9zaXRvcnkgYnJhbmNoCisgICAgICAgICAgICBzdHJ1Y3R1cmUuCisgICAgICAgICAgICBUeXBpY2FsbHksIGEgdGFnIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpYWwgcG9pbnQgc3VjaCBhcyB0aGUgZmluYWwKKyAgICAgICAgICAgIGNoYW5nZSAob3IgY29tbWl0KSBiZWZvcmUgYSBwcm9qZWN0IGlzIHJlbGVhc2VkLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHRhZ3MgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeSBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvdGFncyc+Wy4uLl08L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICBsaW5rIGJlbmVhdGggdGhlICJUYWciIGhlYWRpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUga2V5IHRhZ3MgZm9yIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXJlCisgICAgICAgICAgICA8ZmlsZW5hbWU+amV0aHJvLTE0LjAuMzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1vcnR5LTE2LjAuMTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPnB5cm8tMTcuMC4wPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZXNlIHRhZ3MgcmVwcmVzZW50IFlvY3RvIFByb2plY3QgcmVsZWFzZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UgYWxzbworICAgICAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZSB0YWdzIGluIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgU2ltaWxhciB0byBicmFuY2hlcywgeW91IGNhbiBjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZworICAgICAgICAgICAgR2l0IGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLgorICAgICAgICAgICAgV2hlbiB5b3UgZG8gdGhpcywgeW91IGdldCBhIHNuYXBzaG90IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSB0aGF0CisgICAgICAgICAgICByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIGZpbGVzIHdoZW4gdGhlIGNoYW5nZSB3YXMgbWFkZSBhc3NvY2lhdGVkCisgICAgICAgICAgICB3aXRoIHRoYXQgdGFnLgorICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzZSBpcyB0byBjaGVja291dCBhIHdvcmtpbmcgYnJhbmNoIHRoYXQgbWF0Y2hlcworICAgICAgICAgICAgYSBzcGVjaWZpYyBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CisgICAgICQgY2QgcG9reQorICAgICAkIGdpdCBmZXRjaCAtLXRhZ3MKKyAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy9yb2Nrby0xOC4wLjAgLWIgbXlfcm9ja28tMTguMC4wCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHlvdXIKKyAgICAgICAgICAgIGxvY2FsIFlvY3RvIFByb2plY3QgcmVwb3NpdG9yeSBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgQWZ0ZXIgbW92aW5nIHRvIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZldGNoPC9maWxlbmFtZT4gY29tbWFuZCBtYWtlcyBhbGwgdGhlIHVwc3RyZWFtCisgICAgICAgICAgICB0YWdzIGF2YWlsYWJsZSBsb2NhbGx5IGluIHlvdXIgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEZpbmFsbHksIHRoZSA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgY3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIGJyYW5jaCBuYW1lZCAibXktcm9ja28tMTguMC4wIiB0aGF0IGlzCisgICAgICAgICAgICBiYXNlZCBvbiB0aGUgdXBzdHJlYW0gYnJhbmNoIHdob3NlICJIRUFEIiBtYXRjaGVzIHRoZQorICAgICAgICAgICAgY29tbWl0IGluIHRoZSByZXBvc2l0b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgInJvY2tvLTE4LjAuMCIgdGFnLgorICAgICAgICAgICAgVGhlIGZpbGVzIGluIHlvdXIgcmVwb3NpdG9yeSBub3cgZXhhY3RseSBtYXRjaCB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSBhcyBpdCBpcyB0YWdnZWQgaW4gdGhlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZAorICAgICAgICAgICAgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIHRhZywgeW91ciBlbnZpcm9ubWVudAorICAgICAgICAgICAgbWF0Y2hlcyBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUgYW5kIG5vdCB0aGUgZW50aXJlIGRldmVsb3BtZW50CisgICAgICAgICAgICBicmFuY2ggKGkuZS4gZnJvbSB0aGUgInRpcCIgb2YgdGhlIGJyYW5jaCBiYWNrd2FyZHMpLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Jhc2ljLWNvbW1hbmRzJz4KKyAgICAgICAgPHRpdGxlPkJhc2ljIENvbW1hbmRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCBoYXMgYW4gZXh0ZW5zaXZlIHNldCBvZiBjb21tYW5kcyB0aGF0IGxldHMgeW91IG1hbmFnZSBjaGFuZ2VzCisgICAgICAgICAgICBhbmQgcGVyZm9ybSBjb2xsYWJvcmF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgorICAgICAgICAgICAgQ29udmVuaWVudGx5IHRob3VnaCwgeW91IGNhbiBtYW5hZ2Ugd2l0aCBhIHNtYWxsIHNldCBvZiBiYXNpYworICAgICAgICAgICAgb3BlcmF0aW9ucyBhbmQgd29ya2Zsb3dzIG9uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljCisgICAgICAgICAgICBwaGlsb3NvcGh5IGJlaGluZCBHaXQuCisgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYW4gZXhwZXJ0IGluIEdpdCB0byBiZSBmdW5jdGlvbmFsLgorICAgICAgICAgICAgQSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIGluc3RydWN0aW9uIG9uIGEgbWluaW1hbCBzZXQgb2YgR2l0CisgICAgICAgICAgICBjb21tYW5kcyBpcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG9mIEdpdCBjb21tYW5kcyBicmllZmx5IGRlc2NyaWJlcyBzb21lIGJhc2ljCisgICAgICAgICAgICBHaXQgb3BlcmF0aW9ucyBhcyBhIHdheSB0byBnZXQgc3RhcnRlZC4KKyAgICAgICAgICAgIEFzIHdpdGggYW55IHNldCBvZiBjb21tYW5kcywgdGhpcyBsaXN0IChpbiBtb3N0IGNhc2VzKSBzaW1wbHkgc2hvd3MKKyAgICAgICAgICAgIHRoZSBiYXNlIGNvbW1hbmQgYW5kIG9taXRzIHRoZSBtYW55IGFyZ3VtZW50cyBpdCBzdXBwb3J0cy4KKyAgICAgICAgICAgIFNlZSB0aGUgR2l0IGRvY3VtZW50YXRpb24gZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucyBhbmQgc3RyYXRlZ2llcworICAgICAgICAgICAgb24gaG93IHRvIHVzZSB0aGVzZSBjb21tYW5kczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBpbml0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZXMgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIEdpdCBjb21tYW5kcyB1bmxlc3MgeW91IGhhdmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ2l0LWNvbW1hbmRzLWNsb25lJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbG9jYWwgY2xvbmUgb2YgYSBHaXQgcmVwb3NpdG9yeSB0aGF0IGlzIG9uCisgICAgICAgICAgICAgICAgICAgIGVxdWFsIGZvb3Rpbmcgd2l0aCBhIGZlbGxvdyBkZXZlbG9wZXIncyBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBvciBhbiB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIExvY2FsbHkgc3RhZ2VzIHVwZGF0ZWQgZmlsZSBjb250ZW50cyB0byB0aGUgaW5kZXggdGhhdAorICAgICAgICAgICAgICAgICAgICBHaXQgdXNlcyB0byB0cmFjayBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzdGFnZSBhbGwgZmlsZXMgdGhhdCBoYXZlIGNoYW5nZWQgYmVmb3JlIHlvdQorICAgICAgICAgICAgICAgICAgICBjYW4gY29tbWl0IHRoZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhIGxvY2FsICJjb21taXQiIHRoYXQgZG9jdW1lbnRzIHRoZSBjaGFuZ2VzIHlvdQorICAgICAgICAgICAgICAgICAgICBtYWRlLgorICAgICAgICAgICAgICAgICAgICBPbmx5IGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gc3RhZ2VkIGNhbiBiZSBjb21taXR0ZWQuCisgICAgICAgICAgICAgICAgICAgIENvbW1pdHMgYXJlIHVzZWQgZm9yIGhpc3RvcmljYWwgcHVycG9zZXMsIGZvciBkZXRlcm1pbmluZworICAgICAgICAgICAgICAgICAgICBpZiBhIG1haW50YWluZXIgb2YgYSBwcm9qZWN0IHdpbGwgYWxsb3cgdGhlIGNoYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGZvciB1bHRpbWF0ZWx5IHB1c2hpbmcgdGhlIGNoYW5nZSBmcm9tIHlvdXIgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgaW50byB0aGUgcHJvamVjdCdzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgc3RhdHVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhbnkgbW9kaWZpZWQgZmlsZXMgdGhhdCBwb3NzaWJseSBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHN0YWdlZCBhbmQgZ2l2ZXMgeW91IGEgc3RhdHVzIG9mIHdoZXJlIHlvdSBzdGFuZCByZWdhcmRpbmcKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29tbWl0cyBhcyBjb21wYXJlZCB0byB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENoYW5nZXMgeW91ciBsb2NhbCB3b3JraW5nIGJyYW5jaCBhbmQgaW4gdGhpcyBmb3JtCisgICAgICAgICAgICAgICAgICAgIGFzc3VtZXMgdGhlIGxvY2FsIGJyYW5jaCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGFuYWxvZ291cyB0byAiY2QiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0IOKAk2I8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+d29ya2luZy1icmFuY2g8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dXBzdHJlYW0tYnJhbmNoPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIHdvcmtpbmcgYnJhbmNoIG9uIHlvdXIgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2FsIGJyYW5jaCB0cmFja3MgdGhlIHVwc3RyZWFtIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgeW91ciBsb2NhbCBicmFuY2ggdG8gaXNvbGF0ZSB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGEgZ29vZCBpZGVhIHRvIHVzZSBsb2NhbCBicmFuY2hlcyB3aGVuIGFkZGluZworICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBmZWF0dXJlcyBvciBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICBVc2luZyBpc29sYXRlZCBicmFuY2hlcyBmYWNpbGl0YXRlcyBlYXN5IHJlbW92YWwgb2YKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyBpZiB0aGV5IGRvIG5vdCB3b3JrIG91dC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGJyYW5jaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERpc3BsYXlzIHRoZSBleGlzdGluZyBsb2NhbCBicmFuY2hlcyBhc3NvY2lhdGVkIHdpdGggeW91cgorICAgICAgICAgICAgICAgICAgICBsb2NhbCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoIHRoYXQgeW91IGhhdmUgY3VycmVudGx5IGNoZWNrZWQgb3V0IGlzIG5vdGVkCisgICAgICAgICAgICAgICAgICAgIHdpdGggYW4gYXN0ZXJpc2sgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGJyYW5jaCAtRDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERlbGV0ZXMgYW4gZXhpc3RpbmcgbG9jYWwgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBpbiBhIGxvY2FsIGJyYW5jaCBvdGhlciB0aGFuIHRoZSBvbmUgeW91CisgICAgICAgICAgICAgICAgICAgIGFyZSBkZWxldGluZyBpbiBvcmRlciB0byBkZWxldGUKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgcHVsbCAtLXJlYmFzZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBmcm9tIGFuIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIGFuZCBwbGFjZXMgaXQgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHVzZSB0aGlzIGNvbW1hbmQgdG8gbWFrZSBzdXJlIHlvdSBhcmUgc3luY2hyb25pemVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlcG9zaXRvcnkgZnJvbSB3aGljaCB5b3UgYXJlIGJhc2luZyBjaGFuZ2VzCisgICAgICAgICAgICAgICAgICAgICguZS5nLiB0aGUgIm1hc3RlciIgYnJhbmNoKS4KKyAgICAgICAgICAgICAgICAgICAgVGhlICItLXJlYmFzZSIgb3B0aW9uIGVuc3VyZXMgdGhhdCBhbnkgbG9jYWwgY29tbWl0cyB5b3UKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBpbiB5b3VyIGJyYW5jaCBhcmUgcHJlc2VydmVkIGF0IHRoZSB0b3Agb2YgeW91cgorICAgICAgICAgICAgICAgICAgICBsb2NhbCBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgcHVzaDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5yZXBvLW5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+bG9jYWwtYnJhbmNoPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+OjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnVwc3RyZWFtLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNlbmRzIGFsbCB5b3VyIGNvbW1pdHRlZCBsb2NhbCBjaGFuZ2VzIHRvIHRoZSB1cHN0cmVhbSBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB0aGF0IHlvdXIgbG9jYWwgcmVwb3NpdG9yeSBpcyB0cmFja2luZworICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgb2YgdGhlIHByb2plY3QgZHJhd3MgZnJvbSB0aGVzZSByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gbWVyZ2UgY2hhbmdlcyAoY29tbWl0cykgaW50byB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIG9mIHByb2plY3QncyB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29tYmluZXMgb3IgYWRkcyBjaGFuZ2VzIGZyb20gb25lCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGJyYW5jaCBvZiB5b3VyIHJlcG9zaXRvcnkgd2l0aCBhbm90aGVyIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnksIHRoZSBkZWZhdWx0IGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpcyBuYW1lZCAibWFzdGVyIi4KKyAgICAgICAgICAgICAgICAgICAgQSB0eXBpY2FsIHdvcmtmbG93IGlzIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBicmFuY2ggdGhhdCBpcworICAgICAgICAgICAgICAgICAgICBiYXNlZCBvZmYgIm1hc3RlciIgdGhhdCB5b3Ugd291bGQgdXNlIGZvciBpc29sYXRlZCB3b3JrLgorICAgICAgICAgICAgICAgICAgICBZb3Ugd291bGQgbWFrZSB5b3VyIGNoYW5nZXMgaW4gdGhhdCBpc29sYXRlZCBicmFuY2gsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlIGFuZCBjb21taXQgdGhlbSBsb2NhbGx5LCBzd2l0Y2ggdG8gdGhlICJtYXN0ZXIiCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCwgYW5kIHRoZW4gdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBhcHBseSB0aGUgY2hhbmdlcyBmcm9tIHlvdXIgaXNvbGF0ZWQgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGN1cnJlbnRseSBjaGVja2VkIG91dCBicmFuY2ggKGUuZy4gIm1hc3RlciIpLgorICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgbWVyZ2UgaXMgY29tcGxldGUgYW5kIGlmIHlvdSBhcmUgZG9uZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgaW4gdGhhdCBpc29sYXRlZCBicmFuY2gsIHlvdSBjYW4gc2FmZWx5IGRlbGV0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgaXNvbGF0ZWQgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNoZXJyeS1waWNrPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmNvbW1pdHM8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaG9vc2UgYW5kIGFwcGx5IHNwZWNpZmljIGNvbW1pdHMgZnJvbSBvbmUgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgIGludG8gYW5vdGhlciBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB0aW1lcyB3aGVuIHlvdSBtaWdodCBub3QgYmUgYWJsZSB0byBtZXJnZQorICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIGNoYW5nZXMgaW4gb25lIGJyYW5jaCB3aXRoCisgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgYnV0IG5lZWQgdG8gcGljayBvdXQgY2VydGFpbiBvbmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0azwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIGEgR1VJIHZpZXcgb2YgdGhlIGJyYW5jaGVzIGFuZCBjaGFuZ2VzIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhIGdvb2Qgd2F5IHRvIGdyYXBoaWNhbGx5IHNlZSB3aGVyZSB0aGluZ3MKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBkaXZlcmdlZCBpbiB5b3VyIGxvY2FsIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgPGZpbGVuYW1lPmdpdGs8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSB0byB1c2UgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGxvZzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgYSBoaXN0b3J5IG9mIHlvdXIgY29tbWl0cyB0byB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZXBvcnQgbGlzdHMgYWxsIGNvbW1pdHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHlvdQorICAgICAgICAgICAgICAgICAgICBoYXZlIHB1c2hlZCB0aGVtIHVwc3RyZWFtIG9yIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBkaWZmPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGlzcGxheXMgbGluZS1ieS1saW5lIGRpZmZlcmVuY2VzIGJldHdlZW4gYSBsb2NhbAorICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGZpbGUgYW5kIHRoZSBzYW1lIGZpbGUgYXMgdW5kZXJzdG9vZCBieSBHaXQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyB1c2VmdWwgdG8gc2VlIHdoYXQgeW91IGhhdmUgY2hhbmdlZAorICAgICAgICAgICAgICAgICAgICBpbiBhbnkgZ2l2ZW4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2xpY2Vuc2luZyc+CisgICAgPHRpdGxlPkxpY2Vuc2luZzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQmVjYXVzZSBvcGVuIHNvdXJjZSBwcm9qZWN0cyBhcmUgb3BlbiB0byB0aGUgcHVibGljLCB0aGV5IGhhdmUKKyAgICAgICAgZGlmZmVyZW50IGxpY2Vuc2luZyBzdHJ1Y3R1cmVzIGluIHBsYWNlLgorICAgICAgICBMaWNlbnNlIGV2b2x1dGlvbiBmb3IgYm90aCBPcGVuIFNvdXJjZSBhbmQgRnJlZSBTb2Z0d2FyZSBoYXMgYW4KKyAgICAgICAgaW50ZXJlc3RpbmcgaGlzdG9yeS4KKyAgICAgICAgSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHRoaXMgaGlzdG9yeSwgeW91IGNhbiBmaW5kIGJhc2ljIGluZm9ybWF0aW9uCisgICAgICAgIGhlcmU6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuLXNvdXJjZV9saWNlbnNlJz5PcGVuIHNvdXJjZSBsaWNlbnNlIGhpc3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJlZV9zb2Z0d2FyZV9saWNlbnNlJz5GcmVlIHNvZnR3YXJlIGxpY2Vuc2UgaGlzdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBnZW5lcmFsLCB0aGUgWW9jdG8gUHJvamVjdCBpcyBicm9hZGx5IGxpY2Vuc2VkIHVuZGVyIHRoZQorICAgICAgICBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5IChNSVQpIExpY2Vuc2UuCisgICAgICAgIE1JVCBsaWNlbnNpbmcgcGVybWl0cyB0aGUgcmV1c2Ugb2Ygc29mdHdhcmUgd2l0aGluIHByb3ByaWV0YXJ5CisgICAgICAgIHNvZnR3YXJlIGFzIGxvbmcgYXMgdGhlIGxpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGF0IHNvZnR3YXJlLgorICAgICAgICBNSVQgaXMgYWxzbyBjb21wYXRpYmxlIHdpdGggdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpLgorICAgICAgICBQYXRjaGVzIHRvIHRoZSBZb2N0byBQcm9qZWN0IGZvbGxvdyB0aGUgdXBzdHJlYW0gbGljZW5zaW5nIHNjaGVtZS4KKyAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIHRoZSBNSVQgbGljZW5zZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocCc+aGVyZTwvdWxpbms+LgorICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIEdOVSBHUEwKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMCc+aGVyZTwvdWxpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHlvdSBidWlsZCBhbiBpbWFnZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCwgdGhlIGJ1aWxkIHByb2Nlc3MKKyAgICAgICAgdXNlcyBhIGtub3duIGxpc3Qgb2YgbGljZW5zZXMgdG8gZW5zdXJlIGNvbXBsaWFuY2UuCisgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGxpc3QgaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICBhdCA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgbGlzdCBvZiBhbGwgbGljZW5zZXMgZm91bmQgYW5kIHVzZWQKKyAgICAgICAgZHVyaW5nIHRoYXQgYnVpbGQgYXJlIGtlcHQgaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgYXQgPGZpbGVuYW1lPnRtcC9kZXBsb3kvbGljZW5zZXM8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgYSBtb2R1bGUgcmVxdWlyZXMgYSBsaWNlbnNlIHRoYXQgaXMgbm90IGluIHRoZSBiYXNlIGxpc3QsIHRoZQorICAgICAgICBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhIHdhcm5pbmcgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgVGhlc2UgdG9vbHMgbWFrZSBpdCBlYXNpZXIgZm9yIGEgZGV2ZWxvcGVyIHRvIGJlIGNlcnRhaW4gb2YgdGhlCisgICAgICAgIGxpY2Vuc2VzIHdpdGggd2hpY2ggdGhlaXIgc2hpcHBlZCBwcm9kdWN0cyBtdXN0IGNvbXBseS4KKyAgICAgICAgSG93ZXZlciwgZXZlbiB3aXRoIHRoZXNlIHRvb2xzIGl0IGlzIHN0aWxsIHVwIHRvIHRoZSBkZXZlbG9wZXIgdG8KKyAgICAgICAgcmVzb2x2ZSBwb3RlbnRpYWwgbGljZW5zaW5nIGlzc3Vlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGJhc2UgbGlzdCBvZiBsaWNlbnNlcyB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIGlzIGEgY29tYmluYXRpb24KKyAgICAgICAgb2YgdGhlIFNvZnR3YXJlIFBhY2thZ2UgRGF0YSBFeGNoYW5nZSAoU1BEWCkgbGlzdCBhbmQgdGhlIE9wZW4KKyAgICAgICAgU291cmNlIEluaXRpYXRpdmUgKE9TSSkgcHJvamVjdHMuCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zcGR4Lm9yZyc+U1BEWCBHcm91cDwvdWxpbms+IGlzIGEgd29ya2luZyBncm91cCBvZgorICAgICAgICB0aGUgTGludXggRm91bmRhdGlvbiB0aGF0IG1haW50YWlucyBhIHNwZWNpZmljYXRpb24gZm9yIGEgc3RhbmRhcmQKKyAgICAgICAgZm9ybWF0IGZvciBjb21tdW5pY2F0aW5nIHRoZSBjb21wb25lbnRzLCBsaWNlbnNlcywgYW5kIGNvcHlyaWdodHMKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgc29mdHdhcmUgcGFja2FnZS4KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL29wZW5zb3VyY2Uub3JnJz5PU0k8L3VsaW5rPiBpcyBhIGNvcnBvcmF0aW9uCisgICAgICAgIGRlZGljYXRlZCB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbiBhbmQgdGhlIGVmZm9ydCBmb3IgcmV2aWV3aW5nCisgICAgICAgIGFuZCBhcHByb3ZpbmcgbGljZW5zZXMgdGhhdCBjb25mb3JtIHRvIHRoZSBPcGVuIFNvdXJjZSBEZWZpbml0aW9uCisgICAgICAgIChPU0QpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZSBjb21iaW5lZCBTUERYIGFuZCBPU0kgbGljZW5zZXMgdGhhdCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCB1c2VzIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4geW91cgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBoZWxwIHlvdSBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cworICAgICAgICBvcGVuIHNvdXJjZSBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgYSBwcm9kdWN0IGNyZWF0ZWQgdXNpbmcKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtaW50cm8ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtaW50cm8ucnN0CmluZGV4IDg4ODVlYjguLjNmMjA2ZmQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1pbnRyby5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTBiZmVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtaW50cm8ueG1sCkBAIC0wLDAgKzEsMTEzIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J292ZXJ2aWV3LW1hbnVhbC1pbnRybyc+CisKKzx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctbWFudWFsLXdlbGNvbWUnPgorICAgICAgICA8dGl0bGU+V2VsY29tZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwhCisgICAgICAgICAgICBUaGlzIG1hbnVhbCBpbnRyb2R1Y2VzIHRoZSBZb2N0byBQcm9qZWN0IGJ5IHByb3ZpZGluZyBjb25jZXB0cywKKyAgICAgICAgICAgIHNvZnR3YXJlIG92ZXJ2aWV3cywgYmVzdC1rbm93bi1tZXRob2RzIChCS01zKSwgYW5kIGFueSBvdGhlcgorICAgICAgICAgICAgaGlnaC1sZXZlbCBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gc3VpdGFibGUgZm9yIGEgbmV3IFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IHVzZXIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgd2hhdCB5b3UgY2FuIGdldCBmcm9tIHRoaXMgbWFudWFsOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48bGluayBsaW5rZW5kPSdvdmVydmlldy15cCc+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGxlYXJuIGFib3V0IGZlYXR1cmVzIGFuZCBjaGFsbGVuZ2VzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCB0aGUgbGF5ZXIgbW9kZWwsIGNvbXBvbmVudHMgYW5kIHRvb2xzLAorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBtZXRob2RzLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBkaXN0cmlidXRpb24sIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHdvcmtmbG93LCBhbmQgc29tZSBiYXNpYyBZb2N0byB0ZXJtcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC9saW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgaGVscHMgeW91IGdldCBzdGFydGVkIHVuZGVyc3RhbmRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGxlYXJuIGFib3V0IG9wZW4gc291cmNlLCBkZXZlbG9wbWVudCBob3N0cywKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLCB3b3JrZmxvd3MgdXNpbmcgR2l0CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgWW9jdG8gUHJvamVjdCwgYSBHaXQgcHJpbWVyLCBhbmQgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYWJvdXQgbGljZW5zaW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48bGluayBsaW5rZW5kPSdvdmVydmlldy1tYW51YWwtY29uY2VwdHMnPllvY3RvIFByb2plY3QgQ29uY2VwdHM8L2xpbms+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhcHRlciBwcmVzZW50cyB2YXJpb3VzIGNvbmNlcHRzIHJlZ2FyZGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gYWJvdXQgY29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQsIGNyb3NzLXRvb2xjaGFpbnMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBtYW51YWwgZG9lcyBub3QgZ2l2ZSB5b3UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RlcC1ieS1zdGVwIEluc3RydWN0aW9ucyBmb3IgRGV2ZWxvcG1lbnQgVGFza3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25hbCBwcm9jZWR1cmVzIHJlc2lkZSBpbiBvdGhlciBtYW51YWxzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHNldC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBleGFtcGxlcyBvbiBob3cgdG8gcGVyZm9ybSB2YXJpb3VzIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICBBcyBhbm90aGVyIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbCBjb250YWlucyBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGluc3RhbGwgYW4KKyAgICAgICAgICAgICAgICAgICAgU0RLLCB3aGljaCBpcyB1c2VkIHRvIGRldmVsb3AgYXBwbGljYXRpb25zIGZvciB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlZmVyZW5jZSBNYXRlcmlhbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgbWF0ZXJpYWwgcmVzaWRlcyBpbiBhbiBhcHByb3ByaWF0ZSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3lzdGVtIHZhcmlhYmxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBBcyBhbm90aGVyIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyByZWZlcmVuY2UgaW5mb3JtYXRpb24gb24gQlNQcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0YWlsZWQgUHVibGljIEluZm9ybWF0aW9uIE5vdCBTcGVjaWZpYyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZXhoYXVzdGl2ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIEdpdCBpcyBiZXR0ZXIgY292ZXJlZCB3aXRoIEludGVybmV0CisgICAgICAgICAgICAgICAgICAgIHNlYXJjaGVzIGFuZCBvZmZpY2lhbCBHaXQgRG9jdW1lbnRhdGlvbiB0aGFuIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdvdmVydmlldy1tYW51YWwtb3RoZXItaW5mb3JtYXRpb24nPgorICAgICAgICA8dGl0bGU+T3RoZXIgSW5mb3JtYXRpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVjYXVzZSB0aGlzIG1hbnVhbCBwcmVzZW50cyBpbmZvcm1hdGlvbiBmb3IgbWFueSBkaWZmZXJlbnQKKyAgICAgICAgICAgIHRvcGljcywgc3VwcGxlbWVudGFsIGluZm9ybWF0aW9uIGlzIHJlY29tbWVuZGVkIGZvciBmdWxsCisgICAgICAgICAgICBjb21wcmVoZW5zaW9uLgorICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUKKyAgICAgICAgICAgIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGltYWdlIHdpdGggbm8ga25vd2xlZGdlIG9mIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIGFzIGEgd2F5IG9mIHF1aWNrbHkgdGVzdGluZyBpdCBvdXQsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPgorICAgICAgICAgICAgZG9jdW1lbnQuCisgICAgICAgICAgICBGb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgbGlua3MgYW5kIG90aGVyIGRvY3VtZW50YXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1zdHlsZS5jc3MgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1zdHlsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVjOTM0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcwpAQCAtMCwwICsxLDk5MCBAQAorLyoKKyAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKKworICAgR2VuZXJpYyBYSFRNTCAvIERvY0Jvb2sgWEhUTUwgQ1NTIFN0eWxlc2hlZXQuCisKKyAgIEJyb3dzZXIgd3JhbmdsaW5nIGFuZCB0eXBvZ3JhcGhpYyBkZXNpZ24gYnkKKyAgICAgIE95dmluZCBLb2xhcyAvIHBpcHBpbkBnaW1wLm9yZworCisgICBDdXN0b21pc2VkIGZvciBQb2t5IGJ5CisgICAgICBNYXR0aGV3IEFsbHVtIC8gbWFsbHVtQG8taGFuZC5jb20KKworICAgVGhhbmtzIHRvOgorICAgICBMaWFtIFIuIEUuIFF1aW4KKyAgICAgV2lsbGlhbSBTa2FnZ3MKKyAgICAgSmFrdWIgU3RlaW5lcgorCisgICBTdHJ1Y3R1cmUKKyAgIC0tLS0tLS0tLQorCisgICBUaGUgc3R5bGVzaGVldCBpcyBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBzZWN0aW9uczoKKworICAgICAgIFBvc2l0aW9uaW5nCisgICAgICAgICAgTWFyZ2lucywgcGFkZGluZ3MsIHdpZHRoLCBmb250LXNpemUsIGNsZWFyaW5nLgorICAgICAgIERlY29yYXRpb25zCisgICAgICAgICAgQm9yZGVycywgc3R5bGUKKyAgICAgICBDb2xvcnMKKyAgICAgICAgICBDb2xvcnMKKyAgICAgICBHcmFwaGljcworICAgICAgICAgIEdyYXBoaWNhbCBiYWNrZ3JvdW5kcworICAgICAgIE5hc3R5IElFIHR3ZWFrcworICAgICAgICAgIFdvcmthcm91bmRzIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsgaW4gaW50ZXJuZXQgZXhwbG9yZXIsCisgICAgICAgICAgY3VycmVudGx5IG1ha2VzIHRoZSBzdHlsZXNoZWV0IG5vbiB2YWxpZGF0aW5nLCBidXQgdXAgdW50aWwKKyAgICAgICAgICB0aGlzIHBvaW50IGl0IGlzIHZhbGlkYXRpbmcuCisgICAgICAgTW96aWxsYSBleHRlbnNpb25zCisgICAgICAgICAgVHJhbnNwYXJlbmN5IGZvciBmb290ZXIKKwkgIFJvdW5kZWQgY29ybmVycyBvbiBib3hlcworCisqLworCisKKyAgLyoqKioqKioqKioqKioqKiAvCisgLyAgUG9zaXRpb25pbmcgICAvCisvICoqKioqKioqKioqKioqKi8KKworYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTYW5zLCBzYW5zLXNlcmlmOworCisgIG1pbi13aWR0aDogNjQwcHg7CisgIHdpZHRoOiA4MCU7CisgIG1hcmdpbjogIDBlbSBhdXRvOworICBwYWRkaW5nOiAyZW0gNWVtIDVlbSA1ZW07CisgIGNvbG9yOiAjMzMzOworfQorCitoMSxoMixoMyxoNCxoNSxoNixoNyB7CisgIGZvbnQtZmFtaWx5OiBBcmlhbCwgU2FuczsKKyAgY29sb3I6ICMwMDU1N0Q7CisgIGNsZWFyOiBib3RoOworfQorCitoMSB7CisgIGZvbnQtc2l6ZTogMmVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMmVtIDBlbSAwZW0gMGVtOworfQorCitoMi5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMC4xMGVtIDBlbSAzLjBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjhlbTsKKyAgcGFkZGluZy1sZWZ0OiAyMCU7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworaDIgeworICBtYXJnaW46IDJlbSAwZW0gMC42NmVtIDBlbTsKKyAgcGFkZGluZzogMC41ZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS41ZW07CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoMy5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQyLjE0JTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK2gzIHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0MCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNCB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDUgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g2IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLmF1dGhvcmdyb3VwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIHBhZGRpbmctdG9wOiAyNTZweDsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7CisgIG1hcmdpbi10b3A6IC0yNTZweDsKKyAgcGFkZGluZy1yaWdodDogNTBweDsKKyAgbWFyZ2luLWxlZnQ6IDBweDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7CisgIHdpZHRoOiA3NDBweDsKK30KKworaDMuYXV0aG9yIHsKKyAgbWFyZ2luOiAwZW0gMG1lIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zaXplOiAxMDAlOworICBjb2xvcjogIzMzMzsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5hdXRob3IgdHQuZW1haWwgeworICBmb250LXNpemU6IDY2JTsKK30KKworLnRpdGxlcGFnZSBociB7CisgIHdpZHRoOiAwZW07CisgIGNsZWFyOiBib3RoOworfQorCisucmV2aGlzdG9yeSB7CisgIHBhZGRpbmctdG9wOiAyZW07CisgIGNsZWFyOiBib3RoOworfQorCisudG9jLAorLmxpc3Qtb2YtdGFibGVzLAorLmxpc3Qtb2YtZXhhbXBsZXMsCisubGlzdC1vZi1maWd1cmVzIHsKKyAgcGFkZGluZzogMS4zM2VtIDBlbSAyLjVlbSAwZW07CisgIGNvbG9yOiAjMDA1NTdEOworfQorCisudG9jIHAsCisubGlzdC1vZi10YWJsZXMgcCwKKy5saXN0LW9mLWZpZ3VyZXMgcCwKKy5saXN0LW9mLWV4YW1wbGVzIHAgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMC4zZW07CisgIG1hcmdpbjogMS41ZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgcCBiLAorLmxpc3Qtb2YtdGFibGVzIHAgYiwKKy5saXN0LW9mLWZpZ3VyZXMgcCBiLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCBieworICBmb250LXNpemU6IDEwMC4wJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy50b2MgZGwsCisubGlzdC1vZi10YWJsZXMgZGwsCisubGlzdC1vZi1maWd1cmVzIGRsLAorLmxpc3Qtb2YtZXhhbXBsZXMgZGwgeworICBtYXJnaW46IDBlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZHQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGRkIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAyLjZlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuZ2xvc3NhcnkgZGwsCitkaXYudmFyaWFibGVsaXN0IGRsIHsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgd2lkdGg6IDIwZW07CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCisudmFyaWFibGVsaXN0IGRsIGR0IHsKKyAgbWFyZ2luLXRvcDogMC41ZW07Cit9CisKKy5nbG9zc2FyeSBkbCBkZCwKKy52YXJpYWJsZWxpc3QgZGwgZGQgeworICBtYXJnaW4tdG9wOiAtMWVtOworICBtYXJnaW4tbGVmdDogMjUuNWVtOworfQorCisuZ2xvc3NhcnkgZGQgcCwKKy52YXJpYWJsZWxpc3QgZGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK2RpdiBwLmNvcHlyaWdodCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK2Rpdi5sZWdhbG5vdGljZSBwLmxlZ2Fsbm90aWNlLXRpdGxlIHsKKyAgbWFyZ2luLWJvdHRvbTogMGVtOworfQorCitwIHsKKyAgbGluZS1oZWlnaHQ6IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisKK30KKworZGwgeworICBwYWRkaW5nLXRvcDogMGVtOworfQorCitociB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCisKKy5tZWRpYW9iamVjdCwKKy5tZWRpYW9iamVjdGNvIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitpbWcgeworICBib3JkZXI6IG5vbmU7Cit9CisKK3VsIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMS41ZW07Cit9CisKK3VsIGxpIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCit1bCBsaSBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwordGFibGUgeworICB3aWR0aCA6MTAwJTsKK30KKwordGggeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCitwIGFbaWRdIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDBweDsKKyAgZGlzcGxheTogaW5saW5lOworICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworfQorCithIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGNvbG9yOiAjNDQ0OworfQorCitwcmUgeworICAgIG92ZXJmbG93OiBhdXRvOworfQorCithOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIC8qZm9udC13ZWlnaHQ6IGJvbGQ7Ki8KK30KKworLyogVGhpcyBzdHlsZSBkZWZpbmVzIGhvdyB0aGUgcGVybWFsaW5rIGNoYXJhY3RlcgorICAgYXBwZWFycyBieSBpdHNlbGYgYW5kIHdoZW4gaG92ZXJlZCBvdmVyIHdpdGgKKyAgIHRoZSBtb3VzZS4gKi8KKworW2FsdD0nUGVybWFsaW5rJ10geyBjb2xvcjogI2VlZTsgfQorW2FsdD0nUGVybWFsaW5rJ106aG92ZXIgeyBjb2xvcjogYmxhY2s7IH0KKworCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUgeworICBtYXJnaW46IDFlbSAwZW07CisgIHBhZGRpbmc6IDFlbTsKKyAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWxleGFtcGxlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbHRhYmxlIHAudGl0bGUgYiwKK2Rpdi5maWd1cmUgcC50aXRsZSBiLAorZGl2LmV4YW1wbGUgcC50aXRsZSBiLAorZGl2LnRhYmxlIHAudGl0bGUgYnsKKyAgICBwYWRkaW5nLXRvcDogMGVtOworICAgIG1hcmdpbi10b3A6IDBlbTsKKyAgICBmb250LXNpemU6IDEwMCU7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKworLm1lZGlhb2JqZWN0IC5jYXB0aW9uLAorLm1lZGlhb2JqZWN0IC5jYXB0aW9uIHAgIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZy10b3A6IDAuNWVtOworICBwYWRkaW5nLWJvdHRvbTogMC41ZW07Cit9CisKKy5lcGlncmFwaCB7CisgIHBhZGRpbmctbGVmdDogNTUlOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKy5lcGlncmFwaCBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmVwaWdyYXBoIC5xdW90ZSB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKy5lcGlncmFwaCAuYXR0cmlidXRpb24geworICBmb250LXN0eWxlOiBub3JtYWw7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitzcGFuLmFwcGxpY2F0aW9uIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucHJvZ3JhbWxpc3RpbmcgeworICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICBmb250LXNpemU6IDgwJTsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgbWFyZ2luOiAxLjMzZW0gMGVtOworICBwYWRkaW5nOiAxLjMzZW07Cit9CisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBtYXJnaW4tdG9wOiAxZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKKworfQorCisvKiBmb3JjZSBmdWxsIHdpZHRoIG9mIHRhYmxlIHdpdGhpbiBkaXYgKi8KKy50aXAgdGFibGUsCisud2FybmluZyB0YWJsZSwKKy5jYXV0aW9uIHRhYmxlLAorLm5vdGUgdGFibGUgeworICBib3JkZXI6IG5vbmU7CisgIHdpZHRoOiAxMDAlOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBwYWRkaW5nOiAwLjhlbSAwLjBlbSAwLjBlbSAwLjBlbTsKKyAgbWFyZ2luIDogMGVtIDBlbSAwZW0gMGVtOworfQorCisudGlwIHAsCisud2FybmluZyBwLAorLmNhdXRpb24gcCwKKy5ub3RlIHAgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMC41ZW07CisgIHBhZGRpbmctcmlnaHQ6IDFlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmFjcm9ueW0geworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICBwYWRkaW5nOiAwLjA5ZW0gMC4zZW07CisgIG1hcmdpbjogMGVtOworfQorCisuaXRlbWl6ZWRsaXN0IGxpIHsKKyAgY2xlYXI6IG5vbmU7Cit9CisKKy5maWxlbmFtZSB7CisgIGZvbnQtc2l6ZTogbWVkaXVtOworICBmb250LWZhbWlseTogQ291cmllciwgbW9ub3NwYWNlOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDBlbTsKKyAgdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RmOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIHBvc2l0aW9uOiBmaXhlZDsKKyAgbGVmdDogMGVtOworICBib3R0b206IDBlbTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworZGl2Lm5hdmhlYWRlciB0ZCwKK2Rpdi5uYXZmb290ZXIgdGQgeworICBmb250LXNpemU6IDY2JTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0aCB7CisgIC8qZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzLCBzZXJpZjsqLworICAvKmZvbnQtc2l6ZTogeC1sYXJnZTsqLworICBmb250LXNpemU6IDgwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci1ib3R0b206IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYSwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYSB7CisgIGNvbG9yOiAjNzc3OworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKKy8qIG5vcm1hbCB0ZXh0IGluIHRoZSBmb290ZXIgKi8KK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgeworICBjb2xvcjogYmxhY2s7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTp2aXNpdGVkLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOnZpc2l0ZWQgeworICBjb2xvcjogIzQ0NDsKK30KKworCisvKiBsaW5rcyBpbiBoZWFkZXIgYW5kIGZvb3RlciAqLworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOmhvdmVyLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBjb2xvcjogIzMzYTsKK30KKworZGl2Lm5hdmhlYWRlciBociwKK2Rpdi5uYXZmb290ZXIgaHIgeworICBkaXNwbGF5OiBub25lOworfQorCisKKy5xYW5kYXNldCB0ci5xdWVzdGlvbiB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnFhbmRhc2V0IHRyLmFuc3dlciB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKy5hbnN3ZXIgdGQgeworICBwYWRkaW5nLWJvdHRvbTogMS41ZW07Cit9CisKKy5lbXBoYXNpcyB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisKKyAgLyoqKioqKioqKioqKiogLworIC8gZGVjb3JhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKi8KKworLnRpdGxlcGFnZSB7Cit9CisKKy5wYXJ0IC50aXRsZSB7Cit9CisKKy5zdWJ0aXRsZSB7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKgoraDEgeworICBib3JkZXI6IG5vbmU7Cit9CisKK2gyIHsKKyAgYm9yZGVyLXRvcDogc29saWQgMC4yZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDMgeworICBib3JkZXItdG9wOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDQgeworICBib3JkZXI6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNSB7CisgIGJvcmRlcjogMGVtOworfQorKi8KKworLnByb2dyYW1saXN0aW5nIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisucXVlc3Rpb24gdGQgeworICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Cit9CisKKy5hbnN3ZXIgeworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZDsKK30KKworICAvKioqKioqKioqIC8KKyAvICBjb2xvcnMgIC8KKy8gKioqKioqKioqLworCitib2R5IHsKKyAgY29sb3I6ICMzMzM7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorCithIHsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKK2E6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVkZWRlOworfQorCisKK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3LAoraDggeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworaHIgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKKworLnRpcCwgLndhcm5pbmcsIC5jYXV0aW9uLCAubm90ZSB7CisgIGJvcmRlci1jb2xvcjogI2ZmZjsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKK30KKworCisud2FybmluZyB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLnRpcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5ub3RlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgY29sb3I6ICMwNDQ7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworcHJlLnByb2dyYW1saXN0aW5nIHsKKyAgY29sb3I6IGJsYWNrOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworICBib3JkZXItY29sb3I6ICNhYWE7CisgIGJvcmRlci13aWR0aDogMnB4OworfQorCisuZ3VpbWVudSwKKy5ndWlsYWJlbCwKKy5ndWltZW51aXRlbSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgYm9yZGVyLWNvbG9yOiAjOTk5OworfQorCisKK2Rpdi5uYXZoZWFkZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKK2Rpdi5uYXZmb290ZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCisKKyAgLyoqKioqKioqKioqIC8KKyAvICBncmFwaGljcyAgLworLyAqKioqKioqKioqKi8KKworLyoKK2JvZHkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisubmF2aGVhZGVyLAorLm5vdGUsCisudGlwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLndhcm5pbmcsCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5maWd1cmUsCisuaW5mb3JtYWxmaWd1cmUsCisuZXhhbXBsZSwKKy5pbmZvcm1hbGV4YW1wbGUsCisudGFibGUsCisuaW5mb3JtYWx0YWJsZSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworKi8KK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3eworfQorCisvKgorRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCisKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisqLworCitkaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5jb2xvcGhvbiAudGl0bGUsCitkaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7Cit9CisKK2Rpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworfQorCisKK2gxLnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGhlaWdodDogMjU2cHg7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47CisgIHdpZHRoOiAwcHg7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyAgcGlwcGluLmdpbXAub3JnIHNwZWNpZmljIGFsdGVyYXRpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgY29sb3I6ICM3Nzc7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nOiAwOworICBtYXJnaW46IDA7CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgdG9wOiAwcHg7CisgIGxlZnQ6IDBweDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogNTBweDsKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2hlYWRpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKKyAgYm9yZGVyOiBub25lOworfQorCitkaXYuaGVhZGluZyBhIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyOiBub25lOworICBjb2xvcjogI2RkZDsKKyAgZm9udC1zaXplOiA4MCU7CisgIHRleHQtYWxpZ246cmlnaHQ7CisKKyAgd2lkdGg6IDEwMCU7CisgIHBhZGRpbmctdG9wOiAxMHB4OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogMHB4OworICBsZWZ0OiAwcHg7CisKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2Zvb3RpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Cit9CisqLworCisKKworICAvKioqKioqKioqKioqKioqKioqIC8KKyAvICBuYXN0eSBpZSB0d2Vha3MgIC8KKy8gKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKKyAgbWFyZ2luLWxlZnQ6ZXhwcmVzc2lvbigiLTVlbSIpOworfQorYm9keSB7CisgIHBhZGRpbmc6ZXhwcmVzc2lvbigiNGVtIDVlbSAwZW0gNWVtIik7Cit9CisqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvIG1vemlsbGEgdmVuZG9yIHNwZWNpZmljIGNzcyBleHRlbnNpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIC1tb3otb3BhY2l0eTogMC44ZW07Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSwKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtOworfQorKi8KKwordGFibGUgdHIgdGQgdGFibGUgdHIgdGQgeworICBkaXNwbGF5OiBub25lOworfQorCisKK2hyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKwordGFibGUgeworICBib3JkZXI6IDBlbTsKK30KKworIC5waG90byB7CisgIGZsb2F0OiByaWdodDsKKyAgbWFyZ2luLWxlZnQ6ICAgMS41ZW07CisgIG1hcmdpbi1ib3R0b206IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisgIG1heC13aWR0aDogICAgICAxN2VtOworICBib3JkZXI6ICAgICAxcHggc29saWQgZ3JheTsKKyAgcGFkZGluZzogICAgM3B4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKyAuc2VwZXJhdG9yIHsKKyAgIHBhZGRpbmctdG9wOiAyZW07CisgICBjbGVhcjogYm90aDsKKyAgfQorCisgICN2YWxpZGF0b3JzIHsKKyAgICAgIG1hcmdpbi10b3A6IDVlbTsKKyAgICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgICAgY29sb3I6ICM3Nzc7CisgIH0KKyAgQG1lZGlhIHByaW50IHsKKyAgICAgIGJvZHkgeworICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OworICAgICAgfQorICAgICAgLm5vcHJpbnQgeworICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgICB9CisgIH0KKworCisudGlwLAorLm5vdGUgeworICAgYmFja2dyb3VuZDogI2YwZjBmMjsKKyAgIGNvbG9yOiAjMzMzOworICAgcGFkZGluZzogMjBweDsKKyAgIG1hcmdpbjogMjBweDsKK30KKworLnRpcCBoMywKKy5ub3RlIGgzIHsKKyAgIHBhZGRpbmc6IDBlbTsKKyAgIG1hcmdpbjogMGVtOworICAgZm9udC1zaXplOiAyZW07CisgICBmb250LXdlaWdodDogYm9sZDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisudGlwIGEsCisubm90ZSBhIHsKKyAgIGNvbG9yOiAjMzMzOworICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy5mb290bm90ZSB7CisgICBmb250LXNpemU6IHNtYWxsOworICAgY29sb3I6ICMzMzM7Cit9CisKKy8qIENoYW5nZXMgdGhlIGFubm91bmNlbWVudCB0ZXh0ICovCisudGlwIGgzLAorLndhcm5pbmcgaDMsCisuY2F1dGlvbiBoMywKKy5ub3RlIGgzIHsKKyAgIGZvbnQtc2l6ZTpsYXJnZTsKKyAgIGNvbG9yOiAjMDA1NTdEOworfQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ucnN0CmluZGV4IDkwNzM1ODIuLjVjZGFiN2MgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBJbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYTFmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwKQEAgLTAsMCArMSwxMzMzIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J292ZXJ2aWV3LXlwJz4KKyAgICA8dGl0bGU+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9J3doYXQtaXMtdGhlLXlvY3RvLXByb2plY3QnPgorICAgICAgICA8dGl0bGU+V2hhdCBpcyB0aGUgWW9jdG8gUHJvamVjdD88L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgYW4gb3BlbiBzb3VyY2UgY29sbGFib3JhdGlvbiBwcm9qZWN0CisgICAgICAgICAgICB0aGF0IGhlbHBzIGRldmVsb3BlcnMgY3JlYXRlIGN1c3RvbSBMaW51eC1iYXNlZCBzeXN0ZW1zIHRoYXQgYXJlCisgICAgICAgICAgICBkZXNpZ25lZCBmb3IgZW1iZWRkZWQgcHJvZHVjdHMgcmVnYXJkbGVzcyBvZiB0aGUgcHJvZHVjdCdzIGhhcmR3YXJlCisgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGEgZmxleGlibGUgdG9vbHNldCBhbmQgYSBkZXZlbG9wbWVudAorICAgICAgICAgICAgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgZW1iZWRkZWQgZGV2aWNlIGRldmVsb3BlcnMgYWNyb3NzIHRoZQorICAgICAgICAgICAgd29ybGQgdG8gY29sbGFib3JhdGUgdGhyb3VnaCBzaGFyZWQgdGVjaG5vbG9naWVzLCBzb2Z0d2FyZSBzdGFja3MsCisgICAgICAgICAgICBjb25maWd1cmF0aW9ucywgYW5kIGJlc3QgcHJhY3RpY2VzIHVzZWQgdG8gY3JlYXRlIHRoZXNlIHRhaWxvcmVkCisgICAgICAgICAgICBMaW51eCBpbWFnZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRob3VzYW5kcyBvZiBkZXZlbG9wZXJzIHdvcmxkd2lkZSBoYXZlIGRpc2NvdmVyZWQgdGhhdCBZb2N0bworICAgICAgICAgICAgUHJvamVjdCBwcm92aWRlcyBhZHZhbnRhZ2VzIGluIGJvdGggc3lzdGVtcyBhbmQgYXBwbGljYXRpb25zCisgICAgICAgICAgICBkZXZlbG9wbWVudCwgYXJjaGl2YWwgYW5kIG1hbmFnZW1lbnQgYmVuZWZpdHMsIGFuZCBjdXN0b21pemF0aW9ucworICAgICAgICAgICAgdXNlZCBmb3Igc3BlZWQsIGZvb3RwcmludCwgYW5kIG1lbW9yeSB1dGlsaXphdGlvbi4KKyAgICAgICAgICAgIFRoZSBwcm9qZWN0IGlzIGEgc3RhbmRhcmQgd2hlbiBpdCBjb21lcyB0byBkZWxpdmVyaW5nIGVtYmVkZGVkCisgICAgICAgICAgICBzb2Z0d2FyZSBzdGFja3MuCisgICAgICAgICAgICBUaGUgcHJvamVjdCBhbGxvd3Mgc29mdHdhcmUgY3VzdG9taXphdGlvbnMgYW5kIGJ1aWxkIGludGVyY2hhbmdlCisgICAgICAgICAgICBmb3IgbXVsdGlwbGUgaGFyZHdhcmUgcGxhdGZvcm1zIGFzIHdlbGwgYXMgc29mdHdhcmUgc3RhY2tzIHRoYXQKKyAgICAgICAgICAgIGNhbiBiZSBtYWludGFpbmVkIGFuZCBzY2FsZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYSBpZD0neXAta2V5LWRldi1lbGVtZW50cyc+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nIiBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgZnVydGhlciBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHlvdQorICAgICAgICAgICAgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB0aGlzCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5lbWJlZGRlZC5jb20vZWxlY3Ryb25pY3MtYmxvZ3Mvc2F5LXdoYXQtLzQ0NTg2MDAvV2h5LXRoZS1Zb2N0by1Qcm9qZWN0LWZvci1teS1Jb1QtUHJvamVjdC0nPmFydGljbGU8L3VsaW5rPgorICAgICAgICAgICAgYnkgRHJldyBNb3NlbGV5IGFuZCBpbiB0aGlzIHNob3J0IGludHJvZHVjdG9yeQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj11dFpwS003aTVaNCc+dmlkZW88L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gb3ZlcnZpZXdzIGFkdmFudGFnZXMgYW5kIGNoYWxsZW5nZXMKKyAgICAgICAgICAgIHRpZWQgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtZmVhdHVyZXMnPgorICAgICAgICAgICAgPHRpdGxlPkZlYXR1cmVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyBmZWF0dXJlcyBhbmQgYWR2YW50YWdlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5XaWRlbHkgQWRvcHRlZCBBY3Jvc3MgdGhlIEluZHVzdHJ5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTZW1pY29uZHVjdG9yLCBvcGVyYXRpbmcgc3lzdGVtLCBzb2Z0d2FyZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlIHZlbmRvcnMgZXhpc3Qgd2hvc2UgcHJvZHVjdHMgYW5kIHNlcnZpY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBhZG9wdCBhbmQgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGxvb2sgYXQgdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBhbmllcyBpbnZvbHZlZCB3aXRoIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgc2VlIHRoZSAiQ09NTVVOSVRZIiBhbmQgIkVDT1NZU1RFTSIgdGFicworICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbWUgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXJjaGl0ZWN0dXJlIEFnbm9zdGljOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIEludGVsLCBBUk0sIE1JUFMsIEFNRCwgUFBDCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1vc3QgT0RNcywgT1NWcywgYW5kIGNoaXAgdmVuZG9ycyBjcmVhdGUgYW5kIHN1cHBseQorICAgICAgICAgICAgICAgICAgICAgICAgQlNQcyB0aGF0IHN1cHBvcnQgdGhlaXIgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBjdXN0b20gc2lsaWNvbiwgeW91IGNhbiBjcmVhdGUgYSBCU1AKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydHMgdGhhdCBhcmNoaXRlY3R1cmUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bc2lkZSBmcm9tIGxvdHMgb2YgYXJjaGl0ZWN0dXJlIHN1cHBvcnQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBmdWxseSBzdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRpb24gdGhyb3VnaCB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbWFnZXMgYW5kIENvZGUgVHJhbnNmZXIgRWFzaWx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG91dHB1dCBjYW4gZWFzaWx5IG1vdmUgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcyB3aXRob3V0IG1vdmluZyB0byBuZXcgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgeW91IGhhdmUgdXNlZCB0aGUgWW9jdG8gUHJvamVjdCB0bworICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGFuIGltYWdlIG9yIGFwcGxpY2F0aW9uIGFuZCB5b3UgZmluZCB5b3Vyc2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFibGUgdG8gc3VwcG9ydCBpdCwgY29tbWVyY2lhbCBMaW51eCB2ZW5kb3JzIHN1Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIFdpbmQgUml2ZXIsIE1lbnRvciBHcmFwaGljcywgVGltZXN5cywgYW5kIEVORUEgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgaXQgYW5kIHByb3ZpZGUgb25nb2luZyBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdmVuZG9ycyBoYXZlIG9mZmVyaW5ncyB0aGF0IGFyZSBidWlsdCB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZsZXhpYmlsaXR5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb3Jwb3JhdGlvbnMgdXNlIHRoZSBZb2N0byBQcm9qZWN0IG1hbnkgZGlmZmVyZW50IHdheXMuCisgICAgICAgICAgICAgICAgICAgICAgICBPbmUgZXhhbXBsZSBpcyB0byBjcmVhdGUgYW4gaW50ZXJuYWwgTGludXggZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIGNvZGUgYmFzZSB0aGUgY29ycG9yYXRpb24gY2FuIHVzZSBhY3Jvc3MgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QgZ3JvdXBzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3VnaCBjdXN0b21pemF0aW9uIGFuZCBsYXllcmluZywgYSBwcm9qZWN0IGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gbGV2ZXJhZ2UgdGhlIGJhc2UgTGludXggZGlzdHJpYnV0aW9uIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgYSBkaXN0cmlidXRpb24gdGhhdCB3b3JrcyBmb3IgdGhlaXIgcHJvZHVjdCBuZWVkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SWRlYWwgZm9yIENvbnN0cmFpbmVkIEVtYmVkZGVkIGFuZCBJb1QgZGV2aWNlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVW5saWtlIGEgZnVsbCBMaW51eCBkaXN0cmlidXRpb24sIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0byBjcmVhdGUgZXhhY3RseSB3aGF0IHlvdSBuZWVkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWQgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBvbmx5IGFkZCB0aGUgZmVhdHVyZSBzdXBwb3J0IG9yIHBhY2thZ2VzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZWx5IG5lZWQgZm9yIHRoZSBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGhhdmUgZGlzcGxheSBoYXJkd2FyZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBzeXN0ZW0gY29tcG9uZW50cyBzdWNoIGFzIFgxMSwgR1RLKywgUXQsCisgICAgICAgICAgICAgICAgICAgICAgICBDbHV0dGVyLCBhbmQgU0RMIChhbW9uZyBvdGhlcnMpIHRvIGNyZWF0ZSBhIHJpY2ggdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBkZXZpY2VzIHRoYXQgZG8gbm90IGhhdmUgYSBkaXNwbGF5IG9yIHdoZXJlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgd2FudCB0byB1c2UgYWx0ZXJuYXRpdmUgVUkgZnJhbWV3b3JrcywgeW91IGNhbiBjaG9vc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIG5vdCBpbnN0YWxsIHRoZXNlIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbXByZWhlbnNpdmUgVG9vbGNoYWluIENhcGFiaWxpdGllczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVG9vbGNoYWlucyBmb3Igc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgc2F0aXNmeSBtb3N0CisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3VyIGhhcmR3YXJlIHN1cHBvcnRzIGZlYXR1cmVzIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgcGFydCBvZiBhIHN0YW5kYXJkIHRvb2xjaGFpbiwgeW91IGNhbiBlYXNpbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZSB0aGF0IHRvb2xjaGFpbiB0aHJvdWdoIHNwZWNpZmljYXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtLXNwZWNpZmljIHR1bmluZyBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgQW5kLCBzaG91bGQgeW91IG5lZWQgdG8gdXNlIGEgdGhpcmQtcGFydHkgdG9vbGNoYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtcyBidWlsdCBpbnRvIHRoZSBZb2N0byBQcm9qZWN0IGFsbG93IGZvciB0aGF0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZWNoYW5pc20gUnVsZXMgT3ZlciBQb2xpY3k6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzaW5nIG9uIG1lY2hhbmlzbSByYXRoZXIgdGhhbiBwb2xpY3kgZW5zdXJlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGZyZWUgdG8gc2V0IHBvbGljaWVzIGJhc2VkIG9uIHRoZSBuZWVkcyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24gaW5zdGVhZCBvZiBhZG9wdGluZyBkZWNpc2lvbnMgZW5mb3JjZWQgYnkgc29tZQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNvZnR3YXJlIHByb3ZpZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2VzIGEgTGF5ZXIgTW9kZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+bGF5ZXIgaW5mcmFzdHJ1Y3R1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGludG8gc2VwYXJhdGUgYnVuZGxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaW5jcmVtZW50YWxseSBhZGQgdGhlc2UgZ3JvdXBlZCBmdW5jdGlvbmFsaXRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHlvdXIgcHJvamVjdCBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyBsYXllcnMgdG8gaXNvbGF0ZSBhbmQgZ3JvdXAgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgcmVkdWNlcyBwcm9qZWN0IGNvbXBsZXhpdHkgYW5kIHJlZHVuZGFuY3ksIGFsbG93cyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVhc2lseSBleHRlbmQgdGhlIHN5c3RlbSwgbWFrZSBjdXN0b21pemF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBrZWVwIGZ1bmN0aW9uYWxpdHkgb3JnYW5pemVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3VwcG9ydHMgUGFydGlhbCBCdWlsZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYnVpbGQgYW5kIHJlYnVpbGQgaW5kaXZpZHVhbCBwYWNrYWdlcyBhcworICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhY2NvbXBsaXNoZXMgdGhpcyB0aHJvdWdoIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5zaGFyZWQtc3RhdGUgY2FjaGU8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoc3N0YXRlKSBzY2hlbWUuCisgICAgICAgICAgICAgICAgICAgICAgICBCZWluZyBhYmxlIHRvIGJ1aWxkIGFuZCBkZWJ1ZyBjb21wb25lbnRzIGluZGl2aWR1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZWFzZXMgcHJvamVjdCBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVsZWFzZXMgQWNjb3JkaW5nIHRvIGEgU3RyaWN0IFNjaGVkdWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBNYWpvciByZWxlYXNlcyBvY2N1ciBvbiBhCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtcmVsZWFzZS1wcm9jZXNzJz5zaXgtbW9udGggY3ljbGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljdGFibHkgaW4gT2N0b2JlciBhbmQgQXByaWwuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCByZWNlbnQgdHdvIHJlbGVhc2VzIHN1cHBvcnQgcG9pbnQgcmVsZWFzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFkZHJlc3MgY29tbW9uIHZ1bG5lcmFiaWxpdGllcyBhbmQgZXhwb3N1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwcmVkaWN0YWJpbGl0eSBpcyBjcnVjaWFsIGZvciBwcm9qZWN0cyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgYW5kIGFsbG93cyBkZXZlbG9wbWVudCB0ZWFtcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgcGxhbiBhY3Rpdml0aWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SaWNoIEVjb3N5c3RlbSBvZiBJbmRpdmlkdWFscyBhbmQgT3JnYW5pemF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG9wZW4gc291cmNlIHByb2plY3RzLCB0aGUgdmFsdWUgb2YgY29tbXVuaXR5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ5IGltcG9ydGFudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9ydW1zLCBleHBlcnRpc2UsIGFuZCBhY3RpdmUgZGV2ZWxvcGVycyB3aG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvIHB1c2ggdGhlIFlvY3RvIFByb2plY3QgZm9yd2FyZCBhcmUgcmVhZGlseQorICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaW5hcnkgUmVwcm9kdWNpYmlsaXR5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBhbGxvd3MgeW91IHRvIGJlIHZlcnkgc3BlY2lmaWMgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBhbmQgYWNoaWV2ZXMgdmVyeSBoaWdoIHBlcmNlbnRhZ2VzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5IChlLmcuIDk5LjglIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gZGlzdHJpYnV0aW9ucyBhcmUgbm90IHNwZWNpZmljIGFib3V0IHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgcHVsbGVkIGluIGFuZCBpbiB3aGF0IG9yZGVyIHRvIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcywgb3RoZXIgYnVpbGQgc3lzdGVtcyBjYW4gYXJiaXRyYXJpbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxpY2Vuc2UgTWFuaWZlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPmxpY2Vuc2UgbWFuaWZlc3Q8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJldmlldyBieSBwZW9wbGUgd2hvIG5lZWQgdG8gdHJhY2sgdGhlIHVzZSBvZiBvcGVuCisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgbGljZW5zZXMgKGUuZy5sZWdhbCB0ZWFtcykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdncy1jaGFsbGVuZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5DaGFsbGVuZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByZXNlbnRzIGNoYWxsZW5nZXMgeW91IG1pZ2h0IGVuY291bnRlcgorICAgICAgICAgICAgICAgIHdoZW4gZGV2ZWxvcGluZyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RlZXAgTGVhcm5pbmcgQ3VydmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBhIHN0ZWVwIGxlYXJuaW5nIGN1cnZlIGFuZCBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnkgZGlmZmVyZW50IHdheXMgdG8gYWNjb21wbGlzaCBzaW1pbGFyIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgY2FuIGJlIGRpZmZpY3VsdCB0byBjaG9vc2UgaG93IHRvIHByb2NlZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyeWluZyBtZXRob2RzIGV4aXN0IGJ5IHdoaWNoIHRvIGFjY29tcGxpc2ggYSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5kZXJzdGFuZGluZyBXaGF0IENoYW5nZXMgWW91IE5lZWQgdG8gTWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFlvdXIgRGVzaWduIFJlcXVpcmVzIFNvbWUgUmVzZWFyY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJleW9uZCB0aGUgc2ltcGxlIHR1dG9yaWFsIHN0YWdlLCB1bmRlcnN0YW5kaW5nIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgbmVlZCB0byBiZSBtYWRlIGZvciB5b3VyIHBhcnRpY3VsYXIgZGVzaWduCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gcmVxdWlyZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiByZXNlYXJjaCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmVzdGlnYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBoZWxwcyB5b3UgdHJhbnNpdGlvbiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB0cnlpbmcgb3V0IHRoZSBZb2N0byBQcm9qZWN0IHRvIHVzaW5nIGl0IGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy90cmFuc2l0aW9uaW5nLXRvLWEtY3VzdG9tLWVudmlyb25tZW50Lyc+VHJhbnNpdGlvbmluZyB0byBhIEN1c3RvbSBFbnZpcm9ubWVudCBmb3IgU3lzdGVtcyBEZXZlbG9wbWVudDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByb2plY3QgV29ya2Zsb3cgQ291bGQgQmUgQ29uZnVzaW5nOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J292ZXJ2aWV3LWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5Zb2N0byBQcm9qZWN0IHdvcmtmbG93PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgY29uZnVzaW5nIGlmIHlvdSBhcmUgdXNlZCB0byB0cmFkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcCBhbmQgc2VydmVyIHNvZnR3YXJlIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gYSBkZXNrdG9wIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBtZWNoYW5pc21zIGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICB0byBlYXNpbHkgcHVsbCBhbmQgaW5zdGFsbCBuZXcgcGFja2FnZXMsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgdHlwaWNhbGx5IHByZS1jb21waWxlZCBiaW5hcmllcyBmcm9tIHNlcnZlcnMgYWNjZXNzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgb3ZlciB0aGUgSW50ZXJuZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgWW9jdG8gUHJvamVjdCwgeW91IG11c3QgbW9kaWZ5IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIHJlYnVpbGQgdG8gYWRkIGFkZGl0aW9uYWwgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPldvcmtpbmcgaW4gYSBDcm9zcy1CdWlsZCBFbnZpcm9ubWVudCBDYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZlZWwgVW5mYW1pbGlhcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBkZXZlbG9waW5nIGNvZGUgdG8gcnVuIG9uIGEgdGFyZ2V0LCBjb21waWxhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGlvbiwgYW5kIHRlc3RpbmcgZG9uZSBvbiB0aGUgYWN0dWFsIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGZhc3RlciB0aGFuIHJ1bm5pbmcgYSBCaXRCYWtlIGJ1aWxkIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QgYW5kIHRoZW4gZGVwbG95aW5nIGJpbmFyaWVzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGZvciB0ZXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIFlvY3RvIFByb2plY3QgZG9lcyBzdXBwb3J0IGRldmVsb3BtZW50IHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0LCB0aGUgYWRkaXRpb25hbCBzdGVwIG9mIGludGVncmF0aW5nIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgYmFjayBpbnRvIHRoZSBZb2N0byBQcm9qZWN0IGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSByZXF1aXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYW4gaW50ZXJtZWRpYXRlIGFwcHJvYWNoIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGludm9sdmVzIG1ha2luZyBjaGFuZ2VzIG9uIHRoZSBkZXZlbG9wbWVudCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgQml0QmFrZSBlbnZpcm9ubWVudCBhbmQgdGhlbiBkZXBsb3lpbmcgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVwZGF0ZWQgcGFja2FnZXMgdG8gdGhlIHRhcmdldC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBwYWNrYWdlcyBpbiBzdGFuZGFyZCBmb3JtYXRzIChpLmUuIFJQTSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERFQiwgSVBLLCBhbmQgVEFSKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHRoZXNlIHBhY2thZ2VzIGludG8gdGhlIHJ1bm5pbmcgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IGJ5IHVzaW5nIHV0aWxpdGllcyBvbiB0aGUgdGFyZ2V0IHN1Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIDxmaWxlbmFtZT5ycG08L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlwazwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsIEJ1aWxkIFRpbWVzIENhbiBiZSBTaWduaWZpY2FudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTG9uZyBpbml0aWFsIGJ1aWxkIHRpbWVzIGFyZSB1bmZvcnR1bmF0ZWx5IHVuYXZvaWRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBkdWUgdG8gdGhlIGxhcmdlIG51bWJlciBvZiBwYWNrYWdlcyBpbml0aWFsbHkgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gc2NyYXRjaCBmb3IgYSBmdWxseSBmdW5jdGlvbmluZyBMaW51eCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoYXQgaW5pdGlhbCBidWlsZCBpcyBjb21wbGV0ZWQsIGhvd2V2ZXIsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkLXN0YXRlIChzc3RhdGUpIGNhY2hlIG1lY2hhbmlzbSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICB1c2VzIGtlZXBzIHRoZSBzeXN0ZW0gZnJvbSByZWJ1aWxkaW5nIHBhY2thZ2VzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgbm90IGJlZW4gInRvdWNoZWQiIHNpbmNlIHRoZSBsYXN0IGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNzdGF0ZSBtZWNoYW5pc20gc2lnbmlmaWNhbnRseSByZWR1Y2VzIHRpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3VjY2Vzc2l2ZSBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+CisgICAgICAgIDx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCdzICJMYXllciBNb2RlbCIgaXMgYSBkZXZlbG9wbWVudCBtb2RlbCBmb3IKKyAgICAgICAgICAgIGVtYmVkZGVkIGFuZCBJb1QgTGludXggY3JlYXRpb24gdGhhdCBkaXN0aW5ndWlzaGVzIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBmcm9tIG90aGVyIHNpbXBsZSBidWlsZCBzeXN0ZW1zLgorICAgICAgICAgICAgVGhlIExheWVyIE1vZGVsIHNpbXVsdGFuZW91c2x5IHN1cHBvcnRzIGNvbGxhYm9yYXRpb24gYW5kCisgICAgICAgICAgICBjdXN0b21pemF0aW9uLgorICAgICAgICAgICAgTGF5ZXJzIGFyZSByZXBvc2l0b3JpZXMgdGhhdCBjb250YWluIHJlbGF0ZWQgc2V0cyBvZiBpbnN0cnVjdGlvbnMKKyAgICAgICAgICAgIHRoYXQgdGVsbCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgIHdoYXQgdG8gZG8uCisgICAgICAgICAgICBZb3UgY2FuIGNvbGxhYm9yYXRlLCBzaGFyZSwgYW5kIHJldXNlIGxheWVycy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTGF5ZXJzIGNhbiBjb250YWluIGNoYW5nZXMgdG8gcHJldmlvdXMgaW5zdHJ1Y3Rpb25zIG9yIHNldHRpbmdzCisgICAgICAgICAgICBhdCBhbnkgdGltZS4KKyAgICAgICAgICAgIFRoaXMgcG93ZXJmdWwgb3ZlcnJpZGUgY2FwYWJpbGl0eSBpcyB3aGF0IGFsbG93cyB5b3UgdG8gY3VzdG9taXplCisgICAgICAgICAgICBwcmV2aW91c2x5IHN1cHBsaWVkIGNvbGxhYm9yYXRpdmUgb3IgY29tbXVuaXR5IGxheWVycyB0byBzdWl0IHlvdXIKKyAgICAgICAgICAgIHByb2R1Y3QgcmVxdWlyZW1lbnRzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgdXNlIGRpZmZlcmVudCBsYXllcnMgdG8gbG9naWNhbGx5IHNlcGFyYXRlIGluZm9ybWF0aW9uIGluIHlvdXIKKyAgICAgICAgICAgIGJ1aWxkLgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgeW91IGNvdWxkIGhhdmUgQlNQLCBHVUksIGRpc3RybyBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgbWlkZGxld2FyZSwgb3IgYXBwbGljYXRpb24gbGF5ZXJzLgorICAgICAgICAgICAgUHV0dGluZyB5b3VyIGVudGlyZSBidWlsZCBpbnRvIG9uZSBsYXllciBsaW1pdHMgYW5kIGNvbXBsaWNhdGVzCisgICAgICAgICAgICBmdXR1cmUgY3VzdG9taXphdGlvbiBhbmQgcmV1c2UuCisgICAgICAgICAgICBJc29sYXRpbmcgaW5mb3JtYXRpb24gaW50byBsYXllcnMsIG9uIHRoZSBvdGhlciBoYW5kLCBoZWxwcworICAgICAgICAgICAgc2ltcGxpZnkgZnV0dXJlIGN1c3RvbWl6YXRpb25zIGFuZCByZXVzZS4KKyAgICAgICAgICAgIFlvdSBtaWdodCBmaW5kIGl0IHRlbXB0aW5nIHRvIGtlZXAgZXZlcnl0aGluZyBpbiBvbmUgbGF5ZXIgd2hlbgorICAgICAgICAgICAgd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LgorICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1vcmUgbW9kdWxhciB5b3VyIE1ldGFkYXRhLCB0aGUgZWFzaWVyCisgICAgICAgICAgICBpdCBpcyB0byBjb3BlIHdpdGggZnV0dXJlIGNoYW5nZXMuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgbGF5ZXJzIGZyb20gc2lsaWNvbgorICAgICAgICAgICAgICAgICAgICAgICAgdmVuZG9ycyB3aGVuIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZhbWlsaWFyaXplIHlvdXJzZWxmIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2NhZmZlbGxpLXN0YWdpbmcueW9jdG9wcm9qZWN0Lm9yZy9zb2Z0d2FyZS1vdmVydmlldy9sYXllcnMvJz5Zb2N0byBQcm9qZWN0IGN1cmF0ZWQgbGF5ZXIgaW5kZXg8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9icmFuY2gvbWFzdGVyL2xheWVycy8nPk9wZW5FbWJlZGRlZCBsYXllciBpbmRleDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxhdHRlciBjb250YWlucyBtb3JlIGxheWVycyBidXQgdGhleSBhcmUgbGVzcworICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsbHkgdmFsaWRhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExheWVycyBzdXBwb3J0IHRoZSBpbmNsdXNpb24gb2YgdGVjaG5vbG9naWVzLCBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cywgYW5kIHNvZnR3YXJlIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ha2luZy1zdXJlLXlvdXItbGF5ZXItaXMtY29tcGF0aWJsZS13aXRoLXlvY3RvLXByb2plY3QnPllvY3RvIFByb2plY3QgQ29tcGF0aWJsZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ25hdGlvbiBwcm92aWRlcyBhIG1pbmltdW0gbGV2ZWwgb2Ygc3RhbmRhcmRpemF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRyaWJ1dGVzIHRvIGEgc3Ryb25nIGVjb3N5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgICJZUCBDb21wYXRpYmxlIiBpcyBhcHBsaWVkIHRvIGFwcHJvcHJpYXRlIHByb2R1Y3RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgY29tcG9uZW50cyBzdWNoIGFzIEJTUHMsIG90aGVyIE9FLWNvbXBhdGlibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVycywgYW5kIHJlbGF0ZWQgb3Blbi1zb3VyY2UgcHJvamVjdHMsIGFsbG93aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXIgdG8gdXNlIFlvY3RvIFByb2plY3QgYmFkZ2VzIGFuZCBicmFuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgaG93IGxheWVycyBhcmUgdXNlZCB0byBrZWVwIHRoaW5ncyBtb2R1bGFyLCBjb25zaWRlcgorICAgICAgICAgICAgbWFjaGluZSBjdXN0b21pemF0aW9ucy4KKyAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGN1c3RvbWl6YXRpb25zIHR5cGljYWxseSByZXNpZGUgaW4gYSBzcGVjaWFsIGxheWVyLAorICAgICAgICAgICAgcmF0aGVyIHRoYW4gYSBnZW5lcmFsIGxheWVyLCBjYWxsZWQgYSBCU1AgTGF5ZXIuCisgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIG1hY2hpbmUgY3VzdG9taXphdGlvbnMgc2hvdWxkIGJlIGlzb2xhdGVkIGZyb20KKyAgICAgICAgICAgIHJlY2lwZXMgYW5kIE1ldGFkYXRhIHRoYXQgc3VwcG9ydCBhIG5ldyBHVUkgZW52aXJvbm1lbnQsCisgICAgICAgICAgICBmb3IgZXhhbXBsZS4KKyAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIGdpdmVzIHlvdSBhIGNvdXBsZSBvZiBsYXllcnM6IG9uZSBmb3IgdGhlIG1hY2hpbmUKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLCBhbmQgb25lIGZvciB0aGUgR1VJIGVudmlyb25tZW50LgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQsIGhvd2V2ZXIsIHRoYXQgdGhlIEJTUCBsYXllciBjYW4KKyAgICAgICAgICAgIHN0aWxsIG1ha2UgbWFjaGluZS1zcGVjaWZpYyBhZGRpdGlvbnMgdG8gcmVjaXBlcyB3aXRoaW4gdGhlIEdVSQorICAgICAgICAgICAgZW52aXJvbm1lbnQgbGF5ZXIgd2l0aG91dCBwb2xsdXRpbmcgdGhlIEdVSSBsYXllciBpdHNlbGYKKyAgICAgICAgICAgIHdpdGggdGhvc2UgbWFjaGluZS1zcGVjaWZpYyBjaGFuZ2VzLgorICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgdGhyb3VnaCBhIHJlY2lwZSB0aGF0IGlzIGEgQml0QmFrZSBhcHBlbmQKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIGZpbGUsIHdoaWNoIGlzIGRlc2NyaWJlZCBsYXRlcgorICAgICAgICAgICAgaW4gdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gQlNQIGxheWVyIHN0cnVjdHVyZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIGNvbnRhaW5zIGJvdGggZ2VuZXJhbCBsYXllcnMgYW5kIEJTUCBsYXllcnMgcmlnaHQgb3V0IG9mIHRoZSBib3guCisgICAgICAgICAgICBZb3UgY2FuIGVhc2lseSBpZGVudGlmeSBsYXllcnMgdGhhdCBzaGlwIHdpdGggYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICByZWxlYXNlIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGJ5IHRoZWlyIG5hbWVzLgorICAgICAgICAgICAgTGF5ZXJzIHR5cGljYWxseSBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgc3RyaW5nCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEl0IGlzIG5vdCBhIHJlcXVpcmVtZW50IHRoYXQgYSBsYXllciBuYW1lIGJlZ2luIHdpdGggdGhlCisgICAgICAgICAgICAgICAgcHJlZml4IDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LCBidXQgaXQgaXMgYSBjb21tb25seQorICAgICAgICAgICAgICAgIGFjY2VwdGVkIHN0YW5kYXJkIGluIHRoZSBZb2N0byBQcm9qZWN0IGNvbW11bml0eS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2VyZSB0byBleGFtaW5lIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8nPnRyZWUgdmlldzwvdWxpbms+CisgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB5b3Ugd2lsbCBzZWUgc2V2ZXJhbAorICAgICAgICAgICAgbGF5ZXJzOiA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2tlbGV0b248L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNlbGZ0ZXN0PC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4uCisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIHJlcG9zaXRvcmllcyByZXByZXNlbnRzIGEgZGlzdGluY3QgbGF5ZXIuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBwcm9jZWR1cmVzIG9uIGhvdyB0byBjcmVhdGUgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NvbXBvbmVudHMtYW5kLXRvb2xzJz4KKyAgICAgICAgPHRpdGxlPkNvbXBvbmVudHMgYW5kIFRvb2xzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGVtcGxveXMgYSBjb2xsZWN0aW9uIG9mIGNvbXBvbmVudHMgYW5kCisgICAgICAgICAgICB0b29scyB1c2VkIGJ5IHRoZSBwcm9qZWN0IGl0c2VsZiwgYnkgcHJvamVjdCBkZXZlbG9wZXJzLAorICAgICAgICAgICAgYW5kIGJ5IHRob3NlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgVGhlc2UgY29tcG9uZW50cyBhbmQgdG9vbHMgYXJlIG9wZW4gc291cmNlIHByb2plY3RzIGFuZAorICAgICAgICAgICAgbWV0YWRhdGEgdGhhdCBhcmUgc2VwYXJhdGUgZnJvbSB0aGUgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPikKKyAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCisgICAgICAgICAgICBNb3N0IG9mIHRoZSBjb21wb25lbnRzIGFuZCB0b29scyBhcmUgZG93bmxvYWRlZCBzZXBhcmF0ZWx5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYnJpZWYgb3ZlcnZpZXdzIG9mIHRoZSBjb21wb25lbnRzIGFuZAorICAgICAgICAgICAgdG9vbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLWRldmVsb3BtZW50LXRvb2xzJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZXZlbG9wbWVudCBUb29sczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBjb25zaXN0cyBvZiB0b29scyB0aGF0IGhlbHAgeW91IGRldmVsb3AKKyAgICAgICAgICAgICAgICBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2dzLWNyb3BzLW92ZXJ2aWV3Jz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DUk9QUzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyLyc+Q1JPUFM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgYW4gb3BlbiBzb3VyY2UsIGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IGZyYW1ld29yaworICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBsZXZlcmFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgQ1JPUFMgcHJvdmlkZXMgYW4gZWFzaWx5IG1hbmFnZWQsIGV4dGVuc2libGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYWxsb3dzIHlvdSB0byBidWlsZCBiaW5hcmllcyBmb3IgYSB2YXJpZXR5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIG9uIFdpbmRvd3MsIExpbnV4IGFuZCBNYWMgT1MgWCBob3N0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kLWxpbmUgdG9vbCBpcyBhdmFpbGFibGUgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLIChlU0RLKSBhbmQgaXMgaXRzIGNvcm5lcnN0b25lLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBoZWxwIGJ1aWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCwgYW5kIHBhY2thZ2Ugc29mdHdhcmUgd2l0aGluIHRoZSBlU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHRvb2wgdG8gb3B0aW9uYWxseSBpbnRlZ3JhdGUgd2hhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGludG8gYW4gaW1hZ2UgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZCBlbXBsb3lzCisgICAgICAgICAgICAgICAgICAgICAgICBhIG51bWJlciBvZiBzdWItY29tbWFuZHMgdGhhdCBhbGxvdyB5b3UgdG8gYWRkLCBtb2RpZnksCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXBncmFkZSByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgInJlY2lwZXMiCisgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnQgc29mdHdhcmUgcGFja2FnZXMgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+LCBhIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBleGlzdGluZyByZWNpcGUgaXMgdXNlZCBpbiBvcmRlciB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRvIGdldCB0aGUgc291cmNlIGNvZGUgYW5kIGhvdyB0byBwYXRjaCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGJvdGggY2FzZXMsIGFuIGVudmlyb25tZW50IGlzIHNldCB1cCBzbyB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBidWlsZCB0aGUgcmVjaXBlIGEgc291cmNlIHRyZWUgdGhhdCBpcyB1bmRlciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGlzIHVzZWQgaW4gb3JkZXIgdG8gYWxsb3cgeW91IHRvIG1ha2UgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHNvdXJjZSBhcyBkZXNpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYm90aCBuZXcgcmVjaXBlcyBhbmQgdGhlIHNvdXJjZSBnbyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBhICJ3b3Jrc3BhY2UiIGRpcmVjdG9yeSB1bmRlciB0aGUgZVNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyBhbiBleGlzdGluZyByZWNpcGUgc28gdGhhdCB5b3UgY2FuIGJ1aWxkIGl0CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYW4gdXBkYXRlZCBzZXQgb2Ygc291cmNlIGZpbGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiByZWFkIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3b3JrZmxvdyBpbiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIEV4dGVuc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgTWFudWFsIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaW4gWW91ciBTREsgV29ya2Zsb3cnPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlU0RLIHByb3ZpZGVzIGEgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIHRhaWxvcmVkIHRvIHRoZSBjb250ZW50cyBvZiBhIHNwZWNpZmljIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGVTREsgbWFrZXMgaXQgZWFzeSB0byBhZGQgbmV3IGFwcGxpY2F0aW9ucyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyB0byBhbiBpbWFnZSwgbW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuCisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBjb21wb25lbnQsIHRlc3QgY2hhbmdlcyBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSwgYW5kIGludGVncmF0ZSBpbnRvIHRoZSByZXN0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlU0RLIGdpdmVzIHlvdSBhIHRvb2xjaGFpbiBleHBlcmllbmNlIHN1cHBsZW1lbnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgcG93ZXJmdWwgc2V0IG9mIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzIHRhaWxvcmVkIGZvciB0aGUgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIHRoZSBlU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSwgcnVuLCBhbmQgdmlldworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIFRvYXN0ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXByb2R1Y3Rpb24tdG9vbHMnPgorICAgICAgICAgICAgPHRpdGxlPlByb2R1Y3Rpb24gVG9vbHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgY29uc2lzdHMgb2YgdG9vbHMgdGhhdCBoZWxwIHByb2R1Y3Rpb24KKyAgICAgICAgICAgICAgICByZWxhdGVkIGFjdGl2aXRpZXMgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG8gVXBncmFkZSBIZWxwZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdXRpbGl0eSB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChCaXRCYWtlIGFuZCBPRS1Db3JlKSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyB1cGdyYWRlcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlY2lwZXMgdGhhdCBhcmUgYmFzZWQgb24gbmV3IHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBwdWJsaXNoZWQgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZSBSZXBvcnRpbmcgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgUmVjaXBlIFJlcG9ydGluZyBTeXN0ZW0gdHJhY2tzIHJlY2lwZSB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGZvciBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgc3lzdGVtIGlzIHRvIGhlbHAgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2UgdGhlIHJlY2lwZXMgeW91IG1haW50YWluIGFuZCB0byBvZmZlciBhIGR5bmFtaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3IG9mIHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFJlY2lwZSBSZXBvcnRpbmcgU3lzdGVtIGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2xheWVycy8iPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB3ZWJzaXRlIHRoYXQgaW5kZXhlcyBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYXRjaHdvcms6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9qay5vemxhYnMub3JnL3Byb2plY3RzL3BhdGNod29yay8nPlBhdGNod29yazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGZvcmsgb2YgYSBwcm9qZWN0IG9yaWdpbmFsbHkgc3RhcnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL296bGFicy5vcmcvJz5PekxhYnM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcm9qZWN0IGlzIGEgd2ViLWJhc2VkIHRyYWNraW5nIHN5c3RlbSBkZXNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3RyZWFtbGluZSB0aGUgcHJvY2VzcyBvZiBicmluZ2luZyBjb250cmlidXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGEgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgUGF0Y2h3b3JrIGFzIGFuIG9yZ2FuaXphdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sIHRvIGhhbmRsZSBwYXRjaGVzLCB3aGljaCBudW1iZXIgaW4gdGhlIHRob3VzYW5kcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV2ZXJ5IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG9CdWlsZGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQnVpbGRlciBpcyBhIHByb2plY3QgdGhhdCBhdXRvbWF0ZXMgYnVpbGQgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBxdWFsaXR5IGFzc3VyYW5jZSAoUUEpLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgdXNpbmcgdGhlIHB1YmxpYyBBdXRvQnVpbGRlciwgYW55b25lIGNhbiBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0dXMgb2YgdGhlIGN1cnJlbnQgIm1hc3RlciIgYnJhbmNoIG9mIFBva3kuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQnVpbGRlciBpcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVpbGRib3QubmV0Lyc+YnVpbGRib3Q8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBsZWFkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiBzb3VyY2UgaW5kdXN0cnkgd2l0aCBhIHByb2plY3QgdGhhdCBhdXRvbWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgYW5kIFFBIHByb2NlZHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBkb2luZyBzbywgdGhlIHByb2plY3QgZW5jb3VyYWdlcyBhIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkgdGhhdCBwdWJsaXNoZXMgUUEgYW5kIHRlc3QgcGxhbnMsIHB1YmxpY2x5CisgICAgICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0ZXMgUUEgYW5kIHRlc3QgcGxhbnMsIGFuZCBlbmNvdXJhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBvZiB0b29scyB0aGF0IGF1dG9tYXRlIGFuZCB0ZXN0IGFuZCBRQQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcyBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhlIEF1dG9CdWlsZGVyIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQUJfVVJMOyc+aGVyZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1QcmVsaW5rOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQcmVsaW5raW5nIGlzIHRoZSBwcm9jZXNzIG9mIHByZS1jb21wdXRpbmcgdGhlIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NlcyBhbmQgbGluayB0YWJsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBkeW5hbWljCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZXIgYXMgY29tcGFyZWQgdG8gZG9pbmcgdGhpcyBhdCBydW50aW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgdGhpcyBhaGVhZCBvZiB0aW1lIHJlc3VsdHMgaW4gcGVyZm9ybWFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcHJvdmVtZW50cyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBsYXVuY2hlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZWQgbWVtb3J5IHVzYWdlIGZvciBsaWJyYXJpZXMgc2hhcmVkIGJ5IG1hbnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhpc3RvcmljYWxseSwgY3Jvc3MtcHJlbGluayBpcyBhIHZhcmlhbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWxpbmssIHdoaWNoIHdhcyBjb25jZWl2ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9qYWt1Yi9wcmVsaW5rLnBkZic+SmFrdWIgSmVsJmlhY3V0ZTtuZWs8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYSBudW1iZXIgb2YgeWVhcnMgYWdvLgorICAgICAgICAgICAgICAgICAgICAgICAgQm90aCBwcmVsaW5rIGFuZCBjcm9zcy1wcmVsaW5rIGFyZSBtYWludGFpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSByZXBvc2l0b3J5IGFsYmVpdCBvbiBzZXBhcmF0ZSBicmFuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ5IHByb3ZpZGluZyBhbiBlbXVsYXRlZCBydW50aW1lIGR5bmFtaWMgbGlua2VyCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi1kZXJpdmVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGQuc288L2ZpbGVuYW1lPiBlbXVsYXRpb24pLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXByZWxpbmsgcHJvamVjdCBleHRlbmRzIHRoZSBwcmVsaW5rIHNvZnR3YXJlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGFiaWxpdHkgdG8gcHJlbGluayBhIHN5c3Jvb3QgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBjcm9zcy1wcmVsaW5rIHNvZnR3YXJlIGVuYWJsZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBhYmlsaXR5IHRvIHdvcmsgaW4gc3lzcm9vdCBzdHlsZSBlbnZpcm9ubWVudHMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZHluYW1pYyBsaW5rZXIgZGV0ZXJtaW5lcyBzdGFuZGFyZCBsb2FkCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIGNhbGN1bGF0aW9ucyBiYXNlZCBvbiBhIHZhcmlldHkgb2YgZmFjdG9ycworICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBtYXBwaW5nIGFkZHJlc3NlcywgbGlicmFyeSB1c2FnZSwgYW5kIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNvbmZsaWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmVsaW5rIHRvb2wgdXNlcyB0aGlzIGluZm9ybWF0aW9uLCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBsaW5rZXIsIHRvIGRldGVybWluZSB1bmlxdWUgbG9hZCBhZGRyZXNzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGVjdXRhYmxlIGFuZCBsaW5rYWJsZSBmb3JtYXQgKEVMRikgYmluYXJpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHNoYXJlZCBsaWJyYXJpZXMgYW5kIGR5bmFtaWNhbGx5IGxpbmtlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmVsaW5rIHRvb2wgbW9kaWZpZXMgdGhlc2UgRUxGIGJpbmFyaWVzIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwcmUtY29tcHV0ZWQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGZhc3RlciBsb2FkaW5nIGFuZCBvZnRlbiBsb3dlciBtZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bXB0aW9uIGJlY2F1c2UgbW9yZSBvZiB0aGUgbGlicmFyeSBjb2RlIGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgYmUgcmUtdXNlZCBmcm9tIHNoYXJlZCBDb3B5LU9uLVdyaXRlIChDT1cpIHBhZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgb3JpZ2luYWwgdXBzdHJlYW0gcHJlbGluayBwcm9qZWN0IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIHJ1bm5pbmcgcHJlbGluayBvbiB0aGUgZW5kIHRhcmdldCBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGR1ZSB0byB0aGUgcmVsaWFuY2Ugb24gdGhlIHRhcmdldCBkZXZpY2UncyBkeW5hbWljCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHJlc3RyaWN0aW9uIGNhdXNlcyBpc3N1ZXMgd2hlbiBkZXZlbG9waW5nIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjcm9zcy1wcmVsaW5rIGFkZHMgYSBzeW50aGVzaXplZCBkeW5hbWljIGxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBydW5zIG9uIHRoZSBob3N0LCB0aHVzIHBlcm1pdHRpbmcgY3Jvc3MtcHJlbGlua2luZworICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBldmVyIGhhdmluZyB0byBydW4gb24gYSByZWFkLXdyaXRlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHNldWRvOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQc2V1ZG8gaXMgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9tYW4uaGUubmV0L21hbjEvZmFrZXJvb3QnPmZha2Vyb290PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c2VkIHRvIHJ1biBjb21tYW5kcyBpbiBhbiBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzZWVtaW5nbHkgaGFzIHJvb3QgcHJpdmlsZWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkR1cmluZyBhIGJ1aWxkLCBpdCBjYW4gYmUgbmVjZXNzYXJ5IHRvIHBlcmZvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgdGhhdCByZXF1aXJlIHN5c3RlbSBhZG1pbmlzdHJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICBwcml2aWxlZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZpbGUgb3duZXJzaGlwIG9yIHBlcm1pc3Npb25zIG1pZ2h0IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBQc2V1ZG8gaXMgYSB0b29sIHRoYXQgeW91IGNhbiBlaXRoZXIgdXNlIGRpcmVjdGx5IG9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxEX1BSRUxPQUQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVpdGhlciBtZXRob2QgYWxsb3dzIHRoZXNlIG9wZXJhdGlvbnMgdG8gc3VjY2VlZCBhcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3lzdGVtIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyBleGlzdCBldmVuCisgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZXkgZG8gbm90LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiByZWFkIG1vcmUgYWJvdXQgUHNldWRvIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPkZha2Vyb290IGFuZCBQc2V1ZG88L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLW9wZW5lbWJlZGRlZC1idWlsZC1zeXN0ZW0nPgorICAgICAgICAgICAgPHRpdGxlPk9wZW4tRW1iZWRkZWQgQnVpbGQgU3lzdGVtIENvbXBvbmVudHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgY29uc2lzdHMgb2YgY29tcG9uZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBpcworICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBidWlsZCBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBCaXRCYWtlIGlzIGtleSB0byB0aGUgYnVpbGQgc3lzdGVtLCBCaXRCYWtlCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJpdEJha2UgaXMgYSBnZW5lcmljIHRhc2sgZXhlY3V0aW9uIGVuZ2luZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3Mgc2hlbGwgYW5kIFB5dGhvbiB0YXNrcyB0byBiZSBydW4gZWZmaWNpZW50bHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpbiBwYXJhbGxlbCB3aGlsZSB3b3JraW5nIHdpdGhpbiBjb21wbGV4IGludGVyLXRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgY29uc3RyYWludHMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBzaG9ydCwgQml0QmFrZSBpcyBhIGJ1aWxkIGVuZ2luZSB0aGF0IHdvcmtzCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHJlY2lwZXMgd3JpdHRlbiBpbiBhIHNwZWNpZmljIGZvcm1hdCBpbiBvcmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcGVyZm9ybSBzZXRzIG9mIHRhc2tzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBsZWFybiBtb3JlIGFib3V0IEJpdEJha2UgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZC1Db3JlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSkgaXMgYSBjb21tb24gbGF5ZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhIChpLmUuIHJlY2lwZXMsIGNsYXNzZXMsIGFuZCBhc3NvY2lhdGVkIGZpbGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBieSBPcGVuRW1iZWRkZWQtZGVyaXZlZCBzeXN0ZW1zLCB3aGljaCBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBhbmQgdGhlIE9wZW5FbWJlZGRlZCBQcm9qZWN0IGJvdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haW50YWluIHRoZSBPcGVuRW1iZWRkZWQtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgT0UtQ29yZSBtZXRhZGF0YSBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGlzdG9yaWNhbGx5LCB0aGUgWW9jdG8gUHJvamVjdCBpbnRlZ3JhdGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgT0UtQ29yZSBtZXRhZGF0YSB0aHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgcmVwb3NpdG9yeSByZWZlcmVuY2Ugc3lzdGVtIChQb2t5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIFlvY3RvIFByb2plY3QgVmVyc2lvbiAxLjAsIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgT3BlbkVtYmVkZGVkIGFncmVlZCB0byB3b3JrIHRvZ2V0aGVyIGFuZCBzaGFyZSBhCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24gY29yZSBzZXQgb2YgbWV0YWRhdGEgKE9FLUNvcmUpLCB3aGljaCBjb250YWluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIG11Y2ggb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseSBmb3VuZCBpbiBQb2t5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb2xsYWJvcmF0aW9uIGFjaGlldmVkIGEgbG9uZy1zdGFuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIG9iamVjdGl2ZSBmb3IgaGF2aW5nIGEgbW9yZSB0aWdodGx5CisgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVkIGFuZCBxdWFsaXR5LWFzc3VyZWQgY29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFsc28gZml0IHdlbGwgd2l0aCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0aXZlIG9mIGFjaGlldmluZyBhIHNtYWxsZXIgbnVtYmVyIG9mIGZ1bGx5CisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZCB0b29scyBhcyBjb21wYXJlZCB0byBtYW55IGRpZmZlcmVudCBvbmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5TaGFyaW5nIGEgY29yZSBzZXQgb2YgbWV0YWRhdGEgcmVzdWx0cyBpbiBQb2t5CisgICAgICAgICAgICAgICAgICAgICAgICBhcyBhbiBpbnRlZ3JhdGlvbiBsYXllciBvbiB0b3Agb2YgT0UtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoYXQgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0neXAta2V5LWRldi1lbGVtZW50cyc+ZmlndXJlPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGNvbWJpbmVzIHZhcmlvdXMgY29tcG9uZW50cyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlLCBPRS1Db3JlLCBzY3JpcHQgImdsdWUiLCBhbmQgZG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0cyBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdncy1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLXBva3knPgorICAgICAgICAgICAgPHRpdGxlPlJlZmVyZW5jZSBEaXN0cmlidXRpb24gKFBva3kpPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUG9reSBpcyB0aGUgWW9jdG8gUHJvamVjdCByZWZlcmVuY2UgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIEl0IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuLUVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAgICAgKEJpdEJha2UgYW5kIE9FLUNvcmUpIGFzIHdlbGwgYXMgYSBzZXQgb2YgbWV0YWRhdGEgdG8gZ2V0IHlvdQorICAgICAgICAgICAgICAgIHN0YXJ0ZWQgYnVpbGRpbmcgeW91ciBvd24gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd3aGF0LWlzLXRoZS15b2N0by1wcm9qZWN0Jz5maWd1cmU8L2xpbms+IGluCisgICAgICAgICAgICAgICAgIldoYXQgaXMgdGhlIFlvY3RvIFByb2plY3Q/IiBzZWN0aW9uIGZvciBhbiBpbGx1c3RyYXRpb24KKyAgICAgICAgICAgICAgICB0aGF0IHNob3dzIFBva3kgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCB0b29scyBhbmQgY29tcG9uZW50cywgeW91CisgICAgICAgICAgICAgICAgY2FuIGRvd25sb2FkICg8ZmlsZW5hbWU+Y2xvbmU8L2ZpbGVuYW1lPikgUG9reSBhbmQgdXNlIGl0CisgICAgICAgICAgICAgICAgdG8gYm9vdHN0cmFwIHlvdXIgb3duIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgUG9reSBkb2VzIG5vdCBjb250YWluIGJpbmFyeSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYSB3b3JraW5nIGV4YW1wbGUgb2YgaG93IHRvIGJ1aWxkIHlvdXIgb3duIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb24gZnJvbSBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IFBva3kgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZmVyZW5jZS1lbWJlZGRlZC1kaXN0cmlidXRpb24nPlJlZmVyZW5jZSBFbWJlZGRlZCBEaXN0cmlidXRpb24gKFBva3kpPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXBhY2thZ2VzLWZvci1maW5pc2hlZC10YXJnZXRzJz4KKyAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdlcyBmb3IgRmluaXNoZWQgVGFyZ2V0czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdHMgY29tcG9uZW50cyBhc3NvY2lhdGVkIHdpdGggcGFja2FnZXMKKyAgICAgICAgICAgICAgICBmb3IgZmluaXNoZWQgdGFyZ2V0czoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWF0Y2hib3g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoYm94IGlzIGFuIE9wZW4gU291cmNlLCBiYXNlIGVudmlyb25tZW50IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFggV2luZG93IFN5c3RlbSBydW5uaW5nIG9uIG5vbi1kZXNrdG9wLCBlbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zIHN1Y2ggYXMgaGFuZGhlbGRzLCBzZXQtdG9wIGJveGVzLCBraW9za3MsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55dGhpbmcgZWxzZSBmb3Igd2hpY2ggc2NyZWVuIHNwYWNlLCBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtcywgb3Igc3lzdGVtIHJlc291cmNlcyBhcmUgbGltaXRlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk1hdGNoYm94IGNvbnNpc3RzIG9mIGEgbnVtYmVyIG9mIGludGVyY2hhbmdlYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9wdGlvbmFsIGFwcGxpY2F0aW9ucyB0aGF0IHlvdSBjYW4gdGFpbG9yIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljLCBub24tZGVza3RvcCBwbGF0Zm9ybSB0byBlbmhhbmNlIHVzYWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgaW4gY29uc3RyYWluZWQgZW52aXJvbm1lbnRzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSBNYXRjaGJveCBzb3VyY2UgaW4gdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3BrZzwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIFBhY0thR2UgbWFuYWdlbWVudCAob3BrZykgaXMgYSBsaWdodHdlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBiYXNlZCBvbiB0aGUgaXRzeSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAoaXBrZykgbWFuYWdlbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBPcGtnIGlzIHdyaXR0ZW4gaW4gQyBhbmQgcmVzZW1ibGVzIEFkdmFuY2VkIFBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFRvb2wgKEFQVCkgYW5kIERlYmlhbiBQYWNrYWdlIChkcGtnKSBpbiBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9wa2cgaXMgaW50ZW5kZWQgZm9yIHVzZSBvbiBlbWJlZGRlZCBMaW51eAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyBhbmQgaXMgdXNlZCBpbiB0aGlzIGNhcGFjaXR5IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnL3dpa2kvTWFpbl9QYWdlJz5PcGVuRW1iZWRkZWQ8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL29wZW53cnQub3JnLyc+T3BlbldydDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0cywgYXMgd2VsbCBhcyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGJlc3QgaXQgY2FuLCBvcGtnIG1haW50YWlucyBiYWNrd2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5IHdpdGggaXBrZyBhbmQgY29uZm9ybXMgdG8gYSBzdWJzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBEZWJpYW4ncyBwb2xpY3kgbWFudWFsIHJlZ2FyZGluZyBjb250cm9sIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtYXJjaGl2ZWQtY29tcG9uZW50cyc+CisgICAgICAgICAgICA8dGl0bGU+QXJjaGl2ZWQgQ29tcG9uZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBCdWlsZCBBcHBsaWFuY2UgaXMgYSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UgdGhhdCBlbmFibGVzCisgICAgICAgICAgICAgICAgeW91IHRvIGJ1aWxkIGFuZCBib290IGEgY3VzdG9tIGVtYmVkZGVkIExpbnV4IGltYWdlIHdpdGgKKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCB1c2luZyBhIG5vbi1MaW51eCBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhpc3RvcmljYWxseSwgdGhlIEJ1aWxkIEFwcGxpYW5jZSB3YXMgdGhlIHNlY29uZCBvZiB0aHJlZQorICAgICAgICAgICAgICAgIG1ldGhvZHMgYnkgd2hpY2ggeW91IGNvdWxkIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIHN5c3RlbQorICAgICAgICAgICAgICAgIHRoYXQgd2FzIG5vdCBuYXRpdmUgdG8gTGludXguCisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SG9iOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBIb2IsIHdoaWNoIGlzIG5vdyBkZXByZWNhdGVkIGFuZCBpcyBubyBsb25nZXIgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5jZSB0aGUgMi4xIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgcnVkaW1lbnRhcnksIEdVSS1iYXNlZCBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBoYXMgZnVsbHkgcmVwbGFjZWQgSG9iLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBBcHBsaWFuY2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBvc3QgSG9iLCB0aGUgQnVpbGQgQXBwbGlhbmNlIGJlY2FtZSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBJdCB3YXMgbmV2ZXIgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGlhbmNlIGFzIGEgZGF5LXRvLWRheSBwcm9kdWN0aW9uIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgQXBwbGlhbmNlIHdhcyB1c2VmdWwgYXMgYSB3YXkgdG8gdHJ5IG91dAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST1BTOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgYW5kIGJlc3Qgc29sdXRpb24gYXZhaWxhYmxlIG5vdyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BpbmcgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBuYXRpdmUgdG8gTGludXggaXMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ3MtY3JvcHMtb3ZlcnZpZXcnPkNST1BTPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZ3MtZGV2ZWxvcG1lbnQtbWV0aG9kcyc+CisgICAgICAgIDx0aXRsZT5EZXZlbG9wbWVudCBNZXRob2RzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHVzdWFsbHkgaW52b2x2ZXMgYQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPkJ1aWxkIEhvc3Q8L3VsaW5rPgorICAgICAgICAgICAgYW5kIHRhcmdldCBoYXJkd2FyZS4KKyAgICAgICAgICAgIFlvdSB1c2UgdGhlIEJ1aWxkIEhvc3QgdG8gYnVpbGQgaW1hZ2VzIGFuZCBkZXZlbG9wIGFwcGxpY2F0aW9ucywKKyAgICAgICAgICAgIHdoaWxlIHlvdSB1c2UgdGhlIHRhcmdldCBoYXJkd2FyZSB0byB0ZXN0IGRlcGxveWVkIHNvZnR3YXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjaG9pY2VzIG9yCisgICAgICAgICAgICBkZXZlbG9wbWVudCBtZXRob2RzIHlvdSBoYXZlIHdoZW4gc2V0dGluZyB1cCB5b3VyIEJ1aWxkIEhvc3QuCisgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHlvdXIgcGFydGljdWxhciB3b3JrZmxvdyBwcmVmZXJlbmNlIGFuZCB0aGUKKyAgICAgICAgICAgIHR5cGUgb2Ygb3BlcmF0aW5nIHN5c3RlbSB5b3VyIEJ1aWxkIEhvc3QgcnVucywgc2V2ZXJhbCBjaG9pY2VzCisgICAgICAgICAgICBleGlzdCB0aGF0IGFsbG93IHlvdSB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBkZXRhaWwgYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvdmVydmlldy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L2xpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5hdGl2ZSBMaW51eCBIb3N0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJ5IGZhciB0aGUgYmVzdCBvcHRpb24gZm9yIGEgQnVpbGQgSG9zdC4KKyAgICAgICAgICAgICAgICAgICAgQSBzeXN0ZW0gcnVubmluZyBMaW51eCBhcyBpdHMgbmF0aXZlIG9wZXJhdGluZyBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byBkZXZlbG9wIHNvZnR3YXJlIGJ5IGRpcmVjdGx5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0b29sLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggYWxsIGFzcGVjdHMgb2YgZGV2ZWxvcG1lbnQgZnJvbSBhCisgICAgICAgICAgICAgICAgICAgIGZhbWlsaWFyIHNoZWxsIG9mIGEgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IG9uCisgICAgICAgICAgICAgICAgICAgIGEgc3lzdGVtIHJ1bm5pbmcgTGludXggYXMgaXRzIG5hdGl2ZSBvcGVyYXRpbmcgc3lzdGVtLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLWEtbmF0aXZlLWxpbnV4LWhvc3QnPlNldHRpbmcgVXAgYSBOYXRpdmUgTGludXggSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q1JPc3MgUGxhdGZvcm1TIChDUk9QUyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9wb2t5LWNvbnRhaW5lci8nPkNST1BTPC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGxldmVyYWdlcworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgdG8gc2V0IHVwIGEgQnVpbGQgSG9zdCB0aGF0IGlzIG5vdCBydW5uaW5nIExpbnV4IChlLmcuCisgICAgICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPk1pY3Jvc29mdDwvdHJhZGVtYXJrPgorICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZW1hcmsnPldpbmRvd3M8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+bWFjT1M8L3RyYWRlbWFyaz4pLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4sIGhvd2V2ZXIsIHVzZSBDUk9QUyBvbiBhIExpbnV4LWJhc2VkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBDUk9QUyBpcyBhbiBvcGVuIHNvdXJjZSwgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrIHRoYXQgcHJvdmlkZXMgYW4gZWFzaWx5IG1hbmFnZWQsIGV4dGVuc2libGUKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgZm9yIGJ1aWxkaW5nIGJpbmFyaWVzIHRhcmdldGVkIGZvciBhIHZhcmlldHkKKyAgICAgICAgICAgICAgICAgICAgb2YgYXJjaGl0ZWN0dXJlcyBvbiBXaW5kb3dzLCBtYWNPUywgb3IgTGludXggaG9zdHMuCisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIEJ1aWxkIEhvc3QgaXMgc2V0IHVwIHVzaW5nIENST1BTLCB5b3UgY2FuIHByZXBhcmUKKyAgICAgICAgICAgICAgICAgICAgYSBzaGVsbCBlbnZpcm9ubWVudCB0byBtaW1pYyB0aGF0IG9mIGEgc2hlbGwgYmVpbmcgdXNlZAorICAgICAgICAgICAgICAgICAgICBvbiBhIHN5c3RlbSBuYXRpdmVseSBydW5uaW5nIExpbnV4LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhIEJ1aWxkIEhvc3Qgd2l0aAorICAgICAgICAgICAgICAgICAgICBDUk9QUywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2UtY3JvcHMnPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5XaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggKFdTTHYyKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbWF5IHVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgdG8gc2V0IHVwIGEgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgaG9zdCB1c2luZyBXaW5kb3dzIDEwLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTHYxLCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkCisgICAgICAgICAgICAgICAgICAgICAgd2l0aCBXU0x2MiwgaWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlCisgICAgICAgICAgICAgICAgICAgICAgdG8gV1NMdjIuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCBhbGxvd3MgV2luZG93cyAxMCB0byBydW4gYSByZWFsCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGtlcm5lbCBpbnNpZGUgb2YgYSBsaWdodHdlaWdodCB1dGlsaXR5IHZpcnR1YWwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSAoVk0pIHVzaW5nIHZpcnR1YWxpemF0aW9uIHRlY2hub2xvZ3kuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhIEJ1aWxkIEhvc3Qgd2l0aAorICAgICAgICAgICAgICAgICAgICBXU0x2Miwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2Utd3NsJz5TZXR0aW5nIFVwIHRvIFVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXg8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB3aGF0IHlvdXIgQnVpbGQgSG9zdCBpcyBydW5uaW5nLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHVzZSBUb2FzdGVyIHRvIGRldmVsb3Agc29mdHdhcmUgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW4tRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBpbnRlcmZhY2UgZW5hYmxlcyB5b3UgdG8gY29uZmlndXJlIGFuZCBydW4geW91cgorICAgICAgICAgICAgICAgICAgICBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IGJ1aWxkcyBpcyBjb2xsZWN0ZWQgYW5kIHN0b3JlZCBpbiBhCisgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBUb2FzdGVyIHRvIGNvbmZpZ3VyZSBhbmQgc3RhcnQgYnVpbGRzIG9uCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHJlbW90ZSBidWlsZCBzZXJ2ZXJzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gYWJvdXQgYW5kIGhvdyB0byB1c2UgVG9hc3RlciwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmZXJlbmNlLWVtYmVkZGVkLWRpc3RyaWJ1dGlvbic+CisgICAgICAgIDx0aXRsZT5SZWZlcmVuY2UgRW1iZWRkZWQgRGlzdHJpYnV0aW9uIChQb2t5KTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAiUG9reSIsIHdoaWNoIGlzIHByb25vdW5jZWQgPGVtcGhhc2lzPlBvY2s8L2VtcGhhc2lzPi1lZSwgaXMgdGhlCisgICAgICAgICAgICBuYW1lIG9mIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbiBvciBSZWZlcmVuY2UgT1MKKyAgICAgICAgICAgIEtpdC4KKyAgICAgICAgICAgIFBva3kgY29udGFpbnMgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4gYW5kCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZTwvdWxpbms+KQorICAgICAgICAgICAgYXMgd2VsbCBhcyBhIHNldCBvZgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPm1ldGFkYXRhPC91bGluaz4gdG8gZ2V0CisgICAgICAgICAgICB5b3Ugc3RhcnRlZCBidWlsZGluZyB5b3VyIG93biBkaXN0cm8uCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgUG9reSBpcyBhIGJhc2Ugc3BlY2lmaWNhdGlvbiBvZiB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgbmVlZGVkIGZvciBhIHR5cGljYWwgZW1iZWRkZWQgc3lzdGVtIGFzIHdlbGwgYXMgdGhlIGNvbXBvbmVudHMKKyAgICAgICAgICAgIGZyb20gdGhlIFlvY3RvIFByb2plY3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYSBkaXN0cmlidXRpb24gaW50bworICAgICAgICAgICAgYSB1c2FibGUgYmluYXJ5IGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQb2t5IGlzIGEgY29tYmluZWQgcmVwb3NpdG9yeSBvZiBCaXRCYWtlLCBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgKHdoaWNoIGlzIGZvdW5kIGluIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sIGFuZCBkb2N1bWVudGF0aW9uIHByb3ZpZGVkCisgICAgICAgICAgICBhbGwgdG9nZXRoZXIgYW5kIGtub3duIHRvIHdvcmsgd2VsbCB0b2dldGhlci4KKyAgICAgICAgICAgIFlvdSBjYW4gdmlldyB0aGVzZSBpdGVtcyB0aGF0IG1ha2UgdXAgdGhlIFBva3kgcmVwb3NpdG9yeSBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8nPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBhbGwgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUnPlRvcC1MZXZlbCBDb3JlIENvbXBvbmVudHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYSBpZD0nZ3MtcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uJz4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIGlsbHVzdHJhdGVzIHdoYXQgZ2VuZXJhbGx5IGNvbXByaXNlcyBQb2t5OgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmciIGZvcm1hdD0iUE5HIiBhbGlnbj0nY2VudGVyJyB3aWR0aD0iOGluIi8+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBhIHRhc2sgZXhlY3V0b3IgYW5kIHNjaGVkdWxlciB0aGF0IGlzIHRoZSBoZWFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIHdoaWNoIGlzIFBva3ktc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sIHdoaWNoIGFyZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LXNwZWNpZmljIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKSBtZXRhZGF0YSwgd2hpY2ggaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGNvbmZpZ3VyYXRpb25zLCBnbG9iYWwgdmFyaWFibGUgZGVmaW5pdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjbGFzc2VzLCBwYWNrYWdpbmcsIGFuZCByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBDbGFzc2VzIGRlZmluZSB0aGUgZW5jYXBzdWxhdGlvbiBhbmQgaW5oZXJpdGFuY2Ugb2YgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgbG9naWMuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgYXJlIHRoZSBsb2dpY2FsIHVuaXRzIG9mIHNvZnR3YXJlIGFuZCBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiwgd2hpY2ggY29udGFpbnMgdGhlIFlvY3RvIFByb2plY3Qgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIHVzZWQgdG8gbWFrZSB0aGUgc2V0IG9mIHVzZXIgbWFudWFscy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFdoaWxlIFBva3kgaXMgYSAiY29tcGxldGUiIGRpc3RyaWJ1dGlvbiBzcGVjaWZpY2F0aW9uIGFuZCBpcworICAgICAgICAgICAgICAgIHRlc3RlZCBhbmQgcHV0IHRocm91Z2ggUUEsIHlvdSBjYW5ub3QgdXNlIGl0IGFzIGEgcHJvZHVjdAorICAgICAgICAgICAgICAgICJvdXQgb2YgdGhlIGJveCIgaW4gaXRzIGN1cnJlbnQgZm9ybS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvb2xzLCB5b3UgY2FuIHVzZSBHaXQgdG8gY2xvbmUgKGRvd25sb2FkKQorICAgICAgICAgICAgdGhlIFBva3kgcmVwb3NpdG9yeSB0aGVuIHVzZSB5b3VyIGxvY2FsIGNvcHkgb2YgdGhlIHJlZmVyZW5jZQorICAgICAgICAgICAgZGlzdHJpYnV0aW9uIHRvIGJvb3RzdHJhcCB5b3VyIG93biBkaXN0cmlidXRpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBQb2t5IGRvZXMgbm90IGNvbnRhaW4gYmluYXJ5IGZpbGVzLgorICAgICAgICAgICAgICAgIEl0IGlzIGEgd29ya2luZyBleGFtcGxlIG9mIGhvdyB0byBidWlsZCB5b3VyIG93biBjdXN0b20gTGludXggZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgZnJvbSBzb3VyY2UuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFBva3kgaGFzIGEgcmVndWxhciwgd2VsbCBlc3RhYmxpc2hlZCwgc2l4LW1vbnRoIHJlbGVhc2UgY3ljbGUKKyAgICAgICAgICAgIHVuZGVyIGl0cyBvd24gdmVyc2lvbi4KKyAgICAgICAgICAgIE1ham9yIHJlbGVhc2VzIG9jY3VyIGF0IHRoZSBzYW1lIHRpbWUgbWFqb3IgcmVsZWFzZXMgKHBvaW50CisgICAgICAgICAgICByZWxlYXNlcykgb2NjdXIgZm9yIHRoZSBZb2N0byBQcm9qZWN0LCB3aGljaCBhcmUgdHlwaWNhbGx5IGluIHRoZQorICAgICAgICAgICAgU3ByaW5nIGFuZCBGYWxsLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZSBzY2hlZHVsZSBhbmQKKyAgICAgICAgICAgIGNhZGVuY2UsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtcmVsZWFzZS1wcm9jZXNzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2VzIGFuZCB0aGUgU3RhYmxlIFJlbGVhc2UgUHJvY2VzczwvdWxpbms+IgorICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNdWNoIGhhcyBiZWVuIHNhaWQgYWJvdXQgUG9reSBiZWluZyBhICJkZWZhdWx0IGNvbmZpZ3VyYXRpb24uIgorICAgICAgICAgICAgQSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgYSBzdGFydGluZyBpbWFnZSBmb290cHJpbnQuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBQb2t5IG91dCBvZiB0aGUgYm94IHRvIGNyZWF0ZSBhbiBpbWFnZSByYW5naW5nIGZyb20gYQorICAgICAgICAgICAgc2hlbGwtYWNjZXNzaWJsZSBtaW5pbWFsIGltYWdlIGFsbCB0aGUgd2F5IHVwIHRvIGEgTGludXgKKyAgICAgICAgICAgIFN0YW5kYXJkIEJhc2UtY29tcGxpYW50IGltYWdlIHRoYXQgdXNlcyBhIEdOT01FIE1vYmlsZSBhbmQKKyAgICAgICAgICAgIEVtYmVkZGVkIChHTUFFKSBiYXNlZCByZWZlcmVuY2UgdXNlciBpbnRlcmZhY2UgY2FsbGVkIFNhdG8uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBvZiB0aGUgbW9zdCBwb3dlcmZ1bCBwcm9wZXJ0aWVzIG9mIFBva3kgaXMgdGhhdCBldmVyeSBhc3BlY3QKKyAgICAgICAgICAgIG9mIGEgYnVpbGQgaXMgY29udHJvbGxlZCBieSB0aGUgbWV0YWRhdGEuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBtZXRhZGF0YSB0byBhdWdtZW50IHRoZXNlIGJhc2UgaW1hZ2UgdHlwZXMgYnkKKyAgICAgICAgICAgIGFkZGluZyBtZXRhZGF0YQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPmxheWVyczwvbGluaz4KKyAgICAgICAgICAgIHRoYXQgZXh0ZW5kIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBUaGVzZSBsYXllcnMgY2FuIHByb3ZpZGUsIGZvciBleGFtcGxlLCBhbiBhZGRpdGlvbmFsIHNvZnR3YXJlCisgICAgICAgICAgICBzdGFjayBmb3IgYW4gaW1hZ2UgdHlwZSwgYWRkIGEgYm9hcmQgc3VwcG9ydCBwYWNrYWdlIChCU1ApIGZvcgorICAgICAgICAgICAgYWRkaXRpb25hbCBoYXJkd2FyZSwgb3IgZXZlbiBjcmVhdGUgYSBuZXcgaW1hZ2UgdHlwZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWV0YWRhdGEgaXMgbG9vc2VseSBncm91cGVkIGludG8gY29uZmlndXJhdGlvbiBmaWxlcyBvciBwYWNrYWdlCisgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgQSByZWNpcGUgaXMgYSBjb2xsZWN0aW9uIG9mIG5vbi1leGVjdXRhYmxlIG1ldGFkYXRhIHVzZWQgYnkKKyAgICAgICAgICAgIEJpdEJha2UgdG8gc2V0IHZhcmlhYmxlcyBvciBkZWZpbmUgYWRkaXRpb25hbCBidWlsZC10aW1lIHRhc2tzLgorICAgICAgICAgICAgQSByZWNpcGUgY29udGFpbnMgZmllbGRzIHN1Y2ggYXMgdGhlIHJlY2lwZSBkZXNjcmlwdGlvbiwgdGhlIHJlY2lwZQorICAgICAgICAgICAgdmVyc2lvbiwgdGhlIGxpY2Vuc2Ugb2YgdGhlIHBhY2thZ2UgYW5kIHRoZSB1cHN0cmVhbSBzb3VyY2UKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBBIHJlY2lwZSBtaWdodCBhbHNvIGluZGljYXRlIHRoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyBhdXRvdG9vbHMsCisgICAgICAgICAgICBtYWtlLCBkaXN0dXRpbHMgb3IgYW55IG90aGVyIGJ1aWxkIHByb2Nlc3MsIGluIHdoaWNoIGNhc2UgdGhlIGJhc2ljCisgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBjbGFzc2VzIGl0IGluaGVyaXRzIGZyb20KKyAgICAgICAgICAgIHRoZSBPRS1Db3JlIGxheWVyJ3MgY2xhc3MgZGVmaW5pdGlvbnMgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT4uL21ldGEvY2xhc3NlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlIHlvdSBjYW4gYWxzbyBkZWZpbmUgYWRkaXRpb25hbCB0YXNrcyBhcyB3ZWxsIGFzCisgICAgICAgICAgICB0YXNrIHByZXJlcXVpc2l0ZXMuCisgICAgICAgICAgICBSZWNpcGUgc3ludGF4IHRocm91Z2ggQml0QmFrZSBhbHNvIHN1cHBvcnRzIGJvdGgKKyAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICBvcGVyYXRvcnMgYXMgYSBtZXRob2Qgb2YgZXh0ZW5kaW5nIHRhc2sgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIFRoZXNlIG9wZXJhdG9ycyBpbmplY3QgY29kZSBpbnRvIHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGEgdGFzay4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBCaXRCYWtlIG9wZXJhdG9ycywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYXBwZW5kaW5nLWFuZC1wcmVwZW5kaW5nLW92ZXJyaWRlLXN0eWxlLXN5bnRheCc+QXBwZW5kaW5nIGFuZCBQcmVwZW5kaW5nIChPdmVycmlkZSBTdHlsZSBTeW50YXgpPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIncyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3BlbmVtYmVkZGVkLWJ1aWxkLXN5c3RlbS13b3JrZmxvdyc+CisgICAgICAgIDx0aXRsZT5UaGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBXb3JrZmxvdzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgIHVzZXMgYSAid29ya2Zsb3ciIHRvIGFjY29tcGxpc2ggaW1hZ2UgYW5kIFNESyBnZW5lcmF0aW9uLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgb3ZlcnZpZXdzIHRoYXQgd29ya2Zsb3c6CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyIKKyAgICAgICAgICAgICAgICBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgYnJpZWYgc3VtbWFyeSBvZiB0aGUgIndvcmtmbG93IjoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcnMgc3BlY2lmeSBhcmNoaXRlY3R1cmUsIHBvbGljaWVzLCBwYXRjaGVzIGFuZAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRldGFpbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBmZXRjaGVzIGFuZCBkb3dubG9hZHMgdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBzdGFuZGFyZCBtZXRob2RzIHN1Y2ggYXMgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAgICAgb3Igc291cmNlIGNvZGUgcmVwb3NpdG9yaWVzIHN5c3RlbXMgc3VjaCBhcyBHaXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBzb3VyY2UgY29kZSBpcyBkb3dubG9hZGVkLCB0aGUgYnVpbGQgc3lzdGVtIGV4dHJhY3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2VzIGludG8gYSBsb2NhbCB3b3JrIGFyZWEgd2hlcmUgcGF0Y2hlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgYXBwbGllZCBhbmQgY29tbW9uIHN0ZXBzIGZvciBjb25maWd1cmluZyBhbmQgY29tcGlsaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb2Z0d2FyZSBhcmUgcnVuLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdGhlbiBpbnN0YWxscyB0aGUgc29mdHdhcmUgaW50byBhCisgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBzdGFnaW5nIGFyZWEgd2hlcmUgdGhlIGJpbmFyeSBwYWNrYWdlIGZvcm1hdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0IChERUIsIFJQTSwgb3IgSVBLKSBpcyB1c2VkIHRvIHJvbGwgdXAgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERpZmZlcmVudCBRQSBhbmQgc2FuaXR5IGNoZWNrcyBydW4gdGhyb3VnaG91dCBlbnRpcmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgYmluYXJpZXMgYXJlIGNyZWF0ZWQsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGEgYmluYXJ5IHBhY2thZ2UgZmVlZCB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCByb290IGZpbGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgdGhlIGZpbGUgc3lzdGVtIGltYWdlIGFuZCBhCisgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgRXh0ZW5zaWJsZSBTREsgKGVTREspIGZvciBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBpbiBwYXJhbGxlbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgYSB2ZXJ5IGRldGFpbGVkIGxvb2sgYXQgdGhpcyB3b3JrZmxvdywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J29wZW5lbWJlZGRlZC1idWlsZC1zeXN0ZW0tYnVpbGQtY29uY2VwdHMnPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW0gQ29uY2VwdHM8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworCisgICAgPHNlY3Rpb24gaWQ9J3NvbWUtYmFzaWMtdGVybXMnPgorICAgICAgICA8dGl0bGU+U29tZSBCYXNpYyBUZXJtczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBoZWxwcyB0byB1bmRlcnN0YW5kIHNvbWUgYmFzaWMgZnVuZGFtZW50YWwgdGVybXMgd2hlbgorICAgICAgICAgICAgbGVhcm5pbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBBbHRob3VnaCBhIGxpc3Qgb2YgdGVybXMgZXhpc3RzIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10ZXJtcyc+WW9jdG8gUHJvamVjdCBUZXJtczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLCB0aGlzIHNlY3Rpb24KKyAgICAgICAgICAgIHByb3ZpZGVzIHRoZSBkZWZpbml0aW9ucyBvZiBzb21lIHRlcm1zIGhlbHBmdWwgZm9yIGdldHRpbmcgc3RhcnRlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGaWxlcyB0aGF0IGhvbGQgZ2xvYmFsIGRlZmluaXRpb25zIG9mIHZhcmlhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgdXNlci1kZWZpbmVkIHZhcmlhYmxlcywgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIHRlbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuLUVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHdoYXQgdG8gYnVpbGQgYW5kIHdoYXQgdG8gcHV0IGludG8gdGhlIGltYWdlIHRvIHN1cHBvcnQgYQorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHBsYXRmb3JtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBjdXN0b20gU0RLIGZvciBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGVTREsgYWxsb3dzIGRldmVsb3BlcnMgdG8gaW5jb3Jwb3JhdGUgdGhlaXIgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICBhbmQgcHJvZ3JhbW1pbmcgY2hhbmdlcyBiYWNrIGludG8gdGhlIGltYWdlIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgdGhlaXIgY29kZSBhdmFpbGFibGUgdG8gb3RoZXIgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBlU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIGNvbGxlY3Rpb24gb2YgcmVsYXRlZCByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYWxsb3cgeW91IHRvIGNvbnNvbGlkYXRlIHJlbGF0ZWQgbWV0YWRhdGEgdG8KKyAgICAgICAgICAgICAgICAgICAgY3VzdG9taXplIHlvdXIgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIExheWVycyBhbHNvIGlzb2xhdGUgaW5mb3JtYXRpb24gdXNlZCB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIGZvciBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGhpZXJhcmNoaWNhbCBpbiB0aGVpciBhYmlsaXR5IHRvIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIHNwZWNpZmljYXRpb25zLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGluY2x1ZGUgYW55IG51bWJlciBvZiBhdmFpbGFibGUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYW5kIGN1c3RvbWl6ZSB0aGUgYnVpbGQgYnkgYWRkaW5nIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJzIGFmdGVyIHRoZW0uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VhcmNoIHRoZSBMYXllciBJbmRleCBmb3IgbGF5ZXJzIHVzZWQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBhIGRpc2N1c3Npb24gc3BlY2lmaWNhbGx5IG9uIEJTUCBMYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApCisgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIGtleSBlbGVtZW50IG9mIHRoZSBZb2N0byBQcm9qZWN0IGlzIHRoZSBNZXRhZGF0YSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgdG8gY29uc3RydWN0IGEgTGludXggZGlzdHJpYnV0aW9uIGFuZCBpcyBjb250YWluZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGZpbGVzIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcGFyc2VzCisgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIE1ldGFkYXRhIGluY2x1ZGVzIHJlY2lwZXMsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZXMsIGFuZCBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHJlZmVycyB0byB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zIHRoZW1zZWx2ZXMsIGFzIHdlbGwgYXMgdGhlIGRhdGEgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICBjb250cm9sIHdoYXQgdGhpbmdzIGdldCBidWlsdCBhbmQgdGhlIGVmZmVjdHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbHNvIGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBkYXRhIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGUgd2hhdCB2ZXJzaW9ucyBvZiBzb2Z0d2FyZSBhcmUgdXNlZCwgZnJvbQorICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGV5IGFyZSBvYnRhaW5lZCwgYW5kIGNoYW5nZXMgb3IgYWRkaXRpb25zIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBpdHNlbGYgKHBhdGNoZXMgb3IgYXV4aWxpYXJ5IGZpbGVzKSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGFyZSB1c2VkIHRvIGZpeCBidWdzIG9yIGN1c3RvbWl6ZSB0aGUgc29mdHdhcmUgZm9yIHVzZQorICAgICAgICAgICAgICAgICAgICBpbiBhIHBhcnRpY3VsYXIgc2l0dWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBpcyBhbiBpbXBvcnRhbnQgc2V0IG9mIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdncy10ZXJtLW9wZW5lbWJlZGRlZC1idWlsZC1zeXN0ZW0nPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgdGVybXMgIkJpdEJha2UiIGFuZCAiYnVpbGQgc3lzdGVtIiBhcmUgc29tZXRpbWVzCisgICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIHRoZSBPcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5CaXRCYWtlIGlzIGEgdGFzayBzY2hlZHVsZXIgYW5kIGV4ZWN1dGlvbiBlbmdpbmUKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBwYXJzZXMgaW5zdHJ1Y3Rpb25zIChpLmUuIHJlY2lwZXMpIGFuZCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGRhdGEuCisgICAgICAgICAgICAgICAgICAgIEFmdGVyIGEgcGFyc2luZyBwaGFzZSwgQml0QmFrZSBjcmVhdGVzIGEgZGVwZW5kZW5jeSB0cmVlCisgICAgICAgICAgICAgICAgICAgIHRvIG9yZGVyIHRoZSBjb21waWxhdGlvbiwgc2NoZWR1bGVzIHRoZSBjb21waWxhdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgaW5jbHVkZWQgY29kZSwgYW5kIGZpbmFsbHkgZXhlY3V0ZXMgdGhlIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgY3VzdG9tIExpbnV4IGltYWdlIChkaXN0cmlidXRpb24pLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIHNpbWlsYXIgdG8gdGhlIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG9vbC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+RHVyaW5nIGEgYnVpbGQgcHJvY2VzcywgdGhlIGJ1aWxkIHN5c3RlbSB0cmFja3MKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGFuZCBwZXJmb3JtcyBhIG5hdGl2ZSBvciBjcm9zcy1jb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQXMgYSBmaXJzdCBzdGVwIGluIGEgY3Jvc3MtYnVpbGQgc2V0dXAsIHRoZSBmcmFtZXdvcmsKKyAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdHMgdG8gY3JlYXRlIGEgY3Jvc3MtY29tcGlsZXIgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgIChpLmUuIEV4dGVuc2libGUgU0RLKSBzdWl0ZWQgZm9yIHRoZSB0YXJnZXQgcGxhdGZvcm0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIG1ldGFkYXRhIGNvbXByaXNlZCBvZiBmb3VuZGF0aW9uIHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsIGFuZCBhc3NvY2lhdGVkIGZpbGVzIHRoYXQgYXJlIG1lYW50IHRvIGJlCisgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBhbW9uZyBtYW55IGRpZmZlcmVudCBPcGVuRW1iZWRkZWQtZGVyaXZlZCBzeXN0ZW1zLAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIE9FLUNvcmUgaXMgYSBjdXJhdGVkIHN1YnNldCBvZiBhbiBvcmlnaW5hbCByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eSB0aGF0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHBhcmVkIGRvd24gaW50byBhIHNtYWxsZXIsIGNvcmUgc2V0IG9mIGNvbnRpbnVvdXNseQorICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIHRpZ2h0bHkgY29udHJvbGxlZCBhbmQgcXVhbGl0eS1hc3N1cmVkCisgICAgICAgICAgICAgICAgICAgIGNvcmUgc2V0IG9mIHJlY2lwZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gc2VlIHRoZSBNZXRhZGF0YSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2knPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGNvbnRleHQgb2YgdGhlIFlvY3RvIFByb2plY3QsIHRoaXMgdGVybSByZWZlcnMgdG8gYQorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBwYWNrYWdlZCBvdXRwdXQgcHJvZHVjZWQgYnkgQml0QmFrZSAoaS5lLiBhCisgICAgICAgICAgICAgICAgICAgICJiYWtlZCByZWNpcGUiKS4KKyAgICAgICAgICAgICAgICAgICAgQSBwYWNrYWdlIGlzIGdlbmVyYWxseSB0aGUgY29tcGlsZWQgYmluYXJpZXMgcHJvZHVjZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3Mgc291cmNlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91ICJiYWtlIiBzb21ldGhpbmcgYnkgcnVubmluZyBpdCB0aHJvdWdoIEJpdEJha2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSB0ZXJtICJwYWNrYWdlIiBjYW4sCisgICAgICAgICAgICAgICAgICAgIGluIGdlbmVyYWwsIGhhdmUgc3VidGxlIG1lYW5pbmdzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHBhY2thZ2VzIHJlZmVycmVkIHRvIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1idWlsZC1ob3N0Jz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFyZSBjb21waWxlZAorICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91cgorICAgICAgICAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFub3RoZXIgcG9pbnQgd29ydGggbm90aW5nIGlzIHRoYXQgaGlzdG9yaWNhbGx5IHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKKyAgICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0ZW5jZSBvZiBzZXZlcmFsIEJpdEJha2UgdmFyaWFibGVzIHRoYXQgYXJlIHNlZW1pbmdseQorICAgICAgICAgICAgICAgICAgICBtaXMtbmFtZWQsCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQb2t5IGlzIGEgcmVmZXJlbmNlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBhbmQgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBQb2t5IHByb3ZpZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBiYXNlLWxldmVsIGZ1bmN0aW9uYWwgZGlzdHJvIHVzZWQgdG8gaWxsdXN0cmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byBjdXN0b21pemUgYSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBtZWFucyBieSB3aGljaCB0byB0ZXN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyAoaS5lLiBQb2t5IGlzIHVzZWQgdG8gdmFsaWRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB2ZWhpY2xlIHRocm91Z2ggd2hpY2ggeW91IGNhbiBkb3dubG9hZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUG9reSBpcyBub3QgYSBwcm9kdWN0IGxldmVsIGRpc3Ryby4KKyAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgUG9reSBpcyBhbiBpbnRlZ3JhdGlvbiBsYXllciBvbiB0b3Agb2YgT0UtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIGZvcm0gb2YgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGNvbnRhaW5zIGEgbGlzdCBvZiBzZXR0aW5ncyBhbmQgdGFza3MKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gaW5zdHJ1Y3Rpb25zKSBmb3IgYnVpbGRpbmcgcGFja2FnZXMgdGhhdCBhcmUgdGhlbgorICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoZSBiaW5hcnkgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGRlc2NyaWJlcyB3aGVyZSB5b3UgZ2V0IHNvdXJjZSBjb2RlIGFuZCB3aGljaAorICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIHRvIGFwcGx5LgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGRlc2NyaWJlIGRlcGVuZGVuY2llcyBmb3IgbGlicmFyaWVzIG9yIGZvciBvdGhlcgorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBhbmQgY29tcGlsYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgUmVsYXRlZCByZWNpcGVzIGFyZSBjb25zb2xpZGF0ZWQgaW50byBhIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5yc3QKaW5kZXggZjIwYjIwZS4uODBjZTlhYSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDIxYTJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCkBAIC0wLDAgKzEsMTMwIEBACis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGJvb2sgaWQ9J292ZXJ2aWV3LW1hbnVhbCcgbGFuZz0nZW4nCisgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIKKyAgICAgIHhtbG5zPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgICAgID4KKyAgICA8Ym9va2luZm8+CisKKyAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0nZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKKyAgICAgICAgPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgorICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgorICAgICAgICAgICAgPC9hdXRob3I+CisgICAgICAgIDwvYXV0aG9yZ3JvdXA+CisKKyAgICAgICAgPHJldmhpc3Rvcnk+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTk8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICA8L3Jldmhpc3Rvcnk+CisKKyAgICA8Y29weXJpZ2h0PgorICAgICA8eWVhcj4mQ09QWVJJR0hUX1lFQVI7PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQgdW5kZXIKKyAgICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC91ay8iPgorICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5CisgICAgICAgICAgQ3JlYXRpdmUgQ29tbW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ib3ZlcnZpZXctbWFudWFsLWludHJvLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ib3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ib3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ib3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbCIgLz4KKworPC9ib29rPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQgYi9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWVjOGQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudApAQCAtMCwwICsxLDg5IEBACis8IUVOVElUWSBESVNUUk8gIjMuMSI+Cis8IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMzEiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJkdW5mZWxsIj4KKzwhRU5USVRZIERJU1RST19OQU1FICJEdW5mZWxsIj4KKzwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgInpldXMiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTUlOVVNfT05FICJaZXVzIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ19WRVJTSU9OICIzLjEiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FICIzLjAuMiI+Cis8IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMy4xIj4KKzwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjEyLjAiPgorPCFFTlRJVFkgUkVMX01PTlRIX1lFQVIgIkFwcmlsIDIwMjAiPgorPCFFTlRJVFkgTUVUQV9JTlRFTF9SRUxfVEFHICImTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTiAiMjMuMC4wIj4KKzwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjIzMDAiPgorPCFFTlRJVFkgWU9DVE9fUE9LWSAicG9reS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047Ij4KKzwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMjAiPgorPCFFTlRJVFkgT1JHTkFNRSAiVGhlIFlvY3RvIFByb2plY3QiPgorPCFFTlRJVFkgT1JHRU1BSUwgImRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZyI+Cis8IUVOVElUWSBZT0NUT19ETF9VUkwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyI+Cis8IUVOVElUWSBZT0NUT19IT01FX1VSTCAiaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnIj4KKzwhRU5USVRZIFlPQ1RPX0xJU1RTX1VSTCAiaHR0cDovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgWU9DVE9fQlVHWklMTEFfVVJMICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZyI+Cis8IUVOVElUWSBZT0NUT19XSUtJX1VSTCAiaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgWU9DVE9fQUJfVVJMICJodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyI+Cis8IUVOVElUWSBZT0NUT19HSVRfVVJMICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgWU9DVE9fQURUUkVQT19VUkwgImh0dHA6Ly9hZHRyZXBvLnlvY3RvcHJvamVjdC5vcmciPgorPCFFTlRJVFkgT0VfSE9NRV9VUkwgImh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZyI+Cis8IUVOVElUWSBPRV9MSVNUU19VUkwgImh0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4iPgorPCFFTlRJVFkgT0VfRE9DU19VUkwgImh0dHA6Ly9kb2NzLm9wZW5lbWJlZGRlZC5vcmciPgorPCFFTlRJVFkgT0hfSE9NRV9VUkwgImh0dHA6Ly9vLWhhbmQuY29tIj4KKzwhRU5USVRZIEJJVEJBS0VfSE9NRV9VUkwgImh0dHA6Ly9kZXZlbG9wZXIuYmVybGlvcy5kZS9wcm9qZWN0cy9iaXRiYWtlLyI+Cis8IUVOVElUWSBZT0NUT19ET0NTX1VSTCAiJllPQ1RPX0hPTUVfVVJMOy9kb2NzIj4KKzwhRU5USVRZIFlPQ1RPX1NPVVJDRVNfVVJMICImWU9DVE9fSE9NRV9VUkw7L3NvdXJjZXMvIj4KKzwhRU5USVRZIFlPQ1RPX0FCX1BPUlRfVVJMICJodHRwczovL2F1dG9idWlsZGVyLnlvY3RvLmlvLyI+Cis8IUVOVElUWSBZT0NUT19BQl9OSUdIVExZX1VSTCAiJllPQ1RPX0FCX1BPUlRfVVJMOy9wdWIvbmlnaHRseS8iPgorPCFFTlRJVFkgWU9DVE9fUE9LWV9VUkwgIiZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3Bva3kvIj4KKzwhRU5USVRZIFlPQ1RPX1JFTEVBU0VfRExfVVJMICImWU9DVE9fRExfVVJMOy9yZWxlYXNlcy95b2N0by95b2N0by0mRElTVFJPOyI+Cis8IUVOVElUWSBZT0NUT19UT09MQ0hBSU5fRExfVVJMICImWU9DVE9fUkVMRUFTRV9ETF9VUkw7L3Rvb2xjaGFpbi8iPgorPCFFTlRJVFkgWU9DVE9fQURUSU5TVEFMTEVSX0RMX1VSTCAiJllPQ1RPX1JFTEVBU0VfRExfVVJMOy9hZHQtaW5zdGFsbGVyIj4KKzwhRU5USVRZIFlPQ1RPX1BPS1lfRExfVVJMICImWU9DVE9fUkVMRUFTRV9ETF9VUkw7LyZZT0NUT19QT0tZOy50YXIuYnoyIj4KKzwhRU5USVRZIFlPQ1RPX01BQ0hJTkVTX0RMX1VSTCAiJllPQ1RPX1JFTEVBU0VfRExfVVJMOy9tYWNoaW5lcyI+Cis8IUVOVElUWSBZT0NUT19RRU1VX0RMX1VSTCAiJllPQ1RPX01BQ0hJTkVTX0RMX1VSTDsvcWVtdSI+Cis8IUVOVElUWSBZT0NUT19QWVRIT04taTY4Nl9ETF9VUkwgIiZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL21pc2NzdXBwb3J0L3B5dGhvbi1uYXRpdmVzZGstc3RhbmRhbG9uZS1pNjg2LnRhci5iejIiPgorPCFFTlRJVFkgWU9DVE9fUFlUSE9OLXg4Nl82NF9ETF9VUkwgIiZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL21pc2NzdXBwb3J0L3B5dGhvbi1uYXRpdmVzZGstc3RhbmRhbG9uZS14ODZfNjQudGFyLmJ6MiI+Cis8IUVOVElUWSBZT0NUT19ET0NTX1FTX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfQURUX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L2FkdC1tYW51YWwvYWR0LW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfUkVGX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfQlNQX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCI+Cis8IUVOVElUWSBZT0NUT19ET0NTX0RFVl9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCI+Cis8IUVOVElUWSBZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiPgorPCFFTlRJVFkgWU9DVE9fRE9DU19QUk9GX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiPgorPCFFTlRJVFkgWU9DVE9fRE9DU19NTV9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfQkJfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwiPgorPCFFTlRJVFkgWU9DVE9fRE9DU19UT0FTVF9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfU0RLX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfT01fVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfQlJJRUZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCI+Cis8IUVOVElUWSBZT0NUT19BRFRQQVRIX0RJUiAiL29wdC9wb2t5LyZESVNUUk87Ij4KKzwhRU5USVRZIFlPQ1RPX1BPS1lfVEFSQkFMTCAiJllPQ1RPX1BPS1k7LnRhci5iejIiPgorPCFFTlRJVFkgT0VfSU5JVF9QQVRIICImWU9DVE9fUE9LWTsvb2UtaW5pdC1idWlsZC1lbnYiPgorPCFFTlRJVFkgT0VfSU5JVF9GSUxFICJvZS1pbml0LWJ1aWxkLWVudiI+Cis8IUVOVElUWSBVQlVOVFVfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgImdhd2sgd2dldCBnaXQtY29yZSBkaWZmc3RhdCB1bnppcCB0ZXhpbmZvIGdjYy1tdWx0aWxpYiBcCisgICAgIGJ1aWxkLWVzc2VudGlhbCBjaHJwYXRoIHNvY2F0IGNwaW8gcHl0aG9uMyBweXRob24zLXBpcCBweXRob24zLXBleHBlY3QgXAorICAgICB4ei11dGlscyBkZWJpYW51dGlscyBpcHV0aWxzLXBpbmcgcHl0aG9uMy1naXQgcHl0aG9uMy1qaW5qYTIgbGliZWdsMS1tZXNhIGxpYnNkbDEuMi1kZXYgXAorICAgICBweWxpbnQzIHh0ZXJtIHB5dGhvbjMtc3VidW5pdCBtZXNhLWNvbW1vbi1kZXYiPgorPCFFTlRJVFkgRkVET1JBX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICJnYXdrIG1ha2Ugd2dldCB0YXIgYnppcDIgZ3ppcCBweXRob24zIHVuemlwIHBlcmwgcGF0Y2ggXAorICAgICBkaWZmdXRpbHMgZGlmZnN0YXQgZ2l0IGNwcCBnY2MgZ2NjLWMrKyBnbGliYy1kZXZlbCB0ZXhpbmZvIGNocnBhdGggXAorICAgICBjY2FjaGUgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBwZXJsLWJpZ251bSBzb2NhdCBcCisgICAgIHB5dGhvbjMtcGV4cGVjdCBmaW5kdXRpbHMgd2hpY2ggZmlsZSBjcGlvIHB5dGhvbiBweXRob24zLXBpcCB4eiBweXRob24zLUdpdFB5dGhvbiBcCisgICAgIHB5dGhvbjMtamluamEyIFNETC1kZXZlbCB4dGVybSBycGNnZW4gbWVzYS1saWJHTC1kZXZlbCI+Cis8IUVOVElUWSBPUEVOU1VTRV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAicHl0aG9uIGdjYyBnY2MtYysrIGdpdCBjaHJwYXRoIG1ha2Ugd2dldCBweXRob24teG1sIFwKKyAgICAgZGlmZnN0YXQgbWFrZWluZm8gcHl0aG9uLWN1cnNlcyBwYXRjaCBzb2NhdCBweXRob24zIHB5dGhvbjMtY3Vyc2VzIHRhciBweXRob24zLXBpcCBcCisgICAgIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBweXRob24zLUppbmphMiBNZXNhLWxpYkVHTDEgbGliU0RMLWRldmVsIHh0ZXJtIHJwY2dlbiBNZXNhLWRyaS1kZXZlbAorICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiI+Cis8IUVOVElUWSBDRU5UT1M3X0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICIteSBlcGVsLXJlbGVhc2UKKyAgICAgJCBzdWRvIHl1bSBtYWtlY2FjaGUKKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIGdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbjMgdW56aXAgcGVybCBwYXRjaCBcCisgICAgIGRpZmZ1dGlscyBkaWZmc3RhdCBnaXQgY3BwIGdjYyBnY2MtYysrIGdsaWJjLWRldmVsIHRleGluZm8gY2hycGF0aCBzb2NhdCBcCisgICAgIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcHl0aG9uMzYtcGlwIHh6IFwKKyAgICAgd2hpY2ggU0RMLWRldmVsIHh0ZXJtIG1lc2EtbGliR0wtZGV2ZWwKKyAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gamluamEyIj4KKzwhRU5USVRZIENFTlRPUzhfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgIi15IGVwZWwtcmVsZWFzZQorICAgICAkIHN1ZG8gZG5mIGNvbmZpZy1tYW5hZ2VyIC0tc2V0LWVuYWJsZWQgUG93ZXJUb29scworICAgICAkIHN1ZG8gZG5mIG1ha2VjYWNoZQorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKKyAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIGNjYWNoZSBcCisgICAgIHNvY2F0IHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcHl0aG9uMy1waXAgXAorICAgICBweXRob24zLUdpdFB5dGhvbiBweXRob24zLWppbmphMiBweXRob24zLXBleHBlY3QgeHogd2hpY2ggU0RMLWRldmVsIHh0ZXJtIFwKKyAgICAgcnBjZ2VuIG1lc2EtbGliR0wtZGV2ZWwiPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL2hpc3RvcnkucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL2hpc3RvcnkucnN0CmluZGV4IDc2MWI1MDYuLjNmZmI3ZWEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9oaXN0b3J5LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvaGlzdG9yeS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqCiBNYW51YWwgUmV2aXNpb24gSGlzdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWFyY2gucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWFyY2gucnN0CmluZGV4IDczY2QwYzIuLjllMWU0MDAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1hcmNoLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtYXJjaC5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIE92ZXJhbGwgQXJjaGl0ZWN0dXJlIG9mIHRoZSBMaW51eCBUcmFjaW5nIGFuZCBQcm9maWxpbmcgVG9vbHMKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1hcmNoLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1hcmNoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWI3YmJmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWFyY2gueG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ncHJvZmlsZS1tYW51YWwtYXJjaCc+CisKKzx0aXRsZT5PdmVyYWxsIEFyY2hpdGVjdHVyZSBvZiB0aGUgTGludXggVHJhY2luZyBhbmQgUHJvZmlsaW5nIFRvb2xzPC90aXRsZT4KKworPHNlY3Rpb24gaWQ9J2FyY2hpdGVjdHVyZS1vZi10aGUtdHJhY2luZy1hbmQtcHJvZmlsaW5nLXRvb2xzJz4KKyAgICA8dGl0bGU+QXJjaGl0ZWN0dXJlIG9mIHRoZSBUcmFjaW5nIGFuZCBQcm9maWxpbmcgVG9vbHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEl0IG1heSBzZWVtIHN1cnByaXNpbmcgdG8gc2VlIGEgc2VjdGlvbiBjb3ZlcmluZyBhbiAnb3ZlcmFsbCBhcmNoaXRlY3R1cmUnCisgICAgICAgIGZvciB3aGF0IHNlZW1zIHRvIGJlIGEgcmFuZG9tIGNvbGxlY3Rpb24gb2YgdHJhY2luZyB0b29scyB0aGF0IHRvZ2V0aGVyCisgICAgICAgIG1ha2UgdXAgdGhlIExpbnV4IHRyYWNpbmcgYW5kIHByb2ZpbGluZyBzcGFjZS4KKyAgICAgICAgVGhlIGZhY3QgaXMsIGhvd2V2ZXIsIHRoYXQgaW4gcmVjZW50IHllYXJzIHRoaXMgc2VlbWluZ2x5IGRpc3BhcmF0ZQorICAgICAgICBzZXQgb2YgdG9vbHMgaGFzIHN0YXJ0ZWQgdG8gY29udmVyZ2Ugb24gYSAnY29yZScgc2V0IG9mIHVuZGVybHlpbmcKKyAgICAgICAgbWVjaGFuaXNtczoKKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5zdGF0aWMgdHJhY2Vwb2ludHM8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPmR5bmFtaWMgdHJhY2Vwb2ludHMKKyAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT5rcHJvYmVzPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT51cHJvYmVzPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPnRoZSBwZXJmX2V2ZW50cyBzdWJzeXN0ZW08L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPmRlYnVnZnM8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8ZW1waGFzaXM+VHlpbmcgaXQgVG9nZXRoZXI6PC9lbXBoYXNpcz4gUmF0aGVyIHRoYW4gZW51bWVyYXRpbmcgaGVyZSBob3cgZWFjaCB0b29sIG1ha2VzIHVzZSBvZgorICAgICAgICB0aGVzZSBjb21tb24gbWVjaGFuaXNtcywgdGV4dGJveGVzIGxpa2UgdGhpcyB3aWxsIG1ha2Ugbm90ZSBvZiB0aGUKKyAgICAgICAgc3BlY2lmaWMgdXNhZ2VzIGluIGVhY2ggdG9vbCBhcyB0aGV5IGNvbWUgdXAgaW4gdGhlIGNvdXJzZQorICAgICAgICBvZiB0aGUgdGV4dC4KKyAgICA8L2luZm9ybWFsZXhhbXBsZT4KKzwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OTVlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSIncHJvZmlsZS1tYW51YWwtc3R5bGUuY3NzJyIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaGFwdGVyLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImFwcGVuZGl4LmF1dG9sYWJlbCIgc2VsZWN0PSJBIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24uYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pZC5hdHRyaWJ1dGVzIiBzZWxlY3Q9IjEiIC8+CisKKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtZXhhbXBsZXMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWV4YW1wbGVzLnJzdAppbmRleCA5N2E5ZTllLi4zMmNjZDM3IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtZXhhbXBsZXMucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1leGFtcGxlcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioKIFJlYWwtV29ybGQgRXhhbXBsZXMKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1leGFtcGxlcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtZXhhbXBsZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZTA2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtZXhhbXBsZXMueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ncHJvZmlsZS1tYW51YWwtZXhhbXBsZXMnPgorCis8dGl0bGU+UmVhbC1Xb3JsZCBFeGFtcGxlczwvdGl0bGU+CisKKzxwYXJhPgorICAgIFRoaXMgY2hhcHRlciBjb250YWlucyByZWFsLXdvcmxkIGV4YW1wbGVzLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nc2xvdy13cml0ZS1zcGVlZC1vbi1saXZlLWltYWdlcyc+CisgICAgPHRpdGxlPlNsb3cgV3JpdGUgU3BlZWQgb24gTGl2ZSBJbWFnZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIG9uZSBvZiBvdXIgcHJldmlvdXMgcmVsZWFzZXMgKGRlbnppbCksIHVzZXJzIG5vdGljZWQgdGhhdCBib290aW5nCisgICAgICAgIG9mZiBvZiBhIGxpdmUgaW1hZ2UgYW5kIHdyaXRpbmcgdG8gZGlzayB3YXMgbm90aWNlYWJseSBzbG93ZXIuCisgICAgICAgIFRoaXMgaW5jbHVkZWQgdGhlIGJvb3QgaXRzZWxmLCBlc3BlY2lhbGx5IHRoZSBmaXJzdCBvbmUsIHNpbmNlIGZpcnN0CisgICAgICAgIGJvb3RzIHRlbmQgdG8gZG8gYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygd3JpdGluZyBkdWUgdG8gY2VydGFpbgorICAgICAgICBwb3N0LWluc3RhbGwgc2NyaXB0cy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHByb2JsZW0gKGFuZCBzb2x1dGlvbikgd2FzIGRpc2NvdmVyZWQgYnkgdXNpbmcgdGhlIFlvY3RvIHRyYWNpbmcKKyAgICAgICAgdG9vbHMsIGluIHRoaXMgY2FzZSAncGVyZiBzdGF0JywgJ3BlcmYgc2NyaXB0JywgJ3BlcmYgcmVjb3JkJworICAgICAgICBhbmQgJ3BlcmYgcmVwb3J0Jy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU2VlIGFsbCB0aGUgdW52YXJuaXNoZWQgZGV0YWlscyBvZiBob3cgdGhpcyBidWcgd2FzIGRpYWdub3NlZCBhbmQKKyAgICAgICAgc29sdmVkIGhlcmU6IFlvY3RvIEJ1ZyAjMzA0OQorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtaW50cm8ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWludHJvLnJzdAppbmRleCAwZDQzNWUwLi45OTRiMWM1IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtaW50cm8ucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1pbnRyby5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWludHJvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmQyZjgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWludHJvLnhtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdwcm9maWxlLW1hbnVhbC1pbnRybyc+CisKKzx0aXRsZT5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdwcm9maWxlLWludHJvJz4KKyAgICAgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb2N0byBidW5kbGVzIGEgbnVtYmVyIG9mIHRyYWNpbmcgYW5kIHByb2ZpbGluZyB0b29scyAtIHRoaXMgJ0hPV1RPJworICAgICAgICAgICAgZGVzY3JpYmVzIHRoZWlyIGJhc2ljIHVzYWdlIGFuZCBzaG93cyBieSBleGFtcGxlIGhvdyB0byBtYWtlIHVzZQorICAgICAgICAgICAgb2YgdGhlbSB0byBleGFtaW5lIGFwcGxpY2F0aW9uIGFuZCBzeXN0ZW0gYmVoYXZpb3IuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSB0b29scyBwcmVzZW50ZWQgYXJlIGZvciB0aGUgbW9zdCBwYXJ0IGNvbXBsZXRlbHkgb3Blbi1lbmRlZCBhbmQKKyAgICAgICAgICAgIGhhdmUgcXVpdGUgZ29vZCBhbmQvb3IgZXh0ZW5zaXZlIGRvY3VtZW50YXRpb24gb2YgdGhlaXIgb3duIHdoaWNoCisgICAgICAgICAgICBjYW4gYmUgdXNlZCB0byBzb2x2ZSBqdXN0IGFib3V0IGFueSBwcm9ibGVtIHlvdSBtaWdodCBjb21lIGFjcm9zcworICAgICAgICAgICAgaW4gTGludXguCisgICAgICAgICAgICBFYWNoIHNlY3Rpb24gdGhhdCBkZXNjcmliZXMgYSBwYXJ0aWN1bGFyIHRvb2wgaGFzIGxpbmtzIHRvIHRoYXQKKyAgICAgICAgICAgIHRvb2wncyBkb2N1bWVudGF0aW9uIGFuZCB3ZWJzaXRlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzICdIT1dUTycgaXMgdG8gcHJlc2VudCBhIHNldCBvZiBjb21tb24gYW5kCisgICAgICAgICAgICBnZW5lcmFsbHkgdXNlZnVsIHRyYWNpbmcgYW5kIHByb2ZpbGluZyBpZGlvbXMgYWxvbmcgd2l0aCB0aGVpcgorICAgICAgICAgICAgYXBwbGljYXRpb24gKGFzIGFwcHJvcHJpYXRlKSB0byBlYWNoIHRvb2wsIGluIHRoZSBjb250ZXh0IG9mIGEKKyAgICAgICAgICAgIGdlbmVyYWwtcHVycG9zZSAnZHJpbGwtZG93bicgbWV0aG9kb2xvZ3kgdGhhdCBjYW4gYmUgYXBwbGllZAorICAgICAgICAgICAgdG8gc29sdmluZyBhIGxhcmdlIG51bWJlciAoOTAlPykgb2YgcHJvYmxlbXMuCisgICAgICAgICAgICBGb3IgaGVscCB3aXRoIG1vcmUgYWR2YW5jZWQgdXNhZ2VzIGFuZCBwcm9ibGVtcywgcGxlYXNlIHNlZQorICAgICAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIHdlYnNpdGVzIGxpc3RlZCBmb3IgZWFjaCB0b29sLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZmluYWwgc2VjdGlvbiBvZiB0aGlzICdIT1dUTycgaXMgYSBjb2xsZWN0aW9uIG9mIHJlYWwtd29ybGQKKyAgICAgICAgICAgIGV4YW1wbGVzIHdoaWNoIHdlJ2xsIGJlIGNvbnRpbnVhbGx5IGFkZGluZyB0byBhcyB3ZSBzb2x2ZSBtb3JlCisgICAgICAgICAgICBwcm9ibGVtcyB1c2luZyB0aGUgdG9vbHMgLSBmZWVsIGZyZWUgdG8gYWRkIHlvdXIgb3duIGV4YW1wbGVzCisgICAgICAgICAgICB0byB0aGUgbGlzdCEKKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdwcm9maWxlLW1hbnVhbC1nZW5lcmFsLXNldHVwJz4KKyAgICAgICAgPHRpdGxlPkdlbmVyYWwgU2V0dXA8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTW9zdCBvZiB0aGUgdG9vbHMgYXJlIGF2YWlsYWJsZSBvbmx5IGluICdzZGsnIGltYWdlcyBvciBpbiBpbWFnZXMKKyAgICAgICAgICAgIGJ1aWx0IGFmdGVyIGFkZGluZyAndG9vbHMtcHJvZmlsZScgdG8geW91ciBsb2NhbC5jb25mLgorICAgICAgICAgICAgU28sIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gYWNjZXNzIGFsbCBvZiB0aGUgdG9vbHMgZGVzY3JpYmVkIGhlcmUsCisgICAgICAgICAgICBwbGVhc2UgZmlyc3QgYnVpbGQgYW5kIGJvb3QgYW4gJ3NkaycgaW1hZ2UgZS5nLgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvLXNkaworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgb3IgYWx0ZXJuYXRpdmVseSBieSBhZGRpbmcgJ3Rvb2xzLXByb2ZpbGUnIHRvIHRoZQorICAgICAgICAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgbGluZSBpbiB5b3VyIGxvY2FsLmNvbmY6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJkZWJ1Zy10d2Vha3MgdG9vbHMtcHJvZmlsZSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIElmIHlvdSB1c2UgdGhlICd0b29scy1wcm9maWxlJyBtZXRob2QsIHlvdSBkb24ndCBuZWVkIHRvIGJ1aWxkIGFuCisgICAgICAgICAgICBzZGsgaW1hZ2UgLSB0aGUgdHJhY2luZyBhbmQgcHJvZmlsaW5nIHRvb2xzIHdpbGwgYmUgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgIG5vbi1zZGsgaW1hZ2VzIGFzIHdlbGwgZS5nLjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+PHBhcmE+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIFlvY3RvIGJ1aWxkIHN5c3RlbSBzdHJpcHMgc3ltYm9scyBmcm9tIHRoZQorICAgICAgICAgICAgICAgIGJpbmFyaWVzIGl0IHBhY2thZ2VzLCB3aGljaCBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gdXNlIHNvbWUKKyAgICAgICAgICAgICAgICBvZiB0aGUgdG9vbHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjxwYXJhPllvdSBjYW4gcHJldmVudCB0aGF0IGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSElCSVRfUEFDS0FHRV9TVFJJUCc+PGZpbGVuYW1lPklOSElCSVRfUEFDS0FHRV9TVFJJUDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIgaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gd2hlbiB5b3UgYnVpbGQgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgYWJvdmUgc2V0dGluZyB3aWxsIG5vdGljZWFibHkgaW5jcmVhc2UgdGhlIHNpemUgb2YgeW91ciBpbWFnZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91J3ZlIGFscmVhZHkgYnVpbHQgYSBzdHJpcHBlZCBpbWFnZSwgeW91IGNhbiBnZW5lcmF0ZQorICAgICAgICAgICAgZGVidWcgcGFja2FnZXMgKHh4eC1kYmcpIHdoaWNoIHlvdSBjYW4gbWFudWFsbHkgaW5zdGFsbCBhcworICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBnZW5lcmF0ZSBkZWJ1ZyBpbmZvIGZvciBwYWNrYWdlcywgeW91IGNhbiBhZGQgZGJnLXBrZ3MgdG8KKyAgICAgICAgICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTIGluIGxvY2FsLmNvbmYuIEZvciBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJkZWJ1Zy10d2Vha3MgdG9vbHMtcHJvZmlsZSBkYmctcGtncyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIHJpZ2h0IHR5cGUgb2YKKyAgICAgICAgICAgIGRlYnVnaW5mbywgd2UgYWxzbyBuZWVkIHRvIHNldAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnPjxmaWxlbmFtZT5QQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRSA9ICdkZWJ1Zy1maWxlLWRpcmVjdG9yeScKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXN0eWxlLmNzcyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1zdHlsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwMmMxMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1zdHlsZS5jc3MKQEAgLTAsMCArMSw5ODcgQEAKKy8qCisKKyAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKKworICAgR2VuZXJpYyBYSFRNTCAvIERvY0Jvb2sgWEhUTUwgQ1NTIFN0eWxlc2hlZXQuCisKKyAgIEJyb3dzZXIgd3JhbmdsaW5nIGFuZCB0eXBvZ3JhcGhpYyBkZXNpZ24gYnkKKyAgICAgIE95dmluZCBLb2xhcyAvIHBpcHBpbkBnaW1wLm9yZworCisgICBDdXN0b21pc2VkIGZvciBQb2t5IGJ5CisgICAgICBNYXR0aGV3IEFsbHVtIC8gbWFsbHVtQG8taGFuZC5jb20KKworICAgVGhhbmtzIHRvOgorICAgICBMaWFtIFIuIEUuIFF1aW4KKyAgICAgV2lsbGlhbSBTa2FnZ3MKKyAgICAgSmFrdWIgU3RlaW5lcgorCisgICBTdHJ1Y3R1cmUKKyAgIC0tLS0tLS0tLQorCisgICBUaGUgc3R5bGVzaGVldCBpcyBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBzZWN0aW9uczoKKworICAgICAgIFBvc2l0aW9uaW5nCisgICAgICAgICAgTWFyZ2lucywgcGFkZGluZ3MsIHdpZHRoLCBmb250LXNpemUsIGNsZWFyaW5nLgorICAgICAgIERlY29yYXRpb25zCisgICAgICAgICAgQm9yZGVycywgc3R5bGUKKyAgICAgICBDb2xvcnMKKyAgICAgICAgICBDb2xvcnMKKyAgICAgICBHcmFwaGljcworICAgICAgICAgIEdyYXBoaWNhbCBiYWNrZ3JvdW5kcworICAgICAgIE5hc3R5IElFIHR3ZWFrcworICAgICAgICAgIFdvcmthcm91bmRzIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsgaW4gaW50ZXJuZXQgZXhwbG9yZXIsCisgICAgICAgICAgY3VycmVudGx5IG1ha2VzIHRoZSBzdHlsZXNoZWV0IG5vbiB2YWxpZGF0aW5nLCBidXQgdXAgdW50aWwKKyAgICAgICAgICB0aGlzIHBvaW50IGl0IGlzIHZhbGlkYXRpbmcuCisgICAgICAgTW96aWxsYSBleHRlbnNpb25zCisgICAgICAgICAgVHJhbnNwYXJlbmN5IGZvciBmb290ZXIKKwkgIFJvdW5kZWQgY29ybmVycyBvbiBib3hlcworCisqLworCisKKyAgLyoqKioqKioqKioqKioqKiAvCisgLyAgUG9zaXRpb25pbmcgICAvCisvICoqKioqKioqKioqKioqKi8KKworYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTYW5zLCBzYW5zLXNlcmlmOworCisgIG1pbi13aWR0aDogNjQwcHg7CisgIHdpZHRoOiA4MCU7CisgIG1hcmdpbjogIDBlbSBhdXRvOworICBwYWRkaW5nOiAyZW0gNWVtIDVlbSA1ZW07CisgIGNvbG9yOiAjMzMzOworfQorCitoMSxoMixoMyxoNCxoNSxoNixoNyB7CisgIGZvbnQtZmFtaWx5OiBBcmlhbCwgU2FuczsKKyAgY29sb3I6ICMwMDU1N0Q7CisgIGNsZWFyOiBib3RoOworfQorCitoMSB7CisgIGZvbnQtc2l6ZTogMmVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMmVtIDBlbSAwZW0gMGVtOworfQorCitoMi5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMC4xMGVtIDBlbSAzLjBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjhlbTsKKyAgcGFkZGluZy1sZWZ0OiAyMCU7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworaDIgeworICBtYXJnaW46IDJlbSAwZW0gMC42NmVtIDBlbTsKKyAgcGFkZGluZzogMC41ZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS41ZW07CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoMy5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQyLjE0JTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK2gzIHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0MCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNCB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDUgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g2IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLmF1dGhvcmdyb3VwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIHBhZGRpbmctdG9wOiAyNTZweDsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3Byb2ZpbGUtdGl0bGUucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOworICBtYXJnaW4tdG9wOiAtMjU2cHg7CisgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CisgIG1hcmdpbi1sZWZ0OiAwcHg7CisgIHRleHQtYWxpZ246IHJpZ2h0OworICB3aWR0aDogNzQwcHg7Cit9CisKK2gzLmF1dGhvciB7CisgIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc2l6ZTogMTAwJTsKKyAgY29sb3I6ICMzMzM7CisgIGNsZWFyOiBib3RoOworfQorCisuYXV0aG9yIHR0LmVtYWlsIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKKy50aXRsZXBhZ2UgaHIgeworICB3aWR0aDogMGVtOworICBjbGVhcjogYm90aDsKK30KKworLnJldmhpc3RvcnkgeworICBwYWRkaW5nLXRvcDogMmVtOworICBjbGVhcjogYm90aDsKK30KKworLnRvYywKKy5saXN0LW9mLXRhYmxlcywKKy5saXN0LW9mLWV4YW1wbGVzLAorLmxpc3Qtb2YtZmlndXJlcyB7CisgIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOworICBjb2xvcjogIzAwNTU3RDsKK30KKworLnRvYyBwLAorLmxpc3Qtb2YtdGFibGVzIHAsCisubGlzdC1vZi1maWd1cmVzIHAsCisubGlzdC1vZi1leGFtcGxlcyBwIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOworICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIHAgYiwKKy5saXN0LW9mLXRhYmxlcyBwIGIsCisubGlzdC1vZi1maWd1cmVzIHAgYiwKKy5saXN0LW9mLWV4YW1wbGVzIHAgYnsKKyAgZm9udC1zaXplOiAxMDAuMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisudG9jIGRsLAorLmxpc3Qtb2YtdGFibGVzIGRsLAorLmxpc3Qtb2YtZmlndXJlcyBkbCwKKy5saXN0LW9mLWV4YW1wbGVzIGRsIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGR0IHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkZCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2Lmdsb3NzYXJ5IGRsLAorZGl2LnZhcmlhYmxlbGlzdCBkbCB7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHdpZHRoOiAyMGVtOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnZhcmlhYmxlbGlzdCBkbCBkdCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworfQorCisuZ2xvc3NhcnkgZGwgZGQsCisudmFyaWFibGVsaXN0IGRsIGRkIHsKKyAgbWFyZ2luLXRvcDogLTFlbTsKKyAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKK30KKworLmdsb3NzYXJ5IGRkIHAsCisudmFyaWFibGVsaXN0IGRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYgcC5jb3B5cmlnaHQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7CisgIG1hcmdpbi1ib3R0b206IDBlbTsKK30KKworcCB7CisgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworCit9CisKK2RsIHsKKyAgcGFkZGluZy10b3A6IDBlbTsKK30KKworaHIgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworCisubWVkaWFvYmplY3QsCisubWVkaWFvYmplY3RjbyB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nIHsKKyAgYm9yZGVyOiBub25lOworfQorCit1bCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOworfQorCit1bCBsaSB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKwordWwgbGkgcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGggOjEwMCU7Cit9CisKK3RoIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworcCBhW2lkXSB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7CisgIGRpc3BsYXk6IGlubGluZTsKKyAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworYSB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBjb2xvcjogIzQ0NDsKK30KKworcHJlIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKK30KKworYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCit9CisKKy8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKKyAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCisgICB0aGUgbW91c2UuICovCisKK1thbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KK1thbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9CisKKworZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlIHsKKyAgbWFyZ2luOiAxZW0gMGVtOworICBwYWRkaW5nOiAxZW07CisgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworCitkaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCitkaXYuZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5leGFtcGxlIHAudGl0bGUgYiwKK2Rpdi50YWJsZSBwLnRpdGxlIGJ7CisgICAgcGFkZGluZy10b3A6IDBlbTsKKyAgICBtYXJnaW4tdG9wOiAwZW07CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiwKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKKyAgcGFkZGluZy1ib3R0b206IDAuNWVtOworfQorCisuZXBpZ3JhcGggeworICBwYWRkaW5nLWxlZnQ6IDU1JTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZXBpZ3JhcGggcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5lcGlncmFwaCAucXVvdGUgeworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisuZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKKyAgZm9udC1zdHlsZTogbm9ybWFsOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworc3Bhbi5hcHBsaWNhdGlvbiB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnByb2dyYW1saXN0aW5nIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgZm9udC1zaXplOiA4MCU7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIG1hcmdpbjogMS4zM2VtIDBlbTsKKyAgcGFkZGluZzogMS4zM2VtOworfQorCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgbWFyZ2luLXRvcDogMWVtOworICBtYXJnaW4tYm90dG9tOiAxZW07CisKK30KKworLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCisudGlwIHRhYmxlLAorLndhcm5pbmcgdGFibGUsCisuY2F1dGlvbiB0YWJsZSwKKy5ub3RlIHRhYmxlIHsKKyAgYm9yZGVyOiBub25lOworICB3aWR0aDogMTAwJTsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07CisgIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRpcCBwLAorLndhcm5pbmcgcCwKKy5jYXV0aW9uIHAsCisubm90ZSBwIHsKKyAgbWFyZ2luLXRvcDogMC41ZW07CisgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAxZW07CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5hY3JvbnltIHsKKyAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgcGFkZGluZzogMC4wOWVtIDAuM2VtOworICBtYXJnaW46IDBlbTsKK30KKworLml0ZW1pemVkbGlzdCBsaSB7CisgIGNsZWFyOiBub25lOworfQorCisuZmlsZW5hbWUgeworICBmb250LXNpemU6IG1lZGl1bTsKKyAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwZW07CisgIHRvcDogMGVtOworICB3aWR0aDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBwb3NpdGlvbjogZml4ZWQ7CisgIGxlZnQ6IDBlbTsKKyAgYm90dG9tOiAwZW07CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIHdpZHRoOiAxMDAlOworfQorCisKK2Rpdi5uYXZoZWFkZXIgdGQsCitkaXYubmF2Zm9vdGVyIHRkIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGggeworICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KKyAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KKyAgZm9udC1zaXplOiA4MCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLXRvcDogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItYm90dG9tOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgeworICBjb2xvcjogIzc3NzsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKKyAgY29sb3I6IGJsYWNrOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKKworLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgY29sb3I6ICMzM2E7Cit9CisKK2Rpdi5uYXZoZWFkZXIgaHIsCitkaXYubmF2Zm9vdGVyIGhyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCisucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisuYW5zd2VyIHRkIHsKKyAgcGFkZGluZy1ib3R0b206IDEuNWVtOworfQorCisuZW1waGFzaXMgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCisgIC8qKioqKioqKioqKioqIC8KKyAvIGRlY29yYXRpb25zICAvCisvICoqKioqKioqKioqKiovCisKKy50aXRsZXBhZ2UgeworfQorCisucGFydCAudGl0bGUgeworfQorCisuc3VidGl0bGUgeworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyoKK2gxIHsKKyAgYm9yZGVyOiBub25lOworfQorCitoMiB7CisgIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2gzIHsKKyAgYm9yZGVyLXRvcDogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g0IHsKKyAgYm9yZGVyOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDUgeworICBib3JkZXI6IDBlbTsKK30KKyovCisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworLnF1ZXN0aW9uIHRkIHsKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisuYW5zd2VyIHsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBib3JkZXItdG9wOiAxcHggc29saWQ7Cit9CisKKyAgLyoqKioqKioqKiAvCisgLyAgY29sb3JzICAvCisvICoqKioqKioqKi8KKworYm9keSB7CisgIGNvbG9yOiAjMzMzOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworYSB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCithOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKK30KKworCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoNywKK2g4IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2hyIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCisKKy50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgeworICBib3JkZXItY29sb3I6ICNmZmY7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cit9CisKKworLndhcm5pbmcgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy50aXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisubm90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGNvbG9yOiAjMDQ0OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKK3ByZS5wcm9ncmFtbGlzdGluZyB7CisgIGNvbG9yOiBibGFjazsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworICBib3JkZXItd2lkdGg6IDJweDsKK30KKworLmd1aW1lbnUsCisuZ3VpbGFiZWwsCisuZ3VpbWVudWl0ZW0geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIGJvcmRlci1jb2xvcjogIzk5OTsKK30KKworCitkaXYubmF2aGVhZGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCitkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCisgIC8qKioqKioqKioqKiAvCisgLyAgZ3JhcGhpY3MgIC8KKy8gKioqKioqKioqKiovCisKKy8qCitib2R5IHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvYm9keV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLm5hdmhlYWRlciwKKy5ub3RlLAorLnRpcCB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL25vdGVfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy53YXJuaW5nLAorLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy93YXJuaW5nX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisuZmlndXJlLAorLmluZm9ybWFsZmlndXJlLAorLmV4YW1wbGUsCisuaW5mb3JtYWxleGFtcGxlLAorLnRhYmxlLAorLmluZm9ybWFsdGFibGUgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9maWd1cmVfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKyovCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoN3sKK30KKworLyoKK0V4YW1wbGUgb2YgaG93IHRvIHN0aWNrIGFuIGltYWdlIGFzIHBhcnQgb2YgdGhlIHRpdGxlLgorCitkaXYuYXJ0aWNsZSAudGl0bGVwYWdlIC50aXRsZQoreworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvd2hpdGUtb24tYmxhY2sucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworfQorKi8KKworZGl2LnByZWZhY2UgLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuY29sb3Bob24gLnRpdGxlLAorZGl2LmNoYXB0ZXIgLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuYXJ0aWNsZSAudGl0bGVwYWdlIC50aXRsZQoreworfQorCitkaXYuc2VjdGlvbiBkaXYuc2VjdGlvbiAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5zZWN0MiAudGl0bGVwYWdlIC50aXRsZSB7CisgICAgYmFja2dyb3VuZDogbm9uZTsKK30KKworCitoMS50aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBoZWlnaHQ6IDI1NnB4OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCitoMi5zdWJ0aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworICB3aWR0aDogMHB4OworICBkaXNwbGF5OiBub25lOworfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gIHBpcHBpbi5naW1wLm9yZyBzcGVjaWZpYyBhbHRlcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIGNvbG9yOiAjNzc3OworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZzogMDsKKyAgbWFyZ2luOiAwOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHRvcDogMHB4OworICBsZWZ0OiAwcHg7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDUwcHg7CisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9oZWFkaW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7CisgIGJvcmRlcjogbm9uZTsKK30KKworZGl2LmhlYWRpbmcgYSB7CisgIGNvbG9yOiAjNDQ0OworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlcjogbm9uZTsKKyAgY29sb3I6ICNkZGQ7CisgIGZvbnQtc2l6ZTogODAlOworICB0ZXh0LWFsaWduOnJpZ2h0OworCisgIHdpZHRoOiAxMDAlOworICBwYWRkaW5nLXRvcDogMTBweDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBib3R0b206IDBweDsKKyAgbGVmdDogMHB4OworCisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9mb290aW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworfQorKi8KKworCisKKyAgLyoqKioqKioqKioqKioqKioqKiAvCisgLyAgbmFzdHkgaWUgdHdlYWtzICAvCisvICoqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7CisgIG1hcmdpbi1sZWZ0OmV4cHJlc3Npb24oIi01ZW0iKTsKK30KK2JvZHkgeworICBwYWRkaW5nOmV4cHJlc3Npb24oIjRlbSA1ZW0gMGVtIDVlbSIpOworfQorKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyBtb3ppbGxhIHZlbmRvciBzcGVjaWZpYyBjc3MgZXh0ZW5zaW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICAtbW96LW9wYWNpdHk6IDAuOGVtOworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUsCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjNlbTsKK30KKyovCisKK3RhYmxlIHRyIHRkIHRhYmxlIHRyIHRkIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCitociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3RhYmxlIHsKKyAgYm9yZGVyOiAwZW07Cit9CisKKyAucGhvdG8geworICBmbG9hdDogcmlnaHQ7CisgIG1hcmdpbi1sZWZ0OiAgIDEuNWVtOworICBtYXJnaW4tYm90dG9tOiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXgtd2lkdGg6ICAgICAgMTdlbTsKKyAgYm9yZGVyOiAgICAgMXB4IHNvbGlkIGdyYXk7CisgIHBhZGRpbmc6ICAgIDNweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisgLnNlcGVyYXRvciB7CisgICBwYWRkaW5nLXRvcDogMmVtOworICAgY2xlYXI6IGJvdGg7CisgIH0KKworICAjdmFsaWRhdG9ycyB7CisgICAgICBtYXJnaW4tdG9wOiA1ZW07CisgICAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICAgIGNvbG9yOiAjNzc3OworICB9CisgIEBtZWRpYSBwcmludCB7CisgICAgICBib2R5IHsKKyAgICAgICAgICBmb250LXNpemU6IDhwdDsKKyAgICAgIH0KKyAgICAgIC5ub3ByaW50IHsKKyAgICAgICAgICBkaXNwbGF5OiBub25lOworICAgICAgfQorICB9CisKKworLnRpcCwKKy5ub3RlIHsKKyAgIGJhY2tncm91bmQ6ICNmMGYwZjI7CisgICBjb2xvcjogIzMzMzsKKyAgIHBhZGRpbmc6IDIwcHg7CisgICBtYXJnaW46IDIwcHg7Cit9CisKKy50aXAgaDMsCisubm90ZSBoMyB7CisgICBwYWRkaW5nOiAwZW07CisgICBtYXJnaW46IDBlbTsKKyAgIGZvbnQtc2l6ZTogMmVtOworICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICBjb2xvcjogIzMzMzsKK30KKworLnRpcCBhLAorLm5vdGUgYSB7CisgICBjb2xvcjogIzMzMzsKKyAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuZm9vdG5vdGUgeworICAgZm9udC1zaXplOiBzbWFsbDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisvKiBDaGFuZ2VzIHRoZSBhbm5vdW5jZW1lbnQgdGV4dCAqLworLnRpcCBoMywKKy53YXJuaW5nIGgzLAorLmNhdXRpb24gaDMsCisubm90ZSBoMyB7CisgICBmb250LXNpemU6bGFyZ2U7CisgICBjb2xvcjogIzAwNTU3RDsKK30KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtdXNhZ2UucnN0CmluZGV4IGQzYzAyMGEuLjMyYjA0ZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIC4uIGhpZ2hsaWdodDo6IHNoZWxsCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E3MTQ4YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKQEAgLTAsMCArMSwyOTg2IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3Byb2ZpbGUtbWFudWFsLXVzYWdlJz4KKworPHRpdGxlPkJhc2ljIFVzYWdlICh3aXRoIGV4YW1wbGVzKSBmb3IgZWFjaCBvZiB0aGUgWW9jdG8gVHJhY2luZyBUb29sczwvdGl0bGU+CisKKzxwYXJhPgorICAgIFRoaXMgY2hhcHRlciBwcmVzZW50cyBiYXNpYyB1c2FnZSBleGFtcGxlcyBmb3IgZWFjaCBvZiB0aGUgdHJhY2luZworICAgIHRvb2xzLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0ncHJvZmlsZS1tYW51YWwtcGVyZic+CisgICAgPHRpdGxlPnBlcmY8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSAncGVyZicgdG9vbCBpcyB0aGUgcHJvZmlsaW5nIGFuZCB0cmFjaW5nIHRvb2wgdGhhdCBjb21lcworICAgICAgICBidW5kbGVkIHdpdGggdGhlIExpbnV4IGtlcm5lbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRG9uJ3QgbGV0IHRoZSBmYWN0IHRoYXQgaXQncyBwYXJ0IG9mIHRoZSBrZXJuZWwgZm9vbCB5b3UgaW50byB0aGlua2luZworICAgICAgICB0aGF0IGl0J3Mgb25seSBmb3IgdHJhY2luZyBhbmQgcHJvZmlsaW5nIHRoZSBrZXJuZWwgLSB5b3UgY2FuIGluZGVlZAorICAgICAgICB1c2UgaXQgdG8gdHJhY2UgYW5kIHByb2ZpbGUganVzdCB0aGUga2VybmVsLCBidXQgeW91IGNhbiBhbHNvIHVzZSBpdAorICAgICAgICB0byBwcm9maWxlIHNwZWNpZmljIGFwcGxpY2F0aW9ucyBzZXBhcmF0ZWx5ICh3aXRoIG9yIHdpdGhvdXQga2VybmVsCisgICAgICAgIGNvbnRleHQpLCBhbmQgeW91IGNhbiBhbHNvIHVzZSBpdCB0byB0cmFjZSBhbmQgcHJvZmlsZSB0aGUga2VybmVsCisgICAgICAgIGFuZCBhbGwgYXBwbGljYXRpb25zIG9uIHRoZSBzeXN0ZW0gc2ltdWx0YW5lb3VzbHkgdG8gZ2FpbiBhIHN5c3RlbS13aWRlCisgICAgICAgIHZpZXcgb2Ygd2hhdCdzIGdvaW5nIG9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBtYW55IHdheXMsIHBlcmYgYWltcyB0byBiZSBhIHN1cGVyc2V0IG9mIGFsbCB0aGUgdHJhY2luZyBhbmQgcHJvZmlsaW5nCisgICAgICAgIHRvb2xzIGF2YWlsYWJsZSBpbiBMaW51eCB0b2RheSwgaW5jbHVkaW5nIGFsbCB0aGUgb3RoZXIgdG9vbHMgY292ZXJlZAorICAgICAgICBpbiB0aGlzIEhPV1RPLiBUaGUgcGFzdCBjb3VwbGUgb2YgeWVhcnMgaGF2ZSBzZWVuIHBlcmYgc3Vic3VtZSBhIGxvdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBvdGhlciB0b29scyBhbmQsIGF0IHRoZSBzYW1lIHRpbWUsIHRob3NlCisgICAgICAgIG90aGVyIHRvb2xzIGhhdmUgcmVtb3ZlZCBsYXJnZSBwb3J0aW9ucyBvZiB0aGVpciBwcmV2aW91cyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGFuZCByZXBsYWNlZCBpdCB3aXRoIGNhbGxzIHRvIHRoZSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgbm93CisgICAgICAgIGltcGxlbWVudGVkIGJ5IHRoZSBwZXJmIHN1YnN5c3RlbS4gRXh0cmFwb2xhdGlvbiBzdWdnZXN0cyB0aGF0IGF0CisgICAgICAgIHNvbWUgcG9pbnQgdGhvc2Ugb3RoZXIgdG9vbHMgd2lsbCBzaW1wbHkgYmVjb21lIGNvbXBsZXRlbHkgcmVkdW5kYW50CisgICAgICAgIGFuZCBnbyBhd2F5OyB1bnRpbCB0aGVuLCB3ZSdsbCBjb3ZlciB0aG9zZSBvdGhlciB0b29scyBpbiB0aGVzZSBwYWdlcworICAgICAgICBhbmQgaW4gbWFueSBjYXNlcyBzaG93IGhvdyB0aGUgc2FtZSB0aGluZ3MgY2FuIGJlIGFjY29tcGxpc2hlZCBpbgorICAgICAgICBwZXJmIGFuZCB0aGUgb3RoZXIgdG9vbHMgd2hlbiBpdCBzZWVtcyB1c2VmdWwgdG8gZG8gc28uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBjb3ZlcmFnZSBiZWxvdyBkZXRhaWxzIHNvbWUgb2YgdGhlIG1vc3QgY29tbW9uIHdheXMgeW91J2xsIGxpa2VseQorICAgICAgICB3YW50IHRvIGFwcGx5IHRoZSB0b29sOyBmdWxsIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIGVpdGhlciB3aXRoaW4KKyAgICAgICAgdGhlIHRvb2wgaXRzZWxmIG9yIGluIHRoZSBtYW4gcGFnZXMgYXQKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvcGVyZic+cGVyZigxKTwvdWxpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdwZXJmLXNldHVwJz4KKyAgICAgICAgPHRpdGxlPlNldHVwPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciB0aGlzIHNlY3Rpb24sIHdlJ2xsIGFzc3VtZSB5b3UndmUgYWxyZWFkeSBwZXJmb3JtZWQgdGhlIGJhc2ljCisgICAgICAgICAgICBzZXR1cCBvdXRsaW5lZCBpbiB0aGUgR2VuZXJhbCBTZXR1cCBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB5b3UnbGwgZ2V0IHRoZSBtb3N0IG1pbGVhZ2Ugb3V0IG9mIHBlcmYgaWYgeW91CisgICAgICAgICAgICBwcm9maWxlIGFuIGltYWdlIGJ1aWx0IHdpdGggdGhlIGZvbGxvd2luZyBpbiB5b3VyCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTkhJQklUX1BBQ0tBR0VfU1RSSVAnPklOSElCSVRfUEFDS0FHRV9TVFJJUDwvdWxpbms+ID0gIjEiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIHBlcmYgcnVucyBvbiB0aGUgdGFyZ2V0IHN5c3RlbSBmb3IgdGhlIG1vc3QgcGFydC4gWW91IGNhbiBhcmNoaXZlCisgICAgICAgICAgICBwcm9maWxlIGRhdGEgYW5kIGNvcHkgaXQgdG8gdGhlIGhvc3QgZm9yIGFuYWx5c2lzLCBidXQgZm9yIHRoZQorICAgICAgICAgICAgcmVzdCBvZiB0aGlzIGRvY3VtZW50IHdlIGFzc3VtZSB5b3UndmUgc3NoJ2VkIHRvIHRoZSBob3N0IGFuZAorICAgICAgICAgICAgd2lsbCBiZSBydW5uaW5nIHRoZSBwZXJmIGNvbW1hbmRzIG9uIHRoZSB0YXJnZXQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncGVyZi1iYXNpYy11c2FnZSc+CisgICAgICAgIDx0aXRsZT5CYXNpYyBVc2FnZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcGVyZiB0b29sIGlzIHByZXR0eSBtdWNoIHNlbGYtZG9jdW1lbnRpbmcuIFRvIHJlbWluZCB5b3Vyc2VsZgorICAgICAgICAgICAgb2YgdGhlIGF2YWlsYWJsZSBjb21tYW5kcywgc2ltcGx5IHR5cGUgJ3BlcmYnLCB3aGljaCB3aWxsIHNob3cgeW91CisgICAgICAgICAgICBiYXNpYyB1c2FnZSBhbG9uZyB3aXRoIHRoZSBhdmFpbGFibGUgcGVyZiBzdWJjb21tYW5kczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmCisKKyAgICAgdXNhZ2U6IHBlcmYgWy0tdmVyc2lvbl0gWy0taGVscF0gQ09NTUFORCBbQVJHU10KKworICAgICBUaGUgbW9zdCBjb21tb25seSB1c2VkIHBlcmYgY29tbWFuZHMgYXJlOgorICAgICAgIGFubm90YXRlICAgICAgICBSZWFkIHBlcmYuZGF0YSAoY3JlYXRlZCBieSBwZXJmIHJlY29yZCkgYW5kIGRpc3BsYXkgYW5ub3RhdGVkIGNvZGUKKyAgICAgICBhcmNoaXZlICAgICAgICAgQ3JlYXRlIGFyY2hpdmUgd2l0aCBvYmplY3QgZmlsZXMgd2l0aCBidWlsZC1pZHMgZm91bmQgaW4gcGVyZi5kYXRhIGZpbGUKKyAgICAgICBiZW5jaCAgICAgICAgICAgR2VuZXJhbCBmcmFtZXdvcmsgZm9yIGJlbmNobWFyayBzdWl0ZXMKKyAgICAgICBidWlsZGlkLWNhY2hlICAgTWFuYWdlIGJ1aWxkLWlkIGNhY2hlLgorICAgICAgIGJ1aWxkaWQtbGlzdCAgICBMaXN0IHRoZSBidWlsZGlkcyBpbiBhIHBlcmYuZGF0YSBmaWxlCisgICAgICAgZGlmZiAgICAgICAgICAgIFJlYWQgdHdvIHBlcmYuZGF0YSBmaWxlcyBhbmQgZGlzcGxheSB0aGUgZGlmZmVyZW50aWFsIHByb2ZpbGUKKyAgICAgICBldmxpc3QgICAgICAgICAgTGlzdCB0aGUgZXZlbnQgbmFtZXMgaW4gYSBwZXJmLmRhdGEgZmlsZQorICAgICAgIGluamVjdCAgICAgICAgICBGaWx0ZXIgdG8gYXVnbWVudCB0aGUgZXZlbnRzIHN0cmVhbSB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgICAgICBrbWVtICAgICAgICAgICAgVG9vbCB0byB0cmFjZS9tZWFzdXJlIGtlcm5lbCBtZW1vcnkoc2xhYikgcHJvcGVydGllcworICAgICAgIGt2bSAgICAgICAgICAgICBUb29sIHRvIHRyYWNlL21lYXN1cmUga3ZtIGd1ZXN0IG9zCisgICAgICAgbGlzdCAgICAgICAgICAgIExpc3QgYWxsIHN5bWJvbGljIGV2ZW50IHR5cGVzCisgICAgICAgbG9jayAgICAgICAgICAgIEFuYWx5emUgbG9jayBldmVudHMKKyAgICAgICBwcm9iZSAgICAgICAgICAgRGVmaW5lIG5ldyBkeW5hbWljIHRyYWNlcG9pbnRzCisgICAgICAgcmVjb3JkICAgICAgICAgIFJ1biBhIGNvbW1hbmQgYW5kIHJlY29yZCBpdHMgcHJvZmlsZSBpbnRvIHBlcmYuZGF0YQorICAgICAgIHJlcG9ydCAgICAgICAgICBSZWFkIHBlcmYuZGF0YSAoY3JlYXRlZCBieSBwZXJmIHJlY29yZCkgYW5kIGRpc3BsYXkgdGhlIHByb2ZpbGUKKyAgICAgICBzY2hlZCAgICAgICAgICAgVG9vbCB0byB0cmFjZS9tZWFzdXJlIHNjaGVkdWxlciBwcm9wZXJ0aWVzIChsYXRlbmNpZXMpCisgICAgICAgc2NyaXB0ICAgICAgICAgIFJlYWQgcGVyZi5kYXRhIChjcmVhdGVkIGJ5IHBlcmYgcmVjb3JkKSBhbmQgZGlzcGxheSB0cmFjZSBvdXRwdXQKKyAgICAgICBzdGF0ICAgICAgICAgICAgUnVuIGEgY29tbWFuZCBhbmQgZ2F0aGVyIHBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdGlzdGljcworICAgICAgIHRlc3QgICAgICAgICAgICBSdW5zIHNhbml0eSB0ZXN0cy4KKyAgICAgICB0aW1lY2hhcnQgICAgICAgVG9vbCB0byB2aXN1YWxpemUgdG90YWwgc3lzdGVtIGJlaGF2aW9yIGR1cmluZyBhIHdvcmtsb2FkCisgICAgICAgdG9wICAgICAgICAgICAgIFN5c3RlbSBwcm9maWxpbmcgdG9vbC4KKworICAgICBTZWUgJ3BlcmYgaGVscCBDT01NQU5EJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctcGVyZi10by1kby1iYXNpYy1wcm9maWxpbmcnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIHBlcmYgdG8gZG8gQmFzaWMgUHJvZmlsaW5nPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYSBzaW1wbGUgdGVzdCBjYXNlLCB3ZSdsbCBwcm9maWxlIHRoZSAnd2dldCcgb2YgYSBmYWlybHkgbGFyZ2UKKyAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBhIG1pbmltYWxseSBpbnRlcmVzdGluZyBjYXNlIGJlY2F1c2UgaXQgaGFzIGJvdGgKKyAgICAgICAgICAgICAgICBmaWxlIGFuZCBuZXR3b3JrIEkvTyBhc3BlY3RzLCBhbmQgYXQgbGVhc3QgaW4gdGhlIGNhc2Ugb2Ygc3RhbmRhcmQKKyAgICAgICAgICAgICAgICBZb2N0byBpbWFnZXMsIGl0J3MgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBidXN5Ym94LCBzbyB0aGUgbWV0aG9kcworICAgICAgICAgICAgICAgIHdlIHVzZSB0byBhbmFseXplIGl0IGNhbiBiZSB1c2VkIGluIGEgdmVyeSBzaW1pbGFyIHdheSB0byB0aGUgd2hvbGUKKyAgICAgICAgICAgICAgICBob3N0IG9mIHN1cHBvcnRlZCBidXN5Ym94IGFwcGxldHMgaW4gWW9jdG8uCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHJtIGxpbnV4LTIuNi4xOS4yLnRhci5iejI7IFwKKyAgICAgd2dldCA8dWxpbmsgdXJsPSdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6Mic+aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejI8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcXVpY2tlc3QgYW5kIGVhc2llc3Qgd2F5IHRvIGdldCBzb21lIGJhc2ljIG92ZXJhbGwgZGF0YSBhYm91dAorICAgICAgICAgICAgICAgIHdoYXQncyBnb2luZyBvbiBmb3IgYSBwYXJ0aWN1bGFyIHdvcmtsb2FkIGlzIHRvIHByb2ZpbGUgaXQgdXNpbmcKKyAgICAgICAgICAgICAgICAncGVyZiBzdGF0Jy4gJ3BlcmYgc3RhdCcgYmFzaWNhbGx5IHByb2ZpbGVzIHVzaW5nIGEgZmV3IGRlZmF1bHQKKyAgICAgICAgICAgICAgICBjb3VudGVycyBhbmQgZGlzcGxheXMgdGhlIHN1bW1lZCBjb3VudHMgYXQgdGhlIGVuZCBvZiB0aGUgcnVuOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHN0YXQgd2dldCA8dWxpbmsgdXJsPSdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6Mic+aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejI8L3VsaW5rPgorICAgICBDb25uZWN0aW5nIHRvIGRvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnICgxNDAuMjExLjE2OS41OTo4MCkKKyAgICAgbGludXgtMi42LjE5LjIudGFyLmIgMTAwJSB8KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfCA0MTcyN2sgIDA6MDA6MDAgRVRBCisKKyAgICAgUGVyZm9ybWFuY2UgY291bnRlciBzdGF0cyBmb3IgJ3dnZXQgPHVsaW5rIHVybD0naHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejInPmh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyPC91bGluaz4nOgorCisgICAgICAgICAgIDQ1OTcuMjIzOTAyIHRhc2stY2xvY2sgICAgICAgICAgICAgICAgIyAgICAwLjA3NyBDUFVzIHV0aWxpemVkCisgICAgICAgICAgICAgICAgIDIzNTY4IGNvbnRleHQtc3dpdGNoZXMgICAgICAgICAgIyAgICAwLjAwNSBNL3NlYworICAgICAgICAgICAgICAgICAgICA2OCBDUFUtbWlncmF0aW9ucyAgICAgICAgICAgICMgICAgMC4wMTUgSy9zZWMKKyAgICAgICAgICAgICAgICAgICAyNDEgcGFnZS1mYXVsdHMgICAgICAgICAgICAgICAjICAgIDAuMDUyIEsvc2VjCisgICAgICAgICAgICAzMDQ1ODE3MjkzIGN5Y2xlcyAgICAgICAgICAgICAgICAgICAgIyAgICAwLjY2MyBHSHoKKyAgICAgICAmbHQ7bm90IHN1cHBvcnRlZCZndDsgc3RhbGxlZC1jeWNsZXMtZnJvbnRlbmQKKyAgICAgICAmbHQ7bm90IHN1cHBvcnRlZCZndDsgc3RhbGxlZC1jeWNsZXMtYmFja2VuZAorICAgICAgICAgICAgIDg1ODkwOTE2NyBpbnN0cnVjdGlvbnMgICAgICAgICAgICAgICMgICAgMC4yOCAgaW5zbnMgcGVyIGN5Y2xlCisgICAgICAgICAgICAgMTY1NDQxMTY1IGJyYW5jaGVzICAgICAgICAgICAgICAgICAgIyAgIDM1Ljk4NyBNL3NlYworICAgICAgICAgICAgICAxOTU1MDMyOSBicmFuY2gtbWlzc2VzICAgICAgICAgICAgICMgICAxMS44MiUgb2YgYWxsIGJyYW5jaGVzCisKKyAgICAgICAgICA1OS44MzY2Mjc2MjAgc2Vjb25kcyB0aW1lIGVsYXBzZWQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgTWFueSB0aW1lcyBzdWNoIGEgc2ltcGxlLW1pbmRlZCB0ZXN0IGRvZXNuJ3QgeWllbGQgbXVjaCBvZgorICAgICAgICAgICAgICAgIGludGVyZXN0LCBidXQgc29tZXRpbWVzIGl0IGRvZXMgKHNlZSBSZWFsLXdvcmxkIFlvY3RvIGJ1ZworICAgICAgICAgICAgICAgIChzbG93IGxvb3AtbW91bnRlZCB3cml0ZSBzcGVlZCkpLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbHNvLCBub3RlIHRoYXQgJ3BlcmYgc3RhdCcgaXNuJ3QgcmVzdHJpY3RlZCB0byBhIGZpeGVkIHNldCBvZgorICAgICAgICAgICAgICAgIGNvdW50ZXJzIC0gYmFzaWNhbGx5IGFueSBldmVudCBsaXN0ZWQgaW4gdGhlIG91dHB1dCBvZiAncGVyZiBsaXN0JworICAgICAgICAgICAgICAgIGNhbiBiZSB0YWxsaWVkIGJ5ICdwZXJmIHN0YXQnLiBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSB3YW50ZWQgdG8KKyAgICAgICAgICAgICAgICBzZWUgYSBzdW1tYXJ5IG9mIGFsbCB0aGUgZXZlbnRzIHJlbGF0ZWQgdG8ga2VybmVsIG1lbW9yeQorICAgICAgICAgICAgICAgIGFsbG9jYXRpb24vZnJlZWluZyBhbG9uZyB3aXRoIGNhY2hlIGhpdHMgYW5kIG1pc3NlczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiBzdGF0IC1lIGttZW06KiAtZSBjYWNoZS1yZWZlcmVuY2VzIC1lIGNhY2hlLW1pc3NlcyB3Z2V0IDx1bGluayB1cmw9J2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyJz5odHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6MjwvdWxpbms+CisgICAgIENvbm5lY3RpbmcgdG8gZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcgKDE0MC4yMTEuMTY5LjU5OjgwKQorICAgICBsaW51eC0yLjYuMTkuMi50YXIuYiAxMDAlIHwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip8IDQxNzI3ayAgMDowMDowMCBFVEEKKworICAgICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnd2dldCA8dWxpbmsgdXJsPSdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6Mic+aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejI8L3VsaW5rPic6CisKKyAgICAgICAgICAgICAgICAgIDU1NjYga21lbTprbWFsbG9jCisgICAgICAgICAgICAgICAgMTI1NTE3IGttZW06a21lbV9jYWNoZV9hbGxvYworICAgICAgICAgICAgICAgICAgICAgMCBrbWVtOmttYWxsb2Nfbm9kZQorICAgICAgICAgICAgICAgICAgICAgMCBrbWVtOmttZW1fY2FjaGVfYWxsb2Nfbm9kZQorICAgICAgICAgICAgICAgICAzNDQwMSBrbWVtOmtmcmVlCisgICAgICAgICAgICAgICAgIDY5OTIwIGttZW06a21lbV9jYWNoZV9mcmVlCisgICAgICAgICAgICAgICAgICAgMTMzIGttZW06bW1fcGFnZV9mcmVlCisgICAgICAgICAgICAgICAgICAgIDQxIGttZW06bW1fcGFnZV9mcmVlX2JhdGNoZWQKKyAgICAgICAgICAgICAgICAgMTE1MDIga21lbTptbV9wYWdlX2FsbG9jCisgICAgICAgICAgICAgICAgIDExMzc1IGttZW06bW1fcGFnZV9hbGxvY196b25lX2xvY2tlZAorICAgICAgICAgICAgICAgICAgICAgMCBrbWVtOm1tX3BhZ2VfcGNwdV9kcmFpbgorICAgICAgICAgICAgICAgICAgICAgMCBrbWVtOm1tX3BhZ2VfYWxsb2NfZXh0ZnJhZworICAgICAgICAgICAgICA2Njg0ODYwMiBjYWNoZS1yZWZlcmVuY2VzCisgICAgICAgICAgICAgICAyOTE3NzQwIGNhY2hlLW1pc3NlcyAgICAgICAgICAgICAgIyAgICA0LjM2NSAlIG9mIGFsbCBjYWNoZSByZWZzCisKKyAgICAgICAgICA0NC44MzEwMjM0MTUgc2Vjb25kcyB0aW1lIGVsYXBzZWQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgU28gJ3BlcmYgc3RhdCcgZ2l2ZXMgdXMgYSBuaWNlIGVhc3kgd2F5IHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IG9mCisgICAgICAgICAgICAgICAgd2hhdCBtaWdodCBiZSBoYXBwZW5pbmcgZm9yIGEgc2V0IG9mIGV2ZW50cywgYnV0IG5vcm1hbGx5IHdlJ2QKKyAgICAgICAgICAgICAgICBuZWVkIGEgbGl0dGxlIG1vcmUgZGV0YWlsIGluIG9yZGVyIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uCisgICAgICAgICAgICAgICAgaW4gYSB3YXkgdGhhdCB3ZSBjYW4gYWN0IG9uIGluIGEgdXNlZnVsIHdheS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZGl2ZSBkb3duIGludG8gYSBuZXh0IGxldmVsIG9mIGRldGFpbCwgd2UgY2FuIHVzZSAncGVyZgorICAgICAgICAgICAgICAgIHJlY29yZCcvJ3BlcmYgcmVwb3J0JyB3aGljaCB3aWxsIGNvbGxlY3QgcHJvZmlsaW5nIGRhdGEgYW5kCisgICAgICAgICAgICAgICAgcHJlc2VudCBpdCB0byB1c2UgdXNpbmcgYW4gaW50ZXJhY3RpdmUgdGV4dC1iYXNlZCBVSSAob3IKKyAgICAgICAgICAgICAgICBzaW1wbHkgYXMgdGV4dCBpZiB3ZSBzcGVjaWZ5IC0tc3RkaW8gdG8gJ3BlcmYgcmVwb3J0JykuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIG91ciBmaXJzdCBhdHRlbXB0IGF0IHByb2ZpbGluZyB0aGlzIHdvcmtsb2FkLCB3ZSdsbCBzaW1wbHkKKyAgICAgICAgICAgICAgICBydW4gJ3BlcmYgcmVjb3JkJywgaGFuZGluZyBpdCB0aGUgd29ya2xvYWQgd2Ugd2FudCB0byBwcm9maWxlCisgICAgICAgICAgICAgICAgKGV2ZXJ5dGhpbmcgYWZ0ZXIgJ3BlcmYgcmVjb3JkJyBhbmQgYW55IHBlcmYgb3B0aW9ucyB3ZSBoYW5kCisgICAgICAgICAgICAgICAgaXQgLSBoZXJlIG5vbmUgLSB3aWxsIGJlIGV4ZWN1dGVkIGluIGEgbmV3IHNoZWxsKS4gcGVyZiBjb2xsZWN0cworICAgICAgICAgICAgICAgIHNhbXBsZXMgdW50aWwgdGhlIHByb2Nlc3MgZXhpdHMgYW5kIHJlY29yZHMgdGhlbSBpbiBhIGZpbGUgbmFtZWQKKyAgICAgICAgICAgICAgICAncGVyZi5kYXRhJyBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiByZWNvcmQgd2dldCA8dWxpbmsgdXJsPSdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6Mic+aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejI8L3VsaW5rPgorCisgICAgIENvbm5lY3RpbmcgdG8gZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcgKDE0MC4yMTEuMTY5LjU5OjgwKQorICAgICBsaW51eC0yLjYuMTkuMi50YXIuYiAxMDAlIHwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip8IDQxNzI3ayAgMDowMDowMCBFVEEKKyAgICAgWyBwZXJmIHJlY29yZDogV29rZW4gdXAgMSB0aW1lcyB0byB3cml0ZSBkYXRhIF0KKyAgICAgWyBwZXJmIHJlY29yZDogQ2FwdHVyZWQgYW5kIHdyb3RlIDAuMTc2IE1CIHBlcmYuZGF0YSAofjc3MDAgc2FtcGxlcykgXQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVG8gc2VlIHRoZSByZXN1bHRzIGluIGEgJ3RleHQtYmFzZWQgVUknICh0dWkpLCBzaW1wbHkgcnVuCisgICAgICAgICAgICAncGVyZiByZXBvcnQnLCB3aGljaCB3aWxsIHJlYWQgdGhlIHBlcmYuZGF0YSBmaWxlIGluIHRoZSBjdXJyZW50CisgICAgICAgICAgICB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZGlzcGxheSB0aGUgcmVzdWx0cyBpbiBhbiBpbnRlcmFjdGl2ZSBVSToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiByZXBvcnQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wZXJmLXdnZXQtZmxhdC1zdHJpcHBlZC5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYWJvdmUgc2NyZWVuc2hvdCBkaXNwbGF5cyBhICdmbGF0JyBwcm9maWxlLCBvbmUgZW50cnkgZm9yCisgICAgICAgICAgICAgICAgZWFjaCAnYnVja2V0JyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHByb2ZpbGVkCisgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBwcm9maWxpbmcgcnVuLCBvcmRlcmVkIGZyb20gdGhlIG1vc3QgcG9wdWxhciB0byB0aGUKKyAgICAgICAgICAgICAgICBsZWFzdCAocGVyZiBoYXMgb3B0aW9ucyB0byBzb3J0IGluIHZhcmlvdXMgb3JkZXJzIGFuZCBrZXlzIGFzCisgICAgICAgICAgICAgICAgd2VsbCBhcyBkaXNwbGF5IGVudHJpZXMgb25seSBhYm92ZSBhIGNlcnRhaW4gdGhyZXNob2xkIGFuZCBzbworICAgICAgICAgICAgICAgIG9uIC0gc2VlIHRoZSBwZXJmIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMpLiBOb3RlIHRoYXQgdGhpcworICAgICAgICAgICAgICAgIGluY2x1ZGVzIGJvdGggdXNlcnNwYWNlIGZ1bmN0aW9ucyAoZW50cmllcyBjb250YWluaW5nIGEgWy5dKSBhbmQKKyAgICAgICAgICAgICAgICBrZXJuZWwgZnVuY3Rpb25zIGFjY291bnRlZCB0byB0aGUgcHJvY2VzcyAoZW50cmllcyBjb250YWluaW5nCisgICAgICAgICAgICAgICAgYSBba10pLiAocGVyZiBoYXMgY29tbWFuZC1saW5lIG1vZGlmaWVycyB0aGF0IGNhbiBiZSB1c2VkIHRvCisgICAgICAgICAgICAgICAgcmVzdHJpY3QgdGhlIHByb2ZpbGluZyB0byBrZXJuZWwgb3IgdXNlcnNwYWNlLCBhbW9uZyBvdGhlcnMpLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBOb3RpY2UgYWxzbyB0aGF0IHRoZSBhYm92ZSByZXBvcnQgc2hvd3MgYW4gZW50cnkgZm9yICdidXN5Ym94JywKKyAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgZXhlY3V0YWJsZSB0aGF0IGltcGxlbWVudHMgJ3dnZXQnIGluIFlvY3RvLCBidXQgdGhhdAorICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgYSB1c2VmdWwgZnVuY3Rpb24gbmFtZSBpbiB0aGF0IGVudHJ5LCBpdCBkaXNwbGF5cworICAgICAgICAgICAgICAgIGEgbm90LXNvLWZyaWVuZGx5IGhleCB2YWx1ZSBpbnN0ZWFkLiBUaGUgc3RlcHMgYmVsb3cgd2lsbCBzaG93CisgICAgICAgICAgICAgICAgaG93IHRvIGZpeCB0aGF0IHByb2JsZW0uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlZm9yZSB3ZSBkbyB0aGF0LCBob3dldmVyLCBsZXQncyB0cnkgcnVubmluZyBhIGRpZmZlcmVudCBwcm9maWxlLAorICAgICAgICAgICAgICAgIG9uZSB3aGljaCBzaG93cyBzb21ldGhpbmcgYSBsaXR0bGUgbW9yZSBpbnRlcmVzdGluZy4gVGhlIG9ubHkKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG5ldyBwcm9maWxlIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzIHRoYXQKKyAgICAgICAgICAgICAgICB3ZSdsbCBhZGQgdGhlIC1nIG9wdGlvbiwgd2hpY2ggd2lsbCByZWNvcmQgbm90IGp1c3QgdGhlIGFkZHJlc3MKKyAgICAgICAgICAgICAgICBvZiBhIHNhbXBsZWQgZnVuY3Rpb24sIGJ1dCB0aGUgZW50aXJlIGNhbGxjaGFpbiB0byB0aGUgc2FtcGxlZAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHdlbGw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgcmVjb3JkIC1nIHdnZXQgPHVsaW5rIHVybD0naHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejInPmh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyPC91bGluaz4KKyAgICAgQ29ubmVjdGluZyB0byBkb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyAoMTQwLjIxMS4xNjkuNTk6ODApCisgICAgIGxpbnV4LTIuNi4xOS4yLnRhci5iIDEwMCUgfCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKnwgNDE3MjdrICAwOjAwOjAwIEVUQQorICAgICBbIHBlcmYgcmVjb3JkOiBXb2tlbiB1cCAzIHRpbWVzIHRvIHdyaXRlIGRhdGEgXQorICAgICBbIHBlcmYgcmVjb3JkOiBDYXB0dXJlZCBhbmQgd3JvdGUgMC42NTIgTUIgcGVyZi5kYXRhICh+Mjg0NzYgc2FtcGxlcykgXQorCisKKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHJlcG9ydAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BlcmYtd2dldC1nLWNvcHktdG8tdXNlci1leHBhbmRlZC1zdHJpcHBlZC5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGUgY2FsbGdyYXBoIHZpZXcsIHdlIGNhbiBhY3R1YWxseSBzZWUgbm90IG9ubHkgd2hpY2gKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMgdG9vayB0aGUgbW9zdCB0aW1lLCBidXQgd2UgY2FuIGFsc28gc2VlIGEgc3VtbWFyeSBvZgorICAgICAgICAgICAgICAgIGhvdyB0aG9zZSBmdW5jdGlvbnMgd2VyZSBjYWxsZWQgYW5kIGxlYXJuIHNvbWV0aGluZyBhYm91dCBob3cgdGhlCisgICAgICAgICAgICAgICAgcHJvZ3JhbSBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsIGluIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBOb3RpY2UgdGhhdCBlYWNoIGVudHJ5IGluIHRoZSBhYm92ZSBzY3JlZW5zaG90IG5vdyBjb250YWlucyBhICcrJworICAgICAgICAgICAgICAgIG9uIHRoZSBsZWZ0LWhhbmQgc2lkZS4gVGhpcyBtZWFucyB0aGF0IHdlIGNhbiBleHBhbmQgdGhlIGVudHJ5IGFuZAorICAgICAgICAgICAgICAgIGRyaWxsIGRvd24gaW50byB0aGUgY2FsbGNoYWlucyB0aGF0IGZlZWQgaW50byB0aGF0IGVudHJ5LgorICAgICAgICAgICAgICAgIFByZXNzaW5nICdlbnRlcicgb24gYW55IG9uZSBvZiB0aGVtIHdpbGwgZXhwYW5kIHRoZSBjYWxsY2hhaW4KKyAgICAgICAgICAgICAgICAoeW91IGNhbiBhbHNvIHByZXNzICdFJyB0byBleHBhbmQgdGhlbSBhbGwgYXQgdGhlIHNhbWUgdGltZSBvciAnQycKKyAgICAgICAgICAgICAgICB0byBjb2xsYXBzZSB0aGVtIGFsbCkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZSBzY3JlZW5zaG90IGFib3ZlLCB3ZSd2ZSB0b2dnbGVkIHRoZSBfX2NvcHlfdG9fdXNlcl9sbCgpCisgICAgICAgICAgICAgICAgZW50cnkgYW5kIHNldmVyYWwgc3Vibm9kZXMgYWxsIHRoZSB3YXkgZG93bi4gVGhpcyBsZXRzIHVzIHNlZQorICAgICAgICAgICAgICAgIHdoaWNoIGNhbGxjaGFpbnMgY29udHJpYnV0ZWQgdG8gdGhlIHByb2ZpbGVkIF9fY29weV90b191c2VyX2xsKCkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aGljaCBjb250cmlidXRlZCAxLjc3JSB0byB0aGUgdG90YWwgcHJvZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYSBiaXQgb2YgYmFja2dyb3VuZCBleHBsYW5hdGlvbiBmb3IgdGhlc2UgY2FsbGNoYWlucywgdGhpbmsKKyAgICAgICAgICAgICAgICBhYm91dCB3aGF0IGhhcHBlbnMgYXQgYSBoaWdoIGxldmVsIHdoZW4geW91IHJ1biB3Z2V0IHRvIGdldCBhIGZpbGUKKyAgICAgICAgICAgICAgICBvdXQgb24gdGhlIG5ldHdvcmsuIEJhc2ljYWxseSB3aGF0IGhhcHBlbnMgaXMgdGhhdCB0aGUgZGF0YSBjb21lcworICAgICAgICAgICAgICAgIGludG8gdGhlIGtlcm5lbCB2aWEgdGhlIG5ldHdvcmsgY29ubmVjdGlvbiAoc29ja2V0KSBhbmQgaXMgcGFzc2VkCisgICAgICAgICAgICAgICAgdG8gdGhlIHVzZXJzcGFjZSBwcm9ncmFtICd3Z2V0JyAod2hpY2ggaXMgYWN0dWFsbHkgYSBwYXJ0IG9mCisgICAgICAgICAgICAgICAgYnVzeWJveCwgYnV0IHRoYXQncyBub3QgaW1wb3J0YW50IGZvciBub3cpLCB3aGljaCB0YWtlcyB0aGUgYnVmZmVycworICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgcGFzc2VzIHRvIGl0IGFuZCB3cml0ZXMgaXQgdG8gYSBkaXNrIGZpbGUgdG8gc2F2ZSBpdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHBhcnQgb2YgdGhpcyBwcm9jZXNzIHRoYXQgd2UncmUgbG9va2luZyBhdCBpbiB0aGUgYWJvdmUgY2FsbAorICAgICAgICAgICAgICAgIHN0YWNrcyBpcyB0aGUgcGFydCB3aGVyZSB0aGUga2VybmVsIHBhc3NlcyB0aGUgZGF0YSBpdCdzIHJlYWQgZnJvbQorICAgICAgICAgICAgICAgIHRoZSBzb2NrZXQgZG93biB0byB3Z2V0IGkuZS4gYSBjb3B5LXRvLXVzZXIuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE5vdGljZSBhbHNvIHRoYXQgaGVyZSB0aGVyZSdzIGFsc28gYSBjYXNlIHdoZXJlIHRoZSBoZXggdmFsdWUKKyAgICAgICAgICAgICAgICBpcyBkaXNwbGF5ZWQgaW4gdGhlIGNhbGxzdGFjaywgaGVyZSBpbiB0aGUgZXhwYW5kZWQKKyAgICAgICAgICAgICAgICBzeXNfY2xvY2tfZ2V0dGltZSgpIGZ1bmN0aW9uLiBMYXRlciB3ZSdsbCBzZWUgaXQgcmVzb2x2ZSB0byBhCisgICAgICAgICAgICAgICAgdXNlcnNwYWNlIGZ1bmN0aW9uIGNhbGwgaW4gYnVzeWJveC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BlcmYtd2dldC1nLWNvcHktZnJvbS11c2VyLWV4cGFuZGVkLXN0cmlwcGVkLnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBhYm92ZSBzY3JlZW5zaG90IHNob3dzIHRoZSBvdGhlciBoYWxmIG9mIHRoZSBqb3VybmV5IGZvciB0aGUKKyAgICAgICAgICAgICAgICBkYXRhIC0gZnJvbSB0aGUgd2dldCBwcm9ncmFtJ3MgdXNlcnNwYWNlIGJ1ZmZlcnMgdG8gZGlzay4gVG8gZ2V0CisgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlcnMgdG8gZGlzaywgdGhlIHdnZXQgcHJvZ3JhbSBpc3N1ZXMgYSB3cml0ZSgyKSwgd2hpY2gKKyAgICAgICAgICAgICAgICBkb2VzIGEgY29weS1mcm9tLXVzZXIgdG8gdGhlIGtlcm5lbCwgd2hpY2ggdGhlbiB0YWtlcyBjYXJlIHZpYQorICAgICAgICAgICAgICAgIHNvbWUgY2lyY3VpdG91cyBwYXRoIChwcm9iYWJseSBhbHNvIHByZXNlbnQgc29tZXdoZXJlIGluIHRoZQorICAgICAgICAgICAgICAgIHByb2ZpbGUgZGF0YSksIHRvIGdldCBpdCBzYWZlbHkgdG8gZGlzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTm93IHRoYXQgd2UndmUgc2VlbiB0aGUgYmFzaWMgbGF5b3V0IG9mIHRoZSBwcm9maWxlIGRhdGEgYW5kIHRoZQorICAgICAgICAgICAgICAgIGJhc2ljcyBvZiBob3cgdG8gZXh0cmFjdCB1c2VmdWwgaW5mb3JtYXRpb24gb3V0IG9mIGl0LCBsZXQncyBnZXQKKyAgICAgICAgICAgICAgICBiYWNrIHRvIHRoZSB0YXNrIGF0IGhhbmQgYW5kIHNlZSBpZiB3ZSBjYW4gZ2V0IHNvbWUgYmFzaWMgaWRlYQorICAgICAgICAgICAgICAgIGFib3V0IHdoZXJlIHRoZSB0aW1lIGlzIHNwZW50IGluIHRoZSBwcm9ncmFtIHdlJ3JlIHByb2ZpbGluZywKKyAgICAgICAgICAgICAgICB3Z2V0LiBSZW1lbWJlciB0aGF0IHdnZXQgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYXMgYW4gYXBwbGV0CisgICAgICAgICAgICAgICAgaW4gYnVzeWJveCwgc28gd2hpbGUgdGhlIHByb2Nlc3MgbmFtZSBpcyAnd2dldCcsIHRoZSBleGVjdXRhYmxlCisgICAgICAgICAgICAgICAgd2UncmUgYWN0dWFsbHkgaW50ZXJlc3RlZCBpbiBpcyBidXN5Ym94LiBTbyBsZXQncyBleHBhbmQgdGhlCisgICAgICAgICAgICAgICAgZmlyc3QgZW50cnkgY29udGFpbmluZyBidXN5Ym94OgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZXhwYW5kZWQtc3RyaXBwZWQucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWdhaW4sIGJlZm9yZSB3ZSBleHBhbmRlZCB3ZSBzYXcgdGhhdCB0aGUgZnVuY3Rpb24gd2FzIGxhYmVsZWQKKyAgICAgICAgICAgICAgICB3aXRoIGEgaGV4IHZhbHVlIGluc3RlYWQgb2YgYSBzeW1ib2wgYXMgd2l0aCBtb3N0IG9mIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICBlbnRyaWVzLiBFeHBhbmRpbmcgdGhlIGJ1c3lib3ggZW50cnkgZG9lc24ndCBtYWtlIGl0IGFueSBiZXR0ZXIuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgcGVyZiBjYW4ndCBmaW5kIHRoZSBzeW1ib2wgaW5mb3JtYXRpb24gZm9yIHRoZQorICAgICAgICAgICAgICAgIGJ1c3lib3ggYmluYXJ5LCB3aGljaCBpcyBhY3R1YWxseSBzdHJpcHBlZCBvdXQgYnkgdGhlIFlvY3RvIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmUgd2F5IGFyb3VuZCB0aGF0IGlzIHRvIHB1dCB0aGUgZm9sbG93aW5nIGluIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgd2hlbiB5b3UgYnVpbGQgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSElCSVRfUEFDS0FHRV9TVFJJUCc+SU5ISUJJVF9QQUNLQUdFX1NUUklQPC91bGluaz4gPSAiMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2UgYWxyZWFkeSBoYXZlIGFuIGltYWdlIHdpdGggdGhlIGJpbmFyaWVzIHN0cmlwcGVkLAorICAgICAgICAgICAgICAgIHNvIHdoYXQgY2FuIHdlIGRvIHRvIGdldCBwZXJmIHRvIHJlc29sdmUgdGhlIHN5bWJvbHM/IEJhc2ljYWxseQorICAgICAgICAgICAgICAgIHdlIG5lZWQgdG8gaW5zdGFsbCB0aGUgZGVidWdpbmZvIGZvciB0aGUgYnVzeWJveCBwYWNrYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBnZW5lcmF0ZSB0aGUgZGVidWcgaW5mbyBmb3IgdGhlIHBhY2thZ2VzIGluIHRoZSBpbWFnZSwgd2UgY2FuCisgICAgICAgICAgICAgICAgYWRkIGRiZy1wa2dzIHRvIEVYVFJBX0lNQUdFX0ZFQVRVUkVTIGluIGxvY2FsLmNvbmYuIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAiZGVidWctdHdlYWtzIHRvb2xzLXByb2ZpbGUgZGJnLXBrZ3MiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIHR5cGUgb2YgZGVidWdpbmZvIHRoYXQKKyAgICAgICAgICAgICAgICBwZXJmIHVuZGVyc3RhbmRzLCB3ZSBhbHNvIG5lZWQgdG8gc2V0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnPjxmaWxlbmFtZT5QQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFID0gJ2RlYnVnLWZpbGUtZGlyZWN0b3J5JworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBPbmNlIHdlJ3ZlIGRvbmUgdGhhdCwgd2UgY2FuIGluc3RhbGwgdGhlIGRlYnVnaW5mbyBmb3IgYnVzeWJveC4KKyAgICAgICAgICAgICAgICBUaGUgZGVidWcgcGFja2FnZXMgb25jZSBidWlsdCBjYW4gYmUgZm91bmQgaW4KKyAgICAgICAgICAgICAgICBidWlsZC90bXAvZGVwbG95L3JwbS8qIG9uIHRoZSBob3N0IHN5c3RlbS4gRmluZCB0aGUKKyAgICAgICAgICAgICAgICBidXN5Ym94LWRiZy0uLi5ycG0gZmlsZSBhbmQgY29weSBpdCB0byB0aGUgdGFyZ2V0LiBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFt0cnpAZW1wYW5hZGEgY29yZTJdJCBzY3AgL2hvbWUvdHJ6L3lvY3RvL2Nyb3duYmF5LXRyYWNpbmctZGJnL2J1aWxkL3RtcC9kZXBsb3kvcnBtL2NvcmUyXzMyL2J1c3lib3gtZGJnLTEuMjAuMi1yMi5jb3JlMl8zMi5ycG0gcm9vdEAxOTIuMTY4LjEuMzE6CisgICAgIHJvb3RAMTkyLjE2OC4xLjMxJ3MgcGFzc3dvcmQ6CisgICAgIGJ1c3lib3gtZGJnLTEuMjAuMi1yMi5jb3JlMl8zMi5ycG0gICAgICAgICAgICAgICAgICAgICAxMDAlIDE4MjZLQiAgIDEuOE1CL3MgICAwMDowMQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBOb3cgaW5zdGFsbCB0aGUgZGVidWcgcnBtIG9uIHRoZSB0YXJnZXQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHJwbSAtaSBidXN5Ym94LWRiZy0xLjIwLjItcjIuY29yZTJfMzIucnBtCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE5vdyB0aGF0IHRoZSBkZWJ1Z2luZm8gaXMgaW5zdGFsbGVkLCB3ZSBzZWUgdGhhdCB0aGUgYnVzeWJveAorICAgICAgICAgICAgICAgIGVudHJpZXMgbm93IGRpc3BsYXkgdGhlaXIgZnVuY3Rpb25zIHN5bWJvbGljYWxseToKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWRlYnVnaW5mby5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB3ZSBleHBhbmQgb25lIG9mIHRoZSBlbnRyaWVzIGFuZCBwcmVzcyAnZW50ZXInIG9uIGEgbGVhZiBub2RlLAorICAgICAgICAgICAgICAgIHdlJ3JlIHByZXNlbnRlZCB3aXRoIGEgbWVudSBvZiBhY3Rpb25zIHdlIGNhbiB0YWtlIHRvIGdldCBtb3JlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGF0IGVudHJ5OgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtZHNvLXpvb20tbWVudS5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSIyaW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmUgb2YgdGhlc2UgYWN0aW9ucyBhbGxvd3MgdXMgdG8gc2hvdyBhIHZpZXcgdGhhdCBkaXNwbGF5cyBhCisgICAgICAgICAgICAgICAgYnVzeWJveC1jZW50cmljIHZpZXcgb2YgdGhlIHByb2ZpbGVkIGZ1bmN0aW9ucyAoaW4gdGhpcyBjYXNlIHdlJ3ZlCisgICAgICAgICAgICAgICAgYWxzbyBleHBhbmRlZCBhbGwgdGhlIG5vZGVzIHVzaW5nIHRoZSAnRScga2V5KToKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BlcmYtd2dldC1idXN5Ym94LWRzby16b29tLnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZpbmFsbHksIHdlIGNhbiBzZWUgdGhhdCBub3cgdGhhdCB0aGUgYnVzeWJveCBkZWJ1Z2luZm8gaXMKKyAgICAgICAgICAgICAgICBpbnN0YWxsZWQsIHRoZSBwcmV2aW91c2x5IHVucmVzb2x2ZWQgc3ltYm9sIGluIHRoZQorICAgICAgICAgICAgICAgIHN5c19jbG9ja19nZXR0aW1lKCkgZW50cnkgbWVudGlvbmVkIHByZXZpb3VzbHkgaXMgbm93IHJlc29sdmVkLAorICAgICAgICAgICAgICAgIGFuZCBzaG93cyB0aGF0IHRoZSBzeXNfY2xvY2tfZ2V0dGltZSBzeXN0ZW0gY2FsbCB0aGF0IHdhcyB0aGUKKyAgICAgICAgICAgICAgICBzb3VyY2Ugb2YgNi43NSUgb2YgdGhlIGNvcHktdG8tdXNlciBvdmVyaGVhZCB3YXMgaW5pdGlhdGVkIGJ5CisgICAgICAgICAgICAgICAgdGhlIGhhbmRsZV9pbnB1dCgpIGJ1c3lib3ggZnVuY3Rpb246CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wZXJmLXdnZXQtZy1jb3B5LXRvLXVzZXItZXhwYW5kZWQtZGVidWdpbmZvLnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEF0IHRoZSBsb3dlc3QgbGV2ZWwgb2YgZGV0YWlsLCB3ZSBjYW4gZGl2ZSBkb3duIHRvIHRoZSBhc3NlbWJseQorICAgICAgICAgICAgICAgIGxldmVsIGFuZCBzZWUgd2hpY2ggaW5zdHJ1Y3Rpb25zIGNhdXNlZCB0aGUgbW9zdCBvdmVyaGVhZCBpbiBhCisgICAgICAgICAgICAgICAgZnVuY3Rpb24uIFByZXNzaW5nICdlbnRlcicgb24gdGhlICd1ZGhjcGNfbWFpbicgZnVuY3Rpb24sIHdlJ3JlCisgICAgICAgICAgICAgICAgYWdhaW4gcHJlc2VudGVkIHdpdGggYSBtZW51OgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtYW5ub3RhdGUtbWVudS5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSIyaW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTZWxlY3RpbmcgJ0Fubm90YXRlIHVkaGNwY19tYWluJywgd2UgZ2V0IGEgZGV0YWlsZWQgbGlzdGluZyBvZgorICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VzIGJ5IGluc3RydWN0aW9uIGZvciB0aGUgdWRoY3BjX21haW4gZnVuY3Rpb24uIEZyb20gdGhlCisgICAgICAgICAgICAgICAgZGlzcGxheSwgd2UgY2FuIHNlZSB0aGF0IG92ZXIgNTAlIG9mIHRoZSB0aW1lIHNwZW50IGluIHRoaXMKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyB0YWtlbiB1cCBieSBhIGNvdXBsZSB0ZXN0cyBhbmQgdGhlIG1vdmUgb2YgYQorICAgICAgICAgICAgICAgIGNvbnN0YW50ICgxKSB0byBhIHJlZ2lzdGVyOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGVyZi13Z2V0LWJ1c3lib3gtYW5ub3RhdGUtdWRoY3BjLnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGEgc2VndWUgaW50byB0cmFjaW5nLCBsZXQncyB0cnkgYW5vdGhlciBwcm9maWxlIHVzaW5nIGEKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgY291bnRlciwgc29tZXRoaW5nIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgJ2N5Y2xlcycuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSB0cmFjaW5nIGFuZCBwcm9maWxpbmcgaW5mcmFzdHJ1Y3R1cmUgaW4gTGludXggaGFzIGJlY29tZQorICAgICAgICAgICAgICAgIHVuaWZpZWQgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdXMgdG8gdXNlIHRoZSBzYW1lIHRvb2wgd2l0aCBhCisgICAgICAgICAgICAgICAgY29tcGxldGVseSBkaWZmZXJlbnQgc2V0IG9mIGNvdW50ZXJzLCBub3QganVzdCB0aGUgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICBoYXJkd2FyZSBjb3VudGVycyB0aGF0IHRyYWRpdGlvbmFsIHRvb2xzIGhhdmUgaGFkIHRvIHJlc3RyaWN0CisgICAgICAgICAgICAgICAgdGhlbXNlbHZlcyB0byAob2YgY291cnNlIHRoZSB0cmFkaXRpb25hbCB0b29scyBjYW4gYWxzbyBtYWtlIHVzZQorICAgICAgICAgICAgICAgIG9mIHRoZSBleHBhbmRlZCBwb3NzaWJpbGl0aWVzIG5vdyBhdmFpbGFibGUgdG8gdGhlbSwgYW5kIGluIHNvbWUKKyAgICAgICAgICAgICAgICBjYXNlcyBoYXZlLCBhcyBtZW50aW9uZWQgcHJldmlvdXNseSkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdlIGNhbiBnZXQgYSBsaXN0IG9mIHRoZSBhdmFpbGFibGUgZXZlbnRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgICAgICAgICBwcm9maWxlIGEgd29ya2xvYWQgdmlhICdwZXJmIGxpc3QnOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIGxpc3QKKworICAgICBMaXN0IG9mIHByZS1kZWZpbmVkIGV2ZW50cyAodG8gYmUgdXNlZCBpbiAtZSk6CisgICAgICBjcHUtY3ljbGVzIE9SIGN5Y2xlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBzdGFsbGVkLWN5Y2xlcy1mcm9udGVuZCBPUiBpZGxlLWN5Y2xlcy1mcm9udGVuZCAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBzdGFsbGVkLWN5Y2xlcy1iYWNrZW5kIE9SIGlkbGUtY3ljbGVzLWJhY2tlbmQgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBpbnN0cnVjdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBjYWNoZS1yZWZlcmVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBjYWNoZS1taXNzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBicmFuY2gtaW5zdHJ1Y3Rpb25zIE9SIGJyYW5jaGVzICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBicmFuY2gtbWlzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICBidXMtY3ljbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisgICAgICByZWYtY3ljbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSGFyZHdhcmUgZXZlbnRdCisKKyAgICAgIGNwdS1jbG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIHRhc2stY2xvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIHBhZ2UtZmF1bHRzIE9SIGZhdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIG1pbm9yLWZhdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIG1ham9yLWZhdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIGNvbnRleHQtc3dpdGNoZXMgT1IgY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIGNwdS1taWdyYXRpb25zIE9SIG1pZ3JhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIGFsaWdubWVudC1mYXVsdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKyAgICAgIGVtdWxhdGlvbi1mYXVsdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb2Z0d2FyZSBldmVudF0KKworICAgICAgTDEtZGNhY2hlLWxvYWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hhcmR3YXJlIGNhY2hlIGV2ZW50XQorICAgICAgTDEtZGNhY2hlLWxvYWQtbWlzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hhcmR3YXJlIGNhY2hlIGV2ZW50XQorICAgICAgTDEtZGNhY2hlLXByZWZldGNoLW1pc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgW0hhcmR3YXJlIGNhY2hlIGV2ZW50XQorICAgICAgTDEtaWNhY2hlLWxvYWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hhcmR3YXJlIGNhY2hlIGV2ZW50XQorICAgICAgTDEtaWNhY2hlLWxvYWQtbWlzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hhcmR3YXJlIGNhY2hlIGV2ZW50XQorICAgICAgLgorICAgICAgLgorICAgICAgLgorICAgICAgck5OTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JhdyBoYXJkd2FyZSBldmVudCBkZXNjcmlwdG9yXQorICAgICAgY3B1L3QxPXYxWyx0Mj12Mix0MyAuLi5dL21vZGlmaWVyICAgICAgICAgICAgICAgICAgW1JhdyBoYXJkd2FyZSBldmVudCBkZXNjcmlwdG9yXQorICAgICAgIChzZWUgJ3BlcmYgbGlzdCAtLWhlbHAnIG9uIGhvdyB0byBlbmNvZGUgaXQpCisKKyAgICAgIG1lbTombHQ7YWRkciZndDtbOmFjY2Vzc10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtIYXJkd2FyZSBicmVha3BvaW50XQorCisgICAgICBzdW5ycGM6cnBjX2NhbGxfc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHN1bnJwYzpycGNfYmluZF9zdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc3VucnBjOnJwY19jb25uZWN0X3N0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzdW5ycGM6cnBjX3Rhc2tfYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHNrYjprZnJlZV9za2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc2tiOmNvbnN1bWVfc2tiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBza2I6c2tiX2NvcHlfZGF0YWdyYW1faW92ZWMgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIG5ldDpuZXRfZGV2X3htaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgbmV0Om5ldF9kZXZfcXVldWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBuZXQ6bmV0aWZfcmVjZWl2ZV9za2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIG5ldDpuZXRpZl9yeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgbmFwaTpuYXBpX3BvbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzb2NrOnNvY2tfcmN2cXVldWVfZnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHNvY2s6c29ja19leGNlZWRfYnVmX2xpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgdWRwOnVkcF9mYWlsX3F1ZXVlX3Jjdl9za2IgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBoZGE6aGRhX3NlbmRfY21kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGhkYTpoZGFfZ2V0X3Jlc3BvbnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgaGRhOmhkYV9idXNfcmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzY3NpOnNjc2lfZGlzcGF0Y2hfY21kX3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHNjc2k6c2NzaV9kaXNwYXRjaF9jbWRfZXJyb3IgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc2NzaTpzY3NpX2VoX3dha2V1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBkcm06ZHJtX3ZibGFua19ldmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGRybTpkcm1fdmJsYW5rX2V2ZW50X3F1ZXVlZCAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgZHJtOmRybV92YmxhbmtfZXZlbnRfZGVsaXZlcmVkICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICByYW5kb206bWl4X3Bvb2xfYnl0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHJhbmRvbTptaXhfcG9vbF9ieXRlc19ub2xvY2sgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgcmFuZG9tOmNyZWRpdF9lbnRyb3B5X2JpdHMgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBncGlvOmdwaW9fZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGdwaW86Z3Bpb192YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgYmxvY2s6YmxvY2tfcnFfYWJvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBibG9jazpibG9ja19ycV9yZXF1ZXVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGJsb2NrOmJsb2NrX3JxX2lzc3VlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgYmxvY2s6YmxvY2tfYmlvX2JvdW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBibG9jazpibG9ja19iaW9fY29tcGxldGUgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGJsb2NrOmJsb2NrX2Jpb19iYWNrbWVyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgLgorICAgICAgLgorICAgICAgd3JpdGViYWNrOndyaXRlYmFja193YWtlX3RocmVhZCAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICB3cml0ZWJhY2s6d3JpdGViYWNrX3dha2VfZm9ya2VyX3RocmVhZCAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHdyaXRlYmFjazp3cml0ZWJhY2tfYmRpX3JlZ2lzdGVyICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgLgorICAgICAgLgorICAgICAgd3JpdGViYWNrOndyaXRlYmFja19zaW5nbGVfaW5vZGVfcmVxdWV1ZSAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICB3cml0ZWJhY2s6d3JpdGViYWNrX3NpbmdsZV9pbm9kZSAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGttZW06a21hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAga21lbTprbWVtX2NhY2hlX2FsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBrbWVtOm1tX3BhZ2VfYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGttZW06bW1fcGFnZV9hbGxvY196b25lX2xvY2tlZCAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAga21lbTptbV9wYWdlX3BjcHVfZHJhaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBrbWVtOm1tX3BhZ2VfYWxsb2NfZXh0ZnJhZyAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHZtc2NhbjptbV92bXNjYW5fa3N3YXBkX3NsZWVwICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgdm1zY2FuOm1tX3Ztc2Nhbl9rc3dhcGRfd2FrZSAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICB2bXNjYW46bW1fdm1zY2FuX3dha2V1cF9rc3dhcGQgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHZtc2NhbjptbV92bXNjYW5fZGlyZWN0X3JlY2xhaW1fYmVnaW4gICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgLgorICAgICAgLgorICAgICAgbW9kdWxlOm1vZHVsZV9nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBtb2R1bGU6bW9kdWxlX3B1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIG1vZHVsZTptb2R1bGVfcmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc2NoZWQ6c2NoZWRfa3RocmVhZF9zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzY2hlZDpzY2hlZF93YWtldXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHNjaGVkOnNjaGVkX3dha2V1cF9uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc2NoZWQ6c2NoZWRfcHJvY2Vzc19mb3JrICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzY2hlZDpzY2hlZF9wcm9jZXNzX2V4ZWMgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHNjaGVkOnNjaGVkX3N0YXRfcnVudGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgcmN1OnJjdV91dGlsaXphdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICB3b3JrcXVldWU6d29ya3F1ZXVlX3F1ZXVlX3dvcmsgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHdvcmtxdWV1ZTp3b3JrcXVldWVfZXhlY3V0ZV9lbmQgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc2lnbmFsOnNpZ25hbF9nZW5lcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzaWduYWw6c2lnbmFsX2RlbGl2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHRpbWVyOnRpbWVyX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgdGltZXI6dGltZXJfc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICB0aW1lcjpocnRpbWVyX2NhbmNlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHRpbWVyOml0aW1lcl9zdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgdGltZXI6aXRpbWVyX2V4cGlyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBpcnE6aXJxX2hhbmRsZXJfZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGlycTppcnFfaGFuZGxlcl9leGl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgaXJxOnNvZnRpcnFfZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBpcnE6c29mdGlycV9leGl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIGlycTpzb2Z0aXJxX3JhaXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgcHJpbnRrOmNvbnNvbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICB0YXNrOnRhc2tfbmV3dGFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHRhc2s6dGFza19yZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc3lzY2FsbHM6c3lzX2VudGVyX3NvY2tldGNhbGwgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICBzeXNjYWxsczpzeXNfZXhpdF9zb2NrZXRjYWxsICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIC4KKyAgICAgIC4KKyAgICAgIC4KKyAgICAgIHN5c2NhbGxzOnN5c19lbnRlcl91bnNoYXJlICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgc3lzY2FsbHM6c3lzX2V4aXRfdW5zaGFyZSAgICAgICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgICAgICByYXdfc3lzY2FsbHM6c3lzX2VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVHJhY2Vwb2ludCBldmVudF0KKyAgICAgIHJhd19zeXNjYWxsczpzeXNfZXhpdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtUcmFjZXBvaW50IGV2ZW50XQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VHlpbmcgaXQgVG9nZXRoZXI6PC9lbXBoYXNpcz4gVGhlc2UgYXJlIGV4YWN0bHkgdGhlIHNhbWUgc2V0IG9mIGV2ZW50cyBkZWZpbmVkCisgICAgICAgICAgICAgICAgYnkgdGhlIHRyYWNlIGV2ZW50IHN1YnN5c3RlbSBhbmQgZXhwb3NlZCBieQorICAgICAgICAgICAgICAgIGZ0cmFjZS90cmFjZWNtZC9rZXJuZWxzaGFyayBhcyBmaWxlcyBpbgorICAgICAgICAgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzLCBieSBTeXN0ZW1UYXAgYXMKKyAgICAgICAgICAgICAgICBrZXJuZWwudHJhY2UoInRyYWNlcG9pbnRfbmFtZSIpIGFuZCAocGFydGlhbGx5KSBhY2Nlc3NlZCBieSBMVFRuZy4KKyAgICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmx5IGEgc3Vic2V0IG9mIHRoZXNlIHdvdWxkIGJlIG9mIGludGVyZXN0IHRvIHVzIHdoZW4gbG9va2luZyBhdAorICAgICAgICAgICAgICAgIHRoaXMgd29ya2xvYWQsIHNvIGxldCdzIGNob29zZSB0aGUgbW9zdCBsaWtlbHkgc3Vic3lzdGVtcworICAgICAgICAgICAgICAgIChpZGVudGlmaWVkIGJ5IHRoZSBzdHJpbmcgYmVmb3JlIHRoZSBjb2xvbiBpbiB0aGUgVHJhY2Vwb2ludCBldmVudHMpCisgICAgICAgICAgICAgICAgYW5kIGRvIGEgJ3BlcmYgc3RhdCcgcnVuIHVzaW5nIG9ubHkgdGhvc2Ugd2lsZGNhcmRlZCBzdWJzeXN0ZW1zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHN0YXQgLWUgc2tiOiogLWUgbmV0OiogLWUgbmFwaToqIC1lIHNjaGVkOiogLWUgd29ya3F1ZXVlOiogLWUgaXJxOiogLWUgc3lzY2FsbHM6KiB3Z2V0IDx1bGluayB1cmw9J2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyJz5odHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6MjwvdWxpbms+CisgICAgIFBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdHMgZm9yICd3Z2V0IDx1bGluayB1cmw9J2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyJz5odHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6MjwvdWxpbms+JzoKKworICAgICAgICAgICAgICAgICAyMzMyMyBza2I6a2ZyZWVfc2tiCisgICAgICAgICAgICAgICAgICAgICAwIHNrYjpjb25zdW1lX3NrYgorICAgICAgICAgICAgICAgICA0OTg5NyBza2I6c2tiX2NvcHlfZGF0YWdyYW1faW92ZWMKKyAgICAgICAgICAgICAgICAgIDYyMTcgbmV0Om5ldF9kZXZfeG1pdAorICAgICAgICAgICAgICAgICAgNjIxNyBuZXQ6bmV0X2Rldl9xdWV1ZQorICAgICAgICAgICAgICAgICAgNzk2MiBuZXQ6bmV0aWZfcmVjZWl2ZV9za2IKKyAgICAgICAgICAgICAgICAgICAgIDIgbmV0Om5ldGlmX3J4CisgICAgICAgICAgICAgICAgICA4MzQwIG5hcGk6bmFwaV9wb2xsCisgICAgICAgICAgICAgICAgICAgICAwIHNjaGVkOnNjaGVkX2t0aHJlYWRfc3RvcAorICAgICAgICAgICAgICAgICAgICAgMCBzY2hlZDpzY2hlZF9rdGhyZWFkX3N0b3BfcmV0CisgICAgICAgICAgICAgICAgICAzNzQ5IHNjaGVkOnNjaGVkX3dha2V1cAorICAgICAgICAgICAgICAgICAgICAgMCBzY2hlZDpzY2hlZF93YWtldXBfbmV3CisgICAgICAgICAgICAgICAgICAgICAwIHNjaGVkOnNjaGVkX3N3aXRjaAorICAgICAgICAgICAgICAgICAgICAyOSBzY2hlZDpzY2hlZF9taWdyYXRlX3Rhc2sKKyAgICAgICAgICAgICAgICAgICAgIDAgc2NoZWQ6c2NoZWRfcHJvY2Vzc19mcmVlCisgICAgICAgICAgICAgICAgICAgICAxIHNjaGVkOnNjaGVkX3Byb2Nlc3NfZXhpdAorICAgICAgICAgICAgICAgICAgICAgMCBzY2hlZDpzY2hlZF93YWl0X3Rhc2sKKyAgICAgICAgICAgICAgICAgICAgIDAgc2NoZWQ6c2NoZWRfcHJvY2Vzc193YWl0CisgICAgICAgICAgICAgICAgICAgICAwIHNjaGVkOnNjaGVkX3Byb2Nlc3NfZm9yaworICAgICAgICAgICAgICAgICAgICAgMSBzY2hlZDpzY2hlZF9wcm9jZXNzX2V4ZWMKKyAgICAgICAgICAgICAgICAgICAgIDAgc2NoZWQ6c2NoZWRfc3RhdF93YWl0CisgICAgICAgICAyMTA2NTE5NDE1NjQxIHNjaGVkOnNjaGVkX3N0YXRfc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgIDAgc2NoZWQ6c2NoZWRfc3RhdF9pb3dhaXQKKyAgICAgICAgICAgICAxNDc0NTM2MTMgc2NoZWQ6c2NoZWRfc3RhdF9ibG9ja2VkCisgICAgICAgICAgIDEyOTAzMDI2OTU1IHNjaGVkOnNjaGVkX3N0YXRfcnVudGltZQorICAgICAgICAgICAgICAgICAgICAgMCBzY2hlZDpzY2hlZF9waV9zZXRwcmlvCisgICAgICAgICAgICAgICAgICAzNTc0IHdvcmtxdWV1ZTp3b3JrcXVldWVfcXVldWVfd29yaworICAgICAgICAgICAgICAgICAgMzU3NCB3b3JrcXVldWU6d29ya3F1ZXVlX2FjdGl2YXRlX3dvcmsKKyAgICAgICAgICAgICAgICAgICAgIDAgd29ya3F1ZXVlOndvcmtxdWV1ZV9leGVjdXRlX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICAwIHdvcmtxdWV1ZTp3b3JrcXVldWVfZXhlY3V0ZV9lbmQKKyAgICAgICAgICAgICAgICAgMTY2MzEgaXJxOmlycV9oYW5kbGVyX2VudHJ5CisgICAgICAgICAgICAgICAgIDE2NjMxIGlycTppcnFfaGFuZGxlcl9leGl0CisgICAgICAgICAgICAgICAgIDI4NTIxIGlycTpzb2Z0aXJxX2VudHJ5CisgICAgICAgICAgICAgICAgIDI4NTIxIGlycTpzb2Z0aXJxX2V4aXQKKyAgICAgICAgICAgICAgICAgMjg3MjggaXJxOnNvZnRpcnFfcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIDEgc3lzY2FsbHM6c3lzX2VudGVyX3NlbmRtbXNnCisgICAgICAgICAgICAgICAgICAgICAxIHN5c2NhbGxzOnN5c19leGl0X3NlbmRtbXNnCisgICAgICAgICAgICAgICAgICAgICAwIHN5c2NhbGxzOnN5c19lbnRlcl9yZWN2bW1zZworICAgICAgICAgICAgICAgICAgICAgMCBzeXNjYWxsczpzeXNfZXhpdF9yZWN2bW1zZworICAgICAgICAgICAgICAgICAgICAxNCBzeXNjYWxsczpzeXNfZW50ZXJfc29ja2V0Y2FsbAorICAgICAgICAgICAgICAgICAgICAxNCBzeXNjYWxsczpzeXNfZXhpdF9zb2NrZXRjYWxsCisgICAgICAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgIDE2OTY1IHN5c2NhbGxzOnN5c19lbnRlcl9yZWFkCisgICAgICAgICAgICAgICAgIDE2OTY1IHN5c2NhbGxzOnN5c19leGl0X3JlYWQKKyAgICAgICAgICAgICAgICAgMTI4NTQgc3lzY2FsbHM6c3lzX2VudGVyX3dyaXRlCisgICAgICAgICAgICAgICAgIDEyODU0IHN5c2NhbGxzOnN5c19leGl0X3dyaXRlCisgICAgICAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAuCisKKyAgICAgICAgICA1OC4wMjk3MTA5NzIgc2Vjb25kcyB0aW1lIGVsYXBzZWQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgTGV0J3MgcGljayBvbmUgb2YgdGhlc2UgdHJhY2Vwb2ludHMgYW5kIHRlbGwgcGVyZiB0byBkbyBhIHByb2ZpbGUKKyAgICAgICAgICAgICAgICB1c2luZyBpdCBhcyB0aGUgc2FtcGxpbmcgZXZlbnQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgcmVjb3JkIC1nIC1lIHNjaGVkOnNjaGVkX3dha2V1cCB3Z2V0IDx1bGluayB1cmw9J2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyJz5odHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6MjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2NoZWQtd2FrZXVwLXByb2ZpbGUucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHNjcmVlbnNob3QgYWJvdmUgc2hvd3MgdGhlIHJlc3VsdHMgb2YgcnVubmluZyBhIHByb2ZpbGUgdXNpbmcKKyAgICAgICAgICAgICAgICBzY2hlZDpzY2hlZF9zd2l0Y2ggdHJhY2Vwb2ludCwgd2hpY2ggc2hvd3MgdGhlIHJlbGF0aXZlIGNvc3RzIG9mCisgICAgICAgICAgICAgICAgdmFyaW91cyBwYXRocyB0byBzY2hlZF93YWtldXAgKG5vdGUgdGhhdCBzY2hlZF93YWtldXAgaXMgdGhlCisgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgdHJhY2Vwb2ludCAtIGl0J3MgYWN0dWFsbHkgZGVmaW5lZCBqdXN0IGluc2lkZQorICAgICAgICAgICAgICAgIHR0d3VfZG9fd2FrZXVwKCksIHdoaWNoIGFjY291bnRzIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBhY3R1YWxseQorICAgICAgICAgICAgICAgIGRpc3BsYXllZCBpbiB0aGUgcHJvZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIC8qCisgICAgICAqIE1hcmsgdGhlIHRhc2sgcnVubmFibGUgYW5kIHBlcmZvcm0gd2FrZXVwLXByZWVtcHRpb24uCisgICAgICAqLworICAgICBzdGF0aWMgdm9pZAorICAgICB0dHd1X2RvX3dha2V1cChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB3YWtlX2ZsYWdzKQorICAgICB7CisgICAgICAgICAgdHJhY2Vfc2NoZWRfd2FrZXVwKHAsIHRydWUpOworICAgICAgICAgIC4KKyAgICAgICAgICAuCisgICAgICAgICAgLgorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEEgY291cGxlIG9mIHRoZSBtb3JlIGludGVyZXN0aW5nIGNhbGxjaGFpbnMgYXJlIGV4cGFuZGVkIGFuZAorICAgICAgICAgICAgICAgIGRpc3BsYXllZCBhYm92ZSwgYmFzaWNhbGx5IHNvbWUgbmV0d29yayByZWNlaXZlIHBhdGhzIHRoYXQKKyAgICAgICAgICAgICAgICBwcmVzdW1hYmx5IGVuZCB1cCB3YWtpbmcgdXAgd2dldCAoYnVzeWJveCkgd2hlbiBuZXR3b3JrIGRhdGEgaXMKKyAgICAgICAgICAgICAgICByZWFkeS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGJlY2F1c2UgdHJhY2Vwb2ludHMgYXJlIG5vcm1hbGx5IHVzZWQgZm9yIHRyYWNpbmcsCisgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgc2FtcGxpbmcgcGVyaW9kIGZvciB0cmFjZXBvaW50cyBpcyAxIGkuZS4gZm9yCisgICAgICAgICAgICAgICAgdHJhY2Vwb2ludHMgcGVyZiB3aWxsIHNhbXBsZSBvbiBldmVyeSBldmVudCBvY2N1cnJlbmNlICh0aGlzCisgICAgICAgICAgICAgICAgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhlIC1jIG9wdGlvbikuIFRoaXMgaXMgaW4gY29udHJhc3QgdG8KKyAgICAgICAgICAgICAgICBoYXJkd2FyZSBjb3VudGVycyBzdWNoIGFzIGZvciBleGFtcGxlIHRoZSBkZWZhdWx0ICdjeWNsZXMnCisgICAgICAgICAgICAgICAgaGFyZHdhcmUgY291bnRlciB1c2VkIGZvciBub3JtYWwgcHJvZmlsaW5nLCB3aGVyZSBzYW1wbGluZworICAgICAgICAgICAgICAgIHBlcmlvZHMgYXJlIG11Y2ggaGlnaGVyIChpbiB0aGUgdGhvdXNhbmRzKSBiZWNhdXNlIHByb2ZpbGluZyBzaG91bGQKKyAgICAgICAgICAgICAgICBoYXZlIGFzIGxvdyBhbiBvdmVyaGVhZCBhcyBwb3NzaWJsZSBhbmQgc2FtcGxpbmcgb24gZXZlcnkgY3ljbGUKKyAgICAgICAgICAgICAgICB3b3VsZCBiZSBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy1wZXJmLXRvLWRvLWJhc2ljLXRyYWNpbmcnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIHBlcmYgdG8gZG8gQmFzaWMgVHJhY2luZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFByb2ZpbGluZyBpcyBhIGdyZWF0IHRvb2wgZm9yIHNvbHZpbmcgbWFueSBwcm9ibGVtcyBvciBmb3IKKyAgICAgICAgICAgICAgICBnZXR0aW5nIGEgaGlnaC1sZXZlbCB2aWV3IG9mIHdoYXQncyBnb2luZyBvbiB3aXRoIGEgd29ya2xvYWQgb3IKKyAgICAgICAgICAgICAgICBhY3Jvc3MgdGhlIHN5c3RlbS4gSXQgaXMgaG93ZXZlciBieSBkZWZpbml0aW9uIGFuIGFwcHJveGltYXRpb24sCisgICAgICAgICAgICAgICAgYXMgc3VnZ2VzdGVkIGJ5IHRoZSBtb3N0IHByb21pbmVudCB3b3JkIGFzc29jaWF0ZWQgd2l0aCBpdCwKKyAgICAgICAgICAgICAgICAnc2FtcGxpbmcnLiBPbiB0aGUgb25lIGhhbmQsIGl0IGFsbG93cyBhIHJlcHJlc2VudGF0aXZlIHBpY3R1cmUgb2YKKyAgICAgICAgICAgICAgICB3aGF0J3MgZ29pbmcgb24gaW4gdGhlIHN5c3RlbSB0byBiZSBjaGVhcGx5IHRha2VuLCBidXQgb24gdGhlIG90aGVyCisgICAgICAgICAgICAgICAgaGFuZCwgdGhhdCBjaGVhcG5lc3MgbGltaXRzIGl0cyB1dGlsaXR5IHdoZW4gdGhhdCBkYXRhIHN1Z2dlc3RzIGEKKyAgICAgICAgICAgICAgICBuZWVkIHRvICdkaXZlIGRvd24nIG1vcmUgZGVlcGx5IHRvIGRpc2NvdmVyIHdoYXQncyByZWFsbHkgZ29pbmcKKyAgICAgICAgICAgICAgICBvbi4gSW4gc3VjaCBjYXNlcywgdGhlIG9ubHkgd2F5IHRvIHNlZSB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uIGlzCisgICAgICAgICAgICAgICAgdG8gYmUgYWJsZSB0byBsb29rIGF0IChvciBzdW1tYXJpemUgbW9yZSBpbnRlbGxpZ2VudGx5KSB0aGUKKyAgICAgICAgICAgICAgICBpbmRpdmlkdWFsIHN0ZXBzIHRoYXQgZ28gaW50byB0aGUgaGlnaGVyLWxldmVsIGJlaGF2aW9yIGV4cG9zZWQKKyAgICAgICAgICAgICAgICBieSB0aGUgY29hcnNlLWdyYWluZWQgcHJvZmlsaW5nIGRhdGEuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGEgY29uY3JldGUgZXhhbXBsZSwgd2UgY2FuIHRyYWNlIGFsbCB0aGUgZXZlbnRzIHdlIHRoaW5rIG1pZ2h0CisgICAgICAgICAgICAgICAgYmUgYXBwbGljYWJsZSB0byBvdXIgd29ya2xvYWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgcmVjb3JkIC1nIC1lIHNrYjoqIC1lIG5ldDoqIC1lIG5hcGk6KiAtZSBzY2hlZDpzY2hlZF9zd2l0Y2ggLWUgc2NoZWQ6c2NoZWRfd2FrZXVwIC1lIGlycToqCisgICAgICAtZSBzeXNjYWxsczpzeXNfZW50ZXJfcmVhZCAtZSBzeXNjYWxsczpzeXNfZXhpdF9yZWFkIC1lIHN5c2NhbGxzOnN5c19lbnRlcl93cml0ZSAtZSBzeXNjYWxsczpzeXNfZXhpdF93cml0ZQorICAgICAgd2dldCA8dWxpbmsgdXJsPSdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6Mic+aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejI8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBXZSBjYW4gbG9vayBhdCB0aGUgcmF3IHRyYWNlIG91dHB1dCB1c2luZyAncGVyZiBzY3JpcHQnIHdpdGggbm8KKyAgICAgICAgICAgICAgICBhcmd1bWVudHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgc2NyaXB0CisKKyAgICAgICAgICAgcGVyZiAgMTI2MiBbMDAwXSAxMTYyNC44NTcwODI6IHN5c19leGl0X3JlYWQ6IDB4MAorICAgICAgICAgICBwZXJmICAxMjYyIFswMDBdIDExNjI0Ljg1NzE5Mzogc2NoZWRfd2FrZXVwOiBjb21tPW1pZ3JhdGlvbi8wIHBpZD02IHByaW89MCBzdWNjZXNzPTEgdGFyZ2V0X2NwdT0wMDAKKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTgwMjE6IHNvZnRpcnFfcmFpc2U6IHZlYz0xIFthY3Rpb249VElNRVJdCisgICAgICAgICAgIHdnZXQgIDEyNjIgWzAwMV0gMTE2MjQuODU4MDc0OiBzb2Z0aXJxX2VudHJ5OiB2ZWM9MSBbYWN0aW9uPVRJTUVSXQorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1ODA4MTogc29mdGlycV9leGl0OiB2ZWM9MSBbYWN0aW9uPVRJTUVSXQorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1ODE2Njogc3lzX2VudGVyX3JlYWQ6IGZkOiAweDAwMDMsIGJ1ZjogMHhiZjgyYzk0MCwgY291bnQ6IDB4MDIwMAorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1ODE3Nzogc3lzX2V4aXRfcmVhZDogMHgyMDAKKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTg4Nzg6IGtmcmVlX3NrYjogc2tiYWRkcj0weGViMjQ4ZDgwIHByb3RvY29sPTAgbG9jYXRpb249MHhjMTVhNTMwOAorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1ODk0NToga2ZyZWVfc2tiOiBza2JhZGRyPTB4ZWIyNDgwMDAgcHJvdG9jb2w9MCBsb2NhdGlvbj0weGMxNWE1MzA4CisgICAgICAgICAgIHdnZXQgIDEyNjIgWzAwMV0gMTE2MjQuODU5MDIwOiBzb2Z0aXJxX3JhaXNlOiB2ZWM9MSBbYWN0aW9uPVRJTUVSXQorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1OTA3Njogc29mdGlycV9lbnRyeTogdmVjPTEgW2FjdGlvbj1USU1FUl0KKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTkwODM6IHNvZnRpcnFfZXhpdDogdmVjPTEgW2FjdGlvbj1USU1FUl0KKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTkxNjc6IHN5c19lbnRlcl9yZWFkOiBmZDogMHgwMDAzLCBidWY6IDB4Yjc3MjAwMDAsIGNvdW50OiAweDA0MDAKKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTkxOTI6IHN5c19leGl0X3JlYWQ6IDB4MWQ3CisgICAgICAgICAgIHdnZXQgIDEyNjIgWzAwMV0gMTE2MjQuODU5MjI4OiBzeXNfZW50ZXJfcmVhZDogZmQ6IDB4MDAwMywgYnVmOiAweGI3NzIwMDAwLCBjb3VudDogMHgwNDAwCisgICAgICAgICAgIHdnZXQgIDEyNjIgWzAwMV0gMTE2MjQuODU5MjMzOiBzeXNfZXhpdF9yZWFkOiAweDAKKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTk1NzM6IHN5c19lbnRlcl9yZWFkOiBmZDogMHgwMDAzLCBidWY6IDB4YmY4MmM1ODAsIGNvdW50OiAweDAyMDAKKyAgICAgICAgICAgd2dldCAgMTI2MiBbMDAxXSAxMTYyNC44NTk1ODQ6IHN5c19leGl0X3JlYWQ6IDB4MjAwCisgICAgICAgICAgIHdnZXQgIDEyNjIgWzAwMV0gMTE2MjQuODU5ODY0OiBzeXNfZW50ZXJfcmVhZDogZmQ6IDB4MDAwMywgYnVmOiAweGI3NzIwMDAwLCBjb3VudDogMHgwNDAwCisgICAgICAgICAgIHdnZXQgIDEyNjIgWzAwMV0gMTE2MjQuODU5ODg4OiBzeXNfZXhpdF9yZWFkOiAweDQwMAorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1OTkzNTogc3lzX2VudGVyX3JlYWQ6IGZkOiAweDAwMDMsIGJ1ZjogMHhiNzcyMDAwMCwgY291bnQ6IDB4MDQwMAorICAgICAgICAgICB3Z2V0ICAxMjYyIFswMDFdIDExNjI0Ljg1OTk0NDogc3lzX2V4aXRfcmVhZDogMHg0MDAKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBnaXZlcyB1cyBhIGRldGFpbGVkIHRpbWVzdGFtcGVkIHNlcXVlbmNlIG9mIGV2ZW50cyB0aGF0CisgICAgICAgICAgICAgICAgb2NjdXJyZWQgd2l0aGluIHRoZSB3b3JrbG9hZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgZXZlbnRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBtYW55IHdheXMsIHByb2ZpbGluZyBjYW4gYmUgdmlld2VkIGFzIGEgc3Vic2V0IG9mIHRyYWNpbmcgLQorICAgICAgICAgICAgICAgIHRoZW9yZXRpY2FsbHksIGlmIHlvdSBoYXZlIGEgc2V0IG9mIHRyYWNlIGV2ZW50cyB0aGF0J3Mgc3VmZmljaWVudAorICAgICAgICAgICAgICAgIHRvIGNhcHR1cmUgYWxsIHRoZSBpbXBvcnRhbnQgYXNwZWN0cyBvZiBhIHdvcmtsb2FkLCB5b3UgY2FuIGRlcml2ZQorICAgICAgICAgICAgICAgIGFueSBvZiB0aGUgcmVzdWx0cyBvciB2aWV3cyB0aGF0IGEgcHJvZmlsaW5nIHJ1biBjYW4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFub3RoZXIgYXNwZWN0IG9mIHRyYWRpdGlvbmFsIHByb2ZpbGluZyBpcyB0aGF0IHdoaWxlIHBvd2VyZnVsIGluCisgICAgICAgICAgICAgICAgbWFueSB3YXlzLCBpdCdzIGxpbWl0ZWQgYnkgdGhlIGdyYW51bGFyaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEuCisgICAgICAgICAgICAgICAgUHJvZmlsaW5nIHRvb2xzIG9mZmVyIHZhcmlvdXMgd2F5cyBvZiBzb3J0aW5nIGFuZCBwcmVzZW50aW5nIHRoZQorICAgICAgICAgICAgICAgIHNhbXBsZSBkYXRhLCB3aGljaCBtYWtlIGl0IG11Y2ggbW9yZSB1c2VmdWwgYW5kIGFtZW5hYmxlIHRvIHVzZXIKKyAgICAgICAgICAgICAgICBleHBlcmltZW50YXRpb24sIGJ1dCBpbiB0aGUgZW5kIGl0IGNhbid0IGJlIHVzZWQgaW4gYW4gb3Blbi1lbmRlZAorICAgICAgICAgICAgICAgIHdheSB0byBleHRyYWN0IGRhdGEgdGhhdCBqdXN0IGlzbid0IHByZXNlbnQgYXMgYSBjb25zZXF1ZW5jZSBvZgorICAgICAgICAgICAgICAgIHRoZSBmYWN0IHRoYXQgY29uY2VwdHVhbGx5LCBtb3N0IG9mIGl0IGhhcyBiZWVuIHRocm93biBhd2F5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGdWxsLWJsb3duIGRldGFpbGVkIHRyYWNpbmcgZGF0YSBkb2VzIGhvd2V2ZXIgb2ZmZXIgdGhlIG9wcG9ydHVuaXR5CisgICAgICAgICAgICAgICAgdG8gbWFuaXB1bGF0ZSBhbmQgcHJlc2VudCB0aGUgaW5mb3JtYXRpb24gY29sbGVjdGVkIGR1cmluZyBhCisgICAgICAgICAgICAgICAgdHJhY2luZyBydW4gaW4gYW4gaW5maW5pdGUgdmFyaWV0eSBvZiB3YXlzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIHdheSB0byBsb29rIGF0IGl0IGlzIHRoYXQgdGhlcmUgYXJlIG9ubHkgc28gbWFueSB3YXlzIHRoYXQKKyAgICAgICAgICAgICAgICB0aGUgJ3ByaW1pdGl2ZScgY291bnRlcnMgY2FuIGJlIHVzZWQgb24gdGhlaXIgb3duIHRvIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgaW50ZXJlc3Rpbmcgb3V0cHV0OyB0byBnZXQgYW55dGhpbmcgbW9yZSBjb21wbGljYXRlZCB0aGFuIHNpbXBsZQorICAgICAgICAgICAgICAgIGNvdW50cyByZXF1aXJlcyBzb21lIGFtb3VudCBvZiBhZGRpdGlvbmFsIGxvZ2ljLCB3aGljaCBpcyB0eXBpY2FsbHkKKyAgICAgICAgICAgICAgICB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBwcm9ibGVtIGF0IGhhbmQuIEZvciBleGFtcGxlLCBpZiB3ZSB3YW50ZWQgdG8KKyAgICAgICAgICAgICAgICBtYWtlIHVzZSBvZiBhICdjb3VudGVyJyB0aGF0IG1hcHMgdG8gdGhlIHZhbHVlIG9mIHRoZSB0aW1lCisgICAgICAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHdoZW4gYSBwcm9jZXNzIHdhcyBzY2hlZHVsZWQgdG8gcnVuIG9uIGEKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgYW5kIHRoZSB0aW1lIGl0IGFjdHVhbGx5IHJhbiwgd2Ugd291bGRuJ3QgZXhwZWN0IHN1Y2gKKyAgICAgICAgICAgICAgICBhIGNvdW50ZXIgdG8gZXhpc3Qgb24gaXRzIG93biwgYnV0IHdlIGNvdWxkIGRlcml2ZSBvbmUgY2FsbGVkIHNheQorICAgICAgICAgICAgICAgICd3YWtldXBfbGF0ZW5jeScgYW5kIHVzZSBpdCB0byBleHRyYWN0IGEgdXNlZnVsIHZpZXcgb2YgdGhhdCBtZXRyaWMKKyAgICAgICAgICAgICAgICBmcm9tIHRyYWNlIGRhdGEuIExpa2V3aXNlLCB3ZSByZWFsbHkgY2FuJ3QgZmlndXJlIG91dCBmcm9tIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgcHJvZmlsaW5nIHRvb2xzIGhvdyBtdWNoIGRhdGEgZXZlcnkgcHJvY2VzcyBvbiB0aGUgc3lzdGVtIHJlYWRzIGFuZAorICAgICAgICAgICAgICAgIHdyaXRlcywgYWxvbmcgd2l0aCBob3cgbWFueSBvZiB0aG9zZSByZWFkcyBhbmQgd3JpdGVzIGZhaWwKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWx5LiBJZiB3ZSBoYXZlIHN1ZmZpY2llbnQgdHJhY2UgZGF0YSwgaG93ZXZlciwgd2UgY291bGQKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSByaWdodCB0b29scyBlYXNpbHkgZXh0cmFjdCBhbmQgcHJlc2VudCB0aGF0IGluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgIGJ1dCB3ZSdkIG5lZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gcHJlLWNhbm5lZCBwcm9maWxpbmcgdG9vbHMgdG8KKyAgICAgICAgICAgICAgICBkbyB0aGF0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBMdWNraWx5LCB0aGVyZSBpcyBhIGdlbmVyYWwtcHVycG9zZSB3YXkgdG8gaGFuZGxlIHN1Y2ggbmVlZHMsCisgICAgICAgICAgICAgICAgY2FsbGVkICdwcm9ncmFtbWluZyBsYW5ndWFnZXMnLiBNYWtpbmcgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzCisgICAgICAgICAgICAgICAgZWFzaWx5IGF2YWlsYWJsZSB0byBhcHBseSB0byBzdWNoIHByb2JsZW1zIGdpdmVuIHRoZSBzcGVjaWZpYworICAgICAgICAgICAgICAgIGZvcm1hdCBvZiBkYXRhIGlzIGNhbGxlZCBhICdwcm9ncmFtbWluZyBsYW5ndWFnZSBiaW5kaW5nJyBmb3IKKyAgICAgICAgICAgICAgICB0aGF0IGRhdGEgYW5kIGxhbmd1YWdlLiBQZXJmIHN1cHBvcnRzIHR3byBwcm9ncmFtbWluZyBsYW5ndWFnZQorICAgICAgICAgICAgICAgIGJpbmRpbmdzLCBvbmUgZm9yIFB5dGhvbiBhbmQgb25lIGZvciBQZXJsLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UeWluZyBpdCBUb2dldGhlcjo8L2VtcGhhc2lzPiBMYW5ndWFnZSBiaW5kaW5ncyBmb3IgbWFuaXB1bGF0aW5nIGFuZAorICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW5nIHRyYWNlIGRhdGEgYXJlIG9mIGNvdXJzZSBub3QgYSBuZXcKKyAgICAgICAgICAgICAgICBpZGVhLiAgT25lIG9mIHRoZSBmaXJzdCBwcm9qZWN0cyB0byBkbyB0aGlzIHdhcyBJQk0ncyBEUHJvYmVzCisgICAgICAgICAgICAgICAgZHBjYyBjb21waWxlciwgYW4gQU5TSSBDIGNvbXBpbGVyIHdoaWNoIHRhcmdldGVkIGEgbG93LWxldmVsCisgICAgICAgICAgICAgICAgYXNzZW1ibHkgbGFuZ3VhZ2UgcnVubmluZyBvbiBhbiBpbi1rZXJuZWwgaW50ZXJwcmV0ZXIgb24gdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3RlbS4gIFRoaXMgaXMgZXhhY3RseSBhbmFsb2dvdXMgdG8gd2hhdCBTdW4ncyBEVHJhY2UKKyAgICAgICAgICAgICAgICBkaWQsIGV4Y2VwdCB0aGF0IERUcmFjZSBpbnZlbnRlZCBpdHMgb3duIGxhbmd1YWdlIGZvciB0aGUgcHVycG9zZS4KKyAgICAgICAgICAgICAgICBTeXN0ZW10YXAsIGhlYXZpbHkgaW5zcGlyZWQgYnkgRFRyYWNlLCBhbHNvIGNyZWF0ZWQgaXRzIG93bgorICAgICAgICAgICAgICAgIG9uZS1vZmYgbGFuZ3VhZ2UsIGJ1dCByYXRoZXIgdGhhbiBydW5uaW5nIHRoZSBwcm9kdWN0IG9uIGFuCisgICAgICAgICAgICAgICAgaW4ta2VybmVsIGludGVycHJldGVyLCBjcmVhdGVkIGFuIGVsYWJvcmF0ZSBjb21waWxlci1iYXNlZAorICAgICAgICAgICAgICAgIG1hY2hpbmVyeSB0byB0cmFuc2xhdGUgaXRzIGxhbmd1YWdlIGludG8ga2VybmVsIG1vZHVsZXMgd3JpdHRlbgorICAgICAgICAgICAgICAgIGluIEMuCisgICAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTm93IHRoYXQgd2UgaGF2ZSB0aGUgdHJhY2UgZGF0YSBpbiBwZXJmLmRhdGEsIHdlIGNhbiB1c2UKKyAgICAgICAgICAgICAgICAncGVyZiBzY3JpcHQgLWcnIHRvIGdlbmVyYXRlIGEgc2tlbGV0b24gc2NyaXB0IHdpdGggaGFuZGxlcnMKKyAgICAgICAgICAgICAgICBmb3IgdGhlIHJlYWQvd3JpdGUgZW50cnkvZXhpdCBldmVudHMgd2UgcmVjb3JkZWQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgc2NyaXB0IC1nIHB5dGhvbgorICAgICBnZW5lcmF0ZWQgUHl0aG9uIHNjcmlwdDogcGVyZi1zY3JpcHQucHkKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIHNrZWxldG9uIHNjcmlwdCBzaW1wbHkgY3JlYXRlcyBhIHB5dGhvbiBmdW5jdGlvbiBmb3IgZWFjaAorICAgICAgICAgICAgICAgIGV2ZW50IHR5cGUgaW4gdGhlIHBlcmYuZGF0YSBmaWxlLiBUaGUgYm9keSBvZiBlYWNoIGZ1bmN0aW9uIHNpbXBseQorICAgICAgICAgICAgICAgIHByaW50cyB0aGUgZXZlbnQgbmFtZSBhbG9uZyB3aXRoIGl0cyBwYXJhbWV0ZXJzLiBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRlZiBuZXRfX25ldGlmX3J4KGV2ZW50X25hbWUsIGNvbnRleHQsIGNvbW1vbl9jcHUsCisgICAgICAgICAgICBjb21tb25fc2VjcywgY29tbW9uX25zZWNzLCBjb21tb25fcGlkLCBjb21tb25fY29tbSwKKyAgICAgICAgICAgIHNrYmFkZHIsIGxlbiwgbmFtZSk6CisgICAgICAgICAgICAgICAgICAgIHByaW50X2hlYWRlcihldmVudF9uYW1lLCBjb21tb25fY3B1LCBjb21tb25fc2VjcywgY29tbW9uX25zZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbl9waWQsIGNvbW1vbl9jb21tKQorCisJCSAgICAgcHJpbnQgInNrYmFkZHI9JXUsIGxlbj0ldSwgbmFtZT0lc1xuIiAlIChza2JhZGRyLCBsZW4sIG5hbWUpLAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBXZSBjYW4gcnVuIHRoYXQgc2NyaXB0IGRpcmVjdGx5IHRvIHByaW50IGFsbCBvZiB0aGUgZXZlbnRzCisgICAgICAgICAgICAgICAgY29udGFpbmVkIGluIHRoZSBwZXJmLmRhdGEgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiBzY3JpcHQgLXMgcGVyZi1zY3JpcHQucHkKKworICAgICBpbiB0cmFjZV9iZWdpbgorICAgICBzeXNjYWxsc19fc3lzX2V4aXRfcmVhZCAgICAgMCAxMTYyNC44NTcwODI3OTUgICAgIDEyNjIgcGVyZiAgICAgICAgICAgICAgICAgIG5yPTMsIHJldD0wCisgICAgIHNjaGVkX19zY2hlZF93YWtldXAgICAgICAwIDExNjI0Ljg1NzE5MzQ5OCAgICAgMTI2MiBwZXJmICAgICAgICAgICAgICAgICAgY29tbT1taWdyYXRpb24vMCwgcGlkPTYsIHByaW89MCwgICAgICBzdWNjZXNzPTEsIHRhcmdldF9jcHU9MAorICAgICBpcnFfX3NvZnRpcnFfcmFpc2UgICAgICAgMSAxMTYyNC44NTgwMjE2MzUgICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIHZlYz1USU1FUgorICAgICBpcnFfX3NvZnRpcnFfZW50cnkgICAgICAgMSAxMTYyNC44NTgwNzQwNzUgICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIHZlYz1USU1FUgorICAgICBpcnFfX3NvZnRpcnFfZXhpdCAgICAgICAgMSAxMTYyNC44NTgwODEzODkgICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIHZlYz1USU1FUgorICAgICBzeXNjYWxsc19fc3lzX2VudGVyX3JlYWQgICAgIDEgMTE2MjQuODU4MTY2NDM0ICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCBmZD0zLCBidWY9MzIxMzAxOTQ1NiwgICAgICBjb3VudD01MTIKKyAgICAgc3lzY2FsbHNfX3N5c19leGl0X3JlYWQgICAgIDEgMTE2MjQuODU4MTc3OTI0ICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCByZXQ9NTEyCisgICAgIHNrYl9fa2ZyZWVfc2tiICAgICAgICAgICAxIDExNjI0Ljg1ODg3ODE4OCAgICAgMTI2MiB3Z2V0ICAgICAgICAgICAgICAgICAgc2tiYWRkcj0zOTQ1MDQxMjgwLCAgICAgICAgICAgbG9jYXRpb249MzI0MzkyMjE4NCwgcHJvdG9jb2w9MAorICAgICBza2JfX2tmcmVlX3NrYiAgICAgICAgICAgMSAxMTYyNC44NTg5NDU2MDggICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIHNrYmFkZHI9Mzk0NTAzNzgyNCwgICAgICBsb2NhdGlvbj0zMjQzOTIyMTg0LCBwcm90b2NvbD0wCisgICAgIGlycV9fc29mdGlycV9yYWlzZSAgICAgICAxIDExNjI0Ljg1OTAyMDk0MiAgICAgMTI2MiB3Z2V0ICAgICAgICAgICAgICAgICAgdmVjPVRJTUVSCisgICAgIGlycV9fc29mdGlycV9lbnRyeSAgICAgICAxIDExNjI0Ljg1OTA3NjkzNSAgICAgMTI2MiB3Z2V0ICAgICAgICAgICAgICAgICAgdmVjPVRJTUVSCisgICAgIGlycV9fc29mdGlycV9leGl0ICAgICAgICAxIDExNjI0Ljg1OTA4MzQ2OSAgICAgMTI2MiB3Z2V0ICAgICAgICAgICAgICAgICAgdmVjPVRJTUVSCisgICAgIHN5c2NhbGxzX19zeXNfZW50ZXJfcmVhZCAgICAgMSAxMTYyNC44NTkxNjc1NjUgICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIG5yPTMsIGZkPTMsIGJ1Zj0zMDc3NzAxNjMyLCAgICAgIGNvdW50PTEwMjQKKyAgICAgc3lzY2FsbHNfX3N5c19leGl0X3JlYWQgICAgIDEgMTE2MjQuODU5MTkyNTMzICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCByZXQ9NDcxCisgICAgIHN5c2NhbGxzX19zeXNfZW50ZXJfcmVhZCAgICAgMSAxMTYyNC44NTkyMjgwNzIgICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIG5yPTMsIGZkPTMsIGJ1Zj0zMDc3NzAxNjMyLCAgICAgIGNvdW50PTEwMjQKKyAgICAgc3lzY2FsbHNfX3N5c19leGl0X3JlYWQgICAgIDEgMTE2MjQuODU5MjMzNzA3ICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCByZXQ9MAorICAgICBzeXNjYWxsc19fc3lzX2VudGVyX3JlYWQgICAgIDEgMTE2MjQuODU5NTczMDA4ICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCBmZD0zLCBidWY9MzIxMzAxODQ5NiwgICAgICBjb3VudD01MTIKKyAgICAgc3lzY2FsbHNfX3N5c19leGl0X3JlYWQgICAgIDEgMTE2MjQuODU5NTg0ODE4ICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCByZXQ9NTEyCisgICAgIHN5c2NhbGxzX19zeXNfZW50ZXJfcmVhZCAgICAgMSAxMTYyNC44NTk4NjQ1NjIgICAgIDEyNjIgd2dldCAgICAgICAgICAgICAgICAgIG5yPTMsIGZkPTMsIGJ1Zj0zMDc3NzAxNjMyLCAgICAgIGNvdW50PTEwMjQKKyAgICAgc3lzY2FsbHNfX3N5c19leGl0X3JlYWQgICAgIDEgMTE2MjQuODU5ODg4NzcwICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCByZXQ9MTAyNAorICAgICBzeXNjYWxsc19fc3lzX2VudGVyX3JlYWQgICAgIDEgMTE2MjQuODU5OTM1MTQwICAgICAxMjYyIHdnZXQgICAgICAgICAgICAgICAgICBucj0zLCBmZD0zLCBidWY9MzA3NzcwMTYzMiwgICAgICBjb3VudD0xMDI0CisgICAgIHN5c2NhbGxzX19zeXNfZXhpdF9yZWFkICAgICAxIDExNjI0Ljg1OTk0NDAzMiAgICAgMTI2MiB3Z2V0ICAgICAgICAgICAgICAgICAgbnI9MywgcmV0PTEwMjQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhhdCBpbiBpdHNlbGYgaXNuJ3QgdmVyeSB1c2VmdWw7IGFmdGVyIGFsbCwgd2UgY2FuIGFjY29tcGxpc2gKKyAgICAgICAgICAgICAgICBwcmV0dHkgbXVjaCB0aGUgc2FtZSB0aGluZyBieSBzaW1wbHkgcnVubmluZyAncGVyZiBzY3JpcHQnCisgICAgICAgICAgICAgICAgd2l0aG91dCBhcmd1bWVudHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBwZXJmLmRhdGEgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2UgY2FuIGhvd2V2ZXIgcmVwbGFjZSB0aGUgcHJpbnQgc3RhdGVtZW50cyBpbiB0aGUgZ2VuZXJhdGVkCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYm9kaWVzIHdpdGggd2hhdGV2ZXIgd2Ugd2FudCwgYW5kIHRoZXJlYnkgbWFrZSBpdAorICAgICAgICAgICAgICAgIGluZmluaXRlbHkgbW9yZSB1c2VmdWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIGxldCdzIGp1c3QgcmVwbGFjZSB0aGUgcHJpbnQgc3RhdGVtZW50cyBpbgorICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiBib2RpZXMgd2l0aCBhIHNpbXBsZSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyBidXQKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnQgYSBwZXItZXZlbnQgY291bnQuIFdoZW4gdGhlIHByb2dyYW0gaXMgcnVuIGFnYWluc3QgYQorICAgICAgICAgICAgICAgIHBlcmYuZGF0YSBmaWxlLCBlYWNoIHRpbWUgYSBwYXJ0aWN1bGFyIGV2ZW50IGlzIGVuY291bnRlcmVkLAorICAgICAgICAgICAgICAgIGEgdGFsbHkgaXMgaW5jcmVtZW50ZWQgZm9yIHRoYXQgZXZlbnQuIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZGVmIG5ldF9fbmV0aWZfcngoZXZlbnRfbmFtZSwgY29udGV4dCwgY29tbW9uX2NwdSwKKyAgICAgICAgICAgIGNvbW1vbl9zZWNzLCBjb21tb25fbnNlY3MsIGNvbW1vbl9waWQsIGNvbW1vbl9jb21tLAorICAgICAgICAgICAgc2tiYWRkciwgbGVuLCBuYW1lKToKKwkJICAgICAgICAgIGluY19jb3VudHMoZXZlbnRfbmFtZSkKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRWFjaCBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGluIHRoZSBnZW5lcmF0ZWQgY29kZSBpcyBtb2RpZmllZAorICAgICAgICAgICAgICAgIHRvIGRvIHRoaXMuIEZvciBjb252ZW5pZW5jZSwgd2UgZGVmaW5lIGEgY29tbW9uIGZ1bmN0aW9uIGNhbGxlZAorICAgICAgICAgICAgICAgIGluY19jb3VudHMoKSB0aGF0IGVhY2ggaGFuZGxlciBjYWxsczsgaW5jX2NvdW50cygpIHNpbXBseSB0YWxsaWVzCisgICAgICAgICAgICAgICAgYSBjb3VudCBmb3IgZWFjaCBldmVudCB1c2luZyB0aGUgJ2NvdW50cycgaGFzaCwgd2hpY2ggaXMgYQorICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkIGhhc2ggZnVuY3Rpb24gdGhhdCBkb2VzIFBlcmwtbGlrZSBhdXRvdml2aWZpY2F0aW9uLCBhCisgICAgICAgICAgICAgICAgY2FwYWJpbGl0eSB0aGF0J3MgZXh0cmVtZWx5IHVzZWZ1bCBmb3Iga2luZHMgb2YgbXVsdGktbGV2ZWwKKyAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbiBjb21tb25seSB1c2VkIGluIHByb2Nlc3NpbmcgdHJhY2VzIChzZWUgcGVyZidzCisgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBvbiB0aGUgUHl0aG9uIGxhbmd1YWdlIGJpbmRpbmcgZm9yIGRldGFpbHMpOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgY291bnRzID0gYXV0b2RpY3QoKQorCisgICAgIGRlZiBpbmNfY291bnRzKGV2ZW50X25hbWUpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjb3VudHNbZXZlbnRfbmFtZV0gKz0gMQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY291bnRzW2V2ZW50X25hbWVdID0gMQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGaW5hbGx5LCBhdCB0aGUgZW5kIG9mIHRoZSB0cmFjZSBwcm9jZXNzaW5nIHJ1biwgd2Ugd2FudCB0bworICAgICAgICAgICAgICAgIHByaW50IHRoZSByZXN1bHQgb2YgYWxsIHRoZSBwZXItZXZlbnQgdGFsbGllcy4gRm9yIHRoYXQsIHdlCisgICAgICAgICAgICAgICAgdXNlIHRoZSBzcGVjaWFsICd0cmFjZV9lbmQoKScgZnVuY3Rpb246CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkZWYgdHJhY2VfZW5kKCk6CisgICAgICAgICAgICBmb3IgZXZlbnRfbmFtZSwgY291bnQgaW4gY291bnRzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBwcmludCAiJS00MHMgJTEwc1xuIiAlIChldmVudF9uYW1lLCBjb3VudCkKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIGVuZCByZXN1bHQgaXMgYSBzdW1tYXJ5IG9mIGFsbCB0aGUgZXZlbnRzIHJlY29yZGVkIGluIHRoZQorICAgICAgICAgICAgICAgIHRyYWNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgc2tiX19za2JfY29weV9kYXRhZ3JhbV9pb3ZlYyAgICAgICAgICAgICAgICAgIDEzMTQ4CisgICAgIGlycV9fc29mdGlycV9lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDc5NgorICAgICBpcnFfX2lycV9oYW5kbGVyX2V4aXQgICAgICAgICAgICAgICAgICAgICAgICAgIDM4MDUKKyAgICAgaXJxX19zb2Z0aXJxX2V4aXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Nzk1CisgICAgIHN5c2NhbGxzX19zeXNfZW50ZXJfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgODk5MAorICAgICBuZXRfX25ldF9kZXZfeG1pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTIKKyAgICAgc2tiX19rZnJlZV9za2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDQ3CisgICAgIHNjaGVkX19zY2hlZF93YWtldXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE1NQorICAgICBpcnFfX2lycV9oYW5kbGVyX2VudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgIDM4MDQKKyAgICAgaXJxX19zb2Z0aXJxX3JhaXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Nzk5CisgICAgIG5ldF9fbmV0X2Rldl9xdWV1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1MgorICAgICBzeXNjYWxsc19fc3lzX2VudGVyX3JlYWQgICAgICAgICAgICAgICAgICAgICAgMTc1OTkKKyAgICAgbmV0X19uZXRpZl9yZWNlaXZlX3NrYiAgICAgICAgICAgICAgICAgICAgICAgICAxNzQzCisgICAgIHN5c2NhbGxzX19zeXNfZXhpdF9yZWFkICAgICAgICAgICAgICAgICAgICAgICAxNzU5OAorICAgICBuZXRfX25ldGlmX3J4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKKyAgICAgbmFwaV9fbmFwaV9wb2xsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxODc3CisgICAgIHN5c2NhbGxzX19zeXNfZXhpdF93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgODk5MAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBpcyBwcmV0dHkgbXVjaCBleGFjdGx5IHRoZSBzYW1lIGluZm9ybWF0aW9uIHdlIGdldAorICAgICAgICAgICAgICAgIGZyb20gJ3BlcmYgc3RhdCcsIHdoaWNoIGdvZXMgYSBsaXR0bGUgd2F5IHRvIHN1cHBvcnQgdGhlIGlkZWEKKyAgICAgICAgICAgICAgICBtZW50aW9uZWQgcHJldmlvdXNseSB0aGF0IGdpdmVuIHRoZSByaWdodCBraW5kIG9mIHRyYWNlIGRhdGEsCisgICAgICAgICAgICAgICAgaGlnaGVyLWxldmVsIHByb2ZpbGluZy10eXBlIHN1bW1hcmllcyBjYW4gYmUgZGVyaXZlZCBmcm9tIGl0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIG9uIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saW51eC5kaWUubmV0L21hbi8xL3BlcmYtc2NyaXB0LXB5dGhvbic+J3BlcmYgc2NyaXB0JyBweXRob24gYmluZGluZzwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3N5c3RlbS13aWRlLXRyYWNpbmctYW5kLXByb2ZpbGluZyc+CisgICAgICAgICAgICA8dGl0bGU+U3lzdGVtLVdpZGUgVHJhY2luZyBhbmQgUHJvZmlsaW5nPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIHNvIGZhciBoYXZlIGZvY3VzZWQgb24gdHJhY2luZyBhIHBhcnRpY3VsYXIgcHJvZ3JhbSBvcgorICAgICAgICAgICAgICAgIHdvcmtsb2FkIC0gaW4gb3RoZXIgd29yZHMsIGV2ZXJ5IHByb2ZpbGluZyBydW4gaGFzIHNwZWNpZmllZCB0aGUKKyAgICAgICAgICAgICAgICBwcm9ncmFtIHRvIHByb2ZpbGUgaW4gdGhlIGNvbW1hbmQtbGluZSBlLmcuICdwZXJmIHJlY29yZCB3Z2V0IC4uLicuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEl0J3MgYWxzbyBwb3NzaWJsZSwgYW5kIG1vcmUgaW50ZXJlc3RpbmcgaW4gbWFueSBjYXNlcywgdG8gcnVuIGEKKyAgICAgICAgICAgICAgICBzeXN0ZW0td2lkZSBwcm9maWxlIG9yIHRyYWNlIHdoaWxlIHJ1bm5pbmcgdGhlIHdvcmtsb2FkIGluIGEKKyAgICAgICAgICAgICAgICBzZXBhcmF0ZSBzaGVsbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZG8gc3lzdGVtLXdpZGUgcHJvZmlsaW5nIG9yIHRyYWNpbmcsIHlvdSB0eXBpY2FsbHkgdXNlCisgICAgICAgICAgICAgICAgdGhlIC1hIGZsYWcgdG8gJ3BlcmYgcmVjb3JkJy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgb3BlbiB1cCBvbmUgd2luZG93IGFuZCBzdGFydCB0aGUgcHJvZmlsZQorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSAtYSBmbGFnIChwcmVzcyBDdHJsLUMgdG8gc3RvcCB0cmFjaW5nKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiByZWNvcmQgLWcgLWEKKyAgICAgXkNbIHBlcmYgcmVjb3JkOiBXb2tlbiB1cCA2IHRpbWVzIHRvIHdyaXRlIGRhdGEgXQorICAgICBbIHBlcmYgcmVjb3JkOiBDYXB0dXJlZCBhbmQgd3JvdGUgMS40MDAgTUIgcGVyZi5kYXRhICh+NjExNzIgc2FtcGxlcykgXQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiBhbm90aGVyIHdpbmRvdywgcnVuIHRoZSB3Z2V0IHRlc3Q6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHdnZXQgPHVsaW5rIHVybD0naHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejInPmh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyPC91bGluaz4KKyAgICAgQ29ubmVjdGluZyB0byBkb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyAoMTQwLjIxMS4xNjkuNTk6ODApCisgICAgIGxpbnV4LTIuNi4xOS4yLnRhci5iIDEwMCUgfCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip8IDQxNzI3ayAgMDowMDowMCBFVEEKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSGVyZSB3ZSBzZWUgZW50cmllcyBub3Qgb25seSBmb3Igb3VyIHdnZXQgbG9hZCwgYnV0IGZvciBvdGhlcgorICAgICAgICAgICAgICAgIHByb2Nlc3NlcyBydW5uaW5nIG9uIHRoZSBzeXN0ZW0gYXMgd2VsbDoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BlcmYtc3lzdGVtd2lkZS5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiB0aGUgc25hcHNob3QgYWJvdmUsIHdlIGNhbiBzZWUgY2FsbGNoYWlucyB0aGF0IG9yaWdpbmF0ZSBpbgorICAgICAgICAgICAgICAgIGxpYmMsIGFuZCBhIGNhbGxjaGFpbiBmcm9tIFhvcmcgdGhhdCBkZW1vbnN0cmF0ZXMgdGhhdCB3ZSdyZQorICAgICAgICAgICAgICAgIHVzaW5nIGEgcHJvcHJpZXRhcnkgWCBkcml2ZXIgaW4gdXNlcnNwYWNlIChub3RpY2UgdGhlIHByZXNlbmNlCisgICAgICAgICAgICAgICAgb2YgJ1BWUicgYW5kIHNvbWUgb3RoZXIgdW5yZXNvbHZhYmxlIHN5bWJvbHMgaW4gdGhlIGV4cGFuZGVkCisgICAgICAgICAgICAgICAgWG9yZyBjYWxsY2hhaW4pLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBOb3RlIGFsc28gdGhhdCB3ZSBoYXZlIGJvdGgga2VybmVsIGFuZCB1c2Vyc3BhY2UgZW50cmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICBhYm92ZSBzbmFwc2hvdC4gV2UgY2FuIGFsc28gdGVsbCBwZXJmIHRvIGZvY3VzIG9uIHVzZXJzcGFjZSBidXQKKyAgICAgICAgICAgICAgICBwcm92aWRpbmcgYSBtb2RpZmllciwgaW4gdGhpcyBjYXNlICd1JywgdG8gdGhlICdjeWNsZXMnIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgY291bnRlciB3aGVuIHdlIHJlY29yZCBhIHByb2ZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgcmVjb3JkIC1nIC1hIC1lIGN5Y2xlczp1CisgICAgIF5DWyBwZXJmIHJlY29yZDogV29rZW4gdXAgMiB0aW1lcyB0byB3cml0ZSBkYXRhIF0KKyAgICAgWyBwZXJmIHJlY29yZDogQ2FwdHVyZWQgYW5kIHdyb3RlIDAuMzc2IE1CIHBlcmYuZGF0YSAofjE2NDQzIHNhbXBsZXMpIF0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wZXJmLXJlcG9ydC1jeWNsZXMtdS5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBOb3RpY2UgaW4gdGhlIHNjcmVlbnNob3QgYWJvdmUsIHdlIHNlZSBvbmx5IHVzZXJzcGFjZSBlbnRyaWVzIChbLl0pCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZpbmFsbHksIHdlIGNhbiBwcmVzcyAnZW50ZXInIG9uIGEgbGVhZiBub2RlIGFuZCBzZWxlY3QgdGhlICdab29tCisgICAgICAgICAgICAgICAgaW50byBEU08nIG1lbnUgaXRlbSB0byBzaG93IG9ubHkgZW50cmllcyBhc3NvY2lhdGVkIHdpdGggYQorICAgICAgICAgICAgICAgIHNwZWNpZmljIERTTy4gSW4gdGhlIHNjcmVlbnNob3QgYmVsb3csIHdlJ3ZlIHpvb21lZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICdsaWJjJyBEU08gd2hpY2ggc2hvd3MgYWxsIHRoZSBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBsaWJjLXh4eC5zbyBEU08uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wZXJmLXN5c3RlbXdpZGUtbGliYy5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXZSBjYW4gYWxzbyB1c2UgdGhlIHN5c3RlbS13aWRlIC1hIHN3aXRjaCB0byBkbyBzeXN0ZW0td2lkZQorICAgICAgICAgICAgICAgIHRyYWNpbmcuIEhlcmUgd2UnbGwgdHJhY2UgYSBjb3VwbGUgb2Ygc2NoZWR1bGVyIGV2ZW50czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiByZWNvcmQgLWEgLWUgc2NoZWQ6c2NoZWRfc3dpdGNoIC1lIHNjaGVkOnNjaGVkX3dha2V1cAorICAgICBeQ1sgcGVyZiByZWNvcmQ6IFdva2VuIHVwIDM4IHRpbWVzIHRvIHdyaXRlIGRhdGEgXQorICAgICBbIHBlcmYgcmVjb3JkOiBDYXB0dXJlZCBhbmQgd3JvdGUgOS43ODAgTUIgcGVyZi5kYXRhICh+NDI3Mjk5IHNhbXBsZXMpIF0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgV2UgY2FuIGxvb2sgYXQgdGhlIHJhdyBvdXRwdXQgdXNpbmcgJ3BlcmYgc2NyaXB0JyB3aXRoIG5vCisgICAgICAgICAgICAgICAgYXJndW1lbnRzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHNjcmlwdAorCisgICAgICAgICAgICAgICAgcGVyZiAgMTM4MyBbMDAxXSAgNjE3MS40NjAwNDU6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgcGVyZiAgMTM4MyBbMDAxXSAgNjE3MS40NjAwNjY6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPXBlcmYgcHJldl9waWQ9MTM4MyBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UisgPT0+IG5leHRfY29tbT1rd29ya2VyLzE6MSBuZXh0X3BpZD0yMSBuZXh0X3ByaW89MTIwCisgICAgICAgICBrd29ya2VyLzE6MSAgICAyMSBbMDAxXSAgNjE3MS40NjAwOTM6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPWt3b3JrZXIvMToxIHByZXZfcGlkPTIxIHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1TID09PiBuZXh0X2NvbW09cGVyZiBuZXh0X3BpZD0xMzgzIG5leHRfcHJpbz0xMjAKKyAgICAgICAgICAgICBzd2FwcGVyICAgICAwIFswMDBdICA2MTcxLjQ2ODA2Mzogc2NoZWRfd2FrZXVwOiBjb21tPWt3b3JrZXIvMDozIHBpZD0xMjA5IHByaW89MTIwIHN1Y2Nlc3M9MSB0YXJnZXRfY3B1PTAwMAorICAgICAgICAgICAgIHN3YXBwZXIgICAgIDAgWzAwMF0gIDYxNzEuNDY4MTA3OiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1zd2FwcGVyLzAgcHJldl9waWQ9MCBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UiA9PT4gbmV4dF9jb21tPWt3b3JrZXIvMDozIG5leHRfcGlkPTEyMDkgbmV4dF9wcmlvPTEyMAorICAgICAgICAga3dvcmtlci8wOjMgIDEyMDkgWzAwMF0gIDYxNzEuNDY4MTQzOiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1rd29ya2VyLzA6MyBwcmV2X3BpZD0xMjA5IHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1TID09PiBuZXh0X2NvbW09c3dhcHBlci8wIG5leHRfcGlkPTAgbmV4dF9wcmlvPTEyMAorICAgICAgICAgICAgICAgIHBlcmYgIDEzODMgWzAwMV0gIDYxNzEuNDcwMDM5OiBzY2hlZF93YWtldXA6IGNvbW09a3dvcmtlci8xOjEgcGlkPTIxIHByaW89MTIwIHN1Y2Nlc3M9MSB0YXJnZXRfY3B1PTAwMQorICAgICAgICAgICAgICAgIHBlcmYgIDEzODMgWzAwMV0gIDYxNzEuNDcwMDU4OiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1wZXJmIHByZXZfcGlkPTEzODMgcHJldl9wcmlvPTEyMCBwcmV2X3N0YXRlPVIrID09PiBuZXh0X2NvbW09a3dvcmtlci8xOjEgbmV4dF9waWQ9MjEgbmV4dF9wcmlvPTEyMAorICAgICAgICAga3dvcmtlci8xOjEgICAgMjEgWzAwMV0gIDYxNzEuNDcwMDgyOiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1rd29ya2VyLzE6MSBwcmV2X3BpZD0yMSBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UyA9PT4gbmV4dF9jb21tPXBlcmYgbmV4dF9waWQ9MTM4MyBuZXh0X3ByaW89MTIwCisgICAgICAgICAgICAgICAgcGVyZiAgMTM4MyBbMDAxXSAgNjE3MS40ODAwMzU6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGVyZi1maWx0ZXJpbmcnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5GaWx0ZXJpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IHRoZXJlIGFyZSBhIGxvdCBvZiBldmVudHMgdGhhdCBkb24ndCByZWFsbHkgaGF2ZQorICAgICAgICAgICAgICAgICAgICBhbnl0aGluZyB0byBkbyB3aXRoIHdoYXQgd2UncmUgaW50ZXJlc3RlZCBpbiwgbmFtZWx5IGV2ZW50cworICAgICAgICAgICAgICAgICAgICB0aGF0IHNjaGVkdWxlICdwZXJmJyBpdHNlbGYgaW4gYW5kIG91dCBvciB0aGF0IHdha2UgcGVyZiB1cC4KKyAgICAgICAgICAgICAgICAgICAgV2UgY2FuIGdldCByaWQgb2YgdGhvc2UgYnkgdXNpbmcgdGhlICctLWZpbHRlcicgb3B0aW9uIC0KKyAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggZXZlbnQgd2Ugc3BlY2lmeSB1c2luZyAtZSwgd2UgY2FuIGFkZCBhIC0tZmlsdGVyCisgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoYXQgdG8gZmlsdGVyIG91dCB0cmFjZSBldmVudHMgdGhhdCBjb250YWluIGZpZWxkcworICAgICAgICAgICAgICAgICAgICB3aXRoIHNwZWNpZmljIHZhbHVlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIHBlcmYgcmVjb3JkIC1hIC1lIHNjaGVkOnNjaGVkX3N3aXRjaCAtLWZpbHRlciAnbmV4dF9jb21tICE9IHBlcmYgJmFtcDsmYW1wOyBwcmV2X2NvbW0gIT0gcGVyZicgLWUgc2NoZWQ6c2NoZWRfd2FrZXVwIC0tZmlsdGVyICdjb21tICE9IHBlcmYnCisgICAgIF5DWyBwZXJmIHJlY29yZDogV29rZW4gdXAgMzggdGltZXMgdG8gd3JpdGUgZGF0YSBdCisgICAgIFsgcGVyZiByZWNvcmQ6IENhcHR1cmVkIGFuZCB3cm90ZSA5LjY4OCBNQiBwZXJmLmRhdGEgKH40MjMyNzkgc2FtcGxlcykgXQorCisKKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHNjcmlwdAorCisgICAgICAgICAgICAgc3dhcHBlciAgICAgMCBbMDAwXSAgNzkzMi4xNjIxODA6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPXN3YXBwZXIvMCBwcmV2X3BpZD0wIHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1SID09PiBuZXh0X2NvbW09a3dvcmtlci8wOjMgbmV4dF9waWQ9MTIwOSBuZXh0X3ByaW89MTIwCisgICAgICAgICBrd29ya2VyLzA6MyAgMTIwOSBbMDAwXSAgNzkzMi4xNjIyMzY6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPWt3b3JrZXIvMDozIHByZXZfcGlkPTEyMDkgcHJldl9wcmlvPTEyMCBwcmV2X3N0YXRlPVMgPT0+IG5leHRfY29tbT1zd2FwcGVyLzAgbmV4dF9waWQ9MCBuZXh0X3ByaW89MTIwCisgICAgICAgICAgICAgICAgcGVyZiAgMTQwNyBbMDAxXSAgNzkzMi4xNzAwNDg6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgcGVyZiAgMTQwNyBbMDAxXSAgNzkzMi4xODAwNDQ6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgcGVyZiAgMTQwNyBbMDAxXSAgNzkzMi4xOTAwMzg6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgcGVyZiAgMTQwNyBbMDAxXSAgNzkzMi4yMDAwNDQ6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgcGVyZiAgMTQwNyBbMDAxXSAgNzkzMi4yMTAwNDQ6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgICAgcGVyZiAgMTQwNyBbMDAxXSAgNzkzMi4yMjAwNDQ6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgc3dhcHBlciAgICAgMCBbMDAxXSAgNzkzMi4yMzAxMTE6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzE6MSBwaWQ9MjEgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAxCisgICAgICAgICAgICAgc3dhcHBlciAgICAgMCBbMDAxXSAgNzkzMi4yMzAxNDY6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPXN3YXBwZXIvMSBwcmV2X3BpZD0wIHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1SID09PiBuZXh0X2NvbW09a3dvcmtlci8xOjEgbmV4dF9waWQ9MjEgbmV4dF9wcmlvPTEyMAorICAgICAgICAga3dvcmtlci8xOjEgICAgMjEgWzAwMV0gIDc5MzIuMjMwMjA1OiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1rd29ya2VyLzE6MSBwcmV2X3BpZD0yMSBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UyA9PT4gbmV4dF9jb21tPXN3YXBwZXIvMSBuZXh0X3BpZD0wIG5leHRfcHJpbz0xMjAKKyAgICAgICAgICAgICBzd2FwcGVyICAgICAwIFswMDBdICA3OTMyLjMyNjEwOTogc2NoZWRfd2FrZXVwOiBjb21tPWt3b3JrZXIvMDozIHBpZD0xMjA5IHByaW89MTIwIHN1Y2Nlc3M9MSB0YXJnZXRfY3B1PTAwMAorICAgICAgICAgICAgIHN3YXBwZXIgICAgIDAgWzAwMF0gIDc5MzIuMzI2MTcxOiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1zd2FwcGVyLzAgcHJldl9waWQ9MCBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UiA9PT4gbmV4dF9jb21tPWt3b3JrZXIvMDozIG5leHRfcGlkPTEyMDkgbmV4dF9wcmlvPTEyMAorICAgICAgICAga3dvcmtlci8wOjMgIDEyMDkgWzAwMF0gIDc5MzIuMzI2MjE0OiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1rd29ya2VyLzA6MyBwcmV2X3BpZD0xMjA5IHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1TID09PiBuZXh0X2NvbW09c3dhcHBlci8wIG5leHRfcGlkPTAgbmV4dF9wcmlvPTEyMAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgd2UndmUgZmlsdGVyZWQgb3V0IGFsbCBldmVudHMgdGhhdCBoYXZlICdwZXJmJworICAgICAgICAgICAgICAgICAgICBpbiB0aGVpciAnY29tbScgb3IgJ2NvbW1fcHJldicgb3IgJ2NvbW1fbmV4dCcgZmllbGRzLiBOb3RpY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGVyZSBhcmUgc3RpbGwgZXZlbnRzIHJlY29yZGVkIGZvciBwZXJmLCBidXQgbm90aWNlCisgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhvc2UgZXZlbnRzIGRvbid0IGhhdmUgdmFsdWVzIG9mICdwZXJmJyBmb3IgdGhlIGZpbHRlcmVkCisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy4gVG8gY29tcGxldGVseSBmaWx0ZXIgb3V0IGFueXRoaW5nIGZyb20gcGVyZiB3aWxsCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUgYSBiaXQgbW9yZSB3b3JrLCBidXQgZm9yIHRoZSBwdXJwb3NlIG9mIGRlbW9uc3RyYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgaG93IHRvIHVzZSBmaWx0ZXJzLCBpdCdzIGNsb3NlIGVub3VnaC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VHlpbmcgaXQgVG9nZXRoZXI6PC9lbXBoYXNpcz4gVGhlc2UgYXJlIGV4YWN0bHkgdGhlIHNhbWUgc2V0IG9mIGV2ZW50CisgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMgZGVmaW5lZCBieSB0aGUgdHJhY2UgZXZlbnQgc3Vic3lzdGVtLiBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIGZ0cmFjZS90cmFjZWNtZC9rZXJuZWxzaGFyayBzZWN0aW9uIGZvciBtb3JlIGRpc2N1c3Npb24gYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgZXZlbnQgZmlsdGVycy4KKyAgICAgICAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UeWluZyBpdCBUb2dldGhlcjo8L2VtcGhhc2lzPiBUaGVzZSBldmVudCBmaWx0ZXJzIGFyZSBpbXBsZW1lbnRlZCBieSBhCisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwtcHVycG9zZSBwc2V1ZG8taW50ZXJwcmV0ZXIgaW4gdGhlIGtlcm5lbCBhbmQgYXJlIGFuCisgICAgICAgICAgICAgICAgICAgIGludGVncmFsIGFuZCBpbmRpc3BlbnNhYmxlIHBhcnQgb2YgdGhlIHBlcmYgZGVzaWduIGFzIGl0CisgICAgICAgICAgICAgICAgICAgIHJlbGF0ZXMgdG8gdHJhY2luZy4gIGtlcm5lbC1iYXNlZCBldmVudCBmaWx0ZXJzIHByb3ZpZGUgYQorICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20gdG8gcHJlY2lzZWx5IHRocm90dGxlIHRoZSBldmVudCBzdHJlYW0gdGhhdCBhcHBlYXJzCisgICAgICAgICAgICAgICAgICAgIGluIHVzZXIgc3BhY2UsIHdoZXJlIGl0IG1ha2VzIHNlbnNlIHRvIHByb3ZpZGUgYmluZGluZ3MgdG8gcmVhbAorICAgICAgICAgICAgICAgICAgICBwcm9ncmFtbWluZyBsYW5ndWFnZXMgZm9yIHBvc3Rwcm9jZXNzaW5nIHRoZSBldmVudCBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJjaGl0ZWN0dXJlIGFsbG93cyBmb3IgdGhlIGludGVsbGlnZW50IGFuZCBmbGV4aWJsZQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25pbmcgb2YgcHJvY2Vzc2luZyBiZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIHVzZXIgc3BhY2UuCisgICAgICAgICAgICAgICAgICAgIENvbnRyYXN0IHRoaXMgd2l0aCBvdGhlciB0b29scyBzdWNoIGFzIFN5c3RlbVRhcCwgd2hpY2ggZG9lcworICAgICAgICAgICAgICAgICAgICBhbGwgb2YgaXRzIHByb2Nlc3NpbmcgaW4gdGhlIGtlcm5lbCBhbmQgYXMgc3VjaCByZXF1aXJlcyBhCisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgcHJvamVjdC1kZWZpbmVkIGxhbmd1YWdlIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZGVzaWduLCBvciBMVFRuZywgd2hlcmUgZXZlcnl0aGluZyBpcyBzZW50IHRvIHVzZXJzcGFjZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgYXMgc3VjaCByZXF1aXJlcyBhIHN1cGVyLWVmZmljaWVudCBrZXJuZWwtdG8tdXNlcnNwYWNlCisgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBtZWNoYW5pc20gaW4gb3JkZXIgdG8gZnVuY3Rpb24gcHJvcGVybHkuICBXaGlsZQorICAgICAgICAgICAgICAgICAgICBwZXJmIGNlcnRhaW5seSBjYW4gYmVuZWZpdCBmcm9tIGZvciBpbnN0YW5jZSBhZHZhbmNlcyBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVzaWduIG9mIHRoZSB0cmFuc3BvcnQsIGl0IGRvZXNuJ3QgZnVuZGFtZW50YWxseSBkZXBlbmQKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlbS4gIEJhc2ljYWxseSwgaWYgeW91IGZpbmQgdGhhdCB5b3VyIHBlcmYgdHJhY2luZworICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBpcyBjYXVzaW5nIGJ1ZmZlciBJL08gb3ZlcnJ1bnMsIGl0IHByb2JhYmx5CisgICAgICAgICAgICAgICAgICAgIG1lYW5zIHRoYXQgeW91IGFyZW4ndCB0YWtpbmcgZW5vdWdoIGFkdmFudGFnZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIGZpbHRlcmluZyBlbmdpbmUuCisgICAgICAgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctZHluYW1pYy10cmFjZXBvaW50cyc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgRHluYW1pYyBUcmFjZXBvaW50czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIHBlcmYgaXNuJ3QgcmVzdHJpY3RlZCB0byB0aGUgZml4ZWQgc2V0IG9mIHN0YXRpYyB0cmFjZXBvaW50cworICAgICAgICAgICAgICAgIGxpc3RlZCBieSAncGVyZiBsaXN0Jy4gVXNlcnMgY2FuIGFsc28gYWRkIHRoZWlyIG93biAnZHluYW1pYycKKyAgICAgICAgICAgICAgICB0cmFjZXBvaW50cyBhbnl3aGVyZSBpbiB0aGUga2VybmVsLiBGb3IgaW5zdGFuY2UsIHN1cHBvc2Ugd2UKKyAgICAgICAgICAgICAgICB3YW50IHRvIGRlZmluZSBvdXIgb3duIHRyYWNlcG9pbnQgb24gZG9fZm9yaygpLiBXZSBjYW4gZG8gdGhhdAorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSAncGVyZiBwcm9iZScgcGVyZiBzdWJjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHByb2JlIGRvX2ZvcmsKKyAgICAgQWRkZWQgbmV3IGV2ZW50OgorICAgICAgIHByb2JlOmRvX2ZvcmsgICAgICAgIChvbiBkb19mb3JrKQorCisgICAgIFlvdSBjYW4gbm93IHVzZSBpdCBpbiBhbGwgcGVyZiB0b29scywgc3VjaCBhczoKKworCSAgICAgcGVyZiByZWNvcmQgLWUgcHJvYmU6ZG9fZm9yayAtYVIgc2xlZXAgMQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBZGRpbmcgYSBuZXcgdHJhY2Vwb2ludCB2aWEgJ3BlcmYgcHJvYmUnIHJlc3VsdHMgaW4gYW4gZXZlbnQKKyAgICAgICAgICAgICAgICB3aXRoIGFsbCB0aGUgZXhwZWN0ZWQgZmlsZXMgYW5kIGZvcm1hdCBpbgorICAgICAgICAgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzLCBqdXN0IHRoZSBzYW1lIGFzIGZvciBzdGF0aWMKKyAgICAgICAgICAgICAgICB0cmFjZXBvaW50cyAoYXMgZGlzY3Vzc2VkIGluIG1vcmUgZGV0YWlsIGluIHRoZSB0cmFjZSBldmVudHMKKyAgICAgICAgICAgICAgICBzdWJzeXN0ZW0gc2VjdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvcHJvYmUvZG9fZm9yayMgbHMgLWFsCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgT2N0IDI4IDExOjQyIC4KKyAgICAgZHJ3eHIteHIteCAgICAzIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBPY3QgMjggMTE6NDIgLi4KKyAgICAgLXJ3LXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBPY3QgMjggMTE6NDIgZW5hYmxlCisgICAgIC1ydy1yLS1yLS0gICAgMSByb290ICAgICByb290ICAgICAgICAgICAgIDAgT2N0IDI4IDExOjQyIGZpbHRlcgorICAgICAtci0tci0tci0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE9jdCAyOCAxMTo0MiBmb3JtYXQKKyAgICAgLXItLXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBPY3QgMjggMTE6NDIgaWQKKworICAgICByb290QGNyb3duYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3Byb2JlL2RvX2ZvcmsjIGNhdCBmb3JtYXQKKyAgICAgbmFtZTogZG9fZm9yaworICAgICBJRDogOTQ0CisgICAgIGZvcm1hdDoKKwkgICAgIGZpZWxkOnVuc2lnbmVkIHNob3J0IGNvbW1vbl90eXBlOwlvZmZzZXQ6MDsJc2l6ZToyOwlzaWduZWQ6MDsKKwkgICAgIGZpZWxkOnVuc2lnbmVkIGNoYXIgY29tbW9uX2ZsYWdzOwlvZmZzZXQ6MjsJc2l6ZToxOwlzaWduZWQ6MDsKKwkgICAgIGZpZWxkOnVuc2lnbmVkIGNoYXIgY29tbW9uX3ByZWVtcHRfY291bnQ7CW9mZnNldDozOwlzaXplOjE7CXNpZ25lZDowOworCSAgICAgZmllbGQ6aW50IGNvbW1vbl9waWQ7CW9mZnNldDo0OwlzaXplOjQ7CXNpZ25lZDoxOworCSAgICAgZmllbGQ6aW50IGNvbW1vbl9wYWRkaW5nOwlvZmZzZXQ6ODsJc2l6ZTo0OwlzaWduZWQ6MTsKKworCSAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBfX3Byb2JlX2lwOwlvZmZzZXQ6MTI7CXNpemU6NDsJc2lnbmVkOjA7CisKKyAgICAgcHJpbnQgZm10OiAiKCVseCkiLCBSRUMtPl9fcHJvYmVfaXAKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgV2UgY2FuIGxpc3QgYWxsIGR5bmFtaWMgdHJhY2Vwb2ludHMgY3VycmVudGx5IGluIGV4aXN0ZW5jZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgcGVyZiBwcm9iZSAtbAorICAgICAgcHJvYmU6ZG9fZm9yayAgICAgICAgKG9uIGRvX2ZvcmspCisgICAgICBwcm9iZTpzY2hlZHVsZSAgICAgICAob24gc2NoZWR1bGUpCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIExldCdzIHJlY29yZCBzeXN0ZW0td2lkZSAoJ3NsZWVwIDMwJyBpcyBhIHRyaWNrIGZvciByZWNvcmRpbmcKKyAgICAgICAgICAgICAgICBzeXN0ZW0td2lkZSBidXQgYmFzaWNhbGx5IGRvIG5vdGhpbmcgYW5kIHRoZW4gd2FrZSB1cCBhZnRlcgorICAgICAgICAgICAgICAgIDMwIHNlY29uZHMpOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHJlY29yZCAtZyAtYSAtZSBwcm9iZTpkb19mb3JrIHNsZWVwIDMwCisgICAgIFsgcGVyZiByZWNvcmQ6IFdva2VuIHVwIDEgdGltZXMgdG8gd3JpdGUgZGF0YSBdCisgICAgIFsgcGVyZiByZWNvcmQ6IENhcHR1cmVkIGFuZCB3cm90ZSAwLjA4NyBNQiBwZXJmLmRhdGEgKH4zODEyIHNhbXBsZXMpIF0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVXNpbmcgJ3BlcmYgc2NyaXB0JyB3ZSBjYW4gc2VlIGVhY2ggZG9fZm9yayBldmVudCB0aGF0IGZpcmVkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBwZXJmIHNjcmlwdAorCisgICAgICMgPT09PT09PT0KKyAgICAgIyBjYXB0dXJlZCBvbjogU3VuIE9jdCAyOCAxMTo1NToxOCAyMDEyCisgICAgICMgaG9zdG5hbWUgOiBjcm93bmJheQorICAgICAjIG9zIHJlbGVhc2UgOiAzLjQuMTEteW9jdG8tc3RhbmRhcmQKKyAgICAgIyBwZXJmIHZlcnNpb24gOiAzLjQuMTEKKyAgICAgIyBhcmNoIDogaTY4NgorICAgICAjIG5yY3B1cyBvbmxpbmUgOiAyCisgICAgICMgbnJjcHVzIGF2YWlsIDogMgorICAgICAjIGNwdWRlc2MgOiBJbnRlbChSKSBBdG9tKFRNKSBDUFUgRTY2MCBAIDEuMzBHSHoKKyAgICAgIyBjcHVpZCA6IEdlbnVpbmVJbnRlbCw2LDM4LDEKKyAgICAgIyB0b3RhbCBtZW1vcnkgOiAxMDE3MTg0IGtCCisgICAgICMgY21kbGluZSA6IC91c3IvYmluL3BlcmYgcmVjb3JkIC1nIC1hIC1lIHByb2JlOmRvX2Zvcmsgc2xlZXAgMzAKKyAgICAgIyBldmVudCA6IG5hbWUgPSBwcm9iZTpkb19mb3JrLCB0eXBlID0gMiwgY29uZmlnID0gMHgzYjAsIGNvbmZpZzEgPSAweDAsIGNvbmZpZzIgPSAweDAsIGV4Y2xfdXNyID0gMCwgZXhjbF9rZXJuCisgICAgICA9IDAsIGlkID0geyA1LCA2IH0KKyAgICAgIyBIRUFERVJfQ1BVX1RPUE9MT0dZIGluZm8gYXZhaWxhYmxlLCB1c2UgLUkgdG8gZGlzcGxheQorICAgICAjID09PT09PT09CisgICAgICMKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTE5NyBbMDAxXSAzNDIxMS4zNzgzMTg6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTI5NSBbMDAxXSAzNDIxMS4zODAzODg6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgcGNtYW5mbSAgMTI5NiBbMDAwXSAzNDIxMS42MzIzNTA6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgcGNtYW5mbSAgMTI5NiBbMDAwXSAzNDIxMS42Mzk5MTc6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTE5NyBbMDAxXSAzNDIxNy41NDE2MDM6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTI5OSBbMDAxXSAzNDIxNy41NDM1ODQ6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgIGd0aHVtYiAgMTMwMCBbMDAxXSAzNDIxNy42OTc0NTE6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgIGd0aHVtYiAgMTMwMCBbMDAxXSAzNDIxOS4wODU3MzQ6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgIGd0aHVtYiAgMTMwMCBbMDAwXSAzNDIxOS4xMjEzNTE6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgIGd0aHVtYiAgMTMwMCBbMDAxXSAzNDIxOS4yNjQ1NTE6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgcGNtYW5mbSAgMTI5NiBbMDAwXSAzNDIxOS41OTAzODA6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTE5NyBbMDAxXSAzNDIyNC45NTU5NjU6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTMwNiBbMDAxXSAzNDIyNC45NTc5NzI6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LXRlcm1pbiAgMTMwNyBbMDAwXSAzNDIyNS4wMzgyMTQ6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LXRlcm1pbiAgMTMwNyBbMDAxXSAzNDIyNS4wNDQyMTg6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LXRlcm1pbiAgMTMwNyBbMDAwXSAzNDIyNS4wNDY0NDI6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTE5NyBbMDAxXSAzNDIzNy4xMTIxMzg6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgIG1hdGNoYm94LWRlc2t0byAgMTMxMSBbMDAxXSAzNDIzNy4xMTQxMDY6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgICAgZ2FrdSAgMTMxMiBbMDAwXSAzNDIzNy4yMDIzODg6IGRvX2Zvcms6IChjMTAyODQ2MCkKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQW5kIHVzaW5nICdwZXJmIHJlcG9ydCcgb24gdGhlIHNhbWUgZmlsZSwgd2UgY2FuIHNlZSB0aGUKKyAgICAgICAgICAgICAgICBjYWxsZ3JhcGhzIGZyb20gc3RhcnRpbmcgYSBmZXcgcHJvZ3JhbXMgZHVyaW5nIHRob3NlIDMwIHNlY29uZHM6CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wZXJmLXByb2JlLWRvX2ZvcmstcHJvZmlsZS5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI3aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UeWluZyBpdCBUb2dldGhlcjo8L2VtcGhhc2lzPiBUaGUgdHJhY2UgZXZlbnRzIHN1YnN5c3RlbSBhY2NvbW1vZGF0ZSBzdGF0aWMKKyAgICAgICAgICAgICAgICBhbmQgZHluYW1pYyB0cmFjZXBvaW50cyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSAtIHRoZXJlJ3Mgbm8KKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIGFzIGZhciBhcyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaXMgY29uY2VybmVkLiAgU2VlIHRoZQorICAgICAgICAgICAgICAgIGZ0cmFjZSBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIHRyYWNlIGV2ZW50IHN1YnN5c3RlbS4KKyAgICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UeWluZyBpdCBUb2dldGhlcjo8L2VtcGhhc2lzPiBEeW5hbWljIHRyYWNlcG9pbnRzIGFyZSBpbXBsZW1lbnRlZCB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICBjb3ZlcnMgYnkga3Byb2JlcyBhbmQgdXByb2Jlcy4gIGtwcm9iZXMgYW5kIHVwcm9iZXMgYXJlIGFsc28gdXNlZAorICAgICAgICAgICAgICAgIGJ5IGFuZCBpbiBmYWN0IGFyZSB0aGUgbWFpbiBmb2N1cyBvZiBTeXN0ZW1UYXAuCisgICAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdwZXJmLWRvY3VtZW50YXRpb24nPgorICAgICAgICA8dGl0bGU+RG9jdW1lbnRhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmxpbmUgdmVyc2lvbnMgb2YgdGhlIG1hbiBwYWdlcyBmb3IgdGhlIGNvbW1hbmRzIGRpc2N1c3NlZCBpbiB0aGlzCisgICAgICAgICAgICBzZWN0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDx1bGluayB1cmw9J2h0dHA6Ly9saW51eC5kaWUubmV0L21hbi8xL3BlcmYtc3RhdCc+J3BlcmYgc3RhdCcgbWFucGFnZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDx1bGluayB1cmw9J2h0dHA6Ly9saW51eC5kaWUubmV0L21hbi8xL3BlcmYtcmVjb3JkJz4ncGVyZiByZWNvcmQnIG1hbnBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8dWxpbmsgdXJsPSdodHRwOi8vbGludXguZGllLm5ldC9tYW4vMS9wZXJmLXJlcG9ydCc+J3BlcmYgcmVwb3J0JyBtYW5wYWdlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgPHVsaW5rIHVybD0naHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvcGVyZi1wcm9iZSc+J3BlcmYgcHJvYmUnIG1hbnBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8dWxpbmsgdXJsPSdodHRwOi8vbGludXguZGllLm5ldC9tYW4vMS9wZXJmLXNjcmlwdCc+J3BlcmYgc2NyaXB0JyBtYW5wYWdlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Eb2N1bWVudGF0aW9uIG9uIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGludXguZGllLm5ldC9tYW4vMS9wZXJmLXNjcmlwdC1weXRob24nPidwZXJmIHNjcmlwdCcgcHl0aG9uIGJpbmRpbmc8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvcGVyZic+cGVyZigxKSBtYW5wYWdlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE5vcm1hbGx5LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gaW52b2tlIHRoZSBtYW4gcGFnZXMgdmlhIHBlcmYKKyAgICAgICAgICAgIGl0c2VsZiBlLmcuICdwZXJmIGhlbHAnIG9yICdwZXJmIGhlbHAgcmVjb3JkJy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSG93ZXZlciwgYnkgZGVmYXVsdCBZb2N0byBkb2Vzbid0IGluc3RhbGwgbWFuIHBhZ2VzLCBidXQgcGVyZgorICAgICAgICAgICAgaW52b2tlcyB0aGUgbWFuIHBhZ2VzIGZvciBtb3N0IGhlbHAgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBhIGJ1ZworICAgICAgICAgICAgYW5kIGlzIGJlaW5nIGFkZHJlc3NlZCBieSBhIFlvY3RvIGJ1ZzoKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4OCc+QnVnIDMzODggLSBwZXJmOiBlbmFibGUgbWFuIHBhZ2VzIGZvciBiYXNpYyAnaGVscCcgZnVuY3Rpb25hbGl0eTwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbWFuIHBhZ2VzIGluIHRleHQgZm9ybSwgYWxvbmcgd2l0aCBzb21lIG90aGVyIGZpbGVzLCBzdWNoIGFzCisgICAgICAgICAgICBhIHNldCBvZiBleGFtcGxlcywgY2FuIGJlIGZvdW5kIGluIHRoZSAncGVyZicgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAga2VybmVsIHRyZWU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHRvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlcmUncyBhbHNvIGEgbmljZSBwZXJmIHR1dG9yaWFsIG9uIHRoZSBwZXJmIHdpa2kgdGhhdCBnb2VzCisgICAgICAgICAgICBpbnRvIG1vcmUgZGV0YWlsIHRoYW4gd2UgZG8gaGVyZSBpbiBjZXJ0YWluIGFyZWFzOgorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9wZXJmLndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvVHV0b3JpYWwnPlBlcmYgVHV0b3JpYWw8L3VsaW5rPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncHJvZmlsZS1tYW51YWwtZnRyYWNlJz4KKyAgICA8dGl0bGU+ZnRyYWNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICAnZnRyYWNlJyBsaXRlcmFsbHkgcmVmZXJzIHRvIHRoZSAnZnRyYWNlIGZ1bmN0aW9uIHRyYWNlcicgYnV0IGluCisgICAgICAgIHJlYWxpdHkgdGhpcyBlbmNvbXBhc3NlcyBhIG51bWJlciBvZiByZWxhdGVkIHRyYWNlcnMgYWxvbmcgd2l0aAorICAgICAgICB0aGUgaW5mcmFzdHJ1Y3R1cmUgdGhhdCB0aGV5IGFsbCBtYWtlIHVzZSBvZi4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nZnRyYWNlLXNldHVwJz4KKyAgICAgICAgPHRpdGxlPlNldHVwPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciB0aGlzIHNlY3Rpb24sIHdlJ2xsIGFzc3VtZSB5b3UndmUgYWxyZWFkeSBwZXJmb3JtZWQgdGhlIGJhc2ljCisgICAgICAgICAgICBzZXR1cCBvdXRsaW5lZCBpbiB0aGUgR2VuZXJhbCBTZXR1cCBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBmdHJhY2UsIHRyYWNlLWNtZCwgYW5kIGtlcm5lbHNoYXJrIHJ1biBvbiB0aGUgdGFyZ2V0IHN5c3RlbSwKKyAgICAgICAgICAgIGFuZCBhcmUgcmVhZHkgdG8gZ28gb3V0LW9mLXRoZS1ib3ggLSBubyBhZGRpdGlvbmFsIHNldHVwIGlzCisgICAgICAgICAgICBuZWNlc3NhcnkuIEZvciB0aGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24gd2UgYXNzdW1lIHlvdSd2ZSBzc2gnZWQKKyAgICAgICAgICAgIHRvIHRoZSBob3N0IGFuZCB3aWxsIGJlIHJ1bm5pbmcgZnRyYWNlIG9uIHRoZSB0YXJnZXQuIGtlcm5lbHNoYXJrCisgICAgICAgICAgICBpcyBhIEdVSSBhcHBsaWNhdGlvbiBhbmQgaWYgeW91IHVzZSB0aGUgJy1YJyBvcHRpb24gdG8gc3NoIHlvdQorICAgICAgICAgICAgY2FuIGhhdmUgdGhlIGtlcm5lbHNoYXJrIEdVSSBydW4gb24gdGhlIHRhcmdldCBidXQgZGlzcGxheQorICAgICAgICAgICAgcmVtb3RlbHkgb24gdGhlIGhvc3QgaWYgeW91IHdhbnQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYmFzaWMtZnRyYWNlLXVzYWdlJz4KKyAgICAgICAgPHRpdGxlPkJhc2ljIGZ0cmFjZSB1c2FnZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAnZnRyYWNlJyBlc3NlbnRpYWxseSByZWZlcnMgdG8gZXZlcnl0aGluZyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgdGhlIC90cmFjaW5nIGRpcmVjdG9yeSBvZiB0aGUgbW91bnRlZCBkZWJ1Z2ZzIGZpbGVzeXN0ZW0KKyAgICAgICAgICAgIChZb2N0byBmb2xsb3dzIHRoZSBzdGFuZGFyZCBjb252ZW50aW9uIGFuZCBtb3VudHMgaXQKKyAgICAgICAgICAgIGF0IC9zeXMva2VybmVsL2RlYnVnKS4gSGVyZSdzIGEgbGlzdGluZyBvZiBhbGwgdGhlIGZpbGVzCisgICAgICAgICAgICBmb3VuZCBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIG9uIGEgWW9jdG8gc3lzdGVtOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHN1Z2FyYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcjIGxzCisgICAgIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICBrcHJvYmVfZXZlbnRzICAgICAgICAgICAgICAgdHJhY2UKKyAgICAgYXZhaWxhYmxlX2V2ZW50cyAgICAgICAgICAgIGtwcm9iZV9wcm9maWxlICAgICAgICAgICAgICB0cmFjZV9jbG9jaworICAgICBhdmFpbGFibGVfZmlsdGVyX2Z1bmN0aW9ucyAgb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgIHRyYWNlX21hcmtlcgorICAgICBhdmFpbGFibGVfdHJhY2VycyAgICAgICAgICAgcGVyX2NwdSAgICAgICAgICAgICAgICAgICAgIHRyYWNlX29wdGlvbnMKKyAgICAgYnVmZmVyX3NpemVfa2IgICAgICAgICAgICAgIHByaW50a19mb3JtYXRzICAgICAgICAgICAgICB0cmFjZV9waXBlCisgICAgIGJ1ZmZlcl90b3RhbF9zaXplX2tiICAgICAgICBzYXZlZF9jbWRsaW5lcyAgICAgICAgICAgICAgdHJhY2luZ19jcHVtYXNrCisgICAgIGN1cnJlbnRfdHJhY2VyICAgICAgICAgICAgICBzZXRfZXZlbnQgICAgICAgICAgICAgICAgICAgdHJhY2luZ19lbmFibGVkCisgICAgIGR5bl9mdHJhY2VfdG90YWxfaW5mbyAgICAgICBzZXRfZnRyYWNlX2ZpbHRlciAgICAgICAgICAgdHJhY2luZ19vbgorICAgICBlbmFibGVkX2Z1bmN0aW9ucyAgICAgICAgICAgc2V0X2Z0cmFjZV9ub3RyYWNlICAgICAgICAgIHRyYWNpbmdfdGhyZXNoCisgICAgIGV2ZW50cyAgICAgICAgICAgICAgICAgICAgICBzZXRfZnRyYWNlX3BpZAorICAgICBmcmVlX2J1ZmZlciAgICAgICAgICAgICAgICAgc2V0X2dyYXBoX2Z1bmN0aW9uCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgZmlsZXMgbGlzdGVkIGFib3ZlIGFyZSB1c2VkIGZvciB2YXJpb3VzIHB1cnBvc2VzIC0KKyAgICAgICAgICAgIHNvbWUgcmVsYXRlIGRpcmVjdGx5IHRvIHRoZSB0cmFjZXJzIHRoZW1zZWx2ZXMsIG90aGVycyBhcmUKKyAgICAgICAgICAgIHVzZWQgdG8gc2V0IHRyYWNpbmcgb3B0aW9ucywgYW5kIHlldCBvdGhlcnMgYWN0dWFsbHkgY29udGFpbgorICAgICAgICAgICAgdGhlIHRyYWNpbmcgb3V0cHV0IHdoZW4gYSB0cmFjZXIgaXMgaW4gZWZmZWN0LiBTb21lIG9mIHRoZQorICAgICAgICAgICAgZnVuY3Rpb25zIGNhbiBiZSBndWVzc2VkIGZyb20gdGhlaXIgbmFtZXMsIG90aGVycyBuZWVkCisgICAgICAgICAgICBleHBsYW5hdGlvbjsgaW4gYW55IGNhc2UsIHdlJ2xsIGNvdmVyIHNvbWUgb2YgdGhlIGZpbGVzIHdlCisgICAgICAgICAgICBzZWUgaGVyZSBiZWxvdyBidXQgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBvdGhlcnMsIHBsZWFzZQorICAgICAgICAgICAgc2VlIHRoZSBmdHJhY2UgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2UnbGwgc3RhcnQgYnkgbG9va2luZyBhdCBzb21lIG9mIHRoZSBhdmFpbGFibGUgYnVpbHQtaW4KKyAgICAgICAgICAgIHRyYWNlcnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGNhdCdpbmcgdGhlICdhdmFpbGFibGVfdHJhY2VycycgZmlsZSBsaXN0cyB0aGUgc2V0IG9mCisgICAgICAgICAgICBhdmFpbGFibGUgdHJhY2VyczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBzdWdhcmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIyBjYXQgYXZhaWxhYmxlX3RyYWNlcnMKKyAgICAgYmxrIGZ1bmN0aW9uX2dyYXBoIGZ1bmN0aW9uIG5vcAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlICdjdXJyZW50X3RyYWNlcicgZmlsZSBjb250YWlucyB0aGUgdHJhY2VyIGN1cnJlbnRseSBpbgorICAgICAgICAgICAgZWZmZWN0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHN1Z2FyYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcjIGNhdCBjdXJyZW50X3RyYWNlcgorICAgICBub3AKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBhYm92ZSBsaXN0aW5nIG9mIGN1cnJlbnRfdHJhY2VyIHNob3dzIHRoYXQKKyAgICAgICAgICAgIHRoZSAnbm9wJyB0cmFjZXIgaXMgaW4gZWZmZWN0LCB3aGljaCBpcyBqdXN0IGFub3RoZXIKKyAgICAgICAgICAgIHdheSBvZiBzYXlpbmcgdGhhdCB0aGVyZSdzIGFjdHVhbGx5IG5vIHRyYWNlcgorICAgICAgICAgICAgY3VycmVudGx5IGluIGVmZmVjdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgZWNobydpbmcgb25lIG9mIHRoZSBhdmFpbGFibGVfdHJhY2VycyBpbnRvIGN1cnJlbnRfdHJhY2VyCisgICAgICAgICAgICBtYWtlcyB0aGUgc3BlY2lmaWVkIHRyYWNlciB0aGUgY3VycmVudCB0cmFjZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgZWNobyBmdW5jdGlvbiA+IGN1cnJlbnRfdHJhY2VyCisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgY2F0IGN1cnJlbnRfdHJhY2VyCisgICAgIGZ1bmN0aW9uCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgYWJvdmUgc2V0cyB0aGUgY3VycmVudCB0cmFjZXIgdG8gYmUgdGhlCisgICAgICAgICAgICAnZnVuY3Rpb24gdHJhY2VyJy4gVGhpcyB0cmFjZXIgdHJhY2VzIGV2ZXJ5IGZ1bmN0aW9uCisgICAgICAgICAgICBjYWxsIGluIHRoZSBrZXJuZWwgYW5kIG1ha2VzIGl0IGF2YWlsYWJsZSBhcyB0aGUKKyAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSAndHJhY2UnIGZpbGUuIFJlYWRpbmcgdGhlICd0cmFjZScgZmlsZQorICAgICAgICAgICAgbGlzdHMgdGhlIGN1cnJlbnRseSBidWZmZXJlZCBmdW5jdGlvbiBjYWxscyB0aGF0IGhhdmUgYmVlbgorICAgICAgICAgICAgdHJhY2VkIGJ5IHRoZSBmdW5jdGlvbiB0cmFjZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgY2F0IHRyYWNlIHwgbGVzcworCisgICAgICMgdHJhY2VyOiBmdW5jdGlvbgorICAgICAjCisgICAgICMgZW50cmllcy1pbi1idWZmZXIvZW50cmllcy13cml0dGVuOiAzMTA2MjkvNzY2NDcxICAgI1A6OAorICAgICAjCisgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLS0tLS09Jmd0OyBpcnFzLW9mZgorICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPSZndDsgbmVlZC1yZXNjaGVkCisgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvIF8tLS09Jmd0OyBoYXJkaXJxL3NvZnRpcnEKKyAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAvIF8tLT0mZ3Q7IHByZWVtcHQtZGVwdGgKKyAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKKyAgICAgIyAgICAgICAgICAgVEFTSy1QSUQgICBDUFUjICB8fHx8ICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyAgICAgIyAgICAgICAgICAgICAgfCB8ICAgICAgIHwgICB8fHx8ICAgICAgIHwgICAgICAgICB8CisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLi4xICAgNDcwLjg2NzE2OToga3RpbWVfZ2V0X3JlYWwgJmx0Oy1pbnRlbF9pZGxlCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLi4xICAgNDcwLjg2NzE3MDogZ2V0bnN0aW1lb2ZkYXkgJmx0Oy1rdGltZV9nZXRfcmVhbAorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwNF0gZC4uMSAgIDQ3MC44NjcxNzE6IG5zX3RvX3RpbWV2YWwgJmx0Oy1pbnRlbF9pZGxlCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLi4xICAgNDcwLjg2NzE3MTogbnNfdG9fdGltZXNwZWMgJmx0Oy1uc190b190aW1ldmFsCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLi4xICAgNDcwLjg2NzE3Mjogc21wX2FwaWNfdGltZXJfaW50ZXJydXB0ICZsdDstYXBpY190aW1lcl9pbnRlcnJ1cHQKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuLjEgICA0NzAuODY3MTcyOiBuYXRpdmVfYXBpY19tZW1fd3JpdGUgJmx0Oy1zbXBfYXBpY190aW1lcl9pbnRlcnJ1cHQKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuLjEgICA0NzAuODY3MTcyOiBpcnFfZW50ZXIgJmx0Oy1zbXBfYXBpY190aW1lcl9pbnRlcnJ1cHQKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuLjEgICA0NzAuODY3MTcyOiByY3VfaXJxX2VudGVyICZsdDstaXJxX2VudGVyCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLi4xICAgNDcwLjg2NzE3MzogcmN1X2lkbGVfZXhpdF9jb21tb24uaXNyYS4zMyAmbHQ7LXJjdV9pcnFfZW50ZXIKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuLjEgICA0NzAuODY3MTczOiBsb2NhbF9iaF9kaXNhYmxlICZsdDstaXJxX2VudGVyCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLi4xICAgNDcwLjg2NzE3MzogYWRkX3ByZWVtcHRfY291bnQgJmx0Oy1sb2NhbF9iaF9kaXNhYmxlCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLnMxICAgNDcwLjg2NzE3NDogdGlja19jaGVja19pZGxlICZsdDstaXJxX2VudGVyCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLnMxICAgNDcwLjg2NzE3NDogdGlja19jaGVja19vbmVzaG90X2Jyb2FkY2FzdCAmbHQ7LXRpY2tfY2hlY2tfaWRsZQorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwNF0gZC5zMSAgIDQ3MC44NjcxNzQ6IGt0aW1lX2dldCAmbHQ7LXRpY2tfY2hlY2tfaWRsZQorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwNF0gZC5zMSAgIDQ3MC44NjcxNzQ6IHRpY2tfbm9oel9zdG9wX2lkbGUgJmx0Oy10aWNrX2NoZWNrX2lkbGUKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczEgICA0NzAuODY3MTc1OiB1cGRhdGVfdHNfdGltZV9zdGF0cyAmbHQ7LXRpY2tfbm9oel9zdG9wX2lkbGUKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczEgICA0NzAuODY3MTc1OiBucl9pb3dhaXRfY3B1ICZsdDstdXBkYXRlX3RzX3RpbWVfc3RhdHMKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczEgICA0NzAuODY3MTc1OiB0aWNrX2RvX3VwZGF0ZV9qaWZmaWVzNjQgJmx0Oy10aWNrX2NoZWNrX2lkbGUKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczEgICA0NzAuODY3MTc1OiBfcmF3X3NwaW5fbG9jayAmbHQ7LXRpY2tfZG9fdXBkYXRlX2ppZmZpZXM2NAorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwNF0gZC5zMSAgIDQ3MC44NjcxNzY6IGFkZF9wcmVlbXB0X2NvdW50ICZsdDstX3Jhd19zcGluX2xvY2sKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczIgICA0NzAuODY3MTc2OiBkb190aW1lciAmbHQ7LXRpY2tfZG9fdXBkYXRlX2ppZmZpZXM2NAorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwNF0gZC5zMiAgIDQ3MC44NjcxNzY6IF9yYXdfc3Bpbl9sb2NrICZsdDstZG9fdGltZXIKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczIgICA0NzAuODY3MTc2OiBhZGRfcHJlZW1wdF9jb3VudCAmbHQ7LV9yYXdfc3Bpbl9sb2NrCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDA0XSBkLnMzICAgNDcwLjg2NzE3NzogbnRwX3RpY2tfbGVuZ3RoICZsdDstZG9fdGltZXIKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDRdIGQuczMgICA0NzAuODY3MTc3OiBfcmF3X3NwaW5fbG9ja19pcnFzYXZlICZsdDstbnRwX3RpY2tfbGVuZ3RoCisgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAuCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBFYWNoIGxpbmUgaW4gdGhlIHRyYWNlIGFib3ZlIHNob3dzIHdoYXQgd2FzIGhhcHBlbmluZyBpbgorICAgICAgICAgICAgdGhlIGtlcm5lbCBvbiBhIGdpdmVuIGNwdSwgdG8gdGhlIGxldmVsIG9mIGRldGFpbCBvZgorICAgICAgICAgICAgZnVuY3Rpb24gY2FsbHMuIEVhY2ggZW50cnkgc2hvd3MgdGhlIGZ1bmN0aW9uIGNhbGxlZCwKKyAgICAgICAgICAgIGZvbGxvd2VkIGJ5IGl0cyBjYWxsZXIgKGFmdGVyIHRoZSBhcnJvdykuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmdW5jdGlvbiB0cmFjZXIgZ2l2ZXMgeW91IGFuIGV4dHJlbWVseSBkZXRhaWxlZCBpZGVhCisgICAgICAgICAgICBvZiB3aGF0IHRoZSBrZXJuZWwgd2FzIGRvaW5nIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoZSB0cmFjZQorICAgICAgICAgICAgd2FzIHRha2VuLCBhbmQgaXMgYSBncmVhdCB3YXkgdG8gbGVhcm4gYWJvdXQgaG93IHRoZSBrZXJuZWwKKyAgICAgICAgICAgIGNvZGUgd29ya3MgaW4gYSBkeW5hbWljIHNlbnNlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxlbXBoYXNpcz5UeWluZyBpdCBUb2dldGhlcjo8L2VtcGhhc2lzPiBUaGUgZnRyYWNlIGZ1bmN0aW9uIHRyYWNlciBpcyBhbHNvCisgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSB3aXRoaW4gcGVyZiwgYXMgdGhlIGZ0cmFjZTpmdW5jdGlvbiB0cmFjZXBvaW50LgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIGEgbGl0dGxlIG1vcmUgZGlmZmljdWx0IHRvIGZvbGxvdyB0aGUgY2FsbCBjaGFpbnMgdGhhbgorICAgICAgICAgICAgaXQgbmVlZHMgdG8gYmUgLSBsdWNraWx5IHRoZXJlJ3MgYSB2YXJpYW50IG9mIHRoZSBmdW5jdGlvbgorICAgICAgICAgICAgdHJhY2VyIHRoYXQgZGlzcGxheXMgdGhlIGNhbGxjaGFpbnMgZXhwbGljaXRseSwgY2FsbGVkIHRoZQorICAgICAgICAgICAgJ2Z1bmN0aW9uX2dyYXBoJyB0cmFjZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgZWNobyBmdW5jdGlvbl9ncmFwaCAmZ3Q7IGN1cnJlbnRfdHJhY2VyCisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgY2F0IHRyYWNlIHwgbGVzcworCisgICAgICB0cmFjZXI6IGZ1bmN0aW9uX2dyYXBoCisKKyAgICAgIENQVSAgRFVSQVRJT04gICAgICAgICAgICAgICAgICBGVU5DVElPTiBDQUxMUworICAgICAgfCAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIHwgICB8CisgICAgIDcpICAgMC4wNDYgdXMgICAgfCAgICAgIHBpY2tfbmV4dF90YXNrX2ZhaXIoKTsKKyAgICAgNykgICAwLjA0MyB1cyAgICB8ICAgICAgcGlja19uZXh0X3Rhc2tfc3RvcCgpOworICAgICA3KSAgIDAuMDQyIHVzICAgIHwgICAgICBwaWNrX25leHRfdGFza19ydCgpOworICAgICA3KSAgIDAuMDMyIHVzICAgIHwgICAgICBwaWNrX25leHRfdGFza19mYWlyKCk7CisgICAgIDcpICAgMC4wMzAgdXMgICAgfCAgICAgIHBpY2tfbmV4dF90YXNrX2lkbGUoKTsKKyAgICAgNykgICAgICAgICAgICAgICB8ICAgICAgX3Jhd19zcGluX3VubG9ja19pcnEoKSB7CisgICAgIDcpICAgMC4wMzMgdXMgICAgfCAgICAgICAgc3ViX3ByZWVtcHRfY291bnQoKTsKKyAgICAgNykgICAwLjI1OCB1cyAgICB8ICAgICAgfQorICAgICA3KSAgIDAuMDMyIHVzICAgIHwgICAgICBzdWJfcHJlZW1wdF9jb3VudCgpOworICAgICA3KSArIDEzLjM0MSB1cyAgIHwgICAgfSAvKiBfX3NjaGVkdWxlICovCisgICAgIDcpICAgMC4wOTUgdXMgICAgfCAgfSAvKiBzdWJfcHJlZW1wdF9jb3VudCAqLworICAgICA3KSAgICAgICAgICAgICAgIHwgIHNjaGVkdWxlKCkgeworICAgICA3KSAgICAgICAgICAgICAgIHwgICAgX19zY2hlZHVsZSgpIHsKKyAgICAgNykgICAwLjA2MCB1cyAgICB8ICAgICAgYWRkX3ByZWVtcHRfY291bnQoKTsKKyAgICAgNykgICAwLjA0NCB1cyAgICB8ICAgICAgcmN1X25vdGVfY29udGV4dF9zd2l0Y2goKTsKKyAgICAgNykgICAgICAgICAgICAgICB8ICAgICAgX3Jhd19zcGluX2xvY2tfaXJxKCkgeworICAgICA3KSAgIDAuMDMzIHVzICAgIHwgICAgICAgIGFkZF9wcmVlbXB0X2NvdW50KCk7CisgICAgIDcpICAgMC4yNDcgdXMgICAgfCAgICAgIH0KKyAgICAgNykgICAgICAgICAgICAgICB8ICAgICAgaWRsZV9iYWxhbmNlKCkgeworICAgICA3KSAgICAgICAgICAgICAgIHwgICAgICAgIF9yYXdfc3Bpbl91bmxvY2soKSB7CisgICAgIDcpICAgMC4wMzEgdXMgICAgfCAgICAgICAgICBzdWJfcHJlZW1wdF9jb3VudCgpOworICAgICA3KSAgIDAuMjQ2IHVzICAgIHwgICAgICAgIH0KKyAgICAgNykgICAgICAgICAgICAgICB8ICAgICAgICB1cGRhdGVfc2hhcmVzKCkgeworICAgICA3KSAgIDAuMDMwIHVzICAgIHwgICAgICAgICAgX19yY3VfcmVhZF9sb2NrKCk7CisgICAgIDcpICAgMC4wMjkgdXMgICAgfCAgICAgICAgICBfX3JjdV9yZWFkX3VubG9jaygpOworICAgICA3KSAgIDAuNDg0IHVzICAgIHwgICAgICAgIH0KKyAgICAgNykgICAwLjAzMCB1cyAgICB8ICAgICAgICBfX3JjdV9yZWFkX2xvY2soKTsKKyAgICAgNykgICAgICAgICAgICAgICB8ICAgICAgICBsb2FkX2JhbGFuY2UoKSB7CisgICAgIDcpICAgICAgICAgICAgICAgfCAgICAgICAgICBmaW5kX2J1c2llc3RfZ3JvdXAoKSB7CisgICAgIDcpICAgMC4wMzEgdXMgICAgfCAgICAgICAgICAgIGlkbGVfY3B1KCk7CisgICAgIDcpICAgMC4wMjkgdXMgICAgfCAgICAgICAgICAgIGlkbGVfY3B1KCk7CisgICAgIDcpICAgMC4wMzUgdXMgICAgfCAgICAgICAgICAgIGlkbGVfY3B1KCk7CisgICAgIDcpICAgMC45MDYgdXMgICAgfCAgICAgICAgICB9CisgICAgIDcpICAgMS4xNDEgdXMgICAgfCAgICAgICAgfQorICAgICA3KSAgIDAuMDIyIHVzICAgIHwgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoKTsKKyAgICAgNykgICAgICAgICAgICAgICB8ICAgICAgICBsb2FkX2JhbGFuY2UoKSB7CisgICAgIDcpICAgICAgICAgICAgICAgfCAgICAgICAgICBmaW5kX2J1c2llc3RfZ3JvdXAoKSB7CisgICAgIDcpICAgMC4wMzEgdXMgICAgfCAgICAgICAgICAgIGlkbGVfY3B1KCk7CisgICAgIC4KKyAgICAgLgorICAgICAuCisgICAgIDQpICAgMC4wNjIgdXMgICAgfCAgICAgICAgbXNlY3NfdG9famlmZmllcygpOworICAgICA0KSAgIDAuMDYyIHVzICAgIHwgICAgICAgIF9fcmN1X3JlYWRfdW5sb2NrKCk7CisgICAgIDQpICAgICAgICAgICAgICAgfCAgICAgICAgX3Jhd19zcGluX2xvY2soKSB7CisgICAgIDQpICAgMC4wNzMgdXMgICAgfCAgICAgICAgICBhZGRfcHJlZW1wdF9jb3VudCgpOworICAgICA0KSAgIDAuNTYyIHVzICAgIHwgICAgICAgIH0KKyAgICAgNCkgKyAxNy40NTIgdXMgICB8ICAgICAgfQorICAgICA0KSAgIDAuMTA4IHVzICAgIHwgICAgICBwdXRfcHJldl90YXNrX2ZhaXIoKTsKKyAgICAgNCkgICAwLjEwMiB1cyAgICB8ICAgICAgcGlja19uZXh0X3Rhc2tfZmFpcigpOworICAgICA0KSAgIDAuMDg0IHVzICAgIHwgICAgICBwaWNrX25leHRfdGFza19zdG9wKCk7CisgICAgIDQpICAgMC4wNzUgdXMgICAgfCAgICAgIHBpY2tfbmV4dF90YXNrX3J0KCk7CisgICAgIDQpICAgMC4wNjIgdXMgICAgfCAgICAgIHBpY2tfbmV4dF90YXNrX2ZhaXIoKTsKKyAgICAgNCkgICAwLjA2NiB1cyAgICB8ICAgICAgcGlja19uZXh0X3Rhc2tfaWRsZSgpOworICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgNCkgICBrd29ya2VyLTc0ICAgPSZndDsgICAgJmx0O2lkbGUmZ3Q7LTAKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgNCkgICAgICAgICAgICAgICB8ICAgICAgZmluaXNoX3Rhc2tfc3dpdGNoKCkgeworICAgICA0KSAgICAgICAgICAgICAgIHwgICAgICAgIF9yYXdfc3Bpbl91bmxvY2tfaXJxKCkgeworICAgICA0KSAgIDAuMTAwIHVzICAgIHwgICAgICAgICAgc3ViX3ByZWVtcHRfY291bnQoKTsKKyAgICAgNCkgICAwLjU4MiB1cyAgICB8ICAgICAgICB9CisgICAgIDQpICAgMS4xMDUgdXMgICAgfCAgICAgIH0KKyAgICAgNCkgICAwLjA4OCB1cyAgICB8ICAgICAgc3ViX3ByZWVtcHRfY291bnQoKTsKKyAgICAgNCkgISAxMDAuMDY2IHVzICB8ICAgIH0KKyAgICAgLgorICAgICAuCisgICAgIC4KKyAgICAgMykgICAgICAgICAgICAgICB8ICBzeXNfaW9jdGwoKSB7CisgICAgIDMpICAgMC4wODMgdXMgICAgfCAgICBmZ2V0X2xpZ2h0KCk7CisgICAgIDMpICAgICAgICAgICAgICAgfCAgICBzZWN1cml0eV9maWxlX2lvY3RsKCkgeworICAgICAzKSAgIDAuMDY2IHVzICAgIHwgICAgICBjYXBfZmlsZV9pb2N0bCgpOworICAgICAzKSAgIDAuNTYyIHVzICAgIHwgICAgfQorICAgICAzKSAgICAgICAgICAgICAgIHwgICAgZG9fdmZzX2lvY3RsKCkgeworICAgICAzKSAgICAgICAgICAgICAgIHwgICAgICBkcm1faW9jdGwoKSB7CisgICAgIDMpICAgMC4wNzUgdXMgICAgfCAgICAgICAgZHJtX3V0X2RlYnVnX3ByaW50aygpOworICAgICAzKSAgICAgICAgICAgICAgIHwgICAgICAgIGk5MTVfZ2VtX3B3cml0ZV9pb2N0bCgpIHsKKyAgICAgMykgICAgICAgICAgICAgICB8ICAgICAgICAgIGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCkgeworICAgICAzKSAgIDAuMDcwIHVzICAgIHwgICAgICAgICAgICBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoKTsKKyAgICAgMykgICAwLjU3MCB1cyAgICB8ICAgICAgICAgIH0KKyAgICAgMykgICAgICAgICAgICAgICB8ICAgICAgICAgIGRybV9nZW1fb2JqZWN0X2xvb2t1cCgpIHsKKyAgICAgMykgICAgICAgICAgICAgICB8ICAgICAgICAgICAgX3Jhd19zcGluX2xvY2soKSB7CisgICAgIDMpICAgMC4wODAgdXMgICAgfCAgICAgICAgICAgICAgYWRkX3ByZWVtcHRfY291bnQoKTsKKyAgICAgMykgICAwLjYyMCB1cyAgICB8ICAgICAgICAgICAgfQorICAgICAzKSAgICAgICAgICAgICAgIHwgICAgICAgICAgICBfcmF3X3NwaW5fdW5sb2NrKCkgeworICAgICAzKSAgIDAuMDg1IHVzICAgIHwgICAgICAgICAgICAgIHN1Yl9wcmVlbXB0X2NvdW50KCk7CisgICAgIDMpICAgMC41NjIgdXMgICAgfCAgICAgICAgICAgIH0KKyAgICAgMykgICAyLjE0OSB1cyAgICB8ICAgICAgICAgIH0KKyAgICAgMykgICAwLjEzMyB1cyAgICB8ICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9waW4oKTsKKyAgICAgMykgICAgICAgICAgICAgICB8ICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbigpIHsKKyAgICAgMykgICAwLjA2NSB1cyAgICB8ICAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2dwdV93cml0ZV9kb21haW4oKTsKKyAgICAgMykgICAwLjA2NSB1cyAgICB8ICAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKCk7CisgICAgIDMpICAgMC4wNjIgdXMgICAgfCAgICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9jcHVfd3JpdGVfZG9tYWluKCk7CisgICAgIDMpICAgMS42MTIgdXMgICAgfCAgICAgICAgICB9CisgICAgIDMpICAgICAgICAgICAgICAgfCAgICAgICAgICBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKCkgeworICAgICAzKSAgIDAuMDk3IHVzICAgIHwgICAgICAgICAgICBpOTE1X2dlbV9vYmplY3RfZmx1c2hfZmVuY2UuY29uc3Rwcm9wLjM2KCk7CisgICAgIDMpICAgMC42NDUgdXMgICAgfCAgICAgICAgICB9CisgICAgIDMpICAgMC4wNzAgdXMgICAgfCAgICAgICAgICBhZGRfcHJlZW1wdF9jb3VudCgpOworICAgICAzKSAgIDAuMDcwIHVzICAgIHwgICAgICAgICAgc3ViX3ByZWVtcHRfY291bnQoKTsKKyAgICAgMykgICAwLjA3MyB1cyAgICB8ICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF91bnBpbigpOworICAgICAzKSAgIDAuMDY4IHVzICAgIHwgICAgICAgICAgbXV0ZXhfdW5sb2NrKCk7CisgICAgIDMpICAgOS45MjQgdXMgICAgfCAgICAgICAgfQorICAgICAzKSArIDExLjIzNiB1cyAgIHwgICAgICB9CisgICAgIDMpICsgMTEuNzcwIHVzICAgfCAgICB9CisgICAgIDMpICsgMTMuNzg0IHVzICAgfCAgfQorICAgICAzKSAgICAgICAgICAgICAgIHwgIHN5c19pb2N0bCgpIHsKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFzIHlvdSBjYW4gc2VlLCB0aGUgZnVuY3Rpb25fZ3JhcGggZGlzcGxheSBpcyBtdWNoIGVhc2llciB0bworICAgICAgICAgICAgZm9sbG93LiBBbHNvIG5vdGUgdGhhdCBpbiBhZGRpdGlvbiB0byB0aGUgZnVuY3Rpb24gY2FsbHMgYW5kCisgICAgICAgICAgICBhc3NvY2lhdGVkIGJyYWNlcywgb3RoZXIgZXZlbnRzIHN1Y2ggYXMgc2NoZWR1bGVyIGV2ZW50cworICAgICAgICAgICAgYXJlIGRpc3BsYXllZCBpbiBjb250ZXh0LiBJbiBmYWN0LCB5b3UgY2FuIGZyZWVseSBpbmNsdWRlCisgICAgICAgICAgICBhbnkgdHJhY2Vwb2ludCBhdmFpbGFibGUgaW4gdGhlIHRyYWNlIGV2ZW50cyBzdWJzeXN0ZW0gZGVzY3JpYmVkCisgICAgICAgICAgICBpbiB0aGUgbmV4dCBzZWN0aW9uIGJ5IHNpbXBseSBlbmFibGluZyB0aG9zZSBldmVudHMsIGFuZCB0aGV5J2xsCisgICAgICAgICAgICBhcHBlYXIgaW4gY29udGV4dCBpbiB0aGUgZnVuY3Rpb24gZ3JhcGggZGlzcGxheS4gUXVpdGUgYQorICAgICAgICAgICAgcG93ZXJmdWwgdG9vbCBmb3IgdW5kZXJzdGFuZGluZyBrZXJuZWwgZHluYW1pY3MuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFsc28gbm90aWNlIHRoYXQgdGhlcmUgYXJlIHZhcmlvdXMgYW5ub3RhdGlvbnMgb24gdGhlIGxlZnQKKyAgICAgICAgICAgIGhhbmQgc2lkZSBvZiB0aGUgZGlzcGxheS4gRm9yIGV4YW1wbGUgaWYgdGhlIHRvdGFsIHRpbWUgaXQKKyAgICAgICAgICAgIHRvb2sgZm9yIGEgZ2l2ZW4gZnVuY3Rpb24gdG8gZXhlY3V0ZSBpcyBhYm92ZSBhIGNlcnRhaW4KKyAgICAgICAgICAgIHRocmVzaG9sZCwgYW4gZXhjbGFtYXRpb24gcG9pbnQgb3IgcGx1cyBzaWduIGFwcGVhcnMgb24gdGhlCisgICAgICAgICAgICBsZWZ0IGhhbmQgc2lkZS4gUGxlYXNlIHNlZSB0aGUgZnRyYWNlIGRvY3VtZW50YXRpb24gZm9yCisgICAgICAgICAgICBkZXRhaWxzIG9uIGFsbCB0aGVzZSBmaWVsZHMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndGhlLXRyYWNlLWV2ZW50cy1zdWJzeXN0ZW0nPgorICAgICAgICA8dGl0bGU+VGhlICd0cmFjZSBldmVudHMnIFN1YnN5c3RlbTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgZXNwZWNpYWxseSBpbXBvcnRhbnQgZGlyZWN0b3J5IGNvbnRhaW5lZCB3aXRoaW4KKyAgICAgICAgICAgIHRoZSAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIGRpcmVjdG9yeSBpcyB0aGUgJ2V2ZW50cycKKyAgICAgICAgICAgIHN1YmRpcmVjdG9yeSwgd2hpY2ggY29udGFpbnMgcmVwcmVzZW50YXRpb25zIG9mIGV2ZXJ5CisgICAgICAgICAgICB0cmFjZXBvaW50IGluIHRoZSBzeXN0ZW0uIExpc3Rpbmcgb3V0IHRoZSBjb250ZW50cyBvZgorICAgICAgICAgICAgdGhlICdldmVudHMnIHN1YmRpcmVjdG9yeSwgd2Ugc2VlIG1haW5seSBhbm90aGVyIHNldCBvZgorICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgY2QgZXZlbnRzCisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMjIGxzIC1hbAorICAgICBkcnd4ci14ci14ICAgMzggcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSAuCisgICAgIGRyd3hyLXhyLXggICAgNSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IC4uCisgICAgIGRyd3hyLXhyLXggICAxOSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGJsb2NrCisgICAgIGRyd3hyLXhyLXggICAzMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGJ0cmZzCisgICAgIGRyd3hyLXhyLXggICAgNSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGRybQorICAgICAtcnctci0tci0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBlbmFibGUKKyAgICAgZHJ3eHIteHIteCAgIDQwIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgZXh0MworICAgICBkcnd4ci14ci14ICAgNzkgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBleHQ0CisgICAgIGRyd3hyLXhyLXggICAxNCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGZ0cmFjZQorICAgICBkcnd4ci14ci14ICAgIDggcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBoZGEKKyAgICAgLXItLXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgaGVhZGVyX2V2ZW50CisgICAgIC1yLS1yLS1yLS0gICAgMSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGhlYWRlcl9wYWdlCisgICAgIGRyd3hyLXhyLXggICAyNSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGk5MTUKKyAgICAgZHJ3eHIteHIteCAgICA3IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgaXJxCisgICAgIGRyd3hyLXhyLXggICAxMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGpiZAorICAgICBkcnd4ci14ci14ICAgMTQgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBqYmQyCisgICAgIGRyd3hyLXhyLXggICAxNCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGttZW0KKyAgICAgZHJ3eHIteHIteCAgICA3IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgbW9kdWxlCisgICAgIGRyd3hyLXhyLXggICAgMyByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IG5hcGkKKyAgICAgZHJ3eHIteHIteCAgICA2IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgbmV0CisgICAgIGRyd3hyLXhyLXggICAgMyByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IG9vbQorICAgICBkcnd4ci14ci14ICAgMTIgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBwb3dlcgorICAgICBkcnd4ci14ci14ICAgIDMgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBwcmludGsKKyAgICAgZHJ3eHIteHIteCAgICA4IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgcmFuZG9tCisgICAgIGRyd3hyLXhyLXggICAgNCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHJhd19zeXNjYWxscworICAgICBkcnd4ci14ci14ICAgIDMgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSByY3UKKyAgICAgZHJ3eHIteHIteCAgICA2IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgcnBtCisgICAgIGRyd3hyLXhyLXggICAyMCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHNjaGVkCisgICAgIGRyd3hyLXhyLXggICAgNyByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHNjc2kKKyAgICAgZHJ3eHIteHIteCAgICA0IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgc2lnbmFsCisgICAgIGRyd3hyLXhyLXggICAgNSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHNrYgorICAgICBkcnd4ci14ci14ICAgIDQgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBzb2NrCisgICAgIGRyd3hyLXhyLXggICAxMCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHN1bnJwYworICAgICBkcnd4ci14ci14ICA1Mzggcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBzeXNjYWxscworICAgICBkcnd4ci14ci14ICAgIDQgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSB0YXNrCisgICAgIGRyd3hyLXhyLXggICAxNCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHRpbWVyCisgICAgIGRyd3hyLXhyLXggICAgMyByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHVkcAorICAgICBkcnd4ci14ci14ICAgMjEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSB2bXNjYW4KKyAgICAgZHJ3eHIteHIteCAgICAzIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgdnN5c2NhbGwKKyAgICAgZHJ3eHIteHIteCAgICA2IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgd29ya3F1ZXVlCisgICAgIGRyd3hyLXhyLXggICAyNiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IHdyaXRlYmFjaworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgRWFjaCBvbmUgb2YgdGhlc2Ugc3ViZGlyZWN0b3JpZXMgY29ycmVzcG9uZHMgdG8gYQorICAgICAgICAgICAgJ3N1YnN5c3RlbScgYW5kIGNvbnRhaW5zIHlldCBhZ2FpbiBtb3JlIHN1YmRpcmVjdG9yaWVzLAorICAgICAgICAgICAgZWFjaCBvbmUgb2YgdGhvc2UgZmluYWxseSBjb3JyZXNwb25kaW5nIHRvIGEgdHJhY2Vwb2ludC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBoZXJlIGFyZSB0aGUgY29udGVudHMgb2YgdGhlICdrbWVtJyBzdWJzeXN0ZW06CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMjIGNkIGttZW0KKyAgICAgcm9vdEBzdWdhcmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9rbWVtIyBscyAtYWwKKyAgICAgZHJ3eHIteHIteCAgIDE0IHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgLgorICAgICBkcnd4ci14ci14ICAgMzggcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSAuLgorICAgICAtcnctci0tci0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBlbmFibGUKKyAgICAgLXJ3LXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgZmlsdGVyCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGtmcmVlCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGttYWxsb2MKKyAgICAgZHJ3eHIteHIteCAgICAyIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkga21hbGxvY19ub2RlCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGttZW1fY2FjaGVfYWxsb2MKKyAgICAgZHJ3eHIteHIteCAgICAyIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkga21lbV9jYWNoZV9hbGxvY19ub2RlCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGttZW1fY2FjaGVfZnJlZQorICAgICBkcnd4ci14ci14ICAgIDIgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBtbV9wYWdlX2FsbG9jCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IG1tX3BhZ2VfYWxsb2NfZXh0ZnJhZworICAgICBkcnd4ci14ci14ICAgIDIgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBtbV9wYWdlX2FsbG9jX3pvbmVfbG9ja2VkCisgICAgIGRyd3hyLXhyLXggICAgMiByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IG1tX3BhZ2VfZnJlZQorICAgICBkcnd4ci14ci14ICAgIDIgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBtbV9wYWdlX2ZyZWVfYmF0Y2hlZAorICAgICBkcnd4ci14ci14ICAgIDIgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBtbV9wYWdlX3BjcHVfZHJhaW4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIExldCdzIHNlZSB3aGF0J3MgaW5zaWRlIHRoZSBzdWJkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMKKyAgICAgICAgICAgIHRyYWNlcG9pbnQsIGluIHRoaXMgY2FzZSB0aGUgb25lIGZvciBrbWFsbG9jOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHN1Z2FyYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2ttZW0jIGNkIGttYWxsb2MKKyAgICAgcm9vdEBzdWdhcmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9rbWVtL2ttYWxsb2MjIGxzIC1hbAorICAgICBkcnd4ci14ci14ICAgIDIgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSAuCisgICAgIGRyd3hyLXhyLXggICAxNCByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IC4uCisgICAgIC1ydy1yLS1yLS0gICAgMSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGVuYWJsZQorICAgICAtcnctci0tci0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgICAwIE5vdiAxNCAyMzoxOSBmaWx0ZXIKKyAgICAgLXItLXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAgMCBOb3YgMTQgMjM6MTkgZm9ybWF0CisgICAgIC1yLS1yLS1yLS0gICAgMSByb290ICAgICByb290ICAgICAgICAgICAgIDAgTm92IDE0IDIzOjE5IGlkCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgJ2Zvcm1hdCcgZmlsZSBmb3IgdGhlIHRyYWNlcG9pbnQgZGVzY3JpYmVzIHRoZSBldmVudAorICAgICAgICAgICAgaW4gbWVtb3J5LCB3aGljaCBpcyB1c2VkIGJ5IHRoZSB2YXJpb3VzIHRyYWNpbmcgdG9vbHMKKyAgICAgICAgICAgIHRoYXQgbm93IG1ha2UgdXNlIG9mIHRoZXNlIHRyYWNlcG9pbnQgdG8gcGFyc2UgdGhlIGV2ZW50CisgICAgICAgICAgICBhbmQgbWFrZSBzZW5zZSBvZiBpdCwgYWxvbmcgd2l0aCBhICdwcmludCBmbXQnIGZpZWxkIHRoYXQKKyAgICAgICAgICAgIGFsbG93cyB0b29scyBsaWtlIGZ0cmFjZSB0byBkaXNwbGF5IHRoZSBldmVudCBhcyB0ZXh0LgorICAgICAgICAgICAgSGVyZSdzIHdoYXQgdGhlIGZvcm1hdCBvZiB0aGUga21hbGxvYyBldmVudCBsb29rcyBsaWtlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHN1Z2FyYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2ttZW0va21hbGxvYyMgY2F0IGZvcm1hdAorICAgICBuYW1lOiBrbWFsbG9jCisgICAgIElEOiAzMTMKKyAgICAgZm9ybWF0OgorCSAgICAgZmllbGQ6dW5zaWduZWQgc2hvcnQgY29tbW9uX3R5cGU7CW9mZnNldDowOwlzaXplOjI7CXNpZ25lZDowOworCSAgICAgZmllbGQ6dW5zaWduZWQgY2hhciBjb21tb25fZmxhZ3M7CW9mZnNldDoyOwlzaXplOjE7CXNpZ25lZDowOworCSAgICAgZmllbGQ6dW5zaWduZWQgY2hhciBjb21tb25fcHJlZW1wdF9jb3VudDsJb2Zmc2V0OjM7CXNpemU6MTsJc2lnbmVkOjA7CisJICAgICBmaWVsZDppbnQgY29tbW9uX3BpZDsJb2Zmc2V0OjQ7CXNpemU6NDsJc2lnbmVkOjE7CisJICAgICBmaWVsZDppbnQgY29tbW9uX3BhZGRpbmc7CW9mZnNldDo4OwlzaXplOjQ7CXNpZ25lZDoxOworCisJICAgICBmaWVsZDp1bnNpZ25lZCBsb25nIGNhbGxfc2l0ZTsJb2Zmc2V0OjE2OwlzaXplOjg7CXNpZ25lZDowOworCSAgICAgZmllbGQ6Y29uc3Qgdm9pZCAqIHB0cjsJb2Zmc2V0OjI0OwlzaXplOjg7CXNpZ25lZDowOworCSAgICAgZmllbGQ6c2l6ZV90IGJ5dGVzX3JlcTsJb2Zmc2V0OjMyOwlzaXplOjg7CXNpZ25lZDowOworCSAgICAgZmllbGQ6c2l6ZV90IGJ5dGVzX2FsbG9jOwlvZmZzZXQ6NDA7CXNpemU6ODsJc2lnbmVkOjA7CisJICAgICBmaWVsZDpnZnBfdCBnZnBfZmxhZ3M7CW9mZnNldDo0ODsJc2l6ZTo0OwlzaWduZWQ6MDsKKworICAgICBwcmludCBmbXQ6ICJjYWxsX3NpdGU9JWx4IHB0cj0lcCBieXRlc19yZXE9JXp1IGJ5dGVzX2FsbG9jPSV6dSBnZnBfZmxhZ3M9JXMiLCBSRUMtPmNhbGxfc2l0ZSwgUkVDLT5wdHIsIFJFQy0+Ynl0ZXNfcmVxLCBSRUMtPmJ5dGVzX2FsbG9jLAorICAgICAoUkVDLT5nZnBfZmxhZ3MpID8gX19wcmludF9mbGFncyhSRUMtPmdmcF9mbGFncywgInwiLCB7KHVuc2lnbmVkIGxvbmcpKCgoKCBnZnBfdCkweDEwdSkgfCAoKCBnZnBfdCkweDQwdSkgfCAoKCBnZnBfdCkweDgwdSkgfCAoKAorICAgICBnZnBfdCkweDIwMDAwdSkgfCAoKCBnZnBfdCkweDAydSkgfCAoKCBnZnBfdCkweDA4dSkpIHwgKCggZ2ZwX3QpMHg0MDAwdSkgfCAoKCBnZnBfdCkweDEwMDAwdSkgfCAoKCBnZnBfdCkweDEwMDB1KSB8ICgoIGdmcF90KTB4MjAwdSkgfCAoKAorICAgICBnZnBfdCkweDQwMDAwMHUpKSwgIkdGUF9UUkFOU0hVR0UifSwgeyh1bnNpZ25lZCBsb25nKSgoKCBnZnBfdCkweDEwdSkgfCAoKCBnZnBfdCkweDQwdSkgfCAoKCBnZnBfdCkweDgwdSkgfCAoKCBnZnBfdCkweDIwMDAwdSkgfCAoKAorICAgICBnZnBfdCkweDAydSkgfCAoKCBnZnBfdCkweDA4dSkpLCAiR0ZQX0hJR0hVU0VSX01PVkFCTEUifSwgeyh1bnNpZ25lZCBsb25nKSgoKCBnZnBfdCkweDEwdSkgfCAoKCBnZnBfdCkweDQwdSkgfCAoKCBnZnBfdCkweDgwdSkgfCAoKAorICAgICBnZnBfdCkweDIwMDAwdSkgfCAoKCBnZnBfdCkweDAydSkpLCAiR0ZQX0hJR0hVU0VSIn0sIHsodW5zaWduZWQgbG9uZykoKCggZ2ZwX3QpMHgxMHUpIHwgKCggZ2ZwX3QpMHg0MHUpIHwgKCggZ2ZwX3QpMHg4MHUpIHwgKCgKKyAgICAgZ2ZwX3QpMHgyMDAwMHUpKSwgIkdGUF9VU0VSIn0sIHsodW5zaWduZWQgbG9uZykoKCggZ2ZwX3QpMHgxMHUpIHwgKCggZ2ZwX3QpMHg0MHUpIHwgKCggZ2ZwX3QpMHg4MHUpIHwgKCggZ2ZwX3QpMHg4MDAwMHUpKSwgR0ZQX1RFTVBPUkFSWSJ9LAorICAgICB7KHVuc2lnbmVkIGxvbmcpKCgoIGdmcF90KTB4MTB1KSB8ICgoIGdmcF90KTB4NDB1KSB8ICgoIGdmcF90KTB4ODB1KSksICJHRlBfS0VSTkVMIn0sIHsodW5zaWduZWQgbG9uZykoKCggZ2ZwX3QpMHgxMHUpIHwgKCggZ2ZwX3QpMHg0MHUpKSwKKyAgICAgIkdGUF9OT0ZTIn0sIHsodW5zaWduZWQgbG9uZykoKCggZ2ZwX3QpMHgyMHUpKSwgIkdGUF9BVE9NSUMifSwgeyh1bnNpZ25lZCBsb25nKSgoKCBnZnBfdCkweDEwdSkpLCAiR0ZQX05PSU8ifSwgeyh1bnNpZ25lZCBsb25nKSgoCisgICAgIGdmcF90KTB4MjB1KSwgIkdGUF9ISUdIIn0sIHsodW5zaWduZWQgbG9uZykoKCBnZnBfdCkweDEwdSksICJHRlBfV0FJVCJ9LCB7KHVuc2lnbmVkIGxvbmcpKCggZ2ZwX3QpMHg0MHUpLCAiR0ZQX0lPIn0sIHsodW5zaWduZWQgbG9uZykoKAorICAgICBnZnBfdCkweDEwMHUpLCAiR0ZQX0NPTEQifSwgeyh1bnNpZ25lZCBsb25nKSgoIGdmcF90KTB4MjAwdSksICJHRlBfTk9XQVJOIn0sIHsodW5zaWduZWQgbG9uZykoKCBnZnBfdCkweDQwMHUpLCAiR0ZQX1JFUEVBVCJ9LCB7KHVuc2lnbmVkCisgICAgIGxvbmcpKCggZ2ZwX3QpMHg4MDB1KSwgIkdGUF9OT0ZBSUwifSwgeyh1bnNpZ25lZCBsb25nKSgoIGdmcF90KTB4MTAwMHUpLCAiR0ZQX05PUkVUUlkifSwgICAgICB7KHVuc2lnbmVkIGxvbmcpKCggZ2ZwX3QpMHg0MDAwdSksICJHRlBfQ09NUCJ9LAorICAgICB7KHVuc2lnbmVkIGxvbmcpKCggZ2ZwX3QpMHg4MDAwdSksICJHRlBfWkVSTyJ9LCB7KHVuc2lnbmVkIGxvbmcpKCggZ2ZwX3QpMHgxMDAwMHUpLCAiR0ZQX05PTUVNQUxMT0MifSwgeyh1bnNpZ25lZCBsb25nKSgoIGdmcF90KTB4MjAwMDB1KSwKKyAgICAgIkdGUF9IQVJEV0FMTCJ9LCB7KHVuc2lnbmVkIGxvbmcpKCggZ2ZwX3QpMHg0MDAwMHUpLCAiR0ZQX1RISVNOT0RFIn0sIHsodW5zaWduZWQgbG9uZykoKCBnZnBfdCkweDgwMDAwdSksICJHRlBfUkVDTEFJTUFCTEUifSwgeyh1bnNpZ25lZAorICAgICBsb25nKSgoIGdmcF90KTB4MDh1KSwgIkdGUF9NT1ZBQkxFIn0sIHsodW5zaWduZWQgbG9uZykoKCBnZnBfdCkwKSwgIkdGUF9OT1RSQUNLIn0sIHsodW5zaWduZWQgbG9uZykoKCBnZnBfdCkweDQwMDAwMHUpLCAiR0ZQX05PX0tTV0FQRCJ9LAorICAgICB7KHVuc2lnbmVkIGxvbmcpKCggZ2ZwX3QpMHg4MDAwMDB1KSwgIkdGUF9PVEhFUl9OT0RFIn0gKSA6ICJHRlBfTk9XQUlUIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlICdlbmFibGUnIGZpbGUgaW4gdGhlIHRyYWNlcG9pbnQgZGlyZWN0b3J5IGlzIHdoYXQgYWxsb3dzCisgICAgICAgICAgICB0aGUgdXNlciAob3IgdG9vbHMgc3VjaCBhcyB0cmFjZS1jbWQpIHRvIGFjdHVhbGx5IHR1cm4gdGhlCisgICAgICAgICAgICB0cmFjZXBvaW50IG9uIGFuZCBvZmYuIFdoZW4gZW5hYmxlZCwgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgIHRyYWNlcG9pbnQgd2lsbCBzdGFydCBhcHBlYXJpbmcgaW4gdGhlIGZ0cmFjZSAndHJhY2UnCisgICAgICAgICAgICBmaWxlIGRlc2NyaWJlZCBwcmV2aW91c2x5LiBGb3IgZXhhbXBsZSwgdGhpcyB0dXJucyBvbiB0aGUKKyAgICAgICAgICAgIGttYWxsb2MgdHJhY2Vwb2ludDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBzdWdhcmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9rbWVtL2ttYWxsb2MjIGVjaG8gMSA+IGVuYWJsZQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQXQgdGhlIG1vbWVudCwgd2UncmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIGZ1bmN0aW9uIHRyYWNlciBvcgorICAgICAgICAgICAgc29tZSBvdGhlciB0cmFjZXIgdGhhdCBtaWdodCBiZSBpbiBlZmZlY3QsIHNvIHdlIGZpcnN0IHR1cm4KKyAgICAgICAgICAgIGl0IG9mZiwgYnV0IGlmIHdlIGRvIHRoYXQsIHdlIHN0aWxsIG5lZWQgdG8gdHVybiB0cmFjaW5nIG9uIGluCisgICAgICAgICAgICBvcmRlciB0byBzZWUgdGhlIGV2ZW50cyBpbiB0aGUgb3V0cHV0IGJ1ZmZlcjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBzdWdhcmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIyBlY2hvIG5vcCA+IGN1cnJlbnRfdHJhY2VyCisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgZWNobyAxID4gdHJhY2luZ19vbgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgTm93LCBpZiB3ZSBsb29rIGF0IHRoZSB0aGUgJ3RyYWNlJyBmaWxlLCB3ZSBzZWUgbm90aGluZworICAgICAgICAgICAgYnV0IHRoZSBrbWFsbG9jIGV2ZW50cyB3ZSBqdXN0IHR1cm5lZCBvbjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBzdWdhcmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIyBjYXQgdHJhY2UgfCBsZXNzCisgICAgICMgdHJhY2VyOiBub3AKKyAgICAgIworICAgICAjIGVudHJpZXMtaW4tYnVmZmVyL2VudHJpZXMtd3JpdHRlbjogMTg5Ny8xODk3ICAgI1A6OAorICAgICAjCisgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLS0tLS09Jmd0OyBpcnFzLW9mZgorICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPSZndDsgbmVlZC1yZXNjaGVkCisgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvIF8tLS09Jmd0OyBoYXJkaXJxL3NvZnRpcnEKKyAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAvIF8tLT0mZ3Q7IHByZWVtcHQtZGVwdGgKKyAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKKyAgICAgIyAgICAgICAgICAgVEFTSy1QSUQgICBDUFUjICB8fHx8ICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyAgICAgIyAgICAgICAgICAgICAgfCB8ICAgICAgIHwgICB8fHx8ICAgICAgIHwgICAgICAgICB8CisgICAgICAgICAgICBkcm9wYmVhci0xNDY1ICBbMDAwXSAuLi4xIDE4MTU0LjYyMDc1Mzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2NjUwZDQgcHRyPWZmZmY4ODAwNzI5YzMwMDAgYnl0ZXNfcmVxPTIwNDggYnl0ZXNfYWxsb2M9MjA0OCBnZnBfZmxhZ3M9R0ZQX0tFUk5FTAorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwMF0gLi5zMyAxODE1NC42MjE2NDA6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjE5YjM2IHB0cj1mZmZmODgwMDZkNTU1ODAwIGJ5dGVzX3JlcT01MTIgYnl0ZXNfYWxsb2M9NTEyIGdmcF9mbGFncz1HRlBfQVRPTUlDCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDAwXSAuLnMzIDE4MTU0LjYyMTY1Njoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2MTliMzYgcHRyPWZmZmY4ODAwNmQ1NTU4MDAgYnl0ZXNfcmVxPTUxMiBieXRlc19hbGxvYz01MTIgZ2ZwX2ZsYWdzPUdGUF9BVE9NSUMKKyAgICAgbWF0Y2hib3gtdGVybWluLTEzNjEgIFswMDFdIC4uLjEgMTgxNTQuNzU1NDcyOiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTYxNDA1MCBwdHI9ZmZmZjg4MDA2ZDVmMGUwMCBieXRlc19yZXE9NTEyIGJ5dGVzX2FsbG9jPTUxMiBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfUkVQRUFUCisgICAgICAgICAgICAgICAgWG9yZy0xMjY0ICBbMDAyXSAuLi4xIDE4MTU0Ljc1NTU4MToga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE0MWFiZTggcHRyPWZmZmY4ODAwNzM0ZjRjYzAgYnl0ZXNfcmVxPTE2OCBieXRlc19hbGxvYz0xOTIgZ2ZwX2ZsYWdzPUdGUF9LRVJORUx8R0ZQX05PV0FSTnxHRlBfTk9SRVRSWQorICAgICAgICAgICAgICAgIFhvcmctMTI2NCAgWzAwMl0gLi4uMSAxODE1NC43NTU1ODM6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNDE5MmEzIHB0cj1mZmZmODgwMDFmODIyNTIwIGJ5dGVzX3JlcT0yNCBieXRlc19hbGxvYz0zMiBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfWkVSTworICAgICAgICAgICAgICAgIFhvcmctMTI2NCAgWzAwMl0gLi4uMSAxODE1NC43NTU1ODk6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNDE5ZWRiIHB0cj1mZmZmODgwMDcyMWEyZjAwIGJ5dGVzX3JlcT02NCBieXRlc19hbGxvYz02NCBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfWkVSTworICAgICBtYXRjaGJveC10ZXJtaW4tMTM2MSAgWzAwMV0gLi4uMSAxODE1NS4zNTQ1OTQ6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjE0MDUwIHB0cj1mZmZmODgwMDZkYjM1NDAwIGJ5dGVzX3JlcT01NzYgYnl0ZXNfYWxsb2M9MTAyNCBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfUkVQRUFUCisgICAgICAgICAgICAgICAgWG9yZy0xMjY0ICBbMDAyXSAuLi4xIDE4MTU1LjM1NDcwMzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE0MWFiZTggcHRyPWZmZmY4ODAwNzM0ZjRjYzAgYnl0ZXNfcmVxPTE2OCBieXRlc19hbGxvYz0xOTIgZ2ZwX2ZsYWdzPUdGUF9LRVJORUx8R0ZQX05PV0FSTnxHRlBfTk9SRVRSWQorICAgICAgICAgICAgICAgIFhvcmctMTI2NCAgWzAwMl0gLi4uMSAxODE1NS4zNTQ3MDU6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNDE5MmEzIHB0cj1mZmZmODgwMDFmODIyNTIwIGJ5dGVzX3JlcT0yNCBieXRlc19hbGxvYz0zMiBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfWkVSTworICAgICAgICAgICAgICAgIFhvcmctMTI2NCAgWzAwMl0gLi4uMSAxODE1NS4zNTQ3MTE6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNDE5ZWRiIHB0cj1mZmZmODgwMDcyMWEyZjAwIGJ5dGVzX3JlcT02NCBieXRlc19hbGxvYz02NCBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfWkVSTworICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwMF0gLi5zMyAxODE1NS42NzMzMTk6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjE5YjM2IHB0cj1mZmZmODgwMDZkNTU1ODAwIGJ5dGVzX3JlcT01MTIgYnl0ZXNfYWxsb2M9NTEyIGdmcF9mbGFncz1HRlBfQVRPTUlDCisgICAgICAgICAgICBkcm9wYmVhci0xNDY1ICBbMDAwXSAuLi4xIDE4MTU1LjY3MzUyNToga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2NjUwZDQgcHRyPWZmZmY4ODAwNzI5YzMwMDAgYnl0ZXNfcmVxPTIwNDggYnl0ZXNfYWxsb2M9MjA0OCBnZnBfZmxhZ3M9R0ZQX0tFUk5FTAorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwMF0gLi5zMyAxODE1NS42NzQ4MjE6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjE5YjM2IHB0cj1mZmZmODgwMDZkNTU0ODAwIGJ5dGVzX3JlcT01MTIgYnl0ZXNfYWxsb2M9NTEyIGdmcF9mbGFncz1HRlBfQVRPTUlDCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDAwXSAuLnMzIDE4MTU1Ljc5MzAxNDoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2MTliMzYgcHRyPWZmZmY4ODAwNmQ1NTQ4MDAgYnl0ZXNfcmVxPTUxMiBieXRlc19hbGxvYz01MTIgZ2ZwX2ZsYWdzPUdGUF9BVE9NSUMKKyAgICAgICAgICAgIGRyb3BiZWFyLTE0NjUgIFswMDBdIC4uLjEgMTgxNTUuNzkzMjE5OiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTY2NTBkNCBwdHI9ZmZmZjg4MDA3MjljMzAwMCBieXRlc19yZXE9MjA0OCBieXRlc19hbGxvYz0yMDQ4IGdmcF9mbGFncz1HRlBfS0VSTkVMCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDAwXSAuLnMzIDE4MTU1Ljc5NDE0Nzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2MTliMzYgcHRyPWZmZmY4ODAwNmQ1NTU4MDAgYnl0ZXNfcmVxPTUxMiBieXRlc19hbGxvYz01MTIgZ2ZwX2ZsYWdzPUdGUF9BVE9NSUMKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDBdIC4uczMgMTgxNTUuOTM2NzA1OiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTYxOWIzNiBwdHI9ZmZmZjg4MDA2ZDU1NTgwMCBieXRlc19yZXE9NTEyIGJ5dGVzX2FsbG9jPTUxMiBnZnBfZmxhZ3M9R0ZQX0FUT01JQworICAgICAgICAgICAgZHJvcGJlYXItMTQ2NSAgWzAwMF0gLi4uMSAxODE1NS45MzY5MTA6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjY1MGQ0IHB0cj1mZmZmODgwMDcyOWMzMDAwIGJ5dGVzX3JlcT0yMDQ4IGJ5dGVzX2FsbG9jPTIwNDggZ2ZwX2ZsYWdzPUdGUF9LRVJORUwKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDBdIC4uczMgMTgxNTUuOTM3ODY5OiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTYxOWIzNiBwdHI9ZmZmZjg4MDA2ZDU1NDgwMCBieXRlc19yZXE9NTEyIGJ5dGVzX2FsbG9jPTUxMiBnZnBfZmxhZ3M9R0ZQX0FUT01JQworICAgICBtYXRjaGJveC10ZXJtaW4tMTM2MSAgWzAwMV0gLi4uMSAxODE1NS45NTM2Njc6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjE0MDUwIHB0cj1mZmZmODgwMDZkNWYyMDAwIGJ5dGVzX3JlcT01MTIgYnl0ZXNfYWxsb2M9NTEyIGdmcF9mbGFncz1HRlBfS0VSTkVMfEdGUF9SRVBFQVQKKyAgICAgICAgICAgICAgICBYb3JnLTEyNjQgIFswMDJdIC4uLjEgMTgxNTUuOTUzNzc1OiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTQxYWJlOCBwdHI9ZmZmZjg4MDA3MzRmNGNjMCBieXRlc19yZXE9MTY4IGJ5dGVzX2FsbG9jPTE5MiBnZnBfZmxhZ3M9R0ZQX0tFUk5FTHxHRlBfTk9XQVJOfEdGUF9OT1JFVFJZCisgICAgICAgICAgICAgICAgWG9yZy0xMjY0ICBbMDAyXSAuLi4xIDE4MTU1Ljk1Mzc3Nzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE0MTkyYTMgcHRyPWZmZmY4ODAwMWY4MjI1MjAgYnl0ZXNfcmVxPTI0IGJ5dGVzX2FsbG9jPTMyIGdmcF9mbGFncz1HRlBfS0VSTkVMfEdGUF9aRVJPCisgICAgICAgICAgICAgICAgWG9yZy0xMjY0ICBbMDAyXSAuLi4xIDE4MTU1Ljk1Mzc4Mzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE0MTllZGIgcHRyPWZmZmY4ODAwNzIxYTJmMDAgYnl0ZXNfcmVxPTY0IGJ5dGVzX2FsbG9jPTY0IGdmcF9mbGFncz1HRlBfS0VSTkVMfEdGUF9aRVJPCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDAwXSAuLnMzIDE4MTU2LjE3NjA1Mzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2MTliMzYgcHRyPWZmZmY4ODAwNmQ1NTQ4MDAgYnl0ZXNfcmVxPTUxMiBieXRlc19hbGxvYz01MTIgZ2ZwX2ZsYWdzPUdGUF9BVE9NSUMKKyAgICAgICAgICAgIGRyb3BiZWFyLTE0NjUgIFswMDBdIC4uLjEgMTgxNTYuMTc2MjU3OiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTY2NTBkNCBwdHI9ZmZmZjg4MDA3MjljMzAwMCBieXRlc19yZXE9MjA0OCBieXRlc19hbGxvYz0yMDQ4IGdmcF9mbGFncz1HRlBfS0VSTkVMCisgICAgICAgICAgICAgICZsdDtpZGxlJmd0Oy0wICAgICBbMDAwXSAuLnMzIDE4MTU2LjE3NzcxNzoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2MTliMzYgcHRyPWZmZmY4ODAwNmQ1NTU4MDAgYnl0ZXNfcmVxPTUxMiBieXRlc19hbGxvYz01MTIgZ2ZwX2ZsYWdzPUdGUF9BVE9NSUMKKyAgICAgICAgICAgICAgJmx0O2lkbGUmZ3Q7LTAgICAgIFswMDBdIC4uczMgMTgxNTYuMzk5MjI5OiBrbWFsbG9jOiBjYWxsX3NpdGU9ZmZmZmZmZmY4MTYxOWIzNiBwdHI9ZmZmZjg4MDA2ZDU1NTgwMCBieXRlc19yZXE9NTEyIGJ5dGVzX2FsbG9jPTUxMiBnZnBfZmxhZ3M9R0ZQX0FUT01JQworICAgICAgICAgICAgZHJvcGJlYXItMTQ2NSAgWzAwMF0gLi4uMSAxODE1Ni4zOTk0MzQ6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjY1MGQ0IHB0cj1mZmZmODgwMDcyOWMzMDAwIGJ5dGVzX2h0dHA6Ly9yb3N0ZWR0LmhvbWVsaW51eC5jb20va2VybmVsc2hhcmsvcmVxPTIwNDggYnl0ZXNfYWxsb2M9MjA0OCBnZnBfZmxhZ3M9R0ZQX0tFUk5FTAorICAgICAgICAgICAgICAmbHQ7aWRsZSZndDstMCAgICAgWzAwMF0gLi5zMyAxODE1Ni40MDA2NjA6IGttYWxsb2M6IGNhbGxfc2l0ZT1mZmZmZmZmZjgxNjE5YjM2IHB0cj1mZmZmODgwMDZkNTU0ODAwIGJ5dGVzX3JlcT01MTIgYnl0ZXNfYWxsb2M9NTEyIGdmcF9mbGFncz1HRlBfQVRPTUlDCisgICAgIG1hdGNoYm94LXRlcm1pbi0xMzYxICBbMDAxXSAuLi4xIDE4MTU2LjU1MjgwMDoga21hbGxvYzogY2FsbF9zaXRlPWZmZmZmZmZmODE2MTQwNTAgcHRyPWZmZmY4ODAwNmRiMzQ4MDAgYnl0ZXNfcmVxPTU3NiBieXRlc19hbGxvYz0xMDI0IGdmcF9mbGFncz1HRlBfS0VSTkVMfEdGUF9SRVBFQVQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRvIGFnYWluIGRpc2FibGUgdGhlIGttYWxsb2MgZXZlbnQsIHdlIG5lZWQgdG8gc2VuZCAwIHRvIHRoZQorICAgICAgICAgICAgZW5hYmxlIGZpbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAc3VnYXJiYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMva21lbS9rbWFsbG9jIyBlY2hvIDAgPiBlbmFibGUKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFlvdSBjYW4gZW5hYmxlIGFueSBudW1iZXIgb2YgZXZlbnRzIG9yIGNvbXBsZXRlIHN1YnN5c3RlbXMKKyAgICAgICAgICAgIChieSB1c2luZyB0aGUgJ2VuYWJsZScgZmlsZSBpbiB0aGUgc3Vic3lzdGVtIGRpcmVjdG9yeSkgYW5kCisgICAgICAgICAgICBnZXQgYW4gYXJiaXRyYXJpbHkgZmluZS1ncmFpbmVkIGlkZWEgb2Ygd2hhdCdzIGdvaW5nIG9uIGluIHRoZQorICAgICAgICAgICAgc3lzdGVtIGJ5IGVuYWJsaW5nIGFzIG1hbnkgb2YgdGhlIGFwcHJvcHJpYXRlIHRyYWNlcG9pbnRzCisgICAgICAgICAgICBhcyBhcHBsaWNhYmxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIG51bWJlciBvZiB0aGUgdG9vbHMgZGVzY3JpYmVkIGluIHRoaXMgSE9XVE8gZG8ganVzdCB0aGF0LAorICAgICAgICAgICAgaW5jbHVkaW5nIHRyYWNlLWNtZCBhbmQga2VybmVsc2hhcmsgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8ZW1waGFzaXM+VHlpbmcgaXQgVG9nZXRoZXI6PC9lbXBoYXNpcz4gVGhlc2UgdHJhY2Vwb2ludHMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uCisgICAgICAgICAgICBhcmUgdXNlZCBub3Qgb25seSBieSBmdHJhY2UsICBidXQgYnkgbWFueSBvZiB0aGUgb3RoZXIgdG9vbHMKKyAgICAgICAgICAgIGNvdmVyZWQgaW4gdGhpcyBkb2N1bWVudCBhbmQgdGhleSBmb3JtIGEgY2VudHJhbCBwb2ludCBvZgorICAgICAgICAgICAgaW50ZWdyYXRpb24gZm9yIHRoZSB2YXJpb3VzIHRyYWNlcnMgYXZhaWxhYmxlIGluIExpbnV4LgorICAgICAgICAgICAgVGhleSBmb3JtIGEgY2VudHJhbCBwYXJ0IG9mIHRoZSBpbnN0cnVtZW50YXRpb24gZm9yIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHRvb2xzOiBwZXJmLCBsdHRuZywgZnRyYWNlLCBibGt0cmFjZSBhbmQgU3lzdGVtVGFwCisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8ZW1waGFzaXM+VHlpbmcgaXQgVG9nZXRoZXI6PC9lbXBoYXNpcz4gRXZlbnR1YWxseSBhbGwgdGhlIHNwZWNpYWwtcHVycG9zZSB0cmFjZXJzCisgICAgICAgICAgICBjdXJyZW50bHkgYXZhaWxhYmxlIGluIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcgd2lsbCBiZQorICAgICAgICAgICAgcmVtb3ZlZCBhbmQgcmVwbGFjZWQgd2l0aCBlcXVpdmFsZW50IHRyYWNlcnMgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAndHJhY2UgZXZlbnRzJyBzdWJzeXN0ZW0uCisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0cmFjZS1jbWQta2VybmVsc2hhcmsnPgorICAgICAgICA8dGl0bGU+dHJhY2UtY21kL2tlcm5lbHNoYXJrPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIHRyYWNlLWNtZCBpcyBlc3NlbnRpYWxseSBhbiBleHRlbnNpdmUgY29tbWFuZC1saW5lICd3cmFwcGVyJworICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgaGlkZXMgdGhlIGRldGFpbHMgb2YgYWxsIHRoZSBpbmRpdmlkdWFsIGZpbGVzCisgICAgICAgICAgICBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nLCBhbGxvd2luZyB1c2VycyB0byBzcGVjaWZ5CisgICAgICAgICAgICBzcGVjaWZpYyBwYXJ0aWN1bGFyIGV2ZW50cyB3aXRoaW4gdGhlCisgICAgICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy8gc3ViZGlyZWN0b3J5IGFuZCB0byBjb2xsZWN0CisgICAgICAgICAgICB0cmFjZXMgYW5kIGF2b2lkIGhhdmluZyB0byBkZWFsIHdpdGggdGhvc2UgZGV0YWlscyBkaXJlY3RseS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgeWV0IGFub3RoZXIgbGF5ZXIgb24gdG9wIG9mIHRoYXQsIGtlcm5lbHNoYXJrIHByb3ZpZGVzIGEgR1VJCisgICAgICAgICAgICB0aGF0IGFsbG93cyB1c2VycyB0byBzdGFydCBhbmQgc3RvcCB0cmFjZXMgYW5kIHNwZWNpZnkgc2V0cworICAgICAgICAgICAgb2YgZXZlbnRzIHVzaW5nIGFuIGludHVpdGl2ZSBpbnRlcmZhY2UsIGFuZCB2aWV3IHRoZQorICAgICAgICAgICAgb3V0cHV0IGFzIGJvdGggdHJhY2UgZXZlbnRzIGFuZCBhcyBhIHBlci1DUFUgZ3JhcGhpY2FsCisgICAgICAgICAgICBkaXNwbGF5LiBJdCBkaXJlY3RseSB1c2VzICd0cmFjZS1jbWQnIGFzIHRoZSBwbHVtYmluZworICAgICAgICAgICAgdGhhdCBhY2NvbXBsaXNoZXMgYWxsIHRoYXQgdW5kZXJuZWF0aCB0aGUgY292ZXJzIChhbmQKKyAgICAgICAgICAgIGFjdHVhbGx5IGRpc3BsYXlzIHRoZSB0cmFjZS1jbWQgY29tbWFuZCBpdCB1c2VzLCBhcyB3ZSdsbCBzZWUpLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBzdGFydCBhIHRyYWNlIHVzaW5nIGtlcm5lbHNoYXJrLCBmaXJzdCBzdGFydCBrZXJuZWxzaGFyazoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBzdWdhcmJheTp+IyBrZXJuZWxzaGFyaworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlbiBicmluZyB1cCB0aGUgJ0NhcHR1cmUnIGRpYWxvZyBieSBjaG9vc2luZyBmcm9tIHRoZQorICAgICAgICAgICAga2VybmVsc2hhcmsgbWVudToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ2FwdHVyZSB8IFJlY29yZAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhhdCB3aWxsIGRpc3BsYXkgdGhlIGZvbGxvd2luZyBkaWFsb2csIHdoaWNoIGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgIGNob29zZSBvbmUgb3IgbW9yZSBldmVudHMgKG9yIGV2ZW4gb25lIG9yIG1vcmUgY29tcGxldGUKKyAgICAgICAgICAgIHN1YnN5c3RlbXMpIHRvIHRyYWNlOgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsc2hhcmstY2hvb3NlLWV2ZW50cy5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI2aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBOb3RlIHRoYXQgdGhlc2UgYXJlIGV4YWN0bHkgdGhlIHNhbWUgc2V0cyBvZiBldmVudHMgZGVzY3JpYmVkCisgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgdHJhY2UgZXZlbnRzIHN1YnN5c3RlbSBzZWN0aW9uLCBhbmQgaW4gZmFjdAorICAgICAgICAgICAgaXMgd2hlcmUgdHJhY2UtY21kIGdldHMgdGhlbSBmb3Iga2VybmVsc2hhcmsuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIHRoZSBhYm92ZSBzY3JlZW5zaG90LCB3ZSd2ZSBkZWNpZGVkIHRvIGV4cGxvcmUgdGhlCisgICAgICAgICAgICBncmFwaGljcyBzdWJzeXN0ZW0gYSBiaXQgYW5kIHNvIGhhdmUgY2hvc2VuIHRvIHRyYWNlIGFsbAorICAgICAgICAgICAgdGhlIHRyYWNlcG9pbnRzIGNvbnRhaW5lZCB3aXRoaW4gdGhlICdpOTE1JyBhbmQgJ2RybScKKyAgICAgICAgICAgIHN1YnN5c3RlbXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFmdGVyIGRvaW5nIHRoYXQsIHdlIGNhbiBzdGFydCBhbmQgc3RvcCB0aGUgdHJhY2UgdXNpbmcKKyAgICAgICAgICAgIHRoZSAnUnVuJyBhbmQgJ1N0b3AnIGJ1dHRvbiBvbiB0aGUgbG93ZXIgcmlnaHQgY29ybmVyIG9mCisgICAgICAgICAgICB0aGUgZGlhbG9nICh0aGUgc2FtZSBidXR0b24gd2lsbCB0dXJuIGludG8gdGhlICdTdG9wJworICAgICAgICAgICAgYnV0dG9uIGFmdGVyIHRoZSB0cmFjZSBoYXMgc3RhcnRlZCk6CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXJuZWxzaGFyay1vdXRwdXQtZGlzcGxheS5wbmciIHdpZHRoPSI2aW4iIGRlcHRoPSI2aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBOb3RpY2UgdGhhdCB0aGUgcmlnaHQtaGFuZCBwYW5lIHNob3dzIHRoZSBleGFjdCB0cmFjZS1jbWQKKyAgICAgICAgICAgIGNvbW1hbmQtbGluZSB0aGF0J3MgdXNlZCB0byBydW4gdGhlIHRyYWNlLCBhbG9uZyB3aXRoIHRoZQorICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdHJhY2UtY21kIHJ1bi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB0aGUgJ1N0b3AnIGJ1dHRvbiBpcyBwcmVzc2VkLCB0aGUgZ3JhcGhpY2FsIHZpZXcgbWFnaWNhbGx5CisgICAgICAgICAgICBmaWxscyB1cCB3aXRoIGEgY29sb3JmdWwgcGVyLWNwdSBkaXNwbGF5IG9mIHRoZSB0cmFjZSBkYXRhLAorICAgICAgICAgICAgYWxvbmcgd2l0aCB0aGUgZGV0YWlsZWQgZXZlbnQgbGlzdGluZyBiZWxvdyB0aGF0OgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsc2hhcmstaTkxNS1kaXNwbGF5LnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUncyBhbm90aGVyIGV4YW1wbGUsIHRoaXMgdGltZSBhIGRpc3BsYXkgcmVzdWx0aW5nCisgICAgICAgICAgICBmcm9tIHRyYWNpbmcgJ2FsbCBldmVudHMnOgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsc2hhcmstYWxsLnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSB0b29sIGlzIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LCBidXQgZm9yIG1vcmUgZGV0YWlsZWQKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIG5hdmlnYXRpbmcgdGhyb3VnaCB0aGUgZGF0YSwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3Jvc3RlZHQuaG9tZWxpbnV4LmNvbS9rZXJuZWxzaGFyay8nPmtlcm5lbHNoYXJrIHdlYnNpdGU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdmdHJhY2UtZG9jdW1lbnRhdGlvbic+CisgICAgICAgIDx0aXRsZT5Eb2N1bWVudGF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBkb2N1bWVudGF0aW9uIGZvciBmdHJhY2UgY2FuIGJlIGZvdW5kIGluIHRoZSBrZXJuZWwKKyAgICAgICAgICAgIERvY3VtZW50YXRpb24gZGlyZWN0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS50eHQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgdHJhY2UgZXZlbnQgc3Vic3lzdGVtIGNhbiBhbHNvCisgICAgICAgICAgICBiZSBmb3VuZCBpbiB0aGUga2VybmVsIERvY3VtZW50YXRpb24gZGlyZWN0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBEb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy50eHQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZXJlIGlzIGEgbmljZSBzZXJpZXMgb2YgYXJ0aWNsZXMgb24gdXNpbmcKKyAgICAgICAgICAgIGZ0cmFjZSBhbmQgdHJhY2UtY21kIGF0IExXTjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHA6Ly9sd24ubmV0L0FydGljbGVzLzM2NTgzNS8nPkRlYnVnZ2luZyB0aGUga2VybmVsIHVzaW5nIEZ0cmFjZSAtIHBhcnQgMTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSdodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8zNjY3OTYvJz5EZWJ1Z2dpbmcgdGhlIGtlcm5lbCB1c2luZyBGdHJhY2UgLSBwYXJ0IDI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0naHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMzcwNDIzLyc+U2VjcmV0cyBvZiB0aGUgRnRyYWNlIGZ1bmN0aW9uIHRyYWNlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSdodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNDEwMjAwLyc+dHJhY2UtY21kOiBBIGZyb250LWVuZCBmb3IgRnRyYWNlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlcmUncyBtb3JlIGRldGFpbGVkIGRvY3VtZW50YXRpb24ga2VybmVsc2hhcmsgdXNhZ2UgaGVyZToKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9yb3N0ZWR0LmhvbWVsaW51eC5jb20va2VybmVsc2hhcmsvJz5LZXJuZWxTaGFyazwvdWxpbms+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFuIGFtdXNpbmcgeWV0IHVzZWZ1bCBSRUFETUUgKGEgdHJhY2luZyBtaW5pLUhPV1RPKSBjYW4gYmUKKyAgICAgICAgICAgIGZvdW5kIGluIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvUkVBRE1FLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncHJvZmlsZS1tYW51YWwtc3lzdGVtdGFwJz4KKyAgICA8dGl0bGU+c3lzdGVtdGFwPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBTeXN0ZW1UYXAgaXMgYSBzeXN0ZW0td2lkZSBzY3JpcHQtYmFzZWQgdHJhY2luZyBhbmQgcHJvZmlsaW5nIHRvb2wuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFN5c3RlbVRhcCBzY3JpcHRzIGFyZSBDLWxpa2UgcHJvZ3JhbXMgdGhhdCBhcmUgZXhlY3V0ZWQgaW4gdGhlCisgICAgICAgIGtlcm5lbCB0byBnYXRoZXIvcHJpbnQvYWdncmVnYXRlIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIGNvbnRleHQKKyAgICAgICAgdGhleSBlbmQgdXAgYmVpbmcgaW52b2tlZCB1bmRlci4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgcHJvYmUgZnJvbSB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3NvdXJjZXdhcmUub3JnL3N5c3RlbXRhcC90dXRvcmlhbC8nPlN5c3RlbVRhcCB0dXRvcmlhbDwvdWxpbms+CisgICAgICAgIHNpbXBseSBwcmludHMgYSBsaW5lIGV2ZXJ5IHRpbWUgYW55IHByb2Nlc3Mgb24gdGhlIHN5c3RlbSBvcGVuKClzCisgICAgICAgIGEgZmlsZS4gRm9yIGVhY2ggbGluZSwgaXQgcHJpbnRzIHRoZSBleGVjdXRhYmxlIG5hbWUgb2YgdGhlCisgICAgICAgIHByb2dyYW0gdGhhdCBvcGVuZWQgdGhlIGZpbGUsIGFsb25nIHdpdGggaXRzIFBJRCwgYW5kIHRoZSBuYW1lCisgICAgICAgIG9mIHRoZSBmaWxlIGl0IG9wZW5lZCAob3IgdHJpZWQgdG8gb3BlbiksIHdoaWNoIGl0IGV4dHJhY3RzCisgICAgICAgIGZyb20gdGhlIG9wZW4gc3lzY2FsbCdzIGFyZ3N0ci4KKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwcm9iZSBzeXNjYWxsLm9wZW4KKyAgICAgeworICAgICAgICAgICAgIHByaW50ZiAoIiVzKCVkKSBvcGVuICglcylcbiIsIGV4ZWNuYW1lKCksIHBpZCgpLCBhcmdzdHIpCisgICAgIH0KKworICAgICBwcm9iZSB0aW1lci5tcyg0MDAwKSAjIGFmdGVyIDQgc2Vjb25kcworICAgICB7CisgICAgICAgICAgICAgZXhpdCAoKQorICAgICB9CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgTm9ybWFsbHksIHRvIGV4ZWN1dGUgdGhpcyBwcm9iZSwgeW91J2Qgc2ltcGx5IGluc3RhbGwKKyAgICAgICAgc3lzdGVtdGFwIG9uIHRoZSBzeXN0ZW0geW91IHdhbnQgdG8gcHJvYmUsIGFuZCBkaXJlY3RseSBydW4KKyAgICAgICAgdGhlIHByb2JlIG9uIHRoYXQgc3lzdGVtIGUuZy4gYXNzdW1pbmcgdGhlIG5hbWUgb2YgdGhlIGZpbGUKKyAgICAgICAgY29udGFpbmluZyB0aGUgYWJvdmUgdGV4dCBpcyB0cmFjZV9vcGVuLnN0cDoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIHN0YXAgdHJhY2Vfb3Blbi5zdHAKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBXaGF0IHN5c3RlbXRhcCBkb2VzIHVuZGVyIHRoZSBjb3ZlcnMgdG8gcnVuIHRoaXMgcHJvYmUgaXMgMSkKKyAgICAgICAgcGFyc2UgYW5kIGNvbnZlcnQgdGhlIHByb2JlIHRvIGFuIGVxdWl2YWxlbnQgJ0MnIGZvcm0sIDIpCisgICAgICAgIGNvbXBpbGUgdGhlICdDJyBmb3JtIGludG8gYSBrZXJuZWwgbW9kdWxlLCAzKSBpbnNlcnQgdGhlCisgICAgICAgIG1vZHVsZSBpbnRvIHRoZSBrZXJuZWwsIHdoaWNoIGFybXMgaXQsIGFuZCA0KSBjb2xsZWN0IHRoZSBkYXRhCisgICAgICAgIGdlbmVyYXRlZCBieSB0aGUgcHJvYmUgYW5kIGRpc3BsYXkgaXQgdG8gdGhlIHVzZXIuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICAgSW4gb3JkZXIgdG8gYWNjb21wbGlzaCBzdGVwcyAxIGFuZCAyLCB0aGUgJ3N0YXAnIHByb2dyYW0gbmVlZHMKKyAgICAgICAgYWNjZXNzIHRvIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHRoYXQgcHJvZHVjZWQgdGhlIGtlcm5lbAorICAgICAgICB0aGF0IHRoZSBwcm9iZWQgc3lzdGVtIGlzIHJ1bm5pbmcuIEluIHRoZSBjYXNlIG9mIGEgdHlwaWNhbAorICAgICAgICBlbWJlZGRlZCBzeXN0ZW0gKHRoZSAndGFyZ2V0JyksIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtCisgICAgICAgIHVuZm9ydHVuYXRlbHkgaXNuJ3QgdHlwaWNhbGx5IHBhcnQgb2YgdGhlIGltYWdlIHJ1bm5pbmcgb24KKyAgICAgICAgdGhlIHRhcmdldC4gSXQgaXMgbm9ybWFsbHkgYXZhaWxhYmxlIG9uIHRoZSAnaG9zdCcgc3lzdGVtCisgICAgICAgIHRoYXQgcHJvZHVjZWQgdGhlIHRhcmdldCBpbWFnZSBob3dldmVyOyBpbiBzdWNoIGNhc2VzLAorICAgICAgICBzdGVwcyAxIGFuZCAyIGFyZSBleGVjdXRlZCBvbiB0aGUgaG9zdCBzeXN0ZW0sIGFuZCBzdGVwcworICAgICAgICAzIGFuZCA0IGFyZSBleGVjdXRlZCBvbiB0aGUgdGFyZ2V0IHN5c3RlbSwgdXNpbmcgb25seSB0aGUKKyAgICAgICAgc3lzdGVtdGFwICdydW50aW1lJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHN5c3RlbXRhcCBzdXBwb3J0IGluIFlvY3RvIGFzc3VtZXMgdGhhdCBvbmx5IHN0ZXBzCisgICAgICAgIDMgYW5kIDQgYXJlIHJ1biBvbiB0aGUgdGFyZ2V0OyBpdCBpcyBwb3NzaWJsZSB0byBkbworICAgICAgICBldmVyeXRoaW5nIG9uIHRoZSB0YXJnZXQsIGJ1dCB0aGlzIHNlY3Rpb24gYXNzdW1lcyBvbmx5CisgICAgICAgIHRoZSB0eXBpY2FsIGVtYmVkZGVkIHVzZS1jYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTbyBiYXNpY2FsbHkgd2hhdCB5b3UgbmVlZCB0byBkbyBpbiBvcmRlciB0byBydW4gYSBzeXN0ZW10YXAKKyAgICAgICAgc2NyaXB0IG9uIHRoZSB0YXJnZXQgaXMgdG8gMSkgb24gdGhlIGhvc3Qgc3lzdGVtLCBjb21waWxlIHRoZQorICAgICAgICBwcm9iZSBpbnRvIGEga2VybmVsIG1vZHVsZSB0aGF0IG1ha2VzIHNlbnNlIHRvIHRoZSB0YXJnZXQsIDIpCisgICAgICAgIGNvcHkgdGhlIG1vZHVsZSBvbnRvIHRoZSB0YXJnZXQgc3lzdGVtIGFuZCAzKSBpbnNlcnQgdGhlCisgICAgICAgIG1vZHVsZSBpbnRvIHRoZSB0YXJnZXQga2VybmVsLCB3aGljaCBhcm1zIGl0LCBhbmQgNCkgY29sbGVjdAorICAgICAgICB0aGUgZGF0YSBnZW5lcmF0ZWQgYnkgdGhlIHByb2JlIGFuZCBkaXNwbGF5IGl0IHRvIHRoZSB1c2VyLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdzeXN0ZW10YXAtc2V0dXAnPgorICAgICAgICA8dGl0bGU+U2V0dXA8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhvc2UgYXJlIGEgbG90IG9mIHN0ZXBzIGFuZCBhIGxvdCBvZiBkZXRhaWxzLCBidXQKKyAgICAgICAgICAgIGZvcnR1bmF0ZWx5IFlvY3RvIGluY2x1ZGVzIGEgc2NyaXB0IGNhbGxlZCAnY3Jvc3N0YXAnCisgICAgICAgICAgICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIHRob3NlIGRldGFpbHMsIGFsbG93aW5nIHlvdSB0bworICAgICAgICAgICAgc2ltcGx5IGV4ZWN1dGUgYSBzeXN0ZW10YXAgc2NyaXB0IG9uIHRoZSByZW1vdGUgdGFyZ2V0LAorICAgICAgICAgICAgd2l0aCBhcmd1bWVudHMgaWYgbmVjZXNzYXJ5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzIGZyb20gYSByZW1vdGUgaG9zdCwgaG93ZXZlciwgeW91CisgICAgICAgICAgICBuZWVkIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBidWlsZCBmb3IgdGhlIGltYWdlIHlvdQorICAgICAgICAgICAgYm9vdGVkLiBUaGUgJ2Nyb3NzdGFwJyBzY3JpcHQgcHJvdmlkZXMgZGV0YWlscyBvbiBob3cKKyAgICAgICAgICAgIHRvIGRvIHRoaXMgaWYgeW91IHJ1biB0aGUgc2NyaXB0IG9uIHRoZSBob3N0IHdpdGhvdXQgaGF2aW5nCisgICAgICAgICAgICBkb25lIGEgYnVpbGQ6CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBTeXN0ZW1UYXAsIHdoaWNoIHVzZXMgJ2Nyb3NzdGFwJywgYXNzdW1lcyB5b3UgY2FuIGVzdGFibGlzaCBhbgorICAgICAgICAgICAgICAgIHNzaCBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgIFBsZWFzZSByZWZlciB0byB0aGUgY3Jvc3N0YXAgd2lraSBwYWdlIGZvciBkZXRhaWxzIG9uIHZlcmlmeWluZworICAgICAgICAgICAgICAgIHNzaCBjb25uZWN0aW9ucyBhdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVHJhY2luZ19hbmRfUHJvZmlsaW5nI3N5c3RlbXRhcCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgQWxzbywgdGhlIGFiaWxpdHkgdG8gc3NoIGludG8gdGhlIHRhcmdldCBzeXN0ZW0gaXMgbm90IGVuYWJsZWQKKyAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGluICotbWluaW1hbCBpbWFnZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY3Jvc3N0YXAgcm9vdEAxOTIuMTY4LjEuODggdHJhY2Vfb3Blbi5zdHAKKworICAgICBFcnJvcjogTm8gdGFyZ2V0IGtlcm5lbCBidWlsZCBmb3VuZC4KKyAgICAgRGlkIHlvdSBmb3JnZXQgdG8gY3JlYXRlIGEgbG9jYWwgYnVpbGQgb2YgeW91ciBpbWFnZT8KKworICAgICAnY3Jvc3N0YXAnIHJlcXVpcmVzIGEgbG9jYWwgc2RrIGJ1aWxkIG9mIHRoZSB0YXJnZXQgc3lzdGVtCisgICAgIChvciBhIGJ1aWxkIHRoYXQgaW5jbHVkZXMgJ3Rvb2xzLXByb2ZpbGUnKSBpbiBvcmRlciB0byBidWlsZAorICAgICBrZXJuZWwgbW9kdWxlcyB0aGF0IGNhbiBwcm9iZSB0aGUgdGFyZ2V0IHN5c3RlbS4KKworICAgICBQcmFjdGljYWxseSBzcGVha2luZywgdGhhdCBtZWFucyB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgLSBJZiB5b3UncmUgcnVubmluZyBhIHByZS1idWlsdCBpbWFnZSwgZG93bmxvYWQgdGhlIHJlbGVhc2UKKyAgICAgICAgYW5kL29yIEJTUCB0YXJiYWxscyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4KKyAgICAgIC0gSWYgeW91J3JlIHdvcmtpbmcgZnJvbSBnaXQgc291cmNlcywganVzdCBjbG9uZSB0aGUgbWV0YWRhdGEKKyAgICAgICAgYW5kIEJTUCBsYXllcnMgbmVlZGVkIHRvIGJ1aWxkIHRoZSBpbWFnZSB5b3UnbGwgYmUgYm9vdGluZy4KKyAgICAgIC0gTWFrZSBzdXJlIHlvdSdyZSBwcm9wZXJseSBzZXQgdXAgdG8gYnVpbGQgYSBuZXcgaW1hZ2UgKHNlZQorICAgICAgICB0aGUgQlNQIFJFQURNRSBhbmQvb3IgdGhlIHdpZGVseSBhdmFpbGFibGUgYmFzaWMgZG9jdW1lbnRhdGlvbgorICAgICAgICB0aGF0IGRpc2N1c3NlcyBob3cgdG8gYnVpbGQgaW1hZ2VzKS4KKyAgICAgIC0gQnVpbGQgYW4gLXNkayB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBlLmcuOgorICAgICAgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8tc2RrCisgICAgICBPUgorICAgICAgLSBCdWlsZCBhIG5vbi1zZGsgaW1hZ2UgYnV0IGluY2x1ZGUgdGhlIHByb2ZpbGluZyB0b29sczoKKyAgICAgICAgICBbIGVkaXQgbG9jYWwuY29uZiBhbmQgYWRkICd0b29scy1wcm9maWxlJyB0byB0aGUgZW5kIG9mCisgICAgICAgICAgICB0aGUgRVhUUkFfSU1BR0VfRkVBVFVSRVMgdmFyaWFibGUgXQorICAgICAgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8KKworICAgICBPbmNlIHlvdSd2ZSBidWlsZCB0aGUgaW1hZ2Ugb24gdGhlIGhvc3Qgc3lzdGVtLCB5b3UncmUgcmVhZHkgdG8KKyAgICAgYm9vdCBpdCAob3IgdGhlIGVxdWl2YWxlbnQgcHJlLWJ1aWx0IGltYWdlKSBhbmQgdXNlICdjcm9zc3RhcCcKKyAgICAgdG8gcHJvYmUgaXQgKHlvdSBuZWVkIHRvIHNvdXJjZSB0aGUgZW52aXJvbm1lbnQgYXMgdXN1YWwgZmlyc3QpOgorCisgICAgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAgICAgICQgY2Qgfi9teS9zeXN0ZW10YXAvc2NyaXB0cworICAgICAgICAkIGNyb3NzdGFwIHJvb3RAMTkyLjE2OC4xLnh4eCBteXNjcmlwdC5zdHAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFNvIGVzc2VudGlhbGx5IHdoYXQgeW91IG5lZWQgdG8gZG8gaXMgYnVpbGQgYW4gU0RLIGltYWdlIG9yCisgICAgICAgICAgICBpbWFnZSB3aXRoICd0b29scy1wcm9maWxlJyBhcyBkZXRhaWxlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcm9maWxlLW1hbnVhbC1nZW5lcmFsLXNldHVwJz5HZW5lcmFsIFNldHVwPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhpcyBtYW51YWwsIGFuZCBib290IHRoZSByZXN1bHRpbmcgdGFyZ2V0IGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIGJ1aWxkIGRpcmVjdG9yeSBjb250YWluaW5nIG11bHRpcGxlIG1hY2hpbmVzLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gaGF2ZSB0aGUgTUFDSElORSB5b3UncmUgY29ubmVjdGluZyB0byBzZWxlY3RlZAorICAgICAgICAgICAgaW4gbG9jYWwuY29uZiwgYW5kIHRoZSBrZXJuZWwgaW4gdGhhdCBtYWNoaW5lJ3MgYnVpbGQKKyAgICAgICAgICAgIGRpcmVjdG9yeSBtdXN0IG1hdGNoIHRoZSBrZXJuZWwgb24gdGhlIGJvb3RlZCBzeXN0ZW0gZXhhY3RseSwKKyAgICAgICAgICAgIG9yIHlvdSdsbCBnZXQgdGhlIGFib3ZlICdjcm9zc3RhcCcgbWVzc2FnZSB3aGVuIHlvdSB0cnkgdG8KKyAgICAgICAgICAgIGludm9rZSBhIHNjcmlwdC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdydW5uaW5nLWEtc2NyaXB0LW9uLWEtdGFyZ2V0Jz4KKyAgICAgICAgPHRpdGxlPlJ1bm5pbmcgYSBTY3JpcHQgb24gYSBUYXJnZXQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UndmUgZG9uZSB0aGF0LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIGEgc3lzdGVtdGFwCisgICAgICAgICAgICBzY3JpcHQgb24gdGhlIHRhcmdldDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAvcGF0aC90by95b2N0bworICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorCisgICAgICMjIyBTaGVsbCBlbnZpcm9ubWVudCBzZXQgdXAgZm9yIGJ1aWxkcy4gIyMjCisKKyAgICAgWW91IGNhbiBub3cgcnVuICdiaXRiYWtlICZsdDt0YXJnZXQmZ3Q7JworCisgICAgIENvbW1vbiB0YXJnZXRzIGFyZToKKyAgICAgICAgICAgICAgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgICBtZXRhLXRvb2xjaGFpbgorICAgICAgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CisKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JworCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBPbmNlIHlvdSd2ZSBkb25lIHRoYXQsIHlvdSBjYW4gY2QgdG8gd2hhdGV2ZXIgZGlyZWN0b3J5CisgICAgICAgICAgICBjb250YWlucyB5b3VyIHNjcmlwdHMgYW5kIHVzZSAnY3Jvc3N0YXAnIHRvIHJ1biB0aGUgc2NyaXB0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIC9wYXRoL3RvL215L3N5c3RlbWFwL3NjcmlwdAorICAgICAkIGNyb3NzdGFwIHJvb3RAMTkyLjE2OC43LjIgdHJhY2Vfb3Blbi5zdHAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIElmIHlvdSBnZXQgYW4gZXJyb3IgY29ubmVjdGluZyB0byB0aGUgdGFyZ2V0IGUuZy46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY3Jvc3N0YXAgcm9vdEAxOTIuMTY4LjcuMiB0cmFjZV9vcGVuLnN0cAorICAgICBlcnJvciBlc3RhYmxpc2hpbmcgc3NoIGNvbm5lY3Rpb24gb24gcmVtb3RlICdyb290QDE5Mi4xNjguNy4yJworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVHJ5IHNzaCdpbmcgdG8gdGhlIHRhcmdldCBhbmQgc2VlIHdoYXQgaGFwcGVuczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzc2ggcm9vdEAxOTIuMTY4LjcuMgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQSBsb3Qgb2YgdGhlIHRpbWUsIGNvbm5lY3Rpb24gcHJvYmxlbXMgYXJlIGR1ZSBzcGVjaWZ5aW5nIGEKKyAgICAgICAgICAgIHdyb25nIElQIGFkZHJlc3Mgb3IgaGF2aW5nIGEgJ2hvc3Qga2V5IHZlcmlmaWNhdGlvbiBlcnJvcicuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIGV2ZXJ5dGhpbmcgd29ya2VkIGFzIHBsYW5uZWQsIHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZworICAgICAgICAgICAgbGlrZSB0aGlzIChlbnRlciB0aGUgcGFzc3dvcmQgd2hlbiBwcm9tcHRlZCwgb3IgcHJlc3MgZW50ZXIKKyAgICAgICAgICAgIGlmIGl0J3Mgc2V0IHVwIHRvIHVzZSBubyBwYXNzd29yZCk6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY3Jvc3N0YXAgcm9vdEAxOTIuMTY4LjcuMiB0cmFjZV9vcGVuLnN0cAorICAgICByb290QDE5Mi4xNjguNy4yJ3MgcGFzc3dvcmQ6CisgICAgIG1hdGNoYm94LXRlcm1pbigxMDM2KSBvcGVuICgiL3RtcC92dGUzRlMyTFciLCBPX1JEV1J8T19DUkVBVHxPX0VYQ0x8T19MQVJHRUZJTEUsIDA2MDApCisgICAgIG1hdGNoYm94LXRlcm1pbigxMDM2KSBvcGVuICgiL3RtcC92dGVKTUM3TFciLCBPX1JEV1J8T19DUkVBVHxPX0VYQ0x8T19MQVJHRUZJTEUsIDA2MDApCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3lzdGVtdGFwLWRvY3VtZW50YXRpb24nPgorICAgICAgICA8dGl0bGU+RG9jdW1lbnRhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgU3lzdGVtVGFwIGxhbmd1YWdlIHJlZmVyZW5jZSBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9zeXN0ZW10YXAvbGFuZ3JlZi8nPlN5c3RlbVRhcCBMYW5ndWFnZSBSZWZlcmVuY2U8L3VsaW5rPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMaW5rcyB0byBvdGhlciBTeXN0ZW1UYXAgZG9jdW1lbnRzLCB0dXRvcmlhbHMsIGFuZCBleGFtcGxlcyBjYW4gYmUKKyAgICAgICAgICAgIGZvdW5kIGhlcmU6CisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc291cmNld2FyZS5vcmcvc3lzdGVtdGFwL2RvY3VtZW50YXRpb24uaHRtbCc+U3lzdGVtVGFwIGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdwcm9maWxlLW1hbnVhbC1zeXNwcm9mJz4KKyAgICA8dGl0bGU+U3lzcHJvZjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU3lzcHJvZiBpcyBhIHZlcnkgZWFzeSB0byB1c2Ugc3lzdGVtLXdpZGUgcHJvZmlsZXIgdGhhdCBjb25zaXN0cworICAgICAgICBvZiBhIHNpbmdsZSB3aW5kb3cgd2l0aCB0aHJlZSBwYW5lcyBhbmQgYSBmZXcgYnV0dG9ucyB3aGljaCBhbGxvdworICAgICAgICB5b3UgdG8gc3RhcnQsIHN0b3AsIGFuZCB2aWV3IHRoZSBwcm9maWxlIGZyb20gb25lIHBsYWNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdzeXNwcm9mLXNldHVwJz4KKyAgICAgICAgPHRpdGxlPlNldHVwPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciB0aGlzIHNlY3Rpb24sIHdlJ2xsIGFzc3VtZSB5b3UndmUgYWxyZWFkeSBwZXJmb3JtZWQgdGhlCisgICAgICAgICAgICBiYXNpYyBzZXR1cCBvdXRsaW5lZCBpbiB0aGUgR2VuZXJhbCBTZXR1cCBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTeXNwcm9mIGlzIGEgR1VJLWJhc2VkIGFwcGxpY2F0aW9uIHRoYXQgcnVucyBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICBzeXN0ZW0uIEZvciB0aGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IHdlIGFzc3VtZSB5b3UndmUKKyAgICAgICAgICAgIHNzaCdlZCB0byB0aGUgaG9zdCBhbmQgd2lsbCBiZSBydW5uaW5nIFN5c3Byb2Ygb24gdGhlCisgICAgICAgICAgICB0YXJnZXQgKHlvdSBjYW4gdXNlIHRoZSAnLVgnIG9wdGlvbiB0byBzc2ggYW5kIGhhdmUgdGhlCisgICAgICAgICAgICBTeXNwcm9mIEdVSSBydW4gb24gdGhlIHRhcmdldCBidXQgZGlzcGxheSByZW1vdGVseSBvbiB0aGUKKyAgICAgICAgICAgIGhvc3QgaWYgeW91IHdhbnQpLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N5c3Byb2YtYmFzaWMtdXNhZ2UnPgorICAgICAgICA8dGl0bGU+QmFzaWMgVXNhZ2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gc3RhcnQgcHJvZmlsaW5nIHRoZSBzeXN0ZW0sIHlvdSBzaW1wbHkgcHJlc3MgdGhlICdTdGFydCcKKyAgICAgICAgICAgIGJ1dHRvbi4gVG8gc3RvcCBwcm9maWxpbmcgYW5kIHRvIHN0YXJ0IHZpZXdpbmcgdGhlIHByb2ZpbGUgZGF0YQorICAgICAgICAgICAgaW4gb25lIGVhc3kgc3RlcCwgcHJlc3MgdGhlICdQcm9maWxlJyBidXR0b24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uY2UgeW91J3ZlIHByZXNzZWQgdGhlIHByb2ZpbGUgYnV0dG9uLCB0aGUgdGhyZWUgcGFuZXMgd2lsbAorICAgICAgICAgICAgZmlsbCB1cCB3aXRoIHByb2ZpbGluZyBkYXRhOgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc3lzcHJvZi1jb3B5LXRvLXVzZXIucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGxlZnQgcGFuZSBzaG93cyBhIGxpc3Qgb2YgZnVuY3Rpb25zIGFuZCBwcm9jZXNzZXMuCisgICAgICAgICAgICBTZWxlY3Rpbmcgb25lIG9mIHRob3NlIGV4cGFuZHMgdGhhdCBmdW5jdGlvbiBpbiB0aGUgcmlnaHQKKyAgICAgICAgICAgIHBhbmUsIHNob3dpbmcgYWxsIGl0cyBjYWxsZWVzLiBOb3RlIHRoYXQgdGhpcyBjYWxsZXItb3JpZW50ZWQKKyAgICAgICAgICAgIGRpc3BsYXkgaXMgZXNzZW50aWFsbHkgdGhlIGludmVyc2Ugb2YgcGVyZidzIGRlZmF1bHQKKyAgICAgICAgICAgIGNhbGxlZS1vcmllbnRlZCBjYWxsY2hhaW4gZGlzcGxheS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gdGhlIHNjcmVlbnNob3QgYWJvdmUsIHdlJ3JlIGZvY3VzaW5nIG9uIF9fY29weV90b191c2VyX2xsKCkKKyAgICAgICAgICAgIGFuZCBsb29raW5nIHVwIHRoZSBjYWxsY2hhaW4gd2UgY2FuIHNlZSB0aGF0IG9uZSBvZiB0aGUgY2FsbGVycworICAgICAgICAgICAgb2YgX19jb3B5X3RvX3VzZXJfbGwgaXMgc3lzX3JlYWQoKSBhbmQgdGhlIGNvbXBsZXRlIGNhbGxwYXRoCisgICAgICAgICAgICBiZXR3ZWVuIHRoZW0uIE5vdGljZSB0aGF0IHRoaXMgaXMgZXNzZW50aWFsbHkgYSBwb3J0aW9uIG9mIHRoZQorICAgICAgICAgICAgc2FtZSBpbmZvcm1hdGlvbiB3ZSBzYXcgaW4gdGhlIHBlcmYgZGlzcGxheSBzaG93biBpbiB0aGUgcGVyZgorICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGlzIHBhZ2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zeXNwcm9mLWNvcHktZnJvbS11c2VyLnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNpbWlsYXJseSwgdGhlIGFib3ZlIGlzIGEgc25hcHNob3Qgb2YgdGhlIFN5c3Byb2YgZGlzcGxheSBvZiBhCisgICAgICAgICAgICBjb3B5LWZyb20tdXNlciBjYWxsY2hhaW4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZpbmFsbHksIGxvb2tpbmcgYXQgdGhlIHRoaXJkIFN5c3Byb2YgcGFuZSBpbiB0aGUgbG93ZXIgbGVmdCwKKyAgICAgICAgICAgIHdlIGNhbiBzZWUgYSBsaXN0IG9mIGFsbCB0aGUgY2FsbGVycyBvZiBhIHBhcnRpY3VsYXIgZnVuY3Rpb24KKyAgICAgICAgICAgIHNlbGVjdGVkIGluIHRoZSB0b3AgbGVmdCBwYW5lLiBJbiB0aGlzIGNhc2UsIHRoZSBsb3dlciBwYW5lIGlzCisgICAgICAgICAgICBzaG93aW5nIGFsbCB0aGUgY2FsbGVycyBvZiBfX21hcmtfaW5vZGVfZGlydHk6CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zeXNwcm9mLWNhbGxlcnMucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRG91YmxlLWNsaWNraW5nIG9uIG9uZSBvZiB0aG9zZSBmdW5jdGlvbnMgd2lsbCBpbiB0dXJuIGNoYW5nZSB0aGUKKyAgICAgICAgICAgIGZvY3VzIHRvIHRoZSBzZWxlY3RlZCBmdW5jdGlvbiwgYW5kIHNvIG9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxlbXBoYXNpcz5UeWluZyBpdCBUb2dldGhlcjo8L2VtcGhhc2lzPiBJZiB5b3UgbGlrZSBzeXNwcm9mJ3MgJ2NhbGxlci1vcmllbnRlZCcKKyAgICAgICAgICAgIGRpc3BsYXksIHlvdSBtYXkgYmUgYWJsZSB0byBhcHByb3hpbWF0ZSBpdCBpbiBvdGhlciB0b29scyBhcworICAgICAgICAgICAgd2VsbC4gIEZvciBleGFtcGxlLCAncGVyZiByZXBvcnQnIGhhcyB0aGUgLWcgKC0tY2FsbC1ncmFwaCkKKyAgICAgICAgICAgIG9wdGlvbiB0aGF0IHlvdSBjYW4gZXhwZXJpbWVudCB3aXRoOyBvbmUgb2YgdGhlIG9wdGlvbnMgaXMKKyAgICAgICAgICAgICdjYWxsZXInIGZvciBhbiBpbnZlcnRlZCBjYWxsZXItYmFzZWQgY2FsbGdyYXBoIGRpc3BsYXkuCisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzeXNwcm9mLWRvY3VtZW50YXRpb24nPgorICAgICAgICA8dGl0bGU+RG9jdW1lbnRhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYW55IGRvY3VtZW50YXRpb24gZm9yIFN5c3Byb2YsIGJ1dAorICAgICAgICAgICAgbWF5YmUgdGhhdCdzIGJlY2F1c2UgaXQncyBwcmV0dHkgc2VsZi1leHBsYW5hdG9yeS4KKyAgICAgICAgICAgIFRoZSBTeXNwcm9mIHdlYnNpdGUsIGhvd2V2ZXIsIGlzIGhlcmU6CisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc3lzcHJvZi5jb20vJz5TeXNwcm9mLCBTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXg8L3VsaW5rPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbHR0bmctbGludXgtdHJhY2UtdG9vbGtpdC1uZXh0LWdlbmVyYXRpb24nPgorICAgIDx0aXRsZT5MVFRuZyAoTGludXggVHJhY2UgVG9vbGtpdCwgbmV4dCBnZW5lcmF0aW9uKTwvdGl0bGU+CisKKyAgICA8c2VjdGlvbiBpZD0nbHR0bmctc2V0dXAnPgorICAgICAgICA8dGl0bGU+U2V0dXA8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIHRoaXMgc2VjdGlvbiwgd2UnbGwgYXNzdW1lIHlvdSd2ZSBhbHJlYWR5IHBlcmZvcm1lZCB0aGUKKyAgICAgICAgICAgIGJhc2ljIHNldHVwIG91dGxpbmVkIGluIHRoZSBHZW5lcmFsIFNldHVwIHNlY3Rpb24uCisgICAgICAgICAgICBMVFRuZyBpcyBydW4gb24gdGhlIHRhcmdldCBzeXN0ZW0gYnkgc3NoJ2luZyB0byBpdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjb2xsZWN0aW5nLWFuZC12aWV3aW5nLXRyYWNlcyc+CisgICAgICAgIDx0aXRsZT5Db2xsZWN0aW5nIGFuZCBWaWV3aW5nIFRyYWNlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIHlvdSd2ZSBhcHBsaWVkIHRoZSBhYm92ZSBjb21taXRzIGFuZCBidWlsdCBhbmQgYm9vdGVkIHlvdXIKKyAgICAgICAgICAgIGltYWdlICh5b3UgbmVlZCB0byBidWlsZCB0aGUgY29yZS1pbWFnZS1zYXRvLXNkayBpbWFnZSBvciB1c2Ugb25lIG9mIHRoZQorICAgICAgICAgICAgb3RoZXIgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIEdlbmVyYWwgU2V0dXAgc2VjdGlvbiksIHlvdSdyZQorICAgICAgICAgICAgcmVhZHkgdG8gc3RhcnQgdHJhY2luZy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb2xsZWN0aW5nLWFuZC12aWV3aW5nLWEtdHJhY2Utb24tdGhlLXRhcmdldC1pbnNpZGUtYS1zaGVsbCc+CisgICAgICAgICAgICA8dGl0bGU+Q29sbGVjdGluZyBhbmQgdmlld2luZyBhIHRyYWNlIG9uIHRoZSB0YXJnZXQgKGluc2lkZSBhIHNoZWxsKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZpcnN0LCBmcm9tIHRoZSBob3N0LCBzc2ggdG8gdGhlIHRhcmdldDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3NoIC1sIHJvb3QgMTkyLjE2OC4xLjQ3CisgICAgIFRoZSBhdXRoZW50aWNpdHkgb2YgaG9zdCAnMTkyLjE2OC4xLjQ3ICgxOTIuMTY4LjEuNDcpJyBjYW4ndCBiZSBlc3RhYmxpc2hlZC4KKyAgICAgUlNBIGtleSBmaW5nZXJwcmludCBpcyAyMzpiZDpjODpiMTphODo3MTo1MjowMDplZTowMDo0Zjo2NDo5ZToxMDpiOTo3ZS4KKyAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHllcy9ubyk/IHllcworICAgICBXYXJuaW5nOiBQZXJtYW5lbnRseSBhZGRlZCAnMTkyLjE2OC4xLjQ3JyAoUlNBKSB0byB0aGUgbGlzdCBvZiBrbm93biBob3N0cy4KKyAgICAgcm9vdEAxOTIuMTY4LjEuNDcncyBwYXNzd29yZDoKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgT25jZSBvbiB0aGUgdGFyZ2V0LCB1c2UgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGEgdHJhY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIGx0dG5nIGNyZWF0ZQorICAgICBTcGF3bmluZyBhIHNlc3Npb24gZGFlbW9uCisgICAgIFNlc3Npb24gYXV0by0yMDEyMTAxNS0yMzIxMjAgY3JlYXRlZC4KKyAgICAgVHJhY2VzIHdpbGwgYmUgd3JpdHRlbiBpbiAvaG9tZS9yb290L2x0dG5nLXRyYWNlcy9hdXRvLTIwMTIxMDE1LTIzMjEyMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBFbmFibGUgdGhlIGV2ZW50cyB5b3Ugd2FudCB0byB0cmFjZSAoaW4gdGhpcyBjYXNlIGFsbAorICAgICAgICAgICAgICAgIGtlcm5lbCBldmVudHMpOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBsdHRuZyBlbmFibGUtZXZlbnQgLS1rZXJuZWwgLS1hbGwKKyAgICAgQWxsIGtlcm5lbCBldmVudHMgYXJlIGVuYWJsZWQgaW4gY2hhbm5lbCBjaGFubmVsMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBTdGFydCB0aGUgdHJhY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIGx0dG5nIHN0YXJ0CisgICAgIFRyYWNpbmcgc3RhcnRlZCBmb3Igc2Vzc2lvbiBhdXRvLTIwMTIxMDE1LTIzMjEyMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBbmQgdGhlbiBzdG9wIHRoZSB0cmFjZSBhZnRlciBhd2hpbGUgb3IgYWZ0ZXIgcnVubmluZworICAgICAgICAgICAgICAgIGEgcGFydGljdWxhciB3b3JrbG9hZCB0aGF0IHlvdSB3YW50IHRvIHRyYWNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBsdHRuZyBzdG9wCisgICAgIFRyYWNpbmcgc3RvcHBlZCBmb3Igc2Vzc2lvbiBhdXRvLTIwMTIxMDE1LTIzMjEyMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG5vdyB2aWV3IHRoZSB0cmFjZSBpbiB0ZXh0IGZvcm0gb24gdGhlIHRhcmdldDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgbHR0bmcgdmlldworICAgICBbMjM6MjE6NTYuOTg5MjcwMzk5XSAoKz8uPz8/Pz8/Pz8/KSBzeXNfZ2V0ZXVpZDogeyAxIH0sIHsgfQorICAgICBbMjM6MjE6NTYuOTg5Mjc4MDgxXSAoKzAuMDAwMDA3NjgyKSBleGl0X3N5c2NhbGw6IHsgMSB9LCB7IHJldCA9IDAgfQorICAgICBbMjM6MjE6NTYuOTg5Mjg2MDQzXSAoKzAuMDAwMDA3OTYyKSBzeXNfcGlwZTogeyAxIH0sIHsgZmlsZGVzID0gMHhCNzdCOUU4QyB9CisgICAgIFsyMzoyMTo1Ni45ODkzMjE4MDJdICgrMC4wMDAwMzU3NTkpIGV4aXRfc3lzY2FsbDogeyAxIH0sIHsgcmV0ID0gMCB9CisgICAgIFsyMzoyMTo1Ni45ODkzMjkzNDVdICgrMC4wMDAwMDc1NDMpIHN5c19tbWFwX3Bnb2ZmOiB7IDEgfSwgeyBhZGRyID0gMHgwLCBsZW4gPSAxMDQ4NTc2MCwgcHJvdCA9IDMsIGZsYWdzID0gMTMxMzYyLCBmZCA9IDQyOTQ5NjcyOTUsIHBnb2ZmID0gMCB9CisgICAgIFsyMzoyMTo1Ni45ODkzNTE2OTRdICgrMC4wMDAwMjIzNDkpIGV4aXRfc3lzY2FsbDogeyAxIH0sIHsgcmV0ID0gLTEyNDc4MDU0NDAgfQorICAgICBbMjM6MjE6NTYuOTg5NDMyOTg5XSAoKzAuMDAwMDgxMjk1KSBzeXNfY2xvbmU6IHsgMSB9LCB7IGNsb25lX2ZsYWdzID0gMHg0MTEsIG5ld3NwID0gMHhCNUVGRkZFNCwgcGFyZW50X3RpZCA9IDB4RkZGRkZGRkYsIGNoaWxkX3RpZCA9IDB4MCB9CisgICAgIFsyMzoyMTo1Ni45ODk0NzcxMjldICgrMC4wMDAwNDQxNDApIHNjaGVkX3N0YXRfcnVudGltZTogeyAxIH0sIHsgY29tbSA9ICJsdHRuZy1jb25zdW1lcmQiLCB0aWQgPSAxMTkzLCBydW50aW1lID0gNjgxNjYwLCB2cnVudGltZSA9IDQzMzY3OTgzMzg4IH0KKyAgICAgWzIzOjIxOjU2Ljk4OTQ4NjY5N10gKCswLjAwMDAwOTU2OCkgc2NoZWRfbWlncmF0ZV90YXNrOiB7IDEgfSwgeyBjb21tID0gImx0dG5nLWNvbnN1bWVyZCIsIHRpZCA9IDExOTMsIHByaW8gPSAyMCwgb3JpZ19jcHUgPSAxLCBkZXN0X2NwdSA9IDEgfQorICAgICBbMjM6MjE6NTYuOTg5NTA4NDE4XSAoKzAuMDAwMDIxNzIxKSBocnRpbWVyX2luaXQ6IHsgMSB9LCB7IGhydGltZXIgPSAzOTcwODMyMDc2LCBjbG9ja2lkID0gMSwgbW9kZSA9IDEgfQorICAgICBbMjM6MjE6NTYuOTg5NzcwNDYyXSAoKzAuMDAwMjYyMDQ0KSBocnRpbWVyX2NhbmNlbDogeyAxIH0sIHsgaHJ0aW1lciA9IDM5OTM4NjU0NDAgfQorICAgICBbMjM6MjE6NTYuOTg5NzcxNTgwXSAoKzAuMDAwMDAxMTE4KSBocnRpbWVyX2NhbmNlbDogeyAwIH0sIHsgaHJ0aW1lciA9IDM5OTM4MTIxOTIgfQorICAgICBbMjM6MjE6NTYuOTg5Nzc2OTU3XSAoKzAuMDAwMDA1Mzc3KSBocnRpbWVyX2V4cGlyZV9lbnRyeTogeyAxIH0sIHsgaHJ0aW1lciA9IDM5OTM4NjU0NDAsIG5vdyA9IDc5ODE1OTgwMDA3MDU3LCBmdW5jdGlvbiA9IDMyMzg0NjUyMzIgfQorICAgICBbMjM6MjE6NTYuOTg5Nzc4MTQ1XSAoKzAuMDAwMDAxMTg4KSBocnRpbWVyX2V4cGlyZV9lbnRyeTogeyAwIH0sIHsgaHJ0aW1lciA9IDM5OTM4MTIxOTIsIG5vdyA9IDc5ODE1OTgwMDA4MTc0LCBmdW5jdGlvbiA9IDMyMzg0NjUyMzIgfQorICAgICBbMjM6MjE6NTYuOTg5NzkxNjk1XSAoKzAuMDAwMDEzNTUwKSBzb2Z0aXJxX3JhaXNlOiB7IDEgfSwgeyB2ZWMgPSAxIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTc5NTM5Nl0gKCswLjAwMDAwMzcwMSkgc29mdGlycV9yYWlzZTogeyAwIH0sIHsgdmVjID0gMSB9CisgICAgIFsyMzoyMTo1Ni45ODk4MDA2MzVdICgrMC4wMDAwMDUyMzkpIHNvZnRpcnFfcmFpc2U6IHsgMCB9LCB7IHZlYyA9IDkgfQorICAgICBbMjM6MjE6NTYuOTg5ODA3MTMwXSAoKzAuMDAwMDA2NDk1KSBzY2hlZF9zdGF0X3J1bnRpbWU6IHsgMSB9LCB7IGNvbW0gPSAibHR0bmctY29uc3VtZXJkIiwgdGlkID0gMTE5MywgcnVudGltZSA9IDMzMDcxMCwgdnJ1bnRpbWUgPSA0MzM2ODMxNDA5OCB9CisgICAgIFsyMzoyMTo1Ni45ODk4MDk5OTNdICgrMC4wMDAwMDI4NjMpIHNjaGVkX3N0YXRfcnVudGltZTogeyAwIH0sIHsgY29tbSA9ICJsdHRuZy1zZXNzaW9uZCIsIHRpZCA9IDExODEsIHJ1bnRpbWUgPSAxMDE1MzEzLCB2cnVudGltZSA9IDM2OTc2NzMzMjQwIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTgxODUxNF0gKCswLjAwMDAwODUyMSkgaHJ0aW1lcl9leHBpcmVfZXhpdDogeyAwIH0sIHsgaHJ0aW1lciA9IDM5OTM4MTIxOTIgfQorICAgICBbMjM6MjE6NTYuOTg5ODE5NjMxXSAoKzAuMDAwMDAxMTE3KSBocnRpbWVyX2V4cGlyZV9leGl0OiB7IDEgfSwgeyBocnRpbWVyID0gMzk5Mzg2NTQ0MCB9CisgICAgIFsyMzoyMTo1Ni45ODk4MjE4NjZdICgrMC4wMDAwMDIyMzUpIGhydGltZXJfc3RhcnQ6IHsgMCB9LCB7IGhydGltZXIgPSAzOTkzODEyMTkyLCBmdW5jdGlvbiA9IDMyMzg0NjUyMzIsIGV4cGlyZXMgPSA3OTgxNTk4MTAwMDAwMCwgc29mdGV4cGlyZXMgPSA3OTgxNTk4MTAwMDAwMCB9CisgICAgIFsyMzoyMTo1Ni45ODk4MjI5ODRdICgrMC4wMDAwMDExMTgpIGhydGltZXJfc3RhcnQ6IHsgMSB9LCB7IGhydGltZXIgPSAzOTkzODY1NDQwLCBmdW5jdGlvbiA9IDMyMzg0NjUyMzIsIGV4cGlyZXMgPSA3OTgxNTk4MTAwMDAwMCwgc29mdGV4cGlyZXMgPSA3OTgxNTk4MTAwMDAwMCB9CisgICAgIFsyMzoyMTo1Ni45ODk4MzI3NjJdICgrMC4wMDAwMDk3NzgpIHNvZnRpcnFfZW50cnk6IHsgMSB9LCB7IHZlYyA9IDEgfQorICAgICBbMjM6MjE6NTYuOTg5ODMzODc5XSAoKzAuMDAwMDAxMTE3KSBzb2Z0aXJxX2VudHJ5OiB7IDAgfSwgeyB2ZWMgPSAxIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTgzODA2OV0gKCswLjAwMDAwNDE5MCkgdGltZXJfY2FuY2VsOiB7IDEgfSwgeyB0aW1lciA9IDM5OTM4NzE5NTYgfQorICAgICBbMjM6MjE6NTYuOTg5ODM5MTg3XSAoKzAuMDAwMDAxMTE4KSB0aW1lcl9jYW5jZWw6IHsgMCB9LCB7IHRpbWVyID0gMzk5MzgxODcwOCB9CisgICAgIFsyMzoyMTo1Ni45ODk4NDE0OTJdICgrMC4wMDAwMDIzMDUpIHRpbWVyX2V4cGlyZV9lbnRyeTogeyAxIH0sIHsgdGltZXIgPSAzOTkzODcxOTU2LCBub3cgPSA3OTUxNTk4MCwgZnVuY3Rpb24gPSAzMjM4Mjc3NTUyIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTg0MjgxOV0gKCswLjAwMDAwMTMyNykgdGltZXJfZXhwaXJlX2VudHJ5OiB7IDAgfSwgeyB0aW1lciA9IDM5OTM4MTg3MDgsIG5vdyA9IDc5NTE1OTgwLCBmdW5jdGlvbiA9IDMyMzgyNzc1NTIgfQorICAgICBbMjM6MjE6NTYuOTg5ODU0ODMxXSAoKzAuMDAwMDEyMDEyKSBzY2hlZF9zdGF0X3J1bnRpbWU6IHsgMSB9LCB7IGNvbW0gPSAibHR0bmctY29uc3VtZXJkIiwgdGlkID0gMTE5MywgcnVudGltZSA9IDQ5MjM3LCB2cnVudGltZSA9IDQzMzY4MzYzMzM1IH0KKyAgICAgWzIzOjIxOjU2Ljk4OTg1NTk0OV0gKCswLjAwMDAwMTExOCkgc2NoZWRfc3RhdF9ydW50aW1lOiB7IDAgfSwgeyBjb21tID0gImx0dG5nLXNlc3Npb25kIiwgdGlkID0gMTE4MSwgcnVudGltZSA9IDQ1MTIxLCB2cnVudGltZSA9IDM2OTc2Nzc4MzYxIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTg2MTI1N10gKCswLjAwMDAwNTMwOCkgc2NoZWRfc3RhdF9zbGVlcDogeyAxIH0sIHsgY29tbSA9ICJrd29ya2VyLzE6MSIsIHRpZCA9IDIxLCBkZWxheSA9IDk0NTEzMTggfQorICAgICBbMjM6MjE6NTYuOTg5ODYyMzc0XSAoKzAuMDAwMDAxMTE3KSBzY2hlZF9zdGF0X3NsZWVwOiB7IDAgfSwgeyBjb21tID0gImt3b3JrZXIvMDowIiwgdGlkID0gNCwgZGVsYXkgPSA5OTU4ODIwIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTg2ODI0MV0gKCswLjAwMDAwNTg2Nykgc2NoZWRfd2FrZXVwOiB7IDAgfSwgeyBjb21tID0gImt3b3JrZXIvMDowIiwgdGlkID0gNCwgcHJpbyA9IDEyMCwgc3VjY2VzcyA9IDEsIHRhcmdldF9jcHUgPSAwIH0KKyAgICAgWzIzOjIxOjU2Ljk4OTg2OTM1OF0gKCswLjAwMDAwMTExNykgc2NoZWRfd2FrZXVwOiB7IDEgfSwgeyBjb21tID0gImt3b3JrZXIvMToxIiwgdGlkID0gMjEsIHByaW8gPSAxMjAsIHN1Y2Nlc3MgPSAxLCB0YXJnZXRfY3B1ID0gMSB9CisgICAgIFsyMzoyMTo1Ni45ODk4Nzc0NjBdICgrMC4wMDAwMDgxMDIpIHRpbWVyX2V4cGlyZV9leGl0OiB7IDEgfSwgeyB0aW1lciA9IDM5OTM4NzE5NTYgfQorICAgICBbMjM6MjE6NTYuOTg5ODc4NTc3XSAoKzAuMDAwMDAxMTE3KSB0aW1lcl9leHBpcmVfZXhpdDogeyAwIH0sIHsgdGltZXIgPSAzOTkzODE4NzA4IH0KKyAgICAgLgorICAgICAuCisgICAgIC4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBub3cgc2FmZWx5IGRlc3Ryb3kgdGhlIHRyYWNlIHNlc3Npb24gKG5vdGUgdGhhdAorICAgICAgICAgICAgICAgIHRoaXMgZG9lc24ndCBkZWxldGUgdGhlIHRyYWNlIC0gaXQncyBzdGlsbCB0aGVyZQorICAgICAgICAgICAgICAgIGluIH4vbHR0bmctdHJhY2VzKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgbHR0bmcgZGVzdHJveQorICAgICBTZXNzaW9uIGF1dG8tMjAxMjEwMTUtMjMyMTIwIGRlc3Ryb3llZCBhdCAvaG9tZS9yb290CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGUgdHJhY2UgaXMgc2F2ZWQgaW4gYSBkaXJlY3Rvcnkgb2YgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBuYW1lIGFzIHJldHVybmVkIGJ5ICdsdHRuZyBjcmVhdGUnLCB1bmRlciB0aGUgfi9sdHRuZy10cmFjZXMKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgKG5vdGUgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGlzIGJ5IHN1cHBseWluZyB5b3VyCisgICAgICAgICAgICAgICAgb3duIG5hbWUgdG8gJ2x0dG5nIGNyZWF0ZScpOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBscyAtYWwgfi9sdHRuZy10cmFjZXMKKyAgICAgZHJ3eHJ3eC0tLSAgICAzIHJvb3QgICAgIHJvb3QgICAgICAgICAgMTAyNCBPY3QgMTUgMjM6MjEgLgorICAgICBkcnd4ci14ci14ICAgIDUgcm9vdCAgICAgcm9vdCAgICAgICAgICAxMDI0IE9jdCAxNSAyMzo1NyAuLgorICAgICBkcnd4cnd4LS0tICAgIDMgcm9vdCAgICAgcm9vdCAgICAgICAgICAxMDI0IE9jdCAxNSAyMzoyMSBhdXRvLTIwMTIxMDE1LTIzMjEyMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb2xsZWN0aW5nLWFuZC12aWV3aW5nLWEtdXNlcnNwYWNlLXRyYWNlLW9uLXRoZS10YXJnZXQtaW5zaWRlLWEtc2hlbGwnPgorICAgICAgICAgICAgPHRpdGxlPkNvbGxlY3RpbmcgYW5kIHZpZXdpbmcgYSB1c2Vyc3BhY2UgdHJhY2Ugb24gdGhlIHRhcmdldCAoaW5zaWRlIGEgc2hlbGwpPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIExUVG5nIHVzZXJzcGFjZSB0cmFjaW5nLCB5b3UgbmVlZCB0byBoYXZlIGEgcHJvcGVybHkKKyAgICAgICAgICAgICAgICBpbnN0cnVtZW50ZWQgdXNlcnNwYWNlIHByb2dyYW0uIEZvciB0aGlzIGV4YW1wbGUsIHdlJ2xsIHVzZQorICAgICAgICAgICAgICAgIHRoZSAnaGVsbG8nIHRlc3QgcHJvZ3JhbSBnZW5lcmF0ZWQgYnkgdGhlIGx0dG5nLXVzdCBidWlsZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlICdoZWxsbycgdGVzdCBwcm9ncmFtIGlzbid0IGluc3RhbGxlZCBvbiB0aGUgcm9vdGZzIGJ5CisgICAgICAgICAgICAgICAgdGhlIGx0dG5nLXVzdCBidWlsZCwgc28gd2UgbmVlZCB0byBjb3B5IGl0IG92ZXIgbWFudWFsbHkuCisgICAgICAgICAgICAgICAgRmlyc3QgY2QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIGhlbGxvCisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgYnVpbGQvdG1wL3dvcmsvY29yZTJfMzItcG9reS1saW51eC9sdHRuZy11c3QvMi4wLjUtcjAvZ2l0L3Rlc3RzL2hlbGxvLy5saWJzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIENvcHkgdGhhdCBvdmVyIHRvIHRoZSB0YXJnZXQgbWFjaGluZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc2NwIGhlbGxvIHJvb3RAMTkyLjE2OC4xLjIwOgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3Ugbm93IGhhdmUgdGhlIGluc3RydW1lbnRlZCBsdHRuZyAnaGVsbG8gd29ybGQnIHRlc3QKKyAgICAgICAgICAgICAgICBwcm9ncmFtIG9uIHRoZSB0YXJnZXQsIHJlYWR5IHRvIHRlc3QuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZpcnN0LCBmcm9tIHRoZSBob3N0LCBzc2ggdG8gdGhlIHRhcmdldDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3NoIC1sIHJvb3QgMTkyLjE2OC4xLjQ3CisgICAgIFRoZSBhdXRoZW50aWNpdHkgb2YgaG9zdCAnMTkyLjE2OC4xLjQ3ICgxOTIuMTY4LjEuNDcpJyBjYW4ndCBiZSBlc3RhYmxpc2hlZC4KKyAgICAgUlNBIGtleSBmaW5nZXJwcmludCBpcyAyMzpiZDpjODpiMTphODo3MTo1MjowMDplZTowMDo0Zjo2NDo5ZToxMDpiOTo3ZS4KKyAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHllcy9ubyk/IHllcworICAgICBXYXJuaW5nOiBQZXJtYW5lbnRseSBhZGRlZCAnMTkyLjE2OC4xLjQ3JyAoUlNBKSB0byB0aGUgbGlzdCBvZiBrbm93biBob3N0cy4KKyAgICAgcm9vdEAxOTIuMTY4LjEuNDcncyBwYXNzd29yZDoKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgT25jZSBvbiB0aGUgdGFyZ2V0LCB1c2UgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGEgdHJhY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIGx0dG5nIGNyZWF0ZQorICAgICBTZXNzaW9uIGF1dG8tMjAxOTAzMDMtMDIxOTQzIGNyZWF0ZWQuCisgICAgIFRyYWNlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gL2hvbWUvcm9vdC9sdHRuZy10cmFjZXMvYXV0by0yMDE5MDMwMy0wMjE5NDMKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRW5hYmxlIHRoZSBldmVudHMgeW91IHdhbnQgdG8gdHJhY2UgKGluIHRoaXMgY2FzZSBhbGwKKyAgICAgICAgICAgICAgICB1c2Vyc3BhY2UgZXZlbnRzKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgbHR0bmcgZW5hYmxlLWV2ZW50IC0tdXNlcnNwYWNlIC0tYWxsCisgICAgIEFsbCBVU1QgZXZlbnRzIGFyZSBlbmFibGVkIGluIGNoYW5uZWwgY2hhbm5lbDAKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgU3RhcnQgdGhlIHRyYWNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBsdHRuZyBzdGFydAorICAgICBUcmFjaW5nIHN0YXJ0ZWQgZm9yIHNlc3Npb24gYXV0by0yMDE5MDMwMy0wMjE5NDMKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgUnVuIHRoZSBpbnN0cnVtZW50ZWQgaGVsbG8gd29ybGQgcHJvZ3JhbToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgLi9oZWxsbworICAgICBIZWxsbywgV29ybGQhCisgICAgIFRyYWNpbmcuLi4gIGRvbmUuCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFuZCB0aGVuIHN0b3AgdGhlIHRyYWNlIGFmdGVyIGF3aGlsZSBvciBhZnRlciBydW5uaW5nIGEKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHdvcmtsb2FkIHRoYXQgeW91IHdhbnQgdG8gdHJhY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIGx0dG5nIHN0b3AKKyAgICAgVHJhY2luZyBzdG9wcGVkIGZvciBzZXNzaW9uIGF1dG8tMjAxOTAzMDMtMDIxOTQzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IHZpZXcgdGhlIHRyYWNlIGluIHRleHQgZm9ybSBvbiB0aGUgdGFyZ2V0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBsdHRuZyB2aWV3CisgICAgIFswMjozMToxNC45MDYxNDY1NDRdICgrPy4/Pz8/Pz8/Pz8pIGhlbGxvOjE0MjQgdXN0X3Rlc3RzX2hlbGxvOnRwdGVzdDogeyBjcHVfaWQgPSAxIH0sIHsgaW50ZmllbGQgPSAwLCBpbnRmaWVsZDIgPSAweDAsIGxvbmdmaWVsZCA9IDAsIG5ldGludGZpZWxkID0gMCwgbmV0aW50ZmllbGRoZXggPSAweDAsIGFycmZpZWxkMSA9IFsgWzBdID0gMSwgWzFdID0gMiwgWzJdID0gMyBdLCBhcnJmaWVsZDIgPSAidGVzdCIsIF9zZXFmaWVsZDFfbGVuZ3RoID0gNCwgc2VxZmllbGQxID0gWyBbMF0gPSAxMTYsIFsxXSA9IDEwMSwgWzJdID0gMTE1LCBbM10gPSAxMTYgXSwgX3NlcWZpZWxkMl9sZW5ndGggPSA0LCAgc2VxZmllbGQyID0gInRlc3QiLCBzdHJpbmdmaWVsZCA9ICJ0ZXN0IiwgZmxvYXRmaWVsZCA9IDIyMjIsIGRvdWJsZWZpZWxkID0gMiwgYm9vbGZpZWxkID0gMSB9CisgICAgIFswMjozMToxNC45MDYxNzAzNjBdICgrMC4wMDAwMjM4MTYpIGhlbGxvOjE0MjQgdXN0X3Rlc3RzX2hlbGxvOnRwdGVzdDogeyBjcHVfaWQgPSAxIH0sIHsgaW50ZmllbGQgPSAxLCBpbnRmaWVsZDIgPSAweDEsIGxvbmdmaWVsZCA9IDEsIG5ldGludGZpZWxkID0gMSwgbmV0aW50ZmllbGRoZXggPSAweDEsIGFycmZpZWxkMSA9IFsgWzBdID0gMSwgWzFdID0gMiwgWzJdID0gMyBdLCBhcnJmaWVsZDIgPSAidGVzdCIsIF9zZXFmaWVsZDFfbGVuZ3RoID0gNCwgc2VxZmllbGQxID0gWyBbMF0gPSAxMTYsIFsxXSA9IDEwMSwgWzJdID0gMTE1LCBbM10gPSAxMTYgXSwgX3NlcWZpZWxkMl9sZW5ndGggPSA0LCBzZXFmaWVsZDIgPSAidGVzdCIsIHN0cmluZ2ZpZWxkID0gInRlc3QiLCBmbG9hdGZpZWxkID0gMjIyMiwgZG91YmxlZmllbGQgPSAyLCBib29sZmllbGQgPSAxIH0KKyAgICAgWzAyOjMxOjE0LjkwNjE4MzE0MF0gKCswLjAwMDAxMjc4MCkgaGVsbG86MTQyNCB1c3RfdGVzdHNfaGVsbG86dHB0ZXN0OiB7IGNwdV9pZCA9IDEgfSwgeyBpbnRmaWVsZCA9IDIsIGludGZpZWxkMiA9IDB4MiwgbG9uZ2ZpZWxkID0gMiwgbmV0aW50ZmllbGQgPSAyLCBuZXRpbnRmaWVsZGhleCA9IDB4MiwgYXJyZmllbGQxID0gWyBbMF0gPSAxLCBbMV0gPSAyLCBbMl0gPSAzIF0sIGFycmZpZWxkMiA9ICJ0ZXN0IiwgX3NlcWZpZWxkMV9sZW5ndGggPSA0LCBzZXFmaWVsZDEgPSBbIFswXSA9IDExNiwgWzFdID0gMTAxLCBbMl0gPSAxMTUsIFszXSA9IDExNiBdLCBfc2VxZmllbGQyX2xlbmd0aCA9IDQsIHNlcWZpZWxkMiA9ICJ0ZXN0Iiwgc3RyaW5nZmllbGQgPSAidGVzdCIsIGZsb2F0ZmllbGQgPSAyMjIyLCBkb3VibGVmaWVsZCA9IDIsIGJvb2xmaWVsZCA9IDEgfQorICAgICBbMDI6MzE6MTQuOTA2MTk0Mzg1XSAoKzAuMDAwMDExMjQ1KSBoZWxsbzoxNDI0IHVzdF90ZXN0c19oZWxsbzp0cHRlc3Q6IHsgY3B1X2lkID0gMSB9LCB7IGludGZpZWxkID0gMywgaW50ZmllbGQyID0gMHgzLCBsb25nZmllbGQgPSAzLCBuZXRpbnRmaWVsZCA9IDMsIG5ldGludGZpZWxkaGV4ID0gMHgzLCBhcnJmaWVsZDEgPSBbIFswXSA9IDEsIFsxXSA9IDIsIFsyXSA9IDMgXSwgYXJyZmllbGQyID0gInRlc3QiLCBfc2VxZmllbGQxX2xlbmd0aCA9IDQsIHNlcWZpZWxkMSA9IFsgWzBdID0gMTE2LCBbMV0gPSAxMDEsIFsyXSA9IDExNSwgWzNdID0gMTE2IF0sIF9zZXFmaWVsZDJfbGVuZ3RoID0gNCwgc2VxZmllbGQyID0gInRlc3QiLCBzdHJpbmdmaWVsZCA9ICJ0ZXN0IiwgZmxvYXRmaWVsZCA9IDIyMjIsIGRvdWJsZWZpZWxkID0gMiwgYm9vbGZpZWxkID0gMSB9CisgICAgIC4KKyAgICAgLgorICAgICAuCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IHNhZmVseSBkZXN0cm95IHRoZSB0cmFjZSBzZXNzaW9uIChub3RlIHRoYXQKKyAgICAgICAgICAgICAgICB0aGlzIGRvZXNuJ3QgZGVsZXRlIHRoZSB0cmFjZSAtIGl0J3Mgc3RpbGwKKyAgICAgICAgICAgICAgICB0aGVyZSBpbiB+L2x0dG5nLXRyYWNlcyk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIGx0dG5nIGRlc3Ryb3kKKyAgICAgU2Vzc2lvbiBhdXRvLTIwMTkwMzAzLTAyMTk0MyBkZXN0cm95ZWQgYXQgL2hvbWUvcm9vdAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2xsdG5nLWRvY3VtZW50YXRpb24nPgorICAgICAgICA8dGl0bGU+RG9jdW1lbnRhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIHByaW1hcnkgTFRUbmcgRG9jdW1lbnRhdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbHR0bmcub3JnL2RvY3MvJz5MVFRuZyBEb2N1bWVudGF0aW9uPC91bGluaz4KKyAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICBUaGUgZG9jdW1lbnRhdGlvbiBvbiB0aGlzIHNpdGUgaXMgYXBwcm9wcmlhdGUgZm9yIGludGVybWVkaWF0ZSB0bworICAgICAgICAgICAgYWR2YW5jZWQgc29mdHdhcmUgZGV2ZWxvcGVycyB3aG8gYXJlIHdvcmtpbmcgaW4gYSBMaW51eCBlbnZpcm9ubWVudAorICAgICAgICAgICAgYW5kIGFyZSBpbnRlcmVzdGVkIGluIGVmZmljaWVudCBzb2Z0d2FyZSB0cmFjaW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gTFRUbmcgaW4gZ2VuZXJhbCwgdmlzaXQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbHR0bmcub3JnL2x0dG5nMi4wJz5MVFRuZyBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSAiR2V0dGluZyBTdGFydGVkIiBsaW5rIG9uIHRoaXMgc2l0ZSB0aGF0IHRha2VzCisgICAgICAgICAgICB5b3UgdG8gYW4gTFRUbmcgUXVpY2sgU3RhcnQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdwcm9maWxlLW1hbnVhbC1ibGt0cmFjZSc+CisgICAgPHRpdGxlPmJsa3RyYWNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBibGt0cmFjZSBpcyBhIHRvb2wgZm9yIHRyYWNpbmcgYW5kIHJlcG9ydGluZyBsb3ctbGV2ZWwgZGlzayBJL08uCisgICAgICAgIGJsa3RyYWNlIHByb3ZpZGVzIHRoZSB0cmFjaW5nIGhhbGYgb2YgdGhlIGVxdWF0aW9uOyBpdHMgb3V0cHV0IGNhbgorICAgICAgICBiZSBwaXBlZCBpbnRvIHRoZSBibGtwYXJzZSBwcm9ncmFtLCB3aGljaCByZW5kZXJzIHRoZSBkYXRhIGluIGEKKyAgICAgICAgaHVtYW4tcmVhZGFibGUgZm9ybSBhbmQgZG9lcyBzb21lIGJhc2ljIGFuYWx5c2lzOgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdibGt0cmFjZS1zZXR1cCc+CisgICAgICAgIDx0aXRsZT5TZXR1cDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdGhpcyBzZWN0aW9uLCB3ZSdsbCBhc3N1bWUgeW91J3ZlIGFscmVhZHkgcGVyZm9ybWVkIHRoZQorICAgICAgICAgICAgYmFzaWMgc2V0dXAgb3V0bGluZWQgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncHJvZmlsZS1tYW51YWwtZ2VuZXJhbC1zZXR1cCc+R2VuZXJhbCBTZXR1cDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBibGt0cmFjZSBpcyBhbiBhcHBsaWNhdGlvbiB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldCBzeXN0ZW0uCisgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGUgZW50aXJlIGJsa3RyYWNlIGFuZCBibGtwYXJzZSBwaXBlbGluZSBvbiB0aGUKKyAgICAgICAgICAgIHRhcmdldCwgb3IgeW91IGNhbiBydW4gYmxrdHJhY2UgaW4gJ2xpc3RlbicgbW9kZSBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICBhbmQgaGF2ZSBibGt0cmFjZSBhbmQgYmxrcGFyc2UgY29sbGVjdCBhbmQgYW5hbHl6ZSB0aGUgZGF0YSBvbgorICAgICAgICAgICAgdGhlIGhvc3QgKHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1ibGt0cmFjZS1yZW1vdGVseSc+VXNpbmcgYmxrdHJhY2UgUmVtb3RlbHk8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBiZWxvdykuCisgICAgICAgICAgICBGb3IgdGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uIHdlIGFzc3VtZSB5b3UndmUgc3NoJ2VkIHRvIHRoZQorICAgICAgICAgICAgaG9zdCBhbmQgd2lsbCBiZSBydW5uaW5nIGJsa3JhY2Ugb24gdGhlIHRhcmdldC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdibGt0cmFjZS1iYXNpYy11c2FnZSc+CisgICAgICAgIDx0aXRsZT5CYXNpYyBVc2FnZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyByZWNvcmQgYSB0cmFjZSwgc2ltcGx5IHJ1biB0aGUgJ2Jsa3RyYWNlJyBjb21tYW5kLCBnaXZpbmcgaXQKKyAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBibG9jayBkZXZpY2UgeW91IHdhbnQgdG8gdHJhY2UgYWN0aXZpdHkgb246CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgYmxrdHJhY2UgL2Rldi9zZGMKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEluIGFub3RoZXIgc2hlbGwsIGV4ZWN1dGUgYSB3b3JrbG9hZCB5b3Ugd2FudCB0byB0cmFjZS4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTovbWVkaWEvc2RjIyBybSBsaW51eC0yLjYuMTkuMi50YXIuYnoyOyB3Z2V0IDx1bGluayB1cmw9J2h0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9saW51eC0yLjYuMTkuMi50YXIuYnoyJz5odHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6MjwvdWxpbms+OyBzeW5jCisgICAgIENvbm5lY3RpbmcgdG8gZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcgKDE0MC4yMTEuMTY5LjU5OjgwKQorICAgICBsaW51eC0yLjYuMTkuMi50YXIuYiAxMDAlIHwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfCA0MTcyN2sgIDA6MDA6MDAgRVRBCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBQcmVzcyBDdHJsLUMgaW4gdGhlIGJsa3RyYWNlIHNoZWxsIHRvIHN0b3AgdGhlIHRyYWNlLiBJdCB3aWxsCisgICAgICAgICAgICBkaXNwbGF5IGhvdyBtYW55IGV2ZW50cyB3ZXJlIGxvZ2dlZCwgYWxvbmcgd2l0aCB0aGUgcGVyLWNwdSBmaWxlCisgICAgICAgICAgICBzaXplcyAoYmxrdHJhY2UgcmVjb3JkcyB0cmFjZXMgaW4gcGVyLWNwdSBrZXJuZWwgYnVmZmVycyBhbmQKKyAgICAgICAgICAgIHNpbXBseSBkdW1wcyB0aGVtIHRvIHVzZXJzcGFjZSBmb3IgYmxrcGFyc2UgdG8gbWVyZ2UgYW5kIHNvcnQKKyAgICAgICAgICAgIGxhdGVyKS4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgXkM9PT0gc2RjID09PQorICAgICAgQ1BVICAwOiAgICAgICAgICAgICAgICAgNzA4MiBldmVudHMsICAgICAgMzMyIEtpQiBkYXRhCisgICAgICBDUFUgIDE6ICAgICAgICAgICAgICAgICAxNTc4IGV2ZW50cywgICAgICAgNzQgS2lCIGRhdGEKKyAgICAgIFRvdGFsOiAgICAgICAgICAgICAgICAgIDg2NjAgZXZlbnRzIChkcm9wcGVkIDApLCAgICAgIDQwNiBLaUIgZGF0YQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgeW91IGV4YW1pbmUgdGhlIGZpbGVzIHNhdmVkIHRvIGRpc2ssIHlvdSBzZWUgbXVsdGlwbGUgZmlsZXMsCisgICAgICAgICAgICBvbmUgcGVyIENQVSBhbmQgd2l0aCB0aGUgZGV2aWNlIG5hbWUgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCisgICAgICAgICAgICBmaWxlbmFtZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBscyAtYWwKKyAgICAgZHJ3eHIteHIteCAgICA2IHJvb3QgICAgIHJvb3QgICAgICAgICAgMTAyNCBPY3QgMjcgMjI6MzkgLgorICAgICBkcnd4ci1zci14ICAgIDQgcm9vdCAgICAgcm9vdCAgICAgICAgICAxMDI0IE9jdCAyNiAxODoyNCAuLgorICAgICAtcnctci0tci0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgMzM5OTM4IE9jdCAyNyAyMjo0MCBzZGMuYmxrdHJhY2UuMAorICAgICAtcnctci0tci0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgIDc1NzUzIE9jdCAyNyAyMjo0MCBzZGMuYmxrdHJhY2UuMQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVG8gdmlldyB0aGUgdHJhY2UgZXZlbnRzLCBzaW1wbHkgaW52b2tlICdibGtwYXJzZScgaW4gdGhlCisgICAgICAgICAgICBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgdHJhY2UgZmlsZXMsIGdpdmluZyBpdCB0aGUgZGV2aWNlIG5hbWUKKyAgICAgICAgICAgIHRoYXQgZm9ybXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIGZpbGVuYW1lczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBibGtwYXJzZSBzZGMKKworICAgICAgOCwzMiAgIDEgICAgICAgIDEgICAgIDAuMDAwMDAwMDAwICAxMjI1ICBRICBXUyAzNDE3MDQ4ICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgICAyICAgICAwLjAwMDAyNTIxMyAgMTIyNSAgRyAgV1MgMzQxNzA0OCArIDggW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAgMyAgICAgMC4wMDAwMzMzODQgIDEyMjUgIFAgICBOIFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgIDQgICAgIDAuMDAwMDQzMzAxICAxMjI1ICBJICBXUyAzNDE3MDQ4ICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgICAwLjAwMDA1NzI3MCAgICAgMCAgbSAgIE4gY2ZxMTIyNSBpbnNlcnRfcmVxdWVzdAorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgIDAuMDAwMDY0ODEzICAgICAwICBtICAgTiBjZnExMjI1IGFkZF90b19ycgorICAgICAgOCwzMiAgIDEgICAgICAgIDUgICAgIDAuMDAwMDc2MzM2ICAxMjI1ICBVICAgTiBbamJkMi9zZGMtOF0gMQorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgIDAuMDAwMDg4NTU5ICAgICAwICBtICAgTiBjZnEgd29ya2xvYWQgc2xpY2U6MTUwCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICAgMC4wMDAwOTczNTkgICAgIDAgIG0gICBOIGNmcTEyMjUgc2V0X2FjdGl2ZSB3bF9wcmlvOjAgd2xfdHlwZToxCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICAgMC4wMDAxMDQwNjMgICAgIDAgIG0gICBOIGNmcTEyMjUgTm90IGlkbGluZy4gc3QtPmNvdW50OjEKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgICAwLjAwMDExMjU4NCAgICAgMCAgbSAgIE4gY2ZxMTIyNSBmaWZvPSAgKG51bGwpCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICAgMC4wMDAxMTg3MzAgICAgIDAgIG0gICBOIGNmcTEyMjUgZGlzcGF0Y2hfaW5zZXJ0CisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICAgMC4wMDAxMjczOTAgICAgIDAgIG0gICBOIGNmcTEyMjUgZGlzcGF0Y2hlZCBhIHJlcXVlc3QKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgICAwLjAwMDEzMzUzNiAgICAgMCAgbSAgIE4gY2ZxMTIyNSBhY3RpdmF0ZSBycSwgZHJ2PTEKKyAgICAgIDgsMzIgICAxICAgICAgICA2ICAgICAwLjAwMDEzNjg4OSAgMTIyNSAgRCAgV1MgMzQxNzA0OCArIDggW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAgNyAgICAgMC4wMDAzNjAzODEgIDEyMjUgIFEgIFdTIDM0MTcwNTYgKyA4IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgIDggICAgIDAuMDAwMzc3NDIyICAxMjI1ICBHICBXUyAzNDE3MDU2ICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgICA5ICAgICAwLjAwMDM4ODg3NiAgMTIyNSAgUCAgIE4gW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAxMCAgICAgMC4wMDAzOTc4ODYgIDEyMjUgIFEgIFdTIDM0MTcwNjQgKyA4IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgMTEgICAgIDAuMDAwNDA0ODAwICAxMjI1ICBNICBXUyAzNDE3MDY0ICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgIDEyICAgICAwLjAwMDQxMjM0MyAgMTIyNSAgUSAgV1MgMzQxNzA3MiArIDggW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAxMyAgICAgMC4wMDA0MTY1MzMgIDEyMjUgIE0gIFdTIDM0MTcwNzIgKyA4IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgMTQgICAgIDAuMDAwNDIyMTIxICAxMjI1ICBRICBXUyAzNDE3MDgwICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgIDE1ICAgICAwLjAwMDQyNTE5NCAgMTIyNSAgTSAgV1MgMzQxNzA4MCArIDggW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAxNiAgICAgMC4wMDA0MzE5NjggIDEyMjUgIFEgIFdTIDM0MTcwODggKyA4IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgMTcgICAgIDAuMDAwNDM1MjUxICAxMjI1ICBNICBXUyAzNDE3MDg4ICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgIDE4ICAgICAwLjAwMDQ0MDI3OSAgMTIyNSAgUSAgV1MgMzQxNzA5NiArIDggW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAxOSAgICAgMC4wMDA0NDM5MTEgIDEyMjUgIE0gIFdTIDM0MTcwOTYgKyA4IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgMjAgICAgIDAuMDAwNDUwMzM2ICAxMjI1ICBRICBXUyAzNDE3MTA0ICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgIDIxICAgICAwLjAwMDQ1NDAzOCAgMTIyNSAgTSAgV1MgMzQxNzEwNCArIDggW2piZDIvc2RjLThdCisgICAgICA4LDMyICAgMSAgICAgICAyMiAgICAgMC4wMDA0NjIwNzAgIDEyMjUgIFEgIFdTIDM0MTcxMTIgKyA4IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgMjMgICAgIDAuMDAwNDY1NDIyICAxMjI1ICBNICBXUyAzNDE3MTEyICsgOCBbamJkMi9zZGMtOF0KKyAgICAgIDgsMzIgICAxICAgICAgIDI0ICAgICAwLjAwMDQ3NDIyMiAgMTIyNSAgSSAgV1MgMzQxNzA1NiArIDY0IFtqYmQyL3NkYy04XQorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgIDAuMDAwNDgzMDIyICAgICAwICBtICAgTiBjZnExMjI1IGluc2VydF9yZXF1ZXN0CisgICAgICA4LDMyICAgMSAgICAgICAyNSAgICAgMC4wMDA0ODk3MjcgIDEyMjUgIFUgICBOIFtqYmQyL3NkYy04XSAxCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICAgMC4wMDA0OTg0NTcgICAgIDAgIG0gICBOIGNmcTEyMjUgTm90IGlkbGluZy4gc3QtPmNvdW50OjEKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgICAwLjAwMDUwMzc2NSAgICAgMCAgbSAgIE4gY2ZxMTIyNSBkaXNwYXRjaF9pbnNlcnQKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgICAwLjAwMDUxMjkxNCAgICAgMCAgbSAgIE4gY2ZxMTIyNSBkaXNwYXRjaGVkIGEgcmVxdWVzdAorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgIDAuMDAwNTE4ODUxICAgICAwICBtICAgTiBjZnExMjI1IGFjdGl2YXRlIHJxLCBkcnY9MgorICAgICAgLgorICAgICAgLgorICAgICAgLgorICAgICAgOCwzMiAgIDAgICAgICAgIDAgICAgNTguNTE1MDA2MTM4ICAgICAwICBtICAgTiBjZnEzNTUxIGNvbXBsZXRlIHJxbm9pZGxlIDEKKyAgICAgIDgsMzIgICAwICAgICAyMDI0ICAgIDU4LjUxNjYwMzI2OSAgICAgMyAgQyAgV1MgMzE1Njk5MiArIDE2IFswXQorICAgICAgOCwzMiAgIDAgICAgICAgIDAgICAgNTguNTE2NjI2NzM2ICAgICAwICBtICAgTiBjZnEzNTUxIGNvbXBsZXRlIHJxbm9pZGxlIDEKKyAgICAgIDgsMzIgICAwICAgICAgICAwICAgIDU4LjUxNjYzNDU1OCAgICAgMCAgbSAgIE4gY2ZxMzU1MSBhcm1faWRsZTogOCBncm91cF9pZGxlOiAwCisgICAgICA4LDMyICAgMCAgICAgICAgMCAgICA1OC41MTY2MzY5MzMgICAgIDAgIG0gICBOIGNmcSBzY2hlZHVsZSBkaXNwYXRjaAorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgNTguNTE2OTcxNjEzICAgICAwICBtICAgTiBjZnEzNTUxIHNsaWNlIGV4cGlyZWQgdD0wCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICA1OC41MTY5ODIwODkgICAgIDAgIG0gICBOIGNmcTM1NTEgc2xfdXNlZD0xMyBkaXNwPTYgY2hhcmdlPTEzIGlvcHM9MCBzZWN0PTgwCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICA1OC41MTY5ODU1MTEgICAgIDAgIG0gICBOIGNmcTM1NTEgZGVsX2Zyb21fcnIKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgIDU4LjUxNjk5MDgxOSAgICAgMCAgbSAgIE4gY2ZxMzU1MSBwdXRfcXVldWUKKworICAgICBDUFUwIChzZGMpOgorICAgICAgUmVhZHMgUXVldWVkOiAgICAgICAgICAgMCwgICAgICAgIDBLaUIJIFdyaXRlcyBRdWV1ZWQ6ICAgICAgICAgMzMxLCAgIDI2LDI4NEtpQgorICAgICAgUmVhZCBEaXNwYXRjaGVzOiAgICAgICAgMCwgICAgICAgIDBLaUIJIFdyaXRlIERpc3BhdGNoZXM6ICAgICAgNDg1LCAgIDQwLDQ4NEtpQgorICAgICAgUmVhZHMgUmVxdWV1ZWQ6ICAgICAgICAgMAkJIFdyaXRlcyBSZXF1ZXVlZDogICAgICAgICAwCisgICAgICBSZWFkcyBDb21wbGV0ZWQ6ICAgICAgICAwLCAgICAgICAgMEtpQgkgV3JpdGVzIENvbXBsZXRlZDogICAgICA1MTEsICAgNDEsMDAwS2lCCisgICAgICBSZWFkIE1lcmdlczogICAgICAgICAgICAwLCAgICAgICAgMEtpQgkgV3JpdGUgTWVyZ2VzOiAgICAgICAgICAgMTMsICAgICAgMTYwS2lCCisgICAgICBSZWFkIGRlcHRoOiAgICAgICAgICAgICAwICAgICAgICAJIFdyaXRlIGRlcHRoOiAgICAgICAgICAgICAyCisgICAgICBJTyB1bnBsdWdzOiAgICAgICAgICAgIDIzICAgICAgICAJIFRpbWVyIHVucGx1Z3M6ICAgICAgICAgICAwCisgICAgIENQVTEgKHNkYyk6CisgICAgICBSZWFkcyBRdWV1ZWQ6ICAgICAgICAgICAwLCAgICAgICAgMEtpQgkgV3JpdGVzIFF1ZXVlZDogICAgICAgICAyNDksICAgMTUsODAwS2lCCisgICAgICBSZWFkIERpc3BhdGNoZXM6ICAgICAgICAwLCAgICAgICAgMEtpQgkgV3JpdGUgRGlzcGF0Y2hlczogICAgICAgNDIsICAgIDEsNjAwS2lCCisgICAgICBSZWFkcyBSZXF1ZXVlZDogICAgICAgICAwCQkgV3JpdGVzIFJlcXVldWVkOiAgICAgICAgIDAKKyAgICAgIFJlYWRzIENvbXBsZXRlZDogICAgICAgIDAsICAgICAgICAwS2lCCSBXcml0ZXMgQ29tcGxldGVkOiAgICAgICAxNiwgICAgMSwwODRLaUIKKyAgICAgIFJlYWQgTWVyZ2VzOiAgICAgICAgICAgIDAsICAgICAgICAwS2lCCSBXcml0ZSBNZXJnZXM6ICAgICAgICAgICA0MCwgICAgICAyNzZLaUIKKyAgICAgIFJlYWQgZGVwdGg6ICAgICAgICAgICAgIDAgICAgICAgIAkgV3JpdGUgZGVwdGg6ICAgICAgICAgICAgIDIKKyAgICAgIElPIHVucGx1Z3M6ICAgICAgICAgICAgMzAgICAgICAgIAkgVGltZXIgdW5wbHVnczogICAgICAgICAgIDEKKworICAgICBUb3RhbCAoc2RjKToKKyAgICAgIFJlYWRzIFF1ZXVlZDogICAgICAgICAgIDAsICAgICAgICAwS2lCCSBXcml0ZXMgUXVldWVkOiAgICAgICAgIDU4MCwgICA0MiwwODRLaUIKKyAgICAgIFJlYWQgRGlzcGF0Y2hlczogICAgICAgIDAsICAgICAgICAwS2lCCSBXcml0ZSBEaXNwYXRjaGVzOiAgICAgIDUyNywgICA0MiwwODRLaUIKKyAgICAgIFJlYWRzIFJlcXVldWVkOiAgICAgICAgIDAJCSBXcml0ZXMgUmVxdWV1ZWQ6ICAgICAgICAgMAorICAgICAgUmVhZHMgQ29tcGxldGVkOiAgICAgICAgMCwgICAgICAgIDBLaUIJIFdyaXRlcyBDb21wbGV0ZWQ6ICAgICAgNTI3LCAgIDQyLDA4NEtpQgorICAgICAgUmVhZCBNZXJnZXM6ICAgICAgICAgICAgMCwgICAgICAgIDBLaUIJIFdyaXRlIE1lcmdlczogICAgICAgICAgIDUzLCAgICAgIDQzNktpQgorICAgICAgSU8gdW5wbHVnczogICAgICAgICAgICA1MyAgICAgICAgCSBUaW1lciB1bnBsdWdzOiAgICAgICAgICAgMQorCisgICAgIFRocm91Z2hwdXQgKFIvVyk6IDBLaUIvcyAvIDcxOUtpQi9zCisgICAgIEV2ZW50cyAoc2RjKTogNiw1OTIgZW50cmllcworICAgICBTa2lwczogMCBmb3J3YXJkICgwIC0gICAwLjAlKQorICAgICBJbnB1dCBmaWxlIHNkYy5ibGt0cmFjZS4wIGFkZGVkCisgICAgIElucHV0IGZpbGUgc2RjLmJsa3RyYWNlLjEgYWRkZWQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSByZXBvcnQgc2hvd3MgZWFjaCBldmVudCB0aGF0IHdhcyBmb3VuZCBpbiB0aGUgYmxrdHJhY2UgZGF0YSwKKyAgICAgICAgICAgIGFsb25nIHdpdGggYSBzdW1tYXJ5IG9mIHRoZSBvdmVyYWxsIGJsb2NrIEkvTyB0cmFmZmljIGR1cmluZworICAgICAgICAgICAgdGhlIHJ1bi4gWW91IGNhbiBsb29rIGF0IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvYmxrcGFyc2UnPmJsa3BhcnNlPC91bGluaz4KKyAgICAgICAgICAgIG1hbnBhZ2UgdG8gbGVhcm4gdGhlCisgICAgICAgICAgICBtZWFuaW5nIG9mIGVhY2ggZmllbGQgZGlzcGxheWVkIGluIHRoZSB0cmFjZSBsaXN0aW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Jsa3RyYWNlLWxpdmUtbW9kZSc+CisgICAgICAgICAgICA8dGl0bGU+TGl2ZSBNb2RlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgYmxrdHJhY2UgYW5kIGJsa3BhcnNlIGFyZSBkZXNpZ25lZCBmcm9tIHRoZSBncm91bmQgdXAgdG8KKyAgICAgICAgICAgICAgICBiZSBhYmxlIHRvIG9wZXJhdGUgdG9nZXRoZXIgaW4gYSAncGlwZSBtb2RlJyB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICBzdGRvdXQgb2YgYmxrdHJhY2UgY2FuIGJlIGZlZCBkaXJlY3RseSBpbnRvIHRoZSBzdGRpbiBvZgorICAgICAgICAgICAgICAgIGJsa3BhcnNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTp+IyBibGt0cmFjZSAvZGV2L3NkYyAtbyAtIHwgYmxrcGFyc2UgLWkgLQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIGVuYWJsZXMgbG9uZy1saXZlZCB0cmFjaW5nIHNlc3Npb25zIHRvIHJ1biB3aXRob3V0CisgICAgICAgICAgICAgICAgd3JpdGluZyBhbnl0aGluZyB0byBkaXNrLCBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvb2sgZm9yCisgICAgICAgICAgICAgICAgY2VydGFpbiBjb25kaXRpb25zIGluIHRoZSB0cmFjZSBkYXRhIGluICdyZWFsLXRpbWUnIGJ5CisgICAgICAgICAgICAgICAgdmlld2luZyB0aGUgdHJhY2Ugb3V0cHV0IGFzIGl0IHNjcm9sbHMgYnkgb24gdGhlIHNjcmVlbiBvcgorICAgICAgICAgICAgICAgIGJ5IHBhc3NpbmcgaXQgYWxvbmcgdG8geWV0IGFub3RoZXIgcHJvZ3JhbSBpbiB0aGUgcGlwZWxpbmUKKyAgICAgICAgICAgICAgICBzdWNoIGFzIGdyZXAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgYW5kIGNhcHR1cmUKKyAgICAgICAgICAgICAgICBjb25kaXRpb25zIG9mIGludGVyZXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVyZSdzIGFjdHVhbGx5IGFub3RoZXIgYmxrdHJhY2UgY29tbWFuZCB0aGF0IGltcGxlbWVudHMKKyAgICAgICAgICAgICAgICB0aGUgYWJvdmUgcGlwZWxpbmUgYXMgYSBzaW5nbGUgY29tbWFuZCwgc28gdGhlIHVzZXIgZG9lc24ndAorICAgICAgICAgICAgICAgIGhhdmUgdG8gYm90aGVyIHR5cGluZyBpbiB0aGUgYWJvdmUgY29tbWFuZCBzZXF1ZW5jZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6fiMgYnRyYWNlIC9kZXYvc2RjCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWJsa3RyYWNlLXJlbW90ZWx5Jz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBibGt0cmFjZSBSZW1vdGVseTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlY2F1c2UgYmxrdHJhY2UgdHJhY2VzIGJsb2NrIEkvTyBhbmQgYXQgdGhlIHNhbWUgdGltZQorICAgICAgICAgICAgICAgIG5vcm1hbGx5IHdyaXRlcyBpdHMgdHJhY2UgZGF0YSB0byBhIGJsb2NrIGRldmljZSwgYW5kCisgICAgICAgICAgICAgICAgaW4gZ2VuZXJhbCBiZWNhdXNlIGl0J3Mgbm90IHJlYWxseSBhIGdyZWF0IGlkZWEgdG8gbWFrZQorICAgICAgICAgICAgICAgIHRoZSBkZXZpY2UgYmVpbmcgdHJhY2VkIHRoZSBzYW1lIGFzIHRoZSBkZXZpY2UgdGhlIHRyYWNlcgorICAgICAgICAgICAgICAgIHdyaXRlcyB0bywgYmxrdHJhY2UgcHJvdmlkZXMgYSB3YXkgdG8gdHJhY2Ugd2l0aG91dAorICAgICAgICAgICAgICAgIHBlcnR1cmJpbmcgdGhlIHRyYWNlZCBkZXZpY2UgYXQgYWxsIGJ5IHByb3ZpZGluZyBuYXRpdmUKKyAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciBzZW5kaW5nIGFsbCB0cmFjZSBkYXRhIG92ZXIgdGhlIG5ldHdvcmsuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGhhdmUgYmxrdHJhY2Ugb3BlcmF0ZSBpbiB0aGlzIG1vZGUsIHN0YXJ0IGJsa3RyYWNlIG9uCisgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBzeXN0ZW0gYmVpbmcgdHJhY2VkIHdpdGggdGhlIC1sIG9wdGlvbiwgYWxvbmcgd2l0aAorICAgICAgICAgICAgICAgIHRoZSBkZXZpY2UgdG8gdHJhY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5On4jIGJsa3RyYWNlIC1sIC9kZXYvc2RjCisgICAgIHNlcnZlcjogd2FpdGluZyBmb3IgY29ubmVjdGlvbnMuLi4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgT24gdGhlIGhvc3Qgc3lzdGVtLCB1c2UgdGhlIC1oIG9wdGlvbiB0byBjb25uZWN0IHRvIHRoZQorICAgICAgICAgICAgICAgIHRhcmdldCBzeXN0ZW0sIGFsc28gcGFzc2luZyBpdCB0aGUgZGV2aWNlIHRvIHRyYWNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBibGt0cmFjZSAtZCAvZGV2L3NkYyAtaCAxOTIuMTY4LjEuNDMKKyAgICAgYmxrdHJhY2U6IGNvbm5lY3RpbmcgdG8gMTkyLjE2OC4xLjQzCisgICAgIGJsa3RyYWNlOiBjb25uZWN0ZWQhCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE9uIHRoZSB0YXJnZXQgc3lzdGVtLCB5b3Ugc2hvdWxkIHNlZSB0aGlzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgc2VydmVyOiBjb25uZWN0aW9uIGZyb20gMTkyLjE2OC4xLjQzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluIGFub3RoZXIgc2hlbGwsIGV4ZWN1dGUgYSB3b3JrbG9hZCB5b3Ugd2FudCB0byB0cmFjZS4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6L21lZGlhL3NkYyMgcm0gbGludXgtMi42LjE5LjIudGFyLmJ6Mjsgd2dldCA8dWxpbmsgdXJsPSdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbGludXgtMi42LjE5LjIudGFyLmJ6Mic+aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2xpbnV4LTIuNi4xOS4yLnRhci5iejI8L3VsaW5rPjsgc3luYworICAgICBDb25uZWN0aW5nIHRvIGRvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnICgxNDAuMjExLjE2OS41OTo4MCkKKyAgICAgbGludXgtMi42LjE5LjIudGFyLmIgMTAwJSB8KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKnwgNDE3MjdrICAwOjAwOjAwIEVUQQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBXaGVuIGl0J3MgZG9uZSwgZG8gYSBDdHJsLUMgb24gdGhlIGhvc3Qgc3lzdGVtIHRvCisgICAgICAgICAgICAgICAgc3RvcCB0aGUgdHJhY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBeQz09PSBzZGMgPT09CisgICAgICBDUFUgIDA6ICAgICAgICAgICAgICAgICA3NjkxIGV2ZW50cywgICAgICAzNjEgS2lCIGRhdGEKKyAgICAgIENQVSAgMTogICAgICAgICAgICAgICAgIDQxMDkgZXZlbnRzLCAgICAgIDE5MyBLaUIgZGF0YQorICAgICAgVG90YWw6ICAgICAgICAgICAgICAgICAxMTgwMCBldmVudHMgKGRyb3BwZWQgMCksICAgICAgNTU0IEtpQiBkYXRhCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIE9uIHRoZSB0YXJnZXQgc3lzdGVtLCB5b3Ugc2hvdWxkIGFsc28gc2VlIGEgdHJhY2UKKyAgICAgICAgICAgICAgICBzdW1tYXJ5IGZvciB0aGUgdHJhY2UganVzdCBlbmRlZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHNlcnZlcjogZW5kIG9mIHJ1biBmb3IgMTkyLjE2OC4xLjQzOnNkYworICAgICA9PT0gc2RjID09PQorICAgICAgQ1BVICAwOiAgICAgICAgICAgICAgICAgNzY5MSBldmVudHMsICAgICAgMzYxIEtpQiBkYXRhCisgICAgICBDUFUgIDE6ICAgICAgICAgICAgICAgICA0MTA5IGV2ZW50cywgICAgICAxOTMgS2lCIGRhdGEKKyAgICAgIFRvdGFsOiAgICAgICAgICAgICAgICAgMTE4MDAgZXZlbnRzIChkcm9wcGVkIDApLCAgICAgIDU1NCBLaUIgZGF0YQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgYmxrdHJhY2UgaW5zdGFuY2Ugb24gdGhlIGhvc3Qgd2lsbCBzYXZlIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICBvdXRwdXQgaW5zaWRlIGEgaG9zdG5hbWUtdGltZXN0YW1wIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbHMgLWFsCisgICAgIGRyd3hyLXhyLXggICAxMCByb290ICAgICByb290ICAgICAgICAgIDEwMjQgT2N0IDI4IDAyOjQwIC4KKyAgICAgZHJ3eHItc3IteCAgICA0IHJvb3QgICAgIHJvb3QgICAgICAgICAgMTAyNCBPY3QgMjYgMTg6MjQgLi4KKyAgICAgZHJ3eHIteHIteCAgICAyIHJvb3QgICAgIHJvb3QgICAgICAgICAgMTAyNCBPY3QgMjggMDI6NDAgMTkyLjE2OC4xLjQzLTIwMTItMTAtMjgtMDI6NDA6NTYKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgY2QgaW50byB0aGF0IGRpcmVjdG9yeSB0byBzZWUgdGhlIG91dHB1dCBmaWxlczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbHMgLWwKKyAgICAgLXJ3LXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgIDM2OTE5MyBPY3QgMjggMDI6NDQgc2RjLmJsa3RyYWNlLjAKKyAgICAgLXJ3LXItLXItLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgIDE5NzI3OCBPY3QgMjggMDI6NDQgc2RjLmJsa3RyYWNlLjEKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQW5kIHJ1biBibGtwYXJzZSBvbiB0aGUgaG9zdCBzeXN0ZW0gdXNpbmcgdGhlIGRldmljZSBuYW1lOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBibGtwYXJzZSBzZGMKKworICAgICAgOCwzMiAgIDEgICAgICAgIDEgICAgIDAuMDAwMDAwMDAwICAxMjYzICBRICBSTSA2MDE2ICsgOCBbbHNdCisgICAgICA4LDMyICAgMSAgICAgICAgMCAgICAgMC4wMDAwMzYwMzggICAgIDAgIG0gICBOIGNmcTEyNjMgYWxsb2NlZAorICAgICAgOCwzMiAgIDEgICAgICAgIDIgICAgIDAuMDAwMDM5MzkwICAxMjYzICBHICBSTSA2MDE2ICsgOCBbbHNdCisgICAgICA4LDMyICAgMSAgICAgICAgMyAgICAgMC4wMDAwNDkxNjggIDEyNjMgIEkgIFJNIDYwMTYgKyA4IFtsc10KKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgICAwLjAwMDA1NjE1MiAgICAgMCAgbSAgIE4gY2ZxMTI2MyBpbnNlcnRfcmVxdWVzdAorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgIDAuMDAwMDYxNjAwICAgICAwICBtICAgTiBjZnExMjYzIGFkZF90b19ycgorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAgIDAuMDAwMDc1NDk4ICAgICAwICBtICAgTiBjZnEgd29ya2xvYWQgc2xpY2U6MzAwCisgICAgICAuCisgICAgICAuCisgICAgICAuCisgICAgICA4LDMyICAgMCAgICAgICAgMCAgIDE3Ny4yNjYzODU2OTYgICAgIDAgIG0gICBOIGNmcTEyNjcgYXJtX2lkbGU6IDggZ3JvdXBfaWRsZTogMAorICAgICAgOCwzMiAgIDAgICAgICAgIDAgICAxNzcuMjY2Mzg4MTQwICAgICAwICBtICAgTiBjZnEgc2NoZWR1bGUgZGlzcGF0Y2gKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgMTc3LjI2NjY3OTIzOSAgICAgMCAgbSAgIE4gY2ZxMTI2NyBzbGljZSBleHBpcmVkIHQ9MAorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAxNzcuMjY2Njg5Mjk3ICAgICAwICBtICAgTiBjZnExMjY3IHNsX3VzZWQ9OSBkaXNwPTYgY2hhcmdlPTkgaW9wcz0wIHNlY3Q9NTYKKyAgICAgIDgsMzIgICAxICAgICAgICAwICAgMTc3LjI2NjY5MjY0OSAgICAgMCAgbSAgIE4gY2ZxMTI2NyBkZWxfZnJvbV9ycgorICAgICAgOCwzMiAgIDEgICAgICAgIDAgICAxNzcuMjY2Njk2NTYwICAgICAwICBtICAgTiBjZnExMjY3IHB1dF9xdWV1ZQorCisgICAgIENQVTAgKHNkYyk6CisgICAgICBSZWFkcyBRdWV1ZWQ6ICAgICAgICAgICAwLCAgICAgICAgMEtpQgkgV3JpdGVzIFF1ZXVlZDogICAgICAgICAyNzAsICAgMjEsNzA4S2lCCisgICAgICBSZWFkIERpc3BhdGNoZXM6ICAgICAgIDU5LCAgICAyLDYyOEtpQgkgV3JpdGUgRGlzcGF0Y2hlczogICAgICA0OTUsICAgMzksOTY0S2lCCisgICAgICBSZWFkcyBSZXF1ZXVlZDogICAgICAgICAwCQkgV3JpdGVzIFJlcXVldWVkOiAgICAgICAgIDAKKyAgICAgIFJlYWRzIENvbXBsZXRlZDogICAgICAgOTAsICAgIDIsNzUyS2lCCSBXcml0ZXMgQ29tcGxldGVkOiAgICAgIDU0MywgICA0MSw1OTZLaUIKKyAgICAgIFJlYWQgTWVyZ2VzOiAgICAgICAgICAgIDAsICAgICAgICAwS2lCCSBXcml0ZSBNZXJnZXM6ICAgICAgICAgICAgOSwgICAgICAzNDRLaUIKKyAgICAgIFJlYWQgZGVwdGg6ICAgICAgICAgICAgIDIgICAgICAgIAkgV3JpdGUgZGVwdGg6ICAgICAgICAgICAgIDIKKyAgICAgIElPIHVucGx1Z3M6ICAgICAgICAgICAgMjAgICAgICAgIAkgVGltZXIgdW5wbHVnczogICAgICAgICAgIDEKKyAgICAgQ1BVMSAoc2RjKToKKyAgICAgIFJlYWRzIFF1ZXVlZDogICAgICAgICA2ODgsICAgIDIsNzUyS2lCCSBXcml0ZXMgUXVldWVkOiAgICAgICAgIDM4MSwgICAyMCw2NTJLaUIKKyAgICAgIFJlYWQgRGlzcGF0Y2hlczogICAgICAgMzEsICAgICAgMTI0S2lCCSBXcml0ZSBEaXNwYXRjaGVzOiAgICAgICA1OSwgICAgMiwzOTZLaUIKKyAgICAgIFJlYWRzIFJlcXVldWVkOiAgICAgICAgIDAJCSBXcml0ZXMgUmVxdWV1ZWQ6ICAgICAgICAgMAorICAgICAgUmVhZHMgQ29tcGxldGVkOiAgICAgICAgMCwgICAgICAgIDBLaUIJIFdyaXRlcyBDb21wbGV0ZWQ6ICAgICAgIDExLCAgICAgIDc2NEtpQgorICAgICAgUmVhZCBNZXJnZXM6ICAgICAgICAgIDU5OCwgICAgMiwzOTJLaUIJIFdyaXRlIE1lcmdlczogICAgICAgICAgIDg4LCAgICAgIDQ0OEtpQgorICAgICAgUmVhZCBkZXB0aDogICAgICAgICAgICAgMiAgICAgICAgCSBXcml0ZSBkZXB0aDogICAgICAgICAgICAgMgorICAgICAgSU8gdW5wbHVnczogICAgICAgICAgICA1MiAgICAgICAgCSBUaW1lciB1bnBsdWdzOiAgICAgICAgICAgMAorCisgICAgIFRvdGFsIChzZGMpOgorICAgICAgUmVhZHMgUXVldWVkOiAgICAgICAgIDY4OCwgICAgMiw3NTJLaUIJIFdyaXRlcyBRdWV1ZWQ6ICAgICAgICAgNjUxLCAgIDQyLDM2MEtpQgorICAgICAgUmVhZCBEaXNwYXRjaGVzOiAgICAgICA5MCwgICAgMiw3NTJLaUIJIFdyaXRlIERpc3BhdGNoZXM6ICAgICAgNTU0LCAgIDQyLDM2MEtpQgorICAgICAgUmVhZHMgUmVxdWV1ZWQ6ICAgICAgICAgMAkJIFdyaXRlcyBSZXF1ZXVlZDogICAgICAgICAwCisgICAgICBSZWFkcyBDb21wbGV0ZWQ6ICAgICAgIDkwLCAgICAyLDc1MktpQgkgV3JpdGVzIENvbXBsZXRlZDogICAgICA1NTQsICAgNDIsMzYwS2lCCisgICAgICBSZWFkIE1lcmdlczogICAgICAgICAgNTk4LCAgICAyLDM5MktpQgkgV3JpdGUgTWVyZ2VzOiAgICAgICAgICAgOTcsICAgICAgNzkyS2lCCisgICAgICBJTyB1bnBsdWdzOiAgICAgICAgICAgIDcyICAgICAgICAJIFRpbWVyIHVucGx1Z3M6ICAgICAgICAgICAxCisKKyAgICAgVGhyb3VnaHB1dCAoUi9XKTogMTVLaUIvcyAvIDIzOEtpQi9zCisgICAgIEV2ZW50cyAoc2RjKTogOSwzMDEgZW50cmllcworICAgICBTa2lwczogMCBmb3J3YXJkICgwIC0gICAwLjAlKQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgdHJhY2UgZXZlbnRzIGFuZCBzdW1tYXJ5IGp1c3QgYXMKKyAgICAgICAgICAgICAgICB5b3Ugd291bGQgaGF2ZSBpZiB5b3UnZCBydW4gdGhlIHNhbWUgY29tbWFuZCBvbiB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3RyYWNpbmctYmxvY2staW8tdmlhLWZ0cmFjZSc+CisgICAgICAgICAgICA8dGl0bGU+VHJhY2luZyBCbG9jayBJL08gdmlhICdmdHJhY2UnPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXQncyBhbHNvIHBvc3NpYmxlIHRvIHRyYWNlIGJsb2NrIEkvTyB1c2luZyBvbmx5CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGhlLXRyYWNlLWV2ZW50cy1zdWJzeXN0ZW0nPnRyYWNlIGV2ZW50cyBzdWJzeXN0ZW08L2xpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGNhbiBiZSB1c2VmdWwgZm9yIGNhc3VhbCB0cmFjaW5nCisgICAgICAgICAgICAgICAgaWYgeW91IGRvbid0IHdhbnQgdG8gYm90aGVyIGRlYWxpbmcgd2l0aCB0aGUgdXNlcnNwYWNlIHRvb2xzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBlbmFibGUgdHJhY2luZyBmb3IgYSBnaXZlbiBkZXZpY2UsIHVzZQorICAgICAgICAgICAgICAgIC9zeXMvYmxvY2sveHh4L3RyYWNlL2VuYWJsZSwgd2hlcmUgeHh4IGlzIHRoZSBkZXZpY2UgbmFtZS4KKyAgICAgICAgICAgICAgICBUaGlzIGZvciBleGFtcGxlIGVuYWJsZXMgdHJhY2luZyBmb3IgL2Rldi9zZGM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcjIGVjaG8gMSA+IC9zeXMvYmxvY2svc2RjL3RyYWNlL2VuYWJsZQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSd2ZSBzZWxlY3RlZCB0aGUgZGV2aWNlKHMpIHlvdSB3YW50IHRvIHRyYWNlLAorICAgICAgICAgICAgICAgIHNlbGVjdGluZyB0aGUgJ2JsaycgdHJhY2VyIHdpbGwgdHVybiB0aGUgYmxrIHRyYWNlciBvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJvb3RAY3Jvd25iYXk6L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZyMgY2F0IGF2YWlsYWJsZV90cmFjZXJzCisgICAgIGJsayBmdW5jdGlvbl9ncmFwaCBmdW5jdGlvbiBub3AKKworICAgICByb290QGNyb3duYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcjIGVjaG8gYmxrID4gY3VycmVudF90cmFjZXIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRXhlY3V0ZSB0aGUgd29ya2xvYWQgeW91J3JlIGludGVyZXN0ZWQgaW46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QGNyb3duYmF5Oi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcjIGNhdCAvbWVkaWEvc2RjL3Rlc3RmaWxlLnR4dAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBbmQgbG9vayBhdCB0aGUgb3V0cHV0IChub3RlIGhlcmUgdGhhdCB3ZSdyZSB1c2luZworICAgICAgICAgICAgICAgICd0cmFjZV9waXBlJyBpbnN0ZWFkIG9mIHRyYWNlIHRvIGNhcHR1cmUgdGhpcyB0cmFjZSAtCisgICAgICAgICAgICAgICAgdGhpcyBhbGxvd3MgdXMgdG8gd2FpdCBhcm91bmQgb24gdGhlIHBpcGUgZm9yIGRhdGEgdG8KKyAgICAgICAgICAgICAgICBhcHBlYXIpOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIyBjYXQgdHJhY2VfcGlwZQorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMSAgMzAyMy4yNzYzNjE6ICAgOCwzMiAgIFEgICBSIDE2OTk4NDggKyA4IFtjYXRdCisgICAgICAgICAgICAgICAgIGNhdC0zNTg3ICBbMDAxXSBkLi4xICAzMDIzLjI3NjQxMDogICA4LDMyICAgbSAgIE4gY2ZxMzU4NyBhbGxvY2VkCisgICAgICAgICAgICAgICAgIGNhdC0zNTg3ICBbMDAxXSBkLi4xICAzMDIzLjI3NjQxNTogICA4LDMyICAgRyAgIFIgMTY5OTg0OCArIDggW2NhdF0KKyAgICAgICAgICAgICAgICAgY2F0LTM1ODcgIFswMDFdIGQuLjEgIDMwMjMuMjc2NDI0OiAgIDgsMzIgICBQICAgTiBbY2F0XQorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMiAgMzAyMy4yNzY0MzI6ICAgOCwzMiAgIEkgICBSIDE2OTk4NDggKyA4IFtjYXRdCisgICAgICAgICAgICAgICAgIGNhdC0zNTg3ICBbMDAxXSBkLi4xICAzMDIzLjI3NjQzOTogICA4LDMyICAgbSAgIE4gY2ZxMzU4NyBpbnNlcnRfcmVxdWVzdAorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMSAgMzAyMy4yNzY0NDU6ICAgOCwzMiAgIG0gICBOIGNmcTM1ODcgYWRkX3RvX3JyCisgICAgICAgICAgICAgICAgIGNhdC0zNTg3ICBbMDAxXSBkLi4yICAzMDIzLjI3NjQ1NDogICA4LDMyICAgVSAgIE4gW2NhdF0gMQorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMSAgMzAyMy4yNzY0NjQ6ICAgOCwzMiAgIG0gICBOIGNmcSB3b3JrbG9hZCBzbGljZToxNTAKKyAgICAgICAgICAgICAgICAgY2F0LTM1ODcgIFswMDFdIGQuLjEgIDMwMjMuMjc2NDcxOiAgIDgsMzIgICBtICAgTiBjZnEzNTg3IHNldF9hY3RpdmUgd2xfcHJpbzowIHdsX3R5cGU6MgorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMSAgMzAyMy4yNzY0Nzg6ICAgOCwzMiAgIG0gICBOIGNmcTM1ODcgZmlmbz0gIChudWxsKQorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMSAgMzAyMy4yNzY0ODM6ICAgOCwzMiAgIG0gICBOIGNmcTM1ODcgZGlzcGF0Y2hfaW5zZXJ0CisgICAgICAgICAgICAgICAgIGNhdC0zNTg3ICBbMDAxXSBkLi4xICAzMDIzLjI3NjQ5MDogICA4LDMyICAgbSAgIE4gY2ZxMzU4NyBkaXNwYXRjaGVkIGEgcmVxdWVzdAorICAgICAgICAgICAgICAgICBjYXQtMzU4NyAgWzAwMV0gZC4uMSAgMzAyMy4yNzY0OTc6ICAgOCwzMiAgIG0gICBOIGNmcTM1ODcgYWN0aXZhdGUgcnEsIGRydj0xCisgICAgICAgICAgICAgICAgIGNhdC0zNTg3ICBbMDAxXSBkLi4yICAzMDIzLjI3NjUwMDogICA4LDMyICAgRCAgIFIgMTY5OTg0OCArIDggW2NhdF0KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQW5kIHRoaXMgdHVybnMgb2ZmIHRyYWNpbmcgZm9yIHRoZSBzcGVjaWZpZWQgZGV2aWNlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcm9vdEBjcm93bmJheTovc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nIyBlY2hvIDAgPiAvc3lzL2Jsb2NrL3NkYy90cmFjZS9lbmFibGUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nYmxrdHJhY2UtZG9jdW1lbnRhdGlvbic+CisgICAgICAgIDx0aXRsZT5Eb2N1bWVudGF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9ubGluZSB2ZXJzaW9ucyBvZiB0aGUgbWFuIHBhZ2VzIGZvciB0aGUgY29tbWFuZHMgZGlzY3Vzc2VkCisgICAgICAgICAgICBpbiB0aGlzIHNlY3Rpb24gY2FuIGJlIGZvdW5kIGhlcmU6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSdodHRwOi8vbGludXguZGllLm5ldC9tYW4vOC9ibGt0cmFjZSc+aHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzgvYmxrdHJhY2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0naHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvYmxrcGFyc2UnPmh0dHA6Ly9saW51eC5kaWUubmV0L21hbi8xL2Jsa3BhcnNlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHA6Ly9saW51eC5kaWUubmV0L21hbi84L2J0cmFjZSc+aHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzgvYnRyYWNlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGFib3ZlIG1hbnBhZ2VzLCBhbG9uZyB3aXRoIG1hbnBhZ2VzIGZvciB0aGUgb3RoZXIKKyAgICAgICAgICAgIGJsa3RyYWNlIHV0aWxpdGllcyAoYnR0LCBibGtpb21vbiwgZXRjKSBjYW4gYmUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAvZG9jIGRpcmVjdG9yeSBvZiB0aGUgYmxrdHJhY2UgdG9vbHMgZ2l0IHJlcG86CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC5rZXJuZWwuZGsvYmxrdHJhY2UuZ2l0CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwucnN0CmluZGV4IDVlYzViOWUuLjJjOGZjZjMgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ4YmZiYTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCkBAIC0wLDAgKzEsMTgwIEBACis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGJvb2sgaWQ9J3Byb2ZpbGUtbWFudWFsJyBsYW5nPSdlbicKKyAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIgorICAgICAgeG1sbnM9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICAgICAgPgorICAgIDxib29raW5mbz4KKworICAgICAgICA8bWVkaWFvYmplY3Q+CisgICAgICAgICAgICA8aW1hZ2VvYmplY3Q+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSdmaWd1cmVzL3Byb2ZpbGUtdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisJCSAgWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsCisJCTwvdGl0bGU+CisKKyAgICAgICAgPGF1dGhvcmdyb3VwPgorICAgICAgICAgICAgPGF1dGhvcj4KKyAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDEzPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjc8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTQ8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTk8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICA8L3Jldmhpc3Rvcnk+CisKKyAgICA8Y29weXJpZ2h0PgorICAgICA8eWVhcj4mQ09QWVJJR0hUX1lFQVI7PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQgdW5kZXIKKyAgICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC91ay8iPgorICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5CisgICAgICAgICAgQ3JlYXRpdmUgQ29tbW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icHJvZmlsZS1tYW51YWwtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJwcm9maWxlLW1hbnVhbC1hcmNoLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icHJvZmlsZS1tYW51YWwtdXNhZ2UueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJwcm9maWxlLW1hbnVhbC1leGFtcGxlcy54bWwiLz4KKworPC9ib29rPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnJzdAppbmRleCA2OTg1MjgyLi4yZDJhYWFkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKgogRkFRCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjhmY2YzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbApAQCAtMCwwICsxLDgzNiBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdmYXEnPgorPHRpdGxlPkZBUTwvdGl0bGU+Cis8cWFuZGFzZXQ+CisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhvdyBkb2VzIFBva3kgZGlmZmVyIGZyb20gPHVsaW5rIHVybD0nJk9FX0hPTUVfVVJMOyc+T3BlbkVtYmVkZGVkPC91bGluaz4/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgdGVybSAiPGxpbmsgbGluaz0ncG9reSc+UG9reTwvbGluaz4iCisgICAgICAgICAgICAgICAgcmVmZXJzIHRvIHRoZSBzcGVjaWZpYyByZWZlcmVuY2UgYnVpbGQgc3lzdGVtIHRoYXQKKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcy4KKyAgICAgICAgICAgICAgICBQb2t5IGlzIGJhc2VkIG9uIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+CisgICAgICAgICAgICAgICAgYW5kIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGdlbmVyaWMgdGVybSB1c2VkIGhlcmUgZm9yIHRoZSBidWlsZCBzeXN0ZW0gaXMKKyAgICAgICAgICAgICAgICB0aGUgIk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGluIHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIFBva3kgaXMgY2xvc2VseSB0aWVkIHRvIE9wZW5FbWJlZGRlZCwgd2l0aAorICAgICAgICAgICAgICAgIGNoYW5nZXMgYWx3YXlzIGJlaW5nIG1lcmdlZCB0byBPRS1Db3JlIG9yIEJpdEJha2UgZmlyc3QgYmVmb3JlIGJlaW5nIHB1bGxlZCBiYWNrCisgICAgICAgICAgICAgICAgaW50byBQb2t5LgorICAgICAgICAgICAgICAgIFRoaXMgcHJhY3RpY2UgYmVuZWZpdHMgYm90aCBwcm9qZWN0cyBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhIGlkPSdmYXEtbm90LW1lZXRpbmctcmVxdWlyZW1lbnRzJz4KKyAgICAgICAgICAgICAgICBNeSBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCB0aGUKKyAgICAgICAgICAgICAgICByZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBJIGRvIG5vdCBoYXZlIFB5dGhvbiAzLjUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgIENhbiBJIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdD8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoZSByZXF1aXJlZCB0b29scyBvbiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBzeXN0ZW0gYSBjb3VwbGUgZGlmZmVyZW50IHdheXMgKGkuZS4gYnVpbGRpbmcgYSB0YXJiYWxsIG9yCisgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcgYSB0YXJiYWxsKS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3Igc3RlcHMgb24gaG93IHRvIHVwZGF0ZSB5b3VyIGJ1aWxkIHRvb2xzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSG93IGNhbiB5b3UgY2xhaW0gUG9reSAvIE9wZW5FbWJlZGRlZC1Db3JlIGlzIHN0YWJsZT8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBhcmVhcyB0aGF0IGhlbHAgd2l0aCBzdGFiaWxpdHk7CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHRlYW0ga2VlcHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+IHNtYWxsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZm9jdXNlZCwgY29udGFpbmluZyBhcm91bmQgODMwIHJlY2lwZXMgYXMgb3Bwb3NlZCB0byB0aGUgdGhvdXNhbmRzCisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgaW4gb3RoZXIgT3BlbkVtYmVkZGVkIGNvbW11bml0eSBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBLZWVwaW5nIGl0IHNtYWxsIG1ha2VzIGl0IGVhc3kgdG8gdGVzdCBhbmQgbWFpbnRhaW4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgWW9jdG8gUHJvamVjdCB0ZWFtIHJ1bnMgbWFudWFsIGFuZCBhdXRvbWF0ZWQgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIGEgc21hbGwsIGZpeGVkIHNldCBvZiByZWZlcmVuY2UgaGFyZHdhcmUgYXMgd2VsbCBhcyBlbXVsYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYW4gYXV0b2J1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBwcm92aWRlcyBjb250aW51b3VzIGJ1aWxkIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhvdyBkbyBJIGdldCBzdXBwb3J0IGZvciBteSBib2FyZCBhZGRlZCB0byB0aGUgWW9jdG8gUHJvamVjdD8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIGFuIGFkZGl0aW9uYWwgYm9hcmQgaXMgYWRkZWQgYnkgY3JlYXRpbmcgYQorICAgICAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllciBmb3IgaXQuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIEJTUCBsYXllciwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVzdWFsbHksIGlmIHRoZSBib2FyZCBpcyBub3QgY29tcGxldGVseSBleG90aWMsIGFkZGluZyBzdXBwb3J0IGluCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgaXMgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFyZSB0aGVyZSBhbnkgcHJvZHVjdHMgYnVpbHQgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc29mdHdhcmUgcnVubmluZyBvbiB0aGUgPHVsaW5rIHVybD0naHR0cDovL3Zlcm5pZXIuY29tL2xhYnF1ZXN0Lyc+VmVybmllciBMYWJRdWVzdDwvdWxpbms+CisgICAgICAgICAgICAgICAgaXMgYnVpbHQgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgU2VlIHRoZSA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZlcm5pZXIuY29tL3Byb2R1Y3RzL2ludGVyZmFjZXMvbGFicS8nPlZlcm5pZXIgTGFiUXVlc3Q8L3VsaW5rPgorICAgICAgICAgICAgICAgIHdlYnNpdGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHByZS1wcm9kdWN0aW9uIGRldmljZXMgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QgdGVhbQorICAgICAgICAgICAgICAgIGFubm91bmNlcyB0aGVtIGFzIHNvb24gYXMgdGhleSBhcmUgcmVsZWFzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGF0IGRvZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvZHVjZSBhcyBvdXRwdXQ/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHlvdSBjYW4gdXNlIHRoZSBzYW1lIHNldCBvZiByZWNpcGVzIHRvIGNyZWF0ZSBvdXRwdXQgb2YKKyAgICAgICAgICAgICAgICB2YXJpb3VzIGZvcm1hdHMsIHRoZSBvdXRwdXQgb2YgYW4gT3BlbkVtYmVkZGVkIGJ1aWxkIGRlcGVuZHMgb24KKyAgICAgICAgICAgICAgICBob3cgeW91IHN0YXJ0IGl0LgorICAgICAgICAgICAgICAgIFVzdWFsbHksIHRoZSBvdXRwdXQgaXMgYSBmbGFzaGFibGUgaW1hZ2UgcmVhZHkgZm9yIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICBkZXZpY2UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIb3cgZG8gSSBhZGQgbXkgcGFja2FnZSB0byB0aGUgWW9jdG8gUHJvamVjdD8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGFkZCBhIHBhY2thZ2UsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIEJpdEJha2UgcmVjaXBlLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGEgQml0QmFrZSByZWNpcGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS13cml0aW5nLWEtbmV3LXJlY2lwZSc+V3JpdGluZyBhIE5ldyBSZWNpcGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERvIEkgaGF2ZSB0byByZWZsYXNoIG15IGVudGlyZSBib2FyZCB3aXRoIGEgbmV3IFlvY3RvIFByb2plY3QgaW1hZ2Ugd2hlbiByZWNvbXBpbGluZworICAgICAgICAgICAgICAgIGEgcGFja2FnZT8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBidWlsZCBwYWNrYWdlcyBpbiB2YXJpb3VzCisgICAgICAgICAgICAgICAgZm9ybWF0cyBzdWNoIGFzIElQSyBmb3IgT1BLRywgRGViaWFuIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5kZWI8L2ZpbGVuYW1lPiksIG9yIFJQTS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gdXBncmFkZSB0aGUgcGFja2FnZXMgdXNpbmcgdGhlIHBhY2thZ2UgdG9vbHMgb24KKyAgICAgICAgICAgICAgICB0aGUgZGV2aWNlLCBtdWNoIGxpa2Ugb24gYSBkZXNrdG9wIGRpc3RyaWJ1dGlvbiBzdWNoIGFzCisgICAgICAgICAgICAgICAgVWJ1bnR1IG9yIEZlZG9yYS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBwYWNrYWdlIG1hbmFnZW1lbnQgb24gdGhlIHRhcmdldCBpcyBlbnRpcmVseSBvcHRpb25hbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEkgc2VlIHRoZSBlcnJvciAnPGZpbGVuYW1lPmNobW9kOiBYWFhYWCBuZXcgcGVybWlzc2lvbnMgYXJlIHIteHJ3eHJ3eCwgbm90IHIteHIteHIteDwvZmlsZW5hbWU+Jy4KKyAgICAgICAgICAgICAgICBXaGF0IGlzIHdyb25nPworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGFyZSBwcm9iYWJseSBydW5uaW5nIHRoZSBidWlsZCBvbiBhbiBOVEZTIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgVXNlIDxmaWxlbmFtZT5leHQyPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5leHQzPC9maWxlbmFtZT4sIG9yIDxmaWxlbmFtZT5leHQ0PC9maWxlbmFtZT4gaW5zdGVhZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCis8IS0tICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIb3cgZG8gSSBtYWtlIHRoZSBZb2N0byBQcm9qZWN0IHdvcmsgaW4gUkhFTC9DZW50T1M/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBnZXQgdGhlIFlvY3RvIFByb2plY3Qgd29ya2luZyB1bmRlciBSSEVML0NlbnRPUyA1LjEgeW91IG5lZWQgdG8gZmlyc3QKKyAgICAgICAgICAgICAgICBpbnN0YWxsIHNvbWUgcmVxdWlyZWQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgVGhlIHN0YW5kYXJkIENlbnRPUyBwYWNrYWdlcyBuZWVkZWQgYXJlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4iRGV2ZWxvcG1lbnQgdG9vbHMiIChzZWxlY3RlZCBkdXJpbmcgaW5zdGFsbGF0aW9uKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnRleGkyaHRtbDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29tcGF0LWdjYy0zNDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgT24gdG9wIG9mIHRoZXNlLCB5b3UgbmVlZCB0aGUgZm9sbG93aW5nIGV4dGVybmFsIHBhY2thZ2VzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uLXNxbGl0ZTI8L2ZpbGVuYW1lPiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZGFnLndpZWVycy5jb20vcnBtL3BhY2thZ2VzL3B5dGhvbi1zcWxpdGUyLyc+REFHIHJlcG9zaXRvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aGVscDJtYW48L2ZpbGVuYW1lPiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vY2VudG9zLmthcmFuLm9yZy9lbDQvZXh0cmFzL3N0YWJsZS94ODZfNjQvUlBNUy9yZXBvZGF0YS9yZXBvdmlldy9oZWxwMm1hbi0wLTEuMzMuMS0yLmh0bWwnPkthcmFuIHJlcG9zaXRvcnk8L3VsaW5rPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHRoZXNlIHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdpbGwgYmUgYWJsZQorICAgICAgICAgICAgICAgIHRvIGJ1aWxkIHN0YW5kYXJkIGltYWdlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGVyZSBtaWdodCBiZSBhIHByb2JsZW0gd2l0aCB0aGUgUUVNVSBlbXVsYXRvciBzZWdmYXVsdGluZy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGVpdGhlciBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIGJpbmFyeSBsb2NhbGVzIGJ5IHNldHRpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT04nPkVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT048L2xpbms+CisgICAgICAgICAgICAgICAgPC9maWxlbmFtZT4gdG8gIjAiIG9yIGJ5IHJlbW92aW5nIHRoZSA8ZmlsZW5hbWU+bGludXgtMi42LWV4ZWNzaGllbGQucGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZyb20gdGhlIGtlcm5lbCBhbmQgcmVidWlsZGluZyBpdCBzaW5jZSB0aGF0IGlzIHRoZSBwYXRjaCB0aGF0IGNhdXNlcyB0aGUgcHJvYmxlbXMgd2l0aCBRRU1VLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gZGlzdHJpYnV0aW9ucyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgdXNlcyBkdXJpbmcgdmFsaWRhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9EaXN0cmlidXRpb25fU3VwcG9ydCc+RGlzdHJpYnV0aW9uIFN1cHBvcnQ8L3VsaW5rPgorICAgICAgICAgICAgICAgIFdpa2kgcGFnZS48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG5vdGVzIGFib3V0IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IG9uIGEgUkhFTCA0LWJhc2VkCisgICAgICAgICAgICAgICAgaG9zdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWlsZGluZ09uUkhFTDQnPkJ1aWxkaW5nIG9uIFJIRUw0PC91bGluaz4KKyAgICAgICAgICAgICAgICBXaWtpIHBhZ2UuPC9wYXJhPgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+IC0tPgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEkgc2VlIGxvdHMgb2YgNDA0IHJlc3BvbnNlcyBmb3IgZmlsZXMgd2hlbiB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGlzIHRyeWluZyB0byBkb3dubG9hZCBzb3VyY2VzLgorICAgICAgICAgICAgICAgIElzIHNvbWV0aGluZyB3cm9uZz8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE5vdGhpbmcgaXMgd3JvbmcuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2hlY2tzIGFueSBjb25maWd1cmVkIHNvdXJjZSBtaXJyb3JzIGJlZm9yZSBkb3dubG9hZGluZworICAgICAgICAgICAgICAgIGZyb20gdGhlIHVwc3RyZWFtIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBkb2VzIHRoaXMgc2VhcmNoaW5nIGZvciBib3RoIHNvdXJjZSBhcmNoaXZlcyBhbmQKKyAgICAgICAgICAgICAgICBwcmUtY2hlY2tlZCBvdXQgdmVyc2lvbnMgb2YgU0NNLW1hbmFnZWQgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgVGhlc2UgY2hlY2tzIGhlbHAgaW4gbGFyZ2UgaW5zdGFsbGF0aW9ucyBiZWNhdXNlIGl0IGNhbiByZWR1Y2UgbG9hZCBvbiB0aGUgU0NNIHNlcnZlcnMKKyAgICAgICAgICAgICAgICB0aGVtc2VsdmVzLgorICAgICAgICAgICAgICAgIFRoZSBhZGRyZXNzIGFib3ZlIGlzIG9uZSBvZiB0aGUgZGVmYXVsdCBtaXJyb3JzIGNvbmZpZ3VyZWQgaW50byB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiBhbiB1cHN0cmVhbSBzb3VyY2UgZGlzYXBwZWFycywgdGhlIHRlYW0KKyAgICAgICAgICAgICAgICBjYW4gcGxhY2Ugc291cmNlcyB0aGVyZSBzbyBidWlsZHMgY29udGludWUgdG8gd29yay4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEkgaGF2ZSBtYWNoaW5lLXNwZWNpZmljIGRhdGEgaW4gYSBwYWNrYWdlIGZvciBvbmUgbWFjaGluZSBvbmx5IGJ1dCB0aGUgcGFja2FnZSBpcworICAgICAgICAgICAgICAgIGJlaW5nIG1hcmtlZCBhcyBtYWNoaW5lLXNwZWNpZmljIGluIGFsbCBjYXNlcywgaG93IGRvIEkgcHJldmVudCB0aGlzPworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU2V0IDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSV9PVkVSUklERVNfUEFDS0FHRV9BUkNIJz5TUkNfVVJJX09WRVJSSURFU19QQUNLQUdFX0FSQ0g8L2xpbms+CisgICAgICAgICAgICAgICAgPC9maWxlbmFtZT4gPSAiMCIgaW4gdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGJ1dCBtYWtlIHN1cmUgdGhlIHBhY2thZ2UgaXMKKyAgICAgICAgICAgICAgICBtYW51YWxseSBtYXJrZWQgYXMKKyAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIGZvciB0aGUgY2FzZSB0aGF0IG5lZWRzIGl0LgorICAgICAgICAgICAgICAgIFRoZSBjb2RlIHRoYXQgaGFuZGxlcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJX09WRVJSSURFU19QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPiBpcyBpbgorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYSBpZD0naS1hbS1iZWhpbmQtYS1maXJld2FsbC1hbmQtbmVlZC10by11c2UtYS1wcm94eS1zZXJ2ZXInPgorICAgICAgICAgICAgICAgIEknbSBiZWhpbmQgYSBmaXJld2FsbCBhbmQgbmVlZCB0byB1c2UgYSBwcm94eSBzZXJ2ZXIuIEhvdyBkbyBJIGRvIHRoYXQ/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBNb3N0IHNvdXJjZSBmZXRjaGluZyBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBkb25lCisgICAgICAgICAgICAgICAgYnkgPGZpbGVuYW1lPndnZXQ8L2ZpbGVuYW1lPiBhbmQgeW91IHRoZXJlZm9yZSBuZWVkIHRvIHNwZWNpZnkKKyAgICAgICAgICAgICAgICB0aGUgcHJveHkgc2V0dGluZ3MgaW4gYSA8ZmlsZW5hbWU+LndnZXRyYzwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggY2FuIGJlIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkgaWYgeW91IGFyZSBhIHNpbmdsZSB1c2VyCisgICAgICAgICAgICAgICAgb3IgY2FuIGJlIGluIDxmaWxlbmFtZT4vdXNyL2xvY2FsL2V0Yy93Z2V0cmM8L2ZpbGVuYW1lPiBhcworICAgICAgICAgICAgICAgIGEgZ2xvYmFsIHVzZXIgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBhcHBsaWNhYmxlIGNvZGUgZm9yIHNldHRpbmcgdmFyaW91cyBwcm94eQorICAgICAgICAgICAgICAgIHR5cGVzIGluIHRoZSA8ZmlsZW5hbWU+LndnZXRyYzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlc2Ugc2V0dGluZ3MgYXJlIGRpc2FibGVkIHdpdGggY29tbWVudHMuCisgICAgICAgICAgICAgICAgVG8gdXNlIHRoZW0sIHJlbW92ZSB0aGUgY29tbWVudHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0IHByb3hpZXMgZm9yIFdnZXQgdG8gdXNlIGZvciBodHRwLCBodHRwcywgYW5kIGZ0cC4KKyAgICAgIyBUaGV5IHdpbGwgb3ZlcnJpZGUgdGhlIHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgI2h0dHBzX3Byb3h5ID0gaHR0cDovL3Byb3h5LnlveW9keW5lLmNvbToxODAyMy8KKyAgICAgI2h0dHBfcHJveHkgPSBodHRwOi8vcHJveHkueW95b2R5bmUuY29tOjE4MDIzLworICAgICAjZnRwX3Byb3h5ID0gaHR0cDovL3Byb3h5LnlveW9keW5lLmNvbToxODAyMy8KKworICAgICAjIElmIHlvdSBkbyBub3Qgd2FudCB0byB1c2UgcHJveHkgYXQgYWxsLCBzZXQgdGhpcyB0byBvZmYuCisgICAgICN1c2VfcHJveHkgPSBvbgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBhbHNvIGluY2x1ZGVzIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvc2l0ZS5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgdGhhdAorICAgICAgICAgICAgICAgIHNob3dzIGhvdyB0byBjb25maWd1cmUgQ1ZTIGFuZCBHaXQgcHJveHkgc2VydmVycyBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCB2YXJpb3VzIHByb3h5IHR5cGVzIGFuZAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHByb3h5IHNlcnZlcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1dvcmtpbmdfQmVoaW5kX2FfTmV0d29ya19Qcm94eSc+V29ya2luZyBCZWhpbmQgYSBOZXR3b3JrIFByb3h5PC91bGluaz4iCisgICAgICAgICAgICAgICAgV2lraSBwYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGFuZCA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+PworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4qLW5hdGl2ZTwvZmlsZW5hbWU+IHRhcmdldHMgYXJlIGRlc2lnbmVkIHRvIHJ1biBvbiB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgYmVpbmcgdXNlZCBmb3IgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGFyZSB1c3VhbGx5IHRvb2xzIHRoYXQgYXJlIG5lZWRlZCB0byBhc3Npc3QgdGhlIGJ1aWxkIGluIHNvbWUgd2F5IHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4sIHdoaWNoIGlzIHVzZWQgdG8gYXBwbHkgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICBUaGUgbm9uLW5hdGl2ZSB2ZXJzaW9uIGlzIHRoZSBvbmUgdGhhdCBydW5zIG9uIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSSdtIHNlZWluZyByYW5kb20gYnVpbGQgZmFpbHVyZXMuIEhlbHA/IQorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgdGhlIHNhbWUgYnVpbGQgaXMgZmFpbGluZyBpbiB0b3RhbGx5IGRpZmZlcmVudCBhbmQgcmFuZG9tCisgICAgICAgICAgICAgICAgd2F5cywgdGhlIG1vc3QgbGlrZWx5IGV4cGxhbmF0aW9uIGlzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgaGFyZHdhcmUgeW91IGFyZSBydW5uaW5nIHRoZSBidWlsZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgaGFzIHNvbWUgcHJvYmxlbS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBhcmUgcnVubmluZyB0aGUgYnVpbGQgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxpemF0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSB2aXJ0dWFsaXphdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmFibHkgaGFzIGJ1Z3MuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvY2Vzc2VzIGEgbWFzc2l2ZSBhbW91bnQgb2YKKyAgICAgICAgICAgICAgICBkYXRhIHRoYXQgY2F1c2VzIGxvdHMgb2YgbmV0d29yaywgZGlzayBhbmQgQ1BVIGFjdGl2aXR5IGFuZAorICAgICAgICAgICAgICAgIGlzIHNlbnNpdGl2ZSB0byBldmVuIHNpbmdsZS1iaXQgZmFpbHVyZXMgaW4gYW55IG9mIHRoZXNlIGFyZWFzLgorICAgICAgICAgICAgICAgIFRydWUgcmFuZG9tIGZhaWx1cmVzIGhhdmUgYWx3YXlzIGJlZW4gdHJhY2VkIGJhY2sgdG8gaGFyZHdhcmUKKyAgICAgICAgICAgICAgICBvciB2aXJ0dWFsaXphdGlvbiBpc3N1ZXMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIEkgdHJ5IHRvIGJ1aWxkIGEgbmF0aXZlIHJlY2lwZSwgdGhlIGJ1aWxkIGZhaWxzIHdpdGggPGZpbGVuYW1lPmljb252Lmg8L2ZpbGVuYW1lPiBwcm9ibGVtcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBnZXQgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IGluZGljYXRlcyBHTlUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliaWNvbnY8L2ZpbGVuYW1lPiBpcyBub3QgaW4gdXNlIGJ1dAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pY29udi5oPC9maWxlbmFtZT4gaGFzIGJlZW4gaW5jbHVkZWQgZnJvbQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJpY29udjwvZmlsZW5hbWU+LCB5b3UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgICAgICAgICB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIGhlYWRlciBmaWxlCisgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPi91c3IvbG9jYWwvaW5jbHVkZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgI2Vycm9yIEdOVSBsaWJpY29udiBub3QgaW4gdXNlIGJ1dCBpbmNsdWRlZCBpY29udi5oIGlzIGZyb20gbGliaWNvbnYKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSWYgeW91IGZpbmQgYSBwcmV2aW91c2x5IGluc3RhbGxlZCBmaWxlLCB5b3Ugc2hvdWxkIGVpdGhlcgorICAgICAgICAgICAgICAgIHVuaW5zdGFsbCBpdCBvciB0ZW1wb3JhcmlseSByZW5hbWUgaXQgYW5kIHRyeSB0aGUgYnVpbGQgYWdhaW4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgaXNzdWUgaXMganVzdCBhIHNpbmdsZSBtYW5pZmVzdGF0aW9uIG9mICJzeXN0ZW0KKyAgICAgICAgICAgICAgICBsZWFrYWdlIiBpc3N1ZXMgY2F1c2VkIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBmaW5kcyBhbmQgdXNlcyBwcmV2aW91c2x5IGluc3RhbGxlZCBmaWxlcyBkdXJpbmcgYSBuYXRpdmUKKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgaXNzdWUgbWlnaHQgbm90IGJlIGxpbWl0ZWQgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWNvbnYuaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhhdCBsZWFrYWdlIGNhbm5vdCBvY2N1ciBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvaW5jbHVkZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0PC9maWxlbmFtZT4gbG9jYXRpb25zLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hhdCBkbyB3ZSBuZWVkIHRvIHNoaXAgZm9yIGxpY2Vuc2UgY29tcGxpYW5jZT8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBkaWZmaWN1bHQgcXVlc3Rpb24gYW5kIHlvdSBuZWVkIHRvIGNvbnN1bHQgeW91ciBsYXd5ZXIKKyAgICAgICAgICAgICAgICBmb3IgdGhlIGFuc3dlciBmb3IgeW91ciBzcGVjaWZpYyBjYXNlLgorICAgICAgICAgICAgICAgIEl0IGlzIHdvcnRoIGJlYXJpbmcgaW4gbWluZCB0aGF0IGZvciBHUEwgY29tcGxpYW5jZSwgdGhlcmUgbmVlZHMKKyAgICAgICAgICAgICAgICB0byBiZSBlbm91Z2ggaW5mb3JtYXRpb24gc2hpcHBlZCB0byBhbGxvdyBzb21lb25lIGVsc2UgdG8KKyAgICAgICAgICAgICAgICByZWJ1aWxkIGFuZCBwcm9kdWNlIHRoZSBzYW1lIGVuZCByZXN1bHQgeW91IGFyZSBzaGlwcGluZy4KKyAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIHNoYXJpbmcgdGhlIHNvdXJjZSBjb2RlLCBhbnkgcGF0Y2hlcyBhcHBsaWVkIHRvIGl0LAorICAgICAgICAgICAgICAgIGFuZCBhbHNvIGFueSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGF0IHBhY2thZ2UKKyAgICAgICAgICAgICAgICB3YXMgY29uZmlndXJlZCBhbmQgYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIGxpY2Vuc2luZyBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNsaWNlbnNpbmcnPkxpY2Vuc2luZzwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbAorICAgICAgICAgICAgICAgIGFuZCBhbHNvIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSG93IGRvIEkgZGlzYWJsZSB0aGUgY3Vyc29yIG9uIG15IHRvdWNoc2NyZWVuIGRldmljZT8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIGZvcm0gZmFjdG9yIGZpbGUgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtZmlsZWxheW91dC1taXNjLXJlY2lwZXMnPk1pc2NlbGxhbmVvdXMgQlNQLVNwZWNpZmljIFJlY2lwZSBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQorICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICAgICAgICAgIFNldCB0aGUgPGZpbGVuYW1lPkhBVkVfVE9VQ0hTQ1JFRU48L2ZpbGVuYW1lPiB2YXJpYWJsZSBlcXVhbCB0bworICAgICAgICAgICAgICAgIG9uZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSEFWRV9UT1VDSFNDUkVFTj0xCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSG93IGRvIEkgbWFrZSBzdXJlIGNvbm5lY3RlZCBuZXR3b3JrIGludGVyZmFjZXMgYXJlIGJyb3VnaHQgdXAgYnkgZGVmYXVsdD8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGludGVyZmFjZXMgZmlsZSBwcm92aWRlZCBieSB0aGUgbmV0YmFzZSByZWNpcGUgZG9lcyBub3QKKyAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGJyaW5nIHVwIG5ldHdvcmsgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgICAgICBUaGVyZWZvcmUsIHlvdSB3aWxsIG5lZWQgdG8gYWRkIGEgQlNQLXNwZWNpZmljIG5ldGJhc2UgdGhhdCBpbmNsdWRlcyBhbiBpbnRlcmZhY2VzCisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtZmlsZWxheW91dC1taXNjLXJlY2lwZXMnPk1pc2NlbGxhbmVvdXMgQlNQLVNwZWNpZmljIFJlY2lwZSBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQorICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyB0aGVzZSB0eXBlcyBvZgorICAgICAgICAgICAgICAgIG1pc2NlbGxhbmVvdXMgcmVjaXBlIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFkZCB0aGUgZm9sbG93aW5nIGZpbGVzIHRvIHlvdXIgbGF5ZXI6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLU1BQ0hJTkUvcmVjaXBlcy1ic3AvbmV0YmFzZS9uZXRiYXNlL01BQ0hJTkUvaW50ZXJmYWNlcworICAgICBtZXRhLU1BQ0hJTkUvcmVjaXBlcy1ic3AvbmV0YmFzZS9uZXRiYXNlXzUuMC5iYmFwcGVuZAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhvdyBkbyBJIGNyZWF0ZSBpbWFnZXMgd2l0aCBtb3JlIGZyZWUgc3BhY2U/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIGltYWdlcworICAgICAgICAgICAgICAgIHRoYXQgYXJlIDEuMyB0aW1lcyB0aGUgc2l6ZSBvZiB0aGUgcG9wdWxhdGVkIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICBUbyBhZmZlY3QgdGhlIGltYWdlIHNpemUsIHlvdSBuZWVkIHRvIHNldCB2YXJpb3VzCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbWFnZSBTaXplOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGU19TSVpFJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTX1NJWkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGRlZmluZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgaW4gS2J5dGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBkZXRlcm1pbmVzIHRoZSBzaXplIGJ5IHRha2luZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50IHRoZSBpbml0aWFsIHJvb3QgZmlsZXN5c3RlbSBzaXplIGJlZm9yZSBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgc3VjaCBhcyByZXF1ZXN0ZWQgc2l6ZSBmb3IgdGhlIGltYWdlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYW55IHJlcXVlc3RlZCBhZGRpdGlvbmFsIGZyZWUgZGlzayBzcGFjZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGltYWdlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk92ZXJoZWFkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfT1ZFUkhFQURfRkFDVE9SJz48ZmlsZW5hbWU+SU1BR0VfT1ZFUkhFQURfRkFDVE9SPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZWZpbmUgdGhlIG11bHRpcGxpZXIgdGhhdCB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWVzIHRvIHRoZSBpbml0aWFsIGltYWdlIHNpemUsIHdoaWNoIGlzIDEuMyBieQorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BZGRpdGlvbmFsIEZyZWUgU3BhY2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UnPjxmaWxlbmFtZT5JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGFkZCBhZGRpdGlvbmFsIGZyZWUgc3BhY2UgdG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBhZGRzIHRoaXMgc3BhY2UgdG8gdGhlIGltYWdlIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBkZXRlcm1pbmVzIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX1JPT1RGU19TSVpFPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoeSBkb24ndCB5b3Ugc3VwcG9ydCBkaXJlY3RvcmllcyB3aXRoIHNwYWNlcyBpbiB0aGUgcGF0aG5hbWVzPworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgdHJpZWQgdG8gZG8gdGhpcyBiZWZvcmUgYnV0IHRvbworICAgICAgICAgICAgICAgIG1hbnkgb2YgdGhlIHRvb2xzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRlcGVuZHMgb24sCisgICAgICAgICAgICAgICAgc3VjaCBhcyA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwgYnJlYWsgd2hlbiB0aGV5IGZpbmQKKyAgICAgICAgICAgICAgICBzcGFjZXMgaW4gcGF0aG5hbWVzLgorICAgICAgICAgICAgICAgIFVudGlsIHRoYXQgc2l0dWF0aW9uIGNoYW5nZXMsIHRoZSB0ZWFtIHdpbGwgbm90IHN1cHBvcnQgc3BhY2VzCisgICAgICAgICAgICAgICAgaW4gcGF0aG5hbWVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSG93IGRvIEkgdXNlIGFuIGV4dGVybmFsIHRvb2xjaGFpbj8KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9xdWVzdGlvbj4KKyAgICAgICAgPGFuc3dlcj4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSB0b29sY2hhaW4gY29uZmlndXJhdGlvbiBpcyB2ZXJ5IGZsZXhpYmxlIGFuZCBjdXN0b21pemFibGUuCisgICAgICAgICAgICAgICAgSXQgaXMgcHJpbWFyaWx5IGNvbnRyb2xsZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRDTU9ERSc+VENNT0RFPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBjb250cm9scyB3aGljaCA8ZmlsZW5hbWU+dGNtb2RlLSouaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIHRvIGluY2x1ZGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbgorICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiA8ZmlsZW5hbWU+VENNT0RFPC9maWxlbmFtZT4gaXMgImRlZmF1bHQiLAorICAgICAgICAgICAgICAgIHdoaWNoIHRlbGxzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHVzZSBpdHMgaW50ZXJuYWxseQorICAgICAgICAgICAgICAgIGJ1aWx0IHRvb2xjaGFpbiAoaS5lLiA8ZmlsZW5hbWU+dGNtb2RlLWRlZmF1bHQuaW5jPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIG90aGVyIHBhdHRlcm5zIGFyZSBhY2NlcHRlZC4KKyAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCAiZXh0ZXJuYWwtKiIgcmVmZXJzIHRvIGV4dGVybmFsIHRvb2xjaGFpbnMuCisgICAgICAgICAgICAgICAgT25lIGV4YW1wbGUgaXMgdGhlIFNvdXJjZXJ5IEcrKyBUb29sY2hhaW4uCisgICAgICAgICAgICAgICAgVGhlIHN1cHBvcnQgZm9yIHRoaXMgdG9vbGNoYWluIHJlc2lkZXMgaW4gdGhlIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc291cmNlcnk8L2ZpbGVuYW1lPiBsYXllciBhdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXRodWIuY29tL01lbnRvckVtYmVkZGVkL21ldGEtc291cmNlcnkvJz48L3VsaW5rPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIHRvb2xjaGFpbiBjb25maWd1cmF0aW9uLCB5b3UgYWxzbyBuZWVkIGEKKyAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHRvb2xjaGFpbiByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBmaWxlIG5lZWRzIHRvIHBhY2thZ2UgdXAgYW55IHByZS1idWlsdCBvYmplY3RzIGluCisgICAgICAgICAgICAgICAgdGhlIHRvb2xjaGFpbiBzdWNoIGFzIDxmaWxlbmFtZT5saWJnY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlic3RkY2MrKzwvZmlsZW5hbWU+LCBhbnkgbG9jYWxlcywgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9hbnN3ZXI+CisgICAgPC9xYW5kYWVudHJ5PgorCisgICAgPHFhbmRhZW50cnk+CisgICAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgICAgIDxwYXJhIGlkPSdob3ctZG9lcy10aGUteW9jdG8tcHJvamVjdC1vYnRhaW4tc291cmNlLWNvZGUtYW5kLXdpbGwtaXQtd29yay1iZWhpbmQtbXktZmlyZXdhbGwtb3ItcHJveHktc2VydmVyJz4KKyAgICAgICAgICAgICAgICBIb3cgZG9lcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBvYnRhaW4gc291cmNlIGNvZGUgYW5kCisgICAgICAgICAgICAgICAgd2lsbCBpdCB3b3JrIGJlaGluZCBteSBmaXJld2FsbCBvciBwcm94eSBzZXJ2ZXI/CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvcXVlc3Rpb24+CisgICAgICAgIDxhbnN3ZXI+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgd2F5IHRoZSBidWlsZCBzeXN0ZW0gb2J0YWlucyBzb3VyY2UgY29kZSBpcyBoaWdobHkKKyAgICAgICAgICAgICAgICBjb25maWd1cmFibGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZXR1cCB0aGUgYnVpbGQgc3lzdGVtIHRvIGdldCBzb3VyY2UgY29kZSBpbiBtb3N0CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRzIGlmIEhUVFAgdHJhbnNwb3J0IGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4gdGhlIGJ1aWxkIHN5c3RlbSBzZWFyY2hlcyBmb3Igc291cmNlIGNvZGUsIGl0IGZpcnN0CisgICAgICAgICAgICAgICAgdHJpZXMgdGhlIGxvY2FsIGRvd25sb2FkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBJZiB0aGF0IGxvY2F0aW9uIGZhaWxzLCBQb2t5IHRyaWVzCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSBzb3VyY2UsIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgaW4gdGhhdCBvcmRlci4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzc3VtaW5nIHlvdXIgZGlzdHJpYnV0aW9uIGlzICJwb2t5IiwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSB1c2VzIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT4gYnkgZGVmYXVsdCBmb3IgU0NNLWJhc2VkCisgICAgICAgICAgICAgICAgc291cmNlcywgdXBzdHJlYW1zIGZvciBub3JtYWwgdGFyYmFsbHMsIGFuZCB0aGVuIGZhbGxzIGJhY2sKKyAgICAgICAgICAgICAgICB0byBhIG51bWJlciBvZiBvdGhlciBtaXJyb3JzIGluY2x1ZGluZyB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIHNvdXJjZSBtaXJyb3IgaWYgdGhvc2UgZmFpbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHlvdSBjb3VsZCBhZGQgYSBzcGVjaWZpYyBzZXJ2ZXIgZm9yIHRoZQorICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBhdHRlbXB0IGJlZm9yZSBhbnkgb3RoZXJzIGJ5IGFkZGluZyBzb21ldGhpbmcKKyAgICAgICAgICAgICAgICBsaWtlIHRoZSBmb2xsb3dpbmcgdG8gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVNSVJST1JTX3ByZXBlbmQgPSAiXAorICAgICBnaXQ6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4gXAorICAgICBmdHA6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4gXAorICAgICBodHRwOi8vLiovLiogaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL3NvdXJjZXMvIFxuIFwKKyAgICAgaHR0cHM6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlc2UgY2hhbmdlcyBjYXVzZSB0aGUgYnVpbGQgc3lzdGVtIHRvIGludGVyY2VwdCBHaXQsIEZUUCwKKyAgICAgICAgICAgICAgICBIVFRQLCBhbmQgSFRUUFMgcmVxdWVzdHMgYW5kIGRpcmVjdCB0aGVtIHRvIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5odHRwOi8vPC9maWxlbmFtZT4gc291cmNlcyBtaXJyb3IuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiBVUkxzIHRvIHBvaW50IHRvCisgICAgICAgICAgICAgICAgbG9jYWwgZGlyZWN0b3JpZXMgb3IgbmV0d29yayBzaGFyZXMgYXMgd2VsbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gdGhlIHByZXZpb3VzIHRlY2huaXF1ZSwgdGhlc2Ugb3B0aW9ucyBhbHNvIGV4aXN0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfTk9fTkVUV09SSyA9ICIxIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIHN0YXRlbWVudCB0ZWxscyBCaXRCYWtlIHRvIGlzc3VlIGFuIGVycm9yIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICB0cnlpbmcgdG8gYWNjZXNzIHRoZSBJbnRlcm5ldC4KKyAgICAgICAgICAgICAgICBUaGlzIHRlY2huaXF1ZSBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZW5zdXJlIGNvZGUgYnVpbGRzCisgICAgICAgICAgICAgICAgb25seSBmcm9tIGxvY2FsIHNvdXJjZXMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFub3RoZXIgdGVjaG5pcXVlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfRkVUQ0hfUFJFTUlSUk9ST05MWSA9ICIxIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIHN0YXRlbWVudCBsaW1pdHMgdGhlIGJ1aWxkIHN5c3RlbSB0byBwdWxsaW5nIHNvdXJjZQorICAgICAgICAgICAgICAgIGZyb20gdGhlIDxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT4gb25seS4KKyAgICAgICAgICAgICAgICBBZ2FpbiwgdGhpcyB0ZWNobmlxdWUgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyBidWlsZHMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFub3RoZXIgdGVjaG5pcXVlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgc3RhdGVtZW50IHRlbGxzIHRoZSBidWlsZCBzeXN0ZW0gdG8gZ2VuZXJhdGUgbWlycm9yCisgICAgICAgICAgICAgICAgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgVGhpcyB0ZWNobmlxdWUgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIG1pcnJvciBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgSWYgbm90LCBob3dldmVyLCB0aGUgdGVjaG5pcXVlIGNhbiBzaW1wbHkgd2FzdGUgdGltZSBkdXJpbmcKKyAgICAgICAgICAgICAgICB0aGUgYnVpbGQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGaW5hbGx5LCBjb25zaWRlciBhbiBleGFtcGxlIHdoZXJlIHlvdSBhcmUgYmVoaW5kIGFuCisgICAgICAgICAgICAgICAgSFRUUC1vbmx5IGZpcmV3YWxsLgorICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBsb25nIGFzCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT4gc2VydmVyIGlzIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVNSVJST1JTX3ByZXBlbmQgPSAiXAorICAgICBmdHA6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4gXAorICAgICBodHRwOi8vLiovLiogaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL3NvdXJjZXMvIFxuIFwKKyAgICAgaHR0cHM6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4iCisgICAgIEJCX0ZFVENIX1BSRU1JUlJPUk9OTFkgPSAiMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlc2UgY2hhbmdlcyB3b3VsZCBjYXVzZSB0aGUgYnVpbGQgc3lzdGVtIHRvIHN1Y2Nlc3NmdWxseQorICAgICAgICAgICAgICAgIGZldGNoIHNvdXJjZSBvdmVyIEhUVFAgYW5kIGFueSBuZXR3b3JrIGFjY2Vzc2VzIHRvIGFueXRoaW5nCisgICAgICAgICAgICAgICAgb3RoZXIgdGhhbiB0aGUgPGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPiB3b3VsZCBmYWlsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBhbHNvIGhvbm9ycyB0aGUgc3RhbmRhcmQgc2hlbGwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPGZpbGVuYW1lPmh0dHBfcHJveHk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZnRwX3Byb3h5PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmh0dHBzX3Byb3h5PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGxfcHJveHk8L2ZpbGVuYW1lPiB0byByZWRpcmVjdCByZXF1ZXN0cyB0aHJvdWdoCisgICAgICAgICAgICAgICAgcHJveHkgc2VydmVycy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9Xb3JraW5nX0JlaGluZF9hX05ldHdvcmtfUHJveHknPldvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICBXaWtpIHBhZ2UuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDYW4gSSBnZXQgcmlkIG9mIGJ1aWxkIG91dHB1dCBzbyBJIGNhbiBzdGFydCBvdmVyPworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWWVzIC0geW91IGNhbiBlYXNpbHkgZG8gdGhpcy4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgQml0QmFrZSB0byBidWlsZCBhbiBpbWFnZSwgYWxsIHRoZSBidWlsZCBvdXRwdXQKKyAgICAgICAgICAgICAgICBnb2VzIGludG8gdGhlIGRpcmVjdG9yeSBjcmVhdGVkIHdoZW4geW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgIGlzIG5hbWVkIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGJ1dCBjYW4gYmUgbmFtZWQKKyAgICAgICAgICAgICAgICBhbnl0aGluZyB5b3Ugd2FudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBCdWlsZCBEaXJlY3RvcnksIGlzIHRoZSA8ZmlsZW5hbWU+dG1wPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgVG8gcmVtb3ZlIGFsbCB0aGUgYnVpbGQgb3V0cHV0IHlldCBwcmVzZXJ2ZSBhbnkgc291cmNlIGNvZGUgb3IKKyAgICAgICAgICAgICAgICBkb3dubG9hZGVkIGZpbGVzIGZyb20gcHJldmlvdXMgYnVpbGRzLCBzaW1wbHkgcmVtb3ZlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworICAgIDxxYW5kYWVudHJ5PgorICAgICAgICA8cXVlc3Rpb24+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaHkgZG8gPGZpbGVuYW1lPiR7YmluZGlyfTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+JHtsaWJkaXJ9PC9maWxlbmFtZT4gaGF2ZSBzdHJhbmdlIHZhbHVlcyBmb3IgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzPworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcyBtaWdodCBuZWVkIHRvIGJlIHVzZWQgZnJvbSBhCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG90aGVyIHRoYW4gdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZXkgd2VyZQorICAgICAgICAgICAgICAgIGluaXRpYWxseSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgQ29tcGxpY2F0aW5nIHRoaXMgc2l0dWF0aW9uIGlzIHRoZSBmYWN0IHRoYXQgc29tZXRpbWVzIHRoZXNlCisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcyBhcmUgY29tcGlsZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24KKyAgICAgICAgICAgICAgICBvZiBiZWluZyBydW4gZnJvbSB0aGF0IGluaXRpYWwgaW5zdGFsbGF0aW9uIHRhcmdldCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgbW92aW5nIHRoZW0gY2F1c2VzIHByb2JsZW1zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNjZW5hcmlvIGlzIGEgZnVuZGFtZW50YWwgcHJvYmxlbSBmb3IgcGFja2FnZSBtYWludGFpbmVycworICAgICAgICAgICAgICAgIG9mIG1haW5zdHJlYW0gTGludXggZGlzdHJpYnV0aW9ucyBhcyB3ZWxsIGFzIGZvciB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIEFzIHN1Y2gsIGEgd2VsbC1lc3RhYmxpc2hlZCBzb2x1dGlvbiBleGlzdHMuCisgICAgICAgICAgICAgICAgTWFrZWZpbGVzLCBBdXRvdG9vbHMgY29uZmlndXJhdGlvbiBzY3JpcHRzLCBhbmQgb3RoZXIgYnVpbGQKKyAgICAgICAgICAgICAgICBzeXN0ZW1zIGFyZSBleHBlY3RlZCB0byByZXNwZWN0IGVudmlyb25tZW50IHZhcmlhYmxlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmRpcjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+bGliZGlyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zeXNjb25mZGlyPC9maWxlbmFtZT4gdGhhdCBpbmRpY2F0ZSB3aGVyZQorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLCBsaWJyYXJpZXMsIGFuZCBkYXRhIHJlc2lkZSB3aGVuIGEgcHJvZ3JhbSBpcworICAgICAgICAgICAgICAgIGFjdHVhbGx5IHJ1bi4KKyAgICAgICAgICAgICAgICBUaGV5IGFyZSBhbHNvIGV4cGVjdGVkIHRvIHJlc3BlY3QgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVNURElSPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgcHJlcGVuZGVkIHRvIGFsbCB0aGUgb3RoZXIgdmFyaWFibGVzIHdoZW4gdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGFjdHVhbGx5IGluc3RhbGxzIHRoZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlIHByb2dyYW0gZG9lcyBub3QgYWN0dWFsbHkgcnVuIGZyb20KKyAgICAgICAgICAgICAgICB3aXRoaW4gPGZpbGVuYW1lPkRFU1RESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIGEgcmVjaXBlIHRvIGJ1aWxkIGEKKyAgICAgICAgICAgICAgICB0YXJnZXQtYXJjaGl0ZWN0dXJlIHByb2dyYW0gKGkuZS4gb25lIHRoYXQgaXMgaW50ZW5kZWQgZm9yCisgICAgICAgICAgICAgICAgaW5jbHVzaW9uIG9uIHRoZSBpbWFnZSBiZWluZyBidWlsdCksIHRoYXQgcHJvZ3JhbSBldmVudHVhbGx5CisgICAgICAgICAgICAgICAgcnVucyBmcm9tIHRoZSByb290IGZpbGUgc3lzdGVtIG9mIHRoYXQgaW1hZ2UuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJ1aWxkIHN5c3RlbSBwcm92aWRlcyBhIHZhbHVlIG9mICIvdXNyL2JpbiIgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmRpcjwvZmlsZW5hbWU+LCBhIHZhbHVlIG9mICIvdXNyL2xpYiIgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmRpcjwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE1lYW53aGlsZSwgPGZpbGVuYW1lPkRFU1RESVI8L2ZpbGVuYW1lPiBpcyBhIHBhdGggd2l0aGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB3aGVuIHRoZSByZWNpcGUgYnVpbGRzIGEgbmF0aXZlIHByb2dyYW0gKGkuZS4gb25lCisgICAgICAgICAgICAgICAgdGhhdCBpcyBpbnRlbmRlZCB0byBydW4gb24gdGhlIGJ1aWxkIG1hY2hpbmUpLCB0aGF0IHByb2dyYW0KKyAgICAgICAgICAgICAgICBpcyBuZXZlciBpbnN0YWxsZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWxkIG1hY2hpbmUncyByb290CisgICAgICAgICAgICAgICAgZmlsZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgcGF0aHMgd2l0aGluIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgIERpcmVjdG9yeSBmb3IgPGZpbGVuYW1lPkRFU1RESVI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmluZGlyPC9maWxlbmFtZT4gYW5kIHJlbGF0ZWQgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRvIGJldHRlciB1bmRlcnN0YW5kIHRoaXMsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgdHdvIHBhdGhzCisgICAgICAgICAgICAgICAgd2hlcmUgdGhlIGZpcnN0IGlzIHJlbGF0aXZlbHkgbm9ybWFsIGFuZCB0aGUgc2Vjb25kIGlzIG5vdDoKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRHVlIHRvIHRoZXNlIGxlbmd0aHkgZXhhbXBsZXMsIHRoZSBwYXRocyBhcmUgYXJ0aWZpY2lhbGx5CisgICAgICAgICAgICAgICAgICAgIGJyb2tlbiBhY3Jvc3MgbGluZXMgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIC9ob21lL21heHRvdGhlbWF4L3Bva3ktYm9vdGNoYXJ0Mi9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvemxpYi8KKyAgICAgICAgMS4yLjgtcjAvc3lzcm9vdC1kZXN0ZGlyL3Vzci9iaW4KKworICAgICAvaG9tZS9tYXh0b3RoZW1heC9wb2t5LWJvb3RjaGFydDIvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4LworICAgICAgICB6bGliLW5hdGl2ZS8xLjIuOC1yMC9zeXNyb290LWRlc3RkaXIvaG9tZS9tYXh0b3RoZW1heC9wb2t5LWJvb3RjaGFydDIvCisgICAgICAgIGJ1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2JpbgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBFdmVuIGlmIHRoZSBwYXRocyBsb29rIHVudXN1YWwsIHRoZXkgYm90aCBhcmUgY29ycmVjdCAtCisgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGZvciBhIHRhcmdldCBhbmQgdGhlIHNlY29uZCBmb3IgYSBuYXRpdmUgcmVjaXBlLgorICAgICAgICAgICAgICAgIFRoZXNlIHBhdGhzIGFyZSBhIGNvbnNlcXVlbmNlIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVNURElSPC9maWxlbmFtZT4gbWVjaGFuaXNtIGFuZCB3aGlsZSB0aGV5CisgICAgICAgICAgICAgICAgYXBwZWFyIHN0cmFuZ2UsIHRoZXkgYXJlIGNvcnJlY3QgYW5kIGluIHByYWN0aWNlIHZlcnkgZWZmZWN0aXZlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2Fuc3dlcj4KKyAgICA8L3FhbmRhZW50cnk+CisKKyAgICA8cWFuZGFlbnRyeT4KKyAgICAgICAgPHF1ZXN0aW9uPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZpbGVzIHByb3ZpZGVkIGJ5IG15IDxmaWxlbmFtZT4qLW5hdGl2ZTwvZmlsZW5hbWU+IHJlY2lwZSBkbworICAgICAgICAgICAgICAgIG5vdCBhcHBlYXIgdG8gYmUgYXZhaWxhYmxlIHRvIG90aGVyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgRmlsZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgbmF0aXZlIHN5c3Jvb3QsIG15IHJlY2lwZSBpcworICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgdG8gdGhlIHdyb25nIHBsYWNlLCBvciBJIGFtIGdldHRpbmcgcGVybWlzc2lvbnMKKyAgICAgICAgICAgICAgICBlcnJvcnMgZHVyaW5nIHRoZSBkb19pbnN0YWxsIHRhc2sgaW4gbXkgcmVjaXBlISBXaGF0IGlzIHdyb25nPworICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3F1ZXN0aW9uPgorICAgICAgICA8YW5zd2VyPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzaXR1YXRpb24gcmVzdWx0cyB3aGVuIGEgYnVpbGQgc3lzdGVtIGRvZXMKKyAgICAgICAgICAgICAgICBub3QgcmVjb2duaXplIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc3VwcGxpZWQgdG8gaXQgYnkKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXRlcm0nPkJpdEJha2U8L2xpbms+LgorICAgICAgICAgICAgICAgIFRoZSBpbmNpZGVudCB0aGF0IHByb21wdGVkIHRoaXMgRkFRIGVudHJ5IGludm9sdmVkIGEgTWFrZWZpbGUKKyAgICAgICAgICAgICAgICB0aGF0IHVzZWQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QklORElSPC9maWxlbmFtZT4gaW5zdGVhZCBvZiB0aGUgbW9yZSBzdGFuZGFyZAorICAgICAgICAgICAgICAgIHZhcmlhYmxlIDxmaWxlbmFtZT5iaW5kaXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgbWFrZWZpbGUncyBoYXJkY29kZWQgZGVmYXVsdCB2YWx1ZSBvZiAiL3Vzci9iaW4iIHdvcmtlZAorICAgICAgICAgICAgICAgIG1vc3Qgb2YgdGhlIHRpbWUsIGJ1dCBub3QgZm9yIHRoZSByZWNpcGUncworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gdmFyaWFudC4KKyAgICAgICAgICAgICAgICBGb3IgYW5vdGhlciBleGFtcGxlLCBwZXJtaXNzaW9ucyBlcnJvcnMgbWlnaHQgYmUgY2F1c2VkCisgICAgICAgICAgICAgICAgYnkgYSBNYWtlZmlsZSB0aGF0IGlnbm9yZXMgPGZpbGVuYW1lPkRFU1RESVI8L2ZpbGVuYW1lPiBvciB1c2VzCisgICAgICAgICAgICAgICAgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhhdCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBDaGVjayB0aGUgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZWUgaWYgdGhlc2Uga2luZHMgb2YKKyAgICAgICAgICAgICAgICBpc3N1ZXMgZXhpc3QuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvYW5zd2VyPgorICAgIDwvcWFuZGFlbnRyeT4KKworPC9xYW5kYXNldD4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvaGlzdG9yeS5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9oaXN0b3J5LnJzdAppbmRleCBkYzBhMmFlLi5lOTYyZDkyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9oaXN0b3J5LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9oaXN0b3J5LnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqKioqKioqKioqKioKIE1hbnVhbCBSZXZpc2lvbiBIaXN0b3J5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24tMS4zLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi0xLjMucnN0CmluZGV4IDU3OTNmOWIuLmViYmMyMzggMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi0xLjMucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi0xLjMucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiBNb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMS4zIFJlbGVhc2UKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi5yc3QKaW5kZXggMjAyODhiMC4uNmM2MTE5ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIE1pZ3JhdGluZyB0byBhIE5ld2VyIFlvY3RvIFByb2plY3QgUmVsZWFzZQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNkNWIxNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKQEAgLTAsMCArMSw3MzAxIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J21pZ3JhdGlvbic+Cis8dGl0bGU+TWlncmF0aW5nIHRvIGEgTmV3ZXIgWW9jdG8gUHJvamVjdCBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgaW5mb3JtYXRpb24geW91IGNhbiB1c2UgdG8gbWlncmF0ZSB3b3JrIHRvIGEKKyAgICAgICAgbmV3ZXIgWW9jdG8gUHJvamVjdCByZWxlYXNlLiAgWW91IGNhbiBmaW5kIHRoZSBzYW1lIGluZm9ybWF0aW9uIGluIHRoZQorICAgICAgICByZWxlYXNlIG5vdGVzIGZvciBhIGdpdmVuIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nZ2VuZXJhbC1taWdyYXRpb24tY29uc2lkZXJhdGlvbnMnPgorICAgIDx0aXRsZT5HZW5lcmFsIE1pZ3JhdGlvbiBDb25zaWRlcmF0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU29tZSBjb25zaWRlcmF0aW9ucyBhcmUgbm90IHRpZWQgdG8gYSBzcGVjaWZpYyBZb2N0byBQcm9qZWN0CisgICAgICAgIHJlbGVhc2UuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBpbmZvcm1hdGlvbiB5b3Ugc2hvdWxkIGNvbnNpZGVyIHdoZW4KKyAgICAgICAgbWlncmF0aW5nIHRvIGFueSBuZXcgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZWFsaW5nIHdpdGggQ3VzdG9taXplZCBSZWNpcGVzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgSXNzdWVzIGNvdWxkIGFyaXNlIGlmIHlvdSB0YWtlIG9sZGVyIHJlY2lwZXMgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbnMgYW5kIHNpbXBseSBjb3B5IHRoZW0gZm9yd2FyZCBleHBlY3RpbmcgdGhlbQorICAgICAgICAgICAgICAgIHRvIHdvcmsgYWZ0ZXIgeW91IG1pZ3JhdGUgdG8gbmV3IFlvY3RvIFByb2plY3QgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYSByZWNpcGUgaW4geW91ciBsYXllciB0aGF0IGlzCisgICAgICAgICAgICAgICAgYSBjdXN0b21pemVkIHZlcnNpb24gb2YgYSBjb3JlIHJlY2lwZSBjb3BpZWQgZnJvbSB0aGUgZWFybGllcgorICAgICAgICAgICAgICAgIHJlbGVhc2UsIHJhdGhlciB0aGFuIHRocm91Z2ggdGhlIHVzZSBvZiBhbiBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICBXaGVuIHlvdSBtaWdyYXRlIHRvIGEgbmV3ZXIgdmVyc2lvbiBvZiBZb2N0byBQcm9qZWN0LCB0aGUKKyAgICAgICAgICAgICAgICBtZXRhZGF0YSAoZS5nLiBwZXJoYXBzIGFuIGluY2x1ZGUgZmlsZSB1c2VkIGJ5IHRoZSByZWNpcGUpCisgICAgICAgICAgICAgICAgY291bGQgaGF2ZSBjaGFuZ2VkIGluIGEgd2F5IHRoYXQgd291bGQgYnJlYWsgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFNheSwgZm9yIGV4YW1wbGUsIGEgZnVuY3Rpb24gaXMgcmVtb3ZlZCBmcm9tIGFuIGluY2x1ZGUgZmlsZQorICAgICAgICAgICAgICAgIGFuZCB0aGUgY3VzdG9taXplZCByZWNpcGUgdHJpZXMgdG8gY2FsbCB0aGF0IGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjb3VsZCAiZm9yd2FyZC1wb3J0IiBhbGwgeW91ciBjdXN0b21pemF0aW9ucyBpbiB5b3VyCisgICAgICAgICAgICAgICAgcmVjaXBlIHNvIHRoYXQgZXZlcnl0aGluZyB3b3JrcyBmb3IgdGhlIG5ldyByZWxlYXNlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgaXMgbm90IHRoZSBvcHRpbWFsIHNvbHV0aW9uIGFzIHlvdSB3b3VsZCBoYXZlCisgICAgICAgICAgICAgICAgdG8gcmVwZWF0IHRoaXMgcHJvY2VzcyB3aXRoIGVhY2ggbmV3IHJlbGVhc2UgaWYgY2hhbmdlcworICAgICAgICAgICAgICAgIG9jY3VyIHRoYXQgZ2l2ZSByaXNlIHRvIHByb2JsZW1zLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBiZXR0ZXIgc29sdXRpb24gKHdoZXJlIHByYWN0aWNhbCkgaXMgdG8gdXNlIGFwcGVuZAorICAgICAgICAgICAgICAgIGZpbGVzICg8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+KSB0byBjYXB0dXJlIGFueQorICAgICAgICAgICAgICAgIGN1c3RvbWl6YXRpb25zIHlvdSB3YW50IHRvIG1ha2UgdG8gYSByZWNpcGUuCisgICAgICAgICAgICAgICAgRG9pbmcgc28sIGlzb2xhdGVzIHlvdXIgY2hhbmdlcyBmcm9tIHRoZSBtYWluIHJlY2lwZSBtYWtpbmcKKyAgICAgICAgICAgICAgICB0aGVtIG11Y2ggbW9yZSBtYW5hZ2VhYmxlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHNvbWV0aW1lcyBpdCBpcyBub3QgcHJhY3RpY2FsIHRvIHVzZSBhbiBhcHBlbmQKKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIEEgZ29vZCBleGFtcGxlIG9mIHRoaXMgaXMgd2hlbiBpbnRyb2R1Y2luZyBhIG5ld2VyIG9yIG9sZGVyCisgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiBhIHJlY2lwZSBpbiBhbm90aGVyIGxheWVyLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5VcGRhdGluZyBBcHBlbmQgRmlsZXM8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICBTaW5jZSBhcHBlbmQgZmlsZXMgZ2VuZXJhbGx5IG9ubHkgY29udGFpbiB5b3VyIGN1c3RvbWl6YXRpb25zLAorICAgICAgICAgICAgICAgIHRoZXkgb2Z0ZW4gZG8gbm90IG5lZWQgdG8gYmUgYWRqdXN0ZWQgZm9yIG5ldyByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB0aGUgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaXMKKyAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgcmVjaXBlIChpLmUuIGl0cworICAgICAgICAgICAgICAgIG5hbWUgZG9lcyBub3QgdXNlIHRoZSAlIHdpbGRjYXJkKSBhbmQgdGhlIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlIHRvIHdoaWNoIGl0IGlzIGFwcGVuZGluZyBoYXMgY2hhbmdlZCwgdGhlbiB5b3Ugd2lsbAorICAgICAgICAgICAgICAgIGF0IGEgbWluaW11bSBuZWVkIHRvIHJlbmFtZSB0aGUgYXBwZW5kIGZpbGUgdG8gbWF0Y2ggdGhlCisgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgQSBtaXNtYXRjaCBiZXR3ZWVuIGFuIGFwcGVuZCBmaWxlIGFuZCBpdHMgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgIHJlY2lwZSBmaWxlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIHdpbGwKKyAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGVycm9yIGR1cmluZyBwYXJzaW5nLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgY3VzdG9taXphdGlvbiB0aGUgYXBwZW5kIGZpbGUKKyAgICAgICAgICAgICAgICBhcHBsaWVzLCBvdGhlciBpbmNvbXBhdGliaWxpdGllcyBtaWdodCBvY2N1ciB3aGVuIHlvdQorICAgICAgICAgICAgICAgIHVwZ3JhZGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgYXBwZW5kIGZpbGUgYXBwbGllcyBhIHBhdGNoIGFuZCB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUgdG8gd2hpY2ggaXQgaXMgYXBwZW5kaW5nIGlzIHVwZGF0ZWQgdG8gYSBuZXdlcgorICAgICAgICAgICAgICAgIHZlcnNpb24sIHRoZSBwYXRjaCBtaWdodCBubyBsb25nZXIgYXBwbHkuCisgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSBhbmQgYXNzdW1pbmcgdGhlIHBhdGNoIGlzIHN0aWxsIG5lZWRlZCwKKyAgICAgICAgICAgICAgICB5b3UgbXVzdCBtb2RpZnkgdGhlIHBhdGNoIGZpbGUgc28gdGhhdCBpdCBkb2VzIGFwcGx5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMS4zLXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMS4zIFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAxLjMgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPScxLjMtbG9jYWwtY29uZmlndXJhdGlvbic+CisgICAgICAgIDx0aXRsZT5Mb2NhbCBDb25maWd1cmF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIERpZmZlcmVuY2VzIGluY2x1ZGUgY2hhbmdlcyBmb3IKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS4zLXNzdGF0ZS1taXJyb3JzJz4KKyAgICAgICAgICAgIDx0aXRsZT5TU1RBVEVfTUlSUk9SUzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgY2FjaGUgKHNzdGF0ZS1jYWNoZSksIGFzIHBvaW50ZWQgdG8gYnkKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCBub3cgaGFzIHR3by1jaGFyYWN0ZXIgc3ViZGlyZWN0b3JpZXMgdG8gcHJldmVudAorICAgICAgICAgICAgICAgIGlzc3VlcyBhcmlzaW5nIGZyb20gdG9vIG1hbnkgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIEFsc28sIG5hdGl2ZSBzc3RhdGUtY2FjaGUgcGFja2FnZXMsIHdoaWNoIGFyZSBidWlsdCB0byBydW4KKyAgICAgICAgICAgICAgICBvbiB0aGUgaG9zdCBzeXN0ZW0sIHdpbGwgZ28gaW50byBhIHN1YmRpcmVjdG9yeSBuYW1lZCB1c2luZworICAgICAgICAgICAgICAgIHRoZSBkaXN0cm8gSUQgc3RyaW5nLgorICAgICAgICAgICAgICAgIElmIHlvdSBjb3B5IHRoZSBuZXdseSBzdHJ1Y3R1cmVkIHNzdGF0ZS1jYWNoZSB0byBhIG1pcnJvcgorICAgICAgICAgICAgICAgIGxvY2F0aW9uIChlaXRoZXIgbG9jYWwgb3IgcmVtb3RlKSBhbmQgdGhlbiBwb2ludCB0byBpdCBpbgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGFwcGVuZCAiUEFUSCIgdG8gdGhlIGVuZCBvZiB0aGUgbWlycm9yIFVSTCBzbyB0aGF0CisgICAgICAgICAgICAgICAgdGhlIHBhdGggdXNlZCBieSBCaXRCYWtlIGJlZm9yZSB0aGUgbWlycm9yIHN1YnN0aXR1dGlvbiBpcworICAgICAgICAgICAgICAgIGFwcGVuZGVkIHRvIHRoZSBwYXRoIHVzZWQgdG8gYWNjZXNzIHRoZSBtaXJyb3IuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1NUQVRFX01JUlJPUlMgPSAiZmlsZTovLy4qIGh0dHA6Ly88cmVwbGFjZWFibGU+c29tZXNlcnZlcjwvcmVwbGFjZWFibGU+LnRsZC9zaGFyZS9zc3RhdGUvUEFUSCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuMy1iYmxheWVycy1jb25mJz4KKyAgICAgICAgICAgIDx0aXRsZT5iYmxheWVycy5jb25mPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gbGF5ZXIgY29uc2lzdHMgb2YgdHdvIHBhcnRzCisgICAgICAgICAgICAgICAgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBQb2t5IHJlZmVyZW5jZSBkaXN0cmlidXRpb24gYW5kIHRoZQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBoYXJkd2FyZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKSwgcmVzcGVjdGl2ZWx5OgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgV2hlbiBydW5uaW5nIEJpdEJha2UgZm9yIHRoZSBmaXJzdCB0aW1lIGFmdGVyIHVwZ3JhZGluZywKKyAgICAgICAgICAgICAgICB5b3VyIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHdpbGwgYmUKKyAgICAgICAgICAgICAgICB1cGRhdGVkIHRvIGhhbmRsZSB0aGlzIGNoYW5nZSBhbmQgeW91IHdpbGwgYmUgYXNrZWQgdG8KKyAgICAgICAgICAgICAgICByZS1ydW4gb3IgcmVzdGFydCBmb3IgdGhlIGNoYW5nZXMgdG8gdGFrZSBlZmZlY3QuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nMS4zLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEaWZmZXJlbmNlcyBpbmNsdWRlIGNoYW5nZXMgZm9yIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gZnVuY3Rpb24gd2hpdGVzcGFjZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHJvdG89PC9maWxlbmFtZT4gaW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGFzayByZWNpcGVzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlbW92ZWQgcmVjaXBlczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuMy1weXRob24tZnVuY3Rpb24td2hpdGVzcGFjZSc+CisgICAgICAgICAgICA8dGl0bGU+UHl0aG9uIEZ1bmN0aW9uIFdoaXRlc3BhY2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbGwgUHl0aG9uIGZ1bmN0aW9ucyBtdXN0IG5vdyB1c2UgZm91ciBzcGFjZXMgZm9yIGluZGVudGF0aW9uLgorICAgICAgICAgICAgICAgIFByZXZpb3VzbHksIGFuIGluY29uc2lzdGVudCBtaXggb2Ygc3BhY2VzIGFuZCB0YWJzIGV4aXN0ZWQsCisgICAgICAgICAgICAgICAgd2hpY2ggbWFkZSBleHRlbmRpbmcgdGhlc2UgZnVuY3Rpb25zIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbXBsaWNhdGVkIGdpdmVuIHRoYXQgUHl0aG9uIHRyZWF0cyB3aGl0ZXNwYWNlIGFzCisgICAgICAgICAgICAgICAgc3ludGFjdGljYWxseSBzaWduaWZpY2FudC4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGRlZmluaW5nIG9yIGV4dGVuZGluZyBhbnkgUHl0aG9uIGZ1bmN0aW9ucyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3B1bGF0ZV9wYWNrYWdlczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoKSBpbiBjdXN0b20gcmVjaXBlcworICAgICAgICAgICAgICAgIG9yIGNsYXNzZXMsIHlvdSBuZWVkIHRvIGVuc3VyZSB5b3UgYXJlIHVzaW5nIGNvbnNpc3RlbnQKKyAgICAgICAgICAgICAgICBmb3VyLXNwYWNlIGluZGVudGF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjMtcHJvdG89LWluLXNyYy11cmknPgorICAgICAgICAgICAgPHRpdGxlPnByb3RvPSBpbiBTUkNfVVJJPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW55IHVzZSBvZiA8ZmlsZW5hbWU+cHJvdG89PC9maWxlbmFtZT4gaW4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIDxmaWxlbmFtZT5wcm90b2NvbD08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGFwcGxpZXMgdG8gdGhlIGZvbGxvd2luZyBVUklzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c3ZuOi8vPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ienI6Ly88L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmhnOi8vPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5vc2M6Ly88L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIE90aGVyIFVSSXMgd2VyZSBhbHJlYWR5IHVzaW5nIDxmaWxlbmFtZT5wcm90b2NvbD08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBpbXByb3ZlcyBjb25zaXN0ZW5jeS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS4zLW5hdGl2ZXNkayc+CisgICAgICAgICAgICA8dGl0bGU+bmF0aXZlc2RrPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHN1ZmZpeCA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gaXMgbm93IGltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgYXMgYSBwcmVmaXgsIHdoaWNoIHNpbXBsaWZpZXMgYSBsb3Qgb2YgdGhlIHBhY2thZ2luZyBjb2RlIGZvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiByZWNpcGVzLgorICAgICAgICAgICAgICAgIEFsbCBjdXN0b20gPGZpbGVuYW1lPm5hdGl2ZXNkazwvZmlsZW5hbWU+IHJlY2lwZXMsIHdoaWNoIGFyZQorICAgICAgICAgICAgICAgIHJlbG9jYXRhYmxlIHBhY2thZ2VzIHRoYXQgYXJlIG5hdGl2ZSB0bworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIGFuZCBhbnkgcmVmZXJlbmNlcyBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay0qPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLW5hdGl2ZXNkazwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjMtdGFzay1yZWNpcGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5UYXNrIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAiVGFzayIgcmVjaXBlcyBhcmUgbm93IGtub3duIGFzICJQYWNrYWdlIGdyb3VwcyIgYW5kIGhhdmUKKyAgICAgICAgICAgICAgICBiZWVuIHJlbmFtZWQgZnJvbSA8ZmlsZW5hbWU+dGFzay0qLmJiPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLSouYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBFeGlzdGluZyByZWZlcmVuY2VzIHRvIHRoZSBwcmV2aW91cyA8ZmlsZW5hbWU+dGFzay0qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBuYW1lcyBzaG91bGQgd29yayBpbiBtb3N0IGNhc2VzIGFzIHRoZXJlIGlzIGFuIGF1dG9tYXRpYworICAgICAgICAgICAgICAgIHVwZ3JhZGUgcGF0aCBmb3IgbW9zdCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3Ugc2hvdWxkIHVwZGF0ZSByZWZlcmVuY2VzIGluIHlvdXIgb3duIHJlY2lwZXMgYW5kCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgYXMgdGhleSBjb3VsZCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsc28gcmVuYW1lIGFueSBjdXN0b20gPGZpbGVuYW1lPnRhc2stKjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlcyB0byA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLSo8L2ZpbGVuYW1lPiwgYW5kIGNoYW5nZQorICAgICAgICAgICAgICAgIHRoZW0gdG8gaW5oZXJpdCA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXNrPC9maWxlbmFtZT4sIGFzIHdlbGwgYXMgdGFraW5nIHRoZSBvcHBvcnR1bml0eQorICAgICAgICAgICAgICAgIHRvIHJlbW92ZSBhbnl0aGluZyBub3cgaGFuZGxlZCBieQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAuYmJjbGFzczwvZmlsZW5hbWU+LCBzdWNoIGFzIHByb3ZpZGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBwYWNrYWdlcywgc2V0dGluZworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNfRklMRVNfQ0hLU1VNJz48ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlZ3JvdXAnPjxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuMy1pbWFnZS1mZWF0dXJlcyc+CisgICAgICAgICAgICA8dGl0bGU+SU1BR0VfRkVBVFVSRVM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbWFnZSByZWNpcGVzIHRoYXQgcHJldmlvdXNseSBpbmNsdWRlZCAiYXBwcy1jb25zb2xlLWNvcmUiCisgICAgICAgICAgICAgICAgaW4gPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBzaG91bGQgbm93IGluY2x1ZGUgInNwbGFzaCIgaW5zdGVhZCB0byBlbmFibGUgdGhlIGJvb3QtdXAKKyAgICAgICAgICAgICAgICBzcGxhc2ggc2NyZWVuLgorICAgICAgICAgICAgICAgIFJldGFpbmluZyAiYXBwcy1jb25zb2xlLWNvcmUiIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgc3BsYXNoCisgICAgICAgICAgICAgICAgc2NyZWVuIGJ1dCBnZW5lcmF0ZXMgYSB3YXJuaW5nLgorICAgICAgICAgICAgICAgIFRoZSAiYXBwcy14MTEtY29yZSIgYW5kICJhcHBzLXgxMS1nYW1lcyIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBmZWF0dXJlcyBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS4zLXJlbW92ZWQtcmVjaXBlcyc+CisgICAgICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgIEZvciBtb3N0IG9mIHRoZW0sIGl0IGlzIHVubGlrZWx5IHRoYXQgeW91IHdvdWxkIGhhdmUgYW55CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byB0aGVtIGluIHlvdXIgb3duCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPi4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgbWV0YWRhdGEgYWdhaW5zdCB0aGlzIGxpc3QgdG8gYmUgc3VyZToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5saWJ4MTEtdHJpbTwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+bGlieDExPC9maWxlbmFtZT4sIHdoaWNoIGhhcyBhIG5lZ2xpZ2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgZGlmZmVyZW5jZSB3aXRoIG1vZGVybiBYb3JnLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT54c2VydmVyLXhvcmctbGl0ZTwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgPGZpbGVuYW1lPnhzZXJ2ZXIteG9yZzwvZmlsZW5hbWU+LCB3aGljaCBoYXMgYSBuZWdsaWdpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplIGRpZmZlcmVuY2Ugd2hlbiBEUkkgYW5kIEdMWCBtb2R1bGVzIGFyZSBub3QgaW5zdGFsbGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT54c2VydmVyLWtkcml2ZTwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3RpdmVseSB1bm1haW50YWluZWQgZm9yIG1hbnkgeWVhcnMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPm1lc2EteGxpYjwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBObyBsb25nZXIgc2VydmVzIGFueSBwdXJwb3NlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5nYWxhZ288L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWQgYnkgdGVsZXBhdGh5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5nYWlsPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgd2FzIGludGVncmF0ZWQgaW50byBHVEsrIDIuMTMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmVnZ2RidXM8L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgTm8gbG9uZ2VyIG5lZWRlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2NjLSotaW50ZXJtZWRpYXRlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBoYXMgYmVlbiByZXN0cnVjdHVyZWQgdG8gYXZvaWQgdGhlIG5lZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHN0ZXAuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmdzbWQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVW5tYWludGFpbmVkIGZvciBtYW55IHllYXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSBub3cgcHJvdmlkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZm9ubzwvZmlsZW5hbWU+IGluc3RlYWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y29udGFjdHMsIGRhdGVzLCB0YXNrcywgZWRzLXRvb2xzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBMYXJnZWx5IHVubWFpbnRhaW5lZCBQSU0gYXBwbGljYXRpb24gc3VpdGUuCisgICAgICAgICAgICAgICAgICAgICAgICBJdCBoYXMgYmVlbiBtb3ZlZCB0byA8ZmlsZW5hbWU+bWV0YS1nbm9tZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+bWV0YS1vcGVuZW1iZWRkZWQ8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgcHJldmlvdXNseSBsaXN0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZGVtb2FwcHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaGFzIGFsc28gYmVlbiByZW1vdmVkCisgICAgICAgICAgICAgICAgYmVjYXVzZSB0aGUgcmVjaXBlcyBpbiBpdCB3ZXJlIG5vdCBiZWluZyBtYWludGFpbmVkIGFuZCBtYW55CisgICAgICAgICAgICAgICAgaGFkIGJlY29tZSBvYnNvbGV0ZSBvciBicm9rZW4uCisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGVzZSByZWNpcGVzIHdlcmUgbm90IHBhcnNlZCBpbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIE1hbnkgb2YgdGhlc2UgcmVjaXBlcyBhcmUgYWxyZWFkeSBwcm92aWRlZCBpbiBhbiB1cGRhdGVkIGFuZAorICAgICAgICAgICAgICAgIG1haW50YWluZWQgZm9ybSB3aXRoaW4gdGhlIE9wZW5FbWJlZGRlZCBjb21tdW5pdHkgbGF5ZXJzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bWV0YS1nbm9tZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEZvciB0aGUgcmVtYWluZGVyLCB5b3UgY2FuIG5vdyBmaW5kIHRoZW0gaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZXh0cmFzPC9maWxlbmFtZT4gcmVwb3NpdG9yeSwgd2hpY2ggaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9JzEuMy1saW51eC1rZXJuZWwtbmFtaW5nJz4KKyAgICAgICAgPHRpdGxlPkxpbnV4IEtlcm5lbCBOYW1pbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG5hbWluZyBzY2hlbWUgZm9yIGtlcm5lbCBvdXRwdXQgYmluYXJpZXMgaGFzIGJlZW4gY2hhbmdlZCB0bworICAgICAgICAgICAgbm93IGluY2x1ZGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L2xpbms+IGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICBmaWxlbmFtZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0lNQUdFX0JBU0VfTkFNRSA/PSAiJHtLRVJORUxfSU1BR0VUWVBFfS0ke1BFfS0ke1BWfS0ke1BSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCZWNhdXNlIHRoZSA8ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBub3Qgc2V0IGJ5IGRlZmF1bHQsCisgICAgICAgICAgICB0aGVzZSBiaW5hcnkgZmlsZXMgY291bGQgcmVzdWx0IHdpdGggbmFtZXMgdGhhdCBpbmNsdWRlIHR3byBkYXNoCisgICAgICAgICAgICBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBiekltYWdlLS0zLjEwLjkrZ2l0MCtjZDUwMmE4ODE0XzcxNDRiY2M0YjgtcjAtcWVtdXg4Ni02NC0yMDEzMDgzMDA4NTQzMS5iaW4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0xLjQtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDEuNCBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjQtYml0YmFrZSc+CisgICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIERpZmZlcmVuY2VzIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db21tZW50IENvbnRpbnVhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiBhIGNvbW1lbnQgZW5kcyB3aXRoIGEgbGluZSBjb250aW51YXRpb24gKFwpIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgdGhlbiB0aGUgbmV4dCBsaW5lIG11c3QgYWxzbyBiZSBhIGNvbW1lbnQuCisgICAgICAgICAgICAgICAgICAgIEFueSBpbnN0YW5jZSB3aGVyZSB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgbm93IHRyaWdnZXJzCisgICAgICAgICAgICAgICAgICAgIGEgd2FybmluZy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgZWl0aGVyIHJlbW92ZSB0aGUgY29udGludWF0aW9uIGNoYXJhY3Rlciwgb3IgYmUKKyAgICAgICAgICAgICAgICAgICAgc3VyZSB0aGUgbmV4dCBsaW5lIGlzIGEgY29tbWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlIE5hbWUgT3ZlcnJpZGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBydW50aW1lIHBhY2thZ2Ugc3BlY2lmaWMgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJTVUdHRVNUUyc+PGZpbGVuYW1lPlJTVUdHRVNUUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJQUk9WSURFUyc+PGZpbGVuYW1lPlJQUk9WSURFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJDT05GTElDVFMnPjxmaWxlbmFtZT5SQ09ORkxJQ1RTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFUExBQ0VTJz48ZmlsZW5hbWU+UlJFUExBQ0VTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFMTE9XX0VNUFRZJz48ZmlsZW5hbWU+QUxMT1dfRU1QVFk8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcHJlLCBwb3N0LCBpbnN0YWxsLCBhbmQgdW5pbnN0YWxsIHNjcmlwdCBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wcmVpbnN0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wcmVybTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0cm08L2ZpbGVuYW1lPiBzaG91bGQgYWx3YXlzIGhhdmUgYQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG5hbWUgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2UgPGZpbGVuYW1lPlJERVBFTkRTXyR7UE59PC9maWxlbmFtZT4gZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBtYWluIHBhY2thZ2UgaW5zdGVhZCBvZiA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIG1vcmUgc3RyaWN0IGNoZWNrcyB3aGVuIGl0IHBhcnNlcyByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjQtYnVpbGQtYmVoYXZpb3InPgorICAgICAgICA8dGl0bGU+QnVpbGQgQmVoYXZpb3I8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRGlmZmVyZW5jZXMgaW5jbHVkZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBDb2RlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgY29kZSBoYXMgYmVlbiBvcHRpbWl6ZWQgdG8gYXZvaWQgcnVubmluZworICAgICAgICAgICAgICAgICAgICB1bm5lY2Vzc2FyeSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgbm8gbG9uZ2VyIHBvcHVsYXRlcyB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIHN5c3Jvb3Qgc2luY2UgdGhhdCBpcyBub3QgbmVjZXNzYXJ5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYyByb290ZnMgPHJlcGxhY2VhYmxlPnNvbWUtaW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHRoZSBzeXN0ZW0ganVzdCBuZWVkcyB0byBleHRyYWN0IHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBjb250ZW50cywgcmUtY3JlYXRlIHRoZSBwYWNrYWdlcywgYW5kIGNvbnN0cnVjdAorICAgICAgICAgICAgICAgICAgICB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBpcyB1bmxpa2VseSB0byBjYXVzZSBhbnkgcHJvYmxlbXMgdW5sZXNzCisgICAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIG1pc3NpbmcgZGVjbGFyZWQgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNjYW5uaW5nIERpcmVjdG9yeSBOYW1lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNjYW5uaW5nIGZvciBmaWxlcyBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gbm93IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTT1ZFUlJJREVTJz48ZmlsZW5hbWU+RklMRVNPVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiA8bGluayBsaW5rZW5kPSd2YXItT1ZFUlJJREVTJz48ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgZGlyZWN0b3J5IG5hbWVzLgorICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgdmFsdWVzIHByZXZpb3VzbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+IGFyZSBub3cgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTT1ZFUlJJREVTPC9maWxlbmFtZT4gYXMgd2VsbC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IHJlbGllZCB1cG9uIGFuIGFkZGl0aW9uYWwgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgeW91IHByZXZpb3VzbHkgYWRkZWQgdG8gPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB5b3UgbWlnaHQgbm93IG5lZWQgdG8gYWRkIGl0IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU09WRVJSSURFUzwvZmlsZW5hbWU+IHVubGVzcyB5b3UgYXJlIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgYWRkaW5nIGl0IHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FT1ZFUlJJREVTJz48ZmlsZW5hbWU+TUFDSElORU9WRVJSSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBvciA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPT1ZFUlJJREVTJz48ZmlsZW5hbWU+RElTVFJPT1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcywgYXMgYXBwcm9wcmlhdGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIHJlbGF0ZWQgY2hhbmdlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWlncmF0aW9uLTEuNC12YXJpYWJsZXMnPlZhcmlhYmxlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS40LXByb3hpZXMtYW5kLWZldGNoaW5nLXNvdXJjZSc+CisgICAgICAgIDx0aXRsZT5Qcm94aWVzIGFuZCBGZXRjaGluZyBTb3VyY2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBuZXcgPGZpbGVuYW1lPm9lLWdpdC1wcm94eTwvZmlsZW5hbWU+IHNjcmlwdCBoYXMgYmVlbiBhZGRlZCB0bworICAgICAgICAgICAgcmVwbGFjZSBwcmV2aW91cyBtZXRob2RzIG9mIGhhbmRsaW5nIHByb3hpZXMgYW5kIGZldGNoaW5nIHNvdXJjZQorICAgICAgICAgICAgZnJvbSBHaXQuCisgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvL2NvbmYvc2l0ZS5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgc2NyaXB0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjQtY3VzdG9tLWludGVyZmFjZXMtZmlsZS1uZXRiYXNlLWNoYW5nZSc+CisgICAgICAgIDx0aXRsZT5DdXN0b20gSW50ZXJmYWNlcyBGaWxlIChuZXRiYXNlIGNoYW5nZSk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IGhhdmUgY3JlYXRlZCB5b3VyIG93biBjdXN0b20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5ldGMvbmV0d29yay9pbnRlcmZhY2VzPC9maWxlbmFtZT4gZmlsZSBieSBjcmVhdGluZworICAgICAgICAgICAgYW4gYXBwZW5kIGZpbGUgZm9yIHRoZSA8ZmlsZW5hbWU+bmV0YmFzZTwvZmlsZW5hbWU+IHJlY2lwZSwKKyAgICAgICAgICAgIHlvdSBub3cgbmVlZCB0byBjcmVhdGUgYW4gYXBwZW5kIGZpbGUgZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmluaXQtaWZ1cGRvd248L2ZpbGVuYW1lPiByZWNpcGUgaW5zdGVhZCwgd2hpY2ggeW91IGNhbgorICAgICAgICAgICAgZmluZCBpbiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICBhdCA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYXBwZW5kIGZpbGVzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNC1yZW1vdGUtZGVidWdnaW5nJz4KKyAgICAgICAgPHRpdGxlPlJlbW90ZSBEZWJ1Z2dpbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU3VwcG9ydCBmb3IgcmVtb3RlIGRlYnVnZ2luZyB3aXRoIHRoZSBFY2xpcHNlIElERSBpcyBub3cKKyAgICAgICAgICAgIHNlcGFyYXRlZCBpbnRvIGFuIGltYWdlIGZlYXR1cmUKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+ZWNsaXBzZS1kZWJ1ZzwvZmlsZW5hbWU+KSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWVjbGlwc2UtZGVidWc8L2ZpbGVuYW1lPiBwYWNrYWdlIGdyb3VwLgorICAgICAgICAgICAgUHJldmlvdXNseSwgdGhlIGRlYnVnZ2luZyBmZWF0dXJlIHdhcyBpbmNsdWRlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnRvb2xzLWRlYnVnPC9maWxlbmFtZT4gaW1hZ2UgZmVhdHVyZSwgd2hpY2ggY29ycmVzcG9uZHMKKyAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtZGVidWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgcGFja2FnZSBncm91cC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS40LXZhcmlhYmxlcyc+CisgICAgICAgIDx0aXRsZT5WYXJpYWJsZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaGF2ZSBjaGFuZ2VkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5TQU5JVFlfVEVTVEVEX0RJU1RST1M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIG5vdyB1c2VzIGEgZGlzdHJpYnV0aW9uIElELCB3aGljaCBpcyBjb21wb3NlZAorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgaG9zdCBkaXN0cmlidXRvciBJRCBmb2xsb3dlZCBieSB0aGUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgUHJldmlvdXNseSwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNBTklUWV9URVNURURfRElTVFJPUyc+PGZpbGVuYW1lPlNBTklUWV9URVNURURfRElTVFJPUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3YXMgY29tcG9zZWQgb2YgdGhlIGRlc2NyaXB0aW9uIGZpZWxkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgIlVidW50dSAxMi4xMCIgYmVjb21lcyAiVWJ1bnR1LTEyLjEwIi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoaXMgY2hhbmdlIGlmIHlvdSBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBzZXR0aW5nIHRoaXMgdmFyaWFibGUsIG9yIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IHNldHRpbmcgaXQgdG8gIiIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBGJz48ZmlsZW5hbWU+UEY8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QJz48ZmlsZW5hbWU+UDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+RklMRV9ESVJOQU1FPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgICAgIGRyb3BwZWQgZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgdXNlZCBhcyB0aGUgc2VhcmNoIHBhdGggZm9yIGZpbmRpbmcgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJyZWQgdG8gaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIHJlY2lwZSB0aGF0IHJlbGllZCB1cG9uIHRoZXNlIGRpcmVjdG9yaWVzLAorICAgICAgICAgICAgICAgICAgICB3aGljaCB3b3VsZCBiZSB1bnVzdWFsLCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gYWRkIHRoZQorICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBwYXRocyB3aXRoaW4gdGhlIHJlY2lwZSBvciwgYWx0ZXJuYXRpdmVseSwKKyAgICAgICAgICAgICAgICAgICAgcmVhcnJhbmdlIHRoZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIGxvY2F0aW9ucyBhcmUgc3RpbGwgY292ZXJlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCUH08L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPiR7QlBOfTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBhbmQgImZpbGVzIiwgd2hpY2ggYWxsIHJlbWFpbiBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi10YXJnZXQtcGFja2FnZS1tYW5hZ2VtZW50LXdpdGgtcnBtJz4KKyAgICAgICAgPHRpdGxlPlRhcmdldCBQYWNrYWdlIE1hbmFnZW1lbnQgd2l0aCBSUE08L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgZW5hYmxlZCBhbmQgdGhlIFJQTSBiYWNrZW5kCisgICAgICAgICAgICBpcyBzZWxlY3RlZCwgU21hcnQgaXMgbm93IGluc3RhbGxlZCBmb3IgcGFja2FnZSBkb3dubG9hZCwgZGVwZW5kZW5jeQorICAgICAgICAgICAgcmVzb2x1dGlvbiwgYW5kIHVwZ3JhZGVzIGluc3RlYWQgb2YgWnlwcGVyLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBTbWFydCwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZAorICAgICAgICAgICAgb24gdGhlIHRhcmdldDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgc21hcnQgLS1oZWxwCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNC1yZWNpcGVzLW1vdmVkJz4KKyAgICAgICAgPHRpdGxlPlJlY2lwZXMgTW92ZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIHdlcmUgbW92ZWQgZnJvbSB0aGVpciBwcmV2aW91cyBsb2NhdGlvbnMKKyAgICAgICAgICAgIGJlY2F1c2UgdGhleSBhcmUgbm8gbG9uZ2VyIHVzZWQgYnkgYW55dGhpbmcgaW4KKyAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQtQ29yZToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Y2x1dHRlci1ib3gyZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE5vdyByZXNpZGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5ldm9sdXRpb24tZGF0YS1zZXJ2ZXI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtZ25vbWU8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z3RodW1iPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm93IHJlc2lkZXMgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLWdub21lPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmd0a2h0bWwyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm93IHJlc2lkZXMgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmd1cG5wPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm93IHJlc2lkZXMgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLW11bHRpbWVkaWE8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z3lwc3k8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bGliY2FuYmVycmE8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtZ25vbWU8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bGliZ2RhdGE8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtZ25vbWU8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bGlibXVzaWNicmFpbno8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtbXVsdGltZWRpYTwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5tZXRhY2l0eTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE5vdyByZXNpZGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1nbm9tZTwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wb2xraXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+emVyb2NvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3cgcmVzaWRlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtbmV0d29ya2luZzwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjQtcmVtb3ZhbHMtYW5kLXJlbmFtZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZhbHMgYW5kIFJlbmFtZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHdoYXQgaGFzIGJlZW4gcmVtb3ZlZCBvciByZW5hbWVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5ldmllZXh0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBiZWNhdXNlIGl0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eHNlcnZlcjwvZmlsZW5hbWU+IHNpbmNlIDIwMDguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3RrKyBEaXJlY3RGQjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkIHN1cHBvcnQgYmVjYXVzZSB1cHN0cmVhbSBHdGsrIG5vIGxvbmdlciBzdXBwb3J0cyBpdAorICAgICAgICAgICAgICAgICAgICBhcyBvZiB2ZXJzaW9uIDIuMTguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnhmb250Y2FjaGUgLyB4Zm9udGNhY2hlcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkIGJlY2F1c2UgdGhleSB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUgWG9yZyBzZXJ2ZXIgaW4gMjAwOC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bGlieHAgLyBsaWJ4cHJpbnRhcHB1dGlsIC8gbGlieHByaW50dXRpbCAvIHByaW50cHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkIGJlY2F1c2UgdGhlIFhQcmludCBzZXJ2ZXIgd2FzIHJlbW92ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICBYb3JnIGluIDIwMDguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnh0cmFwIC8geHRyYXBwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSB0aGVpciBmdW5jdGlvbmFsaXR5IHdhcyBicm9rZW4gdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+bGludXgteW9jdG8gMy4wIGtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkIHdpdGggbGludXgteW9jdG8gMy44IGtlcm5lbCBiZWluZyBhZGRlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpbnV4LXlvY3RvIDMuMiBhbmQgbGludXgteW9jdG8gMy40IGtlcm5lbHMgcmVtYWluCisgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmxzYnNldHVwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCB3aXRoIGZ1bmN0aW9uYWxpdHkgbm93IHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sc2J0ZXN0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPm1hdGNoYm94LXN0cm9rZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSBpdCB3YXMgbmV2ZXIgbW9yZSB0aGFuIGEgcHJvb2Ytb2YtY29uY2VwdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bWF0Y2hib3gtd20tMiAvIG1hdGNoYm94LXRoZW1lLXNhdG8tMjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSB0aGV5IGFyZSBub3QgbWFpbnRhaW5lZC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPm1hdGNoYm94LXdtPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC10aGVtZS1zYXRvPC9maWxlbmFtZT4gYXJlIHN0aWxsCisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5tZXNhLWRyaTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbmFtZWQgdG8gPGZpbGVuYW1lPm1lc2E8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bWVzYS14bGliPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBiZWNhdXNlIGl0IHdhcyBubyBsb25nZXIgdXNlZnVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5tdXR0ZXI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkIGJlY2F1c2Ugbm90aGluZyBldmVyIHVzZXMgaXQgYW5kIHRoZSByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgdmVyeSBvbGQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPm9yaW5vY28tY29uZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT51cGRhdGUtbW9kdWxlczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGtlcm5lbCBtb2R1bGUgPGZpbGVuYW1lPnBvc3RpbnN0YWxsPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0cm08L2ZpbGVuYW1lPiBzY3JpcHRzIGNhbiBub3cgZG8gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgdGFzayB3aXRob3V0IHRoZSB1c2Ugb2YgdGhpcyBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPndlYjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSBpdCBpcyBub3QgbWFpbnRhaW5lZC4gIFN1cGVyc2VkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndlYi13ZWJraXQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+eGY4NmJpZ2ZvbnRwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSB1cHN0cmVhbSBpdCBoYXMgYmVlbiBkaXNhYmxlZCBieSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIHNpbmNlIDIwMDcuCisgICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgdXNlcyA8ZmlsZW5hbWU+eGY4NmJpZ2ZvbnRwcm90bzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT54Zjg2cnVzaHByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBiZWNhdXNlIGl0cyBkZXBlbmRlbmN5IGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT54c2VydmVyPC9maWxlbmFtZT4gd2FzIHNwdXJpb3VzIGFuZCBpdCB3YXMKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCBpbiAyMDA1LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT56eXBwZXIgLyBsaWJ6eXBwIC8gc2F0LXNvbHZlcjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYW5kIGJlZW4gZnVuY3Rpb25hbGx5IHJlcGxhY2VkIHdpdGggU21hcnQKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5weXRob24tc21hcnRwbTwvZmlsZW5hbWU+KSB3aGVuIFJQTSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCBhbmQgcGFja2FnZSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0xLjUtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtaG9zdC1kZXBlbmRlbmN5LWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+SG9zdCBEZXBlbmRlbmN5IENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbm93IGhhcyBzb21lIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzCisgICAgICAgICAgICBvbiB0aGUgaG9zdCBzeXN0ZW06CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMi43LjMrPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRhciAxLjI0KzwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5HaXQgMS43LjgrPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlBhdGNoZWQgdmVyc2lvbiBvZiBNYWtlIGlmIHlvdSBhcmUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgMy44Mi4KKyAgICAgICAgICAgICAgICAgICAgTW9zdCBkaXN0cmlidXRpb25zIHRoYXQgcHJvdmlkZSBNYWtlIDMuODIgdXNlIHRoZSBwYXRjaGVkCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIElmIHRoZSBMaW51eCBkaXN0cmlidXRpb24geW91IGFyZSB1c2luZyBvbiB5b3VyIGJ1aWxkIGhvc3QKKyAgICAgICAgICAgIGRvZXMgbm90IHByb3ZpZGUgcGFja2FnZXMgZm9yIHRoZXNlLCB5b3UgY2FuIGluc3RhbGwgYW5kIHVzZQorICAgICAgICAgICAgdGhlIEJ1aWxkdG9vbHMgdGFyYmFsbCwgd2hpY2ggcHJvdmlkZXMgYW4gU0RLLWxpa2UgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyByZXF1aXJlbWVudCwgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtYXRvbS1wYy1ic3AnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmF0b20tcGM8L2ZpbGVuYW1lPiBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdG9tLXBjPC9maWxlbmFtZT4gaGFyZHdhcmUgcmVmZXJlbmNlIEJTUCBoYXMgYmVlbgorICAgICAgICAgICAgcmVwbGFjZWQgYnkgYSA8ZmlsZW5hbWU+Z2VuZXJpY3g4NjwvZmlsZW5hbWU+IEJTUC4KKyAgICAgICAgICAgIFRoaXMgQlNQIGlzIG5vdCBuZWNlc3NhcmlseSBndWFyYW50ZWVkIHRvIHdvcmsgb24gYWxsIHg4NgorICAgICAgICAgICAgaGFyZHdhcmUsIGJ1dCBpdCB3aWxsIHJ1biBvbiBhIHdpZGVyIHJhbmdlIG9mIHN5c3RlbXMgdGhhbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5hdG9tLXBjPC9maWxlbmFtZT4gZGlkLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhIDxmaWxlbmFtZT5nZW5lcmljeDg2LTY0PC9maWxlbmFtZT4gQlNQIGhhcworICAgICAgICAgICAgICAgIGJlZW4gYWRkZWQgZm9yIDY0LWJpdCBBdG9tIHN5c3RlbXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNS1iaXRiYWtlJz4KKyAgICAgICAgPHRpdGxlPkJpdEJha2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRoYXQgcmVsYXRlIHRvIEJpdEJha2U6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBub3cgc3VwcG9ydHMgYSA8ZmlsZW5hbWU+X3JlbW92ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLgorICAgICAgICAgICAgICAgICAgICBUaGUgYWRkaXRpb24gb2YgdGhpcyBvcGVyYXRvciBtZWFucyB5b3Ugd2lsbCBoYXZlIHRvCisgICAgICAgICAgICAgICAgICAgIHJlbmFtZSBhbnkgaXRlbXMgaW4gcmVjaXBlIHNwYWNlIChmdW5jdGlvbnMsIHZhcmlhYmxlcykKKyAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZXMgY3VycmVudGx5IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9yZW1vdmVfPC9maWxlbmFtZT4gb3IgZW5kIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9yZW1vdmU8L2ZpbGVuYW1lPiB0byBhdm9pZCB1bmV4cGVjdGVkIGJlaGF2aW9yLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UncyBnbG9iYWwgbWV0aG9kIHBvb2wgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgbm90IHBhcnRpY3VsYXJseSB1c2VmdWwgYW5kIGxlZCB0byBjbGFzaGVzCisgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gcmVjaXBlcyBjb250YWluaW5nIGZ1bmN0aW9ucyB0aGF0IGhhZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2FtZSBuYW1lLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlICJub25lIiBzZXJ2ZXIgYmFja2VuZCBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgInByb2Nlc3MiIHNlcnZlciBiYWNrZW5kIGhhcyBiZWVuIHNlcnZpbmcgd2VsbCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBmb3IgYSBsb25nIHRpbWUgbm93LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaXRiYWtlLXJ1bnRhc2s8L2ZpbGVuYW1lPiBzY3JpcHQgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVAnPjxmaWxlbmFtZT5QPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEYnPjxmaWxlbmFtZT5QRjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYXJlIG5vIGxvbmdlciBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJPVklERVMnPjxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGluIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgdmVyc2lvbi1zcGVjaWZpYyA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpdGVtcyB3ZXJlIHNlbGRvbSB1c2VkLgorICAgICAgICAgICAgICAgICAgICBBdHRlbXB0aW5nIHRvIHVzZSB0aGVtIGNvdWxkIHJlc3VsdCBpbiB0d28gdmVyc2lvbnMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQgc2ltdWx0YW5lb3VzbHkgcmF0aGVyIHRoYW4ganVzdCBvbmUgdmVyc2lvbiBkdWUgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIHdheSBCaXRCYWtlIHJlc29sdmVzIGRlcGVuZGVuY2llcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtcWEtd2FybmluZ3MnPgorICAgICAgICA8dGl0bGU+UUEgV2FybmluZ3M8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBwYWNrYWdlIFFBIGNoZWNrczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBjdXN0b21pemVkCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FUlJPUl9RQSc+PGZpbGVuYW1lPkVSUk9SX1FBPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIG9yIDxsaW5rIGxpbmtlbmQ9J3Zhci1XQVJOX1FBJz48ZmlsZW5hbWU+V0FSTl9RQTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgaW4geW91ciBjb25maWd1cmF0aW9uLCBjaGVjayB0aGF0IHRoZXkgY29udGFpbiBhbGwgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGlzc3VlcyB0aGF0IHlvdSB3aXNoIHRvIGJlIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICBQcmV2aW91cyBZb2N0byBQcm9qZWN0IHZlcnNpb25zIGNvbnRhaW5lZCBhIGJ1ZyB0aGF0IG1lYW50CisgICAgICAgICAgICAgICAgICAgIHRoYXQgYW55IGl0ZW0gbm90IG1lbnRpb25lZCBpbiA8ZmlsZW5hbWU+RVJST1JfUUE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+V0FSTl9RQTwvZmlsZW5hbWU+IHdvdWxkIGJlIHRyZWF0ZWQgYXMgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHNldmVyYWwgaW1wb3J0YW50IGl0ZW1zIHdlcmUgbm90IGFscmVhZHkgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgb2YgPGZpbGVuYW1lPldBUk5fUUE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQWxsIG9mIHRoZSBwb3NzaWJsZSBRQSBjaGVja3MgYXJlIG5vdyBkb2N1bWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbiBhZGRpdGlvbmFsIFFBIGNoZWNrIGhhcyBiZWVuIGFkZGVkIHRvIGNoZWNrIGlmCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL3NoYXJlL2luZm8vZGlyPC9maWxlbmFtZT4gaXMgYmVpbmcgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBZb3VyIHJlY2lwZSBzaG91bGQgZGVsZXRlIHRoaXMgZmlsZSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlmICJtYWtlIGluc3RhbGwiIGlzIGluc3RhbGxpbmcgaXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgYnVpbGRoaXN0b3J5IGNsYXNzLCB0aGUgY2hlY2sgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIHZlcnNpb24gZ29pbmcgYmFja3dhcmRzIGlzIG5vdyBjb250cm9sbGVkIHVzaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmQgUUEgY2hlY2suCisgICAgICAgICAgICAgICAgICAgIFRodXMsIGlmIHlvdSBoYXZlIGN1c3RvbWl6ZWQgeW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVJST1JfUUE8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V0FSTl9RQTwvZmlsZW5hbWU+IHZhbHVlcyBhbmQgc3RpbGwgd2lzaCB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIHRoaXMgY2hlY2sgcGVyZm9ybWVkLCB5b3Ugc2hvdWxkIGFkZAorICAgICAgICAgICAgICAgICAgICAidmVyc2lvbi1nb2luZy1iYWNrd2FyZHMiIHRvIHlvdXIgdmFsdWUgZm9yIG9uZSBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgdmFyaWFibGVzIGRlcGVuZGluZyBvbiBob3cgeW91IHdpc2ggaXQgdG8gYmUgaGFuZGxlZC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkb2N1bWVudGVkIFFBIGNoZWNrcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWluc2FuZSc+PGZpbGVuYW1lPmluc2FuZS5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtZGlyZWN0b3J5LWxheW91dC1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkRpcmVjdG9yeSBMYXlvdXQgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRpcmVjdG9yeSBjaGFuZ2VzIGV4aXN0OgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE91dHB1dCBTREsgaW5zdGFsbGVyIGZpbGVzIGFyZSBub3cgbmFtZWQgdG8gaW5jbHVkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UgbmFtZSBhbmQgdHVuaW5nIGFyY2hpdGVjdHVyZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX05BTUUnPjxmaWxlbmFtZT5TREtfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEltYWdlcyBhbmQgcmVsYXRlZCBmaWxlcyBhcmUgbm93IGluc3RhbGxlZCBpbnRvIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUsIGluc3RlYWQgb2YgYSBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNvbnRhaW5pbmcgb3V0cHV0IGZpbGVzIGZvciBtdWx0aXBsZSBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX0lNQUdFJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JTUFHRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjb250aW51ZXMgdG8gcG9pbnQgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nCisgICAgICAgICAgICAgICAgICAgIGltYWdlcyBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgdXNlZCBhbnl3aGVyZSB0aGVyZSBpcyBhIG5lZWQgdG8gcmVmZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhpcyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHNjcmlwdCBub3cgdXNlcyB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGZpbmQgaW1hZ2VzIGFuZCBrZXJuZWwgYmluYXJpZXMgYW5kIHdpbGwgdXNlCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgdG8gZGV0ZXJtaW5lIHRoZSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQTE9ZX0RJUl9JTUFHRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBleHRlcm5hbCBlbnZpcm9ubWVudC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gYnVpbGRoaXN0b3J5IGlzIGVuYWJsZWQsIGl0cyBvdXRwdXQgaXMgbm93IHdyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBtYWtlcyBpdCBlYXNpZXIgdG8gZGVsZXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBhbmQgcHJlc2VydmUgdGhlIGJ1aWxkIGhpc3RvcnkuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgZGF0YSBmb3IgcHJvZHVjZWQgU0RLcyBpcyBub3cgc3BsaXQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX05BTUUnPjxmaWxlbmFtZT5JTUFHRV9OQU1FPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGtnZGF0YTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBwcm9kdWNlZCBhcworICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBwYWNrYWdpbmcgcHJvY2VzcyBoYXMgYmVlbiBjb2xsYXBzZWQgaW50byBhCisgICAgICAgICAgICAgICAgICAgIHNpbmdsZSBtYWNoaW5lLXNwZWNpZmljIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgbG9jYXRlZCB1bmRlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzcm9vdHM8L2ZpbGVuYW1lPiBhbmQgdXNlcyBhIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgbmFtZSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL3N5c3Jvb3RzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4vcGtnZGF0YTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS41LXNob3J0ZW5lZC1naXQtc3JjcmV2LXZhbHVlcyc+CisgICAgICAgIDx0aXRsZT5TaG9ydGVuZWQgR2l0IDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiBWYWx1ZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB3aWxsIG5vdyBzaG9ydGVuIHJldmlzaW9ucyBmcm9tIEdpdCByZXBvc2l0b3JpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgIG5vcm1hbCA0MCBjaGFyYWN0ZXJzIGRvd24gdG8gMTAgY2hhcmFjdGVycyB3aXRoaW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNQVic+PGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBmb3IgaW1wcm92ZWQgdXNhYmlsaXR5IGluIHBhdGggYW5kIGZpbGUgbmFtZXMuCisgICAgICAgICAgICBUaGlzIGNoYW5nZSBzaG91bGQgYmUgc2FmZSB3aXRoaW4gY29udGV4dHMgd2hlcmUgdGhlc2UgcmV2aXNpb25zCisgICAgICAgICAgICBhcmUgdXNlZCBiZWNhdXNlIHRoZSBjaGFuY2VzIG9mIHNwYXRpYWxseSBjbG9zZSBjb2xsaXNpb25zCisgICAgICAgICAgICBpcyB2ZXJ5IGxvdy4KKyAgICAgICAgICAgIERpc3RhbnQgY29sbGlzaW9ucyBhcmUgbm90IGEgbWFqb3IgaXNzdWUgaW4gdGhlIHdheQorICAgICAgICAgICAgdGhlIHZhbHVlcyBhcmUgdXNlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS41LWltYWdlLWZlYXR1cmVzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0aGF0IHJlbGF0ZSB0bworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IGlzIG5vdworICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWQgdG8gZW5zdXJlIGludmFsaWQgZmVhdHVyZSBpdGVtcyBhcmUgbm90IGFkZGVkLgorICAgICAgICAgICAgICAgICAgICBTb21lIHVzZXJzIG1pc3Rha2VubHkgYWRkIHBhY2thZ2UgbmFtZXMgdG8gdGhpcyB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBoYXZlIHRoZSBwYWNrYWdlIGFkZGVkIHRvIHRoZSBpbWFnZSwgd2hpY2ggZG9lcworICAgICAgICAgICAgICAgICAgICBub3Qgd29yay4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFuZ2UgaXMgaW50ZW5kZWQgdG8gY2F0Y2ggdGhvc2Uga2luZHMgb2Ygc2l0dWF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgVmFsaWQgPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gYXJlIGRyYXduIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfR1JPVVA8L2ZpbGVuYW1lPiBkZWZpbml0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPTVBMRU1FTlRBUllfR0xPQic+PGZpbGVuYW1lPkNPTVBMRU1FTlRBUllfR0xPQjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgYSBuZXcgInZhbGlkaXRlbXMiIHZhcmZsYWcgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSAidmFsaWRpdGVtcyIgdmFyZmxhZyBjaGFuZ2UgYWxsb3dzIGFkZGl0aW9uYWwgZmVhdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgYWRkZWQgaWYgdGhleSBhcmUgbm90IHByb3ZpZGVkIHVzaW5nIHRoZSBwcmV2aW91cworICAgICAgICAgICAgICAgICAgICB0d28gbWVjaGFuaXNtcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXNseSBkZXByZWNhdGVkICJhcHBzLWNvbnNvbGUtY29yZSIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gaXRlbSBpcyBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICBBZGQgInNwbGFzaCIgdG8gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gaWYgeW91CisgICAgICAgICAgICAgICAgICAgIHdpc2ggdG8gaGF2ZSB0aGUgc3BsYXNoIHNjcmVlbiBlbmFibGVkLCBzaW5jZSB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgIGFsbCB0aGF0IGFwcHMtY29uc29sZS1jb3JlIHdhcyBkb2luZy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtcnVuJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT4vcnVuPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4vcnVuPC9maWxlbmFtZT4gZGlyZWN0b3J5IGZyb20gdGhlIEZpbGVzeXN0ZW0KKyAgICAgICAgICAgIEhpZXJhcmNoeSBTdGFuZGFyZCAzLjAgaGFzIGJlZW4gaW50cm9kdWNlZC4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBzb21lIG9mIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHRoaXMgY2hhbmdlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2NvbW1pdC8/aWQ9MGUzMjYyODBhMTViMGYyYzRlZjJlZjRlYzQ0MWY2M2Y1NWI3NTg3Myc+aGVyZTwvdWxpbms+LgorICAgICAgICAgICAgVGhlIGNoYW5nZSBhbHNvIG1lYW5zIHRoYXQgcmVjaXBlcyB0aGF0IGluc3RhbGwgZmlsZXMgdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT4vdmFyL3J1bjwvZmlsZW5hbWU+IG11c3QgYmUgY2hhbmdlZC4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGd1aWRlIG9uIGhvdyB0byBtYWtlIHRoZXNlIGNoYW5nZXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmNvbXAuaGFuZGhlbGRzLm9wZW5lbWJlZGRlZC81ODUzMCc+aGVyZTwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtcmVtb3ZhbC1vZi1wYWNrYWdlLW1hbmFnZXItZGF0YWJhc2Utd2l0aGluLWltYWdlLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZhbCBvZiBQYWNrYWdlIE1hbmFnZXIgRGF0YWJhc2UgV2l0aGluIEltYWdlIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGltYWdlIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBubyBsb25nZXIgYWRkcworICAgICAgICAgICAgPGZpbGVuYW1lPnJlbW92ZV9wYWNrYWdpbmdfZGF0YV9maWxlczwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5ST09URlNfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIFRoaXMgYWRkaXRpb24gaXMgbm93IGhhbmRsZWQgYXV0b21hdGljYWxseSB3aGVuICJwYWNrYWdlLW1hbmFnZW1lbnQiCisgICAgICAgICAgICBpcyBub3QgaW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgSWYgeW91IGhhdmUgY3VzdG9tIGltYWdlIHJlY2lwZXMgdGhhdCBtYWtlIHRoaXMgYWRkaXRpb24sCisgICAgICAgICAgICB5b3Ugc2hvdWxkIHJlbW92ZSB0aGUgbGluZXMsIGFzIHRoZXkgYXJlIG5vdCBuZWVkZWQgYW5kIG1pZ2h0CisgICAgICAgICAgICBpbnRlcmZlcmUgd2l0aCBjb3JyZWN0IG9wZXJhdGlvbiBvZiBwb3N0aW5zdGFsbCBzY3JpcHRzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtaW1hZ2VzLW5vdy1yZWJ1aWxkLW9ubHktb24tY2hhbmdlcy1pbnN0ZWFkLW9mLWV2ZXJ5LXRpbWUnPgorICAgICAgICA8dGl0bGU+SW1hZ2VzIE5vdyBSZWJ1aWxkIE9ubHkgb24gQ2hhbmdlcyBJbnN0ZWFkIG9mIEV2ZXJ5IFRpbWU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQgb3RoZXIgcmVsYXRlZCBpbWFnZQorICAgICAgICAgICAgY29uc3RydWN0aW9uIHRhc2tzIGFyZSBubyBsb25nZXIgbWFya2VkIGFzICJub3N0YW1wIi4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhleSB3aWxsIG9ubHkgYmUgcmUtZXhlY3V0ZWQgd2hlbiB0aGVpciBpbnB1dHMgaGF2ZQorICAgICAgICAgICAgY2hhbmdlZC4KKyAgICAgICAgICAgIFByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFsd2F5cyByZWJ1aWx0CisgICAgICAgICAgICB0aGUgaW1hZ2Ugd2hlbiByZXF1ZXN0ZWQgcmF0aGVyIHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjUtdGFzay1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlRhc2sgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcHJldmlvdXNseSBkZXByZWNhdGVkIDxmaWxlbmFtZT50YXNrLmJiY2xhc3M8L2ZpbGVuYW1lPiBoYXMKKyAgICAgICAgICAgIG5vdyBiZWVuIGRyb3BwZWQuCisgICAgICAgICAgICBGb3IgcmVjaXBlcyB0aGF0IHByZXZpb3VzbHkgaW5oZXJpdGVkIGZyb20gdGhpcyBjbGFzcywgeW91IHNob3VsZAorICAgICAgICAgICAgcmVuYW1lIHRoZW0gZnJvbSA8ZmlsZW5hbWU+dGFzay0qPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtKjwvZmlsZW5hbWU+IGFuZCBpbmhlcml0IHBhY2thZ2Vncm91cAorICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlZ3JvdXAnPjxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNS1idXN5Ym94Jz4KKyAgICAgICAgPHRpdGxlPkJ1c3lCb3g8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgd2Ugbm93IHNwbGl0IEJ1c3lCb3ggaW50byB0d28gYmluYXJpZXM6CisgICAgICAgICAgICBvbmUgdGhhdCBpcyBzdWlkIHJvb3QgZm9yIHRob3NlIGNvbXBvbmVudHMgdGhhdCBuZWVkIGl0LCBhbmQKKyAgICAgICAgICAgIGFub3RoZXIgZm9yIHRoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzLgorICAgICAgICAgICAgU3BsaXR0aW5nIEJ1c3lCb3ggYWxsb3dzIGZvciBvcHRpbWl6YXRpb24gdGhhdCBlbGltaW5hdGVzIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnRpbnlsb2dpbjwvZmlsZW5hbWU+IHJlY2lwZSBhcyByZWNvbW1lbmRlZCBieSB1cHN0cmVhbS4KKyAgICAgICAgICAgIFlvdSBjYW4gZGlzYWJsZSB0aGlzIHNwbGl0IGJ5IHNldHRpbmcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVVNZQk9YX1NQTElUX1NVSUQnPjxmaWxlbmFtZT5CVVNZQk9YX1NQTElUX1NVSUQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRvICIwIi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS41LWF1dG9tYXRlZC1pbWFnZS10ZXN0aW5nJz4KKyAgICAgICAgPHRpdGxlPkF1dG9tYXRlZCBJbWFnZSBUZXN0aW5nPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEEgbmV3IGF1dG9tYXRlZCBpbWFnZSB0ZXN0aW5nIGZyYW1ld29yayBoYXMgYmVlbiBhZGRlZAorICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXRlc3RpbWFnZSonPjxmaWxlbmFtZT50ZXN0aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICBUaGlzIGZyYW1ld29yayByZXBsYWNlcyB0aGUgb2xkZXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZXRlc3QtcWVtdTwvZmlsZW5hbWU+IGZyYW1ld29yay4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHBlcmZvcm1pbmcgYXV0b21hdGVkIGltYWdlIHRlc3RzIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS41LWJ1aWxkLWhpc3RvcnknPgorICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGNoYW5nZXMgdG8gQnVpbGQgSGlzdG9yeToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbGVkIHBhY2thZ2Ugc2l6ZXM6CisgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2Utc2l6ZXMudHh0PC9maWxlbmFtZT4gZm9yIGFuCisgICAgICAgICAgICAgICAgICAgICBpbWFnZSBub3cgcmVjb3JkcyB0aGUgc2l6ZSBvZiB0aGUgZmlsZXMgaW5zdGFsbGVkIGJ5IGVhY2gKKyAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgaW5zdGVhZCBvZiB0aGUgc2l6ZSBvZiBlYWNoIGNvbXByZXNzZWQgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZSBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlcGVuZGVuY3kgZ3JhcGhzICg8ZmlsZW5hbWU+ZGVwZW5kcyouZG90PC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIG5vdyB1c2UgdGhlIGFjdHVhbCBwYWNrYWdlIG5hbWVzIGluc3RlYWQgb2YgcmVwbGFjaW5nCisgICAgICAgICAgICAgICAgICAgIGRhc2hlcywgZG90cyBhbmQgcGx1cyBzaWducyB3aXRoIHVuZGVyc2NvcmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YnVpbGRoaXN0b3J5LWRpZmY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB1dGlsaXRpZXMgaGF2ZSBpbXByb3ZlZCBjb21tYW5kLWxpbmUgaGFuZGxpbmcuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPi0taGVscDwvZmlsZW5hbWU+IG9wdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgZWFjaCB1dGlsaXR5IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBuZXcgc3ludGF4LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQnVpbGQgSGlzdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNS11ZGV2Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBjaGFuZ2VzIHRvIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT46CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPiBubyBsb25nZXIgYnJpbmdzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51ZGV2LWV4dHJhY29uZjwvZmlsZW5hbWU+IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgc2luY2UgdGhpcyB3YXMgb3JpZ2luYWxseSBpbnRlbmRlZCB0byBiZSBvcHRpb25hbC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdGhlIGV4dHJhIHJ1bGVzLCB0aGVuIGFkZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dWRldi1leHRyYWNvbmY8L2ZpbGVuYW1lPiB0byB5b3VyIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4gbm8gbG9uZ2VyIGJyaW5ncyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGNpdXRpbHMtaWRzPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVzYnV0aWxzLWlkczwvZmlsZW5hbWU+IHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGFyZSBub3QgbmVlZGVkIGJ5IDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4gaXRzZWxmCisgICAgICAgICAgICAgICAgICAgIGFuZCByZW1vdmluZyB0aGVtIHNhdmVzIGFyb3VuZCAzNTBLQi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS41LXJlbW92ZWQtcmVuYW1lZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgYW5kIFJlbmFtZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gMy4yIGtlcm5lbCBoYXMgYmVlbgorICAgICAgICAgICAgICAgIHJlbW92ZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2wtbmF0aXZlc2RrPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVuYW1lZCB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstbGlidG9vbDwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50aW55bG9naW48L2ZpbGVuYW1lPiBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgIEl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEgc3VpZCBwb3J0aW9uIG9mIEJ1c3lib3guCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtaWdyYXRpb24tMS41LWJ1c3lib3gnPkJ1c3lCb3g8L2xpbms+IiBzZWN0aW9uCisgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dGVybmFsLXB5dGhvbi10YXJiYWxsPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVuYW1lZAorICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5idWlsZHRvb2xzLXRhcmJhbGw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ViLXdlYmtpdDwvZmlsZW5hbWU+IGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgSXQgaGFzIGJlZW4gZnVuY3Rpb25hbGx5IHJlcGxhY2VkIGJ5CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1pZG9yaTwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFrZTwvZmlsZW5hbWU+IGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgSXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCBieSBhbnkgb3RoZXIgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50cmFuc2ZpZy1uYXRpdmU8L2ZpbGVuYW1lPiBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgIEl0IGlzIG5vIGxvbmdlciBuZWVkZWQgYnkgYW55IG90aGVyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YW5qdXRhLXJlbW90ZS1ydW48L2ZpbGVuYW1lPiBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgIEFuanV0YSBJREUgaW50ZWdyYXRpb24gaGFzIG5vdCBiZWVuIG9mZmljaWFsbHkgc3VwcG9ydGVkIGZvcgorICAgICAgICAgICAgICAgIHNldmVyYWwgcmVsZWFzZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS41LW90aGVyLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+T3RoZXIgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHNob3J0IGVudHJpZXMgZGVzY3JpYmluZyBvdGhlciBjaGFuZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW4tcG9zdGluc3RzPC9maWxlbmFtZT46IE1ha2UgdGhpcyBnZW5lcmljLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzPC9maWxlbmFtZT46IFJlbW92ZSB0aGUgdW5uZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lZGlhLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnh4eDwvcmVwbGFjZWFibGU+IGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbHNhLXN0YXRlPC9maWxlbmFtZT46IFByb3ZpZGUgYW4gZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFzb3VuZC5jb25mPC9maWxlbmFtZT4gYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3Nlcy9pbWFnZTwvZmlsZW5hbWU+OiBFbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJBRF9SRUNPTU1FTkRBVElPTlMnPjxmaWxlbmFtZT5CQURfUkVDT01NRU5EQVRJT05TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIHByZS1yZW5hbWVkIHBhY2thZ2UgbmFtZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3Nlcy9yb290ZnNfcnBtPC9maWxlbmFtZT46IEltcGxlbWVudAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+IGZvciBSUE0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPjogUmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kX3VuaXRkaXI8L2ZpbGVuYW1lPiBpZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IGlzIG5vdCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kPC9maWxlbmFtZT46IFJlbW92ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5pdC5kPC9maWxlbmFtZT4gZGlyIGlmCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kPC9maWxlbmFtZT4gdW5pdCBmaWxlIGlzIHByZXNlbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN2aW5pdDwvZmlsZW5hbWU+IGlzIG5vdCBhIGRpc3RybyBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJwYW08L2ZpbGVuYW1lPjogRGVueSBhbGwgc2VydmljZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T1RIRVI8L2ZpbGVuYW1lPiBlbnRyaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT46IE1vdmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnRpbWVfbWFwcGluZ19yZW5hbWU8L2ZpbGVuYW1lPiB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICBjb25mbGljdCB3aXRoIDxmaWxlbmFtZT5tdWx0aWxpYjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD00OTkzJz48ZmlsZW5hbWU+WU9DVE8gIzQ5OTM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGluIEJ1Z3ppbGxhIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC1kdGI8L2ZpbGVuYW1lPjogVXNlIGtlcm5lbCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgdGhlIDxmaWxlbmFtZT5kdGI8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2Vybi10b29sczwvZmlsZW5hbWU+OiBTd2l0Y2ggZnJvbSBndWlsdCB0bworICAgICAgICAgICAgICAgICAgICBuZXcgPGZpbGVuYW1lPmtnaXQtczJxPC9maWxlbmFtZT4gdG9vbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0xLjYtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1hcmNoaXZlci1jbGFzcyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPiBDbGFzczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWFyY2hpdmVyJz48ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzIGhhcyBiZWVuIHJld3JpdHRlbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gc2ltcGxpZmllZC4KKyAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMgb24gdGhlIHNvdXJjZSBhcmNoaXZlciwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS42LXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcGFja2FnaW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGU6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+IHJlY2lwZSBubyBsb25nZXIgcHJvZHVjZXMKKyAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+YmludXRpbHMtc3ltbGlua3M8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlczwvZmlsZW5hbWU+IGlzIG5vdyB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSB0aGUgcHJlZmVycmVkIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgb24gdGhlIHRhcmdldCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0YyAodHJhZmZpYyBjb250cm9sKSB1dGlsaXRpZXMgaGF2ZSBiZWVuIHNwbGl0IG91dCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgbWFpbiA8ZmlsZW5hbWU+aXByb3V0ZTI8L2ZpbGVuYW1lPiBwYWNrYWdlIGFuZCBwdXQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgPGZpbGVuYW1lPmlwcm91dGUyLXRjPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmd0ay1lbmdpbmVzPC9maWxlbmFtZT4gc2NoZW1hcyBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgbW92ZWQgdG8gYSBkZWRpY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ay1lbmdpbmVzLXNjaGVtYXM8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YXJtdjdhPC9maWxlbmFtZT4gd2l0aCB0aHVtYiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBzdWZmaXggaGFzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzdWZmaXggZm9yIHRoZXNlIHBhY2thZ2VzIHdpdGggdGhlIHRodW1iCisgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbiBlbmFibGVkIGlzICJ0MiIgYXMgaXQgc2hvdWxkIGJlLgorICAgICAgICAgICAgICAgICAgICBVc2Ugb2YgdGhpcyBzdWZmaXggd2FzIG5vdCB0aGUgY2FzZSBpbiB0aGUgMS41IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIEFyY2hpdGVjdHVyZSBuYW1lcyB3aWxsIGNoYW5nZSB3aXRoaW4gcGFja2FnZSBmZWVkcyBhcyBhCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS42LWJpdGJha2UnPgorICAgICAgICA8dGl0bGU+Qml0QmFrZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1tYXRjaGluZy1icmFuY2gtcmVxdWlyZW1lbnQtZm9yLWdpdC1mZXRjaGluZyc+CisgICAgICAgICAgICA8dGl0bGU+TWF0Y2hpbmcgQnJhbmNoIFJlcXVpcmVtZW50IGZvciBHaXQgRmV0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIGZldGNoaW5nIHNvdXJjZSBmcm9tIGEgR2l0IHJlcG9zaXRvcnkgdXNpbmcKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgQml0QmFrZSB3aWxsIG5vdyB2YWxpZGF0ZSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFsdWUgYWdhaW5zdCB0aGUgYnJhbmNoLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSB0aGUgYnJhbmNoIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiZ2l0Oi8vc2VydmVyLm5hbWUvcmVwb3NpdG9yeTticmFuY2g9PHJlcGxhY2VhYmxlPmJyYW5jaG5hbWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgYnJhbmNoLCBCaXRCYWtlIGxvb2tzCisgICAgICAgICAgICAgICAgaW4gdGhlIGRlZmF1bHQgIm1hc3RlciIgYnJhbmNoLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgbmVlZCB0byBieXBhc3MgdGhpcyBjaGVjayAoZS5nLgorICAgICAgICAgICAgICAgIGlmIHlvdSBhcmUgZmV0Y2hpbmcgYSByZXZpc2lvbiBjb3JyZXNwb25kaW5nIHRvIGEgdGFnIHRoYXQKKyAgICAgICAgICAgICAgICBpcyBub3Qgb24gYW55IGJyYW5jaCksIHlvdSBjYW4gYWRkICI7bm9icmFuY2g9MSIgdG8KKyAgICAgICAgICAgICAgICB0aGUgZW5kIG9mIHRoZSBVUkwgd2l0aGluIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1iaXRiYWtlLWRlcHMnPgorICAgICAgICAgICAgPHRpdGxlPlB5dGhvbiBEZWZpbml0aW9uIHN1YnN0aXR1dGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGhhZCBzb21lIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBQeXRob24gZGVmaW5pdGlvbnMKKyAgICAgICAgICAgICAgICB3aXRoaW4gaXRzIDxmaWxlbmFtZT5iYjwvZmlsZW5hbWU+IG1vZHVsZSByZW1vdmVkLgorICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgdXNlIHRoZWlyIHN1Yi1tb2R1bGUgY291bnRlcnBhcnRzIGluc3RlYWQ6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iYi5NYWxmb3JtZWRVcmw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+YmIuZmV0Y2guTWFsZm9ybWVkVXJsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iYi5lbmNvZGV1cmw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+YmIuZmV0Y2guZW5jb2RldXJsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iYi5kZWNvZGV1cmw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+YmIuZmV0Y2guZGVjb2RldXJsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJiLm1rZGlyaGllcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIDxmaWxlbmFtZT5iYi51dGlscy5ta2RpcmhpZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJiLm1vdmVmaWxlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgPGZpbGVuYW1lPmJiLnV0aWxzLm1vdmVmaWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iYi5jb3B5ZmlsZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIDxmaWxlbmFtZT5iYi51dGlscy5jb3B5ZmlsZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YmIud2hpY2g8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+YmIudXRpbHMud2hpY2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJiLnZlcmNtcF9zdHJpbmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+YmIudXRpbHMudmVyY21wX3N0cmluZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YmIudmVyY21wPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgPGZpbGVuYW1lPmJiLnV0aWxzLnZlcmNtcDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1iaXRiYWtlLWZldGNoZXInPgorICAgICAgICAgICAgPHRpdGxlPlNWSyBGZXRjaGVyPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFNWSyBmZXRjaGVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBCaXRCYWtlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtYml0YmFrZS1jb25zb2xlLW91dHB1dCc+CisgICAgICAgICAgICA8dGl0bGU+Q29uc29sZSBPdXRwdXQgRXJyb3IgUmVkaXJlY3Rpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBjb25zb2xlIFVJIHdpbGwgbm93IG91dHB1dCBlcnJvcnMgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3RkZXJyPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdGRvdXQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGlmIHlvdSBhcmUgcGlwaW5nIG9yIHJlZGlyZWN0aW5nIHRoZSBvdXRwdXQgb2YKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IHRvIHNvbWV3aGVyZSBlbHNlLCBhbmQgeW91IHdpc2gKKyAgICAgICAgICAgICAgICB0byByZXRhaW4gdGhlIGVycm9ycywgeW91IHdpbGwgbmVlZCB0byBhZGQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Mj4mYW1wOzE8L2ZpbGVuYW1lPiAob3Igc29tZXRoaW5nIHNpbWlsYXIpIHRvIHRoZQorICAgICAgICAgICAgICAgIGVuZCBvZiB5b3VyIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBsaW5lLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdGFzay10YXNrbmFtZS1vdmVycmlkZXMnPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT50YXNrLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT4gT3ZlcnJpZGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPiBvdmVycmlkZXMgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgYWRqdXN0ZWQgc28gdGhhdCB0YXNrcyB3aG9zZSBuYW1lcyBjb250YWluIHVuZGVyc2NvcmVzIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgdW5kZXJzY29yZXMgcmVwbGFjZWQgYnkgaHlwaGVucyBmb3IgdGhlIG92ZXJyaWRlIHNvIHRoYXQgdGhleQorICAgICAgICAgICAgICAgIG5vdyBmdW5jdGlvbiBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHRhc2sgb3ZlcnJpZGUgZm9yCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3Nkayc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGlzIDxmaWxlbmFtZT50YXNrLXBvcHVsYXRlLXNkazwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdmFyaWFibGUtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5DaGFuZ2VzIHRvIFZhcmlhYmxlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBoYXZlIGNoYW5nZWQuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdmFyaWFibGVzLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXZhcmlhYmxlcy1nbG9zJz5WYXJpYWJsZXMgR2xvc3Nhcnk8L2xpbms+IiBDaGFwdGVyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdmFyaWFibGUtY2hhbmdlcy1UTVBESVInPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjYW4gbm8gbG9uZ2VyIGJlIG9uIGFuIE5GUyBtb3VudC4KKyAgICAgICAgICAgICAgICBORlMgZG9lcyBub3Qgb2ZmZXIgZnVsbCBQT1NJWCBsb2NraW5nIGFuZCBpbm9kZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgIGFuZCBjYW4gY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMgaWYgdXNlZCB0byBzdG9yZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGNoZWNrIGZvciB0aGlzIG9jY3VycyBvbiBzdGFydHVwLgorICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBpcyBkZXRlY3RlZCBvbiBhbiBORlMgbW91bnQsCisgICAgICAgICAgICAgICAgYW4gZXJyb3Igb2NjdXJzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdmFyaWFibGUtY2hhbmdlcy1QUklOQyc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPlBSSU5DPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBSSU5DPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB0cmlnZ2VycyBhIHdhcm5pbmcgaWYKKyAgICAgICAgICAgICAgICBkZXRlY3RlZCBkdXJpbmcgYSBidWlsZC4KKyAgICAgICAgICAgICAgICBGb3IKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGluY3JlbWVudHMgb24gY2hhbmdlcywgdXNlIHRoZSBQUiBzZXJ2aWNlIGluc3RlYWQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoaXMgc2VydmljZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLWEtcHItc2VydmljZSc+V29ya2luZyBXaXRoIGEgUFIgU2VydmljZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdmFyaWFibGUtY2hhbmdlcy1JTUFHRV9UWVBFUyc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPklNQUdFX1RZUEVTPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgInN1bS5qZmZzMiIgb3B0aW9uIGZvcgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9UWVBFUyc+PGZpbGVuYW1lPklNQUdFX1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlICJqZmZzMi5zdW0iIG9wdGlvbiwgd2hpY2ggZml0cyB0aGUKKyAgICAgICAgICAgICAgICBwcm9jZXNzaW5nIG9yZGVyLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdmFyaWFibGUtY2hhbmdlcy1DT1BZX0xJQ19NQU5JRkVTVCc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPkNPUFlfTElDX01BTklGRVNUPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09QWV9MSUNfTUFOSUZFU1QnPjxmaWxlbmFtZT5DT1BZX0xJQ19NQU5JRkVTVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIG11c3QKKyAgICAgICAgICAgICAgICBub3cgYmUgc2V0IHRvICIxIiByYXRoZXIgdGhhbiBhbnkgdmFsdWUgaW4gb3JkZXIgdG8gZW5hYmxlCisgICAgICAgICAgICAgICAgaXQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi12YXJpYWJsZS1jaGFuZ2VzLUNPUFlfTElDX0RJUlMnPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5DT1BZX0xJQ19ESVJTPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09QWV9MSUNfRElSUyc+PGZpbGVuYW1lPkNPUFlfTElDX0RJUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBtdXN0CisgICAgICAgICAgICAgICAgbm93IGJlIHNldCB0byAiMSIgcmF0aGVyIHRoYW4gYW55IHZhbHVlIGluIG9yZGVyIHRvIGVuYWJsZQorICAgICAgICAgICAgICAgIGl0LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdmFyaWFibGUtY2hhbmdlcy1QQUNLQUdFX0dST1VQJz4KKyAgICAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+UEFDS0FHRV9HUk9VUDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfR1JPVVA8L2ZpbGVuYW1lPiB2YXJpYWJsZSBoYXMgYmVlbiByZW5hbWVkIHRvCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZFQVRVUkVfUEFDS0FHRVMnPjxmaWxlbmFtZT5GRUFUVVJFX1BBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgaXRzIHB1cnBvc2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzdGlsbCB1c2UgPGZpbGVuYW1lPlBBQ0tBR0VfR1JPVVA8L2ZpbGVuYW1lPiBidXQKKyAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwcm9kdWNlcyBhIHdhcm5pbmcgbWVzc2FnZSB3aGVuCisgICAgICAgICAgICAgICAgaXQgZW5jb3VudGVycyB0aGUgdmFyaWFibGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi12YXJpYWJsZS1jaGFuZ2VzLXZhcmlhYmxlLWVudHJ5LWJlaGF2aW9yJz4KKyAgICAgICAgICAgIDx0aXRsZT5QcmVwcm9jZXNzIGFuZCBQb3N0IFByb2Nlc3MgQ29tbWFuZCBWYXJpYWJsZSBCZWhhdmlvcjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIG5vdyBleHBlY3QgYSBzZW1pY29sb24gc2VwYXJhdGVkCisgICAgICAgICAgICAgICAgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhbmQgbm90IGFyYml0cmFyeSBzaGVsbCBjb21tYW5kczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ST09URlNfUFJFUFJPQ0VTU19DT01NQU5EJz5ST09URlNfUFJFUFJPQ0VTU19DT01NQU5EPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnPlJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQnPlNES19QT1NUUFJPQ0VTU19DT01NQU5EPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQnPlBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EJz5QT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQ8L2xpbms+CisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EJz5JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EJz5JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ8L2xpbms+CisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ST09URlNfUE9TVFVOSU5TVEFMTF9DT01NQU5EJz5ST09URlNfUE9TVFVOSU5TVEFMTF9DT01NQU5EPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUk9PVEZTX1BPU1RJTlNUQUxMX0NPTU1BTkQnPlJPT1RGU19QT1NUSU5TVEFMTF9DT01NQU5EPC9saW5rPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgbWlncmF0aW9uIHB1cnBvc2VzLCB5b3UgY2FuIHNpbXBseSB3cmFwIHNoZWxsIGNvbW1hbmRzIGluCisgICAgICAgICAgICAgICAgYSBzaGVsbCBmdW5jdGlvbiBhbmQgdGhlbiBjYWxsIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBteV9wb3N0cHJvY2Vzc19mdW5jdGlvbigpIHsKKyAgICAgICAgZWNobyAiaGVsbG8iID4gJHtJTUFHRV9ST09URlN9L2hlbGxvLnR4dAorICAgICB9CisgICAgIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICJteV9wb3N0cHJvY2Vzc19mdW5jdGlvbjsgIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS42LXBhY2thZ2UtdGVzdC1wdGVzdCc+CisgICAgICAgIDx0aXRsZT5QYWNrYWdlIFRlc3QgKHB0ZXN0KTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQYWNrYWdlIFRlc3RzIChwdGVzdCkgYXJlIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUGFja2FnZSBUZXN0cywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyB3aXRoIHB0ZXN0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnB0ZXN0PC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wdGVzdCc+PGZpbGVuYW1lPnB0ZXN0LmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtYnVpbGQtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5CdWlsZCBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNlcGFyYXRlIGJ1aWxkIGFuZCBzb3VyY2UgZGlyZWN0b3JpZXMgaGF2ZSBiZWVuIGVuYWJsZWQKKyAgICAgICAgICAgIGJ5IGRlZmF1bHQgZm9yIHNlbGVjdGVkIHJlY2lwZXMgd2hlcmUgaXQgaXMga25vd24gdG8gd29yaworICAgICAgICAgICAgKGEgd2hpdGVsaXN0KSBhbmQgZm9yIGFsbCByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNtYWtlJz48ZmlsZW5hbWU+Y21ha2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgSW4gZnV0dXJlIHJlbGVhc2VzIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzcyB3aWxsIGVuYWJsZSBhIHNlcGFyYXRlIGJ1aWxkIGRpcmVjdG9yeSBieSBkZWZhdWx0IGFzCisgICAgICAgICAgICB3ZWxsLgorICAgICAgICAgICAgUmVjaXBlcyBidWlsZGluZyBBdXRvdG9vbHMtYmFzZWQKKyAgICAgICAgICAgIHNvZnR3YXJlIHRoYXQgZmFpbHMgdG8gYnVpbGQgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkIGRpcmVjdG9yeQorICAgICAgICAgICAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gaW5oZXJpdCBmcm9tIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzLWJyb2tlbnNlcDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MgaW5zdGVhZCBvZiB0aGUgPGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzX3N0YWdlPC9maWxlbmFtZT5jbGFzc2VzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtYnVpbGRpbmctcWVtdS1uYXRpdmUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnFlbXUtbmF0aXZlPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXUtbmF0aXZlPC9maWxlbmFtZT4gbm93IGJ1aWxkcyB3aXRob3V0CisgICAgICAgICAgICBTREwtYmFzZWQgZ3JhcGhpY2FsIG91dHB1dCBzdXBwb3J0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbGluZXMgYXJlIG5lZWRlZCBpbiB5b3VyCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHRvIGVuYWJsZSBpdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRUNPTkZJR19wbi1xZW11LW5hdGl2ZSA9ICJzZGwiCisgICAgIEFTU1VNRV9QUk9WSURFRCArPSAibGlic2RsLW5hdGl2ZSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb250YWlucyB0aGVzZSBzdGF0ZW1lbnRzLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IGFyZSBidWlsZGluZyBhIGhlYWRsZXNzIHN5c3RlbSBhbmQgdXNpbmcKKyAgICAgICAgICAgICAgICBhIGRlZmF1bHQgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB5b3Ugd2lsbCBuZWVkCisgICAgICAgICAgICAgICAgY29tbWVudCB0aGVzZSB0d28gbGluZXMgb3V0LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtY29yZS1pbWFnZS1iYXNpYyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1iYXNpYzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLWJhc2ljPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVuYW1lZCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIDxmaWxlbmFtZT5jb3JlLWltYWdlLWJhc2ljPC9maWxlbmFtZT4gYmVpbmcgcmVuYW1lZCwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1iYXNpYzwvZmlsZW5hbWU+IGhhcyBiZWVuIHJlbmFtZWQgdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPiB0byBtYXRjaC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS42LWxpY2Vuc2luZyc+CisgICAgICAgIDx0aXRsZT5MaWNlbnNpbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IGZpbGUgaGFzIGJlZW4gY2hhbmdlZAorICAgICAgICAgICAgdG8gYmV0dGVyIGRlc2NyaWJlIHRoZSBsaWNlbnNlIG9mIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgb2YKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+LgorICAgICAgICAgICAgSG93ZXZlciwgdGhlIGxpY2Vuc2luZyBpdHNlbGYgcmVtYWlucyB1bmNoYW5nZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGNoYW5nZSB3b3VsZCBub3QgY2F1c2UgYW55IHNpZGUtZWZmZWN0cy4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHNvbWUgcmVjaXBlcyBwb2ludCB0byB0aGlzIGZpbGUgd2l0aGluCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDX0ZJTEVTX0NIS1NVTSc+PGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIChhcyA8ZmlsZW5hbWU+JHtDT1JFQkFTRX0vTElDRU5TRTwvZmlsZW5hbWU+KSBhbmQgdGh1cyB0aGUKKyAgICAgICAgICAgIGFjY29tcGFueWluZyBjaGVja3N1bSBtdXN0IGJlIGNoYW5nZWQgZnJvbQorICAgICAgICAgICAgM2Y0MGQ3OTk0Mzk3MTA5Mjg1ZWM3YjgxZmRlYjNiNTggdG8KKyAgICAgICAgICAgIDRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwLgorICAgICAgICAgICAgQSBiZXR0ZXIgYWx0ZXJuYXRpdmUgaXMgdG8gaGF2ZQorICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiBwb2ludCB0byBhIGZpbGUKKyAgICAgICAgICAgIGRlc2NyaWJpbmcgdGhlIGxpY2Vuc2UgdGhhdCBpcyBkaXN0cmlidXRlZCB3aXRoIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIHRoYXQgdGhlIHJlY2lwZSBpcyBidWlsZGluZywgaWYgcG9zc2libGUsIHJhdGhlciB0aGFuIHBvaW50aW5nCisgICAgICAgICAgICB0byA8ZmlsZW5hbWU+JHtDT1JFQkFTRX0vTElDRU5TRTwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtY2ZsYWdzLW9wdGlvbnMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPkNGTEFHUzwvZmlsZW5hbWU+IE9wdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlICItZnBlcm1pc3NpdmUiIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DRkxBR1MnPjxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhbHVlLgorICAgICAgICAgICAgWW91IG5lZWQgdG8gdGFrZSBhY3Rpb24gb24gaW5kaXZpZHVhbCByZWNpcGVzIHRoYXQgZmFpbCB3aGVuCisgICAgICAgICAgICBidWlsZGluZyB3aXRoIHRoaXMgb3B0aW9uLgorICAgICAgICAgICAgWW91IG5lZWQgdG8gZWl0aGVyIHBhdGNoIHRoZSByZWNpcGVzIHRvIGZpeCB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5CisgICAgICAgICAgICB0aGUgY29tcGlsZXIsIG9yIHlvdSBuZWVkIHRvIGFkZCAiLWZwZXJtaXNzaXZlIiB0bworICAgICAgICAgICAgPGZpbGVuYW1lPkNGTEFHUzwvZmlsZW5hbWU+IGluIHRoZSByZWNpcGVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtY3VzdG9tLWltYWdlcyc+CisgICAgICAgIDx0aXRsZT5DdXN0b20gSW1hZ2UgT3V0cHV0IFR5cGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEN1c3RvbSBpbWFnZSBvdXRwdXQgdHlwZXMsIGFzIHNlbGVjdGVkIHVzaW5nCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICBtdXN0IGRlY2xhcmUgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGltYWdlIHR5cGVzIChpZiBhbnkpIHVzaW5nCisgICAgICAgICAgICBhIG5ldworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1RZUEVERVAnPjxmaWxlbmFtZT5JTUFHRV9UWVBFREVQPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS42LWRvLXBhY2thZ2Utd3JpdGUtdGFzayc+CisgICAgICAgIDx0aXRsZT5UYXNrczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGU8L2ZpbGVuYW1lPiB0YXNrIGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICBUaGUgdGFzayBpcyBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtdXBkYXRlLWFsdGVybmF0aXZlcy1wcm92aWRlcic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlPC9maWxlbmFtZT4gUHJvdmlkZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGRlZmF1bHQgPGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXM8L2ZpbGVuYW1lPiBwcm92aWRlciBoYXMKKyAgICAgICAgICAgIGJlZW4gY2hhbmdlZCBmcm9tIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT5vcGtnLXV0aWxzPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGlzIGNoYW5nZSByZXNvbHZlcyBzb21lIHRyb3VibGVzb21lIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIFRoZSBydW50aW1lIHBhY2thZ2UgaGFzIGFsc28gYmVlbiByZW5hbWVkIGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0byA8ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi12aXJ0Y2xhc3Mtb3ZlcnJpZGVzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT52aXJ0Y2xhc3M8L2ZpbGVuYW1lPiBPdmVycmlkZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT52aXJ0Y2xhc3M8L2ZpbGVuYW1lPiBvdmVycmlkZXMgYXJlIG5vdyBkZXByZWNhdGVkLgorICAgICAgICAgICAgVXNlIHRoZSBlcXVpdmFsZW50IGNsYXNzIG92ZXJyaWRlcyBpbnN0ZWFkIChlLmcuCisgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydGNsYXNzLW5hdGl2ZTwvZmlsZW5hbWU+IGJlY29tZXMKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzcy1uYXRpdmU8L2ZpbGVuYW1lPi4pCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1yZW1vdmVkLXJlbmFtZWQtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIGFuZCBSZW5hbWVkIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnBhY2thZ2Vncm91cC10b29sc2V0LW5hdGl2ZTwvZmlsZW5hbWU+IC0KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgbGFyZ2VseSB1bnVzZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgteW9jdG8tMy44PC9maWxlbmFtZT4gLQorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgTGludXggeW9jdG8gMy44IGtlcm5lbCBoYXMgYmVlbiBkcm9wcGVkLgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgMy4xMCBhbmQgMy4xNCBrZXJuZWxzIGhhdmUgYmVlbiBhZGRlZAorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xMDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNDwvZmlsZW5hbWU+IHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+b2NmLWxpbnV4PC9maWxlbmFtZT4gLQorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgYmVlbiBmdW5jdGlvbmFsbHkgcmVwbGFjZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyeXB0b2Rldi1saW51eDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdlbmV4dDJmczwvZmlsZW5hbWU+IC0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdlbmV4dDJmczwvZmlsZW5hbWU+IGlzIG5vIGxvbmdlciB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gYW5kIGlzIHVubWFpbnRhaW5lZCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5qczwvZmlsZW5hbWU+IC0KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBwcm92aWRlZCBhbiBhbmNpZW50IHZlcnNpb24gb2YgTW96aWxsYSdzIGphdmFzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgZW5naW5lIHRoYXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT56YXVydXNkPC9maWxlbmFtZT4gLQorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGhhcyBiZWVuIG1vdmVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1oYW5kaGVsZDwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmVnbGliYyAyLjE3PC9maWxlbmFtZT4gLQorICAgICAgICAgICAgICAgICAgICBSZXBsYWNlZCBieSB0aGUgPGZpbGVuYW1lPmVnbGliYyAyLjE5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYyA0LjcuMjwvZmlsZW5hbWU+IC0KKyAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWQgYnkgdGhlIG5vdyBzdGFibGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYyA0LjguMjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmV4dGVybmFsLXNvdXJjZXJ5LXRvb2xjaGFpbjwvZmlsZW5hbWU+IC0KKyAgICAgICAgICAgICAgICAgICAgdGhpcyByZWNpcGUgaXMgbm93IG1haW50YWluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNvdXJjZXJ5PC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgtbGliYy1oZWFkZXJzLXlvY3RvIDMuNCtnaXQ8L2ZpbGVuYW1lPiAtCisgICAgICAgICAgICAgICAgICAgIE5vdyB1c2luZyB2ZXJzaW9uIDMuMTAgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnM8L2ZpbGVuYW1lPiBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm1ldGEtdG9vbGNoYWluLWdtYWU8L2ZpbGVuYW1lPiAtCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXNkay1nbWFlPC9maWxlbmFtZT4gLQorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1zdGFuZGFsb25lLWdtYWUtc2RrLXRhcmdldDwvZmlsZW5hbWU+IC0KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgb2Jzb2xldGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1yZW1vdmVkLWNsYXNzZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBDbGFzc2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBoYXZlIGJlY29tZSBvYnNvbGV0ZSBhbmQgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bW9kdWxlX3N0cmlwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5wa2dfbWV0YWluZm88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnBrZ19kaXN0cmlidXRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbWFnZS1lbXB0eTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNi1yZWZlcmVuY2UtYnNwcyc+CisgICAgICAgIDx0aXRsZT5SZWZlcmVuY2UgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcyk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWZlcmVuY2UgQlNQcyBjaGFuZ2VzIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEJlYWdsZUJvYXJkCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+YmVhZ2xlYm9hcmQ8L2ZpbGVuYW1lPikgQVJNIHJlZmVyZW5jZSBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUgQmVhZ2xlQm9uZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmJlYWdsZWJvbmU8L2ZpbGVuYW1lPikgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgUm91dGVyU3RhdGlvbiBQcm8KKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5yb3V0ZXJzdGF0aW9ucHJvPC9maWxlbmFtZT4pIE1JUFMgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSBFZGdlUm91dGVyIExpdGUKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4pIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgVGhlIHByZXZpb3VzIHJlZmVyZW5jZSBCU1BzIGZvciB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iZWFnbGVib2FyZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPnJvdXRlcnN0YXRpb25wcm88L2ZpbGVuYW1lPiBtYWNoaW5lcyBhcmUgc3RpbGwgYXZhaWxhYmxlCisgICAgICAgICAgICBpbiBhIG5ldyA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3Atb2xkPC9maWxlbmFtZT4gbGF5ZXIgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEteW9jdG8tYnNwLW9sZC8nPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEteW9jdG8tYnNwLW9sZC88L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0xLjctcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAxLjcgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDEuNyBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjctY2hhbmdlcy10by1zZXR0aW5nLXFlbXUtcGFja2FnZWNvbmZpZy1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPkNoYW5nZXMgdG8gU2V0dGluZyBRRU1VIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gT3B0aW9ucyBpbiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBRRU1VIHJlY2lwZSBub3cgdXNlcyBhIG51bWJlciBvZgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUcnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBvcHRpb25zIHRvIGVuYWJsZSB2YXJpb3VzIG9wdGlvbmFsIGZlYXR1cmVzLgorICAgICAgICAgICAgVGhlIG1ldGhvZCB1c2VkIHRvIHNldCBkZWZhdWx0cyBmb3IgdGhlc2Ugb3B0aW9ucyBtZWFucyB0aGF0CisgICAgICAgICAgICBleGlzdGluZworICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcyB3aWxsIG5lZWQgdG8gYmUgYmUKKyAgICAgICAgICAgIG1vZGlmaWVkIHRvIGFwcGVuZCB0byA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXUtbmF0aXZlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrLXFlbXU8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mIHNldHRpbmcgaXQuCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdG8gZW5hYmxlIGdyYXBoaWNhbCBvdXRwdXQgZm9yIFFFTVUsIHlvdSBzaG91bGQKKyAgICAgICAgICAgIG5vdyBoYXZlIHRoZXNlIGxpbmVzIGluIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtbmF0aXZlID0gIiBzZGwiCisgICAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLW5hdGl2ZXNkay1xZW11ID0gIiBzZGwiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNy1taW5pbXVtLWdpdC12ZXJzaW9uJz4KKyAgICAgICAgPHRpdGxlPk1pbmltdW0gR2l0IHZlcnNpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG1pbmltdW0KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB2ZXJzaW9uCisgICAgICAgICAgICByZXF1aXJlZCBvbiB0aGUgYnVpbGQgaG9zdCBpcyBub3cgMS43LjggYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4tLWxpc3Q8L2ZpbGVuYW1lPiBvcHRpb24gaXMgbm93IHJlcXVpcmVkIGJ5CisgICAgICAgICAgICBCaXRCYWtlJ3MgR2l0IGZldGNoZXIuCisgICAgICAgICAgICBBcyBhbHdheXMsIGlmIHlvdXIgaG9zdCBkaXN0cmlidXRpb24gZG9lcyBub3QgcHJvdmlkZSBhIHZlcnNpb24gb2YKKyAgICAgICAgICAgIEdpdCB0aGF0IG1lZXRzIHRoaXMgcmVxdWlyZW1lbnQsIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtdGFyYmFsbDwvZmlsZW5hbWU+IHRoYXQgZG9lcy4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS43LWF1dG90b29scy1jbGFzcy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkF1dG90b29scyBDbGFzcyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MgY2hhbmdlcyBvY2N1cnJlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnkgaXMgbm93IHVzZWQgYnkgZGVmYXVsdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+IGNsYXNzIGhhcyBiZWVuIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGEgZGlyZWN0b3J5IGZvciBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+KSwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgc2VwYXJhdGUgZnJvbSB0aGUgc291cmNlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBjb21tb25seSByZWZlcnJlZCB0byBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QiAhPSBTPC9maWxlbmFtZT4sIG9yIGFuIG91dC1vZi10cmVlIGJ1aWxkLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGlzIGFscmVhZHkgY2FwYWJsZSBvZgorICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBpbiBhIGRpcmVjdG9yeSBzZXBhcmF0ZSBmcm9tIHRoZSBzb3VyY2UsIHlvdQorICAgICAgICAgICAgICAgICAgICBkbyBub3QgbmVlZCB0byBkbyBhbnl0aGluZy4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgdGhlIHNvZnR3YXJlIGlzIG5vdCBjYXBhYmxlIG9mIGJlaW5nIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgIGluIHRoaXMgbWFubmVyLCB5b3Ugd2lsbAorICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGVpdGhlciBwYXRjaCB0aGUgc29mdHdhcmUgc28gdGhhdCBpdCBjYW4gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseSwgb3IgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIHJlY2lwZSB0bworICAgICAgICAgICAgICAgICAgICBpbmhlcml0IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHMtYnJva2Vuc2VwPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGluc3RlYWQgb2YgdGhlIDxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzX3N0YWdlPC9maWxlbmFtZT4gY2xhc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tLWZvcmVpZ248L2ZpbGVuYW1lPiBvcHRpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgbm8gbG9uZ2VyIHBhc3NlZCB0byA8ZmlsZW5hbWU+YXV0b21ha2U8L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgPGZpbGVuYW1lPmF1dG9jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gdGVsbHMgPGZpbGVuYW1lPmF1dG9tYWtlPC9maWxlbmFtZT4gdGhhdCBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgc29mdHdhcmUgcGFja2FnZSBkb2VzIG5vdCBmb2xsb3cgdGhlIEdOVQorICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZHMgYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90IGJlIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgIHRvIGRpc3RyaWJ1dGUgY2VydGFpbiBmaWxlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DaGFuZ2VMb2c8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFVVEhPUlM8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBtYWpvcml0eSBvZiB1cHN0cmVhbSBzb2Z0d2FyZSBwYWNrYWdlcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgIHRlbGwgPGZpbGVuYW1lPmF1dG9tYWtlPC9maWxlbmFtZT4gdG8gZW5hYmxlIGZvcmVpZ24gbW9kZQorICAgICAgICAgICAgICAgICAgICB0aGVtc2VsdmVzLCB0aGUgb3B0aW9uIGlzIG1vc3RseSBzdXBlcmZsdW91cy4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc29tZSByZWNpcGVzIHdpbGwgbmVlZCBwYXRjaGVzIGZvciB0aGlzIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBlYXNpbHkgbWFrZSB0aGUgY2hhbmdlIGJ5IHBhdGNoaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmUuYWM8L2ZpbGVuYW1lPiBzbyB0aGF0IGl0IHBhc3NlcworICAgICAgICAgICAgICAgICAgICAiZm9yZWlnbiIgdG8gPGZpbGVuYW1lPkFNX0lOSVRfQVVUT01BS0UoKTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9jb21taXQvP2lkPTAxOTQzMTg4Zjg1Y2U2NDExNzE3ZmI1YmY3MDJkNjA5ZjU1ODEzZjInPnRoaXMgY29tbWl0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gbWFrZSB0aGUgcGF0Y2guCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNy1iaW5hcnktY29uZmlndXJhdGlvbi1zY3JpcHRzLWRpc2FibGVkJz4KKyAgICAgICAgPHRpdGxlPkJpbmFyeSBDb25maWd1cmF0aW9uIFNjcmlwdHMgRGlzYWJsZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU29tZSBvZiB0aGUgY29yZSByZWNpcGVzIHRoYXQgcGFja2FnZSBiaW5hcnkgY29uZmlndXJhdGlvbiBzY3JpcHRzCisgICAgICAgICAgICBub3cgZGlzYWJsZSB0aGUgc2NyaXB0cyBkdWUgdG8gdGhlCisgICAgICAgICAgICBzY3JpcHRzIHByZXZpb3VzbHkgcmVxdWlyaW5nIGVycm9yLXByb25lIHBhdGggc3Vic3RpdHV0aW9uLgorICAgICAgICAgICAgU29mdHdhcmUgdGhhdCBsaW5rcyBhZ2FpbnN0IHRoZXNlIGxpYnJhcmllcyB1c2luZyB0aGVzZSBzY3JpcHRzCisgICAgICAgICAgICBzaG91bGQgdXNlIHRoZSBtdWNoIG1vcmUgcm9idXN0IDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGluc3RlYWQuCisgICAgICAgICAgICBUaGUgbGlzdCBvZiByZWNpcGVzIGNoYW5nZWQgaW4gdGhpcyB2ZXJzaW9uIChhbmQgdGhlaXIKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gc2NyaXB0cykgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZGlyZWN0ZmIgKGRpcmVjdGZiLWNvbmZpZykKKyAgICAgZnJlZXR5cGUgKGZyZWV0eXBlLWNvbmZpZykKKyAgICAgZ3BnbWUgKGdwZ21lLWNvbmZpZykKKyAgICAgbGliYXNzdWFuIChsaWJhc3N1YW4tY29uZmlnKQorICAgICBsaWJjcm9jbyAoY3JvY28tNi4wLWNvbmZpZykKKyAgICAgbGliZ2NyeXB0IChsaWJnY3J5cHQtY29uZmlnKQorICAgICBsaWJncGctZXJyb3IgKGdwZy1lcnJvci1jb25maWcpCisgICAgIGxpYmtzYmEgKGtzYmEtY29uZmlnKQorICAgICBsaWJwY2FwIChwY2FwLWNvbmZpZykKKyAgICAgbGlicGNyZSAocGNyZS1jb25maWcpCisgICAgIGxpYnBuZyAobGlicG5nLWNvbmZpZywgbGlicG5nMTYtY29uZmlnKQorICAgICBsaWJzZGwgKHNkbC1jb25maWcpCisgICAgIGxpYnVzYi1jb21wYXQgKGxpYnVzYi1jb25maWcpCisgICAgIGxpYnhtbDIgKHhtbDItY29uZmlnKQorICAgICBsaWJ4c2x0ICh4c2x0LWNvbmZpZykKKyAgICAgbmN1cnNlcyAobmN1cnNlcy1jb25maWcpCisgICAgIG5lb24gKG5lb24tY29uZmlnKQorICAgICBucHRoIChucHRoLWNvbmZpZykKKyAgICAgcHRoIChwdGgtY29uZmlnKQorICAgICB0YWdsaWIgKHRhZ2xpYi1jb25maWcpCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHN1cHBvcnQgZm9yIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4gaGFzIGJlZW4KKyAgICAgICAgICAgIGFkZGVkIHRvIHNvbWUgcmVjaXBlcyBpbiB0aGUgcHJldmlvdXMgbGlzdCBpbiB0aGUgcmFyZSBjYXNlcworICAgICAgICAgICAgd2hlcmUgdGhlIHVwc3RyZWFtIHNvZnR3YXJlIHBhY2thZ2UgZG9lcyBub3QgYWxyZWFkeSBwcm92aWRlCisgICAgICAgICAgICBpdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS43LWdsaWJjLXJlcGxhY2VzLWVnbGliYyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZWdsaWJjIDIuMTk8L2ZpbGVuYW1lPiBSZXBsYWNlZCB3aXRoIDxmaWxlbmFtZT5nbGliYyAyLjIwPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVjYXVzZSA8ZmlsZW5hbWU+ZWdsaWJjPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiB3ZXJlIGFscmVhZHkgZmFpcmx5IGNsb3NlLCB0aGlzCisgICAgICAgICAgICByZXBsYWNlbWVudCBzaG91bGQgbm90IHJlcXVpcmUgYW55IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gb3RoZXIKKyAgICAgICAgICAgIHNvZnR3YXJlIHRoYXQgbGlua3MgdG8gPGZpbGVuYW1lPmVnbGliYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSG93ZXZlciwgdGhlcmUgd2VyZSBhIG51bWJlciBvZiBtaW5vciBjaGFuZ2VzIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmMgMi4yMDwvZmlsZW5hbWU+IHVwc3RyZWFtIHRoYXQgY291bGQgcmVxdWlyZQorICAgICAgICAgICAgcGF0Y2hpbmcgc29tZSBzb2Z0d2FyZSAoZS5nLiB0aGUgcmVtb3ZhbCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5fQlNEX1NPVVJDRTwvZmlsZW5hbWU+IGZlYXR1cmUgdGVzdCBtYWNybykuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5nbGliYyAyLjIwPC9maWxlbmFtZT4gcmVxdWlyZXMgdmVyc2lvbiAyLjYuMzIgb3IgZ3JlYXRlcgorICAgICAgICAgICAgb2YgdGhlIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgIFRodXMsIG9sZGVyIGtlcm5lbHMgd2lsbCBubyBsb25nZXIgYmUgdXNhYmxlIGluIGNvbmp1bmN0aW9uIHdpdGggaXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBmdWxsIGRldGFpbHMgb24gdGhlIGNoYW5nZXMgaW4gPGZpbGVuYW1lPmdsaWJjIDIuMjA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHNlZSB0aGUgdXBzdHJlYW0gcmVsZWFzZSBub3RlcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTQtMDkvbXNnMDAwODguaHRtbCc+aGVyZTwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjcta2VybmVsLW1vZHVsZS1hdXRvbG9hZGluZyc+CisgICAgICAgIDx0aXRsZT5LZXJuZWwgTW9kdWxlIEF1dG9sb2FkaW5nPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLW1vZHVsZV9hdXRvbG9hZCc+PGZpbGVuYW1lPm1vZHVsZV9hdXRvbG9hZF8qPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQgYSBuZXcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfTU9EVUxFX0FVVE9MT0FEJz48ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9BVVRPTE9BRDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICAgICAgIEFsc28sCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItbW9kdWxlX2NvbmYnPjxmaWxlbmFtZT5tb2R1bGVfY29uZl8qPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBtdXN0IG5vdyBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBuZXcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfTU9EVUxFX1BST0JFQ09ORic+PGZpbGVuYW1lPktFUk5FTF9NT0RVTEVfUFJPQkVDT05GPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgIFRoZSBuZXcgdmFyaWFibGVzIG5vIGxvbmdlciByZXF1aXJlIHlvdSB0byBzcGVjaWZ5IHRoZSBtb2R1bGUgbmFtZQorICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgdmFyaWFibGUgbmFtZS4KKyAgICAgICAgICAgIFRoaXMgY2hhbmdlIG5vdCBvbmx5IHNpbXBsaWZpZXMgdXNhZ2UgYnV0IGFsc28gYWxsb3dzIHRoZSB2YWx1ZXMKKyAgICAgICAgICAgIG9mIHRoZXNlIHZhcmlhYmxlcyB0byBiZSBhcHByb3ByaWF0ZWx5IGluY29ycG9yYXRlZCBpbnRvIHRhc2sKKyAgICAgICAgICAgIHNpZ25hdHVyZXMgYW5kIHRodXMgdHJpZ2dlciB0aGUgYXBwcm9wcmlhdGUgdGFza3MgdG8gcmUtZXhlY3V0ZQorICAgICAgICAgICAgd2hlbiBjaGFuZ2VkLgorICAgICAgICAgICAgWW91IHNob3VsZCByZXBsYWNlIGFueSByZWZlcmVuY2VzIHRvCisgICAgICAgICAgICA8ZmlsZW5hbWU+bW9kdWxlX2F1dG9sb2FkXyo8L2ZpbGVuYW1lPiB3aXRoCisgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9BVVRPTE9BRDwvZmlsZW5hbWU+LCBhbmQgYWRkIGFueSBtb2R1bGVzCisgICAgICAgICAgICBmb3Igd2hpY2ggPGZpbGVuYW1lPm1vZHVsZV9jb25mXyo8L2ZpbGVuYW1lPiBpcyBzcGVjaWZpZWQgdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfTU9EVUxFX1BST0JFQ09ORjwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjctcWEtY2hlY2stY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5RQSBDaGVjayBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIG9jY3VycmVkIHRvIHRoZSBRQSBjaGVjayBwcm9jZXNzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgUUEgY2hlY2tzIDxmaWxlbmFtZT5maWxlLXJkZXBzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5idWlsZC1kZXBzPC9maWxlbmFtZT4gaGF2ZSBiZWVuIGFkZGVkIGluCisgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIHZlcmlmeSB0aGF0IGZpbGUgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gcGFja2FnZSBjb250YWlucyBhIHNjcmlwdCByZXF1aXJpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9iaW4vYmFzaDwvZmlsZW5hbWU+KSBhbmQgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGRlY2xhcmVkLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXFhLWNoZWNrcyc+UUEgRXJyb3IgYW5kIFdhcm5pbmcgTWVzc2FnZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgUUEgY2hlY2tzIGFyZSBub3cgcGVyZm9ybWVkIGR1cmluZyBhIG5ldworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV9xYSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VfcWE8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayByYXRoZXIgdGhhbiBiZWluZyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBhbGxvd3MgbW9yZSBwYXJhbGxlbCBleGVjdXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhbmdlIGlzIHVubGlrZWx5IHRvIGJlIGFuIGlzc3VlIGV4Y2VwdCBmb3IgaGlnaGx5CisgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgcmVjaXBlcyB0aGF0IGRpc2FibGUgcGFja2FnaW5nIHRhc2tzIHRoZW1zZWx2ZXMKKyAgICAgICAgICAgICAgICAgICAgYnkgbWFya2luZyB0aGVtIGFzIDxmaWxlbmFtZT5ub2V4ZWM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRob3NlIHBhY2thZ2VzLCB5b3Ugd2lsbCBuZWVkIHRvIGRpc2FibGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlX3FhPC9maWxlbmFtZT4gdGFzayBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZpbGVzIGJlaW5nIG92ZXJ3cml0dGVuIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgbm93IHRyaWdnZXIgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgc2hvdWxkIG5vdCBiZSBvdmVyd3JpdGluZyBmaWxlcyB3cml0dGVuIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBzeXNyb290IGJ5IG90aGVyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHRoZXNlIHR5cGVzIG9mIHJlY2lwZXMsIHlvdSBuZWVkIHRvIGFsdGVyIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgc28gdGhhdCB0aGV5IGRvIG5vdCBvdmVyd3JpdGUgdGhlc2UgZmlsZXMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgbWlnaHQgbm93IHJlY2VpdmUgdGhpcyBlcnJvciBhZnRlciBjaGFuZ2VzIGluCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3IgbWV0YWRhdGEgcmVzdWx0aW5nIGluIG9ycGhhbmVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGxlZnQgaW4gdGhlIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyByZWNlaXZlIHRoaXMgZXJyb3IsIHRoZSB3YXkgdG8gcmVzb2x2ZSB0aGUgaXNzdWUKKyAgICAgICAgICAgICAgICAgICAgaXMgdG8gZGVsZXRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBvciB0byBtb3ZlIGl0IG91dCBvZiB0aGUgd2F5IGFuZCB0aGVuIHJlLXN0YXJ0IHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgQW55dGhpbmcgdGhhdCBoYXMgYmVlbiBmdWxseSBidWlsdCB1cCB0byB0aGF0IHBvaW50IGFuZAorICAgICAgICAgICAgICAgICAgICBkb2VzIG5vdCBuZWVkIHJlYnVpbGRpbmcgd2lsbCBiZSByZXN0b3JlZCBmcm9tIHRoZSBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUgYW5kIHRoZSByZXN0IG9mIHRoZSBidWlsZCB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgICAgICAgICAgICAgcHJvY2VlZCBhcyBub3JtYWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNy1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eC1sb2FkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGhhcyBiZWVuIHN1cGVyc2VkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgVS1ib290IFNQTCBmb3IgYWxsIENvcnRleC1iYXNlZCBUSSBTb0NzLgorICAgICAgICAgICAgICAgICAgICBGb3IgbGVnYWN5IGJvYXJkcywgdGhlIDxmaWxlbmFtZT5tZXRhLXRpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIHdoaWNoIGNvbnRhaW5zIGEgbWFpbnRhaW5lZCByZWNpcGUsIHNob3VsZCBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVib290Y2hhcnQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgb2Jzb2xldGUuCisgICAgICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPmJvb3RjaGFydDI8L2ZpbGVuYW1lPiByZWNpcGUgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gZnVuY3Rpb25hbGx5IHJlcGxhY2UgaXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvIDMuNDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgbGludXgteW9jdG8gMy40IGtlcm5lbCBoYXMgYmVlbiBkcm9wcGVkLgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgMy4xMCBhbmQgMy4xNCBrZXJuZWxzIHJlbWFpbnMsIHdoaWxlCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHZlcnNpb24gMy4xNyBoYXMgYmVlbiBhZGRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZWdsaWJjPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWlncmF0aW9uLTEuNy1nbGliYy1yZXBsYWNlcy1lZ2xpYmMnPjxmaWxlbmFtZT5lZ2xpYmMgMi4xOTwvZmlsZW5hbWU+IFJlcGxhY2VkIHdpdGggPGZpbGVuYW1lPmdsaWJjIDIuMjA8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTEuNy1taXNjZWxsYW5lb3VzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbWlzY2VsbGFuZW91cyBjaGFuZ2Ugb2NjdXJyZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZSBub3cgd3JpdGVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZC1pZC50eHQ8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZC1pZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIDxmaWxlbmFtZT5idWlsZC1pZC50eHQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBub3cgY29udGFpbnMgdGhlIGZ1bGwgYnVpbGQgaGVhZGVyIGFzIHByaW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB1cG9uIHN0YXJ0aW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYW51YWxseSByZW1vdmUgb2xkICJidWlsZC1pZCIgZmlsZXMgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGJ1aWxkIGhpc3RvcnkgcmVwb3NpdG9yaWVzIHRvIGF2b2lkIGNvbmZ1c2lvbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBidWlsZCBoaXN0b3J5IGZlYXR1cmUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0xLjgtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjgtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+b3dsLXZpZGVvPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmdzdC1wbGF5ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nYWt1PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmdzdC1wbGF5ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nbm9tZS1kZXNrdG9wPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vdyBhdmFpbGFibGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZ25vbWU8L2ZpbGVuYW1lPiBhbmQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vdyBhdmFpbGFibGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZ25vbWU8L2ZpbGVuYW1lPiBhbmQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob24tYXJncGFyc2U8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hcmdwYXJzZTwvZmlsZW5hbWU+IG1vZHVsZSBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGluIHRoZSBkZWZhdWx0IFB5dGhvbiBkaXN0cmlidXRpb24gaW4gYQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG5hbWVkIDxmaWxlbmFtZT5weXRob24tYXJncGFyc2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgc2VwYXJhdGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbi1hcmdwYXJzZTwvZmlsZW5hbWU+IHJlY2lwZSBpcyBubworICAgICAgICAgICAgICAgICAgICBsb25nZXIgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnRlbGVwYXRoeS1weXRob24sIGxpYnRlbGVwYXRoeSwgdGVsZXBhdGh5LWdsaWIsIHRlbGVwYXRoeS1pZGxlLCB0ZWxlcGF0aHktbWlzc2lvbi1jb250cm9sPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEFsbCB0aGVzZSByZWNpcGVzIGhhdmUgbW92ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPiBhbmQgYXJlIGNvbnNlcXVlbnRseSBubworICAgICAgICAgICAgICAgICAgICBsb25nZXIgbmVlZGVkIGJ5IGFueSByZWNpcGVzIGluIE9wZW5FbWJlZGRlZC1Db3JlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpbnV4LXlvY3RvXzMuMTA8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzMuMTc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgdGhlIGxpbnV4LXlvY3RvIDMuMTAgYW5kIDMuMTcga2VybmVscyBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICBkcm9wcGVkLgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgMy4xNCBrZXJuZWwgcmVtYWlucywgd2hpbGUgc3VwcG9ydCBmb3IKKyAgICAgICAgICAgICAgICAgICAgMy4xOSBrZXJuZWwgaGFzIGJlZW4gYWRkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cG9reS1mZWVkLWNvbmZpZy1vcGtnPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGhhcyBiZWNvbWUgb2Jzb2xldGUgYW5kIGlzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+ZGlzdHJvLWZlZWQtY29uZmlnPC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGliYXYgMC44Lng8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmF2IDkueDwvZmlsZW5hbWU+IGlzIG5vdyB1c2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNlZC1uYXRpdmU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgTm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgQSB3b3JraW5nIHZlcnNpb24gb2YgPGZpbGVuYW1lPnNlZDwvZmlsZW5hbWU+IGlzIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgIHRvIGJlIHByb3ZpZGVkIGJ5IHRoZSBob3N0IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS44LWJsdWV6Jz4KKyAgICAgICAgPHRpdGxlPkJsdWVaIDQueCAvIDUueCBTZWxlY3Rpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJvcGVyIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHNlbGVjdGluZyBCbHVlWiA1LnggaW4gcHJlZmVyZW5jZQorICAgICAgICAgICAgdG8gdGhlIGRlZmF1bHQgb2YgNC54IG5vdyBleGlzdHMuCisgICAgICAgICAgICBUbyB1c2UgQmx1ZVogNS54LCBzaW1wbHkgYWRkICJibHVlejUiIHRvIHlvdXIKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhbHVlLgorICAgICAgICAgICAgSWYgeW91IGhhZCBwcmV2aW91c2x5IGFkZGVkIGFwcGVuZCBmaWxlcworICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pIHRvIG1ha2UgdGhpcyBzZWxlY3Rpb24sIHlvdSBjYW4KKyAgICAgICAgICAgIG5vdyByZW1vdmUgdGhlbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhIDxmaWxlbmFtZT5ibHVldG9vdGg8L2ZpbGVuYW1lPiBjbGFzcyBoYXMgYmVlbiBhZGRlZAorICAgICAgICAgICAgdG8gbWFrZSBzZWxlY3Rpb24gb2YgdGhlIGFwcHJvcHJpYXRlIGJsdWV0b290aCBzdXBwb3J0IHdpdGhpbiBhCisgICAgICAgICAgICByZWNpcGUgYSBsaXR0bGUgZWFzaWVyLgorICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gbWFrZSB1c2Ugb2YgdGhpcyBjbGFzcyBpbiBhIHJlY2lwZSwgYWRkIHNvbWV0aGluZworICAgICAgICAgICAgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IGJsdWV0b290aAorICAgICBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IgorICAgICBQQUNLQUdFQ09ORklHW2JsdWV6NF0gPSAiLS1lbmFibGUtYmx1ZXRvb3RoLC0tZGlzYWJsZS1ibHVldG9vdGgsYmx1ZXo0IgorICAgICBQQUNLQUdFQ09ORklHW2JsdWV6NV0gPSAiLS1lbmFibGUtYmx1ZXo1LC0tZGlzYWJsZS1ibHVlejUsYmx1ZXo1IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjgta2VybmVsLWJ1aWxkLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+S2VybmVsIEJ1aWxkIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzIHdhcyBjaGFuZ2VkIHRvIHBsYWNlIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIGluIGEgY29tbW9uIHNoYXJlZCB3b3JrIGFyZWEgYW5kIHRvIHBsYWNlIGJ1aWxkIGFydGlmYWN0cworICAgICAgICAgICAgc2VwYXJhdGVseSBpbiB0aGUgc291cmNlIGNvZGUgdHJlZS4KKyAgICAgICAgICAgIEluIHRoZW9yeSwgbWlncmF0aW9uIHBhdGhzIGhhdmUgYmVlbiBwcm92aWRlZCBmb3IgbW9zdCBjb21tb24KKyAgICAgICAgICAgIHVzYWdlcyBpbiBrZXJuZWwgcmVjaXBlcyBidXQgdGhpcyBtaWdodCBub3Qgd29yayBpbiBhbGwgY2FzZXMuCisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB1c2VycyBuZWVkIHRvIGVuc3VyZSB0aGF0CisgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTfTwvZmlsZW5hbWU+IChzb3VyY2UgZmlsZXMpIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPiAoYnVpbGQgYXJ0aWZhY3RzKSBhcmUgdXNlZAorICAgICAgICAgICAgY29ycmVjdGx5IGluIGZ1bmN0aW9ucyBzdWNoIGFzCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIEZvciBrZXJuZWwgcmVjaXBlcyB0aGF0IGRvIG5vdCBpbmhlcml0IGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwteW9jdG88L2ZpbGVuYW1lPiBvciBpbmNsdWRlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8uaW5jPC9maWxlbmFtZT4sIHlvdSBtaWdodCB3aXNoIHRvCisgICAgICAgICAgICByZWZlciB0byB0aGUgPGZpbGVuYW1lPmxpbnV4LmluYzwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IGxheWVyIGZvciB0aGUga2luZHMgb2YgY2hhbmdlcyB5b3UKKyAgICAgICAgICAgIG5lZWQgdG8gbWFrZS4KKyAgICAgICAgICAgIEZvciByZWZlcmVuY2UsIGhlcmUgaXMgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkL2NvbW1pdC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LmluYz9pZD1mYzcxMzJlZGUyN2FjNjc2Njk0NDhkM2QyODQ1Y2U3ZDQ2YzZhMWVlJz5jb21taXQ8L3VsaW5rPgorICAgICAgICAgICAgd2hlcmUgdGhlIDxmaWxlbmFtZT5saW51eC5pbmM8L2ZpbGVuYW1lPiBmaWxlIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IHdhcyB1cGRhdGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZWNpcGVzIHRoYXQgcmVseSBvbiB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGFuZCBkbyBub3QgaW5oZXJpdAorICAgICAgICAgICAgdGhlIG1vZHVsZSBjbGFzc2VzIG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBvbgorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kb19zaGFyZWRfd29ya2RpcjwvZmlsZW5hbWU+IGtlcm5lbCB0YXNrLCBmb3IgZXhhbXBsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS44LXNzbCc+CisgICAgICAgIDx0aXRsZT5TU0wgMy4wIGlzIE5vdyBEaXNhYmxlZCBpbiBPcGVuU1NMPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNTTCAzLjAgaXMgbm93IGRpc2FibGVkIHdoZW4gYnVpbGRpbmcgT3BlblNTTC4KKyAgICAgICAgICAgIERpc2FibGluZyBTU0wgMy4wIGF2b2lkcyBhbnkgbGluZ2VyaW5nIGluc3RhbmNlcyBvZiB0aGUgUE9PRExFCisgICAgICAgICAgICB2dWxuZXJhYmlsaXR5LgorICAgICAgICAgICAgSWYgeW91IGZlZWwgeW91IG11c3QgcmUtZW5hYmxlIFNTTCAzLjAsIHRoZW4geW91IGNhbiBhZGQgYW4KKyAgICAgICAgICAgIGFwcGVuZCBmaWxlICg8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+KSBmb3IgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+b3BlbnNzbDwvZmlsZW5hbWU+IHJlY2lwZSB0byByZW1vdmUgIi1uby1zc2wzIgorICAgICAgICAgICAgZnJvbQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMS44LWRlZmF1bHQtc3lzcm9vdC1wb2lzb25pbmcnPgorICAgICAgICA8dGl0bGU+RGVmYXVsdCBTeXNyb290IFBvaXNvbmluZzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjJ3M8L2ZpbGVuYW1lPiBkZWZhdWx0IHN5c3Jvb3QgYW5kIGluY2x1ZGUgZGlyZWN0b3JpZXMKKyAgICAgICAgICAgIGFyZSBub3cgInBvaXNvbmVkIi4KKyAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgc3lzcm9vdCBhbmQgaW5jbHVkZSBkaXJlY3RvcmllcyBhcmUgYmVpbmcKKyAgICAgICAgICAgIHJlZGlyZWN0ZWQgdG8gYSBub24tZXhpc3RlbnQgbG9jYXRpb24gaW4gb3JkZXIgdG8gY2F0Y2ggd2hlbgorICAgICAgICAgICAgaG9zdCBkaXJlY3RvcmllcyBhcmUgYmVpbmcgdXNlZCBkdWUgdG8gdGhlIGNvcnJlY3Qgb3B0aW9ucyBub3QKKyAgICAgICAgICAgIGJlaW5nIHBhc3NlZC4KKyAgICAgICAgICAgIFRoaXMgcG9pc29uaW5nIGFwcGxpZXMgYm90aCB0byB0aGUgY3Jvc3MtY29tcGlsZXIgdXNlZCB3aXRoaW4gdGhlCisgICAgICAgICAgICBidWlsZCBhbmQgdG8gdGhlIGNyb3NzLWNvbXBpbGVyIHByb2R1Y2VkIGluIHRoZSBTREsuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoaXMgY2hhbmdlIGNhdXNlcyBzb21ldGhpbmcgaW4gdGhlIGJ1aWxkIHRvIGZhaWwsIGl0IGFsbW9zdAorICAgICAgICAgICAgY2VydGFpbmx5IG1lYW5zIHRoZSB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb21tYW5kcyBhcmUgbm90CisgICAgICAgICAgICBiZWluZyBwYXNzZWQgY29ycmVjdGx5IHRvIHRoZSB1bmRlcmx5aW5nIHBpZWNlIG9mIHNvZnR3YXJlLgorICAgICAgICAgICAgSW4gc3VjaCBjYXNlcywgeW91IG5lZWQgdG8gdGFrZSBjb3JyZWN0aXZlIHN0ZXBzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjgtcmVidWlsZC1pbXByb3ZlbWVudHMnPgorICAgICAgICA8dGl0bGU+UmVidWlsZCBJbXByb3ZlbWVudHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJhc2UnPjxmaWxlbmFtZT5iYXNlPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1jbWFrZSc+PGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzc2VzIHRvIGNsZWFuIG91dCBnZW5lcmF0ZWQgZmlsZXMgd2hlbiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2sgbmVlZHMgdG8gYmUgcmUtZXhlY3V0ZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBvZiB0aGUgaW1wcm92ZW1lbnRzIGlzIHRvIGF0dGVtcHQgdG8gcnVuICJtYWtlIGNsZWFuIiBkdXJpbmcKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4gdGFzayBpZiBhCisgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiBleGlzdHMuCisgICAgICAgICAgICBTb21lIHNvZnR3YXJlIHBhY2thZ2VzIGRvIG5vdCBwcm92aWRlIGEgd29ya2luZyBjbGVhbiB0YXJnZXQKKyAgICAgICAgICAgIHdpdGhpbiB0aGVpciBtYWtlIGZpbGVzLgorICAgICAgICAgICAgSWYgeW91IGhhdmUgc3VjaCByZWNpcGVzLCB5b3UgbmVlZCB0byBzZXQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DTEVBTkJST0tFTic+PGZpbGVuYW1lPkNMRUFOQlJPS0VOPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0byAiMSIgd2l0aGluIHRoZSByZWNpcGUsIGZvciBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDTEVBTkJST0tFTiA9ICIxIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjgtcWEtY2hlY2stYW5kLXZhbGlkYXRpb24tY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5RQSBDaGVjayBhbmQgVmFsaWRhdGlvbiBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgUUEgQ2hlY2sgYW5kIFZhbGlkYXRpb24gQ2hhbmdlcyBoYXZlIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzYWdlIG9mIDxmaWxlbmFtZT5QUklOQzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgdHJpZ2dlcmVkIGEgd2FybmluZy4KKyAgICAgICAgICAgICAgICAgICAgSXQgbm93IHRyaWdnZXJzIGFuIGVycm9yLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJlbW92ZSBhbnkgcmVtYWluaW5nIHVzYWdlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUklOQzwvZmlsZW5hbWU+IGluIGFueSByZWNpcGUgb3IgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW4gYWRkaXRpb25hbCBRQSBjaGVjayBoYXMgYmVlbiBhZGRlZCB0byBkZXRlY3QgdXNhZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7RH08L2ZpbGVuYW1lPiBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICBzaG91bGQgbm90IGJlIHVzZWQgYXQgYWxsLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2FtZSBjaGVjayBlbnN1cmVzIHRoYXQgPGZpbGVuYW1lPiREPC9maWxlbmFtZT4gaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3ByZWluc3QvcGtnX3Bvc3RpbnN0L3BrZ19wcmVybS9wa2dfcG9zdHJtPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zIGluc3RlYWQgb2YgPGZpbGVuYW1lPiR7RH08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gbm93CisgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGJlIHNldCB0byBhIHZhbGlkIHZhbHVlIHdpdGhpbiBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiBpcyBub3Qgc2V0IGluIHRoZSByZWNpcGUsIHRoZQorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaXMgbm90IGF1dG9tYXRpY2FsbHkgY3JlYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICB0aGF0IGV4aXN0cyBhdCB0aGUgdGltZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGZpbmlzaGVzLCBhIHdhcm5pbmcgd2lsbCBiZSBzaG93bi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgbm93IHZhbGlkYXRlZCBmb3IgY29ycmVjdCBmb3JtYXR0aW5nIG9mIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZm9ybWF0IGlzIGludmFsaWQgKGUuZy4gbXVsdGlwbGUgbGljZW5zZXMgYXJlCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCB3aXRoIG5vIG9wZXJhdG9ycyB0byBzcGVjaWZ5IGhvdyB0aGUgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgaW50ZXJhY3QpLCB0aGVuIGEgd2FybmluZyB3aWxsIGJlIHNob3duLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjgtbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIG1pc2NlbGxhbmVvdXMgY2hhbmdlcyBoYXZlIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2VuZC1lcnJvci1yZXBvcnQ8L2ZpbGVuYW1lPiBzY3JpcHQgbm93CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdHMgYSAiLXMiIG9wdGlvbiB0byBiZSBzcGVjaWZpZWQgYmVmb3JlIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBhc3N1bWVzIGEgc2VydmVyIGFkZHJlc3MgaXMgYmVpbmcgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT4gc2NyaXB0IG5vdworICAgICAgICAgICAgICAgICAgICBleHBlY3RzIGEgIi1wIiBvcHRpb24gdG8gYmUgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ2RhdGE8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHdoaWNoIGlzIG5vdworICAgICAgICAgICAgICAgICAgICBvcHRpb25hbC4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5wa2dkYXRhPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzIG5vdAorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZSBzY3JpcHQgd2lsbCBydW4gQml0QmFrZSB0byBxdWVyeQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0yLjAtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAyLjAgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDIuMCBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjAtZ2NjLTUnPgorICAgICAgICA8dGl0bGU+R0NDIDU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgbm93IEdDQyA1LjIuCisgICAgICAgICAgICBUaGlzIGNoYW5nZSBoYXMgcmVxdWlyZWQgZml4ZXMgZm9yIGNvbXBpbGF0aW9uIGVycm9ycyBpbiBhIG51bWJlcgorICAgICAgICAgICAgb2Ygb3RoZXIgcmVjaXBlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25lIGltcG9ydGFudCBleGFtcGxlIGlzIGEgZml4IGZvciB3aGVuIHRoZSBMaW51eCBrZXJuZWwgZnJlZXplcyBhdAorICAgICAgICAgICAgYm9vdCB0aW1lIG9uIEFSTSB3aGVuIGJ1aWx0IHdpdGggR0NDIDUuCisgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIHlvdXIgb3duIGtlcm5lbCByZWNpcGUgb3Igc291cmNlIHRyZWUgYW5kCisgICAgICAgICAgICBidWlsZGluZyBmb3IgQVJNLCB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhcHBseSB0aGlzCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0P2lkPWEwNzcyMjRmZDM1YjJmN2ZiYzkzZjE0Y2Y2NzA3NGZjNzkyZmJhYzInPnBhdGNoPC91bGluaz4uCisgICAgICAgICAgICBUaGUgc3RhbmRhcmQgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4ga2VybmVsIHNvdXJjZSB0cmVlCisgICAgICAgICAgICBhbHJlYWR5IGhhcyBhIHdvcmthcm91bmQgZm9yIHRoZSBzYW1lIGlzc3VlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgZnVydGhlciBkZXRhaWxzLCBzZWUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2NjLmdudS5vcmcvZ2NjLTUvY2hhbmdlcy5odG1sJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIHRoZSBwb3J0aW5nIGd1aWRlIGF0CisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2djYy5nbnUub3JnL2djYy01L3BvcnRpbmdfdG8uaHRtbCc+PC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3dpdGNoIGJhY2sgdG8gR0NDIDQuOSBvciA0LjggYnkKKyAgICAgICAgICAgIHNldHRpbmcgPGZpbGVuYW1lPkdDQ1ZFUlNJT048L2ZpbGVuYW1lPiBpbiB5b3VyIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBHQ0NWRVJTSU9OID0gIjQuOSUiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMC1Hc3RyZWFtZXItMC4xMC1yZW1vdmVkJz4KKyAgICAgICAgPHRpdGxlPkdzdHJlYW1lciAwLjEwIFJlbW92ZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgR3N0cmVhbWVyIDAuMTAgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiBHc3RyZWFtZXIgMS54LgorICAgICAgICAgICAgQXMgcGFydCBvZiB0aGUgY2hhbmdlLCByZWNpcGVzIGZvciBHc3RyZWFtZXIgMC4xMCBhbmQgcmVsYXRlZAorICAgICAgICAgICAgc29mdHdhcmUgYXJlIG5vdyBsb2NhdGVkCisgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+bWV0YS1tdWx0aW1lZGlhPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGlzIGNoYW5nZSByZXN1bHRzIGluIFF0NCBoYXZpbmcgUGhvbm9uIGFuZCBHc3RyZWFtZXIKKyAgICAgICAgICAgIHN1cHBvcnQgaW4gUXRXZWJraXQgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4wLXJlbW92ZWQtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiBtb3ZlZCBvciByZW1vdmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibHVlejQ8L2ZpbGVuYW1lPjogVGhlIHJlY2lwZSBpcyBvYnNvbGV0ZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gbW92ZWQgZHVlIHRvIDxmaWxlbmFtZT5ibHVlejU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBiZWNvbWluZyBmdWxseSBpbnRlZ3JhdGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJsdWV6NDwvZmlsZW5hbWU+IHJlY2lwZSBub3cgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nYW1pbjwvZmlsZW5hbWU+OiBUaGUgcmVjaXBlIGlzIG9ic29sZXRlIGFuZAorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nbm9tZS1pY29uLXRoZW1lPC9maWxlbmFtZT46IFRoZSByZWNpcGUncworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsbHkgaGFzIGJlZW4gcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFkd2FpdGEtaWNvbi10aGVtZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEdzdHJlYW1lciAwLjEwIFJlY2lwZXM6IFJlY2lwZXMgZm9yIEdzdHJlYW1lciAwLjEwIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSByZWNpcGVzIGZvciBHc3RyZWFtZXIgMS54LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnNzZXJ2PC9maWxlbmFtZT46IFRoZSByZWNpcGUgaXMgb2Jzb2xldGUgYW5kCisgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnVuaXF1ZTwvZmlsZW5hbWU+OiBUaGUgcmVjaXBlIGlzIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICB1c2VkIGFuZCBoYXMgYmVlbiBtb3ZlZCB0byA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5taWRvcmk8L2ZpbGVuYW1lPjogVGhlIHJlY2lwZSdzIGZ1bmN0aW9uYWxseQorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZXBsYWNlZCBieSA8ZmlsZW5hbWU+ZXBpcGhhbnk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uLWdzdDwvZmlsZW5hbWU+OiBUaGUgcmVjaXBlIGlzIG9ic29sZXRlCisgICAgICAgICAgICAgICAgICAgIGFuZCBoYXMgYmVlbiByZW1vdmVkIHNpbmNlIGl0IG9ubHkgY29udGFpbnMgYmluZGluZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgIEdzdHJlYW1lciAwLjEwLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xdC1tb2JpbGl0eTwvZmlsZW5hbWU+OiBUaGUgcmVjaXBlIGlzIG9ic29sZXRlIGFuZAorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZW1vdmVkIHNpbmNlIGl0IHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Hc3RyZWFtZXIgMC4xMDwvZmlsZW5hbWU+LCB3aGljaCBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICByZXBsYWNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3VidmVyc2lvbjwvZmlsZW5hbWU+OiBBbGwgMS42LnggdmVyc2lvbnMgb2YgdGhpcworICAgICAgICAgICAgICAgICAgICByZWNpcGUgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndlYmtpdC1ndGs8L2ZpbGVuYW1lPjogVGhlIG9sZGVyIDEuOC4zIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhpcyByZWNpcGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2Via2l0Z3RrPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMC1iaXRiYWtlLWRhdGFzdG9yZS1pbXByb3ZlbWVudHMnPgorICAgICAgICA8dGl0bGU+Qml0QmFrZSBkYXRhc3RvcmUgaW1wcm92ZW1lbnRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggQml0QmFrZSdzIGRhdGFzdG9yZSBoYW5kbGVzIG92ZXJyaWRlcyBoYXMKKyAgICAgICAgICAgIGNoYW5nZWQuCisgICAgICAgICAgICBPdmVycmlkZXMgYXJlIG5vdyBhcHBsaWVkIGR5bmFtaWNhbGx5IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmRhdGEudXBkYXRlX2RhdGEoKTwvZmlsZW5hbWU+IGlzIG5vdyBhIG5vLW9wLgorICAgICAgICAgICAgVGh1cywgPGZpbGVuYW1lPmJiLmRhdGEudXBkYXRlX2RhdGEoKTwvZmlsZW5hbWU+IGlzIG5vIGxvbmdlcgorICAgICAgICAgICAgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYXBwbHkgdGhlIGNvcnJlY3Qgb3ZlcnJpZGVzLgorICAgICAgICAgICAgSW4gcHJhY3RpY2UsIHRoaXMgY2hhbmdlIGlzIHVubGlrZWx5IHRvIHJlcXVpcmUgYW55IGNoYW5nZXMgdG8KKyAgICAgICAgICAgIE1ldGFkYXRhLgorICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgbWlub3IgY2hhbmdlcyBpbiBiZWhhdmlvciBleGlzdDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGwgcG90ZW50aWFsIG92ZXJyaWRlcyBhcmUgbm93IHZpc2libGUgaW4gdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgYXMgc2VlbiB3aGVuIHlvdSBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kLmRlbFZhcignPC9maWxlbmFtZT48cmVwbGFjZWFibGU+VkFSTkFNRTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPicpPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kLnNldFZhcignPC9maWxlbmFtZT48cmVwbGFjZWFibGU+VkFSTkFNRTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPicsIE5vbmUpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0IGluIHRoZSB2YXJpYWJsZSBhbmQgYWxsIG9mIGl0cyBvdmVycmlkZXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJlZCBvdXQuCisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB0aGUgY2hhbmdlLCBvbmx5IHRoZSBub24tb3ZlcnJpZGRlbiB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgd2VyZSBjbGVhcmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjAtc2hlbGwtbWVzc2FnZS1mdW5jdGlvbi1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlNoZWxsIE1lc3NhZ2UgRnVuY3Rpb24gQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgc2hlbGwgdmVyc2lvbnMgb2YgdGhlIEJpdEJha2UgbWVzc2FnZSBmdW5jdGlvbnMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmRlYnVnPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYm5vdGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYndhcm48L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJicGxhaW48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmVycm9yPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+YmJmYXRhbDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgYXJlIG5vdyBjb25uZWN0ZWQgdGhyb3VnaCB0byB0aGVpciBCaXRCYWtlIGVxdWl2YWxlbnRzCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZGVidWcoKTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmIubm90ZSgpPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmIud2FybigpPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYi5wbGFpbigpPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZXJyb3IoKTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5mYXRhbCgpPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgIFRodXMsIHRob3NlIG1lc3NhZ2UgZnVuY3Rpb25zIHRoYXQgeW91IHdvdWxkIGV4cGVjdCB0byBiZSBwcmludGVkCisgICAgICAgICAgICBieSB0aGUgQml0QmFrZSBVSSBhcmUgbm93IGFjdHVhbGx5IHByaW50ZWQuCisgICAgICAgICAgICBJbiBwcmFjdGljZSwgdGhpcyBjaGFuZ2UgbWVhbnMgdHdvIHRoaW5nczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugbm93IHNlZSBtZXNzYWdlcyBvbiB0aGUgY29uc29sZSB0aGF0IHlvdSBkaWQgbm90CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgc2VlIGFzIGEgcmVzdWx0IG9mIHRoaXMgY2hhbmdlLCB5b3UgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBjbGVhbiB1cCB0aGUgY2FsbHMgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJid2FybjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmJlcnJvcjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIE9yLCB5b3UgbWlnaHQgd2FudCB0byBzaW1wbHkgcmVtb3ZlIHRoZSBjYWxscy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJiZmF0YWw8L2ZpbGVuYW1lPiBtZXNzYWdlIGZ1bmN0aW9uIG5vdworICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc2VzIHRoZSBmdWxsIGVycm9yIGxvZyBpbiB0aGUgVUksIHdoaWNoIG1lYW5zIGFueQorICAgICAgICAgICAgICAgICAgICBjYWxscyB0byA8ZmlsZW5hbWU+YmJmYXRhbDwvZmlsZW5hbWU+IHdoZXJlIHlvdSBzdGlsbAorICAgICAgICAgICAgICAgICAgICB3aXNoIHRvIHNlZSB0aGUgZnVsbCBlcnJvciBsb2cgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaWU8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJmYXRhbF9sb2c8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4wLWV4dHJhLWRldmVsb3BtZW50LWRlYnVnLXBhY2thZ2UtY2xlYW51cCc+CisgICAgICAgIDx0aXRsZT5FeHRyYSBEZXZlbG9wbWVudC9EZWJ1ZyBQYWNrYWdlIENsZWFudXA8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgaGFkIGV4dHJhCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2L2RiZzwvZmlsZW5hbWU+IHBhY2thZ2VzIHJlbW92ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFjbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFwbWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hc3BlbGw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdHRyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVnZWFzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnppcDI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb2dsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3VybDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVsZnV0aWxzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLXRhcmdldDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmdjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ4bXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGNpdXRpbHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycG08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXNmc3V0aWxzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGlmZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnh6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIEFsbCBvZiB0aGUgYWJvdmUgcmVjaXBlcyBub3cgY29uZm9ybSB0byB0aGUgc3RhbmRhcmQgcGFja2FnaW5nCisgICAgICAgICAgICBzY2hlbWUgd2hlcmUgYSBzaW5nbGUgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+LXN0YXRpY2RldjwvZmlsZW5hbWU+CisgICAgICAgICAgICBwYWNrYWdlIGV4aXN0cyBwZXIgcmVjaXBlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjAtcmVjaXBlLW1haW50ZW5hbmNlLXRyYWNraW5nLWRhdGEtbW92ZWQtdG8tb2UtY29yZSc+CisgICAgICAgIDx0aXRsZT5SZWNpcGUgTWFpbnRlbmFuY2UgVHJhY2tpbmcgRGF0YSBNb3ZlZCB0byBPRS1Db3JlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1haW50ZW5hbmNlIHRyYWNraW5nIGRhdGEgZm9yIHJlY2lwZXMgdGhhdCB3YXMgcHJldmlvdXNseSBwYXJ0CisgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+bWV0YS15b2N0bzwvZmlsZW5hbWU+IGhhcyBiZWVuIG1vdmVkIHRvCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PRS1Db3JlPC9saW5rPi4KKyAgICAgICAgICAgIFRoZSBjaGFuZ2UgaW5jbHVkZXMgPGZpbGVuYW1lPnBhY2thZ2VfcmVnZXguaW5jPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvX2FsaWFzLmluYzwvZmlsZW5hbWU+LCB3aGljaCBhcmUgdHlwaWNhbGx5IGVuYWJsZWQKKyAgICAgICAgICAgIHdoZW4gdXNpbmcgdGhlIDxmaWxlbmFtZT5kaXN0cm9kYXRhPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBjb250ZW50cyBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPnVwc3RyZWFtX3RyYWNraW5nLmluYzwvZmlsZW5hbWU+IGhhcyBub3cgYmVlbiBzcGxpdCBvdXQKKyAgICAgICAgICAgIHRvIHRoZSByZWxldmFudCByZWNpcGVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjAtYXV0b21hdGljLXN0YWxlLXN5c3Jvb3QtZmlsZS1jbGVhbnVwJz4KKyAgICAgICAgPHRpdGxlPkF1dG9tYXRpYyBTdGFsZSBTeXNyb290IEZpbGUgQ2xlYW51cDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTdGFsZSBmaWxlcyBmcm9tIHJlY2lwZXMgdGhhdCBubyBsb25nZXIgZXhpc3QgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYXJlIG5vdyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgZnJvbQorICAgICAgICAgICAgc3lzcm9vdCBhcyB3ZWxsIGFzIHJlbW92ZWQgZnJvbQorICAgICAgICAgICAgYW55IG90aGVyIHBsYWNlIG1hbmFnZWQgYnkgc2hhcmVkIHN0YXRlLgorICAgICAgICAgICAgVGhpcyBhdXRvbWF0aWMgY2xlYW51cCBtZWFucyB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gbm93IHByb3Blcmx5CisgICAgICAgICAgICBoYW5kbGVzIHNpdHVhdGlvbnMgc3VjaCBhcyByZW5hbWluZyB0aGUgYnVpbGQgc3lzdGVtIHNpZGUgb2YKKyAgICAgICAgICAgIHJlY2lwZXMsIHJlbW92YWwgb2YgbGF5ZXJzIGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2hhbmdlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB3b3JrIGRpcmVjdG9yaWVzIGZvciBvbGQgdmVyc2lvbnMgb2YgcmVjaXBlcyBhcmUKKyAgICAgICAgICAgIG5vdyBwcnVuZWQuCisgICAgICAgICAgICBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHBydW5pbmcgb2xkIHdvcmsgZGlyZWN0b3JpZXMsIHlvdSBjYW4gc2V0CisgICAgICAgICAgICB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGluIHlvdXIgY29uZmlndXJhdGlvbjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1NUQVRFX1BSVU5FX09CU09MRVRFV09SS0RJUiA9ICIwIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjAtbGludXgteW9jdG8ta2VybmVsLW1ldGFkYXRhLXJlcG9zaXRvcnktbm93LXNwbGl0LWZyb20tc291cmNlJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+IEtlcm5lbCBNZXRhZGF0YSBSZXBvc2l0b3J5IE5vdyBTcGxpdCBmcm9tIFNvdXJjZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gdHJlZSBoYXMgdXAgdG8gbm93IGJlZW4gYQorICAgICAgICAgICAgY29tYmluZWQgc2V0IG9mIGtlcm5lbCBjaGFuZ2VzIGFuZCBjb25maWd1cmF0aW9uIChtZXRhKSBkYXRhCisgICAgICAgICAgICBjYXJyaWVkIGluIGEgc2luZ2xlIHRyZWUuCisgICAgICAgICAgICBXaGlsZSB0aGlzIGZvcm1hdCBpcyBlZmZlY3RpdmUgYXQga2VlcGluZyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQKKyAgICAgICAgICAgIHNvdXJjZSBtb2RpZmljYXRpb25zIHN5bmNocm9uaXplZCwgaXQgaXMgbm90IGFsd2F5cyBvYnZpb3VzIHRvCisgICAgICAgICAgICBkZXZlbG9wZXJzIGhvdyB0byBtYW5pcHVsYXRlIHRoZSBNZXRhZGF0YSBhcyBjb21wYXJlZCB0byB0aGUKKyAgICAgICAgICAgIHNvdXJjZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWV0YWRhdGEgcHJvY2Vzc2luZyBoYXMgbm93IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMta2VybmVsLXlvY3RvJz48ZmlsZW5hbWU+a2VybmVsLXlvY3RvPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzcyBhbmQgdGhlIGV4dGVybmFsIE1ldGFkYXRhIHJlcG9zaXRvcnkKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiwgd2hpY2ggaGFzIGFsd2F5cyBiZWVuIHVzZWQKKyAgICAgICAgICAgIHRvIHNlZWQgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+ICJtZXRhIiBicmFuY2guCisgICAgICAgICAgICBUaGlzIHNlcGFyYXRlIDxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+IGNhY2hlIHJlcG9zaXRvcnkKKyAgICAgICAgICAgIGlzIG5vdyB0aGUgcHJpbWFyeSBsb2NhdGlvbiBmb3IgdGhpcyBkYXRhLgorICAgICAgICAgICAgRHVlIHRvIHRoaXMgY2hhbmdlLCA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiBpcyBubyBsb25nZXIKKyAgICAgICAgICAgIGFibGUgdG8gcHJvY2VzcyBjb21iaW5lZCB0cmVlcy4KKyAgICAgICAgICAgIFRodXMsIGlmIHlvdSBuZWVkIHRvIGhhdmUgeW91ciBvd24gY29tYmluZWQga2VybmVsIHJlcG9zaXRvcnksCisgICAgICAgICAgICB5b3UgbXVzdCBkbyB0aGUgc3BsaXQgdGhlcmUgYXMgd2VsbCBhbmQgdXBkYXRlIHlvdXIgcmVjaXBlcworICAgICAgICAgICAgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICByZWNpcGUgZm9yIGFuIGV4YW1wbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMC1hZGRpdGlvbmFsLXFhLWNoZWNrcyc+CisgICAgICAgIDx0aXRsZT5BZGRpdGlvbmFsIFFBIGNoZWNrczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIFFBIGNoZWNrcyBoYXZlIGJlZW4gYWRkZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWRkZWQgYSAiaG9zdC11c2VyLWNvbnRhbWluYXRlZCIgY2hlY2sgZm9yIG93bmVyc2hpcAorICAgICAgICAgICAgICAgICAgICBpc3N1ZXMgZm9yIHBhY2thZ2VkIGZpbGVzIG91dHNpZGUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBjaGVjayBsb29rcyBmb3IgZmlsZXMgdGhhdCBhcmUgaW5jb3JyZWN0bHkgb3duZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHVzZXIgdGhhdCByYW4gQml0QmFrZSBpbnN0ZWFkIG9mIG93bmVkIGJ5IGEgdmFsaWQgdXNlciBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZGRlZCBhbiAiaW52YWxpZC1jaGFycyIgY2hlY2sgZm9yIGludmFsaWQgKG5vbi1VVEY4KQorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGluIHJlY2lwZSBtZXRhZGF0YSB2YXJpYWJsZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFU0NSSVBUSU9OJz48ZmlsZW5hbWU+REVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVU1NQVJZJz48ZmlsZW5hbWU+U1VNTUFSWTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNFQ1RJT04nPjxmaWxlbmFtZT5TRUNUSU9OPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBwYWNrYWdlIG1hbmFnZXJzIGRvIG5vdCBzdXBwb3J0IHRoZXNlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWRkZWQgYW4gImludmFsaWQtcGFja2FnZWNvbmZpZyIgY2hlY2sgZm9yIGFueSBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkbyBub3QgbWF0Y2ggYW55IDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGRlZmluZWQgZm9yIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMC1taXNjZWxsYW5lb3VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGVzZSBhZGRpdGlvbmFsIGNoYW5nZXMgZXhpc3Q6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ay11cGRhdGUtaWNvbi1jYWNoZTwvZmlsZW5hbWU+IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbmFtZWQgdG8gPGZpbGVuYW1lPmd0ay1pY29uLXV0aWxzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT50b29scy1wcm9maWxlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXRlbSBhcyB3ZWxsIGFzIGl0cyBjb3JyZXNwb25kaW5nIHBhY2thZ2Vncm91cCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGU8L2ZpbGVuYW1lPiBubworICAgICAgICAgICAgICAgICAgICBsb25nZXIgYnJpbmcgaW4gPGZpbGVuYW1lPm9wcm9maWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEJyaW5naW5nIGluIDxmaWxlbmFtZT5vcHJvZmlsZTwvZmlsZW5hbWU+IHdhcyBvcmlnaW5hbGx5CisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIGFpZCBjb21waWxhdGlvbiBvbiByZXNvdXJjZS1jb25zdHJhaW5lZAorICAgICAgICAgICAgICAgICAgICB0YXJnZXRzLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGFpZCBoYXMgbm90IGJlZW4gd2lkZWx5IHVzZWQgYW5kIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICBsaWtlbHkgdG8gYmUgdXNlZCBnb2luZyBmb3J3YXJkIGR1ZSB0byB0aGUgbW9yZSBwb3dlcmZ1bAorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgcGxhdGZvcm1zIGFuZCB0aGUgZXhpc3RlbmNlIG9mIGJldHRlcgorICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxhdGlvbiB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlJ3MgZGVmYXVsdCB2YWx1ZSBub3cgc3BlY2lmaWVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQ0PC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFsbCBzdXBwb3J0IGZvciB0aGUgPGZpbGVuYW1lPlBSSU5DPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Vncm91cCBubyBsb25nZXIgYnJpbmdzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWdodHRwZDwvZmlsZW5hbWU+IGR1ZSB0byB0aGUgZmFjdCB0aGF0CisgICAgICAgICAgICAgICAgICAgIGJyaW5naW5nIGluIDxmaWxlbmFtZT5saWdodHRwZDwvZmlsZW5hbWU+IGlzIG5vdCByZWFsbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgbGluZSB3aXRoIHRoZSBwYWNrYWdlZ3JvdXAncyBwdXJwb3NlLCB3aGljaCBpcyB0byBhZGQgZnVsbAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucyBvZiBjb21tYW5kLWxpbmUgdG9vbHMgdGhhdCBieSBkZWZhdWx0IGFyZQorICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBieSA8ZmlsZW5hbWU+YnVzeWJveDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbW92aW5nLXRvLXRoZS15b2N0by1wcm9qZWN0LTIuMS1yZWxlYXNlJz4KKyAgICA8dGl0bGU+TW92aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0IDIuMSBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgbWlncmF0aW9uIGluZm9ybWF0aW9uIGZvciBtb3ZpbmcgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UgZnJvbSB0aGUgcHJpb3IgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS12YXJpYWJsZS1leHBhbnNpb24taW4tcHl0aG9uLWZ1bmN0aW9ucyc+CisgICAgICAgIDx0aXRsZT5WYXJpYWJsZSBFeHBhbnNpb24gaW4gUHl0aG9uIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBWYXJpYWJsZSBleHByZXNzaW9ucywgc3VjaCBhcworICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+VkFSTkFNRTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgbm8gbG9uZ2VyIGV4cGFuZCBhdXRvbWF0aWNhbGx5IHdpdGhpbiBQeXRob24gZnVuY3Rpb25zLgorICAgICAgICAgICAgU3VwcHJlc3NpbmcgZXhwYW5zaW9uIHdhcyBkb25lIHRvIGFsbG93IFB5dGhvbiBmdW5jdGlvbnMgdG8KKyAgICAgICAgICAgIGNvbnN0cnVjdCBzaGVsbCBzY3JpcHRzIG9yIG90aGVyIGNvZGUgZm9yIHNpdHVhdGlvbnMgaW4gd2hpY2ggeW91CisgICAgICAgICAgICBkbyBub3Qgd2FudCBzdWNoIGV4cHJlc3Npb25zIGV4cGFuZGVkLgorICAgICAgICAgICAgRm9yIGFueSBleGlzdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZXNlIGV4cGFuc2lvbnMsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICBjaGFuZ2UgdGhlIGV4cGFuc2lvbnMgdG8gZXhwYW5kIHRoZSB2YWx1ZSBvZiBpbmRpdmlkdWFsCisgICAgICAgICAgICB2YXJpYWJsZXMgdGhyb3VnaCA8ZmlsZW5hbWU+ZC5nZXRWYXIoKTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVG8gYWx0ZXJuYXRpdmVseSBleHBhbmQgbW9yZSBjb21wbGV4IGV4cHJlc3Npb25zLAorICAgICAgICAgICAgdXNlIDxmaWxlbmFtZT5kLmV4cGFuZCgpPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1vdmVycmlkZXMtbXVzdC1ub3ctYmUtbG93ZXItY2FzZSc+CisgICAgICAgIDx0aXRsZT5PdmVycmlkZXMgTXVzdCBOb3cgYmUgTG93ZXItQ2FzZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgY29udmVudGlvbiBmb3Igb3ZlcnJpZGVzIGhhcyBhbHdheXMgYmVlbiBmb3IgdGhlbSB0byBiZQorICAgICAgICAgICAgbG93ZXItY2FzZSBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgVGhpcyBwcmFjdGljZSBpcyBub3cgYSByZXF1aXJlbWVudCBhcyBCaXRCYWtlJ3MgZGF0YXN0b3JlIG5vdworICAgICAgICAgICAgYXNzdW1lcyBsb3dlci1jYXNlIGNoYXJhY3RlcnMgaW4gb3JkZXIgdG8gZ2l2ZSBhIHNsaWdodCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgYm9vc3QgZHVyaW5nIHBhcnNpbmcuCisgICAgICAgICAgICBJbiBwcmFjdGljYWwgdGVybXMsIHRoaXMgcmVxdWlyZW1lbnQgbWVhbnMgdGhhdCBhbnl0aGluZyB0aGF0IGVuZHMKKyAgICAgICAgICAgIHVwIGluCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItT1ZFUlJJREVTJz48ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBtdXN0IG5vdyBhcHBlYXIgaW4gbG93ZXItY2FzZSBjaGFyYWN0ZXJzIChlLmcuIHZhbHVlcyBmb3IKKyAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5UQVJHRVRfQVJDSDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+LCBhbmQgYWxzbyByZWNpcGUgbmFtZXMgaWYKKyAgICAgICAgICAgIDxmaWxlbmFtZT5fcG4tPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICBvdmVycmlkZXMgYXJlIHRvIGJlIGVmZmVjdGl2ZSkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1leHBhbmQtcGFyYW1ldGVyLXRvLWdldHZhci1hbmQtZ2V0dmFyZmxhZy1ub3ctbWFuZGF0b3J5Jz4KKyAgICAgICAgPHRpdGxlPkV4cGFuZCBQYXJhbWV0ZXIgdG8gPGZpbGVuYW1lPmdldFZhcigpPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2V0VmFyRmxhZygpPC9maWxlbmFtZT4gaXMgTm93IE1hbmRhdG9yeTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZXhwYW5kIHBhcmFtZXRlciB0byA8ZmlsZW5hbWU+Z2V0VmFyKCk8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRWYXJGbGFnKCk8L2ZpbGVuYW1lPiBwcmV2aW91c2x5IGRlZmF1bHRlZCB0bworICAgICAgICAgICAgRmFsc2UgaWYgbm90IHNwZWNpZmllZC4KKyAgICAgICAgICAgIE5vdywgaG93ZXZlciwgbm8gZGVmYXVsdCBleGlzdHMgc28gb25lIG11c3QgYmUgc3BlY2lmaWVkLgorICAgICAgICAgICAgWW91IG11c3QgY2hhbmdlIGFueSA8ZmlsZW5hbWU+Z2V0VmFyKCk8L2ZpbGVuYW1lPiBjYWxscyB0aGF0CisgICAgICAgICAgICBkbyBub3Qgc3BlY2lmeSB0aGUgZmluYWwgZXhwYW5kIHBhcmFtZXRlciB0byBjYWxscyB0aGF0IGRvIHNwZWNpZnkKKyAgICAgICAgICAgIHRoZSBwYXJhbWV0ZXIuCisgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiBjb21tYW5kIGF0IHRoZQorICAgICAgICAgICAgYmFzZSBvZiBhIGxheWVyIHRvIG1ha2UgdGhpcyBjaGFuZ2U6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHNlZCAtZSAnczpcKFwuZ2V0VmFyKFteLCgpXSpcKSk6XDEsIEZhbHNlKTpnJyAtaSBgZ3JlcCAtcmlsIGdldFZhciAqYAorICAgICBzZWQgLWUgJ3M6XChcLmdldFZhckZsYWcoW14sKCldKiwgW14sKCldKlwpKTpcMSwgRmFsc2UpOmcnIC1pIGBncmVwIC1yaWwgZ2V0VmFyRmxhZyAqYAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBwcmVwYXJlcyB0aGUgd2F5IGZvcgorICAgICAgICAgICAgICAgIGNoYW5naW5nIHRoZSBkZWZhdWx0IHRvIFRydWUgaW4gYSBmdXR1cmUgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgICAgIFRoaXMgZnV0dXJlIGNoYW5nZSBpcyBhIG11Y2ggbW9yZSBzZW5zaWJsZSBkZWZhdWx0IHRoYW4gRmFsc2UuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIGNoYW5nZSBuZWVkcyB0byBiZSBtYWRlIGdyYWR1YWxseSBhcyBhIHN1ZGRlbgorICAgICAgICAgICAgICAgIGNoYW5nZSBvZiB0aGUgZGVmYXVsdCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBzaWRlLWVmZmVjdHMKKyAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIGJlIGRpZmZpY3VsdCB0byBkZXRlY3QuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1tYWtlZmlsZS1lbnZpcm9ubWVudC1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1ha2VmaWxlIEVudmlyb25tZW50IENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FTUFLRSc+PGZpbGVuYW1lPkVYVFJBX09FTUFLRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgbm93IGRlZmF1bHRzIHRvICIiIGluc3RlYWQgb2YgIi1lIE1BS0VGTEFHUz0iLgorICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+RVhUUkFfT0VNQUtFPC9maWxlbmFtZT4gdG8gIi1lIE1BS0VGTEFHUz0iIGJ5CisgICAgICAgICAgICBkZWZhdWx0IHdhcyBhIGhpc3RvcmljYWwgYWNjaWRlbnQgdGhhdCBoYXMgcmVxdWlyZWQgbWFueSBjbGFzc2VzCisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgIGFuZCByZWNpcGVzIHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCBpbiBvcmRlciB0byB3b3JrIHdpdGgKKyAgICAgICAgICAgIHNlbnNpYmxlIGJ1aWxkIHN5c3RlbXMuCisgICAgICAgICAgICBXaGVuIHVwZ3JhZGluZyB0byB0aGUgcmVsZWFzZSwgeW91IG11c3QgZWRpdCBhbnkgcmVjaXBlIHRoYXQKKyAgICAgICAgICAgIHJlbGllcyB1cG9uIHRoaXMgb2xkIGRlZmF1bHQgYnkgZWl0aGVyIHNldHRpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRSQV9PRU1BS0U8L2ZpbGVuYW1lPiBiYWNrIHRvICItZSBNQUtFRkxBR1M9IiBvciBieQorICAgICAgICAgICAgZXhwbGljaXRseSBzZXR0aW5nIGFueSByZXF1aXJlZCB2YXJpYWJsZSB2YWx1ZSBvdmVycmlkZXMgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRSQV9PRU1BS0U8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdHlwaWNhbGx5IG9ubHkgbmVlZGVkCisgICAgICAgICAgICB3aGVuIGEgTWFrZWZpbGUgc2V0cyBhIGRlZmF1bHQgdmFsdWUgZm9yIGEgdmFyaWFibGUgdGhhdCBpcworICAgICAgICAgICAgaW5hcHByb3ByaWF0ZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24gdXNpbmcgdGhlICI9IiBvcGVyYXRvciByYXRoZXIKKyAgICAgICAgICAgIHRoYW4gdGhlICI/PSIgb3BlcmF0b3IuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1saWJleGVjZGlyLXJldmVydGVkLXRvLXByZWZpeC1saWJleGVjJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5saWJleGVjZGlyPC9maWxlbmFtZT4gUmV2ZXJ0ZWQgdG8gPGZpbGVuYW1lPiR7cHJlZml4fS9saWJleGVjPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHVzZSBvZiA8ZmlsZW5hbWU+JHtsaWJkaXJ9LyR7QlBOfTwvZmlsZW5hbWU+IGFzCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGliZXhlY2RpcjwvZmlsZW5hbWU+IGlzIGRpZmZlcmVudCBhcyBjb21wYXJlZCB0byBhbGwKKyAgICAgICAgICAgIG90aGVyIG1haW5zdHJlYW0gZGlzdHJpYnV0aW9ucywgd2hpY2ggZWl0aGVyIHVzZXMKKyAgICAgICAgICAgIDxmaWxlbmFtZT4ke3ByZWZpeH0vbGliZXhlYzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHtsaWJkaXJ9PC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUgdXNlIGlzIGFsc28gY29udHJhcnkgdG8gdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzCisgICAgICAgICAgICAoaS5lLiA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5nbnUub3JnL3ByZXAvc3RhbmRhcmRzL2h0bWxfbm9kZS9EaXJlY3RvcnktVmFyaWFibGVzLmh0bWwnPjwvdWxpbms+KQorICAgICAgICAgICAgdGhhdCBzdWdnZXN0IDxmaWxlbmFtZT4ke3ByZWZpeH0vbGliZXhlYzwvZmlsZW5hbWU+IGFuZCBhbHNvCisgICAgICAgICAgICBub3RlcyB0aGF0IGFueSBwYWNrYWdlLXNwZWNpZmljIG5lc3Rpbmcgc2hvdWxkIGJlIGRvbmUgYnkgdGhlCisgICAgICAgICAgICBwYWNrYWdlIGl0c2VsZi4KKyAgICAgICAgICAgIEZpbmFsbHksIGhhdmluZyA8ZmlsZW5hbWU+bGliZXhlY2RpcjwvZmlsZW5hbWU+IGNoYW5nZSBiZXR3ZWVuCisgICAgICAgICAgICByZWNpcGVzIG1ha2VzIGl0IHZlcnkgZGlmZmljdWx0IGZvciBkaWZmZXJlbnQgcmVjaXBlcyB0byBpbnZva2UKKyAgICAgICAgICAgIGJpbmFyaWVzIHRoYXQgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbnRvCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGliZXhlY2RpcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhlIEZpbGVzeXN0ZW0gSGllcmFyY2h5IFN0YW5kYXJkCisgICAgICAgICAgICAoaS5lLiA8dWxpbmsgdXJsPSdodHRwOi8vcmVmc3BlY3MubGludXhmb3VuZGF0aW9uLm9yZy9GSFNfMy4wL2Zocy9jaDA0czA3Lmh0bWwnPjwvdWxpbms+KQorICAgICAgICAgICAgbm93IHJlY29nbml6ZXMgdGhlIHVzZSBvZiA8ZmlsZW5hbWU+JHtwcmVmaXh9L2xpYmV4ZWMvPC9maWxlbmFtZT4sCisgICAgICAgICAgICBnaXZpbmcgZGlzdHJpYnV0aW9ucyB0aGUgY2hvaWNlIGJldHdlZW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT4ke3ByZWZpeH0vbGliPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgIDxmaWxlbmFtZT4ke3ByZWZpeH0vbGliZXhlYzwvZmlsZW5hbWU+IHdpdGhvdXQgYnJlYWtpbmcgRkhTLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjEtYWMtY3Ytc2l6ZW9mLW9mZi10LW5vLWxvbmdlci1jYWNoZWQtaW4tc2l0ZS1maWxlcyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YWNfY3Zfc2l6ZW9mX29mZl90PC9maWxlbmFtZT4gaXMgTm8gTG9uZ2VyIENhY2hlZCBpbiBTaXRlIEZpbGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciByZWNpcGVzIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLCA8ZmlsZW5hbWU+YWNfY3Zfc2l6ZW9mX29mZl90PC9maWxlbmFtZT4gaXMgbm8gbG9uZ2VyIGNhY2hlZAorICAgICAgICAgICAgaW4gdGhlIHNpdGUgZmlsZXMgZm9yIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBjaGFuZ2UgaXMgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5hY19jdl9zaXplb2Zfb2ZmX3Q8L2ZpbGVuYW1lPiB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkKKyAgICAgICAgICAgIHN0YXRpYyBwZXIgYXJjaGl0ZWN0dXJlIGFzIHdhcyBwcmV2aW91c2x5IGFzc3VtZWQuCisgICAgICAgICAgICBSYXRoZXIsIHRoZSB2YWx1ZSBjaGFuZ2VzIGJhc2VkIG9uIHdoZXRoZXIgbGFyZ2UgZmlsZSBzdXBwb3J0IGlzCisgICAgICAgICAgICBlbmFibGVkLgorICAgICAgICAgICAgRm9yIG1vc3Qgc29mdHdhcmUgdGhhdCB1c2VzIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+LCB0aGlzCisgICAgICAgICAgICBjaGFuZ2Ugc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0uCisgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIHJlY2lwZSB0aGF0IGJ5cGFzc2VzIHRoZSBzdGFuZGFyZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayBmcm9tIHRoZSA8ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT4gY2xhc3MgYW5kIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgdGhlIHJlY2lwZSBpcyBidWlsZGluZyB1c2VzIGEgdmVyeSBvbGQgdmVyc2lvbiBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9jb25mPC9maWxlbmFtZT4sIHRoZSByZWNpcGUgbWlnaHQgYmUgaW5jYXBhYmxlIG9mCisgICAgICAgICAgICBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBzaXplIG9mIDxmaWxlbmFtZT5vZmZfdDwvZmlsZW5hbWU+IGR1cmluZworICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIHBhdGNoIHRoZSBzb2Z0d2FyZSBhcyBuZWNlc3NhcnkKKyAgICAgICAgICAgIHRvIGFsbG93IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZyb20gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT4gY2xhc3MgdG8gd29yayBzdWNoIHRoYXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvcmVjb25mPC9maWxlbmFtZT4gc3VjY2VlZHMgYW5kIHByb2R1Y2VzIGEgd29ya2luZworICAgICAgICAgICAgY29uZmlndXJlIHNjcmlwdCwgYW5kIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgICAgIG92ZXJyaWRkZW4gPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IHRhc2sgc3VjaCB0aGF0IHRoZQorICAgICAgICAgICAgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIGdldCB1c2VkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjEtaW1hZ2UtZ2VuZXJhdGlvbi1zcGxpdC1vdXQtZnJvbS1maWxlc3lzdGVtLWdlbmVyYXRpb24nPgorICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbiBpcyBOb3cgU3BsaXQgT3V0IGZyb20gRmlsZXN5c3RlbSBHZW5lcmF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFByZXZpb3VzbHksIGZvciBpbWFnZSByZWNpcGVzIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXJvb3Rmcyc+PGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayBhc3NlbWJsZWQgdGhlIGZpbGVzeXN0ZW0gYW5kIHRoZW4gZnJvbSB0aGF0IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgIGdlbmVyYXRlZCBpbWFnZXMuCisgICAgICAgICAgICBXaXRoIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlLCBpbWFnZSBnZW5lcmF0aW9uIGlzIHNwbGl0IGludG8KKyAgICAgICAgICAgIHNlcGFyYXRlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW1hZ2UnPjxmaWxlbmFtZT5kb19pbWFnZV8qPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrcyBmb3IgY2xhcml0eSBib3RoIGluIG9wZXJhdGlvbiBhbmQgaW4gdGhlIGNvZGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3N0IGNhc2VzLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBwcmVzZW50IGFueSBwcm9ibGVtcy4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIG1hZGUgY3VzdG9taXphdGlvbnMgdGhhdCBkaXJlY3RseSBtb2RpZnkgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT4gdGFzayBvciB0aGF0IG1lbnRpb24KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPiwgeW91IG1pZ2h0IG5lZWQgdG8gdXBkYXRlIHRob3NlCisgICAgICAgICAgICBjaGFuZ2VzLgorICAgICAgICAgICAgSW4gcGFydGljdWxhciwgaWYgeW91IGhhZCBhZGRlZCBhbnkgdGFza3MgYWZ0ZXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPiwgeW91IHNob3VsZCBtYWtlIGVkaXRzIHNvIHRoYXQKKyAgICAgICAgICAgIHRob3NlIHRhc2tzIGFyZSBhZnRlciB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZS1jb21wbGV0ZSc+PGZpbGVuYW1lPmRvX2ltYWdlX2NvbXBsZXRlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrIHJhdGhlciB0aGFuIGFmdGVyIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc28gdGhhdCB0aGUgeW91ciBhZGRlZCB0YXNrcworICAgICAgICAgICAgcnVuIGF0IHRoZSBjb3JyZWN0IHRpbWUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEEgbWlub3IgcGFydCBvZiB0aGlzIHJlc3RydWN0dXJpbmcgaXMgdGhhdCB0aGUgcG9zdC1wcm9jZXNzaW5nCisgICAgICAgICAgICBkZWZpbml0aW9ucyBhbmQgZnVuY3Rpb25zIGhhdmUgYmVlbiBtb3ZlZCBmcm9tIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MgdG8gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1yb290ZnMqJz48ZmlsZW5hbWU+cm9vdGZzLXBvc3Rjb21tYW5kczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICBGdW5jdGlvbmFsbHksIGhvd2V2ZXIsIHRoZXkgcmVtYWluIHVuY2hhbmdlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4xLXJlbW92ZWQtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSAyLjEgcmVsZWFzZToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiB2ZXJzaW9uIDQuODoKKyAgICAgICAgICAgICAgICAgICAgVmVyc2lvbnMgNC45IGFuZCA1LjMgcmVtYWluLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnF0NDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBBbGwgc3VwcG9ydCBmb3IgUXQgNC54IGhhcyBiZWVuIG1vdmVkIG91dCB0byBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXF0NDwvZmlsZW5hbWU+IGxheWVyIGJlY2F1c2UgUXQgNCBpcyBubworICAgICAgICAgICAgICAgICAgICBsb25nZXIgc3VwcG9ydGVkIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPngxMXZuYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBNb3ZlZCB0byB0aGUgPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBObyBsb25nZXIgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpYmpwZWc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWQgYnkgdGhlIDxmaWxlbmFtZT5saWJqcGVnLXR1cmJvPC9maWxlbmFtZT4gcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB0aDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBCZWNhbWUgb2Jzb2xldGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGlib2lsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZSBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgYmVlbiBtb3ZlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXVsdGltZWRpYTwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmd0ay10aGVtZS10b3J0dXJlcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBSZWNpcGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzIGJlZW4gbW92ZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWdub21lPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z25vbWUtbWltZS1kYXRhPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZSBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgYmVlbiBtb3ZlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZ25vbWU8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VkIGJ5IHRoZSA8ZmlsZW5hbWU+ZXVkZXY8L2ZpbGVuYW1lPiByZWNpcGUgZm9yCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyA8ZmlsZW5hbWU+c3lzdmluaXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB3aXRoIG5ld2VyIGtlcm5lbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uLXB5Z3RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZSBiZWNhbWUgb2Jzb2xldGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YWR0LWluc3RhbGxlcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBSZWNpcGUgYmVjYW1lIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtaWdyYXRpb24tMi4xLWFkdC1yZW1vdmVkJz5BRFQgUmVtb3ZlZDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1jbGFzcy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkNsYXNzIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGhhdmUgY2hhbmdlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5hdXRvdG9vbHNfc3RhZ2U8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Mgbm93IHByb3ZpZGVzIGl0cyBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgaW5oZXJpdGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG90b29sc19zdGFnZTwvZmlsZW5hbWU+IHNob3VsZCBub3cgaW5oZXJpdAorICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPiBpbnN0ZWFkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJvb3QtZGlyZWN0ZGlzazwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBNZXJnZWQgaW50byB0aGUgPGZpbGVuYW1lPmltYWdlLXZtPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ym9vdC1kaXJlY3RkaXNrPC9maWxlbmFtZT4gY2xhc3Mgd2FzIHJhcmVseQorICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSB1c2VkLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoaXMgY2hhbmdlIHNob3VsZCBub3QgY2F1c2UgYW55IGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ib290aW1nPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE1lcmdlZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ib290aW1nPC9maWxlbmFtZT4gY2xhc3Mgd2FzIHJhcmVseQorICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSB1c2VkLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoaXMgY2hhbmdlIHNob3VsZCBub3QgY2F1c2UgYW55IGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5wYWNrYWdlaW5mbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkIGR1ZSB0byBpdHMgbGltaXRlZCB1c2UgYnkgdGhlIEhvYiBVSSwgd2hpY2ggaGFzCisgICAgICAgICAgICAgICAgICAgIGl0c2VsZiBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1idWlsZC1zeXN0ZW0tdWktY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5CdWlsZCBTeXN0ZW0gVXNlciBJbnRlcmZhY2UgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gdGhlIGJ1aWxkIHN5c3RlbSB1c2VyCisgICAgICAgICAgICBpbnRlcmZhY2U6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SG9iIEdUSystYmFzZWQgVUk8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBiZWNhdXNlIGl0IGlzIHVubWFpbnRhaW5lZCBhbmQgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIG91dGRhdGVkIEdUSysgMiBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgICBUaGUgVG9hc3RlciB3ZWItYmFzZWQgVUkgaXMgbXVjaCBtb3JlIGNhcGFibGUgYW5kIGlzCisgICAgICAgICAgICAgICAgICAgIGFjdGl2ZWx5IG1haW50YWluZWQuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdXNpbmctdGhlLXRvYXN0ZXItd2ViLWludGVyZmFjZSc+VXNpbmcgdGhlIFRvYXN0ZXIgV2ViIEludGVyZmFjZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBUb2FzdGVyIFVzZXIgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHRoaXMgaW50ZXJmYWNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJwdWNjaG8iIEJpdEJha2UgVUk8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBiZWNhdXNlIGlzIHVubWFpbnRhaW5lZCBhbmQgbm8gbG9uZ2VyIHVzZWZ1bC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4xLWFkdC1yZW1vdmVkJz4KKyAgICAgICAgPHRpdGxlPkFEVCBSZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBUb29sa2l0IChBRFQpIGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgIGJlY2F1c2UgaXRzIGZ1bmN0aW9uYWxpdHkgYWxtb3N0IGNvbXBsZXRlbHkgb3ZlcmxhcHBlZCB3aXRoIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLXVzaW5nLXRoZS1zdGFuZGFyZC1zZGsnPnN0YW5kYXJkIFNESzwvdWxpbms+CisgICAgICAgICAgICBhbmQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+ZXh0ZW5zaWJsZSBTREs8L3VsaW5rPi4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBTREtzIGFuZCBob3cgdG8gYnVpbGQgYW5kIHVzZSB0aGVtLCBzZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIElERSBQbHVnLWluIGlzIHN0aWxsIHN1cHBvcnRlZCBhbmQKKyAgICAgICAgICAgICAgICBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24tY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5Qb2t5IFJlZmVyZW5jZSBEaXN0cmlidXRpb24gQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgZm9yIHRoZSBQb2t5IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEteW9jdG88L2ZpbGVuYW1lPiBsYXllciBoYXMgYmVlbiByZW5hbWVkCisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiB0byBiZXR0ZXIgbWF0Y2ggaXRzCisgICAgICAgICAgICAgICAgICAgIHB1cnBvc2UsIHdoaWNoIGlzIHRvIHByb3ZpZGUgdGhlIFBva3kgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIHJldGFpbnMgaXRzCisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIG5hbWUgc2luY2UgaXQgcHJvdmlkZXMgcmVmZXJlbmNlIG1hY2hpbmVzIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXQgaXMgb3RoZXJ3aXNlIHVucmVsYXRlZCB0byBQb2t5LgorICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VzIHRvIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYmUgdXBkYXRlZCwgc28geW91IHNob3VsZCBub3QgbmVlZCB0byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgYW55dGhpbmcgdW5sZXNzIHlvdSBhcmUgcmVseWluZyBvbiB0aGlzIG5hbWluZyBlbHNld2hlcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVuaW5hdGl2ZSc+PGZpbGVuYW1lPnVuaW5hdGl2ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0IGluIFBva3kuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgYXR0ZW1wdHMgdG8gaXNvbGF0ZSB0aGUgYnVpbGQgc3lzdGVtIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGhvc3QgZGlzdHJpYnV0aW9uJ3MgQyBsaWJyYXJ5IGFuZCBtYWtlcyByZS11c2Ugb2YgbmF0aXZlCisgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgYWNyb3NzIGRpZmZlcmVudCBob3N0IGRpc3RyaWJ1dGlvbnMKKyAgICAgICAgICAgICAgICAgICAgcHJhY3RpY2FsLgorICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgY2xhc3MgZW5hYmxlZCwgYSB0YXJiYWxsIGNvbnRhaW5pbmcgYSBwcmUtYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgQyBsaWJyYXJ5IGlzIGRvd25sb2FkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBidWlsZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT51bmluYXRpdmU8L2ZpbGVuYW1lPiBjbGFzcyBpcyBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUsIHdoaWNoIGZvciB0aG9zZSBub3QgdXNpbmcgdGhlIFBva3kgZGlzdHJpYnV0aW9uLCBjYW4KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0byBlYXNpbHkgZW5hYmxlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFsdGVybmF0aXZlbHksIGlmIHlvdSB3aXNoIHRvIGJ1aWxkIHlvdXIgb3duCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bmluYXRpdmU8L2ZpbGVuYW1lPiB0YXJiYWxsLCB5b3UgY2FuIGRvIHNvIGJ5CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSA8ZmlsZW5hbWU+dW5pbmF0aXZlLXRhcmJhbGw8L2ZpbGVuYW1lPiByZWNpcGUsCisgICAgICAgICAgICAgICAgICAgIG1ha2luZyBpdCBhdmFpbGFibGUgdG8geW91ciBidWlsZCBtYWNoaW5lcworICAgICAgICAgICAgICAgICAgICAoZS5nLiBvdmVyIEhUVFAvSFRUUFMpIGFuZCBzZXR0aW5nIGEgc2ltaWxhciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBvbmUgc2V0IGJ5IDxmaWxlbmFtZT55b2N0by11bmluYXRpdmUuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3RhdGljIGxpYnJhcnkgZ2VuZXJhdGlvbiwgZm9yIG1vc3QgY2FzZXMsIGlzIG5vdyBkaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGluIHRoZSBQb2t5IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsaW5nIHRoaXMgZ2VuZXJhdGlvbiBzYXZlcyBzb21lIGJ1aWxkIHRpbWUgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc2l6ZSB1c2VkIGZvciBidWlsZCBvdXRwdXQgYXJ0aWZhY3RzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5EaXNhYmxpbmcgdGhpcyBsaWJyYXJ5IGdlbmVyYXRpb24gaXMgYWNjb21wbGlzaGVkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBmb3IgdGhvc2Ugbm90IHVzaW5nIHRoZSBQb2t5IGRpc3RyaWJ1dGlvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgZWFzaWx5IGluY2x1ZGUgdG8gZW5hYmxlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFueSByZWNpcGUgdGhhdCBuZWVkcyB0byBvcHQtb3V0IG9mIGhhdmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgIi0tZGlzYWJsZS1zdGF0aWMiIG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgZWl0aGVyIGJlY2F1c2UgaXQgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbgorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgb3IgYmVjYXVzZSBzdGF0aWMgbGlicmFyaWVzIGFyZQorICAgICAgICAgICAgICAgICAgICBuZWVkZWQgc2hvdWxkIHNldCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERJU0FCTEVfU1RBVElDID0gIiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzZXBhcmF0ZSA8ZmlsZW5hbWU+cG9reS10aW55PC9maWxlbmFtZT4gZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIG5vdyB1c2VzIHRoZSBtdXNsIEMgbGlicmFyeSBpbnN0ZWFkIG9mIGEgaGVhdmlseSBwYXJlZAorICAgICAgICAgICAgICAgICAgICBkb3duIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBVc2luZyBtdXNsIHJlc3VsdHMgaW4gYSBzbWFsbGVyCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBhbmQgZmFjaWxpdGF0ZXMgbXVjaCBncmVhdGVyIG1haW50YWluYWJpbGl0eQorICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIG11c2wgaXMgZGVzaWduZWQgdG8gaGF2ZSBhIHNtYWxsIGZvb3RwcmludC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGhhdmUgdXNlZCA8ZmlsZW5hbWU+cG9reS10aW55PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIGhhdmUgY3VzdG9taXplZCB0aGUgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiB5b3Ugd2lsbCBuZWVkIHRvIHJlZG8gdGhvc2UgY3VzdG9taXphdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtdXNsIHdoZW4gdXBncmFkaW5nIHRvIHRoZSBuZXcgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4xLXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBwYWNrYWdpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ydW51c2VyPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tb3VudHBvaW50PC9maWxlbmFtZT4gYmluYXJpZXMsIHdoaWNoIHdlcmUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBpbiB0aGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UsIGhhdmUgYmVlbiBzcGxpdCBvdXQgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnV0aWwtbGludXgtcnVudXNlcjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXRpbC1saW51eC1tb3VudHBvaW50PC9maWxlbmFtZT4gcGFja2FnZXMsCisgICAgICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnB5dGhvbi1lbGVtZW50dHJlZTwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgIGJlZW4gbWVyZ2VkIGludG8gdGhlIDxmaWxlbmFtZT5weXRob24teG1sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4xLXR1bmluZy1maWxlLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+VHVuaW5nIEZpbGUgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gdGhlIHR1bmluZyBmaWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgIm5vLXRodW1iLWludGVyd29yayIgdHVuaW5nIGZlYXR1cmUgaGFzIGJlZW4gZHJvcHBlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBBUk0gdHVuZSBpbmNsdWRlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIGludGVyd29ya2luZyBpcyByZXF1aXJlZCBmb3IgQVJNIEVBQkksIGF0dGVtcHRpbmcKKyAgICAgICAgICAgICAgICAgICAgdG8gZGlzYWJsZSBpdCB0aHJvdWdoIGEgdHVuaW5nIGZlYXR1cmUgbm8gbG9uZ2VyIG1ha2VzCisgICAgICAgICAgICAgICAgICAgIHNlbnNlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIEFSTSBPQUJJIHdhcyBkZXByZWNhdGVkIGluIGdjYyA0LjcuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnR1bmUtY29ydGV4bSouaW5jPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50dW5lLWNvcnRleHI0LmluYzwvZmlsZW5hbWU+IGZpbGVzIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkIGJlY2F1c2UgdGhleSBhcmUgcG9vcmx5IHRlc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gb2ZmaWNpYWxseSBnYWlucworICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciBDUFVzIHdpdGhvdXQgYW4gTU1VLCB0aGVzZSB0dW5pbmcgZmlsZXMgd291bGQKKyAgICAgICAgICAgICAgICAgICAgcHJvYmFibHkgYmUgYmV0dGVyIG1haW50YWluZWQgaW4gYSBzZXBhcmF0ZSBsYXllcgorICAgICAgICAgICAgICAgICAgICBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1zdXBwb3J0aW5nLWdvYmplY3QtaW50cm9zcGVjdGlvbic+CisgICAgICAgIDx0aXRsZT5TdXBwb3J0aW5nIEdPYmplY3QgSW50cm9zcGVjdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHJlbGVhc2Ugc3VwcG9ydHMgZ2VuZXJhdGlvbiBvZiBHTGliIEludHJvc3BlY3RpdmUKKyAgICAgICAgICAgIFJlcG9zaXRvcnkgKEdJUikgZmlsZXMgdGhyb3VnaCBHT2JqZWN0IGludHJvc3BlY3Rpb24sIHdoaWNoIGlzCisgICAgICAgICAgICB0aGUgc3RhbmRhcmQgbWVjaGFuaXNtIGZvciBhY2Nlc3NpbmcgR09iamVjdC1iYXNlZCBzb2Z0d2FyZSBmcm9tCisgICAgICAgICAgICBydW50aW1lIGVudmlyb25tZW50cy4KKyAgICAgICAgICAgIFlvdSBjYW4gZW5hYmxlLCBkaXNhYmxlLCBhbmQgdGVzdCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGRhdGEuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZW5hYmxpbmctZ29iamVjdC1pbnRyb3NwZWN0aW9uLXN1cHBvcnQnPkVuYWJsaW5nIEdPYmplY3QgSW50cm9zcGVjdGlvbiBTdXBwb3J0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMS1taXNjZWxsYW5lb3VzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIGFkZGl0aW9uYWwgY2hhbmdlcyBleGlzdDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW11bSBHaXQgdmVyc2lvbiBoYXMgYmVlbiBpbmNyZWFzZWQgdG8gMS44LjMuMS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBob3N0IGRpc3RyaWJ1dGlvbiBkb2VzIG5vdCBwcm92aWRlIGEgc3VmZmljaWVudGx5CisgICAgICAgICAgICAgICAgICAgIHJlY2VudCB2ZXJzaW9uLCB5b3UgY2FuIGluc3RhbGwgdGhlIGJ1aWxkdG9vbHMsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJvdmlkZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGR0b29scyB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWdneSBhbmQgaW5jb21wbGV0ZSBzdXBwb3J0IGZvciB0aGUgUlBNIHZlcnNpb24gNAorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHdlbGwtdGVzdGVkIGFuZCBtYWludGFpbmVkIHN1cHBvcnQgZm9yIFJQTSB2ZXJzaW9uIDUKKyAgICAgICAgICAgICAgICAgICAgcmVtYWlucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQcmV2aW91c2x5LCB0aGUgZm9sbG93aW5nIGxpc3Qgb2YgcGFja2FnZXMgd2VyZSByZW1vdmVkCisgICAgICAgICAgICAgICAgICAgIGlmIHBhY2thZ2UtbWFuYWdlbWVudCB3YXMgbm90IGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICByZWdhcmRsZXNzIG9mIGFueSBkZXBlbmRlbmNpZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgdXBkYXRlLXJjLmQKKyAgICAgYmFzZS1wYXNzd2QKKyAgICAgc2hhZG93CisgICAgIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKyAgICAgcnVuLXBvc3RpbnN0cworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIHJlbGVhc2UsIHRoZXNlIHBhY2thZ2VzIGFyZSBvbmx5CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgaWYgInJlYWQtb25seS1yb290ZnMiIGlzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+LCBzaW5jZSB0aGV5IG1pZ2h0CisgICAgICAgICAgICAgICAgICAgIHN0aWxsIGJlIG5lZWRlZCBmb3IgYSByZWFkLXdyaXRlIGltYWdlIGV2ZW4gaW4gdGhlIGFic2VuY2UKKyAgICAgICAgICAgICAgICAgICAgb2YgYSBwYWNrYWdlIG1hbmFnZXIgKGUuZy4gaWYgdXNlcnMgbmVlZCB0byBiZSBhZGRlZCwKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQsIG9yIHJlbW92ZWQgYXQgcnVudGltZSkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1kZXZ0b29sLXVzZS1kZXZ0b29sLW1vZGlmeS10by1tb2RpZnktdGhlLXNvdXJjZS1vZi1hbi1leGlzdGluZy1jb21wb25lbnQnPjxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBub3cgZGVmYXVsdHMgdG8gZXh0cmFjdGluZyB0aGUgc291cmNlIHNpbmNlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgaXMgbW9zdCBjb21tb25seSBleHBlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlICIteCIgb3IgIi0tZXh0cmFjdCIgb3B0aW9ucyBhcmUgbm93IG5vLW9wcy4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gcHJvdmlkZSB5b3VyIG93biBleGlzdGluZyBzb3VyY2UgdHJlZSwgeW91CisgICAgICAgICAgICAgICAgICAgIHdpbGwgbm93IG5lZWQgdG8gc3BlY2lmeSBlaXRoZXIgdGhlICItbiIgb3IKKyAgICAgICAgICAgICAgICAgICAgIi0tbm8tZXh0cmFjdCIgb3B0aW9ucyB3aGVuIHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZvcm1mYWN0b3IgZm9yIGEgbWFjaGluZSBpcyBlaXRoZXIgbm90IHN1cHBsaWVkCisgICAgICAgICAgICAgICAgICAgIG9yIGRvZXMgbm90IHNwZWNpZnkgd2hldGhlciBhIGtleWJvYXJkIGlzIGF0dGFjaGVkLCB0aGVuCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGlzIHRvIGFzc3VtZSBhIGtleWJvYXJkIGlzIGF0dGFjaGVkIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICB0aGFuIGFzc3VtZSBubyBrZXlib2FyZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFuZ2UgcHJpbWFyaWx5IGFmZmVjdHMgdGhlIFNhdG8gVUkuCisgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBwYWNrYWdpbmcgaXMKKyAgICAgICAgICAgICAgICAgICAgbm93IGF1dG9tYXRpYy4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciByZWNpcGUgYnVpbGRzIHNvZnR3YXJlIHRoYXQgaW5zdGFsbHMgYmluYXJpZXMgaW50bworICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBvdGhlciB0aGFuIHRoZSBzdGFuZGFyZCBvbmVzLCB5b3Ugbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gdGFrZSBjYXJlIG9mIHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTXyR7UE59LWRiZzwvZmlsZW5hbWU+IHRvIHBpY2sgdXAgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyA8ZmlsZW5hbWU+LmRlYnVnPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgYXMgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgZm91bmQgYW5kIGFkZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluYWNjdXJhdGUgZGlzayBhbmQgQ1BVIHBlcmNlbnRhZ2UgZGF0YSBoYXMgYmVlbiBkcm9wcGVkCisgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPmJ1aWxkc3RhdHM8L2ZpbGVuYW1lPiBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGF0YSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRydXNhZ2UoKTwvZmlsZW5hbWU+IGRhdGEgYW5kIGNvcnJlY3RlZCBJTworICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIHVwZGF0ZSBhbnkgY3VzdG9tIGNvZGUgdGhhdCByZWFkcworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkc3RhdHM8L2ZpbGVuYW1lPiBkYXRhLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3BhY2thZ2VfcmVnZXguaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgbm93IGRlcHJlY2F0ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgaGF2ZSBiZWVuIG1vdmVkIHRvIGluZGl2aWR1YWwKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoaXMgZmlsZSB3aWxsIGxpa2VseSBiZSByZW1vdmVkIGluIGEgZnV0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIGl0IGlzIHN1Z2dlc3RlZCB0aGF0IHlvdSByZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSByZWZlcmVuY2VzIHRvIHRoZSBmaWxlIHRoYXQgbWlnaHQgYmUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+djg2ZC91dmVzYWZiPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2VuZXJpY3g4NjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2VuZXJpY3g4Ni02NDwvZmlsZW5hbWU+IHJlZmVyZW5jZSBtYWNoaW5lcywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHByb3ZpZGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgTW9zdCBtb2Rlcm4geDg2IGJvYXJkcyBkbyBub3QgcmVseSBvbiB0aGlzIGZpbGUgYW5kIGl0IG9ubHkKKyAgICAgICAgICAgICAgICAgICAgYWRkcyBrZXJuZWwgZXJyb3IgbWVzc2FnZXMgZHVyaW5nIHN0YXJ0dXAuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBzdGlsbCBuZWVkIHRvIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnV2ZXNhZmI8L2ZpbGVuYW1lPiwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBzaW1wbHkgYWRkIDxmaWxlbmFtZT52ODZkPC9maWxlbmFtZT4gdG8geW91ciBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgQnVpbGQgc3lzcm9vdCBwYXRocyBhcmUgbm93IHJlbW92ZWQgZnJvbSBkZWJ1ZyBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcgdGhlc2UgcGF0aHMgbWVhbnMgdGhhdCByZW1vdGUgR0RCIHVzaW5nIGFuCisgICAgICAgICAgICAgICAgICAgICB1bnN0cmlwcGVkIGJ1aWxkIHN5c3RlbSBzeXNyb290IHdpbGwgbm8gbG9uZ2VyIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgIChhbHRob3VnaCB0aGlzIHdhcyBuZXZlciBkb2N1bWVudGVkIHRvIHdvcmspLgorICAgICAgICAgICAgICAgICAgICAgVGhlIHN1cHBvcnRlZCBtZXRob2QgdG8gYWNjb21wbGlzaCBzb21ldGhpbmcgc2ltaWxhciBpcworICAgICAgICAgICAgICAgICAgICAgdG8gc2V0IDxmaWxlbmFtZT5JTUFHRV9HRU5fREVCVUdGUzwvZmlsZW5hbWU+IHRvICIxIiwKKyAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBjb21wYW5pb24gZGVidWcgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdW5zdHJpcHBlZCBiaW5hcmllcyBhbmQgYXNzb2NpYXRlZCBkZWJ1ZworICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBhbG9uZ3NpZGUgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0yLjItcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAyLjIgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDIuMiBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjItbWluaW11bS1rZXJuZWwtdmVyc2lvbic+CisgICAgICAgIDx0aXRsZT5NaW5pbXVtIEtlcm5lbCBWZXJzaW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtaW5pbXVtIGtlcm5lbCB2ZXJzaW9uIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSBhbmQgZm9yIFNESworICAgICAgICAgICAgaXMgbm93IDMuMi4wLCBkdWUgdG8gdGhlIHVwZ3JhZGUKKyAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5nbGliYyAyLjI0PC9maWxlbmFtZT4uCisgICAgICAgICAgICBTcGVjaWZpY2FsbHksIGZvciBBQXJjaDY0LWJhc2VkIHRhcmdldHMgdGhlIHZlcnNpb24gaXMKKyAgICAgICAgICAgIDMuMTQuCisgICAgICAgICAgICBGb3IgTmlvcyBJSS1iYXNlZCB0YXJnZXRzLCB0aGUgbWluaW11bSBrZXJuZWwgdmVyc2lvbiBpcyAzLjE5LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIHg4NiBhbmQgeDg2XzY0LCB5b3UgY2FuIHJlc2V0CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU9MREVTVF9LRVJORUwnPjxmaWxlbmFtZT5PTERFU1RfS0VSTkVMPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdG8gYW55dGhpbmcgZG93biB0byAyLjYuMzIgaWYgZGVzaXJlZC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4yLXN0YWdpbmctZGlyZWN0b3JpZXMtaW4tc3lzcm9vdC1zaW1wbGlmaWVkJz4KKyAgICAgICAgPHRpdGxlPlN0YWdpbmcgRGlyZWN0b3JpZXMgaW4gU3lzcm9vdCBIYXMgQmVlbiBTaW1wbGlmaWVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSB3YXkgZGlyZWN0b3JpZXMgYXJlIHN0YWdlZCBpbiBzeXNyb290IGhhcyBiZWVuIHNpbXBsaWZpZWQgYW5kCisgICAgICAgICAgICBpbnRyb2R1Y2VzIHRoZSBuZXcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNST09UX0RJUlMnPjxmaWxlbmFtZT5TWVNST09UX0RJUlM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9ESVJTX05BVElWRSc+PGZpbGVuYW1lPlNZU1JPT1RfRElSU19OQVRJVkU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNST09UX0RJUlNfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U1lTUk9PVF9ESVJTX0JMQUNLTElTVDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29yZS8yMDE2LU1heS8xMjEzNjUuaHRtbCc+djIgcGF0Y2ggc2VyaWVzIG9uIHRoZSBPRS1Db3JlIE1haWxpbmcgTGlzdDwvdWxpbms+CisgICAgICAgICAgICBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4yLXJlbW92YWwtb2Ytb2xkLWltYWdlcy1mcm9tLXRtcC1kZXBsb3ktbm93LWVuYWJsZWQnPgorICAgICAgICA8dGl0bGU+UmVtb3ZhbCBvZiBPbGQgSW1hZ2VzIGFuZCBPdGhlciBGaWxlcyBpbiA8ZmlsZW5hbWU+dG1wL2RlcGxveTwvZmlsZW5hbWU+IE5vdyBFbmFibGVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJlbW92YWwgb2Ygb2xkIGltYWdlcyBhbmQgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95LzwvZmlsZW5hbWU+IGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgZHVlCisgICAgICAgICAgICB0byBhIG5ldyBzdGFnaW5nIG1ldGhvZCB1c2VkIGZvciB0aG9zZSBmaWxlcy4KKyAgICAgICAgICAgIEFzIGEgcmVzdWx0IG9mIHRoaXMgY2hhbmdlLCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5STV9PTERfSU1BR0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBub3cgcmVkdW5kYW50LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjItcHl0aG9uLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UHl0aG9uIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGZvciBQeXRob24gb2NjdXJyZWQ6CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1iaXRiYWtlLW5vdy1yZXF1aXJlcy1weXRob24tMy40Jz4KKyAgICAgICAgICAgIDx0aXRsZT5CaXRCYWtlIE5vdyBSZXF1aXJlcyBQeXRob24gMy40KzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgcmVxdWlyZXMgUHl0aG9uIDMuNCBvciBncmVhdGVyLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjItdXRmLTgtbG9jYWxlLXJlcXVpcmVkLW9uLWJ1aWxkLWhvc3QnPgorICAgICAgICAgICAgPHRpdGxlPlVURi04IExvY2FsZSBSZXF1aXJlZCBvbiBCdWlsZCBIb3N0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSBVVEYtOCBsb2NhbGUgaXMgcmVxdWlyZWQgb24gdGhlIGJ1aWxkIGhvc3QgZHVlIHRvIFB5dGhvbiAzLgorICAgICAgICAgICAgICAgIFNpbmNlIEMuVVRGLTggaXMgbm90IGEgc3RhbmRhcmQsIHRoZSBkZWZhdWx0IGlzIGVuX1VTLlVURi04LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjItbWV0YWRhdGEtbm93LW11c3QtdXNlLXB5dGhvbi0zLXN5bnRheCc+CisgICAgICAgICAgICA8dGl0bGU+TWV0YWRhdGEgTXVzdCBOb3cgVXNlIFB5dGhvbiAzIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBtZXRhZGF0YSBpcyBub3cgcmVxdWlyZWQgdG8gdXNlIFB5dGhvbiAzIHN5bnRheC4KKyAgICAgICAgICAgICAgICBGb3IgaGVscCBwcmVwYXJpbmcgbWV0YWRhdGEsIHNlZSBhbnkgb2YgdGhlIG1hbnkgUHl0aG9uIDMgcG9ydGluZworICAgICAgICAgICAgICAgIGd1aWRlcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiByZWZlcmVuY2UgdGhlIGNvbnZlcnNpb24gY29tbWl0cyBmb3IgQml0YmFrZQorICAgICAgICAgICAgICAgIGFuZCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+IGFzIGEgZ3VpZGUgZm9yIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBwYXJ0aWN1bGFyIGFyZWFzIG9mIGludGVyZXN0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgKiBzdWJwcm9jZXNzIGNvbW1hbmQtbGluZSBwaXBlcyBuZWVkaW5nIGxvY2FsZSBkZWNvZGluZworICAgICAqIHRoZSBzeW50YXggZm9yIG9jdGFsIHZhbHVlcyBjaGFuZ2VkCisgICAgICogdGhlIDxmaWxlbmFtZT5pdGVyKigpPC9maWxlbmFtZT4gZnVuY3Rpb25zIGNoYW5nZWQgbmFtZQorICAgICAqIGl0ZXJhdG9ycyBub3cgcmV0dXJuIHZpZXdzLCBub3QgbGlzdHMKKyAgICAgKiBjaGFuZ2VkIG5hbWVzIGZvciBQeXRob24gbW9kdWxlcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4yLXRhcmdldC1weXRob24tcmVjaXBlcy1zd2l0Y2hlZC10by1weXRob24tMyc+CisgICAgICAgICAgICA8dGl0bGU+VGFyZ2V0IFB5dGhvbiBSZWNpcGVzIFN3aXRjaGVkIHRvIFB5dGhvbiAzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTW9zdCB0YXJnZXQgUHl0aG9uIHJlY2lwZXMgaGF2ZSBub3cgYmVlbiBzd2l0Y2hlZCB0byBQeXRob24gMy4KKyAgICAgICAgICAgICAgICBVbmZvcnR1bmF0ZWx5LCBzeXN0ZW1zIHVzaW5nIFJQTSBhcyBhIHBhY2thZ2UgbWFuYWdlciBhbmQKKyAgICAgICAgICAgICAgICBwcm92aWRpbmcgb25saW5lIHBhY2thZ2UtbWFuYWdlciBzdXBwb3J0IHRocm91Z2ggU01BUlQgc3RpbGwKKyAgICAgICAgICAgICAgICByZXF1aXJlIFB5dGhvbiAyLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBQeXRob24gMiBhbmQgcmVjaXBlcyB0aGF0IHVzZSBpdCBjYW4gc3RpbGwgYmUgYnVpbHQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYXMgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1idWlsZHRvb2xzLXRhcmJhbGwtaW5jbHVkZXMtcHl0aG9uLTMnPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZHRvb2xzLXRhcmJhbGw8L2ZpbGVuYW1lPiBJbmNsdWRlcyBQeXRob24gMzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZHRvb2xzLXRhcmJhbGw8L2ZpbGVuYW1lPiBub3cgaW5jbHVkZXMgUHl0aG9uIDMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi11Y2xpYmMtcmVwbGFjZWQtYnktbXVzbCc+CisgICAgICAgIDx0aXRsZT51Q2xpYmMgUmVwbGFjZWQgYnkgbXVzbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB1Q2xpYmMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiBtdXNsLgorICAgICAgICAgICAgTXVzbCBoYXMgbWF0dXJlZCwgaXMgYmV0dGVyIG1haW50YWluZWQsIGFuZCBpcyBjb21wYXRpYmxlIHdpdGggYQorICAgICAgICAgICAgd2lkZXIgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIGFzIGNvbXBhcmVkIHRvIHVDbGliYy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4yLUItbm8tbG9uZ2VyLWRlZmF1bHQtd29ya2luZy1kaXJlY3RvcnktZm9yLXRhc2tzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT4ke0J9PC9maWxlbmFtZT4gTm8gTG9uZ2VyIERlZmF1bHQgV29ya2luZyBEaXJlY3RvcnkgZm9yIFRhc2tzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgaXMgbm8gbG9uZ2VyIHRoZSBkZWZhdWx0IHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0YXNrcy4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgYW55IGN1c3RvbSB0YXNrcyB5b3UgZGVmaW5lIG5vdyBuZWVkIHRvIGVpdGhlcgorICAgICAgICAgICAgaGF2ZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+ZGlyczwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+IGZsYWcgc2V0LCBvciB0aGUgdGFzayBuZWVkcyB0byBjaGFuZ2UgaW50byB0aGUKKyAgICAgICAgICAgIGFwcHJvcHJpYXRlIHdvcmtpbmcgZGlyZWN0b3J5IG1hbnVhbGx5IChlLmcgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jZDwvZmlsZW5hbWU+IGZvciBhIHNoZWxsIHRhc2spLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5bZGlyc108L2ZpbGVuYW1lPiBmbGFnLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjItcnVucWVtdS1wb3J0ZWQtdG8tcHl0aG9uJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gUG9ydGVkIHRvIFB5dGhvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGhhcyBiZWVuIHBvcnRlZCB0byBQeXRob24gYW5kIGhhcworICAgICAgICAgICAgY2hhbmdlZCBiZWhhdmlvciBpbiBzb21lIGNhc2VzLgorICAgICAgICAgICAgUHJldmlvdXMgdXNhZ2UgcGF0dGVybnMgY29udGludWUgdG8gYmUgc3VwcG9ydGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbmV3IDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gaXMgYSBQeXRob24gc2NyaXB0LgorICAgICAgICAgICAgTWFjaGluZSBrbm93bGVkZ2UgaXMgbm8gbG9uZ2VyIGhhcmRjb2RlZCBpbnRvCisgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+cWVtdWJvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRvIGRlZmluZSB0aGUgQlNQJ3Mgb3duIGFyZ3VtZW50cyBhbmQgdG8gbWFrZQorICAgICAgICAgICAgaXQgYm9vdGFibGUgd2l0aCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSWYgeW91IHVzZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPmltYWdlLW5hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LnFlbXVib290LmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgZW5hYmxlcyBmaW5lLWdyYWluZWQgdHVuaW5nIG9mIG9wdGlvbnMKKyAgICAgICAgICAgIHBhc3NlZCB0byBRRU1VIHdpdGhvdXQgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICBoYXJkLWNvZGluZyBhbnkga25vd2xlZGdlIGFib3V0IGRpZmZlcmVudCBtYWNoaW5lcy4KKyAgICAgICAgICAgIFVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlIGlzIHBhcnRpY3VsYXJseSBjb252ZW5pZW50IHdoZW4gdHJ5aW5nCisgICAgICAgICAgICB0byB1c2UgUUVNVSB3aXRoIG1hY2hpbmVzIG90aGVyIHRoYW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdSo8L2ZpbGVuYW1lPiBtYWNoaW5lcyBpbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4uCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnFlbXVib290LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11Ym9vdDwvZmlsZW5hbWU+CisgICAgICAgICAgICBjbGFzcyB3aGVuIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgYmVpbmcgYnVpbGQgKGkuZS4KKyAgICAgICAgICAgIGJ1aWxkIHJvb3RmcykuCisgICAgICAgICAgICBRRU1VIGJvb3QgYXJndW1lbnRzIGNhbiBiZSBzZXQgaW4gQlNQJ3MgY29uZmlndXJhdGlvbiBmaWxlIGFuZAorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5xZW11Ym9vdDwvZmlsZW5hbWU+IGNsYXNzIHdpbGwgc2F2ZSB0aGVtIHRvCisgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWJvb3QuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHdpdGhvdXQgYQorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm06CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdSA8cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5yb290ZnM8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+a2VybmVsPC9yZXBsYWNlYWJsZT4gWzxyZXBsYWNlYWJsZT5vcHRpb25zPC9yZXBsYWNlYWJsZT5dCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBTdXBwb3J0ZWQgPHJlcGxhY2VhYmxlPm1hY2hpbmVzPC9yZXBsYWNlYWJsZT4gYXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHFlbXVhcm0KKyAgICAgcWVtdWFybTY0CisgICAgIHFlbXV4ODYKKyAgICAgcWVtdXg4Ni02NAorICAgICBxZW11cHBjCisgICAgIHFlbXVtaXBzCisgICAgIHFlbXVtaXBzNjQKKyAgICAgcWVtdW1pcHNlbAorICAgICBxZW11bWlwczY0ZWwKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgd2hpY2ggdXNlcyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LTY0PC9maWxlbmFtZT4gbWFjaGluZSwKKyAgICAgICAgICAgIHByb3ZpZGVzIGEgcm9vdCBmaWxlc3lzdGVtLCBwcm92aWRlcyBhbiBpbWFnZSwgYW5kIHVzZXMKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bm9ncmFwaGljPC9maWxlbmFtZT4gb3B0aW9uOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorJCBydW5xZW11IHFlbXV4ODYtNjQgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC5leHQ0IHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvYnpJbWFnZSBub2dyYXBoaWMKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgc2V0IGluIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGZpbGVzIHN1Y2ggYXMgPGZpbGVuYW1lPmJzcC5jb25mPC9maWxlbmFtZT4gdG8gZW5hYmxlIHRoZSBCU1AKKyAgICAgICAgICAgIHRvIGJlIGJvb3RlZCBieSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgIlFCIiBtZWFucyAiUUVNVSBCb290Ii4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUUJfU1lTVEVNX05BTUU6IFFFTVUgbmFtZSAoZS5nLiAicWVtdS1zeXN0ZW0taTM4NiIpCisgICAgIFFCX09QVF9BUFBFTkQ6IE9wdGlvbnMgdG8gYXBwZW5kIHRvIFFFTVUgKGUuZy4gIi1zaG93LWN1cnNvciIpCisgICAgIFFCX0RFRkFVTFRfS0VSTkVMOiBEZWZhdWx0IGtlcm5lbCB0byBib290IChlLmcuICJiekltYWdlIikKKyAgICAgUUJfREVGQVVMVF9GU1RZUEU6IERlZmF1bHQgRlNUWVBFIHRvIGJvb3QgKGUuZy4gImV4dDQiKQorICAgICBRQl9NRU06IE1lbW9yeSAoZS5nLiAiLW0gNTEyIikKKyAgICAgUUJfTUFDSElORTogUUVNVSBtYWNoaW5lIChlLmcuICItbWFjaGluZSB2aXJ0IikKKyAgICAgUUJfQ1BVOiBRRU1VIGNwdSAoZS5nLiAiLWNwdSBxZW11MzIiKQorICAgICBRQl9DUFVfS1ZNOiBTaW1pbGFyIHRvIFFCX0NQVSBleGNlcHQgdXNlZCBmb3Iga3ZtIHN1cHBvcnQgKGUuZy4gIi1jcHUga3ZtNjQiKQorICAgICBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQ6IE9wdGlvbnMgdG8gYXBwZW5kIHRvIHRoZSBrZXJuZWwncyAtYXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIChlLmcuICJjb25zb2xlPXR0eVMwIGNvbnNvbGU9dHR5IikKKyAgICAgUUJfRFRCOiBRRU1VIGR0YiBuYW1lCisgICAgIFFCX0FVRElPX0RSVjogUUVNVSBhdWRpbyBkcml2ZXIgKGUuZy4gImFsc2EiLCBzZXQgaXQgd2hlbiBzdXBwb3J0IGF1ZGlvKQorICAgICBRQl9BVURJT19PUFQ6IFFFTVUgYXVkaW8gb3B0aW9uIChlLmcuICItc291bmRodyBhYzk3LGVzMTM3MCIpLCB3aGljaCBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgd2hlbiBRQl9BVURJT19EUlYgaXMgc2V0LgorICAgICBRQl9LRVJORUxfUk9PVDogS2VybmVsJ3Mgcm9vdCAoZS5nLiAvZGV2L3ZkYSkKKyAgICAgUUJfVEFQX09QVDogTmV0d29yayBvcHRpb24gZm9yICd0YXAnIG1vZGUgKGUuZy4KKyAgICAgICAgICAgICAgICAgIi1uZXRkZXYgdGFwLGlkPW5ldDAsaWZuYW1lPUBUQVBALHNjcmlwdD1ubyxkb3duc2NyaXB0PW5vIC1kZXZpY2UgdmlydGlvLW5ldC1kZXZpY2UsbmV0ZGV2PW5ldDAiKS4KKyAgICAgICAgICAgICAgICAgIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAVEFQQCIgd2l0aCB0aGUgb25lIHRoYXQgaXMgdXNlZCwgc3VjaCBhcyB0YXAwLCB0YXAxIC4uLgorICAgICBRQl9TTElSUF9PUFQ6IE5ldHdvcmsgb3B0aW9uIGZvciBTTElSUCBtb2RlIChlLmcuICItbmV0ZGV2IHVzZXIsaWQ9bmV0MCAtZGV2aWNlIHZpcnRpby1uZXQtZGV2aWNlLG5ldGRldj1uZXQwIikKKyAgICAgUUJfUk9PVEZTX09QVDogVXNlZCBhcyByb290ZnMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgIi1kcml2ZSBpZD1kaXNrMCxmaWxlPUBST09URlNALGlmPW5vbmUsZm9ybWF0PXJhdyAtZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWRpc2swIikuCisgICAgICAgICAgICAgICAgICAgIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAUk9PVEZTQCIgd2l0aCB0aGUgb25lIHdoaWNoIGlzIHVzZWQsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgY29yZS1pbWFnZS1taW5pbWFsLXFlbXVhcm02NC5leHQ0LgorICAgICBRQl9TRVJJQUxfT1BUOiBTZXJpYWwgcG9ydCAoZS5nLiAiLXNlcmlhbCBtb246c3RkaW8iKQorICAgICBRQl9UQ1BTRVJJQUxfT1BUOiB0Y3Agc2VyaWFsIHBvcnQgb3B0aW9uIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICIgLWRldmljZSB2aXJ0aW8tc2VyaWFsLWRldmljZSAtY2hhcmRldiBzb2NrZXQsaWQ9dmlydGNvbixwb3J0PUBQT1JUQCxob3N0PTEyNy4wLjAuMSAtZGV2aWNlICAgICAgdmlydGNvbnNvbGUsY2hhcmRldj12aXJ0Y29uIgorICAgICAgICAgICAgICAgICAgICAgICBydW5xZW11IHdpbGwgcmVwbGFjZSAiQFBPUlRAIiB3aXRoIHRoZSBwb3J0IG51bWJlciB3aGljaCBpcyB1c2VkLgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyB1c2UgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiwgc2V0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPklNQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFzIGZvbGxvd3MgYW5kIHJ1biA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGNvbW1hbmQtbGluZSBzeW50YXgsIHVzZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11IGhlbHA8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1kZWZhdWx0LWxpbmtlci1oYXNoLXN0eWxlLWNoYW5nZWQnPgorICAgICAgICA8dGl0bGU+RGVmYXVsdCBMaW5rZXIgSGFzaCBTdHlsZSBDaGFuZ2VkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IGxpbmtlciBoYXNoIHN0eWxlIGZvciA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGlzIG5vdyAic3lzdiIgaW4gb3JkZXIgdG8gY2F0Y2ggcmVjaXBlcyB0aGF0IGFyZSBidWlsZGluZyBzb2Z0d2FyZQorICAgICAgICAgICAgd2l0aG91dCB1c2luZyB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTERGTEFHUyc+PGZpbGVuYW1lPkxERkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICBUaGlzIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gc2VlaW5nIHNvbWUgIk5vIEdOVV9IQVNIIGluIHRoZSBlbGYKKyAgICAgICAgICAgIGJpbmFyeSIgUUEgaXNzdWVzIHdoZW4gYnVpbGRpbmcgc3VjaCByZWNpcGVzLgorICAgICAgICAgICAgWW91IG5lZWQgdG8gZml4IHRoZXNlIHJlY2lwZXMgc28gdGhhdCB0aGV5IHVzZSB0aGUgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5MREZMQUdTPC9maWxlbmFtZT4uCisgICAgICAgICAgICBEZXBlbmRpbmcgb24gaG93IHRoZSBzb2Z0d2FyZSBpcyBidWlsdCwgdGhlIGJ1aWxkIHN5c3RlbSB1c2VkIGJ5CisgICAgICAgICAgICB0aGUgc29mdHdhcmUgKGUuZy4gYSBNYWtlZmlsZSkgbWlnaHQgbmVlZCB0byBiZSBwYXRjaGVkLgorICAgICAgICAgICAgSG93ZXZlciwgc29tZXRpbWVzIG1ha2luZyB0aGlzIGZpeCBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHRvIHRoZSByZWNpcGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjIta2VybmVsLWltYWdlLWJhc2UtbmFtZS1uby1sb25nZXItdXNlcy1rZXJuZWwtaW1hZ2V0eXBlJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VfQkFTRV9OQU1FPC9maWxlbmFtZT4gbm8gTG9uZ2VyIFVzZXMgPGZpbGVuYW1lPktFUk5FTF9JTUFHRVRZUEU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfSU1BR0VfQkFTRV9OQU1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHZhcmlhYmxlIG5vIGxvbmdlciB1c2VzIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSB0byBjcmVhdGUgdGhlIGltYWdlJ3MgYmFzZSBuYW1lLgorICAgICAgICAgICAgQmVjYXVzZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gbm93IGJ1aWxkIG11bHRpcGxlIGtlcm5lbAorICAgICAgICAgICAgaW1hZ2UgdHlwZXMsIHRoaXMgcGFydCBvZiB0aGUga2VybmVsIGltYWdlIGJhc2UgbmFtZSBhcyBiZWVuCisgICAgICAgICAgICByZW1vdmVkIGxlYXZpbmcgb25seSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfSU1BR0VfQkFTRV9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgeW91IGhhdmUgcmVjaXBlcyBvciBjbGFzc2VzIHRoYXQgdXNlCisgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0lNQUdFX0JBU0VfTkFNRTwvZmlsZW5hbWU+IGRpcmVjdGx5LCB5b3UgbWlnaHQKKyAgICAgICAgICAgIG5lZWQgdG8gdXBkYXRlIHRoZSByZWZlcmVuY2VzIHRvIGVuc3VyZSB0aGV5IGNvbnRpbnVlIHRvIHdvcmsuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1iaXRiYWtlLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+Qml0QmFrZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0b29rIHBsYWNlIGZvciBCaXRCYWtlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSAiZ29nZ2xlIiBVSSBhbmQgc3RhbmRhbG9uZSBpbWFnZS13cml0ZXIgdG9vbCBoYXZlCisgICAgICAgICAgICAgICAgICAgIGJlZW4gcmVtb3ZlZCBhcyB0aGV5IGJvdGggcmVxdWlyZSBHVEsrIDIuMCBhbmQKKyAgICAgICAgICAgICAgICAgICAgd2VyZSBub3QgYmVpbmcgbWFpbnRhaW5lZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgUGVyZm9yY2UgZmV0Y2hlciBub3cgc3VwcG9ydHMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3Igc3BlY2lmeWluZyB0aGUgc291cmNlIHJldmlzaW9uIHRvIHVzZSwgYmUgaXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQVVUT1JFVic+PGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VsaXN0IG51bWJlciwgcDRkYXRlLCBvciBsYWJlbCwgaW4gcHJlZmVyZW5jZSB0bworICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyB0byBzcGVjaWZ5IHRoZXNlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBpcyBtb3JlIGluLWxpbmUgd2l0aCBob3cgdGhlIG90aGVyIGZldGNoZXJzCisgICAgICAgICAgICAgICAgICAgIHdvcmsgZm9yIHNvdXJjZSBjb250cm9sIHN5c3RlbXMuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBmZXRjaCBmcm9tIFBlcmZvcmNlIHdpbGwgbmVlZCB0byBiZSB1cGRhdGVkCisgICAgICAgICAgICAgICAgICAgIHRvIHVzZSA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gaW4gcGxhY2Ugb2Ygc3BlY2lmeWluZworICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIHJldmlzaW9uIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvbWUgb2YgQml0QmFrZSdzIGludGVybmFsIGNvZGUgc3RydWN0dXJlcyBmb3IgYWNjZXNzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgY2FjaGUgbmVlZGVkIHRvIGJlIGNoYW5nZWQgdG8gc3VwcG9ydCB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgIG11bHRpLWNvbmZpZ3VyYXRpb24gZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgY2hhbmdlcyB3aWxsIGFmZmVjdCBleHRlcm5hbCB0b29scyB0aGF0IHVzZSBCaXRCYWtlJ3MKKyAgICAgICAgICAgICAgICAgICAgdGluZm9pbCBtb2R1bGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBjaGFuZ2VzLCBzZWUgdGhlIGNoYW5nZXMgbWFkZSB0bworICAgICAgICAgICAgICAgICAgICB0aGUgc2NyaXB0cyBzdXBwbGllZCB3aXRoIE9wZW5FbWJlZGRlZC1Db3JlOgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2NvbW1pdC8/aWQ9MTg5MzcxZjgzOTM5NzFkMDBiY2EwZmNlZmZkNjdjYzA3Nzg0ZjZlZSc+MTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2NvbW1pdC8/aWQ9NGE1YWE3ZWE0ZDA3YzJjOTBhMTY1NGIxNzQ4NzNhYmIwMThhY2M2Nyc+MjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIG1hbmFnZW1lbnQgY29kZSBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gYXZvaWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgSUQgaW5kaXJlY3Rpb24gaW4gb3JkZXIgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFuZ2UgaXMgdW5saWtlbHkgdG8gY2F1c2UgYW55IHByb2JsZW1zIGZvciBtb3N0CisgICAgICAgICAgICAgICAgICAgIHVzZXJzLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgc2V0c2NlbmUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIGFzIHBvaW50ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgYnkgPGZpbGVuYW1lPkJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG5lZWRlZCB0byBjaGFuZ2Ugc2lnbmF0dXJlLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGEgbmV3IHZhcmlhYmxlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gYWRkZWQgYWxsb3dpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICB0byB3b3JrIHdpdGggc3VpdGFibHkgd3JpdHRlbiBtZXRhZGF0YSwgd2hpY2ggaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmUgYW5kIFBva3kuCisgICAgICAgICAgICAgICAgICAgIEFueW9uZSB3aXRoIGN1c3RvbSBCaXRCYWtlIHRhc2sgc2NoZWR1bGVyIGNvZGUgbWlnaHQgYWxzbworICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIHVwZGF0ZSB0aGUgY29kZSB0byBoYW5kbGUgdGhlIG5ldyBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1zd2FiYmVyLWhhcy1iZWVuLXJlbW92ZWQnPgorICAgICAgICA8dGl0bGU+U3dhYmJlciBoYXMgQmVlbiBSZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFN3YWJiZXIsIGEgdG9vbCB0aGF0IHdhcyBpbnRlbmRlZCB0byBkZXRlY3QgaG9zdCBjb250YW1pbmF0aW9uIGluCisgICAgICAgICAgICB0aGUgYnVpbGQgcHJvY2VzcywgaGFzIGJlZW4gcmVtb3ZlZCwgYXMgaXQgaGFzIGJlZW4gdW5tYWludGFpbmVkCisgICAgICAgICAgICBhbmQgdW51c2VkIGZvciBzb21lIHRpbWUgYW5kIHdhcyBuZXZlciBwYXJ0aWN1bGFybHkgZWZmZWN0aXZlLgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIHNpbmNlIGluY29ycG9yYXRlZCBhIG51bWJlciBvZgorICAgICAgICAgICAgbWVjaGFuaXNtcyBpbmNsdWRpbmcgZW5oYW5jZWQgUUEgY2hlY2tzIHRoYXQgbWVhbiB0aGF0IHRoZXJlIGlzCisgICAgICAgICAgICBsZXNzIG9mIGEgbmVlZCBmb3Igc3VjaCBhIHRvb2wuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVnZWFzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyBiZWVuIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGZiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFVubWFpbnRhaW5lZCBhbmQgaGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgNC45IHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIFZlcnNpb25zIDUuNCBhbmQgNi4yIGFyZSBzdGlsbCBwcmVzZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nbm9tZS1kb2MtdXRpbHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgTm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3RrLWRvYy1zdHViPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT5ndGstZG9jPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ay1lbmdpbmVzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyBiZWVuIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWdub21lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ay1zYXRvLWVuZ2luZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBCZWNhbWUgb2Jzb2xldGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmdsYWRlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyBiZWVuIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYm1hZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBVbm1haW50YWluZWQgYW5kIGZ1bmN0aW9uYWxseSByZXBsYWNlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlibXBnMTIzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJtYWQ8L2ZpbGVuYW1lPiBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJvd2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQmVjYW1lIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ4c2V0dGluZ3MtY2xpZW50PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9oLXB1enpsZXM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbGx5IHJlcGxhY2VkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdXp6bGVzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9wcm9maWxldWk8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQmVjYW1lIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICBPUHJvZmlsZSBoYXMgYmVlbiBsYXJnZWx5IHN1cHBsYW50ZWQgYnkgcGVyZi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtZGlyZWN0ZmIuYmI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1kaXJlY3RmYi5iYjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBSZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2ludGVyY2FsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyBiZWVuIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbi1pbWFnaW5nPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQgYW5kIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXB5dGhvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbi1weXJleDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBObyBsb25nZXIgbmVlZGVkIGFuZCBtb3ZlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1weXRob248L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2F0by1pY29uLXRoZW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEJlY2FtZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dhYmJlci1uYXRpdmU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3dhYmJlciBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21pZ3JhdGlvbi0yLjItc3dhYmJlci1oYXMtYmVlbi1yZW1vdmVkJz5lbnRyeSBvbiBTd2FiYmVyPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dHNsaWI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgTm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dWNsaWJjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgaW4gZmF2b3Igb2YgbXVzbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eHRzY2FsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIE5vIGxvbmdlciBuZWVkZWQgYW5kIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4yLXJlbW92ZWQtY2xhc3Nlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIENsYXNzZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGhhdmUgYmVlbiByZW1vdmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0dXRpbHMtbmF0aXZlLWJhc2U8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgTm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHV0aWxzMy1uYXRpdmUtYmFzZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBObyBsb25nZXIgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgT25seSBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0VDVElPTic+PGZpbGVuYW1lPlNFQ1RJT048L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBiZXR0ZXIgc2V0IHdpdGhpbiB0aGUgcmVjaXBlIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBNb3N0bHkgdW51c2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zd2FiYmVyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWlncmF0aW9uLTIuMi1zd2FiYmVyLWhhcy1iZWVuLXJlbW92ZWQnPmVudHJ5IG9uIFN3YWJiZXI8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjItbWlub3ItcGFja2FnaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlub3IgUGFja2FnaW5nIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBtaW5vciBwYWNrYWdpbmcgY2hhbmdlcyBoYXZlIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ncnViPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwbGl0IDxmaWxlbmFtZT5ncnViLWVkaXRlbnY8L2ZpbGVuYW1lPiBpbnRvIGl0cyBvd24KKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGxpdCBjb250YWluZXIgYW5kIHZtIHJlbGF0ZWQgdW5pdHMgaW50byBhIG5ldyBwYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbnRhaW5lci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBNb3ZlZCA8ZmlsZW5hbWU+cHJsaW1pdDwvZmlsZW5hbWU+IHRvIGEgc2VwYXJhdGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnV0aWwtbGludXgtcHJsaW1pdDwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMi1taXNjZWxsYW5lb3VzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbWlzY2VsbGFuZW91cyBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VfcmVnZXguaW5jPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgYmVjYXVzZSB0aGUgZGVmaW5pdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VfcmVnZXguaW5jPC9maWxlbmFtZT4gcHJldmlvdXNseSBjb250YWluZWQKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZWlyIHJlc3BlY3RpdmUgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCb3RoIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGU8L2ZpbGVuYW1lPiBub3cgdXNlIGEgZml4ZWQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IHdoZW4gZmV0Y2hpbmcgZnJvbSBhIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgaW4gZWl0aGVyIGNhc2UgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUFVVE9SRVYnPjxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+LWE8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JmRhc2g7JmRhc2g7YXV0b3JldjwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZQorICAgICAgICAgICAgICAgICAgICBvcHRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdGNjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEdUSysgVUkgaXMgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgUGlnbGl0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJlbmFtZWQgQ09NUFJFU1MoSU9OKSB0byBDT05WRVJTSU9OLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01QUkVTU0lPTlRZUEVTPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01QUkVTU19ERVBFTkRTPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01QUkVTU19DTUQ8L2ZpbGVuYW1lPiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvcgorICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+Q09OVkVSU0lPTlRZUEVTPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT05WRVJTSU9OX0RFUEVORFM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTlZFUlNJT05fQ01EPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Q09NUFJFU1MqPC9maWxlbmFtZT4gdmFyaWFibGUgbmFtZXMgd2lsbAorICAgICAgICAgICAgICAgICAgICBzdGlsbCB3b3JrIGluIHRoZSAyLjIgcmVsZWFzZSBidXQgbWV0YWRhdGEgdGhhdCBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlIHNob3VsZCBiZSBjaGFuZ2VkIHRvCisgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgbmV3IG5hbWVzIGFzIHRoZSA8ZmlsZW5hbWU+Q09NUFJFU1MqPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb25lcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3RrLWRvYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBBIGZ1bGwgdmVyc2lvbiBvZiA8ZmlsZW5hbWU+Z3RrLWRvYzwvZmlsZW5hbWU+IGlzIG5vdworICAgICAgICAgICAgICAgICAgICBtYWRlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc29tZSBvbGQgc29mdHdhcmUgbWlnaHQgbm90IGJlIGNhcGFibGUgb2YgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiA8ZmlsZW5hbWU+Z3RrLWRvYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNoYW5nZSByZWNpcGVzIHRoYXQgYnVpbGQgc3VjaCBzb2Z0d2FyZSBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZXkgZXhwbGljaXRseSBkaXNhYmxlIGJ1aWxkaW5nIGRvY3VtZW50YXRpb24gd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3RrLWRvYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbW92aW5nLXRvLXRoZS15b2N0by1wcm9qZWN0LTIuMy1yZWxlYXNlJz4KKyAgICA8dGl0bGU+TW92aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0IDIuMyBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgbWlncmF0aW9uIGluZm9ybWF0aW9uIGZvciBtb3ZpbmcgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UgZnJvbSB0aGUgcHJpb3IgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMy1yZWNpcGUtc3BlY2lmaWMtc3lzcm9vdHMnPgorICAgICAgICA8dGl0bGU+UmVjaXBlLXNwZWNpZmljIFN5c3Jvb3RzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG5vdyB1c2VzIG9uZSBzeXNyb290IHBlcgorICAgICAgICAgICAgcmVjaXBlIHRvIHJlc29sdmUgbG9uZy1zdGFuZGluZyBpc3N1ZXMgd2l0aCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBzY3JpcHQgYXV0by1kZXRlY3Rpb24gb2YgdW5kZWNsYXJlZCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBmaW5kIHRoYXQgc29tZSBvZiB5b3VyIHByZXZpb3VzbHkKKyAgICAgICAgICAgIHdyaXR0ZW4gY3VzdG9tIHJlY2lwZXMgYXJlIG1pc3NpbmcgZGVjbGFyZWQgZGVwZW5kZW5jaWVzLAorICAgICAgICAgICAgcGFydGljdWxhcmx5IHRob3NlIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBpbmNpZGVudGFsbHkgYnVpbHQKKyAgICAgICAgICAgIGVhcmxpZXIgaW4gYSB0eXBpY2FsIGJ1aWxkIHByb2Nlc3MgYW5kIHRodXMgYXJlIGFscmVhZHkgbGlrZWx5CisgICAgICAgICAgICB0byBiZSBwcmVzZW50IGluIHRoZSBzaGFyZWQgc3lzcm9vdCBpbiBwcmV2aW91cyByZWxlYXNlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVjbGFyZSBCdWlsZC1UaW1lIERlcGVuZGVuY2llczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIG9mIHRoaXMgbmV3IGZlYXR1cmUsIHlvdSBtdXN0IGV4cGxpY2l0bHkKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZSBhbGwgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgZm9yIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGRlY2xhcmUgdGhlc2UgZGVwZW5kZW5jaWVzLCB0aGV5IGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgcG9wdWxhdGVkIGludG8gdGhlIHN5c3Jvb3QgZm9yIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNwZWNpZnkgUHJlLUluc3RhbGxhdGlvbiBhbmQgUG9zdC1JbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgTmF0aXZlIFRvb2wgRGVwZW5kZW5jaWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNwZWNpZmljYWxseSBzcGVjaWZ5IGFueSBzcGVjaWFsIG5hdGl2ZSB0b29sCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBvZiA8ZmlsZW5hbWU+cGtnX3ByZWluc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdDwvZmlsZW5hbWU+IHNjcmlwdHMgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX1dSSVRFX0RFUFMnPjxmaWxlbmFtZT5QQUNLQUdFX1dSSVRFX0RFUFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZnlpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGVuc3VyZXMgdGhhdCB0aGVzZSB0b29scworICAgICAgICAgICAgICAgICAgICBhcmUgYXZhaWxhYmxlIGlmIHRoZXNlIHNjcmlwdHMgbmVlZCB0byBiZSBydW4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGFuIGV4YW1wbGUsIHNlZSB0aGUgPGZpbGVuYW1lPmRidXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIHNlZSB0aGF0IHRoaXMgcmVjaXBlIGhhcyBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Q8L2ZpbGVuYW1lPiB0aGF0IGNhbGxzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1jdGw8L2ZpbGVuYW1lPiBpZiAic3lzdGVtZCIgaXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmU8L2ZpbGVuYW1lPiBpcyBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9XUklURV9ERVBTPC9maWxlbmFtZT4sIHdoaWNoIGlzIGFsc28KKyAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWwgb24gInN5c3RlbWQiIGJlaW5nIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBSZWNpcGVzIHRoYXQgVXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TU1RBVEVQT1NUSU5TVEZVTkNTPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZXhhbWluZSBhbnkgcmVjaXBlIHRoYXQgdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1NUQVRFUE9TVElOU1RGVU5DUzwvZmlsZW5hbWU+IGFuZCBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgc3RlcHMgdG8gdGFrZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+RnVuY3Rpb25zIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TU1RBVEVQT1NUSU5TVEZVTkNTPC9maWxlbmFtZT4gYXJlIHN0aWxsCisgICAgICAgICAgICAgICAgICAgIGNhbGxlZCBhcyB0aGV5IHdlcmUgaW4gcHJldmlvdXMgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2luY2UgYSBzZXBhcmF0ZSBzeXNyb290IGlzIG5vdyBiZWluZyBwb3B1bGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGV2ZXJ5IHJlY2lwZSBhbmQgaWYgZXhpc3RpbmcgZnVuY3Rpb25zIGJlaW5nIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIDxmaWxlbmFtZT5TU1RBVEVQT1NUSU5TVEZVTkNTPC9maWxlbmFtZT4gYXJlCisgICAgICAgICAgICAgICAgICAgIGRvaW5nIHJlbG9jYXRpb24sIHRoZW4geW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGEgcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0IHRoYXQgaXMgaW5zdGFsbGVkIGJ5IGEKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyc+PGZpbGVuYW1lPlNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBhbiBleGFtcGxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5waXhidWZjYWNoZTwvZmlsZW5hbWU+IGNsYXNzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvPC9maWxlbmFtZT4gaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TU1RBVEVQT1NUSU5TVEZVTkNTPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZiBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290W3Bvc3RmdW5jc108L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IGRvIHN0aWxsIGhhdmUgYW55IGZ1bmN0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50IGlzIGNyZWF0ZWQgZm9yIGEgcmVjaXBlLCB0aGVuIHlvdSB3b3VsZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgd2VsbCBhZHZpc2VkIHRvIHRha2Ugc3RlcHMgdG8gdXNlIGEgcG9zdCBpbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhcyBkZXNjcmliZWQgcHJldmlvdXNseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRha2luZyB0aGVzZSBzdGVwcyBwcmVwYXJlcyB5b3VyIGNvZGUgZm9yIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TU1RBVEVQT1NUSU5TVEZVTkNTPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgaW4gYSBmdXR1cmUgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNwZWNpZnkgdGhlIFN5c3Jvb3Qgd2hlbiBVc2luZyBDZXJ0YWluCisgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsIFNjcmlwdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2hhcmVkIHN5c3Jvb3QgaXMgbm93IGdvbmUsIHRoZSBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1maW5kLW5hdGl2ZS1zeXNyb290PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1ydW4tbmF0aXZlPC9maWxlbmFtZT4gaGF2ZSBiZWVuIGNoYW5nZWQgc3VjaAorICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBuZWVkIHRvIHNwZWNpZnkgd2hpY2ggcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfRElSX05BVElWRSc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX05BVElWRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyB1c2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHJlY2lwZS1zcGVjaWZpYyBzeXNyb290cworICAgICAgICAgICAgICAgIHdvcmsgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN0YWdpbmcnPjxmaWxlbmFtZT5zdGFnaW5nLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4zLXBhdGgtdmFyaWFibGUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBWYXJpYWJsZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaXRoaW4gdGhlIGVudmlyb25tZW50IHVzZWQgdG8gcnVuIGJ1aWxkIHRhc2tzLCB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHZhcmlhYmxlIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gaXMgbm93IHNhbml0aXplZCBzdWNoIHRoYXQKKyAgICAgICAgICAgIHRoZSBub3JtYWwgbmF0aXZlIGJpbmFyeSBwYXRocworICAgICAgICAgICAgKDxmaWxlbmFtZT4vYmluPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4vc2JpbjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoKSBhcmUKKyAgICAgICAgICAgIHJlbW92ZWQgYW5kIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc3ltYm9saWMgbGlua3MgbGlua2luZyBvbmx5CisgICAgICAgICAgICB0byB0aGUgYmluYXJpZXMgZnJvbSB0aGUgaG9zdCBtZW50aW9uZWQgaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSE9TVFRPT0xTJz48ZmlsZW5hbWU+SE9TVFRPT0xTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1IT1NUVE9PTFNfTk9ORkFUQUwnPjxmaWxlbmFtZT5IT1NUVE9PTFNfTk9ORkFUQUw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlcyBpcyBhZGRlZCB0byA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb25zZXF1ZW50bHksIGFueSBuYXRpdmUgYmluYXJpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QgdGhhdCB5b3UKKyAgICAgICAgICAgIG5lZWQgdG8gY2FsbCBuZWVkcyB0byBiZSBpbiBvbmUgb2YgdGhlc2UgdHdvIHZhcmlhYmxlcyBhdAorICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gbGV2ZWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWRkIGEgbmF0aXZlIHJlY2lwZSAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPikgdGhhdCBwcm92aWRlcyB0aGUKKyAgICAgICAgICAgIGJpbmFyeSB0byB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFsdWUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGlzIG5vdCBzYW5pdGl6ZWQgaW4gdGhlIHNhbWUgd2F5CisgICAgICAgICAgICAgICAgd2l0aGluIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIElmIGl0IHdlcmUsIHlvdSB3b3VsZCBoYXZlIGRpZmZpY3VsdHkgcnVubmluZyBob3N0IHRvb2xzIGZvcgorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGFuZCBkZWJ1Z2dpbmcgd2l0aGluIHRoZSBzaGVsbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4zLXNjcmlwdHMnPgorICAgICAgICA8dGl0bGU+Q2hhbmdlcyB0byBTY3JpcHRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0byBzY3JpcHRzIHRvb2sgcGxhY2U6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5vZS1maW5kLW5hdGl2ZS1zeXNyb290PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVzYWdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWZpbmQtbmF0aXZlLXN5c3Jvb3Q8L2ZpbGVuYW1lPiBzY3JpcHQgaGFzCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgdG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4gb2UtZmluZC1uYXRpdmUtc3lzcm9vdCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBub3cgc3VwcGx5IGEgcmVjaXBlIGZvcgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4gYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgUHJpb3IgdG8gdGhlIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgcmVsZWFzZSwgaXQgd2FzIG5vdAorICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgdG8gcHJvdmlkZSB0aGUgc2NyaXB0IHdpdGggdGhlIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5vZS1ydW4tbmF0aXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVzYWdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXJ1bi1uYXRpdmU8L2ZpbGVuYW1lPiBzY3JpcHQgaGFzIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG9lLXJ1bi1uYXRpdmUgPHJlcGxhY2VhYmxlPm5hdGl2ZV9yZWNpcGU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dG9vbDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3VwcGx5IHRoZSBuYW1lIG9mIHRoZSBuYXRpdmUgcmVjaXBlIGFuZCB0aGUgdG9vbAorICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCB0byBydW4gYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgUHJpb3IgdG8gdGhlIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgcmVsZWFzZSwgaXQgd2FzIG5vdAorICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgdG8gcHJvdmlkZSB0aGUgbmF0aXZlIHJlY2lwZSB3aXRoIHRoZSBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Y2xlYW51cC13b3JrZGlyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jbGVhbnVwLXdvcmtkaXI8L2ZpbGVuYW1lPiBzY3JpcHQgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCBiZWNhdXNlIHRoZSBzY3JpcHQgd2FzIGZvdW5kIHRvIGJlIGRlbGV0aW5nCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGl0IHNob3VsZCBub3QgaGF2ZSwgd2hpY2ggbGVhZCB0byBicm9rZW4gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgdHJlZXMuCisgICAgICAgICAgICAgICAgICAgIFJhdGhlciB0aGFuIHRyeWluZyB0byBkZWxldGUgcG9ydGlvbnMgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgZ2V0dGluZyBpdCB3cm9uZywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBhbmQgaGF2ZSBpdCByZXN0b3JlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBvbiBzdWJzZXF1ZW50IGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPndpcGUtc3lzcm9vdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+d2lwZS1zeXNyb290PC9maWxlbmFtZT4gc2NyaXB0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCB3aXRoIHJlY2lwZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBzeXNyb290cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi4zLWZ1bmN0aW9ucyc+CisgICAgICAgIDx0aXRsZT5DaGFuZ2VzIHRvIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcHJldmlvdXNseSBkZXByZWNhdGVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZGF0YS5nZXRWYXIoKTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmRhdGEuc2V0VmFyKCk8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICByZWxhdGVkIGZ1bmN0aW9ucyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPmQuZ2V0VmFyKCk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kLnNldFZhcigpPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IG5lZWQgdG8gZml4IGFueSByZWZlcmVuY2VzIHRvIHRoZXNlIG9sZCBmdW5jdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMy1iaXRiYWtlLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+Qml0QmFrZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0b29rIHBsYWNlIGZvciBCaXRCYWtlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlJ3MgR3JhcGhpY2FsIERlcGVuZGVuY3kgRXhwbG9yZXIgVUkgUmVwbGFjZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSdzIGdyYXBoaWNhbCBkZXBlbmRlbmN5IGV4cGxvcmVyIFVJCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBleHA8L2ZpbGVuYW1lPiB3YXMgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2tleHA8L2ZpbGVuYW1lPiAoIlRhc2sgRXhwbG9yZXIiKSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYSBncmFwaGljYWwgd2F5IG9mIGV4cGxvcmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGF0YSBwcmVzZW50ZWQgYnkgVGFzayBFeHBsb3JlciBpcyBtdWNoIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgYWNjdXJhdGUgdGhhbiB0aGUgZGF0YSB0aGF0IHdhcyBwcmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGV4cDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBCZWluZyBhYmxlIHRvIHZpc3VhbGl6ZSB0aGUgZGF0YSBpcyBhbiBvZnRlbiByZXF1ZXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSBhcyBzdGFuZGFyZCA8ZmlsZW5hbWU+Ki5kb3Q8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHZpZXdlcnMgY2Fubm90IHVzdWFsIGNvcGUgd2l0aCB0aGUgc2l6ZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlICItZyIgT3V0cHV0IENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wYWNrYWdlLWRlcGVuZHMuZG90PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbi1kZXBlbmRzLmRvdDwvZmlsZW5hbWU+IGZpbGVzIGFzIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIHVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZSAtZzwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPnJlY2lwZS1kZXBlbmRzLmRvdDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgaXMgbm93IGdlbmVyYXRlZCBhcyBhIGNvbGxhcHNlZCB2ZXJzaW9uIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXNrLWRlcGVuZHMuZG90PC9maWxlbmFtZT4gaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSByZWFzb24gZm9yIHRoaXMgY2hhbmdlIGlzIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2UtZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBuLWRlcGVuZHMuZG90PC9maWxlbmFtZT4gbGFyZ2VseSBkYXRlIGJhY2sKKyAgICAgICAgICAgICAgICAgICAgdG8gYSB0aW1lIGJlZm9yZSB0YXNrLWJhc2VkIGV4ZWN1dGlvbiBhbmQgZG8gbm90IHRha2UKKyAgICAgICAgICAgICAgICAgICAgaW50byBhY2NvdW50IHRhc2stbGV2ZWwgZGVwZW5kZW5jaWVzIGJldHdlZW4gcmVjaXBlcywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggY291bGQgYmUgbWlzbGVhZGluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWlycm9yIFZhcmlhYmxlIFNwbGl0dGluZyBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1pcnJvciB2YXJpYWJsZXMgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NSVJST1JTJz48ZmlsZW5hbWU+TUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2FuIG5vdyBzZXBhcmF0ZSB2YWx1ZXMgZW50aXJlbHkgd2l0aCBzcGFjZXMuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG5vIGxvbmdlciBuZWVkICJcXG4iLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGxvb2tzIGZvciBwYWlycyBvZiB2YWx1ZXMsIHdoaWNoIHNpbXBsaWZpZXMgdXNhZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBjaGFuZ2UgcmVxdWlyZWQgdG8gZXhpc3RpbmcgbWlycm9yCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHZhbHVlcyB0aGVtc2VsdmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UaGUgU3VidmVyc2lvbiAoU1ZOKSBGZXRjaGVyIFVzZXMgYW4gInNzaCIgUGFyYW1ldGVyIGFuZCBOb3QgYW4gInJzaCIgUGFyYW1ldGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBTVk4gZmV0Y2hlciBub3cgdGFrZXMgYW4gInNzaCIgcGFyYW1ldGVyIGluc3RlYWQgb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgInJzaCIgcGFyYW1ldGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5ldyBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgdXNlZCB3aGVuIHRoZSAicHJvdG9jb2wiCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpcyBzZXQgdG8gInN2bitzc2giLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG9ubHkgdXNlIHRoZSBuZXcgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBwcm9ncmFtIHVzZWQgYnkgU1ZOLgorICAgICAgICAgICAgICAgICAgICBUaGUgU1ZOIGZldGNoZXIgcGFzc2VzIHRoZSBuZXcgcGFyYW1ldGVyIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVk5fU1NIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3N2bi1mZXRjaGVyJz5TdWJ2ZXJzaW9uIChTVk4pIEZldGNoZXIgKHN2bjovLyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCBmb3IgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgbWVjaGFuaXNtIHRoZXkgd2VyZSBwYXJ0IG9mIGlzIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWNlc3Nhcnkgd2l0aCByZWNpcGUtc3BlY2lmaWMgc3lzcm9vdHMsIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjMtYWJzb2x1dGUtc3ltbGlua3MnPgorICAgICAgICA8dGl0bGU+QWJzb2x1dGUgU3ltYm9saWMgTGlua3M8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWJzb2x1dGUgc3ltYm9saWMgbGlua3MgKHN5bWxpbmtzKSB3aXRoaW4gc3RhZ2VkIGZpbGVzIGFyZSBubworICAgICAgICAgICAgbG9uZ2VyIHBlcm1pdHRlZCBhbmQgbm93IHRyaWdnZXIgYW4gZXJyb3IuCisgICAgICAgICAgICBBbnkgZXhwbGljaXQgY3JlYXRpb24gb2Ygc3ltbGlua3MgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5sbnI8L2ZpbGVuYW1lPiBzY3JpcHQsIHdoaWNoIGlzIGEgcmVwbGFjZW1lbnQgZm9yCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG4gLXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgdGhlIGJ1aWxkIHNjcmlwdHMgaW4gdGhlIHNvZnR3YXJlIHRoYXQgdGhlIHJlY2lwZSBpcyBidWlsZGluZworICAgICAgICAgICAgYXJlIGNyZWF0aW5nIGEgbnVtYmVyIG9mIGFic29sdXRlIHN5bWxpbmtzIHRoYXQgbmVlZCB0byBiZQorICAgICAgICAgICAgY29ycmVjdGVkLCB5b3UgY2FuIGluaGVyaXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5yZWxhdGl2ZV9zeW1saW5rczwvZmlsZW5hbWU+IHdpdGhpbiB0aGUgcmVjaXBlIHRvIHR1cm4KKyAgICAgICAgICAgIHRob3NlIGFic29sdXRlIHN5bWxpbmtzIGludG8gcmVsYXRpdmUgc3ltbGlua3MuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMy1ncGx2Mi1hbmQtZ3BsdjMtbW92ZXMnPgorICAgICAgICA8dGl0bGU+R1BMdjIgVmVyc2lvbnMgb2YgR1BMdjMgUmVjaXBlcyBNb3ZlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbGRlciBHUEx2MiB2ZXJzaW9ucyBvZiBHUEx2MyByZWNpcGVzIGhhdmUgbW92ZWQgdG8gYQorICAgICAgICAgICAgc2VwYXJhdGUgPGZpbGVuYW1lPm1ldGEtZ3BsdjI8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IHVzZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOQ09NUEFUSUJMRV9MSUNFTlNFJz48ZmlsZW5hbWU+SU5DT01QQVRJQkxFX0xJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRvIGV4Y2x1ZGUgR1BMdjMgb3Igc2V0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdG8gc3Vic3RpdHV0ZSBhIEdQTHYyIHZlcnNpb24gb2YgYSBHUEx2MyByZWNpcGUsIHRoZW4geW91IG11c3QgYWRkCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGEtZ3BsdjI8L2ZpbGVuYW1lPiBsYXllciB0byB5b3VyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgPGZpbGVuYW1lPm1ldGEtZ3BsdjI8L2ZpbGVuYW1lPiBsYXllciBpbiB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgbGF5ZXIgaW5kZXggYXQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYnJhbmNoL21hc3Rlci9sYXllci9tZXRhLWdwbHYyLyc+PC91bGluaz4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIHJlbG9jYXRlZCBHUEx2MiByZWNpcGVzIGRvIG5vdCByZWNlaXZlIHRoZSBzYW1lIGxldmVsIG9mCisgICAgICAgICAgICBtYWludGVuYW5jZSBhcyBvdGhlciBjb3JlIHJlY2lwZXMuCisgICAgICAgICAgICBUaGUgcmVjaXBlcyBkbyBub3QgZ2V0IHNlY3VyaXR5IGZpeGVzIGFuZCB1cHN0cmVhbSBubyBsb25nZXIKKyAgICAgICAgICAgIG1haW50YWlucyB0aGVtLgorICAgICAgICAgICAgSW4gZmFjdCwgdGhlIHVwc3RyZWFtIGNvbW11bml0eSBpcyBhY3RpdmVseSBob3N0aWxlIHRvd2FyZHMgcGVvcGxlCisgICAgICAgICAgICB0aGF0IHVzZSB0aGUgb2xkIHZlcnNpb25zIG9mIHRoZSByZWNpcGVzLgorICAgICAgICAgICAgTW92aW5nIHRoZXNlIHJlY2lwZXMgaW50byBhIHNlcGFyYXRlIGxheWVyIGJvdGggbWFrZXMgdGhlIGRpZmZlcmVudAorICAgICAgICAgICAgbmVlZHMgb2YgdGhlIHJlY2lwZXMgY2xlYXJlciBhbmQgY2xlYXJseSBpZGVudGlmaWVzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgIHRoZXNlIHJlY2lwZXMuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgbG9uZy10ZXJtIHNvbHV0aW9uIG1pZ2h0IGJlIHRvIG1vdmUgdG8gQlNELWxpY2Vuc2VkCisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzIG9mIHRoZSBHUEx2MyBjb21wb25lbnRzIGZvciB0aG9zZSB0aGF0IG5lZWQgdG8KKyAgICAgICAgICAgICAgICBleGNsdWRlIEdQTHYzLWxpY2Vuc2VkIGNvbXBvbmVudHMgZnJvbSB0aGUgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICBUaGlzIHNvbHV0aW9uIHdpbGwgYmUgaW52ZXN0aWdhdGVkIGZvciBmdXR1cmUgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IHJlbGVhc2VzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjMtcGFja2FnZS1tYW5hZ2VtZW50LWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnZSBNYW5hZ2VtZW50IENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwYWNrYWdlIG1hbmFnZW1lbnQgY2hhbmdlcyB0b29rIHBsYWNlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNtYXJ0IHBhY2thZ2UgbWFuYWdlciBpcyByZXBsYWNlZCBieSBETkYgcGFja2FnZSBtYW5hZ2VyLgorICAgICAgICAgICAgICAgICAgICBTbWFydCBoYXMgYmVjb21lIHVubWFpbnRhaW5lZCB1cHN0cmVhbSwgaXMgbm90IHBvcnRlZAorICAgICAgICAgICAgICAgICAgICB0byBQeXRob24gMy54LgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIFNtYXJ0IG5lZWRlZCB0byBiZSByZXBsYWNlZC4KKyAgICAgICAgICAgICAgICAgICAgRE5GIGlzIHRoZSBvbmx5IGZlYXNpYmxlIGNhbmRpZGF0ZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSBpcyB0aGF0IHRoZSBvbi10YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgZnJvbSByZW1vdGUgcGFja2FnZSBmZWVkcyBpcworICAgICAgICAgICAgICAgICAgICBub3cgZG9uZSB3aXRoIGEgZGlmZmVyZW50IHRvb2wgdGhhdCBoYXMgYQorICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgc2V0IG9mIGNvbW1hbmQtbGluZSBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBzY3JpcHRzIHRoYXQgY2FsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdG9vbCBkaXJlY3RseSwgb3IgdXNlIGl0cyBBUEksIHRoZXkgbmVlZCB0byBiZSBmaXhlZC48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9kbmYucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lyc+RE5GIERvY3VtZW50YXRpb248L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBScG0gNS54IGlzIHJlcGxhY2VkIHdpdGggUnBtIDQueC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBkb25lIGZvciB0d28gbWFqb3IgcmVhc29uczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBETkYgaXMgQVBJLWluY29tcGF0aWJsZSB3aXRoIFJwbSA1LnggYW5kIHBvcnRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBhbmQgbWFpbnRhaW5pbmcgdGhlIHBvcnQgaXMgbm9uLXRyaXZpYWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnBtIDUueCBpdHNlbGYgaGFzIGxpbWl0ZWQgbWFpbnRlbmFuY2UgdXBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBZb2N0byBQcm9qZWN0IGlzIG9uZSBvZiB0aGUgdmVyeSBmZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgdXNlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlcmtlbGV5IERCIDYueCBpcyByZW1vdmVkIGFuZCBCZXJrZWxleSBEQiA1LnggYmVjb21lcworICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDYueCBvZiBCZXJrZWxleSBEQiBoYXMgbGFyZ2VseSBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0ZWQgYnkgdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSBkdWUgdG8gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUdQTHYzIGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYSByZXN1bHQsIG1vc3QgbWFpbnN0cmVhbSBvcGVuIHNvdXJjZSBwcm9qZWN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcmVxdWlyZSBEQiBhcmUgc3RpbGwgZGV2ZWxvcGVkIGFuZCB0ZXN0ZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCIDUueC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBPRS1jb3JlLCB0aGUgb25seSB0aGluZyB0aGF0IHdhcyByZXF1aXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQiA2Lnggd2FzIFJwbSA1LnguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgbm8gcmVhc29uIGV4aXN0cyB0byBjb250aW51ZSBjYXJyeWluZyBEQiA2LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBPRS1jb3JlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlcmVwbzwvZmlsZW5hbWU+IGlzIHJlcGxhY2VkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZXJlcG9fYzwvZmlsZW5hbWU+LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+PGZpbGVuYW1lPmNyZWF0ZXJlcG9fYzwvZmlsZW5hbWU+IGlzIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIGluY2FybmF0aW9uIG9mIHRoZSB0b29sIHRoYXQgZ2VuZXJhdGVzIHJlbW90ZSByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyB3cml0dGVuIGluIEMgYXMgY29tcGFyZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZXJlcG88L2ZpbGVuYW1lPiwgd2hpY2ggaXMgd3JpdHRlbiBpbgorICAgICAgICAgICAgICAgICAgICBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcmVhdGVyZXBvX2M8L2ZpbGVuYW1lPiBpcyBmYXN0ZXIgYW5kIGlzCisgICAgICAgICAgICAgICAgICAgIG1haW50YWluZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IFJQTSBwYWNrYWdlcyBhcmUgIm5vYXJjaCIKKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiAiYWxsIi48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgY2hhbmdlIHdhcyBtYWRlIGJlY2F1c2UgdG9vIG1hbnkgcGxhY2VzIGluCisgICAgICAgICAgICAgICAgICAgIERORi9SUE00IHN0YWNrIGFscmVhZHkgbWFrZSB0aGF0IGFzc3VtcHRpb24uCisgICAgICAgICAgICAgICAgICAgIE9ubHkgdGhlIGZpbGVuYW1lcyBhbmQgdGhlIGFyY2hpdGVjdHVyZSB0YWcgaGFzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgZWxzZSBoYXMgY2hhbmdlZCBpbiBPRS1jb3JlIHN5c3RlbSwgcGFydGljdWxhcmx5CisgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hbGxhcmNoJz48ZmlsZW5hbWU+YWxsYXJjaC5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNpZ25pbmcgb2YgcmVtb3RlIHBhY2thZ2UgZmVlZHMgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9TSUdOPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaXNzdWUgd2lsbCBiZSBmdWxseSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICBTZWUgPHVsaW5rIHVybD0naHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwOSc+ZGVmZWN0IDExMjA5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzb2x1dGlvbiB0byBwYWNrYWdlIGZlZWQKKyAgICAgICAgICAgICAgICAgICAgc2lnbmluZyB3aXRoIFJQTSBpbiB0aGUgWW9jdG8gUHJvamVjdCAyLjMgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPUEtHIG5vdyB1c2VzIHRoZSBsaWJzb2x2IGJhY2tlbmQgZm9yIHJlc29sdmluZyBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHZhc3RseSBzdXBlcmlvciB0byBPUEtHJ3MgaW50ZXJuYWwgYWQtaG9jIHNvbHZlcgorICAgICAgICAgICAgICAgICAgICB0aGF0IHdhcyBwcmV2aW91c2x5IHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhbmdlIGRvZXMgaGF2ZSBhIHNtYWxsIGltcGFjdCBvbiBkaXNrIChhcm91bmQKKyAgICAgICAgICAgICAgICAgICAgNTAwIEtCKSBhbmQgbWVtb3J5IGZvb3RwcmludC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZnVydGhlciBkZXRhaWxzIG9uIHRoaXMgY2hhbmdlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2NvbW1pdC8/CitpZD1mNGQ0Zjk5Y2ZiYzIzOTZlNDljMTYxM2E3ZDIzN2I5ZTU3ZjA2ZjgxJz5jb21taXQgbWVzc2FnZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMy1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvIDQuODo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gNC44IGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFZlcnNpb25zIDQuMSAoTFRTSSksIDQuNCAoTFRTKSwgNC45IChMVFMvTFRTSSkgYW5kIDQuMTAKKyAgICAgICAgICAgICAgICAgICAgYXJlIG5vdyBwcmVzZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLXNtYXJ0cG06PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbmFsbHkgcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Y3JlYXRlcmVwbzo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VkIGJ5IHRoZSA8ZmlsZW5hbWU+Y3JlYXRlcmVwby1jPC9maWxlbmFtZT4gcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnJwbXJlc29sdmU6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBObyBsb25nZXIgbmVlZGVkIHdpdGggdGhlIG1vdmUgdG8gUlBNIDQgYXMgUlBNIGl0c2VsZiBpcworICAgICAgICAgICAgICAgICAgICB1c2VkIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3N0cmVhbWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCB0aGUgR1N0cmVhbWVyIEdpdCB2ZXJzaW9uIHJlY2lwZXMgYXMgdGhleSBoYXZlCisgICAgICAgICAgICAgICAgICAgIGJlZW4gc3RhbGUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4xLjEwLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGFyZSBzdGlsbCBwcmVzZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmFsc2EtY29uZi1iYXNlOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWVyZ2VkIGludG8gPGZpbGVuYW1lPmFsc2EtY29uZjwvZmlsZW5hbWU+IHNpbmNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJhc291bmQ8L2ZpbGVuYW1lPiBkZXBlbmRlZCBvbiBib3RoLgorICAgICAgICAgICAgICAgICAgICBFc3NlbnRpYWxseSwgbm8gd2F5IGV4aXN0ZWQgdG8gaW5zdGFsbCBvbmx5IG9uZSBvZiB0aGVzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT50cmVtb3I6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBNb3ZlZCB0byA8ZmlsZW5hbWU+bWV0YS1tdWx0aW1lZGlhPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZpeGVkLWludGVnZXIgVm9yYmlzIGRlY29kaW5nIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICBuZWVkZWQgYnkgY3VycmVudCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgR1N0cmVhbWVyJ3MgaXZvcmJpcyBwbHVnaW4gaGFzIGJlZW4gZGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCBlbGltaW5hdGluZyB0aGUgbmVlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50cmVtb3I8L2ZpbGVuYW1lPiByZWNpcGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3VtbWlib290OjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnN5c3RlbWQtYm9vdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuMy13aWMtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5XaWMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gV2ljOgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gV2ljLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcy11c2luZy13aWMnPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlcyBVc2luZyBXaWM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVmYXVsdCBPdXRwdXQgRGlyZWN0b3J5IENoYW5nZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgV2ljJ3MgZGVmYXVsdCBvdXRwdXQgZGlyZWN0b3J5IGlzIG5vdyB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCBpbnN0ZWFkIG9mIHRoZSB1bnVzdWFsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdmFyL3RtcC93aWM8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlICItbyIgYW5kICItLW91dGRpciIgb3B0aW9ucyByZW1haW4gdW5jaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgIGFuZCBhcmUgdXNlZCB0byBzcGVjaWZ5IHlvdXIgcHJlZmVycmVkIG91dHB1dCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPmZzaW1hZ2UgUGx1Zy1pbiBSZW1vdmVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBXaWMgZnNpbWFnZSBwbHVnaW4gaGFzIGJlZW4gcmVtb3ZlZCBhcyBpdCBkdXBsaWNhdGVzCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHJhd2NvcHkgcGx1Z2luLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjMtcWEtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5RQSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgUUEgY2hlY2tzIGhhdmUgY2hhbmdlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnVuc2FmZS1yZWZlcmVuY2VzLWluLWJpbmFyaWVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT51bnNhZmUtcmVmZXJlbmNlcy1pbi1iaW5hcmllczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIFFBIGNoZWNrLCB3aGljaCB3YXMgZGlzYWJsZWQgYnkgZGVmYXVsdCwgaGFzIG5vdyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hlY2sgd2FzIGludGVuZGVkIHRvIGRldGVjdCBiaW5hcmllcyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2JpbjwvZmlsZW5hbWU+IHRoYXQgbGluayB0byBsaWJyYXJpZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbGliPC9maWxlbmFtZT4gYW5kIGhhdmUgdGhlIGNhc2Ugd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgaGFzIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4gb24gYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHRvIDxmaWxlbmFtZT4vPC9maWxlbmFtZT4uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSByZW1vdmVkIFFBIGNoZWNrIHdhcyBidWdneS4KKyAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCA8ZmlsZW5hbWU+L3VzcjwvZmlsZW5hbWU+IHJlc2lkaW5nIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgcGFydGl0aW9uIGZyb20gPGZpbGVuYW1lPi88L2ZpbGVuYW1lPiBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgYSByYXJlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVuc2FmZS1yZWZlcmVuY2VzLWluLWJpbmFyaWVzPC9maWxlbmFtZT4gd2FzCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5maWxlLXJkZXBzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5maWxlLXJkZXBzPC9maWxlbmFtZT4gUUEgY2hlY2sgaXMgbm93IGFuCisgICAgICAgICAgICAgICAgICAgIGVycm9yIGJ5IGRlZmF1bHQgaW5zdGVhZCBvZiBhIHdhcm5pbmcuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgaXQgaXMgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgbWlzc2luZyBydW50aW1lIGRlcGVuZGVuY2llcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3FhLWVycm9ycy1hbmQtd2FybmluZ3MnPkVycm9ycyBhbmQgV2FybmluZ3M8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjMtbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIG1pc2NlbGxhbmVvdXMgY2hhbmdlcyBoYXZlIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgcmVsZWFzZSwgYSBudW1iZXIgb2YgcmVjaXBlcyBoYXZlIGJlZW4gY2hhbmdlZCB0bworICAgICAgICAgICAgICAgICAgICBpZ25vcmUgdGhlIDxmaWxlbmFtZT5sYXJnZWZpbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGl0ZW0sIGVuYWJsaW5nIGxhcmdlIGZpbGUgc3VwcG9ydCB1bmNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBoYXMgYWx3YXlzIGJlZW4gZW5hYmxlZCBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxpbmcgdGhlIGZlYXR1cmUgaGFzIG5vdCBiZWVuIHdpZGVseSB0ZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRnV0dXJlIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IHdpbGwgcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICBlbnRpcmVseSB0aGUgYWJpbGl0eSB0byBkaXNhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxhcmdlZmlsZTwvZmlsZW5hbWU+IGZlYXR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB3b3VsZCBtYWtlIGl0IHVuY29uZGl0aW9uYWxseSBlbmFibGVkIGV2ZXJ5d2hlcmUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19WRVJTSU9OJz48ZmlsZW5hbWU+RElTVFJPX1ZFUlNJT048L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgY29udGFpbnMgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREFURSc+PGZpbGVuYW1lPkRBVEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJldHdlZW4gUG9reSByZWxlYXNlcywKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5EQVRFPC9maWxlbmFtZT4gdmFsdWUgaXMgZXhwbGljaXRseSBleGNsdWRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT4vZXRjL2lzc3VlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2lzc3VlLm5ldDwvZmlsZW5hbWU+LCB3aGljaCBpcyBkaXNwbGF5ZWQgYXQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGxvZ2luIHByb21wdCwgaW4gb3JkZXIgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgTXVsdGlsaWIgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcywgdGhlIDxmaWxlbmFtZT5EQVRFPC9maWxlbmFtZT4gdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgaW5hY2N1cmF0ZSBpZiB0aGUgPGZpbGVuYW1lPmJhc2UtZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGUgaXMgcmVzdG9yZWQgZnJvbSBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgcmF0aGVyCisgICAgICAgICAgICAgICAgICAgIHRoYW4gcmVidWlsdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdGhlIGJ1aWxkIGRhdGUgcmVjb3JkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvaXNzdWUqPC9maWxlbmFtZT4gb3IgYW55d2hlcmUgZWxzZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCBhIGJldHRlciBtZXRob2QgaXMgdG8gZGVmaW5lIGEgcG9zdC1wcm9jZXNzaW5nCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIGRvIGl0IGFuZCBoYXZlIHRoZSBmdW5jdGlvbiBjYWxsZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5ST09URlNfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gZW5zdXJlcyB0aGUgdmFsdWUgaXMgYWx3YXlzIHVwLXRvLWRhdGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEcm9wYmVhcidzIDxmaWxlbmFtZT5pbml0PC9maWxlbmFtZT4gc2NyaXB0IG5vdyBkaXNhYmxlcworICAgICAgICAgICAgICAgICAgICBEU0EgaG9zdCBrZXlzIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhbmdlIGlzIGluIGxpbmUgd2l0aCB0aGUgc3lzdGVtZCBzZXJ2aWNlCisgICAgICAgICAgICAgICAgICAgIGZpbGUsIHdoaWNoIHN1cHBvcnRzIFJTQSBrZXlzIG9ubHksIGFuZCB3aXRoIHJlY2VudAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucyBvZiBPcGVuU1NILCB3aGljaCBkZXByZWNhdGVzIERTQSBob3N0IGtleXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJ1aWxkaGlzdG9yeSc+PGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBub3cgY29ycmVjdGx5IHVzZXMgdGFicyBhcyBzZXBhcmF0b3JzIGJldHdlZW4gYWxsCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgaW4gPGZpbGVuYW1lPmluc3RhbGxlZC1wYWNrYWdlLXNpemVzLnR4dDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGFpZCBpbXBvcnQgaW50byBvdGhlciB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlVTRV9MRENPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIHdpdGggdGhlICJsZGNvbmZpZyIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+IGZlYXR1cmUuCisgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbnMgdGhhdCBwcmV2aW91c2x5IHNldDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VfTERDT05GSUcgPSAiMCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBzaG91bGQgbm93IGluc3RlYWQgdXNlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiBsZGNvbmZpZyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUnPjxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgbm93IGluY2x1ZGVzIGFsbCB2ZXJzaW9ucyBvZiBBR1BMIGxpY2Vuc2VzIGluIGFkZGl0aW9uCisgICAgICAgICAgICAgICAgICAgIHRvIEdQTCBhbmQgTEdQTC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBsaXN0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSBndWFyYW50ZWVkCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIGNvbXBsZXRlIHNhZmUgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgc2VlayBsZWdhbCBhZHZpY2UgYmFzZWQgb24gd2hhdCB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpbmcgaWYgeW91IGFyZSB1bnN1cmUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBLZXJuZWwgbW9kdWxlIHBhY2thZ2VzIGFyZSBub3cgc3VmZml4ZWQgd2l0aCB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gaW4gb3JkZXIgdG8gYWxsb3cgbW9kdWxlIHBhY2thZ2VzIGZyb20gbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHZlcnNpb25zIHRvIGNvLWV4aXN0IG9uIGEgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gcmV0dXJuIHRvIHRoZSBwcmV2aW91cyBuYW1pbmcgc2NoZW1lCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgdmVyc2lvbiBzdWZmaXgsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9NT0RVTEVfUEFDS0FHRV9TVUZGSVggdG8gIiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJlbW92YWwgb2YgPGZpbGVuYW1lPmxpYnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5sYTwvZmlsZW5hbWU+IGZpbGVzIGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ki5sYTwvZmlsZW5hbWU+IGZpbGVzIGFyZSBub3QgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkIG9uIExpbnV4IGFuZCByZWxvY2F0aW5nIHRoZW0gaXMgYW4gdW5uZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgYnVyZGVuLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byBwcmVzZXJ2ZSB0aGVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmxhPC9maWxlbmFtZT4gZmlsZXMgKGUuZy4gaW4gYSBjdXN0b20KKyAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uKSwgeW91IG11c3QgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUX0RJU1RSTyc+PGZpbGVuYW1lPklOSEVSSVRfRElTVFJPPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHN1Y2ggdGhhdCAicmVtb3ZlLWxpYnRvb2wiIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXh0ZW5zaWJsZSBTREtzIGJ1aWx0IGZvciBHQ0MgNSsgbm93IHJlZnVzZSB0byBpbnN0YWxsIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIHdoZXJlIHRoZSBob3N0IEdDQyB2ZXJzaW9uIGlzIDQuOCBvciA0LjkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhbmdlIHJlc3VsdGVkIGZyb20gdGhlIGZhY3QgdGhhdCB0aGUgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgIGlzIGtub3duIHRvIGZhaWwgZHVlIHRvIHRoZSB3YXkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bmluYXRpdmU8L2ZpbGVuYW1lPiBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBpcyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy11bmluYXRpdmUnPjxmaWxlbmFtZT51bmluYXRpdmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWxsIG5hdGl2ZSBhbmQgbmF0aXZlc2RrIHJlY2lwZXMgbm93IHVzZSBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YWx1ZSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIHNoYXJpbmcgdGhlIHZhbHVlIHVzZWQgYnkgcmVjaXBlcyBmb3IgdGhlIHRhcmdldCwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZHMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzIGlzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfTkFUSVZFJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX05BVElWRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byBhbiBpbnRlcnNlY3Rpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkUnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBuYXRpdmVzZGsgcmVjaXBlcywgdGhlCisgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIGFyZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX05BVElWRVNESyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19OQVRJVkVTREs8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNESyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFU0RLPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RklMRVNESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggd2FzIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBhbmQgcmFyZWx5IHVzZWQsCisgICAgICAgICAgICAgICAgICAgIGhhcyBub3cgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGNoYW5nZSBhbnkgcmVjaXBlcyB0aGF0IHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVNESVI8L2ZpbGVuYW1lPiB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TVVMVElNQUNIX0hPU1RfU1lTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaGFzIGJlZW4gcmVtb3ZlZCBhcyBpdCBpcyBubyBsb25nZXIgbmVlZGVkCisgICAgICAgICAgICAgICAgICAgIHdpdGggcmVjaXBlLXNwZWNpZmljIHN5c3Jvb3RzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbW92aW5nLXRvLXRoZS15b2N0by1wcm9qZWN0LTIuNC1yZWxlYXNlJz4KKyAgICA8dGl0bGU+TW92aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgbWlncmF0aW9uIGluZm9ybWF0aW9uIGZvciBtb3ZpbmcgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UgZnJvbSB0aGUgcHJpb3IgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1tZW1vcnktcmVzaWRlbnQtbW9kZSc+CisgICAgICAgIDx0aXRsZT5NZW1vcnkgUmVzaWRlbnQgTW9kZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIHBlcnNpc3RlbnQgbW9kZSBpcyBub3cgYXZhaWxhYmxlIGluIEJpdEJha2UncyBkZWZhdWx0IG9wZXJhdGlvbiwKKyAgICAgICAgICAgIHJlcGxhY2luZyBpdHMgcHJldmlvdXMgIm1lbW9yeSByZXNpZGVudCBtb2RlIiAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIE5vdyB5b3Ugb25seSBuZWVkIHRvIHNldAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NFUlZFUl9USU1FT1VUJz48ZmlsZW5hbWU+QkJfU0VSVkVSX1RJTUVPVVQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRvIGEgdGltZW91dCAoaW4gc2Vjb25kcykgYW5kIEJpdEJha2UncyBzZXJ2ZXIgc3RheXMgcmVzaWRlbnQgZm9yCisgICAgICAgICAgICB0aGF0IGFtb3VudCBvZiB0aW1lIGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+IHNjcmlwdCBoYXMgYmVlbgorICAgICAgICAgICAgcmVtb3ZlZCBzaW5jZSBhIHNlcGFyYXRlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBubyBsb25nZXIKKyAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgY2hhbmdlcyB0aGF0IGhhdmUKKyAgICAgICAgICAgIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uMzwvZmlsZW5hbWU+IENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiAicHl0aG9uMyIgcGFja2FnZSBub3cgYnJpbmdzIGluIGFsbCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCBQeXRob24gMyBkaXN0cmlidXRpb24gcmF0aGVyIHRoYW4gYSBzdWJzZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBtYXRjaGVzIHdoYXQgaXMgZXhwZWN0ZWQgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFkaXRpb25hbCBMaW51eCBkaXN0cmlidXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIGluc3RhbGwgYSBzdWJzZXQgb2YgUHl0aG9uIDMsIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uLWNvcmU8L2ZpbGVuYW1lPiBwbHVzIG9uZSBvciBtb3JlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluZGl2aWR1YWwgcGFja2FnZXMgdGhhdCBhcmUgc3RpbGwgcHJvZHVjZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24zPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ6Mi5weTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sem1hLnB5PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fY29tcHJlc3Npb24ucHk8L2ZpbGVuYW1lPiBzY3JpcHRzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIG1vdmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtbWlzYzwvZmlsZW5hbWU+IHBhY2thZ2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnB5dGhvbjMtY29tcHJlc3Npb248L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmJpbnV0aWxzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5saWJiZmQ8L2ZpbGVuYW1lPiBsaWJyYXJ5IGlzIG5vdyBwYWNrYWdlZCBpbgorICAgICAgICAgICAgICAgICAgICBhIHNlcGFyYXRlICJsaWJiZmQiIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFja2FnaW5nIHNhdmVzIHNwYWNlIHdoZW4gY2VydGFpbiB0b29scworICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cGVyZjwvZmlsZW5hbWU+KSBhcmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgdG9vbHMgb25seSBuZWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJiZmQ8L2ZpbGVuYW1lPiByYXRoZXIgdGhhbiBhbGwgdGhlIHBhY2thZ2VzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnN1PC9maWxlbmFtZT4gcHJvZ3JhbSBpcyBub3cgcGFja2FnZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LXN1IiBwYWNrYWdlLCB3aGljaCBpcyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgd2hlbiAicGFtIiBpcyBsaXN0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4gc2hvdWxkIG5vdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCB1bmxlc3MgaXQgaXMgbmVlZGVkIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3U8L2ZpbGVuYW1lPiBpcyBub3JtYWxseSBwcm92aWRlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNoYWRvdyBmaWxlIGZvcm1hdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmNpZXMgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtc3U8L2ZpbGVuYW1lPiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAicGFtIiBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnN3aXRjaF9yb290PC9maWxlbmFtZT4gcHJvZ3JhbSBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZCBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LXN3aXRjaC1yb290IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZm9yIHNtYWxsIGluaXRyYW1mcyBpbWFnZXMgdGhhdCBkbyBub3QgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3aG9sZSA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2Ugb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVzeWJveCBiaW5hcnksIHdoaWNoIGFyZSBib3RoIG11Y2ggbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dpdGNoX3Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtc3dpdGNoLXJvb3Q8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW9uaWNlPC9maWxlbmFtZT4gcHJvZ3JhbSBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZCBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LWlvbmljZSIgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtaW9uaWNlPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3VzaGVsbDwvZmlsZW5hbWU+IHByb2dyYW0gaXMgbm93IHBhY2thZ2VkIGluCisgICAgICAgICAgICAgICAgICAgIGEgc2VwYXJhdGUgImluaXRzY3JpcHRzLXN1c2hlbGwiIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFja2FnaW5nIGNoYW5nZSBhbGxvd3Mgc3lzdGVtcyB0byBwdWxsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdXNoZWxsPC9maWxlbmFtZT4gaW4gd2hlbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VsaW51eDwvZmlsZW5hbWU+IGlzIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgYWxzbyBlbGltaW5hdGVzIG5lZWRpbmcgdG8gcHVsbCBpbiB0aGUgZW50aXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzIGEKKyAgICAgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnN1c2hlbGw8L2ZpbGVuYW1lPiBwYWNrYWdlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgInNlbGludXgiIGlzIGluIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdsaWItMi4wPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nbGliLTIuMDwvZmlsZW5hbWU+IHBhY2thZ2Ugbm93IGhhcyBhCisgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkIHJ1bnRpbWUgZGVwZW5kZW5jeSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPikgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGFyZWQtbWltZS1pbmZvPC9maWxlbmFtZT4gcGFja2FnZSwgc2luY2UgbGFyZ2UKKyAgICAgICAgICAgICAgICAgICAgcG9ydGlvbnMgb2YgR0lPIGFyZSBub3QgdXNlZnVsIHdpdGhvdXQgdGhlIE1JTUUgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkFEX1JFQ09NTUVOREFUSU9OUyc+PGZpbGVuYW1lPkJBRF9SRUNPTU1FTkRBVElPTlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaWYgPGZpbGVuYW1lPnNoYXJlZC1taW1lLWluZm88L2ZpbGVuYW1lPiBpcyB0b28KKyAgICAgICAgICAgICAgICAgICAgbGFyZ2UgYW5kIGlzIG5vdCByZXF1aXJlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R28gU3RhbmRhcmQgUnVudGltZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgR28gc3RhbmRhcmQgcnVudGltZSBoYXMgYmVlbiBzcGxpdCBvdXQgZnJvbSB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z288L2ZpbGVuYW1lPiByZWNpcGUgaW50byBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nby1ydW50aW1lPC9maWxlbmFtZT4gcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjQtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5hY3BpdGVzdHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBub3QgbWFpbnRhaW5lZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmF1dG9nZW4tbmF0aXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm8gbG9uZ2VyIHJlcXVpcmVkIGJ5IEdydWIsIG9lLWNvcmUsIG9yIG1ldGEtb2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5iZHdnYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgaW4gT3BlbkVtYmVkZGVkLUNvcmUgcmVxdWlyZXMgdGhpcyByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEl0IGhhcyBtb3ZlZCB0byBtZXRhLW9lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YnlhY2M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgb25seSBuZWVkZWQgYnkgcnBtIDUueCBhbmQgaGFzIG1vdmVkIHRvCisgICAgICAgICAgICAgICAgICAgIG1ldGEtb2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nY2MgKDUuNCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgNS40IHNlcmllcyBkcm9wcGVkIHRoZSByZWNpcGUgaW4gZmF2b3Igb2YgNi4zIC8gNy4yLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z25vbWUtY29tbW9uPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRlZCB1cHN0cmVhbSBhbmQgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdvLWJvb3RzdHJhcC1uYXRpdmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBHbyAxLjkgZG9lcyBpdHMgb3duIGJvb3RzdHJhcHBpbmcgc28gdGhpcyByZWNpcGUgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmd1aWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIG9ubHkgbmVlZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvZ2VuLW5hdGl2ZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVtYWtlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCBieSBlaXRoZXIgb2YgdGhlc2UgcHJvZ3JhbXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJjbGFzcy1pc2EtcGVybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCIDQsIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJkdW1wdmFsdWUtcGVybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCIDQsIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJlbnYtcGVybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCIDQsIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJmaWxlLWNoZWNrdHJlZS1wZXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IgNCwgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmkxOG4tY29sbGF0ZS1wZXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IgNCwgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmljb252PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIG9ubHkgbmVlZGVkIGZvciA8ZmlsZW5hbWU+dWNsaWJjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHdhcyByZW1vdmVkIGluIHRoZSBwcmV2aW91cyByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPm11c2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBoYXZlIHRoZWlyIG93biBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW1pbmd3PC9maWxlbmFtZT4gc3RpbGwgbmVlZHMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmljb252PC9maWxlbmFtZT4sIHNvIGl0IGhhcworICAgICAgICAgICAgICAgICAgICBiZWVuIG1vdmVkIHRvIDxmaWxlbmFtZT5tZXRhLW1pbmd3PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJwbmcxMjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG5lZWRlZCBmb3IgTFNCLiBUaGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlicG5nPC9maWxlbmFtZT4gaXMgMS42LnguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJwb2QtcGxhaW5lci1wZXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IgNCwgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvICg0LjEpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgNC40LCA0LjksIDQuMTAgYW5kIDQuMTIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5tYWlseDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBwcmV2aW91c2x5IG9ubHkgbmVlZGVkIGZvciBMU0IKKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSwgYW5kIHVwc3RyZWFtIGlzIGRlZnVuY3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5tZXNhIChnaXQgdmVyc2lvbiBvbmx5KTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBnaXQgdmVyc2lvbiByZWNpcGUgd2FzIHN0YWxlIHdpdGggcmVzcGVjdCB0byB0aGUgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+b2Zvbm8gKGdpdCB2ZXJzaW9uIG9ubHkpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGdpdCB2ZXJzaW9uIHJlY2lwZSB3YXMgc3RhbGUgd2l0aCByZXNwZWN0IHRvIHRoZSByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5wb3J0bWFwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgb2Jzb2xldGUgYW5kIGlzIHN1cGVyc2VkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbjMtcHlncGdtZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG9sZCBhbmQgdW5tYWludGFpbmVkLiBJdCB3YXMgcHJldmlvdXNseQorICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBieSA8ZmlsZW5hbWU+ZG5mPC9maWxlbmFtZT4sIHdoaWNoIGhhcyBzd2l0Y2hlZAorICAgICAgICAgICAgICAgICAgICB0byBvZmZpY2lhbCA8ZmlsZW5hbWU+Z3BnbWU8L2ZpbGVuYW1lPiBQeXRob24gYmluZGluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tYXN5bmM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLWdpdGRiPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1naXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1tYWtvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tcGV4cGVjdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLXB0eXByb2Nlc3M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiBQeXRob24gdGhlIDMgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1weWN1cmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBOb3RoaW5nIGlzIHVzaW5nIHRoaXMgcmVjaXBlIGluIE9wZW5FbWJlZGRlZC1Db3JlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLXNpeDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLXNtbWFwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5yZW1ha2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+cmVtYWtlPC9maWxlbmFtZT4gYXMgdGhlIHByb3ZpZGVyIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL21ha2U8L2ZpbGVuYW1lPiBpcyBicm9rZW4uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhpcyByZWNpcGUgaXMgbm90IG5lZWRlZCBpbiBPcGVuRW1iZWRkZWQtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LWtlcm5lbC1kZXZpY2UtdHJlZS1tb3ZlJz4KKyAgICAgICAgPHRpdGxlPktlcm5lbCBEZXZpY2UgVHJlZSBNb3ZlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEtlcm5lbCBEZXZpY2UgVHJlZSBzdXBwb3J0IGlzIG5vdyBlYXNpZXIgdG8gZW5hYmxlIGluIGEga2VybmVsCisgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICBUaGUgRGV2aWNlIFRyZWUgY29kZSBoYXMgbW92ZWQgdG8gYQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMta2VybmVsLWRldmljZXRyZWUnPjxmaWxlbmFtZT5rZXJuZWwtZGV2aWNldHJlZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICBGdW5jdGlvbmFsaXR5IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBmb3IgYW55IHJlY2lwZSB0aGF0IGluaGVyaXRzCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbCc+PGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3MgYW5kIHNldHMgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0RFVklDRVRSRUUnPjxmaWxlbmFtZT5LRVJORUxfREVWSUNFVFJFRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICBUaGUgcHJldmlvdXMgbWVjaGFuaXNtIGZvciBkb2luZyB0aGlzLAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgaXMgc3RpbGwgYXZhaWxhYmxlIHRvIGF2b2lkIGJyZWFrYWdlLCBidXQgdHJpZ2dlcnMgYQorICAgICAgICAgICAgZGVwcmVjYXRpb24gd2FybmluZy4KKyAgICAgICAgICAgIEZ1dHVyZSByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCB3aWxsIHJlbW92ZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSXQgaXMgYWR2aXNhYmxlIHRvIHJlbW92ZSBhbnkgPGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc3RhdGVtZW50cyB0aGF0IHJlcXVlc3QKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZnJvbSBhbnkgY3VzdG9tIGtlcm5lbCByZWNpcGVzIHlvdSBtaWdodCBoYXZlLgorICAgICAgICAgICAgVGhpcyB3aWxsIGF2b2lkIGJyZWFrYWdlIGluIHBvc3QgMi40IHJlbGVhc2VzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjQtcGFja2FnZS1xYS1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2UgUUEgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHBhY2thZ2UgUUEgY2hhbmdlcyB0b29rIHBsYWNlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSAidW5zYWZlLXJlZmVyZW5jZXMtaW4tc2NyaXB0cyIgUUEgY2hlY2sgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcmVmZXIgdG8gPGZpbGVuYW1lPiR7Q09SRUJBU0V9L0xJQ0VOU0U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHlvdSByZWNlaXZlIGEgd2FybmluZyBiZWNhdXNlIHRoaXMgZmlsZSBpcyBhIGRlc2NyaXB0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBsaWNlbnNlIGZvciBPRS1Db3JlLgorICAgICAgICAgICAgICAgICAgICBVc2UgPGZpbGVuYW1lPiR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpZiB5b3VyIHJlY2lwZSBpcyBNSVQtbGljZW5zZWQgYW5kIHlvdSBjYW5ub3QgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWQgbWV0aG9kIG9mIHJlZmVycmluZyB0byBhIGZpbGUgd2l0aGluIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LXJlYWRtZS1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBGaWxlIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgY2hhbmdlcyB0byA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gUG9reSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICBtb3ZlZCB0byB0aGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyIGFuZAorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZW5hbWVkIDxmaWxlbmFtZT5SRUFETUUucG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBBIHN5bWxpbmsgaGFzIGJlZW4gY3JlYXRlZCBzbyB0aGF0IHJlZmVyZW5jZXMgdG8gdGhlIG9sZAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiB3b3JrLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UkVBRE1FLmhhcmR3YXJlPC9maWxlbmFtZT4gZmlsZSBoYXMgYmVlbiBtb3ZlZAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQSBzeW1saW5rIGhhcyBiZWVuIGNyZWF0ZWQgc28gdGhhdCByZWZlcmVuY2VzIHRvIHRoZSBvbGQKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gd29yay4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5SRUFETUUucWVtdTwvZmlsZW5hbWU+IGZpbGUgaGFzIGJlZW4gY3JlYXRlZAorICAgICAgICAgICAgICAgICAgICB3aXRoIGNvdmVyYWdlIG9mIHRoZSA8ZmlsZW5hbWU+cWVtdSo8L2ZpbGVuYW1lPiBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi40LW1pc2NlbGxhbmVvdXMtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgYWRkaXRpb25hbCBjaGFuZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Uk9PVEZTX1BLR01BTkFHRV9CT09UU1RSQVA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgYW55IHJlZmVyZW5jZXMgdG8gaXQgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgcmVtb3ZlIHRoaXMgdmFyaWFibGUgZnJvbSBhbnkgY3VzdG9tIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIFlvY3RvIFByb2plY3QgMi4xIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gd2FzIHJlbmFtZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0bzwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSByZW1haW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1haW50YWluZXJzLmluYzwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIHRyYWNrcworICAgICAgICAgICAgICAgICAgICBtYWludGFpbmVycyBieSBsaXN0aW5nIGEgcHJpbWFyeSBwZXJzb24gcmVzcG9uc2libGUgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGluIE9FLUNvcmUsIGhhcyBiZWVuIG1vdmVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IHRvIE9FLUNvcmUgKGkuZS4gZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPjxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Mgbm93IG1ha2VzIGEgc2luZ2xlIGNvbW1pdCBwZXIgYnVpbGQgcmF0aGVyIHRoYW4gb25lCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdCBwZXIgc3ViZGlyZWN0b3J5IGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGFzc3VtZXMgdGhlIGNvbW1pdHMgYXJlIGVuYWJsZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPSAiMSIsIHdoaWNoIGlzIHR5cGljYWwuCisgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHksIHRoZSA8ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT4gY2xhc3MgbWFkZQorICAgICAgICAgICAgICAgICAgICBvbmUgY29tbWl0IHBlciBzdWJkaXJlY3RvcnkgaW4gdGhlIHJlcG9zaXRvcnkgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgbWFrZSBpdCBlYXNpZXIgdG8gc2VlIHRoZSBjaGFuZ2VzIGZvciBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBUbyB2aWV3IGEgcGFydGljdWxhciBjaGFuZ2UsIHNwZWNpZnkgdGhhdCBzdWJkaXJlY3RvcnkgYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGxhc3QgcGFyYW1ldGVyIG9uIHRoZSA8ZmlsZW5hbWU+Z2l0IHNob3c8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+Z2l0IGRpZmY8L2ZpbGVuYW1lPiBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPng4Ni1iYXNlLmluYzwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkIGJ5IGFsbCB4ODYtYmFzZWQgbWFjaGluZSBjb25maWd1cmF0aW9ucywgbm93IHNldHMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+IHRvICJsaXZlIiByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICBhcHBlbmRpbmcgd2l0aCA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIGRlZmF1bHQgZWFzaWVyIHRvIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZmlyZXMgbXVsdGlwbGUgIkJ1aWxkU3RhcnRlZCIgZXZlbnRzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWcgaXMgZW5hYmxlZCAob25lIHBlciBjb25maWd1cmF0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjZXZlbnRzJz5FdmVudHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPnNlY3VyaXR5X2ZsYWdzLmluYzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc2V0cyBhCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HQ0NQSUUnPjxmaWxlbmFtZT5HQ0NQSUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aCBhbiBvcHRpb24gdG8gZW5hYmxlIFBvc2l0aW9uIEluZGVwZW5kZW50CisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGFibGVzIChQSUUpIHdpdGhpbiA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEVuYWJsaW5nIFBJRSBpbiB0aGUgR05VIEMgQ29tcGlsZXIgKEdDQyksIG1ha2VzIFJldHVybgorICAgICAgICAgICAgICAgICAgICBPcmllbnRlZCBQcm9ncmFtbWluZyAoUk9QKSBhdHRhY2tzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8KKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPRS1Db3JlIG5vdyBwcm92aWRlcyBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHBsdWdpbiB0aGF0IGltcGxlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgYSAiY3JlYXRlLWxheWVyIiBzdWJjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBzdWJjb21tYW5kIGhhcyByZXN1bHRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0IGJlaW5nIGRlcHJlY2F0ZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIHdpbGwgbGlrZWx5IGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT52bWRrPC9maWxlbmFtZT4sIDxmaWxlbmFtZT52ZGk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnFjb3cyPC9maWxlbmFtZT4gaW1hZ2UgZmlsZSB0eXBlcyBhcmUgbm93CisgICAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSAid2ljIiBpbWFnZSB0eXBlIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09OVkVSU0lPTl9DTUQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBlcXVpdmFsZW50IGltYWdlIHR5cGVzIGFyZSBub3cKKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljLnZtZGs8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPndpYy52ZGk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPndpYy5xY293MjwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyZsdDt0eXBlJmd0O1tkZXBlbmRzXTwvZmlsZW5hbWU+IGhhcworICAgICAgICAgICAgICAgICAgICByZXBsYWNlZCA8ZmlsZW5hbWU+SU1BR0VfREVQRU5EU18mbHQ7dHlwZSZndDs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgeW91ciBvd24gY2xhc3NlcyB0aGF0IGltcGxlbWVudCBjdXN0b20gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdHlwZXMsIHRoZW4geW91IG5lZWQgdG8gdXBkYXRlIHRoZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT3BlblNTTCAxLjEgaGFzIGJlZW4gaW50cm9kdWNlZC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIGRlZmF1bHQgaXMgc3RpbGwgMS4wLnggdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSRUZFUlJFRF9WRVJTSU9OJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJlZmVyZW5jZSBpcyBzZXQgaXMgZHVlIHRvIHRoZSByZW1haW5pbmcgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgICBpc3N1ZXMgd2l0aCBvdGhlciBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlICBpbiB0aGUgb3BlbnNzbCAxLjAgcmVjaXBlIG5vdyBpbmNsdWRlcyAib3BlbnNzbDEwIgorICAgICAgICAgICAgICAgICAgICBhcyBhIG1hcmtlciB0aGF0IGNhbiBiZSB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gcmVjaXBlcyB0aGF0IGJ1aWxkIHNvZnR3YXJlIHRoYXQgc3RpbGwgZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgIE9wZW5TU0wgMS4wLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGVuc3VyZSBjb25zaXN0ZW50IGJlaGF2aW9yLCBCaXRCYWtlJ3MgIi1yIiBhbmQgIi1SIgorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIChpLmUuIHByZWZpbGUgYW5kIHBvc3RmaWxlKSwgd2hpY2ggYXJlIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVhZCBvciBwb3N0LXJlYWQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZSwgbm93IG9ubHkgYWZmZWN0IHRoZSBjdXJyZW50IEJpdEJha2UgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHRoZXNlIEJpdEJha2UgY2hhbmdlcywgdGhlc2Ugb3B0aW9ucyB3b3VsZCAic3RpY2siCisgICAgICAgICAgICAgICAgICAgIGZvciBmdXR1cmUgZXhlY3V0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0yLjUtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtcGFja2FnaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnaW5nIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBjaGFuZ2VzIHRoYXQgaGF2ZQorICAgICAgICAgICAgb2NjdXJyZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5iaW5kLWxpYnM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlicmFyaWVzIHBhY2thZ2VkIGJ5IHRoZSBiaW5kIHJlY2lwZSBhcmUgaW4gYQorICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSA8ZmlsZW5hbWU+YmluZC1saWJzPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmZtLWd0azwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGliZm08L2ZpbGVuYW1lPiBHVEsrIGJpbmRpbmdzIGFyZSBzcGxpdCBpbnRvCisgICAgICAgICAgICAgICAgICAgIGEgc2VwYXJhdGUgPGZpbGVuYW1lPmxpYmZtLWd0azwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5mbGV4LWxpYmZsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZsZXggcmVjaXBlIHNwbGl0cyBvdXQgbGliZmwgaW50byBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mbGV4LWxpYmZsPC9maWxlbmFtZT4gcGFja2FnZSB0byBhdm9pZCB0b28gbWFueQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmVpbmcgcHVsbGVkIGluIHdoZXJlIG9ubHkgdGhlIGxpYnJhcnkgaXMKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3J1Yi1lZmk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBpcyBzcGxpdAorICAgICAgICAgICAgICAgICAgICBpbnRvIGEgc2VwYXJhdGUgPGZpbGVuYW1lPmdydWItYm9vdGNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IGlzIHRocm91Z2ggYQorICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsL2dydWItYm9vdGNvbmYgcHJvdmlkZXIgbWFraW5nIGl0IHBvc3NpYmxlIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gcmVjaXBlIHByb3ZpZGUgdGhlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGEgQml0QmFrZSBhcHBlbmQgZmlsZSB0byBicmluZworICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBiYWNrIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+YXJtdjdhIExlZ2FjeSBQYWNrYWdlIEZlZWQgU3VwcG9ydDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBMZWdhY3kgc3VwcG9ydCBpcyByZW1vdmVkIGZvciB0cmFuc2l0aW9uaW5nIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFybXY3YTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12N2EtdmZwLW5lb248L2ZpbGVuYW1lPiBpbiBwYWNrYWdlIGZlZWRzLAorICAgICAgICAgICAgICAgICAgICB3aGljaCB3YXMgcHJldmlvdXNseSBlbmFibGVkIGJ5IHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR0FSQ0hDT01QQVRfQVJNVjdBPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNpdGlvbiBvY2N1cnJlZCBpbiAyMDExIGFuZCBhY3RpdmUgcGFja2FnZSBmZWVkcworICAgICAgICAgICAgICAgICAgICBzaG91bGQgYnkgbm93IGJlIHVwZGF0ZWQgdG8gdGhlIG5ldyBuYW1pbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNS1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIDYuNCByZWNpcGVzIGFyZSByZXBsYWNlZCBieSA3LnguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nc3QtcGxheWVyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVuYW1lZCB0byA8ZmlsZW5hbWU+Z3N0LWV4YW1wbGVzPC9maWxlbmFtZT4gYXMgcGVyCisgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aG9zdGFwLXV0aWxzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzb2Z0d2FyZSBwYWNrYWdlIGlzIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGF0ZW5jeXRvcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGFzdCByZWxlYXNlIHdhcyBpbiAyMDA5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGlicGZtNDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IGZpbGUgdGhhdCByZXF1aXJlcyB0aGlzIHJlY2lwZSBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3Byb2ZpbGU8L2ZpbGVuYW1lPiwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gNC40LCA0LjksIGFuZCA0LjEwIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFZlcnNpb25zIDQuMTIsIDQuMTQsIGFuZCA0LjE1IHJlbWFpbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1hbjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IG1vZGVybgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFuLWRiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1rZWxmaW1hZ2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaGFzIGJlZW4gcmVtb3ZlZCBpbiB0aGUgdXBzdHJlYW0gY29yZWJvb3QgcHJvamVjdCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vIGxvbmdlciBuZWVkZWQgd2l0aCB0aGUgcmVtb3ZhbCBvZiB0aGUgRUxGIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgbm90IG1haW50YWluZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5uZW9uPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzb2Z0d2FyZSBwYWNrYWdlIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIHVwc3RyZWFtIGFuZAorICAgICAgICAgICAgICAgICAgICBpcyBubyBsb25nZXIgbmVlZGVkIGJ5IGFueXRoaW5nIGluIE9wZW5FbWJlZGRlZC1Db3JlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+b3Byb2ZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIHJlY2lwZSBpcyByZXBsYWNlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGVyZjwvZmlsZW5hbWU+IGFuZCBrZWVwaW5nIGNvbXBhdGliaWxpdHkgb24KKyAgICAgICAgICAgICAgICAgICAgYW4gb25nb2luZyBiYXNpcyB3aXRoIDxmaWxlbmFtZT5tdXNsPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cGF4PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzb2Z0d2FyZSBwYWNrYWdlIGlzIG9ic29sZXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c3RhdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBub3QgbWFpbnRhaW5lZCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmV1dGlsczwvZmlsZW5hbWU+IHByb3ZpZGVzIGEgbW9kZXJuIHN0YXQgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+emlzb2ZzLXRvb2xzLW5hdGl2ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVzZSB0aGUgY29tcHJlc3NlZAorICAgICAgICAgICAgICAgICAgICBJU08gaW1hZ2UgZmVhdHVyZSBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtc2NyaXB0cy1hbmQtdG9vbHMtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5TY3JpcHRzIGFuZCBUb29scyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIGNoYW5nZXMgdG8gc2NyaXB0cyBhbmQgdG9vbHM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0cyBwcmV2aW91c2x5IHNoaXBwZWQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBwb2t5IGJ1dCBub3QgaW4gT3BlbkVtYmVkZGVkLUNvcmUgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwdHMgYXJlIG5vdCBtYWludGFpbmVkIGFuZCBhcmUgb3V0ZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIEluIG1hbnkgY2FzZXMsIHRoZXkgYXJlIGFsc28gbGltaXRlZCBpbiBzY29wZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIGlzIGEgZGlyZWN0IHJlcGxhY2VtZW50IGZvciA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIHRvIGNyZWF0ZSBhIEJTUCBvciBrZXJuZWwgcmVjaXBlIGluCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWtlcm5lbC1yZWNpcGUtZXhhbXBsZSc+QlNQIEtlcm5lbCBSZWNpcGUgRXhhbXBsZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gbm93IGV4aXRzIHdpdGggYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhlcmUgYXJlIHVuY29tbWl0dGVkIGNoYW5nZXMgb3IgYSByZWJhc2UvYW0gaW4gcHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSdzIHNvdXJjZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGVycm9yIG9jY3VycywgdGhlcmUgbWlnaHQgYmUgdW5jb21taXR0ZWQgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHVwZGF0ZXMgdG8gdGhlIHBhdGNoZXMgYXBwbGllZAorICAgICAgICAgICAgICAgICAgICBieSB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBBIC1mLy0tZm9yY2Ugb3B0aW9uIGlzIHByb3ZpZGVkIGZvciBzaXR1YXRpb25zIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHVuY29tbWl0dGVkIGNoYW5nZXMgYXJlIGluY29uc2VxdWVudGlhbCBhbmQgeW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgcHJvY2VlZCByZWdhcmRsZXNzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1ycG1yZXBvPC9maWxlbmFtZT4gc2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbmFsaXR5IG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLXJwbXJlcG88L2ZpbGVuYW1lPiBpcyByZXBsYWNlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSBwYWNrYWdlLWluZGV4PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zY3JpcHRzL3Rlc3QtZGVwZW5kZW5jaWVzLnNoPC9maWxlbmFtZT4gc2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgaXMgbGFyZ2VseSBtYWRlIG9ic29sZXRlIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUtc3BlY2lmaWMgc3lzcm9vdHMgZnVuY3Rpb25hbGl0eSBpbnRyb2R1Y2VkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtYml0YmFrZS1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkJpdEJha2UgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBCaXRCYWtlIGNoYW5nZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tLXJ1bmFsbDwvZmlsZW5hbWU+IG9wdGlvbiBoYXMgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgYmVoYXZpb3JzIHBlb3BsZSBtaWdodCB3YW50OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZWhhdmlvciBBOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgZ2l2ZW4gdGFyZ2V0IChvciBzZXQgb2YgdGFyZ2V0cykgbG9vayB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2sgZ3JhcGggYW5kIHJ1biB0YXNrIFggb25seSBpZiBpdCBpcyBwcmVzZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdpbGwgYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJlaGF2aW9yIEI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBnaXZlbiB0YXJnZXQgKG9yIHNldCBvZiB0YXJnZXRzKSBsb29rIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFzayBncmFwaCBhbmQgcnVuIHRhc2sgWCBpZiBhbnkgcmVjaXBlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tncmFwaCBoYXMgc3VjaCBhIHRhcmdldCwgZXZlbiBpZiBpdCBpcyBub3QgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3JpZ2luYWwgdGFzayBncmFwaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LS1ydW5hbGw8L2ZpbGVuYW1lPiBvcHRpb24gbm93IHBlcmZvcm1zCisgICAgICAgICAgICAgICAgICAgICJCZWhhdmlvciBCIi4KKyAgICAgICAgICAgICAgICAgICAgUHJldmlvdXNseSA8ZmlsZW5hbWU+LS1ydW5hbGw8L2ZpbGVuYW1lPiBiZWhhdmVkIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgIkJlaGF2aW9yIEEiLgorICAgICAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT4tLXJ1bm9ubHk8L2ZpbGVuYW1lPiBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgcmV0YWluIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gIkJlaGF2aW9yIEEiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNldmVyYWwgZXhwbGljaXQgInJ1biB0aGlzIHRhc2sgZm9yIGFsbCByZWNpcGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IHRyZWUiIHRhc2tzIGhhdmUgYmVlbiByZW1vdmVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mZXRjaGFsbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2hlY2t1cmlhbGw8L2ZpbGVuYW1lPiwgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+KmFsbDwvZmlsZW5hbWU+IHRhc2tzIHByb3ZpZGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvZGF0YTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPiBjbGFzc2VzKS4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgaXMgYSBCaXRCYWtlIG9wdGlvbiB0byBjb21wbGV0ZSB0aGlzIGZvciBhbnkgYXJiaXRyYXJ5CisgICAgICAgICAgICAgICAgICAgIHRhc2suIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJpdGJha2UgJmx0O3RhcmdldCZndDsgLWMgZmV0Y2hhbGwKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBzaG91bGQgbm93IGJlIHJlcGxhY2VkIHdpdGg6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYml0YmFrZSAmbHQ7dGFyZ2V0Jmd0OyAtLXJ1bmFsbD1mZXRjaAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNS1weXRob24tYW5kLXB5dGhvbjMtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5QeXRob24gYW5kIFB5dGhvbiAzIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgYXV0by1wYWNrYWdpbmcgY2hhbmdlcyB0byBQeXRob24gYW5kIFB5dGhvbiAzOgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHNjcmlwdC1tYW5hZ2VkIDxmaWxlbmFtZT5weXRob24tKi1tYW5pZmVzdC5pbmM8L2ZpbGVuYW1lPiBmaWxlcworICAgICAgICAgICAgdGhhdCB3ZXJlIHByZXZpb3VzbHkgdXNlZCB0byBnZW5lcmF0ZSBQeXRob24gYW5kIFB5dGhvbiAzCisgICAgICAgICAgICBwYWNrYWdlcyBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCBhIEpTT04tYmFzZWQgZmlsZSB0aGF0IGlzCisgICAgICAgICAgICBlYXNpZXIgdG8gcmVhZCBhbmQgbWFpbnRhaW4uCisgICAgICAgICAgICBBIG5ldyB0YXNrIGlzIGF2YWlsYWJsZSBmb3IgbWFpbnRhaW5lcnMgb2YgdGhlIFB5dGhvbiByZWNpcGVzIHRvCisgICAgICAgICAgICB1cGRhdGUgdGhlIEpTT04gZmlsZSB3aGVuIHVwZ3JhZGluZyB0byBuZXcgUHl0aG9uIHZlcnNpb25zLgorICAgICAgICAgICAgWW91IGNhbiBub3cgZWRpdCB0aGUgZmlsZSBkaXJlY3RseSBpbnN0ZWFkIG9mIGhhdmluZyB0byBlZGl0IGEKKyAgICAgICAgICAgIHNjcmlwdCBhbmQgcnVuIGl0IHRvIHVwZGF0ZSB0aGUgZmlsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBwYXJ0aWN1bGFyIGNoYW5nZSB0byBub3RlIGlzIHRoYXQgdGhlIFB5dGhvbiByZWNpcGVzIG5vIGxvbmdlcgorICAgICAgICAgICAgaGF2ZSBidWlsZC10aW1lIHByb3ZpZGVzIGZvciB0aGVpciBwYWNrYWdlcy4KKyAgICAgICAgICAgIFRoaXMgYXNzdW1lcyA8ZmlsZW5hbWU+cHl0aG9uLWZvbzwvZmlsZW5hbWU+IGlzIG9uZSBvZiB0aGUgcGFja2FnZXMKKyAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHRoZSBQeXRob24gcmVjaXBlLgorICAgICAgICAgICAgWW91IGNhbiBubyBsb25nZXIgcnVuIDxmaWxlbmFtZT5iaXRiYWtlIHB5dGhvbi1mb288L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgaGF2ZSBhIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4gb24KKyAgICAgICAgICAgIDxmaWxlbmFtZT5weXRob24tZm9vPC9maWxlbmFtZT4sIGJ1dCBkb2luZyBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgY2F1c2VzIHRoZSBwYWNrYWdlIHRvIHdvcmsgYXMgZXhwZWN0ZWQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBweXRob24tZm9vIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgb3IKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWZvbyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBlYXJsaWVyIGJ1aWxkLXRpbWUgcHJvdmlkZXMgYmVoYXZpb3Igd2FzIGEgcXVpcmsgb2YgdGhlIHdheSB0aGUKKyAgICAgICAgICAgIFB5dGhvbiBtYW5pZmVzdCBmaWxlIHdhcyBjcmVhdGVkLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjaGFuZ2UgcGxlYXNlIHNlZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9jb21taXQvP2lkPThkOTRiOWRiMjIxZDFkZWY0MmYwOTFiOTkxOTAzZmFhMmQxNjUxY2UnPnRoaXMgY29tbWl0PC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNS1taXNjZWxsYW5lb3VzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIGFkZGl0aW9uYWwgY2hhbmdlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+IGNsYXNzIHN1cHBvcnRzIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGZvciBtdWx0aXBsZSBrZXJuZWxzLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGtlcm5lbCByZWNpcGUgb3IgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgbWVudGlvbnMgcGFja2FnaW5nIGF0IGFsbCwgeW91IHNob3VsZCByZXBsYWNlIHJlZmVyZW5jZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBpbiBwYWNrYWdlIG5hbWVzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXNhYmxlIGF1dG9tYXRpYyBpbnN0YWxsYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFNfa2VybmVsLWJhc2UgPSAiIjwvZmlsZW5hbWU+IHlvdSBjYW4gYXZvaWQKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGNsYXNzIGNvbW1pdHMgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICB0byB0aGUgcmVwb3NpdG9yeSBieSBkZWZhdWx0IHNvIHlvdSBubyBsb25nZXIgbmVlZCB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQgPSAiMSI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZGlzYWJsZSBjb21taXRzIHlvdSBuZWVkIHRvIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX0NPTU1JVCA9ICIwIjwvZmlsZW5hbWU+IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJlYWdsZWJvbmU8L2ZpbGVuYW1lPiByZWZlcmVuY2UgbWFjaGluZSBoYXMKKyAgICAgICAgICAgICAgICAgICAgYmVlbiByZW5hbWVkIHRvIDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS15b2N0bzwvZmlsZW5hbWU+IEJTUCBpcyBhIHJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiB1c2luZyBvbmx5IG1haW5saW5lIGNvbXBvbmVudHMgYXZhaWxhYmxlIGluCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIGFuZCA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hlcmVhcyBUZXhhcyBJbnN0cnVtZW50cyBtYWludGFpbnMgYSBmdWxsLWZlYXR1cmVkIEJTUCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGEtdGk8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZW5hbWUgYXZvaWRzIHRoZSBwcmV2aW91cyBuYW1lIGNsYXNoIHRoYXQgZXhpc3RlZAorICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZSB0d28gQlNQcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXM8L2ZpbGVuYW1lPiBjbGFzcyBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgd29ya3Mgd2l0aCBTeXNWIDxmaWxlbmFtZT5pbml0PC9maWxlbmFtZT4gc2NyaXB0cyBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdXNhZ2UgaGFzIGJlZW4gcHJvYmxlbWF0aWMuCisgICAgICAgICAgICAgICAgICAgIEFsc28sIHRoZSA8ZmlsZW5hbWU+c3lza2xvZ2Q8L2ZpbGVuYW1lPiByZWNpcGUgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIHVzZXMgPGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXM8L2ZpbGVuYW1lPiBiZWNhdXNlIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZSB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY21ha2UnPjxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB1c2VzIDxmaWxlbmFtZT5uaW5qYTwvZmlsZW5hbWU+IGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBmb3IgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaW1wcm92ZXMgYnVpbGQgcGVyZm9ybWFuY2UuCisgICAgICAgICAgICAgICAgICAgIElmIGEgcmVjaXBlIGlzIGJyb2tlbiB3aXRoIDxmaWxlbmFtZT5uaW5qYTwvZmlsZW5hbWU+LCB0aGVuCisgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgY2FuIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T0VDTUFLRV9HRU5FUkFUT1IgPSAiVW5peCBNYWtlZmlsZXMiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gY2hhbmdlIGJhY2sgdG8gPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXNseSBkZXByZWNhdGVkIDxmaWxlbmFtZT5iYXNlXyo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlaXIgcmVwbGFjZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9saWIvYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgYXJlIHR5cGljYWxseSB1c2VkIGZyb20gcmVjaXBlcyBhbmQgY2xhc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgQW55IHJlZmVyZW5jZXMgdG8gdGhlIG9sZCBmdW5jdGlvbnMgbXVzdCBiZSB1cGRhdGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHRoZSByZW1vdmVkIGZ1bmN0aW9ucyBhbmQgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzOgorCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPGVtcGhhc2lzPlJlbW92ZWQ8L2VtcGhhc2lzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZXBsYWNlbWVudDwvZW1waGFzaXM+CisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIGJhc2VfcGF0aF9qb2luKCkgICAgICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmpvaW4oKQorICAgICBiYXNlX3BhdGhfcmVsYXRpdmUoKSAgICAgICAgICAgICAgICAgICAgb2UucGF0aC5yZWxhdGl2ZSgpCisgICAgIGJhc2VfcGF0aF9vdXQoKSAgICAgICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmZvcm1hdF9kaXNwbGF5KCkKKyAgICAgYmFzZV9yZWFkX2ZpbGUoKSAgICAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLnJlYWRfZmlsZSgpCisgICAgIGJhc2VfaWZlbHNlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5pZmVsc2UoKQorICAgICBiYXNlX2NvbmRpdGlvbmFsKCkgICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMuY29uZGl0aW9uYWwoKQorICAgICBiYXNlX2xlc3Nfb3JfZXF1YWwoKSAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMubGVzc19vcl9lcXVhbCgpCisgICAgIGJhc2VfdmVyc2lvbl9sZXNzX29yX2VxdWFsKCkgICAgICAgICAgICBvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoKQorICAgICBiYXNlX2NvbnRhaW5zKCkgICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoKQorICAgICBiYXNlX2JvdGhfY29udGFpbigpICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMuYm90aF9jb250YWluKCkKKyAgICAgYmFzZV9wcnVuZV9zdWZmaXgoKSAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLnBydW5lX3N1ZmZpeCgpCisgICAgIG9lX2ZpbHRlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5zdHJfZmlsdGVyKCkKKyAgICAgb2VfZmlsdGVyX291dCgpICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KCkgKG9yIHVzZSB0aGUgX3JlbW92ZSBvcGVyYXRvcikuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+ZXhpdCAxPC9maWxlbmFtZT4gdG8gZXhwbGljaXRseSBkZWZlciBhCisgICAgICAgICAgICAgICAgICAgIHBvc3RpbnN0YWxsIHNjcmlwdCB1bnRpbCBmaXJzdCBib290IGlzIG5vdyBkZXByZWNhdGVkIHNpbmNlCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIG5vdCBhbiBvYnZpb3VzIG1lY2hhbmlzbSBhbmQgY2FuIG1hc2sgYWN0dWFsIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBkZWZlciBhIHBvc3RpbnN0YWxsIHRvIGZpcnN0IGJvb3QKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIHRhcmdldCByYXRoZXIgdGhhbiBhdCA8ZmlsZW5hbWU+cm9vdGZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gdGltZSwgdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Rfb250YXJnZXQoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9yIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgKGluY2x1ZGluZyA8ZmlsZW5hbWU+ZXhpdCAxPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIHdpbGwgdHJpZ2dlciBhIHdhcm5pbmcgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I25ldy1yZWNpcGUtcG9zdC1pbnN0YWxsYXRpb24tc2NyaXB0cyc+UG9zdC1JbnN0YWxsYXRpb24gU2NyaXB0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmVsZjwvZmlsZW5hbWU+IGltYWdlIHR5cGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbWFnZSB0eXBlIHdhcyByZW1vdmVkIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2VsZmltYWdlPC9maWxlbmFtZT4gdG9vbAorICAgICAgICAgICAgICAgICAgICB0aGF0IHdhcyByZXF1aXJlZCB0byBjcmVhdGUgaXQgaXMgbm8gbG9uZ2VyIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGNvcmVib290IHVwc3RyZWFtIGFuZCByZXF1aXJlZCB1cGRhdGluZyBldmVyeSB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+IHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgLmlzbyBpbWFnZSBjb21wcmVzc2lvbiAocHJldmlvdXNseSBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggPGZpbGVuYW1lPkNPTVBSRVNTSVNPID0gIjEiPC9maWxlbmFtZT4pIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Vyc3BhY2UgdG9vbHMgKDxmaWxlbmFtZT56aXNvZnMtdG9vbHM8L2ZpbGVuYW1lPikgYXJlCisgICAgICAgICAgICAgICAgICAgIHVubWFpbnRhaW5lZCBhbmQgPGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4gcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjb21wcmVzc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gYnVpbGQgYSBsaXZlIGltYWdlIHdpdGggc3F1YXNoZnMrbHo0IGNvbXByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQgeW91IHNob3VsZCBub3cgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSVZFX1JPT1RGU19UWVBFID0gInNxdWFzaGZzLWx6NCI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgZW5zdXJlIHRoYXQgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyBpbiA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnBhbTwvZmlsZW5hbWU+IGFyZSBvbmx5IGJ1aWxkYWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYW08L2ZpbGVuYW1lPiBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBkZXBlbmRlbmN5IGlzIHRydWx5IG9wdGlvbmFsIHRoZW4gaXQgaXMgcmVjb21tZW5kZWQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgZGVwZW5kZW5jeSBiZSBjb25kaXRpb25hbCB1cG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYW08L2ZpbGVuYW1lPiBiZWluZyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEVGSS1iYXNlZCBtYWNoaW5lcywgdGhlIGJvb3Rsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQpIGlzIGluc3RhbGxlZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBhdCAvYm9vdC4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGNhbiBiZSB1c2VkIHRvIHNwbGl0IHRoZSBib290bG9hZGVyIGludG8gc2VwYXJhdGUgYm9vdAorICAgICAgICAgICAgICAgICAgICBhbmQgcm9vdGZzIHBhcnRpdGlvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBhdGNoZXMgd2hvc2UgY29udGV4dCBkb2VzIG5vdCBtYXRjaCBleGFjdGx5IChpLmUuIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIHBhdGNoIHJlcG9ydHMgImZ1enoiIHdoZW4gYXBwbHlpbmcpIHdpbGwgZ2VuZXJhdGUgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nLgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiB0aGlzIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2NvbW1pdC8/aWQ9Y2M5N2JjMDgxMjViNjM4MjFjZTNmNjE2NzcxODMwZjc3YzQ1NmY1Nyc+dGhpcyBjb21taXQ8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGV4cGVjdGVkIHRvIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUX2xheWVybmFtZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSB2ZXJzaW9uKHMpIG9mIE9wZW5FbWJlZGRlZC1Db3JlIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBzcGVjaWZpZWQgYXMgY29kZW5hbWVzIHVzaW5nIHNwYWNlcyB0byBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB2YWx1ZXMgKGUuZy4gInJvY2tvIHN1bW8iKS4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSBsYXllciBkb2VzIG5vdCBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxBWUVSU0VSSUVTX0NPTVBBVF9sYXllcm5hbWU8L2ZpbGVuYW1lPiwgYSB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgIHdpbGwgaXMgc2hvd24uCisgICAgICAgICAgICAgICAgICAgIElmIGEgbGF5ZXIgc2V0cyBhIHZhbHVlIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICgic3VtbyIgZm9yIHRoZSAyLjUgcmVsZWFzZSksIHRoZW4gYW4gZXJyb3Igd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRaPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICJVVEMiIHdpdGhpbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaW4gb3JkZXIgdG8gZml4CisgICAgICAgICAgICAgICAgICAgIHJlcHJvZHVjaWJpbGl0eSBwcm9ibGVtcyBpbiBzb21lIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMi42LXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LWdjYy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkdDQyA4LjIgaXMgTm93IFVzZWQgYnkgRGVmYXVsdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gdmVyc2lvbiA4LjIgaXMgbm93IHVzZWQgYnkgZGVmYXVsdAorICAgICAgICAgICAgZm9yIGNvbXBpbGF0aW9uLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBoYXMgY2hhbmdlZCBpbiB0aGUgR0NDIDgueCByZWxlYXNlLAorICAgICAgICAgICAgc2VlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2djYy5nbnUub3JnL2djYy04L2NoYW5nZXMuaHRtbCc+PC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBzdGlsbCBuZWVkIHRvIGNvbXBpbGUgd2l0aCB2ZXJzaW9uIDcueCwgR0NDIDcuMyBpcworICAgICAgICAgICAgYWxzbyBwcm92aWRlZC4KKyAgICAgICAgICAgIFlvdSBjYW4gc2VsZWN0IHRoaXMgdmVyc2lvbiBieSBzZXR0aW5nIHRoZQorICAgICAgICAgICAgYW5kIGNhbiBiZSBzZWxlY3RlZCBieSBzZXR0aW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUdDQ1ZFUlNJT04nPjxmaWxlbmFtZT5HQ0NWRVJTSU9OPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSB0byAiNy4lIiBpbiB5b3VyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5iZWVjcnlwdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBuZWVkZWQgc2luY2UgbW92aW5nIHRvIFJQTSA0LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmJpZ3JlcXNwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5jYWxpYnJhdGVwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlbW92ZWQgaW4gZmF2b3Igb2YgPGZpbGVuYW1lPnhpbnB1dDwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmNvbXBvc2l0ZXByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRhbWFnZXByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRteHByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRyaTJwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kcmkzcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZWVlLWFjcGktc2NyaXB0czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5maXhlc3Byb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmZvbnRzcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZnN0ZXN0czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nY2NtYWtlZGVwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gTm8gbG9uZ2VyIHVzZWQuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2xwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nbm9tZS1kZXNrdG9wMzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBuZWVkZWQuICBUaGlzIHJlY2lwZSBoYXMgbW92ZWQgdG8gPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5pY29uLW5hbWluZy11dGlsczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciB1c2VkIHNpbmNlIHRoZSBTYXRvIHRoZW1lIHdhcyByZW1vdmVkIGluIDIwMTYuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aW5wdXRwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5rYnByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnVzYi1jb21wYXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGlidXNlcjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJuZnNpZG1hcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBhbiBleHRlcm5hbCByZXF1aXJlbWVudCBzaW5jZSA8ZmlsZW5hbWU+bmZzLXV0aWxzPC9maWxlbmFtZT4gMi4yLjEuICA8ZmlsZW5hbWU+bGlibmZzaWRtYXA8L2ZpbGVuYW1lPiBpcyBub3cgaW50ZWdyYXRlZC4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJ4Y2FsaWJyYXRlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gTm8gbG9uZ2VyIG5lZWRlZCB3aXRoIDxmaWxlbmFtZT54aW5wdXQ8L2ZpbGVuYW1lPgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1rdGVtcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4gVGhlIDxmaWxlbmFtZT5ta3RlbXA8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIHByb3ZpZGVkIGJ5IGJvdGggPGZpbGVuYW1lPmJ1c3lib3g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmNvcmV1dGlsczwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm9zc3AtdXVpZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IElzIG5vdCBiZWluZyBtYWludGFpbmVkIGFuZCBoYXMgbW9zdGx5IGJlZW4gcmVwbGFjZWQgYnkgPGZpbGVuYW1lPnV1aWQuaDwvZmlsZW5hbWU+IGluIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cGF4LXV0aWxzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gTm8gbG9uZ2VyIG5lZWRlZC4gIFByZXZpb3VzIFFBIHRlc3RzIHRoYXQgZGlkIHVzZSB0aGlzIHJlY2lwZSBhcmUgbm93IGRvbmUgYXQgYnVpbGQgdGltZS4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5wY21jaWF1dGlsczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5waXh6PC9maWxlbmFtZT46PC9lbXBoYXNpcz4gTm8gbG9uZ2VyIG5lZWRlZC4gPGZpbGVuYW1lPnh6PC9maWxlbmFtZT4gbm93IHN1cHBvcnRzIG11bHRpLXRocmVhZGVkIGNvbXByZXNzaW9uLgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnByZXNlbnRwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5yYW5kcnByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnJlY29yZHByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnJlbmRlcnByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnJlc291cmNlcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2NybnNhdmVycHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+dHJhY2UtY21kPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQmVjYW1lIG9ic29sZXRlLiAgPGZpbGVuYW1lPnBlcmY8L2ZpbGVuYW1lPiByZXBsYWNlZCB0aGlzIHJlY2lwZSdzIGZ1bmN0aW9uYWxseS4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT52aWRlb3Byb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPndpcmVsZXNzLXRvb2xzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQmVjYW1lIG9ic29sZXRlLiAgU3VwZXJzZWRlZCBieSA8ZmlsZW5hbWU+aXc8L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54Y21pc2Nwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54ZXh0cHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eGY4NmRnYXByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnhmODZkcmlwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54Zjg2bWlzY3Byb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnhmODYtdmlkZW8tb21hcGZiPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQmVjYW1lIG9ic29sZXRlLiAgVXNlIGtlcm5lbCBtb2Rlc2V0dGluZyBkcml2ZXIgaW5zdGVhZC4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54Zjg2LXZpZGVvLW9tYXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuICBVc2Uga2VybmVsIG1vZGVzZXR0aW5nIGRyaXZlciBpbnN0ZWFkLgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnhmODZ2aWRtb2RlcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eGluZXJhbWFwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54cHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eWFzbTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBuZWVkZWQgc2luY2UgcHJldmlvdXMgdXNhZ2VzIGFyZSBub3cgc2F0aXNmaWVkIGJ5IDxmaWxlbmFtZT5uYXNtPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1wYWNrYWdpbmctY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5QYWNrYWdpbmcgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHBhY2thZ2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Y21ha2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y21ha2UubTQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvb2xjaGFpbjwvZmlsZW5hbWU+IGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFpbiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aXB0YWJsZXM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmlwdGFibGVzPC9maWxlbmFtZT4gbW9kdWxlcyBoYXZlIGJlZW4gc3BsaXQKKyAgICAgICAgICAgICAgICAgICAgaW50byBzZXBhcmF0ZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmFsc2EtbGliPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmFzb3VuZDwvZmlsZW5hbWU+IGlzIG5vdyBpbiB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWxzYS1saWI8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmFzb3VuZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlibnNzLWRiPC9maWxlbmFtZT4gaXMgbm93IGluIGl0cyBvd24gcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGEgPGZpbGVuYW1lPi92YXIvZGIvbWFrZWRicy5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdCB0byB1cGRhdGUgZGF0YWJhc2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5weXRob24zPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gcGFja2FnZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaW5zdGFsbCBzcGVjaWZpYyBwYWNrYWdlcyBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uLW1vZHVsZXM8L2ZpbGVuYW1lPiAvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5weXRob24zLW1vZHVsZXM8L2ZpbGVuYW1lPiBmb3IgZXZlcnl0aGluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnN5c3RlbXRhcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1vdmVkIDxmaWxlbmFtZT5zeXN0ZW10YXAtZXhwb3J0ZXI8L2ZpbGVuYW1lPiBpbnRvIGl0cyBvd24KKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LXhvcmctcHJvdG9jb2wtZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgPHRpdGxlPlhPcmcgUHJvdG9jb2wgZGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSAiKnByb3RvIiB1cHN0cmVhbSByZXBvc2l0b3JpZXMgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG8gb25lCisgICAgICAgICAgICAieG9yZ3Byb3RvIiByZXBvc2l0b3J5LgorICAgICAgICAgICAgVGh1cywgdGhlIGNvcnJlc3BvbmRpbmcgcmVjaXBlcyBoYXZlIGFsc28gYmVlbiBjb21iaW5lZCBpbnRvIGEKKyAgICAgICAgICAgIHNpbmdsZSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4gcmVjaXBlLgorICAgICAgICAgICAgQW55IHJlY2lwZXMgdGhhdCBkZXBlbmQgdXBvbiB0aGUgb2xkZXIgPGZpbGVuYW1lPipwcm90bzwvZmlsZW5hbWU+CisgICAgICAgICAgICByZWNpcGVzIG5lZWQgdG8gYmUgY2hhbmdlZCB0byBkZXBlbmQgb24gdGhlIG5ld2VyCisgICAgICAgICAgICA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4gcmVjaXBlIGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBuYW1lcyBvZiByZWNpcGVzIHJlbW92ZWQgYmVjYXVzZSBvZiB0aGlzIHJlcG9zaXRvcnkgY2hhbmdlLAorICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ibWlncmF0aW9uLTIuNi1yZW1vdmVkLXJlY2lwZXMiPlJlbW92ZWQgUmVjaXBlczwvbGluaz4KKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1kaXN0dXRpbHMtZGlzdHV0aWxzMy1mZXRjaGluZy1kZXBlbmRlbmNpZXMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+ZGlzdHV0aWxzMzwvZmlsZW5hbWU+IE5vdyBQcmV2ZW50IEZldGNoaW5nIERlcGVuZGVuY2llcyBEdXJpbmcgdGhlIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiBUYXNrPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFByZXZpb3VzbHksIGl0IHdhcyBwb3NzaWJsZSBmb3IgUHl0aG9uIHJlY2lwZXMgdGhhdCBpbmhlcml0ZWQKKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGlzdHV0aWxzJz48ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWRpc3R1dGlsczMnPjxmaWxlbmFtZT5kaXN0dXRpbHMzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzc2VzIHRvIGZldGNoIGNvZGUgZHVyaW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayB0byBzYXRpc2Z5IGRlcGVuZGVuY2llcyBtZW50aW9uZWQgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5zZXR1cC5weTwvZmlsZW5hbWU+IGlmIHRob3NlIGRlcGVuZGVuY2llcyB3ZXJlIG5vdAorICAgICAgICAgICAgcHJvdmlkZWQgaW4gdGhlIHN5c3Jvb3QgKGkuZS4gcmVjaXBlcyBwcm92aWRpbmcgdGhlIGRlcGVuZGVuY2llcworICAgICAgICAgICAgd2VyZSBtaXNzaW5nIGZyb20KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBhZmZlY3RzIGNsYXNzZXMgYmV5b25kIGp1c3QgdGhlIHR3byBtZW50aW9uZWQKKyAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3R1dGlsczM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgQW55IHJlY2lwZSB0aGF0IGluaGVyaXRzIDxmaWxlbmFtZT5kaXN0dXRpbHMqPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjbGFzc2VzIGFyZSBhZmZlY3RlZC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldHVwdG9vbHMzPC9maWxlbmFtZT4gcmVjaXBlcyBhcmUgYWZmZWN0ZWQgc2luY2UKKyAgICAgICAgICAgICAgICB0aGV5IGluaGVyaXQgdGhlIDxmaWxlbmFtZT5kaXN0dXRpbHMqPC9maWxlbmFtZT4gY2xhc3Nlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRmV0Y2hpbmcgdGhlc2UgdHlwZXMgb2YgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIG5vdCBwcm92aWRlZCBpbiB0aGUKKyAgICAgICAgICAgIHN5c3Jvb3QgbmVnYXRpdmVseSBhZmZlY3RzIHRoZSBhYmlsaXR5IHRvIHJlcHJvZHVjZSBidWlsZHMuCisgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZmV0Y2hpbmcgaXMgbm93IGV4cGxpY2l0bHkgZGlzYWJsZWQuCisgICAgICAgICAgICBDb25zZXF1ZW50bHksIGFueSBtaXNzaW5nIGRlcGVuZGVuY2llcyBpbiBQeXRob24gcmVjaXBlcyB0aGF0CisgICAgICAgICAgICB1c2UgdGhlc2UgY2xhc3NlcyBub3cgcmVzdWx0IGluIGFuIGVycm9yIGR1cmluZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiB0YXNrLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtbGludXgteW9jdG8tY29uZmlndXJhdGlvbi1hdWRpdC1pc3N1ZXMtbm93LWNvcnJlY3RseS1yZXBvcnRlZCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiBDb25maWd1cmF0aW9uIEF1ZGl0IElzc3VlcyBOb3cgQ29ycmVjdGx5IFJlcG9ydGVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIER1ZSB0byBhIGJ1ZywgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGF1ZGl0IGZ1bmN0aW9uYWxpdHkgd2FzCisgICAgICAgICAgICBub3Qgd3JpdGluZyBvdXQgYW55IHJlc3VsdGluZyB3YXJuaW5ncyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgVGhpcyBpc3N1ZSBpcyBub3cgY29ycmVjdGVkLgorICAgICAgICAgICAgWW91IG1pZ2h0IG5vdGljZSB0aGVzZSB3YXJuaW5ncyBub3cgaWYgeW91IGhhdmUgYSBjdXN0b20ga2VybmVsCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIHdpdGggYSA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiBzdHlsZQorICAgICAgICAgICAga2VybmVsIHJlY2lwZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LWltYWdlLWtlcm5lbC1hcnRpZmFjdC1uYW1pbmctY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5JbWFnZS9LZXJuZWwgQXJ0aWZhY3QgTmFtaW5nIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE5hbWUgdmFyaWFibGVzIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9OQU1FJz48ZmlsZW5hbWU+SU1BR0VfTkFNRTwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgdXNlIGEgbmV3IDxmaWxlbmFtZT5JTUFHRV9WRVJTSU9OX1NVRkZJWDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURBVEVUSU1FJz48ZmlsZW5hbWU+REFURVRJTUU8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5JTUFHRV9WRVJTSU9OX1NVRkZJWDwvZmlsZW5hbWU+IGFsbG93cworICAgICAgICAgICAgICAgICAgICBlYXNpZXIgYW5kIG1vcmUgZGlyZWN0IGNoYW5nZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+SU1BR0VfVkVSU0lPTl9TVUZGSVg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgYXMKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9WRVJTSU9OX1NVRkZJWCA9ICItJHtEQVRFVElNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXZlcmFsIHZhcmlhYmxlcyBoYXZlIGNoYW5nZWQgbmFtZXMgZm9yIGNvbnNpc3RlbmN5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgT2xkIFZhcmlhYmxlIE5hbWUgICAgICAgICAgICAgICBOZXcgVmFyaWFibGUgTmFtZQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgS0VSTkVMX0lNQUdFX0JBU0VfTkFNRSAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0lNQUdFX05BTUUnPktFUk5FTF9JTUFHRV9OQU1FPC9saW5rPgorICAgIEtFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUUgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRV9MSU5LX05BTUUnPktFUk5FTF9JTUFHRV9MSU5LX05BTUU8L2xpbms+CisgICAgTU9EVUxFX1RBUkJBTExfQkFTRV9OQU1FICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfTkFNRSc+TU9EVUxFX1RBUkJBTExfTkFNRTwvbGluaz4KKyAgICBNT0RVTEVfVEFSQkFMTF9TWU1MSU5LX05BTUUgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NT0RVTEVfVEFSQkFMTF9MSU5LX05BTUUnPk1PRFVMRV9UQVJCQUxMX0xJTktfTkFNRTwvbGluaz4KKyAgICBJTklUUkFNRlNfQkFTRV9OQU1FICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUUkFNRlNfTkFNRSc+SU5JVFJBTUZTX05BTUU8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPk1PRFVMRV9JTUFHRV9CQVNFX05BTUU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgbW9kdWxlIHRhcmJhbGwgbmFtZSBpcyBub3cgY29udHJvbGxlZCBkaXJlY3RseSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfTkFNRSc+PGZpbGVuYW1lPk1PRFVMRV9UQVJCQUxMX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfRFRCX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfRFRCX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfRFRCX0xJTktfTkFNRSc+PGZpbGVuYW1lPktFUk5FTF9EVEJfTElOS19OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBoYXZlIGJlZW4gaW50cm9kdWNlZCB0byBjb250cm9sIGtlcm5lbCBEZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgVHJlZSBCaW5hcnkgKERUQikgYXJ0aWZhY3QgbmFtZXMgaW5zdGVhZCBvZiBtYW5nbGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0lNQUdFXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfRklUX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfRklUX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfRklUX0xJTktfTkFNRSc+PGZpbGVuYW1lPktFUk5FTF9GSVRfTElOS19OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBoYXZlIGJlZW4gaW50cm9kdWNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mCisgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW5lZCBpbWFnZSB0cmVlIChGSVQpIGtlcm5lbCBpbWFnZXMgc2ltaWxhciB0byBvdGhlcgorICAgICAgICAgICAgICAgICAgICBkZXBsb3llZCBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NT0RVTEVfVEFSQkFMTF9OQU1FJz48ZmlsZW5hbWU+TU9EVUxFX1RBUkJBTExfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1PRFVMRV9UQVJCQUxMX0xJTktfTkFNRSc+PGZpbGVuYW1lPk1PRFVMRV9UQVJCQUxMX0xJTktfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB2YWx1ZXMgbm8gbG9uZ2VyIGluY2x1ZGUgdGhlICJtb2R1bGUtIiBwcmVmaXggb3IKKyAgICAgICAgICAgICAgICAgICAgIi50Z3oiIHN1ZmZpeC4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgcGFydHMgYXJlIG5vdyBoYXJkY29kZWQgc28gdGhhdCB0aGUgdmFsdWVzIGFyZQorICAgICAgICAgICAgICAgICAgICBjb25zaXN0ZW50IHdpdGggb3RoZXIgYXJ0aWZhY3QgbmFtaW5nIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZGRlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSVRSQU1GU19MSU5LX05BTUUnPjxmaWxlbmFtZT5JTklUUkFNRlNfTElOS19OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNvIHRoYXQgdGhlIHN5bWxpbmsgY2FuIGJlIGNvbnRyb2xsZWQgc2ltaWxhcmx5CisgICAgICAgICAgICAgICAgICAgIHRvIG90aGVyIGFydGlmYWN0IHR5cGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUUkFNRlNfTkFNRSc+PGZpbGVuYW1lPklOSVRSQU1GU19OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIG5vdyB1c2VzCisgICAgICAgICAgICAgICAgICAgICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgIiR7UFZ9LSR7UFJ9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBtYWtlcyBpdCBjb25zaXN0ZW50IHdpdGggb3RoZXIgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtc2VyaWFsLWNvbnNvbGUtZGVwcmVjYXRlZCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEU8L2ZpbGVuYW1lPiBEZXByZWNhdGVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNFUklBTF9DT05TT0xFJz48ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGhhcyBiZWVuIGZ1bmN0aW9uYWxseSByZXBsYWNlZCBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TRVJJQUxfQ09OU09MRVMnPjxmaWxlbmFtZT5TRVJJQUxfQ09OU09MRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGZvciBzb21lIHRpbWUuCisgICAgICAgICAgICBXaXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNiByZWxlYXNlLAorICAgICAgICAgICAgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT4gaGFzIGJlZW4gb2ZmaWNpYWxseSBkZXByZWNhdGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEU8L2ZpbGVuYW1lPiB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgYXMKKyAgICAgICAgICAgIGJlZm9yZSBmb3IgdGhlIDIuNiByZWxlYXNlLgorICAgICAgICAgICAgSG93ZXZlciwgZm9yIHRoZSBzYWtlIG9mIGZ1dHVyZSBjb21wYXRpYmlsaXR5LCBpdCBpcyByZWNvbW1lbmRlZAorICAgICAgICAgICAgdGhhdCB5b3UgcmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mCisgICAgICAgICAgICA8ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEU8L2ZpbGVuYW1lPiB3aXRoCisgICAgICAgICAgICA8ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgb25seSBkaWZmZXJlbmNlIGluIHVzYWdlIGlzIHRoYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEVTPC9maWxlbmFtZT4gZXhwZWN0cyBlbnRyaWVzIHRvIGJlCisgICAgICAgICAgICAgICAgc2VwYXJhdGVkIHVzaW5nIHNlbWljb2xvbnMgYXMgY29tcGFyZWQgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEU8L2ZpbGVuYW1lPiwgd2hpY2ggZXhwZWN0cyBzcGFjZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1wb2t5LXNldHMtdW5rbm93bi1jb25maWd1cmUtb3B0aW9uLXRvLXFhLWVycm9yJz4KKyAgICAgICAgPHRpdGxlPkNvbmZpZ3VyZSBTY3JpcHQgUmVwb3J0cyBVbmtub3duIE9wdGlvbnMgYXMgRXJyb3JzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSBjb25maWd1cmUgc2NyaXB0IHJlcG9ydHMgYW4gdW5rbm93biBvcHRpb24sIHRoaXMgbm93CisgICAgICAgICAgICB0cmlnZ2VycyBhIFFBIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5nLgorICAgICAgICAgICAgQW55IHJlY2lwZXMgdGhhdCBwcmV2aW91c2x5IGdvdCBhd2F5IHdpdGggc3BlY2lmeWluZyBzdWNoIHVua25vd24KKyAgICAgICAgICAgIG9wdGlvbnMgbm93IG5lZWQgdG8gYmUgZml4ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1vdmVycmlkZS1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk92ZXJyaWRlIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRoZSA8ZmlsZW5hbWU+dmlydGNsYXNzLW5hdGl2ZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydGNsYXNzLW5hdGl2ZXNkazwvZmlsZW5hbWU+IE92ZXJyaWRlcyBIYXZlCisgICAgICAgICAgICAgICAgICAgIEJlZW4gUmVtb3ZlZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnZpcnRjbGFzcy1uYXRpdmU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnRjbGFzcy1uYXRpdmVzZGs8L2ZpbGVuYW1lPiBvdmVycmlkZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgMjAxMiBpbiBmYXZvciBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3MtbmF0aXZlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzcy1uYXRpdmVzZGs8L2ZpbGVuYW1lPiwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICBCb3RoIDxmaWxlbmFtZT52aXJ0Y2xhc3MtbmF0aXZlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0Y2xhc3MtbmF0aXZlc2RrPC9maWxlbmFtZT4gYXJlIG5vdyBkcm9wcGVkLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+dmlydGNsYXNzLW11bHRpbGliLTwvZmlsZW5hbWU+IG92ZXJyaWRlcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG11bHRpbGliIGFyZSBzdGlsbCB2YWxpZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UaGUgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBPdmVycmlkZSBOb3cgSGFzIGEgSGlnaGVyIFByaW9yaXR5IFRoYW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiBPdmVycmlkZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5mb3JjZXZhcmlhYmxlPC9maWxlbmFtZT4gb3ZlcnJpZGUgaXMKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRlZCB0byBiZSB0aGUgaGlnaGVzdCBwcmlvcml0eSBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgZHVlIHRvIGEgbG9uZy1zdGFuZGluZyBxdWlyayBvZiBob3cKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU9WRVJSSURFUyc+PGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQsIHRoZSA8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+IG92ZXJyaWRlcyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliYy1nbGliYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliYy1tdXNsPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkgZXJyb25lb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgaGFkIGEgaGlnaGVyIHByaW9yaXR5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGlzc3VlIGlzIG5vdyBjb3JyZWN0ZWQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIGxpa2VseSB0aGlzIGNoYW5nZSB3aWxsIG5vdCBjYXVzZSBhbnkKKyAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHdpdGggc29tZSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHNlZSBhIGNoYW5nZSBpbiBiZWhhdmlvciBpZiB5b3Ugd2VyZQorICAgICAgICAgICAgICAgICAgICByZWx5aW5nIG9uIHRoZSBwcmV2aW91cyBiZWhhdmlvci4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBjaGVjayBob3cgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9yY2V2YXJpYWJsZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliYy0qPC9maWxlbmFtZT4gb3ZlcnJpZGVzIGluIHlvdXIgY3VzdG9tCisgICAgICAgICAgICAgICAgICAgIGxheWVycyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyB0byBlbnN1cmUgdGhleSBtYWtlIHNlbnNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UaGUgPGZpbGVuYW1lPmJ1aWxkLSR7QlVJTERfT1N9PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgSGFzIEJlZW4gUmVtb3ZlZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkLSR7QlVJTERfT1N9PC9maWxlbmFtZT4sIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSA8ZmlsZW5hbWU+YnVpbGQtbGludXg8L2ZpbGVuYW1lPiwgb3ZlcnJpZGUgaGFzCisgICAgICAgICAgICAgICAgICAgIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIGJ1aWxkaW5nIG9uIGEgaG9zdCBvcGVyYXRpbmcgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIG90aGVyIHRoYW4gYSByZWNlbnQgdmVyc2lvbiBvZiBMaW51eCBpcyBuZWl0aGVyIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICBub3IgcmVjb21tZW5kZWQuCisgICAgICAgICAgICAgICAgICAgIERyb3BwaW5nIHRoZSBvdmVycmlkZSBhdm9pZHMgZ2l2aW5nIHRoZSBpbXByZXNzaW9uIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgaG9zdCBvcGVyYXRpbmcgc3lzdGVtcyBtaWdodCBiZSBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlICJfcmVtb3ZlIiBvcGVyYXRvciBub3cgcHJlc2VydmVzIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgd2hlbiBzcGVjaWZ5aW5nIGxpc3QgaXRlbXMgdG8gcmVtb3ZlLCBiZQorICAgICAgICAgICAgICAgICAgICBhd2FyZSB0aGF0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVzdWx0aW5nIGZyb20KKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlbW92YWwgaXMgcmV0YWluZWQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjcmVtb3Zpbmctb3ZlcnJpZGUtc3R5bGUtc3ludGF4Jz5SZW1vdmFsIChPdmVycmlkZSBTdHlsZSBTeW50YXgpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwgZm9yIGEgZGV0YWlsZWQgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LXN5c3RlbWQtY29uZmlndXJhdGlvbi1ub3ctc3BsaXQtb3V0LXRvLXN5c3RlbS1jb25mJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5zeXN0ZW1kPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBpcyBOb3cgU3BsaXQgSW50byA8ZmlsZW5hbWU+c3lzdGVtZC1jb25mPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHJlY2lwZQorICAgICAgICAgICAgaGFzIGJlZW4gbW92ZWQgaW50byBhIDxmaWxlbmFtZT5zeXN0ZW0tY29uZjwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgICAgIE1vdmluZyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBzZXBhcmF0ZSByZWNpcGUgYXZvaWRzIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiByZWNpcGUgZnJvbSBiZWNvbWluZyBtYWNoaW5lLXNwZWNpZmljCisgICAgICAgICAgICBmb3IgY2FzZXMgd2hlcmUgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGFwcGxpZWQKKyAgICAgICAgICAgIChlLmcuIGZvciA8ZmlsZW5hbWU+cWVtdSo8L2ZpbGVuYW1lPiBtYWNoaW5lcykuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlIG5ldyByZWNpcGUgcGFja2FnZXMgdGhlIGZvbGxvd2luZyBmaWxlczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkCisgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mCisgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZgorICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYKKyAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgeW91IHByZXZpb3VzbHkgdXNlZCBiYmFwcGVuZCBmaWxlcyB0byBhcHBlbmQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHJlY2lwZSB0byBjaGFuZ2UgYW55IG9mIHRoZQorICAgICAgICAgICAgbGlzdGVkIGZpbGVzLCB5b3UgbXVzdCBkbyBzbyBmb3IgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZC1jb25mPC9maWxlbmFtZT4gcmVjaXBlIGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1hdXRvbWF0aWMtdGVzdGluZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkF1dG9tYXRpYyBUZXN0aW5nIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IGF1dG9tYXRpYyB0ZXN0aW5nCisgICAgICAgICAgICBjaGFuZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+VEVTVF9JTUFHRTwvZmlsZW5hbWU+IFZhcmlhYmxlIFJlbW92ZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUHJpb3IgdG8gdGhpcyByZWxlYXNlLCB5b3Ugc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9JTUFHRTwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvICIxIiB0bworICAgICAgICAgICAgICAgICAgICBlbmFibGUgYXV0b21hdGljIHRlc3RpbmcgZm9yIHN1Y2Nlc3NmdWxseSBidWlsdCBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+VEVTVF9JTUFHRTwvZmlsZW5hbWU+IHZhcmlhYmxlIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICBleGlzdHMgYW5kIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEVTVElNQUdFX0FVVE8nPjxmaWxlbmFtZT5URVNUSU1BR0VfQVVUTzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5oZXJpdGluZyB0aGUgPGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdHNkazwvZmlsZW5hbWU+IENsYXNzZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQmVzdCBwcmFjdGljZXMgbm93IGRpY3RhdGUgdGhhdCB5b3UgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPklNQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgcmF0aGVyIHRoYW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB3aGVuIHlvdSBpbmhlcml0IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy10ZXN0c2RrJz48ZmlsZW5hbWU+dGVzdHNkazwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzc2VzIHVzZWQgZm9yIGF1dG9tYXRpYyB0ZXN0aW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtb3BlbnNzbC1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk9wZW5TU0wgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5vcGVuc3NsLm9yZy8nPk9wZW5TU0w8L3VsaW5rPiBoYXMgYmVlbgorICAgICAgICAgICAgdXBncmFkZWQgZnJvbSAxLjAgdG8gMS4xLgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB1cGdyYWRlIGNvdWxkIGNhdXNlIHByb2JsZW1zIGZvciByZWNpcGVzIHRoYXQKKyAgICAgICAgICAgIGhhdmUgYm90aCB2ZXJzaW9ucyBpbiB0aGVpciBkZXBlbmRlbmN5IGNoYWlucy4KKyAgICAgICAgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgYm90aCB2ZXJzaW9ucyBjYW5ub3QgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyCisgICAgICAgICAgICBhdCBidWlsZCB0aW1lLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBib3RoIHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IGF0IHJ1bnRpbWUuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1iaXRiYWtlLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+Qml0QmFrZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzZXJ2ZXIgbG9nZmlsZSA8ZmlsZW5hbWU+Yml0YmFrZS1jb29rZXJkYWVtb24ubG9nPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgIG5vdyBhbHdheXMgcGxhY2VkIGluIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LXNlY3VyaXR5LWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+U2VjdXJpdHkgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgUG9reSBkaXN0cmlidXRpb24gbm93IHVzZXMgc2VjdXJpdHkgY29tcGlsZXIgZmxhZ3MgYnkKKyAgICAgICAgICAgIGRlZmF1bHQuCisgICAgICAgICAgICBJbmNsdXNpb24gb2YgdGhlc2UgZmxhZ3MgY291bGQgY2F1c2UgbmV3IGZhaWx1cmVzIGR1ZSB0byBzdHJpY3RlcgorICAgICAgICAgICAgY2hlY2tpbmcgZm9yIHZhcmlvdXMgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlcyBpbiBjb2RlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtcG9zdC1pbnN0YWxsYXRpb24tY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5Qb3N0IEluc3RhbGxhdGlvbiBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBtdXN0IGV4cGxpY2l0bHkgbWFyayBwb3N0IGluc3RhbGxzIHRvIGRlZmVyIHRvIHRoZSB0YXJnZXQuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGRlZmVyIGEgcG9zdGluc3RhbGwgdG8gZmlyc3QgYm9vdCBvbgorICAgICAgICAgICAgdGhlIHRhcmdldCByYXRoZXIgdGhhbiBhdCByb290ZnMgY3JlYXRpb24gdGltZSwgdXNlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0X29udGFyZ2V0KCk8L2ZpbGVuYW1lPiBvciBjYWxsCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPiBmcm9tCisgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEFueSBmYWlsdXJlIG9mIGEgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICAoaW5jbHVkaW5nIGV4aXQgMSkgdHJpZ2dlcnMgYW4gZXJyb3IgZHVyaW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXJvb3Rmcyc+PGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+PC9saW5rPiB0YXNrLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwb3N0LWluc3RhbGxhdGlvbiBiZWhhdmlvciwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I25ldy1yZWNpcGUtcG9zdC1pbnN0YWxsYXRpb24tc2NyaXB0cyc+UG9zdC1JbnN0YWxsYXRpb24gU2NyaXB0czwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1weXRob24tMy1wcm9maWxlLWd1aWRlZC1vcHRpbWl6YXRpb25zJz4KKyAgICAgICAgPHRpdGxlPlB5dGhvbiAzIFByb2ZpbGUtR3VpZGVkIE9wdGltaXphdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnB5dGhvbjM8L2ZpbGVuYW1lPiByZWNpcGUgbm93IGVuYWJsZXMgcHJvZmlsZS1ndWlkZWQKKyAgICAgICAgICAgIG9wdGltaXphdGlvbi4KKyAgICAgICAgICAgIFVzaW5nIHRoaXMgb3B0aW1pemF0aW9uIHJlcXVpcmVzIGEgbGl0dGxlIGV4dHJhIGJ1aWxkIHRpbWUgaW4KKyAgICAgICAgICAgIGV4Y2hhbmdlIGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZSBvbiB0aGUgdGFyZ2V0IGF0IHJ1bnRpbWUuCisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBvcHRpbWl6YXRpb24gaXMgb25seSBlbmFibGVkIGlmIHRoZSBjdXJyZW50CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGhhcyBzdXBwb3J0IGZvciB1c2VyLW1vZGUgZW11bGF0aW9uIGluIFFFTVUgKGkuZS4gInFlbXUtdXNlcm1vZGUiCisgICAgICAgICAgICBpcyBpbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgd2hpY2ggaXQgaXMgYnkgZGVmYXVsdCkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgUHl0aG9uIHByb2ZpbGUtZ3VpZGVkIG9wdGltaXphdGlvbgorICAgICAgICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT4sIHRoZW4gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFQ09ORklHJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgZm9yIHRoZSA8ZmlsZW5hbWU+cHl0aG9uMzwvZmlsZW5hbWU+IHJlY2lwZSBkb2VzIG5vdCBjb250YWluICJwZ28iLgorICAgICAgICAgICAgWW91IGNvdWxkIGFjY29tcGxpc2ggdGhlIGxhdHRlciB1c2luZyB0aGUgZm9sbG93aW5nIGF0IHRoZQorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBsZXZlbDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRUNPTkZJR19yZW1vdmVfcG4tcHl0aG9uMyA9ICJwZ28iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNldAorICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiB1c2luZyBhbiBhcHBlbmQgZmlsZSBmb3IgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uMzwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LW1pc2NlbGxhbmVvdXMtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBtaXNjZWxsYW5lb3VzIGNoYW5nZXMgb2NjdXJyZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB0byB1c2luZyB0aGUgVGh1bWItMiBpbnN0cnVjdGlvbiBzZXQgZm9yIGFybXY3YQorICAgICAgICAgICAgICAgICAgICBhbmQgYWJvdmUuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGFueSBjdXN0b20gcmVjaXBlcyB0aGF0IGJ1aWxkIHNvZnR3YXJlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gYmUgYnVpbHQgd2l0aCB0aGUgQVJNIGluc3RydWN0aW9uIHNldCwgY2hhbmdlIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUgdG8gc2V0IHRoZSBpbnN0cnVjdGlvbiBzZXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW4tcG9zdGluc3RzPC9maWxlbmFtZT4gbm8gbG9uZ2VyIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvKi1wb3N0aW5zdHM8L2ZpbGVuYW1lPiBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRwa2cvb3BrZzwvZmlsZW5hbWU+IGluIGZhdm9yIG9mIGJ1aWx0LWluCisgICAgICAgICAgICAgICAgICAgIHBvc3RpbnN0IHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgIFJQTSBiZWhhdmlvciByZW1haW5zIHVuY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPk5PSVNPPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5OT0hERDwvZmlsZW5hbWU+IHZhcmlhYmxlcyBhcmUgbm8gbG9uZ2VyIHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBub3cgY29udHJvbCBidWlsZGluZyA8ZmlsZW5hbWU+Ki5pc288L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouaGRkaW1nPC9maWxlbmFtZT4gaW1hZ2UgdHlwZXMgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNjcmlwdHMvY29udHJpYi9ta2VmaWRpc2suc2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIFdpYy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLW1vZHVsZXM8L2ZpbGVuYW1lPiBoYXMgYmVlbiByZW1vdmVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIDxmaWxlbmFtZT5xZW11bWlwczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdW1pcHM2NDwvZmlsZW5hbWU+IG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICBSZW1vdmFsIGFsc28gaW1wYWN0cyB0aGUgPGZpbGVuYW1lPng4Ni1iYXNlLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdlbmVyaWN4ODY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZW5lcmljeDg2LTY0PC9maWxlbmFtZT4gcmV0YWluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLW1vZHVsZXM8L2ZpbGVuYW1lPiBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT4gdmFyaWFibGUgc2V0dGluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TEdQTHYyX1dISVRFTElTVF9HUEwtMy4wPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBzZXR0aW5nIHRoaXMgdmFyaWFibGUgaW4geW91ciBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICBzZXQgb3IgYXBwZW5kIGl0IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V0hJVEVMSVNUX0dQTC0zLjA8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbnN0ZWFkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0FTTkVFREVEfTwvZmlsZW5hbWU+IGlzIG5vdyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9MREZMQUdTJz48ZmlsZW5hbWU+VEFSR0VUX0xERkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGlyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZW1haW5pbmcgZGVmaW5pdGlvbnMgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gbW92ZWQgdG8gY29ycmVzcG9uZGluZyByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIERTQSBob3N0IGtleXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuU1NIIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgc3RpbGwgdXNpbmcgRFNBIGtleXMsIHlvdSBtdXN0IHN3aXRjaCBvdmVyIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBzZWN1cmUgYWxnb3JpdGhtIGFzIHJlY29tbWVuZGVkIGJ5IE9wZW5TU0ggdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kaGNwPC9maWxlbmFtZT4gcmVjaXBlIG5vdyB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGhjcGQ2LmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRoY3BkNi5zZXJ2aWNlPC9maWxlbmFtZT4gZm9yIElQdjYgREhDUCByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhbiByZS11c2luZyA8ZmlsZW5hbWU+ZGhjcGQuY29uZjwvZmlsZW5hbWU+LCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICBub3cgcmVzZXJ2ZWQgZm9yIElQdjQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMi43LXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMi43IFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAyLjcgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi43LWJpdGJha2UtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5CaXRCYWtlIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIEJpdEJha2U6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBub3cgY2hlY2tzIGFub255bW91cyBQeXRob24gZnVuY3Rpb25zIGFuZCBwdXJlCisgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBmdW5jdGlvbnMgKGUuZy4gPGZpbGVuYW1lPmRlZiBmdW5jbmFtZTo8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1ldGFkYXRhIGZvciB0YWIgaW5kZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIElmIGZvdW5kLCBCaXRCYWtlICBwcm9kdWNlcyBhIHdhcm5pbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0YmFrZSBub3cgY2hlY2tzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQkZJTEVfQ09MTEVDVElPTlMnPjxmaWxlbmFtZT5CQkZJTEVfQ09MTEVDVElPTlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCB0cmlnZ2VycyBhbiBlcnJvciBpZiBhbnkgYXJlCisgICAgICAgICAgICAgICAgICAgIGZvdW5kLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctZWNsaXBzZS1zdXBwb3J0LWRyb3BwZWQnPgorICAgICAgICA8dGl0bGU+PHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gU3VwcG9ydCBSZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFN1cHBvcnQgZm9yIHRoZSBFY2xpcHNlIElERSBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgU3VwcG9ydCBjb250aW51ZXMgZm9yIHRob3NlIHJlbGVhc2VzIHByaW9yIHRvIDIuNyB0aGF0IGRpZCBpbmNsdWRlCisgICAgICAgICAgICBzdXBwb3J0LgorICAgICAgICAgICAgVGhlIDIuNyByZWxlYXNlIGRvZXMgbm90IGluY2x1ZGUgdGhlIEVjbGlwc2UgWW9jdG8gcGx1Z2luLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctcWVtdS1uYXRpdmUtc3BsaXRzLXN5c3RlbS1hbmQtdXNlci1tb2RlLXBhcnRzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5xZW11LW5hdGl2ZTwvZmlsZW5hbWU+IFNwbGl0cyB0aGUgU3lzdGVtIGFuZCBVc2VyLU1vZGUgUGFydHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHN5c3RlbSBhbmQgdXNlci1tb2RlIHBhcnRzIG9mIDxmaWxlbmFtZT5xZW11LW5hdGl2ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBhcmUgbm93IHNwbGl0LgorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXUtbmF0aXZlPC9maWxlbmFtZT4gcHJvdmlkZXMgdGhlIHVzZXItbW9kZSBjb21wb25lbnRzCisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXUtc3lzdGVtLW5hdGl2ZTwvZmlsZW5hbWU+IHByb3ZpZGVzIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgIGNvbXBvbmVudHMuCisgICAgICAgICAgICBJZiB5b3UgaGF2ZSByZWNpcGVzIHRoYXQgZGVwZW5kIG9uIFFFTVUncyBzeXN0ZW0gZW11bGF0aW9uCisgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGF0IGJ1aWxkIHRpbWUsIHRoZXkgc2hvdWxkIG5vdyBkZXBlbmQgdXBvbgorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXUtc3lzdGVtLW5hdGl2ZTwvZmlsZW5hbWU+IGluc3RlYWQgb2YKKyAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11LW5hdGl2ZTwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctdXBzdHJlYW0tdHJhY2tpbmcuaW5jLXJlbW92ZWQnPgorICAgICAgICA8dGl0bGU+VGhlIDxmaWxlbmFtZT51cHN0cmVhbS10cmFja2luZy5pbmM8L2ZpbGVuYW1lPiBGaWxlIEhhcyBCZWVuIFJlbW92ZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHByZXZpb3VzbHkgZGVwcmVjYXRlZCA8ZmlsZW5hbWU+dXBzdHJlYW0tdHJhY2tpbmcuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZpbGUgaXMgbm93IHJlbW92ZWQuCisgICAgICAgICAgICBBbnkgPGZpbGVuYW1lPlVQU1RSRUFNX1RSQUNLSU5HKjwvZmlsZW5hbWU+IHZhcmlhYmxlcyBhcmUgbm93IHNldAorICAgICAgICAgICAgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcmVjaXBlcyBpbnN0ZWFkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZW1vdmUgYW55IHJlZmVyZW5jZXMgeW91IGhhdmUgdG8gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+dXBzdHJlYW0tdHJhY2tpbmcuaW5jPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctZGlzdHJvLWZlYXR1cmVzLWxpYmMtcmVtb3ZlZCc+CisgICAgICAgIDx0aXRsZT5UaGUgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19MSUJDPC9maWxlbmFtZT4gVmFyaWFibGUgSGFzIEJlZW4gUmVtb3ZlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19MSUJDPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgbm8KKyAgICAgICAgICAgIGxvbmdlciB1c2VkLgorICAgICAgICAgICAgVGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGdsaWJjIHVzaW5nIGtjb25maWcgaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgZm9yIHF1aXRlIHNvbWUgdGltZSBtYWtpbmcgdGhlIDxmaWxlbmFtZT5saWJjLSo8L2ZpbGVuYW1lPiBmZWF0dXJlcworICAgICAgICAgICAgc2V0IG5vIGxvbmdlciBlZmZlY3RpdmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJlbW92ZSBhbnkgcmVmZXJlbmNlcyB5b3UgaGF2ZSB0bworICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19MSUJDPC9maWxlbmFtZT4gaW4geW91ciBvd24gbGF5ZXJzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctbGljZW5zZS12YWx1ZXMnPgorICAgICAgICA8dGl0bGU+TGljZW5zZSBWYWx1ZSBDb3JyZWN0aW9uczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvcnJlY3Rpb25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YWx1ZXMgc2V0IGJ5IHJlY2lwZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxlbXBoYXNpcz5zb2NhdDwvZW1waGFzaXM+OiBDb3JyZWN0ZWQgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiB0byBiZSAiR1BMdjIiIHJhdGhlciB0aGFuCisgICAgICAgICJHUEx2MisiLgorCisgICAgIDxlbXBoYXNpcz5saWJnZm9ydHJhbjwvZW1waGFzaXM+OiBTZXQgbGljZW5zZSB0byAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24iLgorCisgICAgIDxlbXBoYXNpcz5lbGZ1dGlsczwvZW1waGFzaXM+OiBSZW1vdmVkICJFbGZ1dGlscy1FeGNlcHRpb24iIGFuZCBzZXQgdG8gIkdQTHYyIiBmb3Igc2hhcmVkCisgICAgICAgIGxpYnJhcmllcworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctcGFja2FnaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnaW5nIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBjaGFuZ2VzLgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5kPC9maWxlbmFtZT46IFRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bnN1cGRhdGU8L2ZpbGVuYW1lPiBiaW5hcnkgaGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5iaW5kLXV0aWxzPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZWJ1ZyBzcGxpdDogVGhlIGRlZmF1bHQgZGVidWcgc3BsaXQgaGFzIGJlZW4gY2hhbmdlZCB0bworICAgICAgICAgICAgICAgICAgICBjcmVhdGUgc2VwYXJhdGUgc291cmNlIHBhY2thZ2VzIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5wYWNrYWdlX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5wYWNrYWdlX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tc3JjPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGN1cnJlbnRseSB1c2luZyA8ZmlsZW5hbWU+ZGJnLXBrZ3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byBicmluZyBpbiBkZWJ1ZyBzeW1ib2xzIGFuZCB5b3Ugc3RpbGwgbmVlZCB0aGUgc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3Qgbm93IGFsc28gYWRkIDxmaWxlbmFtZT5zcmMtcGtnczwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBTb3VyY2UgcGFja2FnZXMgcmVtYWluIGluIHRoZSB0YXJnZXQgcG9ydGlvbiBvZiB0aGUgU0RLCisgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQsIHVubGVzcyB5b3UgaGF2ZSBzZXQgeW91ciBvd24gdmFsdWUgZm9yCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtJTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPlNES0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRoYXQgZG9lcyBub3QgaW5jbHVkZSA8ZmlsZW5hbWU+c3JjLXBrZ3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBNb3VudCBhbGwgdXNpbmcgPGZpbGVuYW1lPnV0aWwtbGludXg8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZGVmYXVsdC9tb3VudGFsbDwvZmlsZW5hbWU+IGhhcworICAgICAgICAgICAgICAgICAgICBtb3ZlZCBpbnRvIHRoZSAtbW91bnQgc3ViLXBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BsaXR0aW5nIGJpbmFyaWVzIHVzaW5nIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4gbm93IHNwbGl0cyBlYWNoIGJpbmFyeSBpbnRvCisgICAgICAgICAgICAgICAgICAgIGl0cyBvd24gcGFja2FnZSBmb3IgZmluZS1ncmFpbmVkIGNvbnRyb2wuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4gcGFja2FnZSBwdWxscyBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgaW5kaXZpZHVhbCBiaW5hcnkgcGFja2FnZXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIEFzIGEgcmVzdWx0LCBleGlzdGluZyBpbWFnZXMgc2hvdWxkIG5vdCBzZWUgYW55IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgYXNzdW1pbmcKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU5PX1JFQ09NTUVOREFUSU9OUyc+PGZpbGVuYW1lPk5PX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc2V0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uZXRiYXNlL2Jhc2UtZmlsZXM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvaG9zdHM8L2ZpbGVuYW1lPiBoYXMgbW92ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmV0YmFzZTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnR6ZGF0YTwvZmlsZW5hbWU+OiBUaGUgbWFpbiBwYWNrYWdlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCB0byBhbiBlbXB0eSBtZXRhIHBhY2thZ2UgdGhhdCBwdWxscyBpbiBhbGwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnR6ZGF0YTwvZmlsZW5hbWU+IHBhY2thZ2VzIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxyenN6PC9maWxlbmFtZT46IFRoaXMgcGFja2FnZSBoYXMgYmVlbiByZW1vdmVkCisgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1zZWxmLWhvc3RlZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFgvWS9aTW9kZW0gc3VwcG9ydCBpcyBsZXNzIGxpa2VseSB0byBiZSBuZWVkZWQgb24KKyAgICAgICAgICAgICAgICAgICAgbW9kZXJuIHN5c3RlbXMuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcmVseWluZyBvbiB0aGVzZSBwYWNrYWdlZ3JvdXBzIHRvIGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5scnpzejwvZmlsZW5hbWU+IHBhY2thZ2UgaW4geW91ciBpbWFnZSwgeW91CisgICAgICAgICAgICAgICAgICAgIG5vdyBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxlbXBoYXNpcz5nY2M8L2VtcGhhc2lzPjogRHJvcCB2ZXJzaW9uIDcuMyByZWNpcGVzLiBWZXJzaW9uIDguMyBub3cgcmVtYWlucy4KKworICAgICA8ZW1waGFzaXM+bGludXgteW9jdG88L2VtcGhhc2lzPjogRHJvcCB2ZXJzaW9ucyA0LjE0IGFuZCA0LjE4IHJlY2lwZXMuIFZlcnNpb25zIDQuMTkgYW5kIDUuMCByZW1haW4uCisKKyAgICAgPGVtcGhhc2lzPmdvPC9lbXBoYXNpcz46IERyb3AgdmVyc2lvbiAxLjkgcmVjaXBlcy4gVmVyc2lvbnMgMS4xMSBhbmQgMS4xMiByZW1haW4uCisKKyAgICAgPGVtcGhhc2lzPnh2aWRlby10ZXN0czwvZW1waGFzaXM+OiBCZWNhbWUgb2Jzb2xldGUuCisKKyAgICAgPGVtcGhhc2lzPmxpYmFydC1sZ3BsPC9lbXBoYXNpcz46IEJlY2FtZSBvYnNvbGV0ZS4KKworICAgICA8ZW1waGFzaXM+Z3RrLWljb24tdXRpbHMtbmF0aXZlPC9lbXBoYXNpcz46IFRoZXNlIHRvb2xzIGFyZSBub3cgcHJvdmlkZWQgYnkgZ3RrKzMtbmF0aXZlCisKKyAgICAgPGVtcGhhc2lzPmdjYy1jcm9zcy1pbml0aWFsPC9lbXBoYXNpcz46IE5vIGxvbmdlciBuZWVkZWQuIGdjYy1jcm9zcy9nY2MtY3Jvc3NzZGsgaXMgbm93IHVzZWQgaW5zdGVhZC4KKworICAgICA8ZW1waGFzaXM+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2VtcGhhc2lzPjogTm8gbG9uZ2VyIG5lZWRlZC4gZ2NjLWNyb3NzL2djYy1jcm9zc3NkayBpcyBub3cgdXNlZCBpbnN0ZWFkLgorCisgICAgIDxlbXBoYXNpcz5nbGliYy1pbml0aWFsPC9lbXBoYXNpcz46IFJlbW92ZWQgYmVjYXVzZSB0aGUgYmVuZWZpdHMgb2YgaGF2aW5nIGl0IGZvciBzaXRlX2NvbmZpZyBhcmUKKyAgICAgICAgY3VycmVudGx5IG91dHdlaWdoZWQgYnkgdGhlIGNvc3Qgb2YgYnVpbGRpbmcgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNy1yZW1vdmVkLWNsYXNzZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBDbGFzc2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPGVtcGhhc2lzPmRpc3R1dGlscy10b29sczwvZW1waGFzaXM+OiBUaGlzIGNsYXNzIHdhcyBuZXZlciB1c2VkLgorCisgICAgIDxlbXBoYXNpcz5idWd6aWxsYS5iYmNsYXNzPC9lbXBoYXNpcz46IEJlY2FtZSBvYnNvbGV0ZS4KKworICAgICA8ZW1waGFzaXM+ZGlzdHJvZGF0YTwvZW1waGFzaXM+OiBUaGlzIGZ1bmN0aW9uYWxseSBoYXMgYmVlbiByZXBsYWNlZCBieSBhIG1vcmUgbW9kZXJuCisgICAgICAgICB0aW5mb2lsLWJhc2VkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjctbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIG1pc2NlbGxhbmVvdXMgY2hhbmdlcyBvY2N1cnJlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRpc3RybzwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSBvZiB0aGUgUG9reQorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgdG9wLWxldmVsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBlcmwgbm93IGJ1aWxkcyBmb3IgdGhlIHRhcmdldCB1c2luZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYXJzdi5naXRodWIuaW8vcGVybC1jcm9zcy8nPjxmaWxlbmFtZT5wZXJsLWNyb3NzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgYmV0dGVyIG1haW50YWluYWJpbGl0eSBhbmQgaW1wcm92ZWQgYnVpbGQgcGVyZm9ybWFuY2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2hhbmdlIHNob3VsZCBub3QgcHJlc2VudCBhbnkgcHJvYmxlbXMgdW5sZXNzIHlvdSBoYXZlCisgICAgICAgICAgICAgICAgICAgIGhlYXZpbHkgY3VzdG9taXplZCB5b3VyIFBlcmwgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm0tdHVuZXM8L2ZpbGVuYW1lPjogUmVtb3ZlZCB0aGUgIi1tYXJjaCIKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGlmIG1jcHUgaXMgYWxyZWFkeSBhZGRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlczwvZmlsZW5hbWU+OiBDb252ZXJ0IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgcmVuYW1lcyB0bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTJz48ZmlsZW5hbWU+UEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2UvcGl4YnVmY2FjaGU8L2ZpbGVuYW1lPjogT2Jzb2xldGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZWNvbXBsZXRpb25zPC9maWxlbmFtZT4gY29kZSBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLW5hdGl2ZSc+PGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxpbmcgaGFzIGJlZW4gZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5ldHV0aWxzPC9maWxlbmFtZT46IFRoaXMgcmVjaXBlIGhhcyByc2gKKyAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMy4wLXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4wLWluaXQtc3lzdGVtLXNlbGVjdGlvbic+CisgICAgICAgIDx0aXRsZT5Jbml0IFN5c3RlbSBTZWxlY3Rpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ2hhbmdpbmcgdGhlIGluaXQgc3lzdGVtIG1hbmFnZXIgcHJldmlvdXNseSByZXF1aXJlZCBzZXR0aW5nIGEKKyAgICAgICAgICAgIG51bWJlciBvZiBkaWZmZXJlbnQgdmFyaWFibGVzLgorICAgICAgICAgICAgWW91IGNhbiBub3cgY2hhbmdlIHRoZSBtYW5hZ2VyIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVF9NQU5BR0VSPC9maWxlbmFtZT4gdmFyaWFibGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICBpbmNsdWRlIGZpbGVzCisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vaW5jbHVkZS9pbml0LW1hbmFnZXItKi5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgSW5jbHVkZSBmaWxlcyBhcmUgcHJvdmlkZWQgZm9yIGZvdXIgdmFsdWVzOiAibm9uZSIsICJzeXN2aW5pdCIsCisgICAgICAgICAgICAic3lzdGVtZCIsIGFuZCAibWRldi1idXN5Ym94Ii4KKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlLCAibm9uZSIsIGZvciA8ZmlsZW5hbWU+SU5JVF9NQU5BR0VSPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHNob3VsZCBhbGxvdyB5b3VyIGN1cnJlbnQgc2V0dGluZ3MgdG8gY29udGludWUgd29ya2luZy4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGFkdmlzYWJsZSB0byBleHBsaWNpdGx5IHNldAorICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRfTUFOQUdFUjwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjAtbHNiLXN1cHBvcnQtcmVtb3ZlZCc+CisgICAgICAgIDx0aXRsZT5MU0IgU3VwcG9ydCBSZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIExpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikgYXMgYSBzdGFuZGFyZCBpcyBub3QgY3VycmVudCwgYW5kCisgICAgICAgICAgICBpcyBub3Qgd2VsbCBzdWl0ZWQgZm9yIGVtYmVkZGVkIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgIFN1cHBvcnQgY2FuIGJlIGNvbnRpbnVlZCBpbiBhIHNlcGFyYXRlIGxheWVyIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHByZXNlbnRseSBMU0Igc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvcmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIGEgcmVzdWx0IG9mIHRoaXMgY2hhbmdlLCB0aGUgPGZpbGVuYW1lPnBva3ktbHNiPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRlcml2YXRpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgYWxzbyB1c2VkIGZvcgorICAgICAgICAgICAgdGVzdGluZyBhbHRlcm5hdGl2ZSBjb25maWd1cmF0aW9ucyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LWFsdGNmZzwvZmlsZW5hbWU+IGRpc3RyaWJ1dGlvbiB0aGF0IGhhcyBMU0IKKyAgICAgICAgICAgIHBhcnRzIHJlbW92ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMC1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1sc2ItZGV2PC9maWxlbmFtZT46IFBhcnQgb2YgcmVtb3ZlZAorICAgICAgICAgICAgICAgICAgICBMU0Igc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1sc2I8L2ZpbGVuYW1lPjogUGFydCBvZiByZW1vdmVkCisgICAgICAgICAgICAgICAgICAgIExTQiBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLWxzYi1zZGs8L2ZpbGVuYW1lPjogUGFydCBvZiByZW1vdmVkCisgICAgICAgICAgICAgICAgICAgIExTQiBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jdmUtY2hlY2stdG9vbDwvZmlsZW5hbWU+OiBGdW5jdGlvbmFsbHkgcmVwbGFjZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlIDxmaWxlbmFtZT5jdmUtdXBkYXRlLWRiPC9maWxlbmFtZT4gcmVjaXBlIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3ZlLWNoZWNrPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVnbGluZm88L2ZpbGVuYW1lPjogTm8gbG9uZ2VyIG1haW50YWluZWQuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lZ2xpbmZvPC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVzYS1kZW1vczwvZmlsZW5hbWU+IGlzIGFuIGFkZXF1YXRlIGFuZAorICAgICAgICAgICAgICAgICAgICBtYWludGFpbmVkIGFsdGVybmF0aXZlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtOC4zPC9maWxlbmFtZT46IFZlcnNpb24gOC4zIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VkIGJ5IDkuMi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z25vbWUtdGhlbWVzLXN0YW5kYXJkPC9maWxlbmFtZT46IE9ubHkgbmVlZGVkCisgICAgICAgICAgICAgICAgICAgIGJ5IGd0aysgMi54LCB3aGljaCBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ndGsrPC9maWxlbmFtZT46IEdUSysgMiBpcyBvYnNvbGV0ZSBhbmQgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgZ3RrKzMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlyZGEtdXRpbHM8L2ZpbGVuYW1lPjogSGFzIGJlY29tZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgSXJEQSBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgTGludXgga2VybmVsIGluCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gNC4xNyBhbmQgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYm5ld3QtcHl0aG9uPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJuZXd0PC9maWxlbmFtZT4gUHl0aG9uIHN1cHBvcnQgbWVyZ2VkIGludG8KKyAgICAgICAgICAgICAgICAgICAgbWFpbiA8ZmlsZW5hbWU+bGlibmV3dDwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlic2RsPC9maWxlbmFtZT46IFJlcGxhY2VkIGJ5IG5ld2VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJzZGwyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYngxMS1kaWV0PC9maWxlbmFtZT46IEJlY2FtZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlieHg4NmRnYTwvZmlsZW5hbWU+OiBSZW1vdmVkIG9ic29sZXRlIGNsaWVudAorICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ4eDg2bWlzYzwvZmlsZW5hbWU+OiBSZW1vdmVkLiBMaWJyYXJ5IGlzCisgICAgICAgICAgICAgICAgICAgIHJlZHVuZGFudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPjogVmVyc2lvbiA1LjAgcmVtb3ZlZCwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgbm93IHJlZHVuZGFudCAoNS4yIC8gNC4xOSBwcmVzZW50KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bHNiaW5pdHNjcmlwdHM8L2ZpbGVuYW1lPjogUGFydCBvZiByZW1vdmVkIExTQgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sc2I8L2ZpbGVuYW1lPjogUGFydCBvZiByZW1vdmVkIExTQiBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sc2J0ZXN0PC9maWxlbmFtZT46IFBhcnQgb2YgcmVtb3ZlZCBMU0Igc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3BlbnNzbDEwPC9maWxlbmFtZT46IFJlcGxhY2VkIGJ5IG5ld2VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcGVuc3NsPC9maWxlbmFtZT4gdmVyc2lvbiAxLjEuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWxzYjwvZmlsZW5hbWU+OiBQYXJ0IG9mIHJlbW92ZWQKKyAgICAgICAgICAgICAgICAgICAgTFNCIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbi1ub3NlPC9maWxlbmFtZT46IFJlbW92ZWQgdGhlIFB5dGhvbiAyLngKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5weXRob24tbnVtcHk8L2ZpbGVuYW1lPjogUmVtb3ZlZCB0aGUgUHl0aG9uIDIueAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbi1zY29uczwvZmlsZW5hbWU+OiBSZW1vdmVkIHRoZSBQeXRob24gMi54CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c291cmNlLWhpZ2hsaWdodDwvZmlsZW5hbWU+OiBObyBsb25nZXIgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdHJlc3M8L2ZpbGVuYW1lPjogUmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0cmVzcy1uZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52dWxrYW48L2ZpbGVuYW1lPjogU3BsaXQgaW50bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dnVsa2FuLWxvYWRlcjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dnVsa2FuLWhlYWRlcnM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52dWxrYW4tdG9vbHM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2VzdG9uLWNvbmY8L2ZpbGVuYW1lPjogRnVuY3Rpb25hbGl0eSBtb3ZlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2VzdG9uLWluaXQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4wLXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcGFja2FnaW5nIGNoYW5nZXMgaGF2ZSBvY2N1cnJlZC4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR05PTUVfV2ViJz5FcGlwaGFueTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIgaGFzIGJlZW4gZHJvcHBlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQ8L2ZpbGVuYW1lPiBhcyBpdCBoYXMKKyAgICAgICAgICAgICAgICAgICAgbm90IGJlZW4gbmVlZGVkIGluc2lkZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQtYXBwbGlhbmNlLWltYWdlPC9maWxlbmFtZT4gZm9yCisgICAgICAgICAgICAgICAgICAgIHF1aXRlIHNvbWUgdGltZSBhbmQgd2FzIGNhdXNpbmcgcmVzb3VyY2UgcHJvYmxlbXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmNhcC1uZzwvZmlsZW5hbWU+IFB5dGhvbiBzdXBwb3J0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIG1vdmVkIHRvIGEgc2VwYXJhdGUgPGZpbGVuYW1lPmxpYmNhcC1uZy1weXRob248L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGUgdG8gc3RyZWFtbGluZSB0aGUgYnVpbGQgcHJvY2VzcyB3aGVuIHRoZSBQeXRob24KKyAgICAgICAgICAgICAgICAgICAgYmluZGluZ3MgYXJlIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmRybTwvZmlsZW5hbWU+IG5vdyBwYWNrYWdlcyB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YW1kZ3B1LmlkczwvZmlsZW5hbWU+IGludG8gYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliZHJtLWFtZGdwdTwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjM8L2ZpbGVuYW1lPjogVGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5weTwvZmlsZW5hbWU+IG1vZHVsZSBpcyBub3cgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5weXRob24zLWNvcmU8L2ZpbGVuYW1lPiBwYWNrYWdlIGFzIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhlIGNvbW1vbiAicHl0aG9uMyAtbSIgY29tbWFuZCB1c2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdGNjPC9maWxlbmFtZT4gbm93IHByb3ZpZGVzIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2MtY2xpZW50PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2Mtc2VydmVyPC9maWxlbmFtZT4gcGFja2FnZXMgYXMgdHlwaWNhbGx5CisgICAgICAgICAgICAgICAgICAgIG9uZSBvciB0aGUgb3RoZXIgYXJlIG5lZWRlZCwgcmF0aGVyIHRoYW4gYm90aC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uKi1zZXR1cHRvb2xzPC9maWxlbmFtZT4gcmVjaXBlcyBub3cKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseSBwYWNrYWdlIHRoZSA8ZmlsZW5hbWU+cGtnX3Jlc291cmNlczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZSBpbiBhIDxmaWxlbmFtZT5weXRob24tcGtnLXJlc291cmNlczwvZmlsZW5hbWU+IC8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtcGtnLXJlc291cmNlczwvZmlsZW5hbWU+IHBhY2thZ2UgYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIG1vZHVsZSBpcyB1c2VmdWwgaW5kZXBlbmRlbnQgb2YgdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHNldHVwdG9vbHMgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gPGZpbGVuYW1lPnB5dGhvbi1zZXR1cHRvb2xzPC9maWxlbmFtZT4gLworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uMy1zZXR1cHRvb2xzPC9maWxlbmFtZT4gcGFja2FnZSBkZXBlbmRzCisgICAgICAgICAgICAgICAgICAgIG9uIHRoaXMgbmV3IHBhY2thZ2Ugc28geW91IHNob3VsZCBvbmx5IG5lZWQgdG8gdXBkYXRlCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyB1bmxlc3MgeW91IHdhbnQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGluY3JlYXNlZCBncmFudWxhcml0eS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4wLWN2ZS1jaGVja2luZyc+CisgICAgICAgIDx0aXRsZT5DVkUgQ2hlY2tpbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZpbGVuYW1lPmN2ZS1jaGVjay10b29sPC9maWxlbmFtZT4gaGFzIGJlZW4gZnVuY3Rpb25hbGx5IHJlcGxhY2VkCisgICAgICAgICAgICBieSBhIG5ldyA8ZmlsZW5hbWU+Y3ZlLXVwZGF0ZS1kYjwvZmlsZW5hbWU+IHJlY2lwZSBhbmQKKyAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgYnVpbHQgaW50byB0aGUgPGZpbGVuYW1lPmN2ZS1jaGVjazwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICAgICAgVGhlIHJlc3VsdCB1c2VzIE5WRCBKU09OIGRhdGEgZmVlZHMgcmF0aGVyIHRoYW4gdGhlIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgIFhNTCBmZWVkcyB0aGF0IDxmaWxlbmFtZT5jdmUtY2hlY2stdG9vbDwvZmlsZW5hbWU+IHdhcyB1c2luZywKKyAgICAgICAgICAgIHN1cHBvcnRzIENWU1N2MyBzY29yaW5nLCBhbmQgbWFrZXMgb3RoZXIgaW1wcm92ZW1lbnRzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+Q1ZFX0NIRUNLX0NWRV9XSElURUxJU1Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdmFyaWFibGUgaGFzIGJlZW4gcmVwbGFjZWQgYnkKKyAgICAgICAgICAgIDxmaWxlbmFtZT5DVkVfQ0hFQ0tfV0hJVEVMSVNUPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMC1iaXRiYWtlLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+Qml0YmFrZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgQml0QmFrZSBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQuCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFkZHRhc2s8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIG5vdyBwcm9wZXJseQorICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZSBkZXBlbmRlbnQgdGFza3MuCisgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHksIGFuIGludmFsaWQgdGFzayB3YXMgc2lsZW50bHkgaWdub3JlZC4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIGNoYW5nZSwgdGhlIGludmFsaWQgdGFzayBnZW5lcmF0ZXMgYSB3YXJuaW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE90aGVyIGludmFsaWQgPGZpbGVuYW1lPmFkZHRhc2s8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlbHRhc2s8L2ZpbGVuYW1lPiB1c2FnZXMgbm93IHRyaWdnZXIgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M6ICJtdWx0aXBsZSB0YXJnZXQgdGFza3MgYXJndW1lbnRzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgYWRkdGFzayAvIGRlbHRhc2siLCBhbmQgIm11bHRpcGxlIGJlZm9yZS9hZnRlciBjbGF1c2VzIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgIm11bHRpY29uZmlnIiBwcmVmaXggaXMgbm93IHNob3J0ZW5lZCB0byAibWMiLgorICAgICAgICAgICAgICAgICAgICAibXVsdGljb25maWciIHdpbGwgY29udGludWUgdG8gd29yaywgaG93ZXZlciBpdCBtYXkgYmUKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZSAtZzwvZmlsZW5hbWU+IGNvbW1hbmQgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlcyBhIDxmaWxlbmFtZT5yZWNpcGUtZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBjb250ZW50cyAoaS5lLiBhIHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPikgd2VyZSBjb25mdXNpbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYi5idWlsZC5GdW5jRmFpbGVkPC9maWxlbmFtZT4gZXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IHJhaXNlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuZXhlY19mdW5jKCk8L2ZpbGVuYW1lPiB3aGVuIGNlcnRhaW4KKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgZXhjZXB0aW9ucyBoYXZlIG9jY3VycmVkLCBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVhbCB1bmRlcmx5aW5nIGV4Y2VwdGlvbnMgd2lsbCBiZSByYWlzZWQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY2FsbHMgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLmV4ZWNfZnVuYygpPC9maWxlbmFtZT4gaW4gY3VzdG9tIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnRpbmZvaWwtdXNpbmc8L2ZpbGVuYW1lPiBzY3JpcHRzLCBhbnkKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byA8ZmlsZW5hbWU+YmIuYnVpbGQuRnVuY0ZhaWxlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBjbGVhbmVkIHVwLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5idWlsZC5leGVjX2Z1bmMoKTwvZmlsZW5hbWU+IG5vIGxvbmdlciBhY2NlcHRzCisgICAgICAgICAgICAgICAgICAgIHRoZSAicHl0aG9uZXhjZXB0aW9uIiBwYXJhbWV0ZXIuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBub3cgYWx3YXlzIHJhaXNlcyBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBSZW1vdmUgdGhpcyBhcmd1bWVudCBpbiBhbnkgY2FsbHMgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiLmJ1aWxkLmV4ZWNfZnVuYygpPC9maWxlbmFtZT4gaW4gY3VzdG9tIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAgICAgb3Igc2NyaXB0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItYmItQkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMic+PGZpbGVuYW1lPkJCX1NFVFNDRU5FX1ZFUklGWV9GVU5DVElPTjI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIG5vIGxvbmdlciB1c2VkLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB5b3UgaGF2ZSBhbnkgcmVmZXJlbmNlcyB0byBpdCwKKyAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlJ1blF1ZXVlRXhlY3V0ZVNjZW5lcXVldWU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJ1blF1ZXVlRXhlY3V0ZVRhc2tzPC9maWxlbmFtZT4gZXZlbnRzIGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkIHNpbmNlIHNldHNjZW5lIHRhc2tzIGFyZSBub3cgZXhlY3V0ZWQgYXMgcGFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgbm9ybWFsIHJ1bnF1ZXVlLgorICAgICAgICAgICAgICAgICAgICBBbnkgZXZlbnQgaGFuZGxpbmcgY29kZSBpbiBjdXN0b20gY2xhc3NlcyBvciBzY3JpcHRzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlcyB0aGVzZSB0d28gZXZlbnRzIG5lZWQgdG8gYmUgdXBkYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbnMgdXNlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLWJiLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGZpbGVuYW1lPkJCX0hBU0hDSEVDS19GVU5DVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIHlvdXIgb3duIGN1c3RvbSBoYXNoIGNoZWNrIGZ1bmN0aW9uLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9jb21taXQvP2lkPTQwYTVlMTkzYzRiYTQ1YzkyOGZjY2Q4OTk0MTVlYTU2YjU0MTc3MjUnPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRhc2sgc3BlY2lmaWNhdGlvbnMgaW4gPGZpbGVuYW1lPkJCX1RBU0tERVBEQVRBPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIGNsYXNzIGltcGxlbWVudGF0aW9ucyB1c2VkIGluIHNpZ25hdHVyZSBnZW5lcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NlcyBub3cgdXNlICImbHQ7Zm4mZ3Q7OiZsdDt0YXNrJmd0OyIgZXZlcnl3aGVyZSByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICB0aGUgIi4iIGRlbGltaXRlciB0aGF0IHdhcyBiZWluZyB1c2VkIGluIHNvbWUgcGxhY2VzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBpdCBjb25zaXN0ZW50IHdpdGggYWxsIGFyZWFzIGluIHRoZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBDdXN0b20gc2lnbmF0dXJlIGdlbmVyYXRvciBjbGFzc2VzIGFuZCBjb2RlIHRoYXQgcmVhZHMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX1RBU0tERVBEQVRBPC9maWxlbmFtZT4gbmVlZCB0byBiZSB1cGRhdGVkIHRvCisgICAgICAgICAgICAgICAgICAgIHVzZSAnOicgYXMgYSBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gJy4nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjAtc2FuaXR5LWNoZWNrcyc+CisgICAgICAgIDx0aXRsZT5TYW5pdHkgQ2hlY2tzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc2FuaXR5IGNoZWNrIGNoYW5nZXMgb2NjdXJyZWQuCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIG5vdyBjaGVja2VkIGZvciB1c2FnZSBvZiB0d28gcHJvYmxlbWF0aWMgaXRlbXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7UE59IiBwcmVmaXgvc3VmZml4IHVzZSAtIFdhcm5pbmdzIGFsd2F5cyBhcHBlYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAke1BOfSBpcyB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGZpeCB0aGUgaXNzdWUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWcgb3IgYW55dGhpbmcgZWxzZSB0aGF0IHdvdWxkIGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4aW5nL3N1ZmZpeGluZyB0byBoYXBwZW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0aHViIGFyY2hpdmUgdGFyYmFsbHMgLSB0aGVzZSBhcmUgbm90IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBzdGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgdGFyYmFsbHMgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHJlZnJlc2hlZCBhbmQgdGh1cyB0aGUgU1JDX1VSSSBjaGVja3N1bXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGZhaWwgdG8gYXBwbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZmV0Y2ggZWl0aGVyIGFuIG9mZmljaWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSB0YXJiYWxsIG9yIGEgc3BlY2lmaWMgcmV2aXNpb24gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgR2l0IHJlcG9zaXRvcnkgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIEVpdGhlciBvbmUgb2YgdGhlc2UgaXRlbXMgbm93IHRyaWdnZXIgYSB3YXJuaW5nIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgdGhpcyBjaGVjaywgcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zcmMtdXJpLWJhZDwvZmlsZW5hbWU+IGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdBUk5fUUEnPjxmaWxlbmFtZT5XQVJOX1FBPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZmlsZS1yZGVwczwvZmlsZW5hbWU+IHJ1bnRpbWUgZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgICAgICBjaGVjayBubyBsb25nZXIgZXhwYW5kcworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBhcyB0aGVyZSBpcyBubyBtZWNoYW5pc20gdG8gZW5zdXJlIHRoZXkgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgIGZ1bGx5IGNvbXB1dGVkLCBhbmQgdGh1cyByYWNlcyBzb21ldGltZXMgcmVzdWx0IGluIGVycm9ycworICAgICAgICAgICAgICAgICAgICBlaXRoZXIgc2hvd2luZyB1cCBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHlvdSBtaWdodCBub3cgc2VlIGVycm9ycyBmb3IgbWlzc2luZyBydW50aW1lCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyB0aGF0IHdlcmUgcHJldmlvdXNseSBzYXRpc2ZpZWQgcmVjdXJzaXZlbHkuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZTogcGFja2FnZSBBIGNvbnRhaW5zIGEgc2hlbGwgc2NyaXB0CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIHdpdGggPGZpbGVuYW1lPiMhL2Jpbi9iYXNoPC9maWxlbmFtZT4gYnV0IGhhcyBubworICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IG9uIGJhc2guCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHBhY2thZ2UgQSBkZXBlbmRzIG9uIHBhY2thZ2UgQiwgd2hpY2ggZG9lcyBkZXBlbmQKKyAgICAgICAgICAgICAgICAgICAgb24gYmFzaC4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYWRkIHRoZSBtaXNzaW5nIGRlcGVuZGVuY3kgb3IgZGVwZW5kZW5jaWVzIHRvCisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUgdGhlIHdhcm5pbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+REVQRU5EU18ke1BOfTwvZmlsZW5hbWU+IGFueXdoZXJlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIHR5cGljYWxseSBpbiBhIHJlY2lwZSkgbm93IHRyaWdnZXJzIGFuIGVycm9yLgorICAgICAgICAgICAgICAgICAgICBUaGUgZXJyb3IgaXMgdHJpZ2dlcmVkIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBhIHBhY2thZ2Utc3BlY2lmaWMgdmFyaWFibGUgdW5saWtlIFJERVBFTkRTLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNldCA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtZCBjdXJyZW50bHkgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggdGhlIG11c2wgQworICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IGJlY2F1c2Ugb25seSB1cHN0cmVhbSBvZmZpY2lhbGx5IHN1cHBvcnRzIGxpbmtpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGxpYnJhcnkgd2l0aCBnbGliYy4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgYSB3YXJuaW5nIGlzIHNob3duIHdoZW4gYnVpbGRpbmcgc3lzdGVtZCBpbgorICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIG11c2wuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMC1taXNjZWxsYW5lb3VzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbWlzY2VsbGFuZW91cyBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQuCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nbm9tZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSBpdCBub3cgZG9lcyB2ZXJ5IGxpdHRsZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCB1cGRhdGUgcmVjaXBlcyB0aGF0IHByZXZpb3VzbHkgaW5oZXJpdGVkIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdG8gZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBnY29uZiBtaW1lCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygc2V0dGluZworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0RFVklDRVRSRUUnPjxmaWxlbmFtZT5LRVJORUxfREVWSUNFVFJFRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbiBhbnkga2VybmVsIHJlY2lwZSBhbmQgb25seSBwcm9kdWNlZCBhIHdhcm5pbmcuCisgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBhbnkgPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+IHN0YXRlbWVudHMgcG9pbnRpbmcgdG8gdGhpcworICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfQ0ZMQUdTJz48ZmlsZW5hbWU+VEFSR0VUX0NGTEFHUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9DUFBGTEFHUyc+PGZpbGVuYW1lPlRBUkdFVF9DUFBGTEFHUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9DWFhGTEFHUyc+PGZpbGVuYW1lPlRBUkdFVF9DWFhGTEFHUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfTERGTEFHUyc+PGZpbGVuYW1lPlRBUkdFVF9MREZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFyZSBubyBsb25nZXIgZXhwb3J0ZWQgdG8gdGhlIGV4dGVybmFsIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBkaWQgbm90IHJlcXVpcmUgYW55IGNoYW5nZXMgdG8gY29yZSByZWNpcGVzLAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIGdvb2QgaW5kaWNhdG9yIHRoYXQgbm8gY2hhbmdlcyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiBmb3Igc29tZSByZWFzb24gdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGJ5IG9uZQorICAgICAgICAgICAgICAgICAgICBvZiB5b3VyIHJlY2lwZXMgaXMgZXhwZWN0aW5nIHRoZXNlIHZhcmlhYmxlcyB0byBiZSBzZXQsCisgICAgICAgICAgICAgICAgICAgIHRoZW4gYnVpbGRpbmcgdGhlIHJlY2lwZSB3aWxsIGZhaWwuCisgICAgICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHlvdSBtdXN0IGVpdGhlciBleHBvcnQgdGhlIHZhcmlhYmxlIG9yCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBpbiB0aGUgcmVjaXBlIG9yIGNoYW5nZSB0aGUgc2NyaXB0cyBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIGV4cG9ydGluZyBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNoYW5nZSB0aGUgaG9zdCBkaXN0cm8gaWRlbnRpZmllciB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OQVRJVkVMU0JTVFJJTkcnPjxmaWxlbmFtZT5OQVRJVkVMU0JTVFJJTkc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGFsbCBsb3dlcmNhc2UgY2hhcmFjdGVycyBldmVuIGlmIGl0IGRvZXMgbm90IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9uIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5IG9ubHkgaWYgeW91IGFyZSBub3QgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVuaW5hdGl2ZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0FOSVRZX1RFU1RFRF9ESVNUUk9TJz48ZmlsZW5hbWU+U0FOSVRZX1RFU1RFRF9ESVNUUk9TPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSA8ZmlsZW5hbWU+YmFzZS1maWxlczwvZmlsZW5hbWU+IHJlY2lwZSwgd3JpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWUgaW50byA8ZmlsZW5hbWU+L2V0Yy9ob3N0czwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9ob3N0bmFtZTwvZmlsZW5hbWU+IGlzIG5vdyBkb25lIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsX2Jhc2VmaWxlc2lzc3VlPC9maWxlbmFtZT4gZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoZSBjaGFuZ2UgaXMgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbF9iYXNlZmlsZXNpc3N1ZTwvZmlsZW5hbWU+IGlzIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgZWFzaWx5IG92ZXJyaWRkZW4gd2l0aG91dCBoYXZpbmcgdG8gZHVwbGljYXRlIHRoZSBob3N0bmFtZQorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBkb25lIHRoZSBsYXR0ZXIgKGUuZy4gaW4gYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlczwvZmlsZW5hbWU+IGJiYXBwZW5kKSwgdGhlbiB5b3Ugc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZSBpdCBmcm9tIHlvdXIgY3VzdG9taXplZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbF9iYXNlZmlsZXNpc3N1ZTwvZmlsZW5hbWU+IGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+d2ljIC0tZXhwYW5kPC9maWxlbmFtZT4gY29tbWFuZCBub3cgdXNlcworICAgICAgICAgICAgICAgICAgICBjb21tYXMgdG8gc2VwYXJhdGUgImtleTp2YWx1ZSIgcGFpcnMgcmF0aGVyIHRoYW4gaHlwaGVucy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgd2ljIGNvbW1hbmQtbGluZSBoZWxwIGlzIG5vdCB1cGRhdGVkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHVwZGF0ZSBhbnkgc2NyaXB0cyBvciBjb21tYW5kcyB3aGVyZSB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgLS1leHBhbmQ8L2ZpbGVuYW1lPiB3aXRoIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICJrZXk6dmFsdWUiIHBhaXJzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVFRkkgaW1hZ2UgdmFyaWFibGUgc2V0dGluZ3MgaGF2ZSBiZWVuIG1vdmVkIGZyb20gdmFyaW91cworICAgICAgICAgICAgICAgICAgICBwbGFjZXMgdG8gYSBjZW50cmFsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2ltYWdlLXVlZmkuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBzaG91bGQgbm90IGluZmx1ZW5jZSBhbnkgZXhpc3RpbmcgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBhcyB0aGUgPGZpbGVuYW1lPm1ldGEvY29uZi9pbWFnZS11ZWZpLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY29yZSBtZXRhZGF0YSBzZXRzIGRlZmF1bHRzIHRoYXQgY2FuIGJlIG92ZXJyaWRkZW4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGJlZm9yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNhc2VzIHdoZXJlIGNlcnRhaW4gcmVjaXBlcyBuZWVkIHRvIGJlIGRpc2FibGVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIG11c2wgQyBsaWJyYXJ5LCB0aGVzZSByZWNpcGVzIG5vdyBoYXZlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsPC9maWxlbmFtZT4gc2V0IHdpdGggYQorICAgICAgICAgICAgICAgICAgICBjb21tZW50IHRoYXQgZXhwbGFpbnMgd2h5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMy4xLXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW1pbmltdW0tc3lzdGVtLXJlcXVpcmVtZW50cyc+CisgICAgICAgIDx0aXRsZT5NaW5pbXVtIHN5c3RlbSByZXF1aXJlbWVudHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB2ZXJzaW9ucyAvIHJlcXVpcmVtZW50cyBvZiBidWlsZCBob3N0IGNvbXBvbmVudHMgaGF2ZSBiZWVuIHVwZGF0ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5nY2MgNS4wPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnB5dGhvbiAzLjU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjg8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnJwY2dlbjwvZmlsZW5hbWU+IGlzIG5vdyByZXF1aXJlZCBvbiB0aGUgaG9zdCAocGFydCBvZiB0aGUgPGZpbGVuYW1lPmxpYmMtZGV2LWJpbjwvZmlsZW5hbWU+IHBhY2thZ2Ugb24gVWJ1bnR1LCBEZWJpYW4gYW5kIHJlbGF0ZWQgZGlzdHJpYnV0aW9ucywgYW5kIHRoZSA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBwYWNrYWdlIG9uIFJQTS1iYXNlZCBkaXN0cmlidXRpb25zKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgCisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+bWFrZWluZm88L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnBvZDJtYW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgdG9vbHMgYXJlIDxlbXBoYXNpcz5ubyBsb25nZXI8L2VtcGhhc2lzPiByZXF1aXJlZCBvbiB0aGUgaG9zdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW1wYzgzMTVlLXJkYi1yZW1vdmVkJz4KKyAgICAgICAgPHRpdGxlPm1wYzgzMTVlLXJkYiBtYWNoaW5lIHJlbW92ZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE1QQzgzMTVFLVJEQiBtYWNoaW5lIGlzIG9sZC9vYnNvbGV0ZSBhbmQgdW5vYnRhaW5hYmxlLCB0aHVzIGdpdmVuIHRoZSBtYWludGVuYW5jZSBidXJkZW4KKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bXBjODMxNWUtcmRiPC9maWxlbmFtZT4gbWFjaGluZSBjb25maWd1cmF0aW9uIHRoYXQgc3VwcG9ydGVkIGl0IGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgIGluIHRoaXMgcmVsZWFzZS4gVGhlIHJlbW92YWwgZG9lcyBsZWF2ZSBhIGdhcCBpbiBvZmZpY2lhbCBQb3dlclBDIHJlZmVyZW5jZSBoYXJkd2FyZQorICAgICAgICAgICAgc3VwcG9ydDsgdGhpcyBtYXkgY2hhbmdlIGluIGZ1dHVyZSBpZiBhIHN1aXRhYmxlIG1hY2hpbmUgd2l0aCBhY2NvbXBhbnlpbmcgc3VwcG9ydCByZXNvdXJjZXMKKyAgICAgICAgICAgIGlzIGZvdW5kLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXB5dGhvbi0yLXJlbW92ZWQnPgorICAgICAgICA8dGl0bGU+UHl0aG9uIDIgcmVtb3ZlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdWUgdG8gdGhlIGV4cGlyYXRpb24gb2YgdXBzdHJlYW0gc3VwcG9ydCBpbiBKYW51YXJ5IDIwMjAsIHN1cHBvcnQgZm9yIFB5dGhvbiAyIGhhcyBub3cgYmVlbiByZW1vdmVkOyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgUHl0aG9uIDMgaW5zdGVhZC4gSWYgYWJzb2x1dGVseSBuZWVkZWQgdGhlcmUgaXMgYSBtZXRhLXB5dGhvbjIgY29tbXVuaXR5IGxheWVyIGNvbnRhaW5pbmcgUHl0aG9uIDIsIHJlbGF0ZWQgY2xhc3NlcyBhbmQgdmFyaW91cyBQeXRob24gMi1iYXNlZCBtb2R1bGVzLCBob3dldmVyIGl0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhcyBzdXBwb3J0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1yZXByb2R1Y2libGUtYnVpbGRzJz4KKyAgICAgICAgPHRpdGxlPlJlcHJvZHVjaWJsZSBidWlsZHMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkaWZmZXJlbmNlcyBpbiBvdXRwdXQgZmlsZXMgKGFpZGluZyBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5KSwgdGhlIFBva3kgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gKDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz5ESVNUUk88L2xpbms+ID0gInBva3kiPC9maWxlbmFtZT4pIG5vdyBpbmhlcml0cyB0aGUgPGZpbGVuYW1lPnJlcHJvZHVjaWJsZV9idWlsZDwvZmlsZW5hbWU+IGNsYXNzIGJ5IGRlZmF1bHQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcHRlc3QtZmVhdHVyZS1pbXBhY3QnPgorICAgICAgICA8dGl0bGU+SW1wYWN0IG9mIHB0ZXN0IGZlYXR1cmUgaXMgbm93IG1vcmUgc2lnbmlmaWNhbnQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFBva3kgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gKDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz5ESVNUUk88L2xpbms+ID0gInBva3kiPC9maWxlbmFtZT4pIGVuYWJsZXMgcHRlc3RzIGJ5IGRlZmF1bHQgdG8gZW5hYmxlIHJ1bnRpbWUgdGVzdGluZyBvZiB2YXJpb3VzIGNvbXBvbmVudHMuIEluIHRoaXMgcmVsZWFzZSwgYSBkZXBlbmRlbmN5IG5lZWRlZCB0byBiZSBhZGRlZCB0aGF0IGhhcyByZXN1bHRlZCBpbiBhIHNpZ25pZmljYW50IGluY3JlYXNlIGluIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyB0aGF0IHdpbGwgYmUgYnVpbHQganVzdCB3aGVuIGJ1aWxkaW5nIGEgc2ltcGxlIGltYWdlIHN1Y2ggYXMgY29yZS1pbWFnZS1taW5pbWFsLiBJZiB5b3UgZG8gbm90IG5lZWQgcnVudGltZSB0ZXN0cyBlbmFibGVkIGZvciBjb3JlIGNvbXBvbmVudHMsIHRoZW4gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVtb3ZlICJwdGVzdCIgZnJvbSA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+IHRvIHNhdmUgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgYnVpbGQgdGltZSBlLmcuIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIGluIHlvdXIgY29uZmlndXJhdGlvbjoKKworICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgRElTVFJPX0ZFQVRVUkVTX3JlbW92ZSA9ICJwdGVzdCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXJlbW92ZWQtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIHJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkOgorCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y2hrY29uZmlnPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb25zb2xlLXRvb2xzPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5lbmNoYW50PC9maWxlbmFtZT46IHJlcGxhY2VkIGJ5IDxmaWxlbmFtZT5lbmNoYW50MjwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5mb29tYXRpYy1maWx0ZXJzPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJpZG48L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGlibW9kdWxlbWQ8L2ZpbGVuYW1lPjogcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmxpYm1vZHVsZW1kLXYxPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT46IGRyb3AgNC4xOSwgNS4yIHZlcnNpb24gcmVjaXBlcyAoNS40IG5vdyBwcm92aWRlZCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5zcHI8L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bnNzPC9maWxlbmFtZT46IG5vIGxvbmdlciBuZWVkZWQsIG1vdmVkIHRvIG1ldGEtb2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbjwvZmlsZW5hbWU+OiBQeXRob24gMiByZW1vdmVkIChQeXRob24gMyBwcmVmZXJyZWQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob24tc2V0dXB0b29sczwvZmlsZW5hbWU+OiBQeXRob24gMiB2ZXJzaW9uIHJlbW92ZWQgKHB5dGhvbjMtc2V0dXB0b29scyBwcmVmZXJyZWQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zeXNwcm9mPC9maWxlbmFtZT46IG5vIGxvbmdlciBuZWVkZWQsIG1vdmVkIHRvIG1ldGEtb2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnRleGkyaHRtbDwvZmlsZW5hbWU+OiBvYnNvbGV0ZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+dS1ib290LWZ3LXV0aWxzPC9maWxlbmFtZT46IGZ1bmN0aW9uYWxseSByZXBsYWNlZCBieSA8ZmlsZW5hbWU+bGlidWJvb3RlbnY8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1mZWF0dXJlcy1jaGVjayc+CisgICAgICAgIDx0aXRsZT5mZWF0dXJlc19jaGVjayBjbGFzcyByZXBsYWNlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2s8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiBjbGFzcyBoYXMgaGFkIGl0cyBmdW5jdGlvbmFsaXR5IGV4cGFuZGVkLCBub3cgc3VwcG9ydGluZyA8ZmlsZW5hbWU+QU5ZX09GX01BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPlJFUVVJUkVEX01BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPkNPTkZMSUNUX01BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPkFOWV9PRl9DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+UkVRVUlSRURfQ09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPkNPTkZMSUNUX0NPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT4uIEFzIGEgcmVzdWx0IHRoZSBjbGFzcyBoYXMgbm93IGJlZW4gcmVuYW1lZCB0byA8ZmlsZW5hbWU+ZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPjsgdGhlIDxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiBjbGFzcyBzdGlsbCBleGlzdHMgYnV0IGdlbmVyYXRlcyBhIHdhcm5pbmcgYW5kIHJlZGlyZWN0cyB0byB0aGUgbmV3IGNsYXNzLiBJbiBwcmVwYXJhdGlvbiBmb3IgYSBmdXR1cmUgcmVtb3ZhbCBvZiB0aGUgb2xkIGNsYXNzIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVwZGF0ZSByZWNpcGVzIGN1cnJlbnRseSBpbmhlcml0aW5nIDxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiB0byBpbmhlcml0IDxmaWxlbmFtZT5mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1yZW1vdmVkLWNsYXNzZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBjbGFzc2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKworICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmRpc3R1dGlscy1iYXNlPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGliYy1jb21tb248L2ZpbGVuYW1lPjogbWVyZ2VkIGludG8gdGhlIGdsaWJjIHJlY2lwZSBhcyBub3RoaW5nIGVsc2UgdXNlZCBpdC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbi1kaXI8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob25uYXRpdmU8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+dGluZGVyY2xpZW50PC9maWxlbmFtZT46IGRyb3BwZWQgYXMgaXQgd2FzIG9ic29sZXRlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1zcmMtdXJpLWNoZWNrc3Vtcyc+CisgICAgICAgIDx0aXRsZT5TUkNfVVJJIGNoZWNrc3VtIGJlaGF2aW91cjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcmV2aW91c2x5LCByZWNpcGVzIGJ5IHRyYWRpdGlvbiBpbmNsdWRlZCBib3RoIFNIQTI1NiBhbmQgTUQ1IGNoZWNrc3VtcyBmb3IgcmVtb3RlbHkgZmV0Y2hlZCBmaWxlcyBpbiA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4sIGV2ZW4gdGhvdWdoIG9ubHkgb25lIGlzIGFjdHVhbGx5IG1hbmRhdGVkLiBIb3dldmVyLCB0aGUgTUQ1IGNoZWNrc3VtIGRvZXMgbm90IGFkZCBtdWNoIGdpdmVuIGl0cyBpbmhlcmVudCB3ZWFrbmVzczsgdGh1cyB3aGVuIGEgY2hlY2tzdW0gZmFpbHMgb25seSB0aGUgU0hBMjU2IHN1bSB3aWxsIG5vdyBiZSBwcmludGVkLiBUaGUgbWQ1c3VtIHdpbGwgc3RpbGwgYmUgdmVyaWZpZWQgaWYgaXQgaXMgc3BlY2lmaWVkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1ucG0nPgorICAgICAgICA8dGl0bGU+bnBtIGZldGNoZXIgY2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbnBtIGZldGNoZXIgaGFzIGJlZW4gY29tcGxldGVseSByZXdvcmtlZCBpbiB0aGlzIHJlbGVhc2UuIFRoZSBucG0gZmV0Y2hlciBub3cgb25seSBmZXRjaGVzIHRoZSBwYWNrYWdlIHNvdXJjZSBpdHNlbGYgYW5kIG5vIGxvbmdlciB0aGUgZGVwZW5kZW5jaWVzOyB0aGVyZSBpcyBub3cgYWxzbyBhbiBucG1zdyBmZXRjaGVyIHdoaWNoIGV4cGxpY2l0bHkgZmV0Y2hlcyB0aGUgc2hyaW5rd3JhcCBmaWxlIGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIHJlbW92ZXMgdGhlIHNsaWdodGx5IGF3a3dhcmQgPGZpbGVuYW1lPk5QTV9MT0NLRE9XTjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+TlBNX1NIUklOS1dSQVA8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgd2hpY2ggcG9pbnRlZCB0byBsb2NhbCBmaWxlczsgdGhlIGxvY2tkb3duIGZpbGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhdCBhbGwuIEFkZGl0aW9uYWxseSwgdGhlIHBhY2thZ2UgbmFtZSBpbiA8ZmlsZW5hbWU+bnBtOi8vPC9maWxlbmFtZT4gZW50cmllcyBpbiA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4gaXMgbm93IHNwZWNpZmllZCB1c2luZyBhIDxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT4gcGFyYW1ldGVyIGluc3RlYWQgb2YgdGhlIGVhcmxpZXIgPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPiB3aGljaCBvdmVybGFwcGVkIHdpdGggdGhlIGdlbmVyaWMgPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIuIEFsbCByZWNpcGVzIHVzaW5nIHRoZSBucG0gZmV0Y2hlciB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBhcyBhIHJlc3VsdC4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbiBleGFtcGxlIG9mIHRoZSBuZXcgc2NoZW1lOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorU1JDX1VSSSA9ICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1hcnJheS1mbGF0dGVuO3ZlcnNpb249MS4xLjEgXAorICAgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vbnBtLXNocmlua3dyYXAuanNvbiIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFub3RoZXIgZXhhbXBsZSB3aGVyZSB0aGUgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIGdpdCByYXRoZXIgdGhhbiBhbiBucG0gcmVwb3NpdG9yeToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mb28vYmFyLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS9ucG0tc2hyaW5rd3JhcC5qc29uIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgZGV2dG9vbCBhbmQgcmVjaXBldG9vbCBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIG1hdGNoIHdpdGggdGhlIG5wbSBmZXRjaGVyIGNoYW5nZXMuIE90aGVyIHRoYW4gcHJvZHVjaW5nIHdvcmtpbmcgYW5kIG1vcmUgY29tcGxldGUgcmVjaXBlcyBmb3IgbnBtIHNvdXJjZXMsIHRoZXJlIGlzIGFsc28gYSBtaW5vciBjaGFuZ2UgdG8gdGhlIGNvbW1hbmQgbGluZSBmb3IgZGV2dG9vbDogdGhlIDxmaWxlbmFtZT4tLWZldGNoLWRldjwvZmlsZW5hbWU+IG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIDxmaWxlbmFtZT4tLW5wbS1kZXY8L2ZpbGVuYW1lPiBhcyBpdCBpcyBucG0tc3BlY2lmaWMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcGFja2FnaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnaW5nIGNoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmludGx0b29sPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1zZGs8L2ZpbGVuYW1lPiBhcyBpdCBpcyByYXJlbHkgbmVlZGVkIHRvIGJ1aWxkIG1vZGVybiBzb2Z0d2FyZSAtIGdldHRleHQgY2FuIGRvIG1vc3Qgb2YgdGhlIHRoaW5ncyBpdCB1c2VkIHRvIGJlIG5lZWRlZCBmb3IuIDxmaWxlbmFtZT5pbnRsdG9vbDwvZmlsZW5hbWU+IGhhcyBhbHNvIGJlZW4gcmVtb3ZlZCBmcm9tIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1zZWxmLWhvc3RlZDwvZmlsZW5hbWU+IGFzIGl0IGlzIG5vdCBuZWVkZWQgdG8gZm9yIHN0YW5kYXJkIGJ1aWxkcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Z2l0OiA8ZmlsZW5hbWU+Z2l0LWFtPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5naXQtZGlmZnRvb2w8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmdpdC1zdWJtb2R1bGU8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5naXQtcmVxdWVzdC1wdWxsPC9maWxlbmFtZT4gYXJlIG5vIGxvbmdlciBwZXJsLWJhc2VkLCBzbyBhcmUgbm93IGluc3RhbGxlZCB3aXRoIHRoZSBtYWluIDxmaWxlbmFtZT5naXQ8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RlYWQgb2Ygd2l0aGluIDxmaWxlbmFtZT5naXQtcGVybHRvb2xzPC9maWxlbmFtZT4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPiBiaW5hcnkgYnVpbHQgYXMgcGFydCBvZiBnbGliYyBoYXMgbm93IGJlZW4gbW92ZWQgdG8gaXRzIG93biA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPiBwYWNrYWdlIChub3RlIG5vIDxmaWxlbmFtZT5nbGliYy08L2ZpbGVuYW1lPiBwcmVmaXgpLiBUaGlzIHBhY2thZ2UgaXMgaW4gdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+IG9mIHRoZSBtYWluIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IHBhY2thZ2UgaWYgPGZpbGVuYW1lPmxkY29uZmlnPC9maWxlbmFtZT4gaXMgcHJlc2VudCBpbiA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGliZXZlbnQ8L2ZpbGVuYW1lPiBub3cgc3BsaXRzIGVhY2ggc2hhcmVkIGxpYnJhcnkgaW50byBpdHMgb3duIHBhY2thZ2UgKGFzIERlYmlhbiBkb2VzKS4gU2luY2UgdGhlc2UgYXJlIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHdpbGwgYmUgcHVsbGVkIGluIHRocm91Z2ggdGhlIG5vcm1hbCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nLCB0aGVyZSBzaG91bGQgYmUgbm8gaW1wYWN0IHRvIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIG90aGVyIHRoYW4gbGVzcyB1bm5lY2Vzc2FyeSBsaWJyYXJpZXMgYmVpbmcgaW5zdGFsbGVkIGluIHNvbWUgY2FzZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmxpbnV4LWZpcm13YXJlIG5vdyBoYXMgYSBuZXcgcGFja2FnZSBmb3IgPGZpbGVuYW1lPmJjbTQzNjZjPC9maWxlbmFtZT4gYW5kIGluY2x1ZGVzIGF2YWlsYWJsZSBOVlJBTSBjb25maWcgZmlsZXMgaW50byB0aGUgPGZpbGVuYW1lPmJjbTQzMzQwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iY200MzM2MjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmNtNDM0MzA8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmJjbTQzNTYtcGNpZTwvZmlsZW5hbWU+IHBhY2thZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aGFyZmJ1eno8L2ZpbGVuYW1lPiBub3cgc3BsaXRzIHRoZSBuZXcgPGZpbGVuYW1lPmxpYmhhcmZidXp6LXN1YnNldC5zbzwvZmlsZW5hbWU+IGxpYnJhcnkgaW50byBpdHMgb3duIHBhY2thZ2UgdG8gcmVkdWNlIHRoZSBtYWluIHBhY2thZ2Ugc2l6ZSBpbiBjYXNlcyB3aGVyZSA8ZmlsZW5hbWU+bGliaGFyZmJ1enotc3Vic2V0LnNvPC9maWxlbmFtZT4gaXMgbm90IG5lZWRlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXBhY2thZ2UtcWEtd2FybmluZ3MnPgorICAgICAgICA8dGl0bGU+QWRkaXRpb25hbCB3YXJuaW5nczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXYXJuaW5ncyB3aWxsIG5vdyBiZSBzaG93biBhdCA8ZmlsZW5hbWU+ZG9fcGFja2FnZV9xYTwvZmlsZW5hbWU+IHRpbWUgaW4gdGhlIGZvbGxvd2luZyBjaXJjdW1zdGFuY2VzOgorICAgICAgICAgICAgCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlY2lwZSBpbnN0YWxscyA8ZmlsZW5hbWU+LmRlc2t0b3A8L2ZpbGVuYW1lPiBmaWxlcyBjb250YWluaW5nIDxmaWxlbmFtZT5NaW1lVHlwZTwvZmlsZW5hbWU+IGtleXMgYnV0IGRvZXMgbm90IGluaGVyaXQgdGhlIG5ldyA8ZmlsZW5hbWU+bWltZS14ZGc8L2ZpbGVuYW1lPiBjbGFzczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlY2lwZSBpbnN0YWxscyA8ZmlsZW5hbWU+LnhtbDwvZmlsZW5hbWU+IGZpbGVzIGludG8gPGZpbGVuYW1lPiR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlczwvZmlsZW5hbWU+IGJ1dCBkb2VzIG5vdCBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+bWltZTwvZmlsZW5hbWU+IGNsYXNzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEteDg2LWxpdmUtd2ljJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBpbWFnZSB0eXBlIG5vdyB1c2VkIGluc3RlYWQgb2YgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPiBieSBkZWZhdWx0IGZvciB4ODY8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYzwvZmlsZW5hbWU+IChpbmhlcml0ZWQgYnkgbW9zdCB4ODYgbWFjaGluZSBjb25maWd1cmF0aW9ucykgbm93IHNwZWNpZmllcyA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gaW5zdGVhZCBvZiA8ZmlsZW5hbWU+bGl2ZTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQgaW4gPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LiBUaGUgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPiBpbWFnZSB0eXBlIHdpbGwgbGlrZWx5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSBzbyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbWlzYyc+CisgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIGNoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHVuZG9jdW1lbnRlZCA8ZmlsZW5hbWU+U1JDX0RJU1RSSUJVVEVfTElDRU5TRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBoYXMgbm93IGJlZW4gcmVtb3ZlZCBpbiBmYXZvdXIgb2YgYSBuZXcgPGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHdoaWNoIGlzIGR5bmFtaWNhbGx5IHNldCBiYXNlZCB1cG9uIGxpY2Vuc2UgZmlsZXMgZm91bmQgaW4gPGZpbGVuYW1lPiR7Q09NTU9OX0xJQ0VOU0VfRElSfTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+JHtMSUNFTlNFX1BBVEh9PC9maWxlbmFtZT4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSB0dW5lIGRlZmluaXRpb24gZm9yIGJpZy1lbmRpYW4gbWljcm9ibGF6ZSBtYWNoaW5lcyBpcyBub3cgPGZpbGVuYW1lPm1pY3JvYmxhemU8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mIDxmaWxlbmFtZT5taWNyb2JsYXplZWI8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IG5vIGxvbmdlciBoYXMgYnVpbHQtaW4gc3lzY2FsbHMuIDxmaWxlbmFtZT5saWJnbG9zczwvZmlsZW5hbWU+IHNob3VsZCB0aGVuIHByb3ZpZGUgdGhlIHN5c2NhbGxzLCA8ZmlsZW5hbWU+Y3J0MC5vPC9maWxlbmFtZT4gYW5kIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSBubyBsb25nZXIgcGFydCBvZiA8ZmlsZW5hbWU+bmV3bGliPC9maWxlbmFtZT4gaXRzZWxmLiBJZiB5b3UgYXJlIHVzaW5nIDxmaWxlbmFtZT5UQ0xJQkMgPSAibmV3bGliIjwvZmlsZW5hbWU+IHRoaXMgbm93IG1lYW5zIHRoYXQgeW91IG11c3QgbGluayBhcHBsaWNhdGlvbnMgd2l0aCBib3RoIDxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmxpYmdsb3NzPC9maWxlbmFtZT4sIHdoZXJlYXMgYmVmb3JlIDxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiB3b3VsZCBydW4gaW4gbWFueSBjb25maWd1cmF0aW9ucyBieSBpdHNlbGYuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworPC9zZWN0aW9uPgorCisKKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMucnN0CmluZGV4IDc1NmRmMmEuLmIwMDdlMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioKIENsYXNzZXMKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGNkNWZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCkBAIC0wLDAgKzEsMzk3NCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdyZWYtY2xhc3Nlcyc+Cis8dGl0bGU+Q2xhc3NlczwvdGl0bGU+CisKKzxwYXJhPgorICAgIENsYXNzIGZpbGVzIGFyZSB1c2VkIHRvIGFic3RyYWN0IGNvbW1vbiBmdW5jdGlvbmFsaXR5IGFuZCBzaGFyZSBpdCBhbW9uZ3N0CisgICAgbXVsdGlwbGUgcmVjaXBlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGVzLgorICAgIFRvIHVzZSBhIGNsYXNzIGZpbGUsIHlvdSBzaW1wbHkgbWFrZSBzdXJlIHRoZSByZWNpcGUgaW5oZXJpdHMgdGhlIGNsYXNzLgorICAgIEluIG1vc3QgY2FzZXMsIHdoZW4gYSByZWNpcGUgaW5oZXJpdHMgYSBjbGFzcyBpdCBpcyBlbm91Z2ggdG8gZW5hYmxlIGl0cworICAgIGZlYXR1cmVzLgorICAgIFRoZXJlIGFyZSBjYXNlcywgaG93ZXZlciwgd2hlcmUgaW4gdGhlIHJlY2lwZSB5b3UgbWlnaHQgbmVlZCB0byBzZXQKKyAgICB2YXJpYWJsZXMgb3Igb3ZlcnJpZGUgc29tZSBkZWZhdWx0IGJlaGF2aW9yLgorPC9wYXJhPgorCis8cGFyYT4KKyAgICBBbnkgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiB1c3VhbGx5CisgICAgZm91bmQgaW4gYSByZWNpcGUgY2FuIGFsc28gYmUgcGxhY2VkIGluIGEgY2xhc3MgZmlsZS4KKyAgICBDbGFzcyBmaWxlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgZXh0ZW5zaW9uIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+CisgICAgYW5kIGFyZSB1c3VhbGx5IHBsYWNlZCBpbiBhIDxmaWxlbmFtZT5jbGFzc2VzLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBiZW5lYXRoCisgICAgdGhlIDxmaWxlbmFtZT5tZXRhKi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZm91bmQgaW4gdGhlCisgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgQ2xhc3MgZmlsZXMgY2FuIGFsc28gYmUgcG9pbnRlZCB0byBieQorICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRERJUic+PGZpbGVuYW1lPkJVSUxERElSPC9maWxlbmFtZT48L2xpbms+CisgICAgKGUuZy4gPGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+KSBpbiB0aGUgc2FtZSB3YXkgYXMKKyAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlcyBpbiB0aGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgQ2xhc3MgZmlsZXMgYXJlIHNlYXJjaGVkIGZvciBpbgorICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICB1c2luZyB0aGUgc2FtZSBtZXRob2QgYnkgd2hpY2ggPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4gZmlsZXMgYXJlCisgICAgc2VhcmNoZWQuCis8L3BhcmE+CisKKzxwYXJhPgorICAgIFRoaXMgY2hhcHRlciBkaXNjdXNzZXMgb25seSB0aGUgbW9zdCB1c2VmdWwgYW5kIGltcG9ydGFudCBjbGFzc2VzLgorICAgIE90aGVyIGNsYXNzZXMgZG8gZXhpc3Qgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4KKyAgICBkaXJlY3RvcnkgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkuCisgICAgWW91IGNhbiByZWZlcmVuY2UgdGhlIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGVzIGRpcmVjdGx5CisgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCis8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1hbGxhcmNoJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmFsbGFyY2guYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmFsbGFyY2g8L2ZpbGVuYW1lPiBjbGFzcyBpcyBpbmhlcml0ZWQKKyAgICAgICAgYnkgcmVjaXBlcyB0aGF0IGRvIG5vdCBwcm9kdWNlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBvdXRwdXQuCisgICAgICAgIFRoZSBjbGFzcyBkaXNhYmxlcyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgbm9ybWFsbHkgbmVlZGVkIGZvciByZWNpcGVzCisgICAgICAgIHRoYXQgcHJvZHVjZSBleGVjdXRhYmxlIGJpbmFyaWVzIChzdWNoIGFzIGJ1aWxkaW5nIHRoZSBjcm9zcy1jb21waWxlcgorICAgICAgICBhbmQgYSBDIGxpYnJhcnkgYXMgcHJlLXJlcXVpc2l0ZXMsIGFuZCBzcGxpdHRpbmcgb3V0IG9mIGRlYnVnIHN5bWJvbHMKKyAgICAgICAgZHVyaW5nIHBhY2thZ2luZykuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgPHBhcmE+VW5saWtlIHNvbWUgZGlzdHJvIHJlY2lwZXMgKGUuZy4gRGViaWFuKSwgT3BlbkVtYmVkZGVkIHJlY2lwZXMKKyAgICAgICAgICAgIHRoYXQgcHJvZHVjZSBwYWNrYWdlcyB0aGF0IGRlcGVuZCBvbiB0dW5pbmdzIHRocm91Z2ggdXNlIG9mIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGVzLCBzaG91bGQgbmV2ZXIgYmUgY29uZmlndXJlZCBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKyAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5hbGxhcmNoPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGlzIGlzIHRoZSBjYXNlIGV2ZW4gaWYgdGhlIHJlY2lwZXMgZG8gbm90IHByb2R1Y2UKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBvdXRwdXQuPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q29uZmlndXJpbmcgc3VjaCByZWNpcGVzIGZvciBhbGwgYXJjaGl0ZWN0dXJlcyBjYXVzZXMgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2tzIHRvIGhhdmUgZGlmZmVyZW50IHNpZ25hdHVyZXMgZm9yIHRoZSBtYWNoaW5lcyB3aXRoIGRpZmZlcmVudAorICAgICAgICAgICAgdHVuaW5ncy4KKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdW5uZWNlc3NhcnkgcmVidWlsZHMgb2NjdXIgZXZlcnkgdGltZSBhbgorICAgICAgICAgICAgaW1hZ2UgZm9yIGEgZGlmZmVyZW50IDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gaXMgYnVpbHQKKyAgICAgICAgICAgIGV2ZW4gd2hlbiB0aGUgcmVjaXBlIG5ldmVyIGNoYW5nZXMuPC9wYXJhPgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEJ5IGRlZmF1bHQsIGFsbCByZWNpcGVzIGluaGVyaXQgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJhc2UnPjxmaWxlbmFtZT5iYXNlPC9maWxlbmFtZT48L2xpbms+IGFuZAorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlJz48ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzc2VzLCB3aGljaCBlbmFibGUgZnVuY3Rpb25hbGl0eQorICAgICAgICBuZWVkZWQgZm9yIHJlY2lwZXMgdGhhdCBwcm9kdWNlIGV4ZWN1dGFibGUgb3V0cHV0LgorICAgICAgICBJZiB5b3VyIHJlY2lwZSwgZm9yIGV4YW1wbGUsIG9ubHkgcHJvZHVjZXMgcGFja2FnZXMgdGhhdCBjb250YWluCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG1lZGlhIGZpbGVzLCBvciBzY3JpcHRzIChlLmcuIFB5dGhvbiBhbmQgUGVybCksCisgICAgICAgIHRoZW4gaXQgc2hvdWxkIGluaGVyaXQgdGhlIDxmaWxlbmFtZT5hbGxhcmNoPC9maWxlbmFtZT4gY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtYXJjaGl2ZXInPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+YXJjaGl2ZXIuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMgcmVsZWFzaW5nCisgICAgICAgIHNvdXJjZSBjb2RlIGFuZCBvdGhlciBtYXRlcmlhbHMgd2l0aCB0aGUgYmluYXJpZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBtb3JlIGRldGFpbHMgb24gdGhlIHNvdXJjZSBhcmNoaXZlciwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1BUkNISVZFUl9NT0RFJz48ZmlsZW5hbWU+QVJDSElWRVJfTU9ERTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB2YXJpYWJsZSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhcmlhYmxlIGZsYWdzICh2YXJmbGFncykKKyAgICAgICAgdGhhdCBoZWxwIGNvbnRyb2wgYXJjaGl2ZSBjcmVhdGlvbi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+YXV0b3Rvb2xzKi5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+YXV0b3Rvb2xzKjwvZmlsZW5hbWU+IGNsYXNzZXMgc3VwcG9ydCBBdXRvdG9vbGVkCisgICAgICAgIHBhY2thZ2VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmF1dG9jb25mPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5hdXRvbWFrZTwvZmlsZW5hbWU+LAorICAgICAgICBhbmQgPGZpbGVuYW1lPmxpYnRvb2w8L2ZpbGVuYW1lPiBwYWNrYWdlcyBicmluZyBzdGFuZGFyZGl6YXRpb24uCisgICAgICAgIFRoaXMgY2xhc3MgZGVmaW5lcyBhIHNldCBvZiB0YXNrcyAoZS5nLgorICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5jb21waWxlPC9maWxlbmFtZT4gYW5kCisgICAgICAgIHNvIGZvcnRoKSB0aGF0CisgICAgICAgIHdvcmsgZm9yIGFsbCBBdXRvdG9vbGVkIHBhY2thZ2VzLgorICAgICAgICBJdCBzaG91bGQgdXN1YWxseSBiZSBlbm91Z2ggdG8gZGVmaW5lIGEgZmV3IHN0YW5kYXJkIHZhcmlhYmxlcworICAgICAgICBhbmQgdGhlbiBzaW1wbHkgPGZpbGVuYW1lPmluaGVyaXQgYXV0b3Rvb2xzPC9maWxlbmFtZT4uCisgICAgICAgIFRoZXNlIGNsYXNzZXMgY2FuIGFsc28gd29yayB3aXRoIHNvZnR3YXJlIHRoYXQgZW11bGF0ZXMgQXV0b3Rvb2xzLgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1hdXRvdG9vbGVkLXBhY2thZ2UnPkF1dG90b29sZWQgUGFja2FnZTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5hdXRvdG9vbHMqPC9maWxlbmFtZT4gY2xhc3NlcworICAgICAgICB1c2Ugb3V0LW9mLXRyZWUgYnVpbGRzIChpLmUuCisgICAgICAgIDxmaWxlbmFtZT5hdXRvdG9vbHMuYmJjbGFzczwvZmlsZW5hbWU+IGJ1aWxkaW5nIHdpdGgKKyAgICAgICAgPGZpbGVuYW1lPkIgIT0gUzwvZmlsZW5hbWU+KS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGJ5IGEgcmVjaXBlIGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgdXNpbmcgb3V0LW9mLXRyZWUgYnVpbGRzLCB5b3Ugc2hvdWxkIGhhdmUgdGhlIHJlY2lwZSBpbmhlcml0IHRoZQorICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzLWJyb2tlbnNlcDwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICBUaGUgPGZpbGVuYW1lPmF1dG90b29scy1icm9rZW5zZXA8L2ZpbGVuYW1lPiBjbGFzcyBiZWhhdmVzIHRoZSBzYW1lCisgICAgICAgIGFzIHRoZSA8ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT4gY2xhc3MgYnV0IGJ1aWxkcyB3aXRoCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC9saW5rPiA9PQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCB3aGVuIG91dC1vZi10cmVlIGJ1aWxkIHN1cHBvcnQgaXMgZWl0aGVyIG5vdAorICAgICAgICBwcmVzZW50IG9yIGlzIGJyb2tlbi4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IG91dC1vZi10cmVlIHN1cHBvcnQgYmUgZml4ZWQgYW5kIHVzZWQKKyAgICAgICAgICAgIGlmIGF0IGFsbCBwb3NzaWJsZS4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJdCdzIHVzZWZ1bCB0byBoYXZlIHNvbWUgaWRlYSBvZiBob3cgdGhlIHRhc2tzIGRlZmluZWQgYnkKKyAgICAgICAgdGhlIDxmaWxlbmFtZT5hdXRvdG9vbHMqPC9maWxlbmFtZT4gY2xhc3NlcyB3b3JrIGFuZCB3aGF0IHRoZXkgZG8KKyAgICAgICAgYmVoaW5kIHRoZSBzY2VuZXMuCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgUmVnZW5lcmF0ZXMgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHNjcmlwdCAodXNpbmcgPGZpbGVuYW1lPmF1dG9yZWNvbmY8L2ZpbGVuYW1lPikgYW5kCisgICAgICAgICAgICAgICAgdGhlbiBsYXVuY2hlcyBpdCB3aXRoIGEgc3RhbmRhcmQgc2V0IG9mIGFyZ3VtZW50cyB1c2VkIGR1cmluZworICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGF0aW9uLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FQ09ORic+RVhUUkFfT0VDT05GPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICBSdW5zIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gd2l0aCBhcmd1bWVudHMgdGhhdCBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFuZCBsaW5rZXIuCisgICAgICAgICAgICAgICAgWW91IGNhbiBwYXNzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRocm91Z2gKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRU1BS0UnPkVYVFJBX09FTUFLRTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgUnVucyA8ZmlsZW5hbWU+bWFrZSBpbnN0YWxsPC9maWxlbmFtZT4gYW5kIHBhc3NlcyBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFzIDxmaWxlbmFtZT5ERVNURElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWJhc2UnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+IGNsYXNzIGlzIHNwZWNpYWwgaW4gdGhhdCBldmVyeQorICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBpbXBsaWNpdGx5IGluaGVyaXRzIHRoZSBjbGFzcy4KKyAgICAgICAgVGhpcyBjbGFzcyBjb250YWlucyBkZWZpbml0aW9ucyBmb3Igc3RhbmRhcmQgYmFzaWMKKyAgICAgICAgdGFza3Mgc3VjaCBhcyBmZXRjaGluZywgdW5wYWNraW5nLCBjb25maWd1cmluZyAoZW1wdHkgYnkgZGVmYXVsdCksCisgICAgICAgIGNvbXBpbGluZyAocnVucyBhbnkgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gcHJlc2VudCksIGluc3RhbGxpbmcKKyAgICAgICAgKGVtcHR5IGJ5IGRlZmF1bHQpIGFuZCBwYWNrYWdpbmcgKGVtcHR5IGJ5IGRlZmF1bHQpLgorICAgICAgICBUaGVzZSBjbGFzc2VzIGFyZSBvZnRlbiBvdmVycmlkZGVuIG9yIGV4dGVuZGVkIGJ5IG90aGVyIGNsYXNzZXMKKyAgICAgICAgc3VjaCBhcyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzIG9yIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlJz48ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNsYXNzIGFsc28gY29udGFpbnMgc29tZSBjb21tb25seSB1c2VkIGZ1bmN0aW9ucyBzdWNoIGFzCisgICAgICAgIDxmaWxlbmFtZT5vZV9ydW5tYWtlPC9maWxlbmFtZT4sIHdoaWNoIHJ1bnMKKyAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB3aXRoIHRoZSBhcmd1bWVudHMgc3BlY2lmaWVkIGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRU1BS0UnPjxmaWxlbmFtZT5FWFRSQV9PRU1BS0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgYXMgd2VsbCBhcyB0aGUgYXJndW1lbnRzIHBhc3NlZCBkaXJlY3RseSB0bworICAgICAgICA8ZmlsZW5hbWU+b2VfcnVubWFrZTwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWJhc2gtY29tcGxldGlvbic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5iYXNoLWNvbXBsZXRpb24uYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBTZXRzIHVwIHBhY2thZ2luZyBhbmQgZGVwZW5kZW5jaWVzIGFwcHJvcHJpYXRlIGZvciByZWNpcGVzIHRoYXQKKyAgICAgICAgYnVpbGQgc29mdHdhcmUgdGhhdCBpbmNsdWRlcyBiYXNoLWNvbXBsZXRpb24gZGF0YS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1iaW4tcGFja2FnZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5iaW5fcGFja2FnZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+YmluX3BhY2thZ2U8L2ZpbGVuYW1lPiBjbGFzcyBpcyBhCisgICAgICAgIGhlbHBlciBjbGFzcyBmb3IgcmVjaXBlcyB0aGF0IGV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mIGEgYmluYXJ5IHBhY2thZ2UKKyAgICAgICAgKGUuZy4gYW4gUlBNKSBhbmQgaW5zdGFsbCB0aG9zZSBjb250ZW50cyByYXRoZXIgdGhhbiBidWlsZGluZyB0aGUKKyAgICAgICAgYmluYXJ5IGZyb20gc291cmNlLgorICAgICAgICBUaGUgYmluYXJ5IHBhY2thZ2UgaXMgZXh0cmFjdGVkIGFuZCBuZXcgcGFja2FnZXMgaW4gdGhlIGNvbmZpZ3VyZWQKKyAgICAgICAgb3V0cHV0IHBhY2thZ2UgZm9ybWF0IGFyZSBjcmVhdGVkLgorICAgICAgICBFeHRyYWN0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgcHJvcHJpZXRhcnkgYmluYXJpZXMgaXMgYSBnb29kIGV4YW1wbGUKKyAgICAgICAgdXNlIGZvciB0aGlzIGNsYXNzLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEZvciBSUE1zIGFuZCBvdGhlciBwYWNrYWdlcyB0aGF0IGRvIG5vdCBjb250YWluIGEgc3ViZGlyZWN0b3J5LAorICAgICAgICAgICAgeW91IHNob3VsZCBzcGVjaWZ5IGFuIGFwcHJvcHJpYXRlIGZldGNoZXIgcGFyYW1ldGVyIHRvIHBvaW50IHRvCisgICAgICAgICAgICB0aGUgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIEJpdEJha2UgaXMgdXNpbmcgdGhlIEdpdCBmZXRjaGVyCisgICAgICAgICAgICAoPGZpbGVuYW1lPmdpdDovLzwvZmlsZW5hbWU+KSwgdGhlICJzdWJwYXRoIiBwYXJhbWV0ZXIgbGltaXRzCisgICAgICAgICAgICB0aGUgY2hlY2tvdXQgdG8gYSBzcGVjaWZpYyBzdWJwYXRoIG9mIHRoZSB0cmVlLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIDxmaWxlbmFtZT4ke0JQfTwvZmlsZW5hbWU+IGlzIHVzZWQgc28gdGhhdAorICAgICAgICAgICAgdGhlIGZpbGVzIGFyZSBleHRyYWN0ZWQgaW50byB0aGUgc3ViZGlyZWN0b3J5IGV4cGVjdGVkIGJ5IHRoZQorICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZSBvZgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gImdpdDovL2V4YW1wbGUuY29tL2Rvd25sb2Fkcy9zb21lcGFja2FnZS5ycG07c3VicGF0aD0ke0JQfSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JiLWZldGNoZXJzJz5GZXRjaGVyczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgc3VwcG9ydGVkIEJpdEJha2UgRmV0Y2hlcnMuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+YmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5iaW5jb25maWc8L2ZpbGVuYW1lPiBjbGFzcyBoZWxwcyB0byBjb3JyZWN0IHBhdGhzIGluCisgICAgICAgIHNoZWxsIHNjcmlwdHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEJlZm9yZSA8ZmlsZW5hbWU+cGtnLWNvbmZpZzwvZmlsZW5hbWU+IGhhZCBiZWNvbWUgd2lkZXNwcmVhZCwgbGlicmFyaWVzCisgICAgICAgIHNoaXBwZWQgc2hlbGwgc2NyaXB0cyB0byBnaXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsaWJyYXJpZXMgYW5kCisgICAgICAgIGluY2x1ZGUgcGF0aHMgbmVlZGVkIHRvIGJ1aWxkIHNvZnR3YXJlICh1c3VhbGx5IG5hbWVkCisgICAgICAgIDxmaWxlbmFtZT5MSUJOQU1FLWNvbmZpZzwvZmlsZW5hbWU+KS4KKyAgICAgICAgVGhpcyBjbGFzcyBhc3Npc3RzIGFueSByZWNpcGUgdXNpbmcgc3VjaCBzY3JpcHRzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBEdXJpbmcgc3RhZ2luZywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaW5zdGFsbHMgc3VjaCBzY3JpcHRzCisgICAgICAgIGludG8gdGhlIDxmaWxlbmFtZT5zeXNyb290cy88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyByZXN1bHRzIGluIGFsbCBwYXRocyBpbiB0aGVzZSBzY3JpcHRzIGJlaW5nCisgICAgICAgIGNoYW5nZWQgdG8gcG9pbnQgaW50byB0aGUgPGZpbGVuYW1lPnN5c3Jvb3RzLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBzbworICAgICAgICB0aGF0IGFsbCBidWlsZHMgdGhhdCB1c2UgdGhlIHNjcmlwdCB1c2UgdGhlIGNvcnJlY3QgZGlyZWN0b3JpZXMKKyAgICAgICAgZm9yIHRoZSBjcm9zcyBjb21waWxpbmcgbGF5b3V0LgorICAgICAgICBTZWUgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CSU5DT05GSUdfR0xPQic+PGZpbGVuYW1lPkJJTkNPTkZJR19HTE9CPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWJpbmNvbmZpZy1kaXNhYmxlZCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5iaW5jb25maWctZGlzYWJsZWQuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBBbiBhbHRlcm5hdGl2ZSB2ZXJzaW9uIG9mIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPjxmaWxlbmFtZT5iaW5jb25maWc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MsIHdoaWNoIGRpc2FibGVzIGJpbmFyeSBjb25maWd1cmF0aW9uIHNjcmlwdHMgYnkgbWFraW5nIHRoZW0KKyAgICAgICAgcmV0dXJuIGFuIGVycm9yIGluIGZhdm9yIG9mIHVzaW5nIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgdG8gcXVlcnkgdGhlIGluZm9ybWF0aW9uLgorICAgICAgICBUaGUgc2NyaXB0cyB0byBiZSBkaXNhYmxlZCBzaG91bGQgYmUgc3BlY2lmaWVkIHVzaW5nIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQklOQ09ORklHJz48ZmlsZW5hbWU+QklOQ09ORklHPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlIHdpdGhpbiB0aGUgcmVjaXBlIGluaGVyaXRpbmcgdGhlIGNsYXNzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWJsYWNrbGlzdCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5ibGFja2xpc3QuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmJsYWNrbGlzdDwvZmlsZW5hbWU+IGNsYXNzIHByZXZlbnRzCisgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGZyb20gYnVpbGRpbmcgc3BlY2lmaWMgcmVjaXBlcworICAgICAgICAoYmxhY2tsaXN0cyB0aGVtKS4KKyAgICAgICAgVG8gdXNlIHRoaXMgY2xhc3MsIGluaGVyaXQgdGhlIGNsYXNzIGdsb2JhbGx5IGFuZCBzZXQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBOQkxBQ0tMSVNUJz48ZmlsZW5hbWU+UE5CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgZm9yIGVhY2ggcmVjaXBlIHlvdSB3aXNoIHRvIGJsYWNrbGlzdC4KKyAgICAgICAgU3BlY2lmeSB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFsdWUgYXMgYSB2YXJpYWJsZSBmbGFnICh2YXJmbGFnKSBhbmQgcHJvdmlkZSBhIHJlYXNvbiwgd2hpY2ggaXMKKyAgICAgICAgcmVwb3J0ZWQsIGlmIHRoZSBwYWNrYWdlIGlzIHJlcXVlc3RlZCB0byBiZSBidWlsdCBhcyB0aGUgdmFsdWUuCisgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBibGFja2xpc3QgYSByZWNpcGUgY2FsbGVkICJleG90aWN3YXJlIiwKKyAgICAgICAgeW91IGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBvciBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbjoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJibGFja2xpc3QiCisgICAgIFBOQkxBQ0tMSVNUW2V4b3RpY3dhcmVdID0gIk5vdCBzdXBwb3J0ZWQgYnkgb3VyIG9yZ2FuaXphdGlvbi4iCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcyByZWNvcmRzIGEKKyAgICAgICAgaGlzdG9yeSBvZiBidWlsZCBvdXRwdXQgbWV0YWRhdGEsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRldGVjdCBwb3NzaWJsZQorICAgICAgICByZWdyZXNzaW9ucyBhcyB3ZWxsIGFzIHVzZWQgZm9yIGFuYWx5c2lzIG9mIHRoZSBidWlsZCBvdXRwdXQuCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIEJ1aWxkIEhpc3RvcnksIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1idWlsZHN0YXRzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkc3RhdHMuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkc3RhdHM8L2ZpbGVuYW1lPiBjbGFzcyByZWNvcmRzCisgICAgICAgIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MgYWJvdXQgZWFjaCB0YXNrIGV4ZWN1dGVkIGR1cmluZyB0aGUgYnVpbGQKKyAgICAgICAgKGUuZy4gZWxhcHNlZCB0aW1lLCBDUFUgdXNhZ2UsIGFuZCBJL08gdXNhZ2UpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHlvdSB1c2UgdGhpcyBjbGFzcywgdGhlIG91dHB1dCBnb2VzIGludG8gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRFNUQVRTX0JBU0UnPjxmaWxlbmFtZT5CVUlMRFNUQVRTX0JBU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+JHtUTVBESVJ9L2J1aWxkc3RhdHMvPC9maWxlbmFtZT4uCisgICAgICAgIFlvdSBjYW4gYW5hbHl6ZSB0aGUgZWxhcHNlZCB0aW1lIHVzaW5nCisgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpLnB5PC9maWxlbmFtZT4sIHdoaWNoCisgICAgICAgIHByb2R1Y2VzIGEgY2FzY2FkaW5nIGNoYXJ0IG9mIHRoZSBlbnRpcmUgYnVpbGQgcHJvY2VzcyBhbmQgY2FuIGJlCisgICAgICAgIHVzZWZ1bCBmb3IgaGlnaGxpZ2h0aW5nIGJvdHRsZW5lY2tzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBDb2xsZWN0aW5nIGJ1aWxkIHN0YXRpc3RpY3MgaXMgZW5hYmxlZCBieSBkZWZhdWx0IHRocm91Z2ggdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSX0NMQVNTRVMnPjxmaWxlbmFtZT5VU0VSX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgZnJvbSB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgZG8gbm90IGhhdmUgdG8gZG8gYW55dGhpbmcgdG8gZW5hYmxlIHRoZSBjbGFzcy4KKyAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGUgY2xhc3MsIHNpbXBseSByZW1vdmUgImJ1aWxkc3RhdHMiCisgICAgICAgIGZyb20gdGhlIDxmaWxlbmFtZT5VU0VSX0NMQVNTRVM8L2ZpbGVuYW1lPiBsaXN0LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWJ1aWxkc3RhdHMtc3VtbWFyeSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZHN0YXRzLXN1bW1hcnkuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIGluaGVyaXRlZCBnbG9iYWxseSwgcHJpbnRzIHN0YXRpc3RpY3MgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQKKyAgICAgICAgb24gc3N0YXRlIHJlLXVzZS4KKyAgICAgICAgSW4gb3JkZXIgdG8gZnVuY3Rpb24sIHRoaXMgY2xhc3MgcmVxdWlyZXMgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJ1aWxkc3RhdHMnPjxmaWxlbmFtZT5idWlsZHN0YXRzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzIGJlIGVuYWJsZWQuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY2NhY2hlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmNjYWNoZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y2NhY2hlPC9maWxlbmFtZT4gY2xhc3MgZW5hYmxlcyB0aGUgQy9DKysgQ29tcGlsZXIgQ2FjaGUKKyAgICAgICAgZm9yIHRoZSBidWlsZC4KKyAgICAgICAgVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGdpdmUgYSBtaW5vciBwZXJmb3JtYW5jZSBib29zdCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICBIb3dldmVyLCB1c2luZyB0aGUgY2xhc3MgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBzaWRlLWVmZmVjdHMuCisgICAgICAgIFRodXMsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIG5vdCB1c2UgdGhpcyBjbGFzcy4KKyAgICAgICAgU2VlIDx1bGluayB1cmw9J2h0dHA6Ly9jY2FjaGUuc2FtYmEub3JnLyc+PC91bGluaz4gZm9yIGluZm9ybWF0aW9uIG9uCisgICAgICAgIHRoZSBDL0MrKyBDb21waWxlciBDYWNoZS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1jaHJwYXRoJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmNocnBhdGguYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSAiY2hycGF0aCIgdXRpbGl0eSwgd2hpY2ggaXMgdXNlZCBkdXJpbmcgdGhlCisgICAgICAgIGJ1aWxkIHByb2Nlc3MgZm9yIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiwKKyAgICAgICAgPGZpbGVuYW1lPmNyb3NzPC9maWxlbmFtZT4sIGFuZAorICAgICAgICA8ZmlsZW5hbWU+Y3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiByZWNpcGVzIHRvIGNoYW5nZQorICAgICAgICA8ZmlsZW5hbWU+UlBBVEg8L2ZpbGVuYW1lPiByZWNvcmRzIHdpdGhpbiBiaW5hcmllcyBpbiBvcmRlciB0byBtYWtlCisgICAgICAgIHRoZW0gcmVsb2NhdGFibGUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY2x1dHRlcic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5jbHV0dGVyLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5jbHV0dGVyPC9maWxlbmFtZT4gY2xhc3MgY29uc29saWRhdGVzIHRoZQorICAgICAgICBtYWpvciBhbmQgbWlub3IgdmVyc2lvbiBuYW1pbmcgYW5kIG90aGVyIGNvbW1vbiBpdGVtcyB1c2VkIGJ5IENsdXR0ZXIKKyAgICAgICAgYW5kIHJlbGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBVbmxpa2Ugc29tZSBvdGhlciBjbGFzc2VzIHJlbGF0ZWQgdG8gc3BlY2lmaWMgbGlicmFyaWVzLCByZWNpcGVzCisgICAgICAgICAgICBidWlsZGluZyBvdGhlciBzb2Z0d2FyZSB0aGF0IHVzZXMgQ2x1dHRlciBkbyBub3QgbmVlZCB0bworICAgICAgICAgICAgaW5oZXJpdCB0aGlzIGNsYXNzIHVubGVzcyB0aGV5IHVzZSB0aGUgc2FtZSByZWNpcGUgdmVyc2lvbmluZworICAgICAgICAgICAgc2NoZW1lIHRoYXQgdGhlIENsdXR0ZXIgYW5kIHJlbGF0ZWQgcmVjaXBlcyBkby4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWNtYWtlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmNtYWtlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+IGNsYXNzIGFsbG93cyBmb3IgcmVjaXBlcyB0aGF0IG5lZWQgdG8KKyAgICAgICAgYnVpbGQgc29mdHdhcmUgdXNpbmcgdGhlCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vY21ha2Uub3JnL292ZXJ2aWV3Lyc+Q01ha2U8L3VsaW5rPiBidWlsZCBzeXN0ZW0uCisgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRVhUUkFfT0VDTUFLRSc+PGZpbGVuYW1lPkVYVFJBX09FQ01BS0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBiZSBwYXNzZWQKKyAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgT24gdGhlIG9jY2FzaW9uIHRoYXQgeW91IHdvdWxkIGJlIGluc3RhbGxpbmcgY3VzdG9tIENNYWtlIHRvb2xjaGFpbgorICAgICAgICBmaWxlcyBzdXBwbGllZCBieSB0aGUgYXBwbGljYXRpb24gYmVpbmcgYnVpbHQsIHlvdSBzaG91bGQgaW5zdGFsbCB0aGVtCisgICAgICAgIHRvIHRoZSBwcmVmZXJyZWQgQ01ha2UgTW9kdWxlIGRpcmVjdG9yeToKKyAgICAgICAgPGZpbGVuYW1lPiR7RH0ke2RhdGFkaXJ9L2NtYWtlLzwvZmlsZW5hbWU+IE1vZHVsZXMgZHVyaW5nCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY21sMSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5jbWwxLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5jbWwxPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgIExpbnV4IGtlcm5lbCBzdHlsZSBidWlsZCBjb25maWd1cmF0aW9uIHN5c3RlbS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1jb21wcmVzc19kb2MnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Y29tcHJlc3NfZG9jLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxlcyBjb21wcmVzc2lvbiBmb3IgbWFuIHBhZ2VzIGFuZCBpbmZvIHBhZ2VzLgorICAgICAgICBUaGlzIGNsYXNzIGlzIGludGVuZGVkIHRvIGJlIGluaGVyaXRlZCBnbG9iYWxseS4KKyAgICAgICAgVGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbWVjaGFuaXNtIGlzIGd6IChnemlwKSBidXQgeW91IGNhbgorICAgICAgICBzZWxlY3QgYW4gYWx0ZXJuYXRpdmUgbWVjaGFuaXNtIGJ5IHNldHRpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ET0NfQ09NUFJFU1MnPjxmaWxlbmFtZT5ET0NfQ09NUFJFU1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY29weWxlZnRfY29tcGxpYW5jZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5jb3B5bGVmdF9jb21wbGlhbmNlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3B5bGVmdF9jb21wbGlhbmNlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgcHJlc2VydmVzIHNvdXJjZSBjb2RlIGZvciB0aGUgcHVycG9zZXMgb2YgbGljZW5zZSBjb21wbGlhbmNlLgorICAgICAgICBUaGlzIGNsYXNzIGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSA8ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPgorICAgICAgICBjbGFzcyBhbmQgaXMgc3RpbGwgdXNlZCBieSBzb21lIHVzZXJzIGV2ZW4gdGhvdWdoIGl0IGhhcyBiZWVuCisgICAgICAgIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWFyY2hpdmVyJz48ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY29weWxlZnRfZmlsdGVyJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmNvcHlsZWZ0X2ZpbHRlci5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgY2xhc3MgdXNlZCBieSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXJjaGl2ZXInPjxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY29weWxlZnRfY29tcGxpYW5jZSc+PGZpbGVuYW1lPmNvcHlsZWZ0X2NvbXBsaWFuY2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3NlcyBmb3IgZmlsdGVyaW5nIGxpY2Vuc2VzLgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcHlsZWZ0X2ZpbHRlcjwvZmlsZW5hbWU+IGNsYXNzIGlzIGFuIGludGVybmFsIGNsYXNzCisgICAgICAgIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1jb3JlLWltYWdlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmNvcmUtaW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICBwcm92aWRlcyBjb21tb24gZGVmaW5pdGlvbnMgZm9yIHRoZQorICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS0qPC9maWxlbmFtZT4gaW1hZ2UgcmVjaXBlcywgc3VjaCBhcyBzdXBwb3J0IGZvcgorICAgICAgICBhZGRpdGlvbmFsCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWNwYW4nPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Y3BhbiouYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNwYW4qPC9maWxlbmFtZT4gY2xhc3NlcyBzdXBwb3J0IFBlcmwgbW9kdWxlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgUmVjaXBlcyBmb3IgUGVybCBtb2R1bGVzIGFyZSBzaW1wbGUuCisgICAgICAgIFRoZXNlIHJlY2lwZXMgdXN1YWxseSBvbmx5IG5lZWQgdG8gcG9pbnQgdG8gdGhlIHNvdXJjZSdzIGFyY2hpdmUgYW5kCisgICAgICAgIHRoZW4gaW5oZXJpdCB0aGUgcHJvcGVyIGNsYXNzIGZpbGUuCisgICAgICAgIEJ1aWxkaW5nIGlzIHNwbGl0IGludG8gdHdvIG1ldGhvZHMgZGVwZW5kaW5nIG9uIHdoaWNoIG1ldGhvZCB0aGUgbW9kdWxlCisgICAgICAgIGF1dGhvcnMgdXNlZC4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Nb2R1bGVzIHRoYXQgdXNlIG9sZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5QTDwvZmlsZW5hbWU+LWJhc2VkIGJ1aWxkIHN5c3RlbSByZXF1aXJlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwYW4uYmJjbGFzczwvZmlsZW5hbWU+IGluIHRoZWlyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TW9kdWxlcyB0aGF0IHVzZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZC5QTDwvZmlsZW5hbWU+LWJhc2VkIGJ1aWxkIHN5c3RlbSByZXF1aXJlCisgICAgICAgICAgICAgICAgdXNpbmcgPGZpbGVuYW1lPmNwYW5fYnVpbGQuYmJjbGFzczwvZmlsZW5hbWU+IGluIHRoZWlyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICBCb3RoIGJ1aWxkIG1ldGhvZHMgaW5oZXJpdCB0aGUgPGZpbGVuYW1lPmNwYW4tYmFzZTwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGZvciBiYXNpYyBQZXJsIHN1cHBvcnQuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY3Jvc3MnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Y3Jvc3MuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNyb3NzPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIHJlY2lwZXMKKyAgICAgICAgdGhhdCBidWlsZCB0aGUgY3Jvc3MtY29tcGlsYXRpb24gdG9vbHMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtY3Jvc3MtY2FuYWRpYW4nPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Y3Jvc3MtY2FuYWRpYW4uYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIHJlY2lwZXMgdGhhdCBidWlsZCB0aGUgQ2FuYWRpYW4KKyAgICAgICAgQ3Jvc3MtY29tcGlsYXRpb24gdG9vbHMgZm9yIFNES3MuCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICBkaXNjdXNzaW9uIG9uIHRoZXNlIGNyb3NzLWNvbXBpbGF0aW9uIHRvb2xzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWNyb3Nzc2RrJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmNyb3Nzc2RrLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5jcm9zc3NkazwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSByZWNpcGVzIHRoYXQgYnVpbGQgdGhlIGNyb3NzLWNvbXBpbGF0aW9uCisgICAgICAgIHRvb2xzIHVzZWQgZm9yIGJ1aWxkaW5nIFNES3MuCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICBkaXNjdXNzaW9uIG9uIHRoZXNlIGNyb3NzLWNvbXBpbGF0aW9uIHRvb2xzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWRlYmlhbic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5kZWJpYW4uYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmRlYmlhbjwvZmlsZW5hbWU+IGNsYXNzIHJlbmFtZXMgb3V0cHV0IHBhY2thZ2VzIHNvIHRoYXQKKyAgICAgICAgdGhleSBmb2xsb3cgdGhlIERlYmlhbiBuYW1pbmcgcG9saWN5IChpLmUuIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+CisgICAgICAgIGJlY29tZXMgPGZpbGVuYW1lPmxpYmM2PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5nbGliYy1kZXZlbDwvZmlsZW5hbWU+CisgICAgICAgIGJlY29tZXMgPGZpbGVuYW1lPmxpYmM2LWRldjwvZmlsZW5hbWU+LikKKyAgICAgICAgUmVuYW1pbmcgaW5jbHVkZXMgdGhlIGxpYnJhcnkgbmFtZSBhbmQgdmVyc2lvbiBhcyBwYXJ0IG9mIHRoZSBwYWNrYWdlCisgICAgICAgIG5hbWUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIGEgcmVjaXBlIGNyZWF0ZXMgcGFja2FnZXMgZm9yIG11bHRpcGxlIGxpYnJhcmllcworICAgICAgICAoc2hhcmVkIG9iamVjdCBmaWxlcyBvZiA8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4gdHlwZSksIHVzZSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxFQURfU09OQU1FJz48ZmlsZW5hbWU+TEVBRF9TT05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0byBzcGVjaWZ5IHRoZSBsaWJyYXJ5IG9uIHdoaWNoIHRvIGFwcGx5IHRoZQorICAgICAgICBuYW1pbmcgc2NoZW1lLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWRlcGxveSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5kZXBsb3kuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGNsYXNzIGhhbmRsZXMgZGVwbG95aW5nIGZpbGVzCisgICAgICAgIHRvIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JTUFHRSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfSU1BR0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICBUaGUgbWFpbiBmdW5jdGlvbiBvZiB0aGlzIGNsYXNzIGlzIHRvIGFsbG93IHRoZSBkZXBsb3kgc3RlcCB0byBiZQorICAgICAgICBhY2NlbGVyYXRlZCBieSBzaGFyZWQgc3RhdGUuCisgICAgICAgIFJlY2lwZXMgdGhhdCBpbmhlcml0IHRoaXMgY2xhc3Mgc2hvdWxkIGRlZmluZSB0aGVpciBvd24KKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWRlcGxveSc+PGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBmdW5jdGlvbiB0byBjb3B5IHRoZSBmaWxlcyB0byBiZSBkZXBsb3llZCB0bworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZRElSJz48ZmlsZW5hbWU+REVQTE9ZRElSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICBhbmQgdXNlIDxmaWxlbmFtZT5hZGR0YXNrPC9maWxlbmFtZT4gdG8gYWRkIHRoZSB0YXNrIGF0IHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBwbGFjZSwgd2hpY2ggaXMgdXN1YWxseSBhZnRlcgorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgb3IKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICBUaGUgY2xhc3MgdGhlbiB0YWtlcyBjYXJlIG9mIHN0YWdpbmcgdGhlIGZpbGVzIGZyb20KKyAgICAgICAgPGZpbGVuYW1lPkRFUExPWURJUjwvZmlsZW5hbWU+IHRvCisgICAgICAgIDxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZGV2c2hlbGwnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+ZGV2c2hlbGwuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmRvX2RldnNoZWxsPC9maWxlbmFtZT4gdGFzay4KKyAgICAgICAgRGlzdHJpYnV0aW9uIHBvbGljeSBkaWN0YXRlcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGhpcyBjbGFzcy4KKyAgICAgICAgU2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L3VsaW5rPiIgc2VjdGlvbgorICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgdXNpbmcgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZGV2dXBzdHJlYW0nPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+ZGV2dXBzdHJlYW0uYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnVwc3RyZWFtPC9maWxlbmFtZT4gY2xhc3MgdXNlcworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJDTEFTU0VYVEVORCc+PGZpbGVuYW1lPkJCQ0xBU1NFWFRFTkQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdG8gYWRkIGEgdmFyaWFudCBvZiB0aGUgcmVjaXBlIHRoYXQgZmV0Y2hlcyBmcm9tIGFuIGFsdGVybmF0aXZlIFVSSQorICAgICAgICAoZS5nLiBHaXQpIGluc3RlYWQgb2YgYSB0YXJiYWxsLgorICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQkNMQVNTRVhURU5EID0gImRldnVwc3RyZWFtOnRhcmdldCIKKyAgICAgU1JDX1VSSV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICJnaXQ6Ly9naXQuZXhhbXBsZS5jb20vZXhhbXBsZSIKKyAgICAgU1JDUkVWX2NsYXNzLWRldnVwc3RyZWFtID0gImFiY2QxMjM0IgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIEFkZGluZyB0aGUgYWJvdmUgc3RhdGVtZW50cyB0byB5b3VyIHJlY2lwZSBjcmVhdGVzIGEgdmFyaWFudCB0aGF0IGhhcworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVGQVVMVF9QUkVGRVJFTkNFJz48ZmlsZW5hbWU+REVGQVVMVF9QUkVGRVJFTkNFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHNldCB0byAiLTEiLgorICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBuZWVkIHRvIHNlbGVjdCB0aGUgdmFyaWFudCBvZiB0aGUgcmVjaXBlIHRvIHVzZSBpdC4KKyAgICAgICAgQW55IGRldmVsb3BtZW50LXNwZWNpZmljIGFkanVzdG1lbnRzIGNhbiBiZSBkb25lIGJ5IHVzaW5nIHRoZQorICAgICAgICA8ZmlsZW5hbWU+Y2xhc3MtZGV2dXBzdHJlYW08L2ZpbGVuYW1lPiBvdmVycmlkZS4KKyAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUEVORFNfYXBwZW5kX2NsYXNzLWRldnVwc3RyZWFtID0gIiBncGVyZi1uYXRpdmUiCisKKyAgICAgZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtZGV2dXBzdHJlYW0oKSB7CisgICAgICAgIHRvdWNoICR7U30vUkVBRE1FCisgICAgIH0KKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBUaGUgY2xhc3MgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgY3JlYXRpbmcgYSBkZXZlbG9wbWVudCB2YXJpYW50IG9mCisgICAgICAgIHRoZSB0YXJnZXQgcmVjaXBlLCBub3QgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+IG9yCisgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiB2YXJpYW50cy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT4gc3ludGF4CisgICAgICAgIChpLmUuIDxmaWxlbmFtZT5kZXZ1cHN0cmVhbTp0YXJnZXQ8L2ZpbGVuYW1lPikgcHJvdmlkZXMgc3VwcG9ydCBmb3IKKyAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4KKyAgICAgICAgdmFyaWFudHMuCisgICAgICAgIENvbnNlcXVlbnRseSwgdGhpcyBmdW5jdGlvbmFsaXR5IGNhbiBiZSBhZGRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTdXBwb3J0IGZvciBvdGhlciB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtcyBzdWNoIGFzIFN1YnZlcnNpb24gaXMKKyAgICAgICAgbGltaXRlZCBkdWUgdG8gQml0QmFrZSdzIGF1dG9tYXRpYyBmZXRjaCBkZXBlbmRlbmNpZXMgKGUuZy4KKyAgICAgICAgPGZpbGVuYW1lPnN1YnZlcnNpb24tbmF0aXZlPC9maWxlbmFtZT4pLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWRpc3Ryb19mZWF0dXJlc19jaGVjayc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2suYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGFsbG93cyBpbmRpdmlkdWFsIHJlY2lwZXMgdG8gY2hlY2sgZm9yIHJlcXVpcmVkIGFuZCBjb25mbGljdGluZworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+UkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGFuZAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+Q09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgSWYgYW55IGNvbmRpdGlvbnMgc3BlY2lmaWVkIGluIHRoZSByZWNpcGUgdXNpbmcgdGhlIGFib3ZlIHZhcmlhYmxlcyBhcmUKKyAgICAgICAgbm90IG1ldCwgdGhlIHJlY2lwZSB3aWxsIGJlIHNraXBwZWQuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZGlzdHV0aWxzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmRpc3R1dGlscyouYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmRpc3R1dGlscyo8L2ZpbGVuYW1lPiBjbGFzc2VzIHN1cHBvcnQgcmVjaXBlcyBmb3IgUHl0aG9uCisgICAgICAgIHZlcnNpb24gMi54IGV4dGVuc2lvbnMsIHdoaWNoIGFyZSBzaW1wbGUuCisgICAgICAgIFRoZXNlIHJlY2lwZXMgdXN1YWxseSBvbmx5IG5lZWQgdG8gcG9pbnQgdG8gdGhlIHNvdXJjZSdzIGFyY2hpdmUgYW5kCisgICAgICAgIHRoZW4gaW5oZXJpdCB0aGUgcHJvcGVyIGNsYXNzLgorICAgICAgICBCdWlsZGluZyBpcyBzcGxpdCBpbnRvIHR3byBtZXRob2RzIGRlcGVuZGluZyBvbiB3aGljaCBtZXRob2QgdGhlCisgICAgICAgIG1vZHVsZSBhdXRob3JzIHVzZWQuCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0ZW5zaW9ucyB0aGF0IHVzZSBhbiBBdXRvdG9vbHMtYmFzZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgcmVxdWlyZSBBdXRvdG9vbHMgYW5kIHRoZSBjbGFzc2VzIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+IGluIHRoZWlyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0ZW5zaW9ucyB0aGF0IHVzZSBidWlsZCBzeXN0ZW1zIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+IHJlcXVpcmUKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+IGNsYXNzIGluIHRoZWlyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0ZW5zaW9ucyB0aGF0IHVzZSBidWlsZCBzeXN0ZW1zIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldHVwdG9vbHM8L2ZpbGVuYW1lPiByZXF1aXJlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXNldHVwdG9vbHMnPjxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY2xhc3MgaW4gdGhlaXIgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGlzdHV0aWxzLWNvbW1vbi1iYXNlPC9maWxlbmFtZT4gY2xhc3MgaXMgcmVxdWlyZWQgYnkKKyAgICAgICAgc29tZSBvZiB0aGUgPGZpbGVuYW1lPmRpc3R1dGlscyo8L2ZpbGVuYW1lPiBjbGFzc2VzIHRvIHByb3ZpZGUgY29tbW9uCisgICAgICAgIFB5dGhvbjIgc3VwcG9ydC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1kaXN0dXRpbHMzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmRpc3R1dGlsczMqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5kaXN0dXRpbHMzKjwvZmlsZW5hbWU+IGNsYXNzZXMgc3VwcG9ydCByZWNpcGVzIGZvciBQeXRob24KKyAgICAgICAgdmVyc2lvbiAzLnggZXh0ZW5zaW9ucywgd2hpY2ggYXJlIHNpbXBsZS4KKyAgICAgICAgVGhlc2UgcmVjaXBlcyB1c3VhbGx5IG9ubHkgbmVlZCB0byBwb2ludCB0byB0aGUgc291cmNlJ3MgYXJjaGl2ZSBhbmQKKyAgICAgICAgdGhlbiBpbmhlcml0IHRoZSBwcm9wZXIgY2xhc3MuCisgICAgICAgIEJ1aWxkaW5nIGlzIHNwbGl0IGludG8gdGhyZWUgbWV0aG9kcyBkZXBlbmRpbmcgb24gd2hpY2ggbWV0aG9kIHRoZQorICAgICAgICBtb2R1bGUgYXV0aG9ycyB1c2VkLgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4dGVuc2lvbnMgdGhhdCB1c2UgYW4gQXV0b3Rvb2xzLWJhc2VkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIHJlcXVpcmUgQXV0b3Rvb2xzIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPi1iYXNlZCBjbGFzc2VzIGluIHRoZWlyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0ZW5zaW9ucyB0aGF0IHVzZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPi1iYXNlZCBidWlsZCBzeXN0ZW1zIHJlcXVpcmUKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+IGNsYXNzIGluIHRoZWlyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0ZW5zaW9ucyB0aGF0IHVzZSBidWlsZCBzeXN0ZW1zIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldHVwdG9vbHMzPC9maWxlbmFtZT4gcmVxdWlyZSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zZXR1cHRvb2xzJz48ZmlsZW5hbWU+c2V0dXB0b29sczM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcyBpbiB0aGVpciByZWNpcGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5kaXN0dXRpbHMzKjwvZmlsZW5hbWU+IGNsYXNzZXMgZWl0aGVyIGluaGVyaXQgdGhlaXIKKyAgICAgICAgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+ZGlzdHV0aWxzKjwvZmlsZW5hbWU+IGNsYXNzIG9yIHJlcGxpY2F0ZSB0aGVtCisgICAgICAgIHVzaW5nIGEgUHl0aG9uMyB2ZXJzaW9uIGluc3RlYWQgKGUuZy4KKyAgICAgICAgPGZpbGVuYW1lPmRpc3R1dGlsczMtYmFzZTwvZmlsZW5hbWU+IGluaGVyaXRzCisgICAgICAgIDxmaWxlbmFtZT5kaXN0dXRpbHMtY29tbW9uLWJhc2U8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKKyAgICAgICAgPGZpbGVuYW1lPmRpc3R1dGlscy1iYXNlPC9maWxlbmFtZT4gYnV0IGluaGVyaXRzCisgICAgICAgIDxmaWxlbmFtZT5weXRob24zbmF0aXZlPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICA8ZmlsZW5hbWU+cHl0aG9ubmF0aXZlPC9maWxlbmFtZT4pLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmV4dGVybmFsc3JjLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+IGNsYXNzIHN1cHBvcnRzIGJ1aWxkaW5nIHNvZnR3YXJlCisgICAgICAgIGZyb20gc291cmNlIGNvZGUgdGhhdCBpcyBleHRlcm5hbCB0byB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgQnVpbGRpbmcgc29mdHdhcmUgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UgdHJlZSBtZWFucyB0aGF0IHRoZSBidWlsZAorICAgICAgICBzeXN0ZW0ncyBub3JtYWwgZmV0Y2gsIHVucGFjaywgYW5kIHBhdGNoIHByb2Nlc3MgaXMgbm90IHVzZWQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlcyB0bworICAgICAgICBsb2NhdGUgdW5wYWNrZWQgcmVjaXBlIHNvdXJjZSBjb2RlIGFuZCB0byBidWlsZCBpdCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICBXaGVuIHlvdXIgcmVjaXBlIGluaGVyaXRzIHRoZSA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPiBjbGFzcywKKyAgICAgICAgeW91IHVzZSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVEVSTkFMU1JDJz48ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgYW5kCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRFUk5BTFNSQ19CVUlMRCc+PGZpbGVuYW1lPkVYVEVSTkFMU1JDX0JVSUxEPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlcyB0byB1bHRpbWF0ZWx5IGRlZmluZSA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGNsYXNzIGV4cGVjdHMgdGhlIHNvdXJjZSBjb2RlIHRvIHN1cHBvcnQgcmVjaXBlIGJ1aWxkcworICAgICAgICB0aGF0IHVzZSB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlIHRvIHBvaW50IHRvIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICBzeXN0ZW0gcGxhY2VzIHRoZSBnZW5lcmF0ZWQgb2JqZWN0cyBidWlsdCBmcm9tIHRoZSByZWNpcGVzLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgc2V0IHRvIHRoZQorICAgICAgICBmb2xsb3dpbmcsIHdoaWNoIGlzIHNlcGFyYXRlIGZyb20gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgKDxmaWxlbmFtZT5TPC9maWxlbmFtZT4pOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7V09SS0RJUn0vJHtCUE59L3tQVn0vCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgU2VlIHRoZXNlIHZhcmlhYmxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbjoKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPiBjbGFzcywgc2VlIHRoZSBjb21tZW50cyBpbgorICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3M8L2ZpbGVuYW1lPiBpbiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPgorICAgICAgICBjbGFzcywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UnPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWV4dHJhdXNlcnMnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+ZXh0cmF1c2Vycy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZXh0cmF1c2VyczwvZmlsZW5hbWU+IGNsYXNzIGFsbG93cworICAgICAgICBhZGRpdGlvbmFsIHVzZXIgYW5kIGdyb3VwIGNvbmZpZ3VyYXRpb24gdG8gYmUgYXBwbGllZCBhdCB0aGUgaW1hZ2UKKyAgICAgICAgbGV2ZWwuCisgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyBlaXRoZXIgZ2xvYmFsbHkgb3IgZnJvbSBhbiBpbWFnZSByZWNpcGUgYWxsb3dzCisgICAgICAgIGFkZGl0aW9uYWwgdXNlciBhbmQgZ3JvdXAgb3BlcmF0aW9ucyB0byBiZSBwZXJmb3JtZWQgdXNpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9VU0VSU19QQVJBTVMnPjxmaWxlbmFtZT5FWFRSQV9VU0VSU19QQVJBTVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhlIHVzZXIgYW5kIGdyb3VwIG9wZXJhdGlvbnMgYWRkZWQgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0cmF1c2VyczwvZmlsZW5hbWU+IGNsYXNzIGFyZSBub3QgdGllZCB0byBhIHNwZWNpZmljCisgICAgICAgICAgICByZWNpcGUgb3V0c2lkZSBvZiB0aGUgcmVjaXBlIGZvciB0aGUgaW1hZ2UuCisgICAgICAgICAgICBUaHVzLCB0aGUgb3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIGFjcm9zcyB0aGUgaW1hZ2UgYXMgYSB3aG9sZS4KKyAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzcyB0byBhZGQgdXNlciBhbmQgZ3JvdXAgY29uZmlndXJhdGlvbiB0byBhIHNwZWNpZmljIHJlY2lwZS4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB1c2VzIHRoaXMgY2xhc3MgaW4gYW4gaW1hZ2UgcmVjaXBlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgZXh0cmF1c2VycworICAgICBFWFRSQV9VU0VSU19QQVJBTVMgPSAiXAorICAgICAgICAgdXNlcmFkZCAtcCAnJyB0ZXN0ZXI7IFwKKyAgICAgICAgIGdyb3VwYWRkIGRldmVsb3BlcnM7IFwKKyAgICAgICAgIHVzZXJkZWwgbm9ib2R5OyBcCisgICAgICAgICBncm91cGRlbCAtZyB2aWRlbzsgXAorICAgICAgICAgZ3JvdXBtb2QgLWcgMTAyMCBkZXZlbG9wZXJzOyBcCisgICAgICAgICB1c2VybW9kIC1zIC9iaW4vc2ggdGVzdGVyOyBcCisgICAgICAgICAiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYWRkcyB0d28gdXNlcnMgbmFtZWQgInRlc3Rlci1qaW0iIGFuZAorICAgICAgICAidGVzdGVyLXN1ZSIgYW5kIGFzc2lnbnMgcGFzc3dvcmRzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluaGVyaXQgZXh0cmF1c2VycworICAgICBFWFRSQV9VU0VSU19QQVJBTVMgPSAiXAorICAgICAgICAgdXNlcmFkZCAtUCB0ZXN0ZXIwMSB0ZXN0ZXItamltOyBcCisgICAgICAgICB1c2VyYWRkIC1QIHRlc3RlcjAxIHRlc3Rlci1zdWU7IFwKKyAgICAgICAgICIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBGaW5hbGx5LCBoZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBzZXRzIHRoZSByb290IHBhc3N3b3JkIHRvCisgICAgICAgICIxODc2KjE4IjoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IGV4dHJhdXNlcnMKKyAgICAgRVhUUkFfVVNFUlNfUEFSQU1TID0gIlwKKyAgICAgICAgIHVzZXJtb2QgLVAgMTg3NioxOCByb290OyBcCisgICAgICAgICAiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1mb250Y2FjaGUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Zm9udGNhY2hlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5mb250Y2FjaGU8L2ZpbGVuYW1lPiBjbGFzcyBnZW5lcmF0ZXMgdGhlCisgICAgICAgIHByb3BlciBwb3N0LWluc3RhbGwgYW5kIHBvc3QtcmVtb3ZlIChwb3N0aW5zdCBhbmQgcG9zdHJtKQorICAgICAgICBzY3JpcHRsZXRzIGZvciBmb250IHBhY2thZ2VzLgorICAgICAgICBUaGVzZSBzY3JpcHRsZXRzIGNhbGwgPGZpbGVuYW1lPmZjLWNhY2hlPC9maWxlbmFtZT4gKHBhcnQgb2YKKyAgICAgICAgPGZpbGVuYW1lPkZvbnRjb25maWc8L2ZpbGVuYW1lPikgdG8gYWRkIHRoZSBmb250cyB0byB0aGUgZm9udAorICAgICAgICBpbmZvcm1hdGlvbiBjYWNoZS4KKyAgICAgICAgU2luY2UgdGhlIGNhY2hlIGZpbGVzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsCisgICAgICAgIDxmaWxlbmFtZT5mYy1jYWNoZTwvZmlsZW5hbWU+IHJ1bnMgdXNpbmcgUUVNVSBpZiB0aGUgcG9zdGluc3QKKyAgICAgICAgc2NyaXB0bGV0cyBuZWVkIHRvIGJlIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCBkdXJpbmcgaW1hZ2UgY3JlYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIHRoZSBmb250cyBiZWluZyBpbnN0YWxsZWQgYXJlIGluIHBhY2thZ2VzIG90aGVyIHRoYW4gdGhlIG1haW4KKyAgICAgICAgcGFja2FnZSwgc2V0CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GT05UX1BBQ0tBR0VTJz48ZmlsZW5hbWU+Rk9OVF9QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlcyBjb250YWluaW5nIHRoZSBmb250cy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1mcy11dWlkJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmZzLXV1aWQuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmZzLXV1aWQ8L2ZpbGVuYW1lPiBjbGFzcyBleHRyYWN0cyBVVUlEIGZyb20KKyAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUk9PVEZTJz48ZmlsZW5hbWU+Uk9PVEZTPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKKyAgICAgICAgd2hpY2ggbXVzdCBoYXZlIGJlZW4gYnVpbHQgYnkgdGhlIHRpbWUgdGhhdCB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkLgorICAgICAgICBUaGUgPGZpbGVuYW1lPmZzLXV1aWQ8L2ZpbGVuYW1lPiBjbGFzcyBvbmx5IHdvcmtzIG9uCisgICAgICAgIDxmaWxlbmFtZT5leHQ8L2ZpbGVuYW1lPiBmaWxlIHN5c3RlbXMgYW5kIGRlcGVuZHMgb24KKyAgICAgICAgPGZpbGVuYW1lPnR1bmUyZnM8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1nY29uZic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5nY29uZi5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2NvbmY8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBjb21tb24KKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgcmVjaXBlcyB0aGF0IG5lZWQgdG8gaW5zdGFsbCBHQ29uZiBzY2hlbWFzLgorICAgICAgICBUaGUgc2NoZW1hcyB3aWxsIGJlIHB1dCBpbnRvIGEgc2VwYXJhdGUgcGFja2FnZQorICAgICAgICAoPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59LWdjb25mPC9maWxlbmFtZT4pCisgICAgICAgIHRoYXQgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhpcyBjbGFzcyBpcyBpbmhlcml0ZWQuCisgICAgICAgIFRoaXMgcGFja2FnZSB1c2VzIHRoZSBhcHByb3ByaWF0ZSBwb3N0LWluc3RhbGwgYW5kIHBvc3QtcmVtb3ZlCisgICAgICAgIChwb3N0aW5zdC9wb3N0cm0pIHNjcmlwdGxldHMgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgdGhlIHNjaGVtYXMKKyAgICAgICAgaW4gdGhlIHRhcmdldCBpbWFnZS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1nZXR0ZXh0Jz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmdldHRleHQuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmdldHRleHQ8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvcgorICAgICAgICBidWlsZGluZyBzb2Z0d2FyZSB0aGF0IHVzZXMgdGhlIEdOVSA8ZmlsZW5hbWU+Z2V0dGV4dDwvZmlsZW5hbWU+CisgICAgICAgIGludGVybmF0aW9uYWxpemF0aW9uIGFuZCBsb2NhbGl6YXRpb24gc3lzdGVtLgorICAgICAgICBBbGwgcmVjaXBlcyBidWlsZGluZyBzb2Z0d2FyZSB0aGF0IHVzZQorICAgICAgICA8ZmlsZW5hbWU+Z2V0dGV4dDwvZmlsZW5hbWU+IHNob3VsZCBpbmhlcml0IHRoaXMgY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZ25vbWViYXNlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmdub21lYmFzZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z25vbWViYXNlPC9maWxlbmFtZT4gY2xhc3MgaXMgdGhlIGJhc2UKKyAgICAgICAgY2xhc3MgZm9yIHJlY2lwZXMgdGhhdCBidWlsZCBzb2Z0d2FyZSBmcm9tIHRoZSBHTk9NRSBzdGFjay4KKyAgICAgICAgVGhpcyBjbGFzcyBzZXRzCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPiB0bworICAgICAgICBkb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIEdOT01FIG1pcnJvcnMgYXMgd2VsbCBhcyBleHRlbmRpbmcKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgd2l0aCB0aGUgdHlwaWNhbCBHTk9NRSBpbnN0YWxsYXRpb24gcGF0aHMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZ29iamVjdC1pbnRyb3NwZWN0aW9uJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmdvYmplY3QtaW50cm9zcGVjdGlvbi5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIHJlY2lwZXMgYnVpbGRpbmcgc29mdHdhcmUgdGhhdAorICAgICAgICBzdXBwb3J0cyBHT2JqZWN0IGludHJvc3BlY3Rpb24uCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGVuYWJsZWQgaWYgdGhlCisgICAgICAgICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIgZmVhdHVyZSBpcyBpbgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGFzIHdlbGwgYXMgInFlbXUtdXNlcm1vZGUiIGJlaW5nIGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0ZFQVRVUkVTJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYmFja2ZpbGxlZCBieSBkZWZhdWx0IGFuZCwKKyAgICAgICAgICAgIGlmIG5vdCBhcHBsaWNhYmxlLCBzaG91bGQgYmUgZGlzYWJsZWQgdGhyb3VnaAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIG9yCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZ3J1Yi1lZmknPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Z3J1Yi1lZmkuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT4KKyAgICAgICAgY2xhc3MgcHJvdmlkZXMgPGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT4tc3BlY2lmaWMgZnVuY3Rpb25zIGZvcgorICAgICAgICBidWlsZGluZyBib290YWJsZSBpbWFnZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3Mgc3VwcG9ydHMgc2V2ZXJhbCB2YXJpYWJsZXM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSVRSRCc+PGZpbGVuYW1lPklOSVRSRDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlCisgICAgICAgICAgICAgICAgYXMgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJkKSAob3B0aW9uYWwpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ST09URlMnPjxmaWxlbmFtZT5ST09URlM8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgSW5kaWNhdGVzIGEgZmlsZXN5c3RlbSBpbWFnZSB0byBpbmNsdWRlIGFzIHRoZSByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAob3B0aW9uYWwpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HUlVCX0dGWFNFUklBTCc+PGZpbGVuYW1lPkdSVUJfR0ZYU0VSSUFMPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIFNldCB0aGlzIHRvICIxIiB0byBoYXZlIGdyYXBoaWNzIGFuZCBzZXJpYWwgaW4gdGhlIGJvb3QgbWVudS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTEFCRUxTJz48ZmlsZW5hbWU+TEFCRUxTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIEEgbGlzdCBvZiB0YXJnZXRzIGZvciB0aGUgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFQUEVORCc+PGZpbGVuYW1lPkFQUEVORDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxBQkVMPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUdSVUJfT1BUUyc+PGZpbGVuYW1lPkdSVUJfT1BUUzwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gYWRkIHRvIHRoZSBjb25maWd1cmF0aW9uIChvcHRpb25hbCkuCisgICAgICAgICAgICAgICAgT3B0aW9ucyBhcmUgZGVsaW1pdGVkIHVzaW5nIHNlbWktY29sb24gY2hhcmFjdGVycworICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+OzwvZmlsZW5hbWU+KS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItR1JVQl9USU1FT1VUJz48ZmlsZW5hbWU+R1JVQl9USU1FT1VUPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIFRpbWVvdXQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgZGVmYXVsdCA8ZmlsZW5hbWU+TEFCRUw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIChvcHRpb25hbCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1nc2V0dGluZ3MnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Z3NldHRpbmdzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5nc2V0dGluZ3M8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICBwcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgcmVjaXBlcyB0aGF0IG5lZWQgdG8gaW5zdGFsbAorICAgICAgICBHU2V0dGluZ3MgKGdsaWIpIHNjaGVtYXMuCisgICAgICAgIFRoZSBzY2hlbWFzIGFyZSBhc3N1bWVkIHRvIGJlIHBhcnQgb2YgdGhlIG1haW4gcGFja2FnZS4KKyAgICAgICAgQXBwcm9wcmlhdGUgcG9zdC1pbnN0YWxsIGFuZCBwb3N0LXJlbW92ZSAocG9zdGluc3QvcG9zdHJtKQorICAgICAgICBzY3JpcHRsZXRzIGFyZSBhZGRlZCB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGUgc2NoZW1hcyBpbiB0aGUKKyAgICAgICAgdGFyZ2V0IGltYWdlLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWd0ay1kb2MnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Z3RrLWRvYy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z3RrLWRvYzwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGlzIGEgaGVscGVyIGNsYXNzIHRvIHB1bGwgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIDxmaWxlbmFtZT5ndGstZG9jPC9maWxlbmFtZT4gZGVwZW5kZW5jaWVzIGFuZCBkaXNhYmxlCisgICAgICAgIDxmaWxlbmFtZT5ndGstZG9jPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZ3RrLWljb24tY2FjaGUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Z3RrLWljb24tY2FjaGUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmd0ay1pY29uLWNhY2hlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgZ2VuZXJhdGVzIHRoZSBwcm9wZXIgcG9zdC1pbnN0YWxsIGFuZCBwb3N0LXJlbW92ZSAocG9zdGluc3QvcG9zdHJtKQorICAgICAgICBzY3JpcHRsZXRzIGZvciBwYWNrYWdlcyB0aGF0IHVzZSBHVEsrIGFuZCBpbnN0YWxsIGljb25zLgorICAgICAgICBUaGVzZSBzY3JpcHRsZXRzIGNhbGwgPGZpbGVuYW1lPmd0ay11cGRhdGUtaWNvbi1jYWNoZTwvZmlsZW5hbWU+IHRvIGFkZAorICAgICAgICB0aGUgZm9udHMgdG8gR1RLKydzIGljb24gY2FjaGUuCisgICAgICAgIFNpbmNlIHRoZSBjYWNoZSBmaWxlcyBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLAorICAgICAgICA8ZmlsZW5hbWU+Z3RrLXVwZGF0ZS1pY29uLWNhY2hlPC9maWxlbmFtZT4gaXMgcnVuIHVzaW5nIFFFTVUgaWYgdGhlCisgICAgICAgIHBvc3RpbnN0IHNjcmlwdGxldHMgbmVlZCB0byBiZSBydW4gb24gdGhlIGJ1aWxkIGhvc3QgZHVyaW5nIGltYWdlCisgICAgICAgIGNyZWF0aW9uLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWd0ay1pbW1vZHVsZXMtY2FjaGUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Z3RrLWltbW9kdWxlcy1jYWNoZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z3RrLWltbW9kdWxlcy1jYWNoZTwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGdlbmVyYXRlcyB0aGUgcHJvcGVyIHBvc3QtaW5zdGFsbCBhbmQgcG9zdC1yZW1vdmUgKHBvc3RpbnN0L3Bvc3RybSkKKyAgICAgICAgc2NyaXB0bGV0cyBmb3IgcGFja2FnZXMgdGhhdCBpbnN0YWxsIEdUSysgaW5wdXQgbWV0aG9kIG1vZHVsZXMgZm9yCisgICAgICAgIHZpcnR1YWwga2V5Ym9hcmRzLgorICAgICAgICBUaGVzZSBzY3JpcHRsZXRzIGNhbGwgPGZpbGVuYW1lPmd0ay11cGRhdGUtaWNvbi1jYWNoZTwvZmlsZW5hbWU+IHRvIGFkZAorICAgICAgICB0aGUgaW5wdXQgbWV0aG9kIG1vZHVsZXMgdG8gdGhlIGNhY2hlLgorICAgICAgICBTaW5jZSB0aGUgY2FjaGUgZmlsZXMgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYywKKyAgICAgICAgPGZpbGVuYW1lPmd0ay11cGRhdGUtaWNvbi1jYWNoZTwvZmlsZW5hbWU+IGlzIHJ1biB1c2luZyBRRU1VIGlmIHRoZQorICAgICAgICBwb3N0aW5zdCBzY3JpcHRsZXRzIG5lZWQgdG8gYmUgcnVuIG9uIHRoZSBidWlsZCBob3N0IGR1cmluZyBpbWFnZQorICAgICAgICBjcmVhdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgdGhlIGlucHV0IG1ldGhvZCBtb2R1bGVzIGJlaW5nIGluc3RhbGxlZCBhcmUgaW4gcGFja2FnZXMgb3RoZXIgdGhhbgorICAgICAgICB0aGUgbWFpbiBwYWNrYWdlLCBzZXQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUdUS0lNTU9EVUxFU19QQUNLQUdFUyc+PGZpbGVuYW1lPkdUS0lNTU9EVUxFU19QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlcyBjb250YWluaW5nIHRoZSBtb2R1bGVzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWd6aXBuYXRpdmUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+Z3ppcG5hdGl2ZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z3ppcG5hdGl2ZTwvZmlsZW5hbWU+IGNsYXNzIGVuYWJsZXMgdGhlIHVzZSBvZgorICAgICAgICBkaWZmZXJlbnQgbmF0aXZlIHZlcnNpb25zIG9mIDxmaWxlbmFtZT5nemlwPC9maWxlbmFtZT4KKyAgICAgICAgYW5kIDxmaWxlbmFtZT5waWd6PC9maWxlbmFtZT4gcmF0aGVyIHRoYW4gdGhlIHZlcnNpb25zIG9mIHRoZXNlIHRvb2xzCisgICAgICAgIGZyb20gdGhlIGJ1aWxkIGhvc3QuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtaWNlY2MnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+aWNlY2MuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2ljZWNjL2ljZWNyZWFtJz5JY2VjcmVhbTwvdWxpbms+LCB3aGljaAorICAgICAgICBmYWNpbGl0YXRlcyB0YWtpbmcgY29tcGlsZSBqb2JzIGFuZCBkaXN0cmlidXRpbmcgdGhlbSBhbW9uZyByZW1vdGUKKyAgICAgICAgbWFjaGluZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBjbGFzcyBzdGFnZXMgZGlyZWN0b3JpZXMgd2l0aCBzeW1saW5rcyBmcm9tIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPgorICAgICAgICBhbmQgPGZpbGVuYW1lPmcrKzwvZmlsZW5hbWU+IHRvIDxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+LCBmb3IgYm90aAorICAgICAgICBuYXRpdmUgYW5kIGNyb3NzIGNvbXBpbGVycy4KKyAgICAgICAgRGVwZW5kaW5nIG9uIGVhY2ggY29uZmlndXJlIG9yIGNvbXBpbGUsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgIGFkZHMgdGhlIGRpcmVjdG9yaWVzIGF0IHRoZSBoZWFkIG9mIHRoZSA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGxpc3QKKyAgICAgICAgYW5kIHRoZW4gc2V0cyB0aGUgPGZpbGVuYW1lPklDRUNDX0NYWDwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+SUNFQ19DQzwvZmlsZW5hbWU+IHZhcmlhYmxlcywgd2hpY2ggYXJlIHRoZSBwYXRocyB0byB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmcrKzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4gY29tcGlsZXJzLAorICAgICAgICByZXNwZWN0aXZlbHkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciB0aGUgY3Jvc3MgY29tcGlsZXIsIHRoZSBjbGFzcyBjcmVhdGVzIGEgPGZpbGVuYW1lPnRhci5nejwvZmlsZW5hbWU+CisgICAgICAgIGZpbGUgdGhhdCBjb250YWlucyB0aGUgWW9jdG8gUHJvamVjdCB0b29sY2hhaW4gYW5kIHNldHMKKyAgICAgICAgPGZpbGVuYW1lPklDRUNDX1ZFUlNJT048L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHZlcnNpb24gb2YgdGhlCisgICAgICAgIGNyb3NzLWNvbXBpbGVyIHVzZWQgaW4gdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiwgYWNjb3JkaW5nbHkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBjbGFzcyBoYW5kbGVzIGFsbCB0aHJlZSBkaWZmZXJlbnQgY29tcGlsZSBzdGFnZXMKKyAgICAgICAgKGkuZSBuYXRpdmUgLGNyb3NzLWtlcm5lbCBhbmQgdGFyZ2V0KSBhbmQgY3JlYXRlcyB0aGUgbmVjZXNzYXJ5CisgICAgICAgIGVudmlyb25tZW50IDxmaWxlbmFtZT50YXIuZ3o8L2ZpbGVuYW1lPiBmaWxlIHRvIGJlIHVzZWQgYnkgdGhlIHJlbW90ZQorICAgICAgICBtYWNoaW5lcy4KKyAgICAgICAgVGhlIGNsYXNzIGFsc28gc3VwcG9ydHMgU0RLIGdlbmVyYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIDxsaW5rIGxpbmtlbmQ9J3Zhci1JQ0VDQ19QQVRIJz48ZmlsZW5hbWU+SUNFQ0NfUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBpcyBub3Qgc2V0IGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB0aGVuIHRoZQorICAgICAgICBjbGFzcyB0cmllcyB0byBsb2NhdGUgdGhlIDxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+IGJpbmFyeQorICAgICAgICB1c2luZyA8ZmlsZW5hbWU+d2hpY2g8L2ZpbGVuYW1lPi4KKworICAgICAgICBJZgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSUNFQ0NfRU5WX0VYRUMnPjxmaWxlbmFtZT5JQ0VDQ19FTlZfRVhFQzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBpcyBzZXQgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHRoZSB2YXJpYWJsZSBzaG91bGQKKyAgICAgICAgcG9pbnQgdG8gdGhlIDxmaWxlbmFtZT5pY2VjYy1jcmVhdGUtZW52PC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLgorICAgICAgICBJZiB5b3UgZG8gbm90IHBvaW50IHRvIGEgdXNlci1wcm92aWRlZCBzY3JpcHQsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgdXNlcyB0aGUgZGVmYXVsdCBzY3JpcHQgcHJvdmlkZWQgYnkgdGhlIHJlY2lwZQorICAgICAgICA8ZmlsZW5hbWU+aWNlY2MtY3JlYXRlLWVudi1uYXRpdmUuYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGlzIHNjcmlwdCBpcyBhIG1vZGlmaWVkIHZlcnNpb24gYW5kIG5vdCB0aGUgb25lIHRoYXQgY29tZXMgd2l0aAorICAgICAgICAgICAgPGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT4uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IHRoZSBJY2VjcmVhbSBkaXN0cmlidXRlZCBjb21waWxlIHN1cHBvcnQgdG8gYXBwbHkKKyAgICAgICAgdG8gc3BlY2lmaWMgcmVjaXBlcyBvciBjbGFzc2VzLCB5b3UgY2FuIGVmZmVjdGl2ZWx5ICJibGFja2xpc3QiIHRoZW0KKyAgICAgICAgYnkgbGlzdGluZyB0aGUgcmVjaXBlcyBhbmQgY2xhc3NlcyB1c2luZyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlDRUNDX1VTRVJfUEFDS0FHRV9CTCc+PGZpbGVuYW1lPklDRUNDX1VTRVJfUEFDS0FHRV9CTDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlDRUNDX1VTRVJfQ0xBU1NfQkwnPjxmaWxlbmFtZT5JQ0VDQ19VU0VSX0NMQVNTX0JMPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICB2YXJpYWJsZXMsIHJlc3BlY3RpdmVseSwgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgIERvaW5nIHNvIGNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBoYW5kbGUgdGhlc2UKKyAgICAgICAgY29tcGlsYXRpb25zIGxvY2FsbHkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IGNhbiBsaXN0IHJlY2lwZXMgdXNpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JQ0VDQ19VU0VSX1BBQ0tBR0VfV0wnPjxmaWxlbmFtZT5JQ0VDQ19VU0VSX1BBQ0tBR0VfV0w8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgdG8gZm9yY2UKKyAgICAgICAgPGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT4gdG8gYmUgZW5hYmxlZCBmb3IgcmVjaXBlcyB1c2luZyBhbiBlbXB0eQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluaGVyaXRpbmcgdGhlIDxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+IGNsYXNzIGNoYW5nZXMgYWxsIHNzdGF0ZQorICAgICAgICBzaWduYXR1cmVzLgorICAgICAgICBDb25zZXF1ZW50bHksIGlmIGEgZGV2ZWxvcG1lbnQgdGVhbSBoYXMgYSBkZWRpY2F0ZWQgYnVpbGQgc3lzdGVtCisgICAgICAgIHRoYXQgcG9wdWxhdGVzCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgYW5kIHRoZXkgd2FudCB0byByZXVzZSBzc3RhdGUgZnJvbQorICAgICAgICA8ZmlsZW5hbWU+U1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+LCB0aGVuIGFsbCBkZXZlbG9wZXJzIGFuZCB0aGUKKyAgICAgICAgYnVpbGQgc3lzdGVtIG5lZWQgdG8gZWl0aGVyIGluaGVyaXQgdGhlIDxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+CisgICAgICAgIGNsYXNzIG9yIG5vYm9keSBzaG91bGQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEF0IHRoZSBkaXN0cmlidXRpb24gbGV2ZWwsIHlvdSBjYW4gaW5oZXJpdCB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT4gY2xhc3MgdG8gYmUgc3VyZSB0aGF0IGFsbCBidWlsZGVycyBzdGFydAorICAgICAgICB3aXRoIHRoZSBzYW1lIHNzdGF0ZSBzaWduYXR1cmVzLgorICAgICAgICBBZnRlciBpbmhlcml0aW5nIHRoZSBjbGFzcywgeW91IGNhbiB0aGVuIGRpc2FibGUgdGhlIGZlYXR1cmUgYnkgc2V0dGluZworICAgICAgICB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlDRUNDX0RJU0FCTEVEJz48ZmlsZW5hbWU+SUNFQ0NfRElTQUJMRUQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgdG8gIjEiIGFzIGZvbGxvd3M6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVF9ESVNUUk9fYXBwZW5kID0gIiBpY2VjYyIKKyAgICAgSUNFQ0NfRElTQUJMRUQgPz89ICIxIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFRoaXMgcHJhY3RpY2UgbWFrZXMgc3VyZSBldmVyeW9uZSBpcyB1c2luZyB0aGUgc2FtZSBzaWduYXR1cmVzIGJ1dCBhbHNvCisgICAgICAgIHJlcXVpcmVzIGluZGl2aWR1YWxzIHRoYXQgZG8gd2FudCB0byB1c2UgSWNlY3JlYW0gdG8gZW5hYmxlIHRoZSBmZWF0dXJlCisgICAgICAgIGluZGl2aWR1YWxseSBhcyBmb2xsb3dzIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElDRUNDX0RJU0FCTEVEID0gIiIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWltYWdlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+IGNsYXNzIGhlbHBzIHN1cHBvcnQgY3JlYXRpbmcgaW1hZ2VzCisgICAgICAgIGluIGRpZmZlcmVudCBmb3JtYXRzLgorICAgICAgICBGaXJzdCwgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkIGZyb20gcGFja2FnZXMgdXNpbmcKKyAgICAgICAgb25lIG9mIHRoZSA8ZmlsZW5hbWU+cm9vdGZzKi5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgZmlsZXMgKGRlcGVuZGluZyBvbiB0aGUgcGFja2FnZSBmb3JtYXQgdXNlZCkgYW5kIHRoZW4gb25lIG9yIG1vcmUgaW1hZ2UKKyAgICAgICAgZmlsZXMgYXJlIGNyZWF0ZWQuCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz5JTUFHRV9GU1RZUEVTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgY29udHJvbHMgdGhlIHR5cGVzIG9mIGltYWdlcyB0byBnZW5lcmF0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0lOU1RBTEwnPklNQUdFX0lOU1RBTEw8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBjb250cm9scyB0aGUgbGlzdCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gdGhlCisgICAgICAgICAgICAgICAgaW1hZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3VzdG9taXppbmcgaW1hZ2VzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlJz5DdXN0b21pemluZyBJbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgaW1hZ2VzIGFyZSBjcmVhdGVkLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlcy1kZXYtZW52aXJvbm1lbnQnPkltYWdlczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jcGV0cyBNYW51YWwuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtaW1hZ2UtYnVpbGRpbmZvJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlLWJ1aWxkaW5mby5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW1hZ2UtYnVpbGRpbmZvPC9maWxlbmFtZT4gY2xhc3Mgd3JpdGVzIGluZm9ybWF0aW9uCisgICAgICAgIHRvIHRoZSB0YXJnZXQgZmlsZXN5c3RlbSBvbiA8ZmlsZW5hbWU+L2V0Yy9idWlsZDwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWltYWdlX3R5cGVzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlX3R5cGVzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IGNsYXNzIGRlZmluZXMgYWxsIG9mIHRoZQorICAgICAgICBzdGFuZGFyZCBpbWFnZSBvdXRwdXQgdHlwZXMgdGhhdCB5b3UgY2FuIGVuYWJsZSB0aHJvdWdoIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUuCisgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgY2xhc3MgYXMgYSByZWZlcmVuY2Ugb24gaG93IHRvIGFkZCBzdXBwb3J0IGZvcgorICAgICAgICBjdXN0b20gaW1hZ2Ugb3V0cHV0IHR5cGVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzcyBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgdGhlIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICBUaGUgPGZpbGVuYW1lPmltYWdlPC9maWxlbmFtZT4gY2xhc3MgdXNlcyB0aGUKKyAgICAgICAgPGZpbGVuYW1lPklNR0NMQVNTRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNR0NMQVNTRVMgPSAicm9vdGZzXyR7SU1BR0VfUEtHVFlQRX0gaW1hZ2VfdHlwZXMgJHtJTUFHRV9DTEFTU0VTfSIKKyAgICAgSU1HQ0xBU1NFUyArPSAiJHtAWydwb3B1bGF0ZV9zZGtfYmFzZScsICdwb3B1bGF0ZV9zZGtfZXh0J11bJ2xpbnV4JyBpbiBkLmdldFZhcigiU0RLX09TIildfSIKKyAgICAgSU1HQ0xBU1NFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ2xpdmUgaXNvIGhkZGltZycsICdpbWFnZS1saXZlJywgJycsIGQpfSIKKyAgICAgSU1HQ0xBU1NFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZTVFlQRVMnLCAnY29udGFpbmVyJywgJ2ltYWdlLWNvbnRhaW5lcicsICcnLCBkKX0iCisgICAgIElNR0NMQVNTRVMgKz0gImltYWdlX3R5cGVzX3dpYyIKKyAgICAgSU1HQ0xBU1NFUyArPSAicm9vdGZzLXBvc3Rjb21tYW5kcyIKKyAgICAgSU1HQ0xBU1NFUyArPSAiaW1hZ2UtcG9zdGluc3QtaW50ZXJjZXB0cyIKKyAgICAgaW5oZXJpdCAke0lNR0NMQVNTRVN9CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IGNsYXNzIGFsc28gaGFuZGxlcyBjb252ZXJzaW9uIGFuZAorICAgICAgICBjb21wcmVzc2lvbiBvZiBpbWFnZXMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVG8gYnVpbGQgYSBWTXdhcmUgVk1ESyBpbWFnZSwgeW91IG5lZWQgdG8gYWRkICJ3aWMudm1kayIgdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGlzIHdvdWxkIGFsc28gYmUgc2ltaWxhciBmb3IgVmlydHVhbCBCb3ggVmlydHVhbCBEaXNrIEltYWdlCisgICAgICAgICAgICAoInZkaSIpIGFuZCBRRU1VIENvcHkgT24gV3JpdGUgVmVyc2lvbiAyICgicWNvdzIiKSBpbWFnZXMuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlLWxpdmUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIGNvbnRyb2xzIGJ1aWxkaW5nICJsaXZlIiAoaS5lLiBIRERJTUcgYW5kIElTTykgaW1hZ2VzLgorICAgICAgICBMaXZlIGltYWdlcyBjb250YWluIHN5c2xpbnV4IGZvciBsZWdhY3kgYm9vdGluZywgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgYm9vdGxvYWRlciBzcGVjaWZpZWQgYnkKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVGSV9QUk9WSURFUic+PGZpbGVuYW1lPkVGSV9QUk9WSURFUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBpZgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY29udGFpbnMgImVmaSIuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE5vcm1hbGx5LCB5b3UgZG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5LgorICAgICAgICBJbnN0ZWFkLCB5b3UgYWRkICJsaXZlIiB0bworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtaW1hZ2UtbWtsaWJzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlLW1rbGlicy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW1hZ2UtbWtsaWJzPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgZW5hYmxlcyB0aGUgdXNlIG9mIHRoZSA8ZmlsZW5hbWU+bWtsaWJzPC9maWxlbmFtZT4gdXRpbGl0eSBkdXJpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdGFzaywgd2hpY2ggb3B0aW1pemVzIHRoZSBzaXplIG9mCisgICAgICAgIGxpYnJhcmllcyBjb250YWluZWQgaW4gdGhlIGltYWdlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgY2xhc3MgaXMgZW5hYmxlZCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYudGVtcGxhdGU8L2ZpbGVuYW1lPiB1c2luZyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJfQ0xBU1NFUyc+PGZpbGVuYW1lPlVTRVJfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFVTRVJfQ0xBU1NFUyA/PSAiYnVpbGRzdGF0cyBpbWFnZS1ta2xpYnMgaW1hZ2UtcHJlbGluayIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWltYWdlLXByZWxpbmsnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+aW1hZ2UtcHJlbGluay5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW1hZ2UtcHJlbGluazwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGVuYWJsZXMgdGhlIHVzZSBvZiB0aGUgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiB1dGlsaXR5IGR1cmluZworICAgICAgICB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXJvb3Rmcyc+PGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0YXNrLCB3aGljaCBvcHRpbWl6ZXMgdGhlIGR5bmFtaWMKKyAgICAgICAgbGlua2luZyBvZiBzaGFyZWQgbGlicmFyaWVzIHRvIHJlZHVjZSBleGVjdXRhYmxlIHN0YXJ0dXAgdGltZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGNsYXNzIGlzIGVuYWJsZWQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnRlbXBsYXRlPC9maWxlbmFtZT4gdXNpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSX0NMQVNTRVMnPjxmaWxlbmFtZT5VU0VSX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VSX0NMQVNTRVMgPz0gImJ1aWxkc3RhdHMgaW1hZ2UtbWtsaWJzIGltYWdlLXByZWxpbmsiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+aW5zYW5lLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPiBjbGFzcyBhZGRzIGEgc3RlcCB0byB0aGUgcGFja2FnZQorICAgICAgICBnZW5lcmF0aW9uIHByb2Nlc3Mgc28gdGhhdCBvdXRwdXQgcXVhbGl0eSBhc3N1cmFuY2UgY2hlY2tzIGFyZQorICAgICAgICBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgIEEgcmFuZ2Ugb2YgY2hlY2tzIGFyZSBwZXJmb3JtZWQgdGhhdCBjaGVjayB0aGUgYnVpbGQncyBvdXRwdXQKKyAgICAgICAgZm9yIGNvbW1vbiBwcm9ibGVtcyB0aGF0IHNob3cgdXAgZHVyaW5nIHJ1bnRpbWUuCisgICAgICAgIERpc3RyaWJ1dGlvbiBwb2xpY3kgdXN1YWxseSBkaWN0YXRlcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGhpcyBjbGFzcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBjb25maWd1cmUgdGhlIHNhbml0eSBjaGVja3Mgc28gdGhhdCBzcGVjaWZpYyB0ZXN0IGZhaWx1cmVzCisgICAgICAgIGVpdGhlciByYWlzZSBhIHdhcm5pbmcgb3IgYW4gZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgVHlwaWNhbGx5LCBmYWlsdXJlcyBmb3IgbmV3IHRlc3RzIGdlbmVyYXRlIGEgd2FybmluZy4KKyAgICAgICAgU3Vic2VxdWVudCBmYWlsdXJlcyBmb3IgdGhlIHNhbWUgdGVzdCB3b3VsZCB0aGVuIGdlbmVyYXRlIGFuIGVycm9yCisgICAgICAgIG1lc3NhZ2Ugb25jZSB0aGUgbWV0YWRhdGEgaXMgaW4gYSBrbm93biBhbmQgZ29vZCBjb25kaXRpb24uCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1xYS1jaGVja3MnPlFBIEVycm9yIGFuZCBXYXJuaW5nIE1lc3NhZ2VzPC9saW5rPiIKKyAgICAgICAgQ2hhcHRlciBmb3IgYSBsaXN0IG9mIGFsbCB0aGUgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgeW91IG1pZ2h0IGVuY291bnRlciB1c2luZyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVXNlIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV0FSTl9RQSc+PGZpbGVuYW1lPldBUk5fUUE8L2ZpbGVuYW1lPjwvbGluaz4gYW5kCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FUlJPUl9RQSc+PGZpbGVuYW1lPkVSUk9SX1FBPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlcyB0byBjb250cm9sIHRoZSBiZWhhdmlvciBvZgorICAgICAgICB0aGVzZSBjaGVja3MgYXQgdGhlIGdsb2JhbCBsZXZlbCAoaS5lLiBpbiB5b3VyIGN1c3RvbSBkaXN0cm8KKyAgICAgICAgY29uZmlndXJhdGlvbikuCisgICAgICAgIEhvd2V2ZXIsIHRvIHNraXAgb25lIG9yIG1vcmUgY2hlY2tzIGluIHJlY2lwZXMsIHlvdSBzaG91bGQgdXNlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTlNBTkVfU0tJUCc+PGZpbGVuYW1lPklOU0FORV9TS0lQPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICBGb3IgZXhhbXBsZSwgdG8gc2tpcCB0aGUgY2hlY2sgZm9yIHN5bWJvbGljIGxpbmsKKyAgICAgICAgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGVzIGluIHRoZSBtYWluIHBhY2thZ2Ugb2YgYSByZWNpcGUsCisgICAgICAgIGFkZCB0aGUgZm9sbG93aW5nIHRvIHRoZSByZWNpcGUuCisgICAgICAgIFlvdSBuZWVkIHRvIHJlYWxpemUgdGhhdCB0aGUgcGFja2FnZSBuYW1lIG92ZXJyaWRlLCBpbiB0aGlzIGV4YW1wbGUKKyAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4sIG11c3QgYmUgdXNlZDoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgUUEgY2hlY2tzIGV4aXN0IGluIG9yZGVyIHRvIGRldGVjdCByZWFsCisgICAgICAgIG9yIHBvdGVudGlhbCBwcm9ibGVtcyBpbiB0aGUgcGFja2FnZWQgb3V0cHV0LgorICAgICAgICBTbyBleGVyY2lzZSBjYXV0aW9uIHdoZW4gZGlzYWJsaW5nIHRoZXNlIGNoZWNrcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSB0ZXN0cyB5b3UgY2FuIGxpc3Qgd2l0aCB0aGUKKyAgICAgICAgPGZpbGVuYW1lPldBUk5fUUE8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPkVSUk9SX1FBPC9maWxlbmFtZT4KKyAgICAgICAgdmFyaWFibGVzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+YWxyZWFkeS1zdHJpcHBlZDo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgcHJvZHVjZWQgYmluYXJpZXMgaGF2ZSBub3QgYWxyZWFkeSBiZWVuCisgICAgICAgICAgICAgICAgc3RyaXBwZWQgcHJpb3IgdG8gdGhlIGJ1aWxkIHN5c3RlbSBleHRyYWN0aW5nIGRlYnVnIHN5bWJvbHMuCisgICAgICAgICAgICAgICAgSXQgaXMgY29tbW9uIGZvciB1cHN0cmVhbSBzb2Z0d2FyZSBwcm9qZWN0cyB0byBkZWZhdWx0IHRvCisgICAgICAgICAgICAgICAgc3RyaXBwaW5nIGRlYnVnIHN5bWJvbHMgZm9yIG91dHB1dCBiaW5hcmllcy4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgZGVidWdnaW5nIHRvIHdvcmsgb24gdGhlIHRhcmdldCB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4gcGFja2FnZXMsIHRoaXMgc3RyaXBwaW5nIG11c3QgYmUKKyAgICAgICAgICAgICAgICBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmFyY2g6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyB0aGUgRXhlY3V0YWJsZSBhbmQgTGlua2FibGUgRm9ybWF0IChFTEYpIHR5cGUsIGJpdCBzaXplLAorICAgICAgICAgICAgICAgIGFuZCBlbmRpYW5uZXNzIG9mIGFueSBiaW5hcmllcyB0byBlbnN1cmUgdGhleSBtYXRjaCB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIFRoaXMgdGVzdCBmYWlscyBpZiBhbnkgYmluYXJpZXMgZG8gbm90IG1hdGNoIHRoZSB0eXBlIHNpbmNlCisgICAgICAgICAgICAgICAgdGhlcmUgd291bGQgYmUgYW4gaW5jb21wYXRpYmlsaXR5LgorICAgICAgICAgICAgICAgIFRoZSB0ZXN0IGNvdWxkIGluZGljYXRlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgd3JvbmcgY29tcGlsZXIgb3IgY29tcGlsZXIgb3B0aW9ucyBoYXZlIGJlZW4gdXNlZC4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgc29mdHdhcmUsIGxpa2UgYm9vdGxvYWRlcnMsIG1pZ2h0IG5lZWQgdG8gYnlwYXNzCisgICAgICAgICAgICAgICAgdGhpcyBjaGVjay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmJ1aWxkcGF0aHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyBmb3IgcGF0aHMgdG8gbG9jYXRpb25zIG9uIHRoZSBidWlsZCBob3N0IGluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICBvdXRwdXQgZmlsZXMuCisgICAgICAgICAgICAgICAgQ3VycmVudGx5LCB0aGlzIHRlc3QgdHJpZ2dlcnMgdG9vIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGFuZAorICAgICAgICAgICAgICAgIHRodXMgaXMgbm90IG5vcm1hbGx5IGVuYWJsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5idWlsZC1kZXBzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIGlmIGEgYnVpbGQtdGltZSBkZXBlbmRlbmN5IHRoYXQgaXMgc3BlY2lmaWVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgZXhwbGljaXQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBvciB0YXNrLWxldmVsIGRlcGVuZGVuY2llcyBleGlzdHMgdG8gbWF0Y2ggYW55IHJ1bnRpbWUKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgIFRoaXMgZGV0ZXJtaW5hdGlvbiBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHRvIGRpc2NvdmVyIHdoZXJlCisgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmNpZXMgYXJlIGRldGVjdGVkIGFuZCBhZGRlZCBkdXJpbmcgcGFja2FnaW5nLgorICAgICAgICAgICAgICAgIElmIG5vIGV4cGxpY2l0IGRlcGVuZGVuY3kgaGFzIGJlZW4gc3BlY2lmaWVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICBtZXRhZGF0YSwgYXQgdGhlIHBhY2thZ2luZyBzdGFnZSBpdCBpcyB0b28gbGF0ZSB0byBlbnN1cmUgdGhhdAorICAgICAgICAgICAgICAgIHRoZSBkZXBlbmRlbmN5IGlzIGJ1aWx0LCBhbmQgdGh1cyB5b3UgY2FuIGVuZCB1cCB3aXRoIGFuCisgICAgICAgICAgICAgICAgZXJyb3Igd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGJlY2F1c2UgdGhlIGF1dG8tZGV0ZWN0ZWQgZGVwZW5kZW5jeSB3YXMgbm90IHNhdGlzZmllZC4KKyAgICAgICAgICAgICAgICBBbiBleGFtcGxlIG9mIHRoaXMgd291bGQgYmUgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXBkYXRlLXJjLmQnPjxmaWxlbmFtZT51cGRhdGUtcmMuZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGF1dG9tYXRpY2FsbHkgYWRkcyBhIGRlcGVuZGVuY3kgb24gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluaXRzY3JpcHRzLWZ1bmN0aW9uczwvZmlsZW5hbWU+IHBhY2thZ2UgdG8gcGFja2FnZXMKKyAgICAgICAgICAgICAgICB0aGF0IGluc3RhbGwgYW4gaW5pdHNjcmlwdCB0aGF0IHJlZmVycyB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC9mdW5jdGlvbnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHNob3VsZCByZWFsbHkgaGF2ZSBhbiBleHBsaWNpdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IGZvciB0aGUgcGFja2FnZSBpbiBxdWVzdGlvbiBvbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0c2NyaXB0cy1mdW5jdGlvbnM8L2ZpbGVuYW1lPiBzbyB0aGF0IHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYWJsZSB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5pdHNjcmlwdHM8L2ZpbGVuYW1lPiByZWNpcGUgaXMgYWN0dWFsbHkgYnVpbHQgYW5kCisgICAgICAgICAgICAgICAgdGh1cyB0aGUgPGZpbGVuYW1lPmluaXRzY3JpcHRzLWZ1bmN0aW9uczwvZmlsZW5hbWU+IHBhY2thZ2UgaXMKKyAgICAgICAgICAgICAgICBtYWRlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmNvbXBpbGUtaG9zdC1wYXRoOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgbG9nIGZvciBpbmRpY2F0aW9ucworICAgICAgICAgICAgICAgIHRoYXQgcGF0aHMgdG8gbG9jYXRpb25zIG9uIHRoZSBidWlsZCBob3N0IHdlcmUgdXNlZC4KKyAgICAgICAgICAgICAgICBVc2luZyBzdWNoIHBhdGhzIG1pZ2h0IHJlc3VsdCBpbiBob3N0IGNvbnRhbWluYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgYnVpbGQgb3V0cHV0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGVidWctZGVwczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgYWxsIHBhY2thZ2VzIGV4Y2VwdCA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGFja2FnZXMgZG8gbm90IGRlcGVuZCBvbiA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGFja2FnZXMsIHdoaWNoIHdvdWxkIGNhdXNlIGEgcGFja2FnaW5nIGJ1Zy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRlYnVnLWZpbGVzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgZm9yIDxmaWxlbmFtZT4uZGVidWc8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBpbiBhbnl0aGluZyBidXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFRoZSBkZWJ1ZyBmaWxlcyBzaG91bGQgYWxsIGJlIGluIHRoZSA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgVGh1cywgYW55dGhpbmcgcGFja2FnZWQgZWxzZXdoZXJlIGlzIGluY29ycmVjdCBwYWNrYWdpbmcuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kZXAtY21wOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgZm9yIGludmFsaWQgdmVyc2lvbiBjb21wYXJpc29uIHN0YXRlbWVudHMgaW4gcnVudGltZQorICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHBhY2thZ2VzIChpLmUuIGluCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJTVUdHRVNUUyc+PGZpbGVuYW1lPlJTVUdHRVNUUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlBST1ZJREVTJz48ZmlsZW5hbWU+UlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVQTEFDRVMnPjxmaWxlbmFtZT5SUkVQTEFDRVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJDT05GTElDVFMnPjxmaWxlbmFtZT5SQ09ORkxJQ1RTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzKS4KKyAgICAgICAgICAgICAgICBBbnkgaW52YWxpZCBjb21wYXJpc29ucyBtaWdodCB0cmlnZ2VyIGZhaWx1cmVzIG9yIHVuZGVzaXJhYmxlCisgICAgICAgICAgICAgICAgYmVoYXZpb3Igd2hlbiBwYXNzZWQgdG8gdGhlIHBhY2thZ2UgbWFuYWdlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRlc2t0b3A6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFJ1bnMgdGhlIDxmaWxlbmFtZT5kZXNrdG9wLWZpbGUtdmFsaWRhdGU8L2ZpbGVuYW1lPiBwcm9ncmFtCisgICAgICAgICAgICAgICAgYWdhaW5zdCBhbnkgPGZpbGVuYW1lPi5kZXNrdG9wPC9maWxlbmFtZT4gZmlsZXMgdG8gdmFsaWRhdGUKKyAgICAgICAgICAgICAgICB0aGVpciBjb250ZW50cyBhZ2FpbnN0IHRoZSBzcGVjaWZpY2F0aW9uIGZvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uZGVza3RvcDwvZmlsZW5hbWU+IGZpbGVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2LWRlcHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyB0aGF0IGFsbCBwYWNrYWdlcyBleGNlcHQgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT4tc3RhdGljZGV2PC9maWxlbmFtZT4gcGFja2FnZXMgZG8gbm90IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gcGFja2FnZXMsIHdoaWNoIHdvdWxkIGJlIGEKKyAgICAgICAgICAgICAgICBwYWNrYWdpbmcgYnVnLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2LXNvOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgdGhhdCB0aGUgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IHN5bWJvbGljIGxpbmtzIGFyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgYW5kIG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIHRoZXNlIHN5bWxpbmtzIGFyZSBvbmx5IHVzZWZ1bCBmb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gcGFja2FnZSBpcyB0aGUgY29ycmVjdCBsb2NhdGlvbiBmb3IKKyAgICAgICAgICAgICAgICB0aGVtLgorICAgICAgICAgICAgICAgIFNvbWUgdmVyeSByYXJlIGNhc2VzIGRvIGV4aXN0IGZvciBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyB3aGVyZQorICAgICAgICAgICAgICAgIHRoZXNlIHN5bWxpbmtzIGFyZSBuZWVkZWQgaW5zdGVhZCBpbiB0aGUgbWFpbiBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZmlsZS1yZGVwczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgZmlsZS1sZXZlbCBkZXBlbmRlbmNpZXMgaWRlbnRpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF0IHBhY2thZ2luZyB0aW1lIGFyZSBzYXRpc2ZpZWQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgc2hlbGwgc2NyaXB0IG1pZ2h0IHN0YXJ0IHdpdGggdGhlIGxpbmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+IyEvYmluL2Jhc2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGlzIGxpbmUgd291bGQgdHJhbnNsYXRlIHRvIGEgZmlsZSBkZXBlbmRlbmN5IG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9iaW4vYmFzaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIE9mIHRoZSB0aHJlZSBwYWNrYWdlIG1hbmFnZXJzIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSBzdXBwb3J0cywgb25seSBSUE0gZGlyZWN0bHkgaGFuZGxlcyBmaWxlLWxldmVsCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLCByZXNvbHZpbmcgdGhlbSBhdXRvbWF0aWNhbGx5IHRvIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgcHJvdmlkaW5nIHRoZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgbGFjayBvZiB0aGF0IGZ1bmN0aW9uYWxpdHkgaW4gdGhlIG90aGVyIHR3bworICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlcnMgZG9lcyBub3QgbWVhbiB0aGUgZGVwZW5kZW5jaWVzIGRvIG5vdCBzdGlsbAorICAgICAgICAgICAgICAgIG5lZWQgcmVzb2x2aW5nLgorICAgICAgICAgICAgICAgIFRoaXMgUUEgY2hlY2sgYXR0ZW1wdHMgdG8gZW5zdXJlIHRoYXQgZXhwbGljaXRseSBkZWNsYXJlZAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgZXhpc3QgdG8gaGFuZGxlIGFueSBmaWxlLWxldmVsIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgaW4KKyAgICAgICAgICAgICAgICBwYWNrYWdlZCBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmZpbGVzLWludmFsaWQ6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyBmb3IKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHZhbHVlcyB0aGF0IGNvbnRhaW4gIi8vIiwgd2hpY2ggaXMgaW52YWxpZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0naW5zYW5lLWhvc3QtdXNlci1jb250YW1pbmF0ZWQnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aG9zdC11c2VyLWNvbnRhbWluYXRlZDo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgbm8gcGFja2FnZSBwcm9kdWNlZCBieSB0aGUgcmVjaXBlIGNvbnRhaW5zIGFueQorICAgICAgICAgICAgICAgIGZpbGVzIG91dHNpZGUgb2YgPGZpbGVuYW1lPi9ob21lPC9maWxlbmFtZT4gd2l0aCBhIHVzZXIgb3IKKyAgICAgICAgICAgICAgICBncm91cCBJRCB0aGF0IG1hdGNoZXMgdGhlIHVzZXIgcnVubmluZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgIEEgbWF0Y2ggdXN1YWxseSBpbmRpY2F0ZXMgdGhhdCB0aGUgZmlsZXMgYXJlIGJlaW5nIGluc3RhbGxlZAorICAgICAgICAgICAgICAgIHdpdGggYW4gaW5jb3JyZWN0IFVJRC9HSUQsIHNpbmNlIHRhcmdldCBJRHMgYXJlIGluZGVwZW5kZW50CisgICAgICAgICAgICAgICAgZnJvbSBob3N0IElEcy4KKyAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc2VlIHRoZSBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmluY29tcGF0aWJsZS1saWNlbnNlOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZXBvcnQgd2hlbiBwYWNrYWdlcyBhcmUgZXhjbHVkZWQgZnJvbSBiZWluZyBjcmVhdGVkIGR1ZSB0bworICAgICAgICAgICAgICAgIGJlaW5nIG1hcmtlZCB3aXRoIGEgbGljZW5zZSB0aGF0IGlzIGluCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOQ09NUEFUSUJMRV9MSUNFTlNFJz48ZmlsZW5hbWU+SU5DT01QQVRJQkxFX0xJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5pbnN0YWxsLWhvc3QtcGF0aDo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGxvZyBmb3IgaW5kaWNhdGlvbnMKKyAgICAgICAgICAgICAgICB0aGF0IHBhdGhzIHRvIGxvY2F0aW9ucyBvbiB0aGUgYnVpbGQgaG9zdCB3ZXJlIHVzZWQuCisgICAgICAgICAgICAgICAgVXNpbmcgc3VjaCBwYXRocyBtaWdodCByZXN1bHQgaW4gaG9zdCBjb250YW1pbmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIGJ1aWxkIG91dHB1dC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmluc3RhbGxlZC12cy1zaGlwcGVkOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZXBvcnRzIHdoZW4gZmlsZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+IGJ1dCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgYW55IHBhY2thZ2UgYnkgd2F5IG9mIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBkbyBub3QgYXBwZWFyIGluIGFueSBwYWNrYWdlIGNhbm5vdCBiZSBwcmVzZW50IGluCisgICAgICAgICAgICAgICAgYW4gaW1hZ2UgbGF0ZXIgb24gaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgSWRlYWxseSwgYWxsIGluc3RhbGxlZCBmaWxlcyBzaG91bGQgYmUgcGFja2FnZWQgb3Igbm90CisgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGF0IGFsbC4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBjYW4gYmUgZGVsZXRlZCBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiBpZiB0aGUgZmlsZXMgYXJlIG5vdAorICAgICAgICAgICAgICAgIG5lZWRlZCBpbiBhbnkgcGFja2FnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmludmFsaWQtY2hhcnM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyB0aGF0IHRoZSByZWNpcGUgbWV0YWRhdGEgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFU0NSSVBUSU9OJz48ZmlsZW5hbWU+REVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNVTU1BUlknPjxmaWxlbmFtZT5TVU1NQVJZPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0VDVElPTic+PGZpbGVuYW1lPlNFQ1RJT048L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBkbyBub3QgY29udGFpbiBub24tVVRGLTggY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICBTb21lIHBhY2thZ2UgbWFuYWdlcnMgZG8gbm90IHN1cHBvcnQgc3VjaCBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+aW52YWxpZC1wYWNrYWdlY29uZmlnOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgdGhhdCBubyB1bmRlZmluZWQgZmVhdHVyZXMgYXJlIGJlaW5nIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUcnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhbnkgbmFtZSAiZm9vIiBmb3Igd2hpY2ggdGhlIGZvbGxvd2luZyBmb3JtCisgICAgICAgICAgICAgICAgZG9lcyBub3QgZXhpc3Q6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFQ09ORklHW2Zvb10gPSAiLi4uIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmxhOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgPGZpbGVuYW1lPi5sYTwvZmlsZW5hbWU+IGZpbGVzIGZvciBhbnkgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGF0aHMuCisgICAgICAgICAgICAgICAgQW55IDxmaWxlbmFtZT4ubGE8L2ZpbGVuYW1lPiBmaWxlIGNvbnRhaW5pbmcgdGhlc2UgcGF0aHMgaXMgaW5jb3JyZWN0IHNpbmNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2w8L2ZpbGVuYW1lPiBhZGRzIHRoZSBjb3JyZWN0IHN5c3Jvb3QgcHJlZml4IHdoZW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgZmlsZXMgYXV0b21hdGljYWxseSBpdHNlbGYuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5sZGZsYWdzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBFbnN1cmVzIHRoYXQgdGhlIGJpbmFyaWVzIHdlcmUgbGlua2VkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxERkxBR1MnPjxmaWxlbmFtZT5MREZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgb3B0aW9ucyBwcm92aWRlZCBieSB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIElmIHRoaXMgdGVzdCBmYWlscywgY2hlY2sgdGhhdCB0aGUgPGZpbGVuYW1lPkxERkxBR1M8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGlzIGJlaW5nIHBhc3NlZCB0byB0aGUgbGlua2VyIGNvbW1hbmQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5saWJkaXI6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyBmb3IgbGlicmFyaWVzIGJlaW5nIGluc3RhbGxlZCBpbnRvIGluY29ycmVjdAorICAgICAgICAgICAgICAgIChwb3NzaWJseSBoYXJkY29kZWQpIGluc3RhbGxhdGlvbiBwYXRocy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyB0ZXN0IHdpbGwgY2F0Y2ggcmVjaXBlcyB0aGF0IGluc3RhbGwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2xpYi9iYXIuc288L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7YmFzZV9saWJkaXJ9PC9maWxlbmFtZT4gaXMgImxpYjMyIi4KKyAgICAgICAgICAgICAgICBBbm90aGVyIGV4YW1wbGUgaXMgd2hlbiByZWNpcGVzIGluc3RhbGwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9saWI2NC9mb28uc288L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7bGliZGlyfTwvZmlsZW5hbWU+IGlzICIvdXNyL2xpYiIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5saWJleGVjOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgaWYgYSBwYWNrYWdlIGNvbnRhaW5zIGZpbGVzIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbGliZXhlYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoaXMgY2hlY2sgaXMgbm90IHBlcmZvcm1lZCBpZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliZXhlY2RpcjwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyBiZWVuIHNldAorICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgdG8gPGZpbGVuYW1lPi91c3IvbGliZXhlYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cGFja2FnZXMtbGlzdDo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIGZvciB0aGUgc2FtZSBwYWNrYWdlIGJlaW5nIGxpc3RlZCBtdWx0aXBsZSB0aW1lcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWUuCisgICAgICAgICAgICAgICAgSW5zdGFsbGluZyB0aGUgcGFja2FnZSBpbiB0aGlzIG1hbm5lciBjYW4gY2F1c2UgZXJyb3JzIGR1cmluZworICAgICAgICAgICAgICAgIHBhY2thZ2luZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnBlcm0tY29uZmlnOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZXBvcnRzIGxpbmVzIGluIDxmaWxlbmFtZT5mcy1wZXJtcy50eHQ8L2ZpbGVuYW1lPiB0aGF0IGhhdmUKKyAgICAgICAgICAgICAgICBhbiBpbnZhbGlkIGZvcm1hdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnBlcm0tbGluZTo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgUmVwb3J0cyBsaW5lcyBpbiA8ZmlsZW5hbWU+ZnMtcGVybXMudHh0PC9maWxlbmFtZT4gdGhhdCBoYXZlCisgICAgICAgICAgICAgICAgYW4gaW52YWxpZCBmb3JtYXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wZXJtLWxpbms6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFJlcG9ydHMgbGluZXMgaW4gPGZpbGVuYW1lPmZzLXBlcm1zLnR4dDwvZmlsZW5hbWU+IHRoYXQKKyAgICAgICAgICAgICAgICBzcGVjaWZ5ICdsaW5rJyB3aGVyZSB0aGUgc3BlY2lmaWVkIHRhcmdldCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnBlcm1zOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDdXJyZW50bHksIHRoaXMgY2hlY2sgaXMgdW51c2VkIGJ1dCByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnBrZ2NvbmZpZzo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIDxmaWxlbmFtZT4ucGM8L2ZpbGVuYW1lPiBmaWxlcyBmb3IgYW55CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPi88bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBwYXRocy4KKyAgICAgICAgICAgICAgICBBbnkgPGZpbGVuYW1lPi5wYzwvZmlsZW5hbWU+IGZpbGUgY29udGFpbmluZyB0aGVzZSBwYXRocyBpcyBpbmNvcnJlY3QKKyAgICAgICAgICAgICAgICBzaW5jZSA8ZmlsZW5hbWU+cGtnLWNvbmZpZzwvZmlsZW5hbWU+IGl0c2VsZiBhZGRzIHRoZSBjb3JyZWN0IHN5c3Jvb3QgcHJlZml4CisgICAgICAgICAgICAgICAgd2hlbiB0aGUgZmlsZXMgYXJlIGFjY2Vzc2VkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cGtnbmFtZTo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgYWxsIHBhY2thZ2VzIGluCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBoYXZlIG5hbWVzIHRoYXQgZG8gbm90IGNvbnRhaW4gaW52YWxpZCBjaGFyYWN0ZXJzIChpLmUuCisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdGhlciB0aGFuIDAtOSwgYS16LCAuLCArLCBhbmQgLSkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wa2d2LXVuZGVmaW5lZDo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRvIHNlZSBpZiB0aGUgPGZpbGVuYW1lPlBLR1Y8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGlzIHVuZGVmaW5lZCBkdXJpbmcKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wa2d2YXJjaGVjazo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRocm91Z2ggdGhlIHZhcmlhYmxlcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SU1VHR0VTVFMnPjxmaWxlbmFtZT5SU1VHR0VTVFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJDT05GTElDVFMnPjxmaWxlbmFtZT5SQ09ORkxJQ1RTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUFJPVklERVMnPjxmaWxlbmFtZT5SUFJPVklERVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRVBMQUNFUyc+PGZpbGVuYW1lPlJSRVBMQUNFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3ByZWluc3Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wcmVybTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5wa2dfcG9zdHJtPC9maWxlbmFtZT4sIGFuZCByZXBvcnRzIGlmIHRoZXJlIGFyZQorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHMgdGhhdCBhcmUgbm90IHBhY2thZ2Utc3BlY2lmaWMuCisgICAgICAgICAgICAgICAgVXNpbmcgdGhlc2UgdmFyaWFibGVzIHdpdGhvdXQgYSBwYWNrYWdlIHN1ZmZpeCBpcyBiYWQgcHJhY3RpY2UsCisgICAgICAgICAgICAgICAgYW5kIG1pZ2h0IHVubmVjZXNzYXJpbHkgY29tcGxpY2F0ZSBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIHNhbWUgcmVjaXBlIG9yIGhhdmUgb3RoZXIgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wbi1vdmVycmlkZXM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyB0aGF0IGEgcmVjaXBlIGRvZXMgbm90IGhhdmUgYSBuYW1lCisgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+KSB2YWx1ZQorICAgICAgICAgICAgICAgIHRoYXQgYXBwZWFycyBpbgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgaXMgbmFtZWQgc3VjaCB0aGF0IGl0cyA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZhbHVlIG1hdGNoZXMgc29tZXRoaW5nIGFscmVhZHkgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4gKGUuZy4gPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBoYXBwZW5zIHRvIGJlIHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L2xpbms+KSwKKyAgICAgICAgICAgICAgICBpdCBjYW4gaGF2ZSB1bmV4cGVjdGVkIGNvbnNlcXVlbmNlcy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXNzaWdubWVudHMgc3VjaCBhcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18ke1BOfSA9ICJ4eXoiPC9maWxlbmFtZT4gZWZmZWN0aXZlbHkgdHVybiBpbnRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTID0gInh5eiI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cnBhdGhzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgZm9yIHJwYXRocyBpbiB0aGUgYmluYXJpZXMgdGhhdCBjb250YWluIGJ1aWxkIHN5c3RlbSBwYXRocyBzdWNoCisgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIElmIHRoaXMgdGVzdCBmYWlscywgYmFkIDxmaWxlbmFtZT4tcnBhdGg8L2ZpbGVuYW1lPiBvcHRpb25zIGFyZSBiZWluZworICAgICAgICAgICAgICAgIHBhc3NlZCB0byB0aGUgbGlua2VyIGNvbW1hbmRzIGFuZCB5b3VyIGJpbmFyaWVzIGhhdmUgcG90ZW50aWFsIHNlY3VyaXR5CisgICAgICAgICAgICAgICAgaXNzdWVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c3BsaXQtc3RyaXA6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFJlcG9ydHMgdGhhdCBzcGxpdHRpbmcgb3Igc3RyaXBwaW5nIGRlYnVnIHN5bWJvbHMgZnJvbSBiaW5hcmllcworICAgICAgICAgICAgICAgIGhhcyBmYWlsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zdGF0aWNkZXY6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyBmb3Igc3RhdGljIGxpYnJhcnkgZmlsZXMgKDxmaWxlbmFtZT4qLmE8L2ZpbGVuYW1lPikgaW4KKyAgICAgICAgICAgICAgICBub24tPGZpbGVuYW1lPnN0YXRpY2RldjwvZmlsZW5hbWU+IHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c3ltbGluay10by1zeXNyb290OjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVja3MgZm9yIHN5bWxpbmtzIGluIHBhY2thZ2VzIHRoYXQgcG9pbnQgaW50bworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBvbiB0aGUgaG9zdC4KKyAgICAgICAgICAgICAgICBTdWNoIHN5bWxpbmtzIHdpbGwgd29yayBvbiB0aGUgaG9zdCwgYnV0IGFyZSBjbGVhcmx5IGludmFsaWQKKyAgICAgICAgICAgICAgICB3aGVuIHJ1bm5pbmcgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnRleHRyZWw6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyBmb3IgRUxGIGJpbmFyaWVzIHRoYXQgY29udGFpbiByZWxvY2F0aW9ucyBpbiB0aGVpcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4udGV4dDwvZmlsZW5hbWU+IHNlY3Rpb25zLCB3aGljaCBjYW4gcmVzdWx0IGluIGEKKyAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBpbXBhY3QgYXQgcnVudGltZS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlIGV4cGxhbmF0aW9uIGZvciB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdxYS1pc3N1ZS10ZXh0cmVsJz48ZmlsZW5hbWU+RUxGIGJpbmFyeTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHJ1bnRpbWUgcGVyZm9ybWFuY2UgaXNzdWVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorPCEtLQorVGhpcyBjaGVjayB3YXMgcmVtb3ZlZCBmb3IgWVAgMi4zIHJlbGVhc2UKKworICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+dW5zYWZlLXJlZmVyZW5jZXMtaW4tYmluYXJpZXM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFJlcG9ydHMgd2hlbiBhIGJpbmFyeSBpbnN0YWxsZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2xpYmRpcn08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2JpbmRpcn08L2ZpbGVuYW1lPiwgb3IKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX3NiaW5kaXJ9PC9maWxlbmFtZT4sIGRlcGVuZHMgb24gYW5vdGhlcgorICAgICAgICAgICAgICAgIGJpbmFyeSBpbnN0YWxsZWQgdW5kZXIgPGZpbGVuYW1lPiR7ZXhlY19wcmVmaXh9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhpcyBkZXBlbmRlbmN5IGlzIGEgY29uY2VybiBpZiB5b3Ugd2FudCB0aGUgc3lzdGVtIHRvIHJlbWFpbgorICAgICAgICAgICAgICAgIGJhc2ljYWxseSBvcGVyYWJsZSBpZiA8ZmlsZW5hbWU+L3VzcjwvZmlsZW5hbWU+IGlzIG1vdW50ZWQKKyAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGFuZCBpcyBub3QgbW91bnRlZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgZm9yIGJpbmFyaWVzIGluc3RhbGxlZCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2xpYmRpcn08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7YmFzZV9iaW5kaXJ9PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX3NiaW5kaXJ9PC9maWxlbmFtZT4gYXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vbGliPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4vYmluPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3NiaW48L2ZpbGVuYW1lPiwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBmb3IgYSBiaW5hcnkgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgIHVuZGVyIDxmaWxlbmFtZT4ke2V4ZWNfcHJlZml4fTwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorLS0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT51bmxpc3RlZC1wa2ctbGljczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgYWxsIGRlY2xhcmVkIGxpY2Vuc2VzIGFwcGx5aW5nIGZvciBhIHBhY2thZ2UgYXJlIGFsc28KKyAgICAgICAgICAgICAgICBkZWNsYXJlZCBvbiB0aGUgcmVjaXBlIGxldmVsIChpLmUuIGFueSBsaWNlbnNlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfKjwvZmlsZW5hbWU+IHNob3VsZCBhcHBlYXIgaW4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+dXNlbGVzcy1ycGF0aHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrcyBmb3IgZHluYW1pYyBsaWJyYXJ5IGxvYWQgcGF0aHMgKHJwYXRocykgaW4gdGhlIGJpbmFyaWVzIHRoYXQKKyAgICAgICAgICAgICAgICBieSBkZWZhdWx0IG9uIGEgc3RhbmRhcmQgc3lzdGVtIGFyZSBzZWFyY2hlZCBieSB0aGUgbGlua2VyIChlLmcuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9saWI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi91c3IvbGliPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIFdoaWxlIHRoZXNlIHBhdGhzIHdpbGwgbm90IGNhdXNlIGFueSBicmVha2FnZSwgdGhleSBkbyB3YXN0ZSBzcGFjZSBhbmQKKyAgICAgICAgICAgICAgICBhcmUgdW5uZWNlc3NhcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT52YXItdW5kZWZpbmVkOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZXBvcnRzIHdoZW4gdmFyaWFibGVzIGZ1bmRhbWVudGFsIHRvIHBhY2thZ2luZyAoaS5lLgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHRCc+PGZpbGVuYW1lPlBLR0Q8L2ZpbGVuYW1lPjwvbGluaz4pIGFyZQorICAgICAgICAgICAgICAgIHVuZGVmaW5lZCBkdXJpbmcKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT52ZXJzaW9uLWdvaW5nLWJhY2t3YXJkczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSWYgQnVpbGQgSGlzdG9yeSBpcyBlbmFibGVkLCByZXBvcnRzIHdoZW4gYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgYmVpbmcgd3JpdHRlbiBvdXQgaGFzIGEgbG93ZXIgdmVyc2lvbiB0aGFuIHRoZSBwcmV2aW91c2x5CisgICAgICAgICAgICAgICAgd3JpdHRlbiBwYWNrYWdlIHVuZGVyIHRoZSBzYW1lIG5hbWUuCisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBwbGFjaW5nIG91dHB1dCBwYWNrYWdlcyBpbnRvIGEgZmVlZCBhbmQKKyAgICAgICAgICAgICAgICB1cGdyYWRpbmcgcGFja2FnZXMgb24gYSB0YXJnZXQgc3lzdGVtIHVzaW5nIHRoYXQgZmVlZCwgdGhlCisgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiBhIHBhY2thZ2UgZ29pbmcgYmFja3dhcmRzIGNhbiByZXN1bHQgaW4gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgIHN5c3RlbSBub3QgY29ycmVjdGx5IHVwZ3JhZGluZyB0byB0aGUgIm5ldyIgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG5vdCB1c2luZyBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCBvbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCBzeXN0ZW0sIHRoZW4geW91IGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0CisgICAgICAgICAgICAgICAgICAgIHRoaXMgc2l0dWF0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnhvcmctZHJpdmVyLWFiaTo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ2hlY2tzIHRoYXQgYWxsIHBhY2thZ2VzIGNvbnRhaW5pbmcgWG9yZyBkcml2ZXJzIGhhdmUgQUJJCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eHNlcnZlci14b3JnPC9maWxlbmFtZT4gcmVjaXBlIHByb3ZpZGVzIGRyaXZlcgorICAgICAgICAgICAgICAgIEFCSSBuYW1lcy4KKyAgICAgICAgICAgICAgICBBbGwgZHJpdmVycyBzaG91bGQgZGVwZW5kIG9uIHRoZSBBQkkgdmVyc2lvbnMgdGhhdCB0aGV5IGhhdmUKKyAgICAgICAgICAgICAgICBiZWVuIGJ1aWx0IGFnYWluc3QuCisgICAgICAgICAgICAgICAgRHJpdmVyIHJlY2lwZXMgdGhhdCBpbmNsdWRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnhvcmctZHJpdmVyLWlucHV0LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnhvcmctZHJpdmVyLXZpZGVvLmluYzwvZmlsZW5hbWU+IHdpbGwKKyAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGdldCB0aGVzZSB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBzaG91bGQgb25seSBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIHRvIGJpbmFyeSBkcml2ZXIgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtaW5zc2Vydic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5pbnNzZXJ2LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbnNzZXJ2PC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgdXNlcyB0aGUgPGZpbGVuYW1lPmluc3NlcnY8L2ZpbGVuYW1lPiB1dGlsaXR5IHRvIHVwZGF0ZSB0aGUgb3JkZXIgb2YKKyAgICAgICAgc3ltYm9saWMgbGlua3MgaW4gPGZpbGVuYW1lPi9ldGMvcmM/LmQvPC9maWxlbmFtZT4gd2l0aGluIGFuIGltYWdlCisgICAgICAgIGJhc2VkIG9uIGRlcGVuZGVuY2llcyBzcGVjaWZpZWQgYnkgTFNCIGhlYWRlcnMgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5pbml0LmQ8L2ZpbGVuYW1lPiBzY3JpcHRzIHRoZW1zZWx2ZXMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMta2VybmVsJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmtlcm5lbC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+a2VybmVsPC9maWxlbmFtZT4gY2xhc3MgaGFuZGxlcyBidWlsZGluZyBMaW51eCBrZXJuZWxzLgorICAgICAgICBUaGUgY2xhc3MgY29udGFpbnMgY29kZSB0byBidWlsZCBhbGwga2VybmVsIHRyZWVzLgorICAgICAgICBBbGwgbmVlZGVkIGhlYWRlcnMgYXJlIHN0YWdlZCBpbnRvIHRoZQorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfS0VSTkVMX0RJUic+U1RBR0lOR19LRVJORUxfRElSPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGRpcmVjdG9yeSB0byBhbGxvdyBvdXQtb2YtdHJlZSBtb2R1bGUgYnVpbGRzIHVzaW5nCisgICAgICAgIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1tb2R1bGUnPjxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBlYWNoIGJ1aWx0IGtlcm5lbCBtb2R1bGUgaXMgcGFja2FnZWQgc2VwYXJhdGVseSBhbmQKKyAgICAgICAgaW50ZXItbW9kdWxlIGRlcGVuZGVuY2llcyBhcmUgY3JlYXRlZCBieSBwYXJzaW5nIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bW9kaW5mbzwvZmlsZW5hbWU+IG91dHB1dC4KKyAgICAgICAgSWYgYWxsIG1vZHVsZXMgYXJlIHJlcXVpcmVkLCB0aGVuIGluc3RhbGxpbmcgdGhlCisgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtbW9kdWxlczwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbHMgYWxsIHBhY2thZ2VzIHdpdGgKKyAgICAgICAgbW9kdWxlcyBhbmQgdmFyaW91cyBvdGhlciBrZXJuZWwgcGFja2FnZXMgc3VjaCBhcworICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLXZtbGludXg8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPiBjbGFzcyBjb250YWlucyBsb2dpYyB0aGF0IGFsbG93cworICAgICAgICB5b3UgdG8gZW1iZWQgYW4gaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZSB3aGVuCisgICAgICAgIHlvdSBidWlsZCB0aGUga2VybmVsIGltYWdlLgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGluaXRyYW1mcywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBWYXJpb3VzIG90aGVyIGNsYXNzZXMgYXJlIHVzZWQgYnkgdGhlIDxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPgorICAgICAgICBhbmQgPGZpbGVuYW1lPm1vZHVsZTwvZmlsZW5hbWU+IGNsYXNzZXMgaW50ZXJuYWxseSBpbmNsdWRpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1hcmNoJz48ZmlsZW5hbWU+a2VybmVsLWFyY2g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLW1vZHVsZS1iYXNlJz48ZmlsZW5hbWU+bW9kdWxlLWJhc2U8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgIGFuZAorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1saW51eC1rZXJuZWwtYmFzZSc+PGZpbGVuYW1lPmxpbnV4LWtlcm5lbC1iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzZXMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMta2VybmVsLWFyY2gnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+a2VybmVsLWFyY2guYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbC1hcmNoPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgc2V0cyB0aGUgPGZpbGVuYW1lPkFSQ0g8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgTGludXgKKyAgICAgICAga2VybmVsIGNvbXBpbGF0aW9uIChpbmNsdWRpbmcgbW9kdWxlcykuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMta2VybmVsLWRldmljZXRyZWUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbC1kZXZpY2V0cmVlPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBieQorICAgICAgICB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMta2VybmVsJz48ZmlsZW5hbWU+a2VybmVsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzLCBzdXBwb3J0cyBkZXZpY2UgdHJlZSBnZW5lcmF0aW9uLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1maXRpbWFnZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWwtZml0aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgdG8KKyAgICAgICAgcGFjayBhIGtlcm5lbCBJbWFnZSwgZGV2aWNlIHRyZWVzIGFuZCBhIFJBTSBkaXNrIGludG8gYSBzaW5nbGUKKyAgICAgICAgRklUIGltYWdlLiBJbiB0aGVvcnksIGEgRklUIGltYWdlIGNhbiBzdXBwb3J0IGFueSBudW1iZXIgb2Yga2VybmVscywKKyAgICAgICAgUkFNIGRpc2tzIGFuZCBkZXZpY2UtdHJlZXMuCisgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5rZXJuZWwtZml0aW1hZ2U8L2ZpbGVuYW1lPiBjdXJyZW50bHkgb25seSBzdXBwb3J0cworICAgICAgICBsaW1pdGVkIHVzZXNjYXNlczoganVzdCBvbmUga2VybmVsIGltYWdlLCBhbiBvcHRpb25hbCBSQU0gZGlzaywgYW5kCisgICAgICAgIGFueSBudW1iZXIgb2YgZGV2aWNlIHRyZWUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGNyZWF0ZSBhIEZJVCBpbWFnZSwgaXQgaXMgcmVxdWlyZWQgdGhhdAorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9DTEFTU0VTJz5LRVJORUxfQ0xBU1NFUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICBpcyBzZXQgdG8gImtlcm5lbC1maXRpbWFnZSIgYW5kCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0lNQUdFVFlQRSc+S0VSTkVMX0lNQUdFVFlQRTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICBpcyBzZXQgdG8gImZpdEltYWdlIi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIG9wdGlvbnMgZm9yIHRoZSBkZXZpY2UgdHJlZSBjb21waWxlciBwYXNzZWQgdG8gbWtpbWFnZSAtRCBmZWF0dXJlCisgICAgICAgIHdoZW4gY3JlYXRpbmcgdGhlIEZJVCBpbWFnZSBhcmUgc3BlY2lmaWVkIHVzaW5nIHRoZQorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVVCT09UX01LSU1BR0VfRFRDT1BUUyc+VUJPT1RfTUtJTUFHRV9EVENPUFRTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIHZhcmlhYmxlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBPbmx5IGEgc2luZ2xlIGtlcm5lbCBjYW4gYmUgYWRkZWQgdG8gdGhlIEZJVCBpbWFnZSBjcmVhdGVkIGJ5CisgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtZml0aW1hZ2U8L2ZpbGVuYW1lPiBhbmQgdGhlIGtlcm5lbCBpbWFnZSBpbiBGSVQgaXMKKyAgICAgICAgbWFuZGF0b3J5LgorICAgICAgICBUaGUgYWRkcmVzcyB3aGVyZSB0aGUga2VybmVsIGltYWdlIGlzIHRvIGJlIGxvYWRlZCBieSBVLWJvb3QgaXMKKyAgICAgICAgc3BlY2lmaWVkIGJ5CisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVUJPT1RfTE9BREFERFJFU1MnPlVCT09UX0xPQURBRERSRVNTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGFuZCB0aGUgZW50cnlwb2ludCBieQorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVVCT09UX0VOVFJZUE9JTlQnPlVCT09UX0VOVFJZUE9JTlQ8L2xpbms+PC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE11bHRpcGxlIGRldmljZSB0cmVlcyBjYW4gYmUgYWRkZWQgdG8gdGhlIEZJVCBpbWFnZSBjcmVhdGVkIGJ5CisgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtZml0aW1hZ2U8L2ZpbGVuYW1lPiBhbmQgdGhlIGRldmljZSB0cmVlIGlzIG9wdGlvbmFsLgorICAgICAgICBUaGUgYWRkcmVzcyB3aGVyZSB0aGUgZGV2aWNlIHRyZWUgaXMgdG8gYmUgbG9hZGVkIGJ5IFUtYm9vdCBpcworICAgICAgICBzcGVjaWZpZWQgYnkKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9EVEJPX0xPQURBRERSRVNTJz5VQk9PVF9EVEJPX0xPQURBRERSRVNTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGZvciBkZXZpY2UgdHJlZSBvdmVybGF5cyBhbmQgYnkKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9EVEJfTE9BREFERFJFU1MnPlVCT09UX0RUQl9MT0FEQUREUkVTUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICBmb3IgZGV2aWNlIHRyZWUgYmluYXJpZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE9ubHkgYSBzaW5nbGUgUkFNIGRpc2sgY2FuIGJlIGFkZGVkIHRvIHRoZSBGSVQgaW1hZ2UgY3JlYXRlZCBieQorICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLWZpdGltYWdlPC9maWxlbmFtZT4gYW5kIHRoZSBSQU0gZGlzayBpbiBGSVQgaXMKKyAgICAgICAgb3B0aW9uYWwuCisgICAgICAgIFRoZSBhZGRyZXNzIHdoZXJlIHRoZSBSQU0gZGlzayBpbWFnZSBpcyB0byBiZSBsb2FkZWQgYnkgVS1ib290CisgICAgICAgIGlzIHNwZWNpZmllZCBieQorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVVCT09UX1JEX0xPQURBRERSRVNTJz5VQk9PVF9SRF9MT0FEQUREUkVTUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICBhbmQgdGhlIGVudHJ5cG9pbnQgYnkKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9SRF9FTlRSWVBPSU5UJz5VQk9PVF9SRF9FTlRSWVBPSU5UPC9saW5rPjwvZmlsZW5hbWU+LgorICAgICAgICBUaGUgcmFtZGlzayBpcyBhZGRlZCB0byBGSVQgaW1hZ2Ugd2hlbgorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlOSVRSQU1GU19JTUFHRSc+SU5JVFJBTUZTX0lNQUdFPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGlzIHNwZWNpZmllZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIEZJVCBpbWFnZSBnZW5lcmF0ZWQgYnkgPGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZTwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGlzIHNpZ25lZCB3aGVuIHRoZSB2YXJpYWJsZXMKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9TSUdOX0VOQUJMRSc+VUJPT1RfU0lHTl9FTkFCTEU8L2xpbms+PC9maWxlbmFtZT4sCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVUJPT1RfTUtJTUFHRV9EVENPUFRTJz5VQk9PVF9NS0lNQUdFX0RUQ09QVFM8L2xpbms+PC9maWxlbmFtZT4sCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVUJPT1RfU0lHTl9LRVlESVInPlVCT09UX1NJR05fS0VZRElSPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGFuZAorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVVCT09UX1NJR05fS0VZTkFNRSc+VUJPT1RfU0lHTl9LRVlOQU1FPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGFyZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWVzIHVzZWQgZm9yCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRklUX0hBU0hfQUxHJz5GSVRfSEFTSF9BTEc8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgYW5kCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRklUX1NJR05fQUxHJz5GSVRfU0lHTl9BTEc8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgaW4gPGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZTwvZmlsZW5hbWU+IGFyZSAic2hhMjU2IiBhbmQgInJzYTIwNDgiCisgICAgICAgIHJlc3BlY3RpdmVseS4KKyAgICA8L3BhcmE+CisKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1ncnViJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmtlcm5lbC1ncnViLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5rZXJuZWwtZ3J1YjwvZmlsZW5hbWU+IGNsYXNzIHVwZGF0ZXMgdGhlIGJvb3QgYXJlYSBhbmQKKyAgICAgICAgdGhlIGJvb3QgbWVudSB3aXRoIHRoZSBrZXJuZWwgYXMgdGhlIHByaW9yaXR5IGJvb3QgbWVjaGFuaXNtIHdoaWxlCisgICAgICAgIGluc3RhbGxpbmcgYSBSUE0gdG8gdXBkYXRlIHRoZSBrZXJuZWwgb24gYSBkZXBsb3llZCB0YXJnZXQuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMta2VybmVsLW1vZHVsZS1zcGxpdCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5rZXJuZWwtbW9kdWxlLXNwbGl0PC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgcHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIHNwbGl0dGluZyBMaW51eCBrZXJuZWwgbW9kdWxlcyBpbnRvCisgICAgICAgIHNlcGFyYXRlIHBhY2thZ2VzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWtlcm5lbC11Ym9vdCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWwtdWJvb3QuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbC11Ym9vdDwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yCisgICAgICAgIGJ1aWxkaW5nIGZyb20gdm1saW51eC1zdHlsZSBrZXJuZWwgc291cmNlcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1rZXJuZWwtdWltYWdlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmtlcm5lbC11aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbC11aW1hZ2U8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IHRvCisgICAgICAgIHBhY2sgdUltYWdlLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWtlcm5lbC15b2N0byc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWwteW9jdG8uYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbC15b2N0bzwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIHByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBmcm9tIGxpbnV4LXlvY3RvIHN0eWxlCisgICAgICAgIGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yaWVzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWtlcm5lbHNyYyc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmtlcm5lbHNyYzwvZmlsZW5hbWU+IGNsYXNzIHNldHMgdGhlIExpbnV4IGtlcm5lbAorICAgICAgICBzb3VyY2UgYW5kIHZlcnNpb24uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtbGliX3BhY2thZ2UnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+bGliX3BhY2thZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmxpYl9wYWNrYWdlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgc3VwcG9ydHMgcmVjaXBlcyB0aGF0IGJ1aWxkIGxpYnJhcmllcyBhbmQgcHJvZHVjZSBleGVjdXRhYmxlCisgICAgICAgIGJpbmFyaWVzLCB3aGVyZSB0aG9zZSBiaW5hcmllcyBzaG91bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0CisgICAgICAgIGFsb25nIHdpdGggdGhlIGxpYnJhcnkuCisgICAgICAgIEluc3RlYWQsIHRoZSBiaW5hcmllcyBhcmUgYWRkZWQgdG8gYSBzZXBhcmF0ZQorICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0tYmluPC9maWxlbmFtZT4KKyAgICAgICAgcGFja2FnZSB0byBtYWtlIHRoZWlyIGluc3RhbGxhdGlvbiBvcHRpb25hbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1saWJjKic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5saWJjKi5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGliYyo8L2ZpbGVuYW1lPiBjbGFzc2VzIHN1cHBvcnQgcmVjaXBlcyB0aGF0IGJ1aWxkCisgICAgICAgIHBhY2thZ2VzIHdpdGggPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgPGZpbGVuYW1lPmxpYmMtY29tbW9uPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgICAgICAgICBwcm92aWRlcyBjb21tb24gc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5saWJjLXBhY2thZ2U8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgIHN1cHBvcnRzIHBhY2thZ2luZyB1cCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZWdsaWJjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWxpY2Vuc2UnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+bGljZW5zZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGljZW5zZTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIGxpY2Vuc2UKKyAgICAgICAgbWFuaWZlc3QgY3JlYXRpb24gYW5kIGxpY2Vuc2UgZXhjbHVzaW9uLgorICAgICAgICBUaGlzIGNsYXNzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUX0RJU1RSTyc+PGZpbGVuYW1lPklOSEVSSVRfRElTVFJPPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWxpbnV4LWtlcm5lbC1iYXNlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmxpbnV4LWtlcm5lbC1iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5saW51eC1rZXJuZWwtYmFzZTwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIHByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciByZWNpcGVzIHRoYXQgYnVpbGQgb3V0IG9mIHRoZSBMaW51eAorICAgICAgICBrZXJuZWwgc291cmNlIHRyZWUuCisgICAgICAgIFRoZXNlIGJ1aWxkcyBnb2VzIGJleW9uZCB0aGUga2VybmVsIGl0c2VsZi4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBQZXJmIHJlY2lwZSBhbHNvIGluaGVyaXRzIHRoaXMgY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtbGludXhsb2FkZXInPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+bGludXhsb2FkZXIuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBQcm92aWRlcyB0aGUgZnVuY3Rpb24gPGZpbGVuYW1lPmxpbnV4bG9hZGVyKCk8L2ZpbGVuYW1lPiwgd2hpY2ggZ2l2ZXMKKyAgICAgICAgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGxvYWRlci9saW5rZXIgcHJvdmlkZWQgb24gdGhlIHBsYXRmb3JtLgorICAgICAgICBUaGlzIHZhbHVlIGlzIHVzZWQgYnkgYSBudW1iZXIgb2Ygb3RoZXIgY2xhc3Nlcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1sb2dnaW5nJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmxvZ2dpbmcuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmxvZ2dpbmc8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyB0aGUgc3RhbmRhcmQKKyAgICAgICAgc2hlbGwgZnVuY3Rpb25zIHVzZWQgdG8gbG9nIG1lc3NhZ2VzIGZvciB2YXJpb3VzIEJpdEJha2Ugc2V2ZXJpdHkgbGV2ZWxzCisgICAgICAgIChpLmUuIDxmaWxlbmFtZT5iYnBsYWluPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYm5vdGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgPGZpbGVuYW1lPmJid2FybjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmJlcnJvcjwvZmlsZW5hbWU+LAorICAgICAgICA8ZmlsZW5hbWU+YmJmYXRhbDwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPmJiZGVidWc8L2ZpbGVuYW1lPikuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3MgaXMgZW5hYmxlZCBieSBkZWZhdWx0IHNpbmNlIGl0IGlzIGluaGVyaXRlZCBieQorICAgICAgICB0aGUgPGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1tZXRhJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBjbGFzcyBpcyBpbmhlcml0ZWQgYnkgcmVjaXBlcworICAgICAgICB0aGF0IGRvIG5vdCBidWlsZCBhbnkgb3V0cHV0IHBhY2thZ2VzIHRoZW1zZWx2ZXMsIGJ1dCBhY3QgYXMgYSAibWV0YSIKKyAgICAgICAgdGFyZ2V0IGZvciBidWlsZGluZyBvdGhlciByZWNpcGVzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLW1ldGFkYXRhX3NjbSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhZGF0YV9zY20uYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGFkYXRhX3NjbTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yCisgICAgICAgIHF1ZXJ5aW5nIHRoZSBicmFuY2ggYW5kIHJldmlzaW9uIG9mIGEgU291cmNlIENvZGUgTWFuYWdlciAoU0NNKQorICAgICAgICByZXBvc2l0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MgdXNlcyB0aGlzIGNsYXNzIHRvIHByaW50IHRoZSByZXZpc2lvbnMgb2YgZWFjaCBsYXllciBiZWZvcmUKKyAgICAgICAgc3RhcnRpbmcgZXZlcnkgYnVpbGQuCisgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YWRhdGFfc2NtPC9maWxlbmFtZT4gY2xhc3MgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgICAgIGJlY2F1c2UgaXQgaXMgaW5oZXJpdGVkIGJ5IHRoZSA8ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+IGNsYXNzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLW1pZ3JhdGVfbG9jYWxjb3VudCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5taWdyYXRlX2xvY2FsY291bnQuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPm1pZ3JhdGVfbG9jYWxjb3VudDwvZmlsZW5hbWU+IGNsYXNzIHZlcmlmaWVzIGEgcmVjaXBlJ3MKKyAgICAgICAgbG9jYWxjb3VudCBkYXRhIGFuZCBpbmNyZW1lbnRzIGl0IGFwcHJvcHJpYXRlbHkuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtbWltZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5taW1lLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5taW1lPC9maWxlbmFtZT4gY2xhc3MgZ2VuZXJhdGVzIHRoZSBwcm9wZXIKKyAgICAgICAgcG9zdC1pbnN0YWxsIGFuZCBwb3N0LXJlbW92ZSAocG9zdGluc3QvcG9zdHJtKSBzY3JpcHRsZXRzIGZvciBwYWNrYWdlcworICAgICAgICB0aGF0IGluc3RhbGwgTUlNRSB0eXBlIGZpbGVzLgorICAgICAgICBUaGVzZSBzY3JpcHRsZXRzIGNhbGwgPGZpbGVuYW1lPnVwZGF0ZS1taW1lLWRhdGFiYXNlPC9maWxlbmFtZT4gdG8gYWRkCisgICAgICAgIHRoZSBNSU1FIHR5cGVzIHRvIHRoZSBzaGFyZWQgZGF0YWJhc2UuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtbWlycm9ycyc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5taXJyb3JzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5taXJyb3JzPC9maWxlbmFtZT4gY2xhc3Mgc2V0cyB1cCBzb21lIHN0YW5kYXJkCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NSVJST1JTJz48ZmlsZW5hbWU+TUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPiBlbnRyaWVzCisgICAgICAgIGZvciBzb3VyY2UgY29kZSBtaXJyb3JzLgorICAgICAgICBUaGVzZSBtaXJyb3JzIHByb3ZpZGUgYSBmYWxsLWJhY2sgcGF0aCBpbiBjYXNlIHRoZSB1cHN0cmVhbSBzb3VyY2UKKyAgICAgICAgc3BlY2lmaWVkIGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB3aXRoaW4gcmVjaXBlcyBpcyB1bmF2YWlsYWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjbGFzcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgc2luY2UgaXQgaXMgaW5oZXJpdGVkIGJ5IHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC9saW5rPiBjbGFzcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1tb2R1bGUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+bW9kdWxlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvciBidWlsZGluZworICAgICAgICBvdXQtb2YtdHJlZSBMaW51eCBrZXJuZWwgbW9kdWxlcy4KKyAgICAgICAgVGhlIGNsYXNzIGluaGVyaXRzIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1tb2R1bGUtYmFzZSc+PGZpbGVuYW1lPm1vZHVsZS1iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGFuZAorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwtbW9kdWxlLXNwbGl0Jz48ZmlsZW5hbWU+a2VybmVsLW1vZHVsZS1zcGxpdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzc2VzLCBhbmQgaW1wbGVtZW50cyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGFuZAorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdGFza3MuCisgICAgICAgIFRoZSBjbGFzcyBwcm92aWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBidWlsZCBhbmQgcGFja2FnZSBhIGtlcm5lbAorICAgICAgICBtb2R1bGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIG91dC1vZi10cmVlIExpbnV4IGtlcm5lbCBtb2R1bGVzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjaW5jb3Jwb3JhdGluZy1vdXQtb2YtdHJlZS1tb2R1bGVzJz5JbmNvcnBvcmF0aW5nIE91dC1vZi1UcmVlIE1vZHVsZXM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLW1vZHVsZS1iYXNlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPm1vZHVsZS1iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5tb2R1bGUtYmFzZTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHRoZSBiYXNlCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIExpbnV4IGtlcm5lbCBtb2R1bGVzLgorICAgICAgICBUeXBpY2FsbHksIGEgcmVjaXBlIHRoYXQgYnVpbGRzIHNvZnR3YXJlIHRoYXQgaW5jbHVkZXMgb25lIG9yCisgICAgICAgIG1vcmUga2VybmVsIG1vZHVsZXMgYW5kIGhhcyBpdHMgb3duIG1lYW5zIG9mIGJ1aWxkaW5nCisgICAgICAgIHRoZSBtb2R1bGUgaW5oZXJpdHMgdGhpcyBjbGFzcyBhcyBvcHBvc2VkIHRvIGluaGVyaXRpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLW1vZHVsZSc+PGZpbGVuYW1lPm1vZHVsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1tdWx0aWxpYionPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+bXVsdGlsaWIqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5tdWx0aWxpYio8L2ZpbGVuYW1lPiBjbGFzc2VzIHByb3ZpZGUgc3VwcG9ydAorICAgICAgICBmb3IgYnVpbGRpbmcgbGlicmFyaWVzIHdpdGggZGlmZmVyZW50IHRhcmdldCBvcHRpbWl6YXRpb25zIG9yIHRhcmdldAorICAgICAgICBhcmNoaXRlY3R1cmVzIGFuZCBpbnN0YWxsaW5nIHRoZW0gc2lkZS1ieS1zaWRlIGluIHRoZSBzYW1lIGltYWdlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgTXVsdGlsaWIgZmVhdHVyZSwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY29tYmluaW5nLW11bHRpcGxlLXZlcnNpb25zLWxpYnJhcnktZmlsZXMtaW50by1vbmUtaW1hZ2UnPkNvbWJpbmluZyBNdWx0aXBsZSBWZXJzaW9ucyBvZiBMaWJyYXJ5IEZpbGVzIGludG8gT25lIEltYWdlPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLW5hdGl2ZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5uYXRpdmUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIGNvbW1vbgorICAgICAgICBmdW5jdGlvbmFsaXR5IGZvciByZWNpcGVzIHRoYXQgYnVpbGQgdG9vbHMgdG8gcnVuIG9uIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvbGluaz4KKyAgICAgICAgKGkuZS4gdG9vbHMgdGhhdCB1c2UgdGhlIGNvbXBpbGVyIG9yIG90aGVyIHRvb2xzIGZyb20gdGhlCisgICAgICAgIGJ1aWxkIGhvc3QpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGNyZWF0ZSBhIHJlY2lwZSB0aGF0IGJ1aWxkcyB0b29scyB0aGF0IHJ1biBuYXRpdmVseSBvbiB0aGUKKyAgICAgICAgaG9zdCBhIGNvdXBsZSBkaWZmZXJlbnQgd2F5czoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBDcmVhdGUgYQorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5teXJlY2lwZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi1uYXRpdmUuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSB0aGF0IGluaGVyaXRzIHRoZSA8ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgSWYgeW91IHVzZSB0aGlzIG1ldGhvZCwgeW91IG11c3Qgb3JkZXIgdGhlIGluaGVyaXQgc3RhdGVtZW50CisgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSBhZnRlciBhbGwgb3RoZXIgaW5oZXJpdCBzdGF0ZW1lbnRzIHNvIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+IGNsYXNzIGlzIGluaGVyaXRlZCBsYXN0LgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5XYXJuaW5nPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyBhIHJlY2lwZSB0aGlzIHdheSwgdGhlIHJlY2lwZSBuYW1lIG11c3QKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb246CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPm15cmVjaXBlPC9yZXBsYWNlYWJsZT4tbmF0aXZlLmJiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgTm90IHVzaW5nIHRoaXMgbmFtaW5nIGNvbnZlbnRpb24gY2FuIGxlYWQgdG8gc3VidGxlCisgICAgICAgICAgICAgICAgICAgIHByb2JsZW1zIGNhdXNlZCBieSBleGlzdGluZyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGF0CisgICAgICAgICAgICAgICAgICAgIG5hbWluZyBjb252ZW50aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBDcmVhdGUgb3IgbW9kaWZ5IGEgdGFyZ2V0IHJlY2lwZSB0aGF0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJDTEFTU0VYVEVORCc+PGZpbGVuYW1lPkJCQ0xBU1NFWFRFTkQ8L2ZpbGVuYW1lPjwvbGluaz4gPSAibmF0aXZlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbnNpZGUgdGhlIHJlY2lwZSwgdXNlIDxmaWxlbmFtZT5fY2xhc3MtbmF0aXZlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9jbGFzcy10YXJnZXQ8L2ZpbGVuYW1lPiBvdmVycmlkZXMgdG8gc3BlY2lmeSBhbnkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IHNwZWNpZmljIHRvIHRoZSByZXNwZWN0aXZlIG5hdGl2ZSBvciB0YXJnZXQKKyAgICAgICAgICAgICAgICBjYXNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQWx0aG91Z2ggYXBwbGllZCBkaWZmZXJlbnRseSwgdGhlIDxmaWxlbmFtZT5uYXRpdmU8L2ZpbGVuYW1lPiBjbGFzcyBpcworICAgICAgICB1c2VkIHdpdGggYm90aCBtZXRob2RzLgorICAgICAgICBUaGUgYWR2YW50YWdlIG9mIHRoZSBzZWNvbmQgbWV0aG9kIGlzIHRoYXQgeW91IGRvIG5vdCBuZWVkIHRvIGhhdmUgdHdvCisgICAgICAgIHNlcGFyYXRlIHJlY2lwZXMgKGFzc3VtaW5nIHlvdSBuZWVkIGJvdGgpIGZvciBuYXRpdmUgYW5kIHRhcmdldC4KKyAgICAgICAgQWxsIGNvbW1vbiBwYXJ0cyBvZiB0aGUgcmVjaXBlIGFyZSBhdXRvbWF0aWNhbGx5IHNoYXJlZC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1uYXRpdmVzZGsnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+bmF0aXZlc2RrLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBjb21tb24KKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgcmVjaXBlcyB0aGF0IHdpc2ggdG8gYnVpbGQgdG9vbHMgdG8gcnVuIGFzIHBhcnQgb2YKKyAgICAgICAgYW4gU0RLIChpLmUuIHRvb2xzIHRoYXQgcnVuIG9uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgcmVjaXBlIHRoYXQgYnVpbGRzIHRvb2xzIHRoYXQgcnVuIG9uIHRoZSBTREsgbWFjaGluZQorICAgICAgICBhIGNvdXBsZSBkaWZmZXJlbnQgd2F5czoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSB0aGF0IGluaGVyaXRzIHRoZSA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgSWYgeW91IHVzZSB0aGlzIG1ldGhvZCwgeW91IG11c3Qgb3JkZXIgdGhlIGluaGVyaXQgc3RhdGVtZW50CisgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSBhZnRlciBhbGwgb3RoZXIgaW5oZXJpdCBzdGF0ZW1lbnRzIHNvIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkazwvZmlsZW5hbWU+IGNsYXNzIGlzIGluaGVyaXRlZCBsYXN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiB2YXJpYW50CisgICAgICAgICAgICAgICAgb2YgYW55IHJlY2lwZSBieSBhZGRpbmcgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQkNMQVNTRVhURU5EJz48ZmlsZW5hbWU+QkJDTEFTU0VYVEVORDwvZmlsZW5hbWU+PC9saW5rPiA9ICJuYXRpdmVzZGsiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEluc2lkZSB0aGUgcmVjaXBlLCB1c2UgPGZpbGVuYW1lPl9jbGFzcy1uYXRpdmVzZGs8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X2NsYXNzLXRhcmdldDwvZmlsZW5hbWU+IG92ZXJyaWRlcyB0byBzcGVjaWZ5IGFueQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgc3BlY2lmaWMgdG8gdGhlIHJlc3BlY3RpdmUgU0RLIG1hY2hpbmUgb3IgdGFyZ2V0CisgICAgICAgICAgICAgICAgY2FzZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDxub3RlPjx0aXRsZT5XYXJuaW5nPC90aXRsZT4KKyAgICAgICAgICAgIFdoZW4gY3JlYXRpbmcgYSByZWNpcGUsIHlvdSBtdXN0IGZvbGxvdyB0aGlzIG5hbWluZyBjb252ZW50aW9uOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBuYXRpdmVzZGstPHJlcGxhY2VhYmxlPm15cmVjaXBlPC9yZXBsYWNlYWJsZT4uYmIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIE5vdCBkb2luZyBzbyBjYW4gbGVhZCB0byBzdWJ0bGUgcHJvYmxlbXMgYmVjYXVzZSBjb2RlIGV4aXN0cworICAgICAgICAgICAgdGhhdCBkZXBlbmRzIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBbHRob3VnaCBhcHBsaWVkIGRpZmZlcmVudGx5LCB0aGUgPGZpbGVuYW1lPm5hdGl2ZXNkazwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIGlzIHVzZWQgd2l0aCBib3RoIG1ldGhvZHMuCisgICAgICAgIFRoZSBhZHZhbnRhZ2Ugb2YgdGhlIHNlY29uZCBtZXRob2QgaXMgdGhhdCB5b3UgZG8gbm90IG5lZWQgdG8gaGF2ZSB0d28KKyAgICAgICAgc2VwYXJhdGUgcmVjaXBlcyAoYXNzdW1pbmcgeW91IG5lZWQgYm90aCkgZm9yIHRoZSBTREsgbWFjaGluZSBhbmQgdGhlCisgICAgICAgIHRhcmdldC4KKyAgICAgICAgQWxsIGNvbW1vbiBwYXJ0cyBvZiB0aGUgcmVjaXBlIGFyZSBhdXRvbWF0aWNhbGx5IHNoYXJlZC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1ub3BhY2thZ2VzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPm5vcGFja2FnZXMuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBEaXNhYmxlcyBwYWNrYWdpbmcgdGFza3MgZm9yIHRob3NlIHJlY2lwZXMgYW5kIGNsYXNzZXMgd2hlcmUKKyAgICAgICAgcGFja2FnaW5nIGlzIG5vdCBuZWVkZWQuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtbnBtJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPm5wbS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIE5vZGUuanMgc29mdHdhcmUgZmV0Y2hlZCB1c2luZyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnBtXyhzb2Z0d2FyZSknPm5vZGUgcGFja2FnZSBtYW5hZ2VyIChOUE0pPC91bGluaz4uCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgQ3VycmVudGx5LCByZWNpcGVzIGluaGVyaXRpbmcgdGhpcyBjbGFzcyBtdXN0IHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5ucG06Ly88L2ZpbGVuYW1lPiBmZXRjaGVyIHRvIGhhdmUgZGVwZW5kZW5jaWVzIGZldGNoZWQKKyAgICAgICAgICAgIGFuZCBwYWNrYWdlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICA8L25vdGU+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIE5QTSBwYWNrYWdlcywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctbm9kZS1wYWNrYWdlLW1hbmFnZXItbnBtLXBhY2thZ2VzJz5DcmVhdGluZyBOb2RlIFBhY2thZ2UgTWFuYWdlciAoTlBNKSBQYWNrYWdlczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1vZWxpbnQnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+b2VsaW50LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5vZWxpbnQ8L2ZpbGVuYW1lPiBjbGFzcyBpcyBhbgorICAgICAgICBvYnNvbGV0ZSBsaW50IGNoZWNraW5nIHRvb2wgdGhhdCBleGlzdHMgaW4KKyAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQSBudW1iZXIgb2YgY2xhc3NlcyBleGlzdCB0aGF0IGNvdWxkIGJlIGdlbmVyYWxseSB1c2VmdWwgaW4KKyAgICAgICAgT0UtQ29yZSBidXQgYXJlIG5ldmVyIGFjdHVhbGx5IHVzZWQgd2l0aGluIE9FLUNvcmUgaXRzZWxmLgorICAgICAgICBUaGUgPGZpbGVuYW1lPm9lbGludDwvZmlsZW5hbWU+IGNsYXNzIGlzIG9uZSBzdWNoIGV4YW1wbGUuCisgICAgICAgIEhvd2V2ZXIsIGJlaW5nIGF3YXJlIG9mIHRoaXMgY2xhc3MgY2FuIHJlZHVjZSB0aGUgcHJvbGlmZXJhdGlvbiBvZgorICAgICAgICBkaWZmZXJlbnQgdmVyc2lvbnMgb2Ygc2ltaWxhciBjbGFzc2VzIGFjcm9zcyBtdWx0aXBsZSBsYXllcnMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtb3duLW1pcnJvcnMnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+b3duLW1pcnJvcnMuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPm93bi1taXJyb3JzPC9maWxlbmFtZT4gY2xhc3MgbWFrZXMgaXQKKyAgICAgICAgZWFzaWVyIHRvIHNldCB1cCB5b3VyIG93bgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgZnJvbSB3aGljaCB0byBmaXJzdCBmZXRjaCBzb3VyY2UgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKKyAgICAgICAgdXBzdHJlYW0gc3BlY2lmaWVkIGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB3aXRoaW4gZWFjaCByZWNpcGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIHVzZSB0aGlzIGNsYXNzLCBpbmhlcml0IGl0IGdsb2JhbGx5IGFuZCBzcGVjaWZ5CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TT1VSQ0VfTUlSUk9SX1VSTCc+PGZpbGVuYW1lPlNPVVJDRV9NSVJST1JfVVJMPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAib3duLW1pcnJvcnMiCisgICAgIFNPVVJDRV9NSVJST1JfVVJMID0gImh0dHA6Ly9leGFtcGxlLmNvbS9teS1zb3VyY2UtbWlycm9yIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBvbmx5IGEgc2luZ2xlIFVSTCBpbgorICAgICAgICA8ZmlsZW5hbWU+U09VUkNFX01JUlJPUl9VUkw8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wYWNrYWdlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnBhY2thZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBnZW5lcmF0aW5nCisgICAgICAgIHBhY2thZ2VzIGZyb20gYSBidWlsZCdzIG91dHB1dC4KKyAgICAgICAgVGhlIGNvcmUgZ2VuZXJpYyBmdW5jdGlvbmFsaXR5IGlzIGluCisgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgVGhlIGNvZGUgc3BlY2lmaWMgdG8gcGFydGljdWxhciBwYWNrYWdlIHR5cGVzIHJlc2lkZXMgaW4gdGhlc2UKKyAgICAgICAgcGFja2FnZS1zcGVjaWZpYyBjbGFzc2VzOgorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX2RlYic+PGZpbGVuYW1lPnBhY2thZ2VfZGViPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX3JwbSc+PGZpbGVuYW1lPnBhY2thZ2VfcnBtPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX2lwayc+PGZpbGVuYW1lPnBhY2thZ2VfaXBrPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV90YXInPjxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+IGNsYXNzIGlzIGJyb2tlbiBhbmQgbm90CisgICAgICAgICAgICBzdXBwb3J0ZWQuCisgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkbyBub3QgdXNlIHRoaXMgY2xhc3MuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBjb250cm9sIHRoZSBsaXN0IG9mIHJlc3VsdGluZyBwYWNrYWdlIGZvcm1hdHMgYnkgdXNpbmcgdGhlCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz5QQUNLQUdFX0NMQVNTRVM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgdmFyaWFibGUgZGVmaW5lZCBpbiB5b3VyIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgV2hlbiBkZWZpbmluZyB0aGUgdmFyaWFibGUsIHlvdSBjYW4gc3BlY2lmeSBvbmUgb3IgbW9yZSBwYWNrYWdlIHR5cGVzLgorICAgICAgICBTaW5jZSBpbWFnZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHBhY2thZ2VzLCBhIHBhY2thZ2luZyBjbGFzcyBpcworICAgICAgICBuZWVkZWQgdG8gZW5hYmxlIGltYWdlIGdlbmVyYXRpb24uCisgICAgICAgIFRoZSBmaXJzdCBjbGFzcyBsaXN0ZWQgaW4gdGhpcyB2YXJpYWJsZSBpcyB1c2VkIGZvciBpbWFnZSBnZW5lcmF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiB5b3UgdGFrZSB0aGUgb3B0aW9uYWwgc3RlcCB0byBzZXQgdXAgYSByZXBvc2l0b3J5IChwYWNrYWdlIGZlZWQpCisgICAgICAgIG9uIHRoZSBkZXZlbG9wbWVudCBob3N0IHRoYXQgY2FuIGJlIHVzZWQgYnkgRE5GLCB5b3UgY2FuCisgICAgICAgIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgZmVlZCB3aGlsZSB5b3UgYXJlIHJ1bm5pbmcgdGhlIGltYWdlCisgICAgICAgIG9uIHRoZSB0YXJnZXQgKGkuZS4gcnVudGltZSBpbnN0YWxsYXRpb24gb2YgcGFja2FnZXMpLgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctcnVudGltZS1wYWNrYWdlLW1hbmFnZW1lbnQnPlVzaW5nIFJ1bnRpbWUgUGFja2FnZSBNYW5hZ2VtZW50PC91bGluaz4iCisgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBhY2thZ2Utc3BlY2lmaWMgY2xhc3MgeW91IGNob29zZSBjYW4gYWZmZWN0IGJ1aWxkLXRpbWUgcGVyZm9ybWFuY2UKKyAgICAgICAgYW5kIGhhcyBzcGFjZSByYW1pZmljYXRpb25zLgorICAgICAgICBJbiBnZW5lcmFsLCBidWlsZGluZyBhIHBhY2thZ2Ugd2l0aCBJUEsgdGFrZXMgYWJvdXQgdGhpcnR5IHBlcmNlbnQgbGVzcworICAgICAgICB0aW1lIGFzIGNvbXBhcmVkIHRvIHVzaW5nIFJQTSB0byBidWlsZCB0aGUgc2FtZSBvciBzaW1pbGFyIHBhY2thZ2UuCisgICAgICAgIFRoaXMgY29tcGFyaXNvbiB0YWtlcyBpbnRvIGFjY291bnQgYSBjb21wbGV0ZSBidWlsZCBvZiB0aGUgcGFja2FnZSB3aXRoCisgICAgICAgIGFsbCBkZXBlbmRlbmNpZXMgcHJldmlvdXNseSBidWlsdC4KKyAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBkaXNjcmVwYW5jeSBpcyBiZWNhdXNlIHRoZSBSUE0gcGFja2FnZSBtYW5hZ2VyCisgICAgICAgIGNyZWF0ZXMgYW5kIHByb2Nlc3NlcyBtb3JlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4gdGhhbiB0aGUKKyAgICAgICAgSVBLIHBhY2thZ2UgbWFuYWdlci4KKyAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbWlnaHQgY29uc2lkZXIgc2V0dGluZworICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT4gdG8gInBhY2thZ2VfaXBrIiBpZiB5b3UgYXJlCisgICAgICAgIGJ1aWxkaW5nIHNtYWxsZXIgc3lzdGVtcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQmVmb3JlIG1ha2luZyB5b3VyIHBhY2thZ2UgbWFuYWdlciBkZWNpc2lvbiwgaG93ZXZlciwgeW91IHNob3VsZAorICAgICAgICBjb25zaWRlciBzb21lIGZ1cnRoZXIgdGhpbmdzIGFib3V0IHVzaW5nIFJQTToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBSUE0gc3RhcnRzIHRvIHByb3ZpZGUgbW9yZSBhYmlsaXRpZXMgdGhhbiBJUEsgZHVlIHRvCisgICAgICAgICAgICAgICAgdGhlIGZhY3QgdGhhdCBpdCBwcm9jZXNzZXMgbW9yZSBNZXRhZGF0YS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyBpbmRpdmlkdWFsIGZpbGUgdHlwZXMsCisgICAgICAgICAgICAgICAgZmlsZSBjaGVja3N1bSBnZW5lcmF0aW9uIGFuZCBldmFsdWF0aW9uIG9uIGluc3RhbGwsIHNwYXJzZSBmaWxlCisgICAgICAgICAgICAgICAgc3VwcG9ydCwgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9uIGZvciBNdWx0aWxpYiBzeXN0ZW1zLAorICAgICAgICAgICAgICAgIEFDSUQgc3R5bGUgdXBncmFkZSwgYW5kIHJlcGFja2FnaW5nIGFiaWxpdGllcyBmb3Igcm9sbGJhY2tzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBzbWFsbGVyIHN5c3RlbXMsIHRoZSBleHRyYSBzcGFjZSB1c2VkIGZvciB0aGUgQmVya2VsZXkKKyAgICAgICAgICAgICAgICBEYXRhYmFzZSBhbmQgdGhlIGFtb3VudCBvZiBtZXRhZGF0YSB3aGVuIHVzaW5nIFJQTSBjYW4gYWZmZWN0CisgICAgICAgICAgICAgICAgeW91ciBhYmlsaXR5IHRvIHBlcmZvcm0gb24tZGV2aWNlIHVwZ3JhZGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBmaW5kIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIGVmZmVjdHMgb2YgdGhlIHBhY2thZ2UKKyAgICAgICAgY2xhc3MgYXQgdGhlc2UgdHdvIFlvY3RvIFByb2plY3QgbWFpbGluZyBsaXN0IGxpbmtzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L3BpcGVybWFpbC9wb2t5LzIwMTEtTWF5LzAwNjM2Mi5odG1sJz4KKyAgICAgICAgICAgICAgICBodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvcGlwZXJtYWlsL3Bva3kvMjAxMS1NYXkvMDA2MzYyLmh0bWw8L3VsaW5rPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L3BpcGVybWFpbC9wb2t5LzIwMTEtTWF5LzAwNjM2My5odG1sJz4KKyAgICAgICAgICAgICAgICBodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvcGlwZXJtYWlsL3Bva3kvMjAxMS1NYXkvMDA2MzYzLmh0bWw8L3VsaW5rPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX2RlYic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5wYWNrYWdlX2RlYi5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGFja2FnZV9kZWI8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICBwcm92aWRlcyBzdXBwb3J0IGZvciBjcmVhdGluZyBwYWNrYWdlcyB0aGF0IHVzZSB0aGUgRGViaWFuCisgICAgICAgIChpLmUuIDxmaWxlbmFtZT4uZGViPC9maWxlbmFtZT4pIGZpbGUgZm9ybWF0LgorICAgICAgICBUaGUgY2xhc3MgZW5zdXJlcyB0aGUgcGFja2FnZXMgYXJlIHdyaXR0ZW4gb3V0IGluIGEKKyAgICAgICAgPGZpbGVuYW1lPi5kZWI8L2ZpbGVuYW1lPiBmaWxlIGZvcm1hdCB0byB0aGUKKyAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9ERUInPjxmaWxlbmFtZT5ERVBMT1lfRElSX0RFQjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgZGlyZWN0b3J5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIGluaGVyaXRzIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlJz48ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzcyBhbmQgaXMgZW5hYmxlZCB0aHJvdWdoIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcGFja2FnZV9pcGsnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cGFja2FnZV9pcGsuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnBhY2thZ2VfaXBrPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgcGFja2FnZXMgdGhhdCB1c2UgdGhlIElQSworICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+LmlwazwvZmlsZW5hbWU+KSBmaWxlIGZvcm1hdC4KKyAgICAgICAgVGhlIGNsYXNzIGVuc3VyZXMgdGhlIHBhY2thZ2VzIGFyZSB3cml0dGVuIG91dCBpbiBhCisgICAgICAgIDxmaWxlbmFtZT4uaXBrPC9maWxlbmFtZT4gZmlsZSBmb3JtYXQgdG8gdGhlCisgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfSVBLJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JUEs8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgIGRpcmVjdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjbGFzcyBpbmhlcml0cyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZSc+PGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MgYW5kIGlzIGVuYWJsZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXBhY2thZ2VfcnBtJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnBhY2thZ2VfcnBtLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5wYWNrYWdlX3JwbTwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHBhY2thZ2VzIHRoYXQgdXNlIHRoZSBSUE0KKyAgICAgICAgKGkuZS4gPGZpbGVuYW1lPi5ycG08L2ZpbGVuYW1lPikgZmlsZSBmb3JtYXQuCisgICAgICAgIFRoZSBjbGFzcyBlbnN1cmVzIHRoZSBwYWNrYWdlcyBhcmUgd3JpdHRlbiBvdXQgaW4gYQorICAgICAgICA8ZmlsZW5hbWU+LnJwbTwvZmlsZW5hbWU+IGZpbGUgZm9ybWF0IHRvIHRoZQorICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICBkaXJlY3RvcnkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzIGFuZCBpcyBlbmFibGVkIHRocm91Z2ggdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX3Rhcic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5wYWNrYWdlX3Rhci5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGFja2FnZV90YXI8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICBwcm92aWRlcyBzdXBwb3J0IGZvciBjcmVhdGluZyB0YXJiYWxscy4KKyAgICAgICAgVGhlIGNsYXNzIGVuc3VyZXMgdGhlIHBhY2thZ2VzIGFyZSB3cml0dGVuIG91dCBpbiBhCisgICAgICAgIHRhcmJhbGwgZm9ybWF0IHRvIHRoZQorICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICBkaXJlY3RvcnkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzIGFuZCBpcyBlbmFibGVkIHRocm91Z2ggdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBZb3UgY2Fubm90IHNwZWNpZnkgdGhlIDxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgICAgICBmaXJzdCB1c2luZyB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgWW91IG11c3QgdXNlIDxmaWxlbmFtZT4uZGViPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+LmlwazwvZmlsZW5hbWU+LCBvciA8ZmlsZW5hbWU+LnJwbTwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgIGZvcm1hdHMgZm9yIHlvdXIgaW1hZ2Ugb3IgU0RLLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcGFja2FnZWRhdGEnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cGFja2FnZWRhdGEuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnBhY2thZ2VkYXRhPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMKKyAgICAgICAgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIHJlYWRpbmcgPGZpbGVuYW1lPnBrZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlcworICAgICAgICBmb3VuZCBpbgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgVGhlc2UgZmlsZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIG91dHB1dCBwYWNrYWdlIHByb2R1Y2VkIGJ5CisgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIGl0IGlzIGluaGVyaXRlZCBieSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZSc+PGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcGFja2FnZWdyb3VwJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnBhY2thZ2Vncm91cC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwPC9maWxlbmFtZT4gY2xhc3Mgc2V0cyBkZWZhdWx0IHZhbHVlcworICAgICAgICBhcHByb3ByaWF0ZSBmb3IgcGFja2FnZSBncm91cCByZWNpcGVzIChlLmcuCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPlBBQ0tBR0VTPC9saW5rPjwvZmlsZW5hbWU+LAorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQVJDSCc+UEFDS0FHRV9BUkNIPC9saW5rPjwvZmlsZW5hbWU+LAorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUFMTE9XX0VNUFRZJz5BTExPV19FTVBUWTwvbGluaz48L2ZpbGVuYW1lPiwKKyAgICAgICAgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgSXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRoYXQgYWxsIHBhY2thZ2UgZ3JvdXAgcmVjaXBlcyBpbmhlcml0IHRoaXMgY2xhc3MuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtY3VzdG9tdGFza3MnPkN1c3RvbWl6aW5nIEltYWdlcyBVc2luZyBDdXN0b20gUGFja2FnZSBHcm91cHM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFByZXZpb3VzbHksIHRoaXMgY2xhc3Mgd2FzIGNhbGxlZCB0aGUgPGZpbGVuYW1lPnRhc2s8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wYXRjaCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5wYXRjaC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGF0Y2g8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0eSBmb3IKKyAgICAgICAgYXBwbHlpbmcgcGF0Y2hlcyBkdXJpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHRhc2suCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3MgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXQgaXMgaW5oZXJpdGVkIGJ5IHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wZXJsbmF0aXZlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnBlcmxuYXRpdmUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIGluaGVyaXRlZCBieSBhIHJlY2lwZSwgdGhlIDxmaWxlbmFtZT5wZXJsbmF0aXZlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgc3VwcG9ydHMgdXNpbmcgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIFBlcmwgYnVpbHQgYnkgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICByYXRoZXIgdGhhbiB1c2luZyB0aGUgdmVyc2lvbiBwcm92aWRlZCBieSB0aGUgYnVpbGQgaG9zdC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1waXhidWZjYWNoZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5waXhidWZjYWNoZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGl4YnVmY2FjaGU8L2ZpbGVuYW1lPiBjbGFzcyBnZW5lcmF0ZXMgdGhlIHByb3BlcgorICAgICAgICBwb3N0LWluc3RhbGwgYW5kIHBvc3QtcmVtb3ZlIChwb3N0aW5zdC9wb3N0cm0pIHNjcmlwdGxldHMgZm9yIHBhY2thZ2VzCisgICAgICAgIHRoYXQgaW5zdGFsbCBwaXhidWYgbG9hZGVycywgd2hpY2ggYXJlIHVzZWQgd2l0aAorICAgICAgICA8ZmlsZW5hbWU+Z2RrLXBpeGJ1ZjwvZmlsZW5hbWU+LgorICAgICAgICBUaGVzZSBzY3JpcHRsZXRzIGNhbGwgPGZpbGVuYW1lPnVwZGF0ZV9waXhidWZfY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICB0byBhZGQgdGhlIHBpeGJ1ZiBsb2FkZXJzIHRvIHRoZSBjYWNoZS4KKyAgICAgICAgU2luY2UgdGhlIGNhY2hlIGZpbGVzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsCisgICAgICAgIDxmaWxlbmFtZT51cGRhdGVfcGl4YnVmX2NhY2hlPC9maWxlbmFtZT4gaXMgcnVuIHVzaW5nIFFFTVUgaWYgdGhlCisgICAgICAgIHBvc3RpbnN0IHNjcmlwdGxldHMgbmVlZCB0byBiZSBydW4gb24gdGhlIGJ1aWxkIGhvc3QgZHVyaW5nIGltYWdlCisgICAgICAgIGNyZWF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiB0aGUgcGl4YnVmIGxvYWRlcnMgYmVpbmcgaW5zdGFsbGVkIGFyZSBpbiBwYWNrYWdlcyBvdGhlcgorICAgICAgICB0aGFuIHRoZSByZWNpcGUncyBtYWluIHBhY2thZ2UsIHNldAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUElYQlVGX1BBQ0tBR0VTJz48ZmlsZW5hbWU+UElYQlVGX1BBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2VzIGNvbnRhaW5pbmcgdGhlIGxvYWRlcnMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcGtnY29uZmlnJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnBrZ2NvbmZpZy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGtnY29uZmlnPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgYSBzdGFuZGFyZCB3YXkgdG8gZ2V0CisgICAgICAgIGhlYWRlciBhbmQgbGlicmFyeSBpbmZvcm1hdGlvbiBieSB1c2luZyA8ZmlsZW5hbWU+cGtnLWNvbmZpZzwvZmlsZW5hbWU+LgorICAgICAgICBUaGlzIGNsYXNzIGFpbXMgdG8gc21vb3RoIGludGVncmF0aW9uIG9mCisgICAgICAgIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4gaW50byBsaWJyYXJpZXMgdGhhdCB1c2UgaXQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIER1cmluZyBzdGFnaW5nLCBCaXRCYWtlIGluc3RhbGxzIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgZGF0YSBpbnRvIHRoZSA8ZmlsZW5hbWU+c3lzcm9vdHMvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICBCeSBtYWtpbmcgdXNlIG9mIHN5c3Jvb3QgZnVuY3Rpb25hbGl0eSB3aXRoaW4KKyAgICAgICAgPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPiwgdGhlIDxmaWxlbmFtZT5wa2djb25maWc8L2ZpbGVuYW1lPgorICAgICAgICBjbGFzcyBubyBsb25nZXIgaGFzIHRvIG1hbmlwdWxhdGUgdGhlIGZpbGVzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkayc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGsuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnBvcHVsYXRlX3NkazwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yCisgICAgICAgIFNESy1vbmx5IHJlY2lwZXMuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgdG9vbGNoYWluIHVzaW5nIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHRhc2ssIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka18qLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfKjwvZmlsZW5hbWU+IGNsYXNzZXMgc3VwcG9ydCBTREsgY3JlYXRpb24KKyAgICAgICAgYW5kIGNvbnNpc3Qgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBiYXNlIGNsYXNzIHN1cHBvcnRpbmcgU0RLIGNyZWF0aW9uIHVuZGVyIGFsbCBwYWNrYWdlCisgICAgICAgICAgICAgICAgbWFuYWdlcnMgKGkuZS4gREVCLCBSUE0sIGFuZCBvcGtnKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19kZWI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFN1cHBvcnRzIGNyZWF0aW9uIG9mIHRoZSBTREsgZ2l2ZW4gdGhlIERlYmlhbiBwYWNrYWdlIG1hbmFnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfcnBtPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBTdXBwb3J0cyBjcmVhdGlvbiBvZiB0aGUgU0RLIGdpdmVuIHRoZSBSUE0gcGFja2FnZSBtYW5hZ2VyLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2lwazwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgU3VwcG9ydHMgY3JlYXRpb24gb2YgdGhlIFNESyBnaXZlbiB0aGUgb3BrZyAoSVBLIGZvcm1hdCkKKyAgICAgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfZXh0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBTdXBwb3J0cyBleHRlbnNpYmxlIFNESyBjcmVhdGlvbiB1bmRlciBhbGwgcGFja2FnZSBtYW5hZ2Vycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPiBjbGFzcyBpbmhlcml0cyB0aGUKKyAgICAgICAgYXBwcm9wcmlhdGUgPGZpbGVuYW1lPnBvcHVsYXRlX3Nka18qPC9maWxlbmFtZT4gKGkuZS4KKyAgICAgICAgPGZpbGVuYW1lPmRlYjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cnBtPC9maWxlbmFtZT4sIGFuZAorICAgICAgICA8ZmlsZW5hbWU+aXBrPC9maWxlbmFtZT4pIGJhc2VkIG9uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QS0dUWVBFJz48ZmlsZW5hbWU+SU1BR0VfUEtHVFlQRTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGJhc2UgY2xhc3MgZW5zdXJlcyBhbGwgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcyBhcmUKKyAgICAgICAgZXN0YWJsaXNoZWQgYW5kIHRoZW4gcG9wdWxhdGVzIHRoZSBTREsuCisgICAgICAgIEFmdGVyIHBvcHVsYXRpbmcgdGhlIFNESywgdGhlIDxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+CisgICAgICAgIGNsYXNzIGNvbnN0cnVjdHMgdHdvIHN5c3Jvb3RzOgorICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0tbmF0aXZlc2RrPC9maWxlbmFtZT4sCisgICAgICAgIHdoaWNoIGNvbnRhaW5zIHRoZSBjcm9zcy1jb21waWxlciBhbmQgYXNzb2NpYXRlZCB0b29saW5nLCBhbmQgdGhlCisgICAgICAgIHRhcmdldCwgd2hpY2ggY29udGFpbnMgYSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtIHRoYXQgaXMgY29uZmlndXJlZCBmb3IKKyAgICAgICAgdGhlIFNESyB1c2FnZS4KKyAgICAgICAgVGhlc2UgdHdvIGltYWdlcyByZXNpZGUgaW4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19PVVRQVVQnPjxmaWxlbmFtZT5TREtfT1VUUFVUPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICB3aGljaCBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7U0RLX09VVFBVVH0vJHtTREtfQVJDSH08cmVwbGFjZWFibGU+LW5hdGl2ZXNkay1wa2dzPC9yZXBsYWNlYWJsZT4KKyAgICAgJHtTREtfT1VUUFVUfS8ke1NES1RBUkdFVFNZU1JPT1R9LzxyZXBsYWNlYWJsZT50YXJnZXQtcGtnczwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRmluYWxseSwgdGhlIGJhc2UgcG9wdWxhdGUgU0RLIGNsYXNzIGNyZWF0ZXMgdGhlIHRvb2xjaGFpbgorICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIHRoZSB0YXJiYWxsIG9mIHRoZSBTREssIGFuZCB0aGUgaW5zdGFsbGVyLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgcmVzcGVjdGl2ZSA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2RlYjwvZmlsZW5hbWU+LAorICAgICAgICA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX3JwbTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgPGZpbGVuYW1lPnBvcHVsYXRlX3Nka19pcGs8L2ZpbGVuYW1lPiBjbGFzc2VzIGVhY2ggc3VwcG9ydCB0aGUKKyAgICAgICAgc3BlY2lmaWMgdHlwZSBvZiBTREsuCisgICAgICAgIFRoZXNlIGNsYXNzZXMgYXJlIGluaGVyaXRlZCBieSBhbmQgdXNlZCB3aXRoIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgorICAgICAgICBnZW5lcmF0aW9uLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKKyAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIHVzaW5nIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHRhc2ssIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXByZXhwb3J0Jz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnByZXhwb3J0LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5wcmV4cG9ydDwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yCisgICAgICAgIGV4cG9ydGluZworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPiB2YWx1ZXMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseS4KKyAgICAgICAgICAgIFJhdGhlciwgaXQgaXMgZW5hYmxlZCB3aGVuIHVzaW5nCisgICAgICAgICAgICAiPGZpbGVuYW1lPmJpdGJha2UtcHJzZXJ2LXRvb2wgZXhwb3J0PC9maWxlbmFtZT4iLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcHJpbXBvcnQnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cHJpbXBvcnQuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnByaW1wb3J0PC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IKKyAgICAgICAgaW1wb3J0aW5nCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+IHZhbHVlcy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5LgorICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBlbmFibGVkIHdoZW4gdXNpbmcKKyAgICAgICAgICAgICI8ZmlsZW5hbWU+Yml0YmFrZS1wcnNlcnYtdG9vbCBpbXBvcnQ8L2ZpbGVuYW1lPiIuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wcnNlcnYnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cHJzZXJ2LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5wcnNlcnY8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvcgorICAgICAgICB1c2luZyBhCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC1hLXByLXNlcnZpY2UnPlBSIHNlcnZpY2U8L3VsaW5rPgorICAgICAgICBpbiBvcmRlciB0byBhdXRvbWF0aWNhbGx5IG1hbmFnZSB0aGUgaW5jcmVtZW50aW5nIG9mIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZSBmb3IKKyAgICAgICAgZWFjaCByZWNpcGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3MgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXQgaXMgaW5oZXJpdGVkIGJ5IHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlJz48ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBjbGFzcy4KKyAgICAgICAgSG93ZXZlciwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2lsbCBub3QgZW5hYmxlIHRoZQorICAgICAgICBmdW5jdGlvbmFsaXR5IG9mIHRoaXMgY2xhc3MgdW5sZXNzCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUlNFUlZfSE9TVCc+PGZpbGVuYW1lPlBSU0VSVl9IT1NUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGhhcyBiZWVuIHNldC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wdGVzdCc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5wdGVzdC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cHRlc3Q8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvcgorICAgICAgICBwYWNrYWdpbmcgYW5kIGluc3RhbGxpbmcgcnVudGltZSB0ZXN0cyBmb3IgcmVjaXBlcyB0aGF0IGJ1aWxkIHNvZnR3YXJlCisgICAgICAgIHRoYXQgcHJvdmlkZXMgdGhlc2UgdGVzdHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgdG8gYmUgaW5oZXJpdGVkIGJ5IGluZGl2aWR1YWwgcmVjaXBlcy4KKyAgICAgICAgSG93ZXZlciwgdGhlIGNsYXNzJyBmdW5jdGlvbmFsaXR5IGlzIGxhcmdlbHkgZGlzYWJsZWQgdW5sZXNzICJwdGVzdCIKKyAgICAgICAgYXBwZWFycyBpbgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICBTZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN0ZXN0aW5nLXBhY2thZ2VzLXdpdGgtcHRlc3QnPlRlc3RpbmcgUGFja2FnZXMgV2l0aCBwdGVzdDwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICBpbmZvcm1hdGlvbiBvbiBwdGVzdC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1wdGVzdC1nbm9tZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5wdGVzdC1nbm9tZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEVuYWJsZXMgcGFja2FnZSB0ZXN0cyAocHRlc3RzKSBzcGVjaWZpY2FsbHkgZm9yIEdOT01FIHBhY2thZ2VzLAorICAgICAgICB3aGljaCBoYXZlIHRlc3RzIGludGVuZGVkIHRvIGJlIGV4ZWN1dGVkIHdpdGgKKyAgICAgICAgPGZpbGVuYW1lPmdub21lLWRlc2t0b3AtdGVzdGluZzwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhbmQgcnVubmluZyBwdGVzdHMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyBXaXRoIHB0ZXN0PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXB5dGhvbi1kaXInPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cHl0aG9uLWRpci5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cHl0aG9uLWRpcjwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHRoZSBiYXNlIHZlcnNpb24sCisgICAgICAgIGxvY2F0aW9uLCBhbmQgc2l0ZSBwYWNrYWdlIGxvY2F0aW9uIGZvciBQeXRob24uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcHl0aG9uM25hdGl2ZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5weXRob24zbmF0aXZlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5weXRob24zbmF0aXZlPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMgdXNpbmcgdGhlCisgICAgICAgIG5hdGl2ZSB2ZXJzaW9uIG9mIFB5dGhvbiAzIGJ1aWx0IGJ5IHRoZSBidWlsZCBzeXN0ZW0gcmF0aGVyIHRoYW4KKyAgICAgICAgc3VwcG9ydCBvZiB0aGUgdmVyc2lvbiBwcm92aWRlZCBieSB0aGUgYnVpbGQgaG9zdC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1weXRob25uYXRpdmUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cHl0aG9ubmF0aXZlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hlbiBpbmhlcml0ZWQgYnkgYSByZWNpcGUsIHRoZSA8ZmlsZW5hbWU+cHl0aG9ubmF0aXZlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgc3VwcG9ydHMgdXNpbmcgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIFB5dGhvbiBidWlsdCBieSB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgIHJhdGhlciB0aGFuIHVzaW5nIHRoZSB2ZXJzaW9uIHByb3ZpZGVkIGJ5IHRoZSBidWlsZCBob3N0LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXFlbXUnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cWVtdS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cWVtdTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIHJlY2lwZXMKKyAgICAgICAgdGhhdCBlaXRoZXIgbmVlZCBRRU1VIG9yIHRlc3QgZm9yIHRoZSBleGlzdGVuY2Ugb2YgUUVNVS4KKyAgICAgICAgVHlwaWNhbGx5LCB0aGlzIGNsYXNzIGlzIHVzZWQgdG8gcnVuIHByb2dyYW1zIGZvciBhIHRhcmdldCBzeXN0ZW0gb24KKyAgICAgICAgdGhlIGJ1aWxkIGhvc3QgdXNpbmcgUUVNVSdzIGFwcGxpY2F0aW9uIGVtdWxhdGlvbiBtb2RlLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXJlY2lwZV9zYW5pdHknPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cmVjaXBlX3Nhbml0eS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cmVjaXBlX3Nhbml0eTwvZmlsZW5hbWU+IGNsYXNzIGNoZWNrcyBmb3IgdGhlIHByZXNlbmNlCisgICAgICAgIG9mIGFueSBob3N0IHN5c3RlbSByZWNpcGUgcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGUKKyAgICAgICAgYnVpbGQgKGUuZy4gdmFyaWFibGVzIHRoYXQgYXJlIHNldCBvciBzb2Z0d2FyZSB0aGF0IGlzIHByZXNlbnQpLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXJlbG9jYXRhYmxlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnJlbG9jYXRhYmxlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5yZWxvY2F0YWJsZTwvZmlsZW5hbWU+IGNsYXNzIGVuYWJsZXMgcmVsb2NhdGlvbiBvZgorICAgICAgICBiaW5hcmllcyB3aGVuIHRoZXkgYXJlIGluc3RhbGxlZCBpbnRvIHRoZSBzeXNyb290LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIG1ha2VzIHVzZSBvZiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY2hycGF0aCc+PGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MgYW5kIGlzIHVzZWQgYnkgYm90aCB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY3Jvc3MnPjxmaWxlbmFtZT5jcm9zczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbmF0aXZlJz48ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzZXMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtcmVtb3ZlLWxpYnRvb2wnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cmVtb3ZlLWxpYnRvb2wuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnJlbW92ZS1saWJ0b29sPC9maWxlbmFtZT4gY2xhc3MgYWRkcyBhIHBvc3QgZnVuY3Rpb24KKyAgICAgICAgdG8gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0YXNrIHRvIHJlbW92ZSBhbGwgPGZpbGVuYW1lPi5sYTwvZmlsZW5hbWU+IGZpbGVzIGluc3RhbGxlZCBieQorICAgICAgICA8ZmlsZW5hbWU+bGlidG9vbDwvZmlsZW5hbWU+LgorICAgICAgICBSZW1vdmluZyB0aGVzZSBmaWxlcyByZXN1bHRzIGluIHRoZW0gYmVpbmcgYWJzZW50IGZyb20gYm90aCB0aGUKKyAgICAgICAgc3lzcm9vdCBhbmQgdGFyZ2V0IHBhY2thZ2VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiBhIHJlY2lwZSBuZWVkcyB0aGUgPGZpbGVuYW1lPi5sYTwvZmlsZW5hbWU+IGZpbGVzIHRvIGJlIGluc3RhbGxlZCwKKyAgICAgICAgdGhlbiB0aGUgcmVjaXBlIGNhbiBvdmVycmlkZSB0aGUgcmVtb3ZhbCBieSBzZXR0aW5nCisgICAgICAgIDxmaWxlbmFtZT5SRU1PVkVfTElCVE9PTF9MQTwvZmlsZW5hbWU+IHRvICIwIiBhcyBmb2xsb3dzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJFTU9WRV9MSUJUT09MX0xBID0gIjAiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnJlbW92ZS1saWJ0b29sPC9maWxlbmFtZT4gY2xhc3MgaXMgbm90IGVuYWJsZWQgYnkKKyAgICAgICAgICAgIGRlZmF1bHQuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1yZXBvcnQtZXJyb3InPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cmVwb3J0LWVycm9yLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5yZXBvcnQtZXJyb3I8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBlbmFibGluZyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctdGhlLWVycm9yLXJlcG9ydGluZy10b29sJz5lcnJvciByZXBvcnRpbmcgdG9vbDwvdWxpbms+LAorICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRvIHN1Ym1pdCBidWlsZCBlcnJvciBpbmZvcm1hdGlvbiB0byBhIGNlbnRyYWwKKyAgICAgICAgZGF0YWJhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBjbGFzcyBjb2xsZWN0cyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgcmVjaXBlLCByZWNpcGUgdmVyc2lvbiwgdGFzaywKKyAgICAgICAgbWFjaGluZSwgZGlzdHJvLCBidWlsZCBzeXN0ZW0sIHRhcmdldCBzeXN0ZW0sIGhvc3QgZGlzdHJvLCBicmFuY2gsCisgICAgICAgIGNvbW1pdCwgYW5kIGxvZy4KKyAgICAgICAgRnJvbSB0aGUgaW5mb3JtYXRpb24sIHJlcG9ydCBmaWxlcyB1c2luZyBhIEpTT04gZm9ybWF0IGFyZSBjcmVhdGVkIGFuZAorICAgICAgICBzdG9yZWQgaW4KKyAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTE9HX0RJUic+PGZpbGVuYW1lPkxPR19ESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9lcnJvci1yZXBvcnQ8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1ybS13b3JrJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnJtX3dvcmsuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBkZWxldGlvbiBvZiB0ZW1wb3JhcnkKKyAgICAgICAgd29ya3NwYWNlLCB3aGljaCBjYW4gZWFzZSB5b3VyIGhhcmQgZHJpdmUgZGVtYW5kcyBkdXJpbmcgYnVpbGRzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gdXNlIGEgc3Vic3RhbnRpYWwgYW1vdW50IG9mIGRpc2sKKyAgICAgICAgc3BhY2UgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICBBIHBvcnRpb24gb2YgdGhpcyBzcGFjZSBpcyB0aGUgd29yayBmaWxlcyB1bmRlciB0aGUKKyAgICAgICAgPGZpbGVuYW1lPiR7VE1QRElSfS93b3JrPC9maWxlbmFtZT4gZGlyZWN0b3J5IGZvciBlYWNoIHJlY2lwZS4KKyAgICAgICAgT25jZSB0aGUgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyB0aGUgcGFja2FnZXMgZm9yIGEgcmVjaXBlLCB0aGUgd29yaworICAgICAgICBmaWxlcyBmb3IgdGhhdCByZWNpcGUgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIEhvd2V2ZXIsIGJ5IGRlZmF1bHQsIHRoZSBidWlsZCBzeXN0ZW0gcHJlc2VydmVzIHRoZXNlIGZpbGVzCisgICAgICAgIGZvciBpbnNwZWN0aW9uIGFuZCBwb3NzaWJsZSBkZWJ1Z2dpbmcgcHVycG9zZXMuCisgICAgICAgIElmIHlvdSB3b3VsZCByYXRoZXIgaGF2ZSB0aGVzZSBmaWxlcyBkZWxldGVkIHRvIHNhdmUgZGlzayBzcGFjZQorICAgICAgICBhcyB0aGUgYnVpbGQgcHJvZ3Jlc3NlcywgeW91IGNhbiBlbmFibGUgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPgorICAgICAgICBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIElOSEVSSVQgKz0gInJtX3dvcmsiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgSWYgeW91IGFyZSBtb2RpZnlpbmcgYW5kIGJ1aWxkaW5nIHNvdXJjZSBjb2RlIG91dCBvZiB0aGUgd29yayBkaXJlY3RvcnkKKyAgICAgICAgZm9yIGEgcmVjaXBlLCBlbmFibGluZyA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+IHdpbGwgcG90ZW50aWFsbHkKKyAgICAgICAgcmVzdWx0IGluIHlvdXIgY2hhbmdlcyB0byB0aGUgc291cmNlIGJlaW5nIGxvc3QuCisgICAgICAgIFRvIGV4Y2x1ZGUgc29tZSByZWNpcGVzIGZyb20gaGF2aW5nIHRoZWlyIHdvcmsgZGlyZWN0b3JpZXMgZGVsZXRlZCBieQorICAgICAgICA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+LCB5b3UgY2FuIGFkZCB0aGUgbmFtZXMgb2YgdGhlIHJlY2lwZSBvcgorICAgICAgICByZWNpcGVzIHlvdSBhcmUgd29ya2luZyBvbiB0byB0aGUgPGZpbGVuYW1lPlJNX1dPUktfRVhDTFVERTwvZmlsZW5hbWU+CisgICAgICAgIHZhcmlhYmxlLCB3aGljaCBjYW4gYWxzbyBiZSBzZXQgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgIGZpbGUuCisgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIFJNX1dPUktfRVhDTFVERSArPSAiYnVzeWJveCBnbGliYyIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXJvb3RmcyonPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+cm9vdGZzKi5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+cm9vdGZzKjwvZmlsZW5hbWU+IGNsYXNzZXMgc3VwcG9ydCBjcmVhdGluZworICAgICAgICB0aGUgcm9vdCBmaWxlc3lzdGVtIGZvciBhbiBpbWFnZSBhbmQgY29uc2lzdCBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5yb290ZnMtcG9zdGNvbW1hbmRzPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoCisgICAgICAgICAgICAgICAgZGVmaW5lcyBmaWxlc3lzdGVtIHBvc3QtcHJvY2Vzc2luZyBmdW5jdGlvbnMgZm9yIGltYWdlIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5yb290ZnNfZGViPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgY3JlYXRpb24gb2Ygcm9vdCBmaWxlc3lzdGVtcyBmb3IgaW1hZ2VzIGJ1aWx0IHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5kZWI8L2ZpbGVuYW1lPiBwYWNrYWdlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnJvb3Rmc19ycG08L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggc3VwcG9ydHMKKyAgICAgICAgICAgICAgICBjcmVhdGlvbiBvZiByb290IGZpbGVzeXN0ZW1zIGZvciBpbWFnZXMgYnVpbHQgdXNpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnJwbTwvZmlsZW5hbWU+IHBhY2thZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cm9vdGZzX2lwazwvZmlsZW5hbWU+IGNsYXNzLCB3aGljaCBzdXBwb3J0cworICAgICAgICAgICAgICAgIGNyZWF0aW9uIG9mIHJvb3QgZmlsZXN5c3RlbXMgZm9yIGltYWdlcyBidWlsdCB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uaXBrPC9maWxlbmFtZT4gcGFja2FnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5yb290ZnNkZWJ1Z2ZpbGVzPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGluc3RhbGxzCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBmaWxlcyBmb3VuZCBvbiB0aGUgYnVpbGQgaG9zdCBkaXJlY3RseSBpbnRvIHRoZQorICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZCBmcm9tIHBhY2thZ2VzIHVzaW5nIG9uZSBvZiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnJvb3RmcyouYmJjbGFzczwvZmlsZW5hbWU+IGZpbGVzIGFzIGRldGVybWluZWQgYnkgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgcm9vdCBmaWxlc3lzdGVtIGltYWdlcyBhcmUgY3JlYXRlZCwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtc2FuaXR5Jz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNhbml0eS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2FuaXR5PC9maWxlbmFtZT4gY2xhc3MgY2hlY2tzIHRvIHNlZSBpZiBwcmVyZXF1aXNpdGUKKyAgICAgICAgc29mdHdhcmUgaXMgcHJlc2VudCBvbiB0aGUgaG9zdCBzeXN0ZW0gc28gdGhhdCB1c2VycyBjYW4gYmUgbm90aWZpZWQKKyAgICAgICAgb2YgcG90ZW50aWFsIHByb2JsZW1zIHRoYXQgbWlnaHQgYWZmZWN0IHRoZWlyIGJ1aWxkLgorICAgICAgICBUaGUgY2xhc3MgYWxzbyBwZXJmb3JtcyBiYXNpYyB1c2VyIGNvbmZpZ3VyYXRpb24gY2hlY2tzIGZyb20KKyAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIHRvCisgICAgICAgIHByZXZlbnQgY29tbW9uIG1pc3Rha2VzIHRoYXQgY2F1c2UgYnVpbGQgZmFpbHVyZXMuCisgICAgICAgIERpc3RyaWJ1dGlvbiBwb2xpY3kgdXN1YWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGlzIGNsYXNzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXNjb25zJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNjb25zLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zY29uczwvZmlsZW5hbWU+IGNsYXNzIHN1cHBvcnRzIHJlY2lwZXMgdGhhdCBuZWVkIHRvCisgICAgICAgIGJ1aWxkIHNvZnR3YXJlIHRoYXQgdXNlcyB0aGUgU0NvbnMgYnVpbGQgc3lzdGVtLgorICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FU0NPTlMnPjxmaWxlbmFtZT5FWFRSQV9PRVNDT05TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlIHRvIHNwZWNpZnkgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgeW91IHdhbnQgdG8gcGFzcworICAgICAgICBTQ29ucyBjb21tYW5kIGxpbmUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtc2RsJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNkbC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2RsPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMgcmVjaXBlcyB0aGF0IG5lZWQgdG8gYnVpbGQKKyAgICAgICAgc29mdHdhcmUgdGhhdCB1c2VzIHRoZSBTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgKFNETCkgbGlicmFyeS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1zZXR1cHRvb2xzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNldHVwdG9vbHMuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnNldHVwdG9vbHM8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBQeXRob24KKyAgICAgICAgdmVyc2lvbiAyLnggZXh0ZW5zaW9ucyB0aGF0IHVzZSBidWlsZCBzeXN0ZW1zIGJhc2VkIG9uCisgICAgICAgIDxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT4uCisgICAgICAgIElmIHlvdXIgcmVjaXBlIHVzZXMgdGhlc2UgYnVpbGQgc3lzdGVtcywgdGhlIHJlY2lwZSBuZWVkcyB0bworICAgICAgICBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+c2V0dXB0b29sczwvZmlsZW5hbWU+IGNsYXNzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXNldHVwdG9vbHMzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNldHVwdG9vbHMzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zZXR1cHRvb2xzMzwvZmlsZW5hbWU+IGNsYXNzIHN1cHBvcnRzIFB5dGhvbgorICAgICAgICB2ZXJzaW9uIDMueCBleHRlbnNpb25zIHRoYXQgdXNlIGJ1aWxkIHN5c3RlbXMgYmFzZWQgb24KKyAgICAgICAgPGZpbGVuYW1lPnNldHVwdG9vbHMzPC9maWxlbmFtZT4uCisgICAgICAgIElmIHlvdXIgcmVjaXBlIHVzZXMgdGhlc2UgYnVpbGQgc3lzdGVtcywgdGhlIHJlY2lwZSBuZWVkcyB0bworICAgICAgICBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+c2V0dXB0b29sczM8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1zaWduX3JwbSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5zaWduX3JwbS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2lnbl9ycG08L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBnZW5lcmF0aW5nIHNpZ25lZAorICAgICAgICBSUE0gcGFja2FnZXMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtc2lwJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNpcC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2lwPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgc3VwcG9ydHMgcmVjaXBlcyB0aGF0IGJ1aWxkIG9yIHBhY2thZ2UgU0lQLWJhc2VkIFB5dGhvbiBiaW5kaW5ncy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1zaXRlY29uZmlnJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNpdGVjb25maWcuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnNpdGVjb25maWc8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBoYW5kbGluZyBzaXRlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIFRoZSBjbGFzcyBpcyB1c2VkIGJ5IHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MgdG8gYWNjZWxlcmF0ZSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0YXNrLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXNpdGVpbmZvJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnNpdGVpbmZvLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zaXRlaW5mbzwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgIHRoZSB0YXJnZXRzIHRoYXQgbWlnaHQgYmUgbmVlZGVkIGJ5IG90aGVyIGNsYXNzZXMgb3IgcmVjaXBlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgQXV0b3Rvb2xzLCB3aGljaCBjYW4gcmVxdWlyZSB0ZXN0cyB0aGF0IG11c3QKKyAgICAgICAgZXhlY3V0ZSBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICBTaW5jZSB0aGlzIGlzIG5vdCBwb3NzaWJsZSBpbiBnZW5lcmFsIHdoZW4gY3Jvc3MgY29tcGlsaW5nLCBzaXRlCisgICAgICAgIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gcHJvdmlkZSBjYWNoZWQgdGVzdCByZXN1bHRzIHNvIHRoZXNlIHRlc3RzIGNhbgorICAgICAgICBiZSBza2lwcGVkIG92ZXIgYnV0IHN0aWxsIG1ha2UgdGhlIGNvcnJlY3QgdmFsdWVzIGF2YWlsYWJsZS4KKyAgICAgICAgVGhlCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWV0YS1zaXRlJz5tZXRhL3NpdGUgZGlyZWN0b3J5PC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGNvbnRhaW5zIHRlc3QgcmVzdWx0cyBzb3J0ZWQgaW50byBkaWZmZXJlbnQgY2F0ZWdvcmllcyBzdWNoIGFzCisgICAgICAgIGFyY2hpdGVjdHVyZSwgZW5kaWFubmVzcywgYW5kIHRoZSA8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+IHVzZWQuCisgICAgICAgIFNpdGUgaW5mb3JtYXRpb24gcHJvdmlkZXMgYSBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgZGF0YSByZWxldmFudCB0bworICAgICAgICB0aGUgY3VycmVudCBidWlsZCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1DT05GSUdfU0lURSc+Q09ORklHX1NJVEU8L2xpbms+PC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgdGhhdCBBdXRvdG9vbHMgYXV0b21hdGljYWxseSBwaWNrcyB1cC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNsYXNzIGFsc28gcHJvdmlkZXMgdmFyaWFibGVzIGxpa2UKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1TSVRFSU5GT19FTkRJQU5ORVNTJz5TSVRFSU5GT19FTkRJQU5ORVNTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgIGFuZCA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNJVEVJTkZPX0JJVFMnPlNJVEVJTkZPX0JJVFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUgaW4gdGhlIG1ldGFkYXRhLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXNwZHgnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+c3BkeC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3BkeDwvZmlsZW5hbWU+IGNsYXNzIGludGVncmF0ZXMgcmVhbC10aW1lIGxpY2Vuc2UKKyAgICAgICAgc2Nhbm5pbmcsIGdlbmVyYXRpb24gb2YgU1BEWCBzdGFuZGFyZCBvdXRwdXQsIGFuZCB2ZXJpZmljYXRpb24KKyAgICAgICAgb2YgbGljZW5zZSBpbmZvcm1hdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IGF0IHRoZSBwcm90b3R5cGUgc3RhZ2UgaW4gdGhlIDEuNgorICAgICAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXNzdGF0ZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5zc3RhdGUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnNzdGF0ZTwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yIFNoYXJlZAorICAgICAgICBTdGF0ZSAoc3N0YXRlKS4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGNsYXNzIGlzIGVuYWJsZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVRfRElTVFJPJz48ZmlsZW5hbWU+SU5IRVJJVF9ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUncyBkZWZhdWx0IHZhbHVlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzc3RhdGUsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5TaGFyZWQgU3RhdGUgQ2FjaGU8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXN0YWdpbmcnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+c3RhZ2luZy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3RhZ2luZzwvZmlsZW5hbWU+IGNsYXNzIGluc3RhbGxzIGZpbGVzIGludG8gaW5kaXZpZHVhbAorICAgICAgICByZWNpcGUgd29yayBkaXJlY3RvcmllcyBmb3Igc3lzcm9vdHMuCisgICAgICAgIFRoZSBjbGFzcyBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleSB0YXNrczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGluZyB0aGUgZmlsZXMgdGhhdCBlbmQgdXAKKyAgICAgICAgICAgICAgICBpbiB0aGUgcmVjaXBlIHN5c3Jvb3RzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wcmVwYXJlX3JlY2lwZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHRhc2sgKGEgInBhcnRuZXIiIHRhc2sgdG8gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPiB0YXNrKSwgd2hpY2ggaW5zdGFsbHMKKyAgICAgICAgICAgICAgICB0aGUgZmlsZXMgaW50byB0aGUgaW5kaXZpZHVhbCByZWNpcGUgd29yayBkaXJlY3RvcmllcyAoaS5lLgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgY29kZSBpbiB0aGUgPGZpbGVuYW1lPnN0YWdpbmc8L2ZpbGVuYW1lPiBjbGFzcyBpcyBjb21wbGV4IGFuZAorICAgICAgICBiYXNpY2FsbHkgd29ya3MgaW4gdHdvIHN0YWdlczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgT25lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHN0YWdlIGFkZHJlc3NlcyByZWNpcGVzIHRoYXQgaGF2ZSBmaWxlcyB0aGV5IHdhbnQKKyAgICAgICAgICAgICAgICB0byBzaGFyZSB3aXRoIG90aGVyIHJlY2lwZXMgdGhhdCBoYXZlIGRlcGVuZGVuY2llcyBvbiB0aGUKKyAgICAgICAgICAgICAgICBvcmlnaW5hdGluZyByZWNpcGUuCisgICAgICAgICAgICAgICAgTm9ybWFsbHkgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBpbnN0YWxsZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGludG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4gdGFzayBjb3BpZXMKKyAgICAgICAgICAgICAgICBhIHN1YnNldCBvZiB0aGVzZSBmaWxlcyBpbnRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7U1lTUk9PVF9ERVNURElSfTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoaXMgc3Vic2V0IG9mIGZpbGVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSUyc+PGZpbGVuYW1lPlNZU1JPT1RfRElSUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9ESVJTX05BVElWRSc+PGZpbGVuYW1lPlNZU1JPT1RfRElSU19OQVRJVkU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSU19CTEFDS0xJU1QnPjxmaWxlbmFtZT5TWVNST09UX0RJUlNfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGEgcmVjaXBlIGNhbiBjdXN0b21pemUgdGhlIGZpbGVzIGZ1cnRoZXIgYnkKKyAgICAgICAgICAgICAgICBkZWNsYXJpbmcgYSBwcm9jZXNzaW5nIGZ1bmN0aW9uIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTJz48ZmlsZW5hbWU+U1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBvYmplY3QgaXMgYnVpbHQgZnJvbSB0aGVzZSBmaWxlcworICAgICAgICAgICAgICAgIGFuZCB0aGUgZmlsZXMgYXJlIHBsYWNlZCBpbnRvIGEgc3ViZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1zeXNyb290cy1jb21wb25lbnRzJz48ZmlsZW5hbWU+dG1wL3N5c3Jvb3RzLWNvbXBvbmVudHMvPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIFRoZSBmaWxlcyBhcmUgc2Nhbm5lZCBmb3IgaGFyZGNvZGVkIHBhdGhzIHRvIHRoZSBvcmlnaW5hbAorICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBJZiB0aGUgbG9jYXRpb24gaXMgZm91bmQgaW4gdGV4dCBmaWxlcywgdGhlIGhhcmRjb2RlZAorICAgICAgICAgICAgICAgIGxvY2F0aW9ucyBhcmUgcmVwbGFjZWQgYnkgdG9rZW5zIGFuZCBhIGxpc3Qgb2YgdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgbmVlZGluZyBzdWNoIHJlcGxhY2VtZW50cyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgIFRoZXNlIGFkanVzdG1lbnRzIGFyZSByZWZlcnJlZCB0byBhcyAiRklYTUVzIi4KKyAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGFyZSBzY2FubmVkIGZvciBwYXRocyBpcyBjb250cm9sbGVkIGJ5CisgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9TQ0FOX0ZJTEVTJz48ZmlsZW5hbWU+U1NUQVRFX1NDQU5fRklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgVHdvOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIHNlY29uZCBzdGFnZSBhZGRyZXNzZXMgcmVjaXBlcyB0aGF0IHdhbnQgdG8gdXNlIHNvbWV0aGluZworICAgICAgICAgICAgICAgIGZyb20gYW5vdGhlciByZWNpcGUgYW5kIGRlY2xhcmUgYSBkZXBlbmRlbmN5IG9uIHRoYXQgcmVjaXBlCisgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHdpbGwgaGF2ZSBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXByZXBhcmVfcmVjaXBlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wcmVwYXJlX3JlY2lwZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzayBhbmQgd2hlbgorICAgICAgICAgICAgICAgIHRoaXMgdGFzayBleGVjdXRlcywgaXQgY3JlYXRlcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4gaW4gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgIHdvcmsgZGlyZWN0b3J5IChpLmUuCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIGhhcmQgbGlua3MgdG8gY29waWVzIG9mIHRoZQorICAgICAgICAgICAgICAgIHJlbGV2YW50IGZpbGVzIGZyb20gPGZpbGVuYW1lPnN5c3Jvb3RzLWNvbXBvbmVudHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGludG8gdGhlIHJlY2lwZSB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgaGFyZCBsaW5rcyBhcmUgbm90IHBvc3NpYmxlLCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGNvcGllcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB0aGVuIGFkZHJlc3NlcyBhbnkgIkZJWE1FcyIgdG8gcGF0aHMgYXMKKyAgICAgICAgICAgICAgICBkZWZpbmVkIGZyb20gdGhlIGxpc3QgY3JlYXRlZCBpbiB0aGUgZmlyc3Qgc3RhZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRmluYWxseSwgYW55IGZpbGVzIGluIDxmaWxlbmFtZT4ke2JpbmRpcn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgc3lzcm9vdCB0aGF0IGhhdmUgdGhlIHByZWZpeAorICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+cG9zdGluc3QtPC9maWxlbmFtZT4iIGFyZSBleGVjdXRlZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggc3VjaCBzeXNyb290IHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgYXJlIG5vdAorICAgICAgICAgICAgICAgICAgICByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UsIHRoZSBmaWxlcyBkbyBhbGxvdyBzb21lIGlzc3VlcworICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHVzZXIgY3JlYXRpb24gYW5kIG1vZHVsZSBpbmRleGVzIHRvIGJlIGFkZHJlc3NlZC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQmVjYXVzZSByZWNpcGVzIGNhbiBoYXZlIG90aGVyIGRlcGVuZGVuY2llcyBvdXRzaWRlIG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb191bnBhY2tbZGVwZW5kc10gKz0gInRhci1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCI8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgdGhlIHN5c3Jvb3QgY3JlYXRpb24gZnVuY3Rpb24KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0ZW5kX3JlY2lwZV9zeXNyb290PC9maWxlbmFtZT4gaXMgYWxzbyBhZGRlZCBhcworICAgICAgICAgICAgICAgIGEgcHJlLWZ1bmN0aW9uIGZvciB0aG9zZSB0YXNrcyB3aG9zZSBkZXBlbmRlbmNpZXMgYXJlIG5vdAorICAgICAgICAgICAgICAgIHRocm91Z2ggPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiBidXQgb3BlcmF0ZSBzaW1pbGFybHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyBpbnRvIHRoZSBzeXNyb290LCB0aGUgY29kZQorICAgICAgICAgICAgICAgIHRyYXZlcnNlcyB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgcHJvY2Vzc2VzIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIHRoZSBkZXBlbmRlbmNpZXMgd291bGQgb3Igd291bGQgbm90CisgICAgICAgICAgICAgICAgYmUgd2hlbiBpbnN0YWxsZWQgZnJvbSBzc3RhdGUuCisgICAgICAgICAgICAgICAgVGhpcyBwcm9jZXNzaW5nIG1lYW5zLCBmb3IgZXhhbXBsZSwgYSBuYXRpdmUgdG9vbCB3b3VsZCBoYXZlCisgICAgICAgICAgICAgICAgaXRzIG5hdGl2ZSBkZXBlbmRlbmNpZXMgYWRkZWQgYnV0IGEgdGFyZ2V0IGxpYnJhcnkgd291bGQgbm90CisgICAgICAgICAgICAgICAgaGF2ZSBpdHMgZGVwZW5kZW5jaWVzIHRyYXZlcnNlZCBvciBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgVGhlIHNhbWUgc3N0YXRlIGRlcGVuZGVuY3kgY29kZSBpcyB1c2VkIHNvIHRoYXQKKyAgICAgICAgICAgICAgICBidWlsZHMgc2hvdWxkIGJlIGlkZW50aWNhbCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgc3N0YXRlCisgICAgICAgICAgICAgICAgd2FzIHVzZWQgb3Igbm90LgorICAgICAgICAgICAgICAgIEZvciBhIGNsb3NlciBsb29rLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldHNjZW5lX2RlcHZhbGlkKCk8L2ZpbGVuYW1lPiBmdW5jdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zc3RhdGUnPjxmaWxlbmFtZT5zc3RhdGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGlzIGNhcmVmdWwgdG8gbWFpbnRhaW4gbWFuaWZlc3RzIG9mIHRoZSBmaWxlcworICAgICAgICAgICAgICAgIGl0IGluc3RhbGxzIHNvIHRoYXQgYW55IGdpdmVuIGRlcGVuZGVuY3kgY2FuIGJlIGluc3RhbGxlZCBhcworICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICBUaGUgc3N0YXRlIGhhc2ggb2YgdGhlIGluc3RhbGxlZCBpdGVtIGlzIGFsc28gc3RvcmVkIHNvIHRoYXQKKyAgICAgICAgICAgICAgICBpZiBpdCBjaGFuZ2VzLCB0aGUgYnVpbGQgc3lzdGVtIGNhbiByZWluc3RhbGwgaXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXN5c2xpbnV4Jz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnN5c2xpbnV4LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zeXNsaW51eDwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN5c2xpbnV4LXNwZWNpZmljCisgICAgICAgIGZ1bmN0aW9ucyBmb3IgYnVpbGRpbmcgYm9vdGFibGUgaW1hZ2VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgY2xhc3Mgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlOSVRSRCc+PGZpbGVuYW1lPklOSVRSRDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzCisgICAgICAgICAgICAgICAgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJkKS4KKyAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIG9wdGlvbmFsLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1ST09URlMnPjxmaWxlbmFtZT5ST09URlM8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgSW5kaWNhdGVzIGEgZmlsZXN5c3RlbSBpbWFnZSB0byBpbmNsdWRlIGFzIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBvcHRpb25hbC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItQVVUT19TWVNMSU5VWE1FTlUnPjxmaWxlbmFtZT5BVVRPX1NZU0xJTlVYTUVOVTwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBFbmFibGVzIGNyZWF0aW5nIGFuIGF1dG9tYXRpYyBtZW51IHdoZW4gc2V0IHRvICIxIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItTEFCRUxTJz48ZmlsZW5hbWU+TEFCRUxTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIExpc3RzIHRhcmdldHMgZm9yIGF1dG9tYXRpYyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1BUFBFTkQnPjxmaWxlbmFtZT5BUFBFTkQ8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgTGlzdHMgYXBwZW5kIHN0cmluZyBvdmVycmlkZXMgZm9yIGVhY2ggbGFiZWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNZU0xJTlVYX09QVFMnPjxmaWxlbmFtZT5TWVNMSU5VWF9PUFRTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIExpc3RzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIHN5c2xpbnV4IGZpbGUuCisgICAgICAgICAgICAgICAgU2VtaWNvbG9uIGNoYXJhY3RlcnMgc2VwYXJhdGUgbXVsdGlwbGUgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU1lTTElOVVhfU1BMQVNIJz48ZmlsZW5hbWU+U1lTTElOVVhfU1BMQVNIPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIExpc3RzIGEgYmFja2dyb3VuZCBmb3IgdGhlIFZHQSBib290IG1lbnUgd2hlbiB5b3UgYXJlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIGJvb3QgbWVudS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU1lTTElOVVhfREVGQVVMVF9DT05TT0xFJz48ZmlsZW5hbWU+U1lTTElOVVhfREVGQVVMVF9DT05TT0xFPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIFNldCB0byAiY29uc29sZT10dHlYIiB0byBjaGFuZ2Uga2VybmVsIGJvb3QgZGVmYXVsdCBjb25zb2xlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNMSU5VWF9TRVJJQUwnPjxmaWxlbmFtZT5TWVNMSU5VWF9TRVJJQUw8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgU2V0cyBhbiBhbHRlcm5hdGUgc2VyaWFsIHBvcnQuCisgICAgICAgICAgICAgICAgT3IsIHR1cm5zIG9mZiBzZXJpYWwgd2hlbiB0aGUgdmFyaWFibGUgaXMgc2V0IHdpdGggYW4KKyAgICAgICAgICAgICAgICBlbXB0eSBzdHJpbmcuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNZU0xJTlVYX1NFUklBTF9UVFknPjxmaWxlbmFtZT5TWVNMSU5VWF9TRVJJQUxfVFRZPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgIFNldHMgYW4gYWx0ZXJuYXRlICJjb25zb2xlPXR0eS4uLiIga2VybmVsIGJvb3QgYXJndW1lbnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXN5c3RlbWQnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+c3lzdGVtZC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHJlY2lwZXMKKyAgICAgICAgdGhhdCBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgY2xhc3MgaXMgZGlzYWJsZWQgdW5sZXNzIHlvdSBoYXZlICJzeXN0ZW1kIgorICAgICAgICBpbgorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBVbmRlciB0aGlzIGNsYXNzLCB0aGUgcmVjaXBlIG9yIE1ha2VmaWxlIChpLmUuIHdoYXRldmVyIHRoZSByZWNpcGUgaXMKKyAgICAgICAgY2FsbGluZyBkdXJpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0YXNrKSBpbnN0YWxscyB1bml0IGZpbGVzIGludG8KKyAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW08L2ZpbGVuYW1lPi4KKyAgICAgICAgSWYgdGhlIHVuaXQgZmlsZXMgYmVpbmcgaW5zdGFsbGVkIGdvIGludG8gcGFja2FnZXMgb3RoZXIgdGhhbiB0aGUKKyAgICAgICAgbWFpbiBwYWNrYWdlLCB5b3UgbmVlZCB0byBzZXQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1RFTURfUEFDS0FHRVMnPjxmaWxlbmFtZT5TWVNURU1EX1BBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGluIHlvdXIgcmVjaXBlIHRvIGlkZW50aWZ5IHRoZSBwYWNrYWdlcyBpbiB3aGljaCB0aGUgZmlsZXMgd2lsbCBiZQorICAgICAgICBpbnN0YWxsZWQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBzaG91bGQgc2V0CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNURU1EX1NFUlZJQ0UnPjxmaWxlbmFtZT5TWVNURU1EX1NFUlZJQ0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdG8gdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgZmlsZS4KKyAgICAgICAgWW91IHNob3VsZCBhbHNvIHVzZSBhIHBhY2thZ2UgbmFtZSBvdmVycmlkZSB0byBpbmRpY2F0ZSB0aGUgcGFja2FnZQorICAgICAgICB0byB3aGljaCB0aGUgdmFsdWUgYXBwbGllcy4KKyAgICAgICAgSWYgdGhlIHZhbHVlIGFwcGxpZXMgdG8gdGhlIHJlY2lwZSdzIG1haW4gcGFja2FnZSwgdXNlCisgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUgY29ubm1hbiByZWNpcGU6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvbm5tYW4uc2VydmljZSIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBTZXJ2aWNlcyBhcmUgc2V0IHVwIHRvIHN0YXJ0IG9uIGJvb3QgYXV0b21hdGljYWxseSB1bmxlc3MKKyAgICAgICAgeW91IGhhdmUgc2V0CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNURU1EX0FVVE9fRU5BQkxFJz48ZmlsZW5hbWU+U1lTVEVNRF9BVVRPX0VOQUJMRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0byAiZGlzYWJsZSIuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5zeXN0ZW1kPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NlbGVjdGluZy1hbi1pbml0aWFsaXphdGlvbi1tYW5hZ2VyJz5TZWxlY3RpbmcgYW4gSW5pdGlhbGl6YXRpb24gTWFuYWdlcjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kLWJvb3QnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+c3lzdGVtZC1ib290LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zeXN0ZW1kLWJvb3Q8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBmdW5jdGlvbnMgc3BlY2lmaWMKKyAgICAgICAgdG8gdGhlIHN5c3RlbWQtYm9vdCBib290bG9hZGVyIGZvciBidWlsZGluZyBib290YWJsZSBpbWFnZXMuCisgICAgICAgIFRoaXMgaXMgYW4gaW50ZXJuYWwgY2xhc3MgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5LgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3lzdGVtZC1ib290PC9maWxlbmFtZT4gY2xhc3MgaXMgYSByZXN1bHQgZnJvbQorICAgICAgICAgICAgbWVyZ2luZyB0aGUgPGZpbGVuYW1lPmd1bW1pYm9vdDwvZmlsZW5hbWU+IGNsYXNzIHVzZWQgaW4gcHJldmlvdXMKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgd2l0aCB0aGUgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgcHJvamVjdC4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBTZXQgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FRklfUFJPVklERVInPjxmaWxlbmFtZT5FRklfUFJPVklERVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgdG8gInN5c3RlbWQtYm9vdCIgdG8gdXNlIHRoaXMgY2xhc3MuCisgICAgICAgIERvaW5nIHNvIGNyZWF0ZXMgYSBzdGFuZGFsb25lIEVGSSBib290bG9hZGVyIHRoYXQgaXMgbm90IGRlcGVuZGVudAorICAgICAgICBvbiBzeXN0ZW1kLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gbW9yZSB2YXJpYWJsZXMgdXNlZCBhbmQgc3VwcG9ydGVkIGluIHRoaXMgY2xhc3MsCisgICAgICAgIHNlZSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1RFTURfQk9PVF9DRkcnPjxmaWxlbmFtZT5TWVNURU1EX0JPT1RfQ0ZHPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTVEVNRF9CT09UX0VOVFJJRVMnPjxmaWxlbmFtZT5TWVNURU1EX0JPT1RfRU5UUklFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgYW5kCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNURU1EX0JPT1RfVElNRU9VVCc+PGZpbGVuYW1lPlNZU1RFTURfQk9PVF9USU1FT1VUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHZhcmlhYmxlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdC8nPlN5c3RlbWQtYm9vdCBkb2N1bWVudGF0aW9uPC91bGluaz4KKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtdGVybWluYWwnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+dGVybWluYWwuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnRlcm1pbmFsPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3Igc3RhcnRpbmcKKyAgICAgICAgYSB0ZXJtaW5hbCBzZXNzaW9uLgorICAgICAgICBUaGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU9FX1RFUk1JTkFMJz48ZmlsZW5hbWU+T0VfVEVSTUlOQUw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hpY2ggdGVybWluYWwgZW11bGF0b3IgaXMgdXNlZCBmb3IgdGhlIHNlc3Npb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE90aGVyIGNsYXNzZXMgdXNlIHRoZSA8ZmlsZW5hbWU+dGVybWluYWw8L2ZpbGVuYW1lPiBjbGFzcyBhbnl3aGVyZSBhCisgICAgICAgIHNlcGFyYXRlIHRlcm1pbmFsIHNlc3Npb24gbmVlZHMgdG8gYmUgc3RhcnRlZC4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYXRjaCc+PGZpbGVuYW1lPnBhdGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzIGFzc3VtaW5nCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQVRDSFJFU09MVkUnPjxmaWxlbmFtZT5QQVRDSFJFU09MVkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgaXMgc2V0IHRvICJ1c2VyIiwgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNtbDEnPjxmaWxlbmFtZT5jbWwxPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzLCBhbmQgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWRldnNoZWxsJz48ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MgYWxsIHVzZSB0aGUgPGZpbGVuYW1lPnRlcm1pbmFsPC9maWxlbmFtZT4gY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+CisgICAgPHRpdGxlPjxmaWxlbmFtZT50ZXN0aW1hZ2UqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT50ZXN0aW1hZ2UqPC9maWxlbmFtZT4gY2xhc3NlcyBzdXBwb3J0IHJ1bm5pbmcKKyAgICAgICAgYXV0b21hdGVkIHRlc3RzIGFnYWluc3QgaW1hZ2VzIHVzaW5nIFFFTVUgYW5kIG9uIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgVGhlIGNsYXNzZXMgaGFuZGxlIGxvYWRpbmcgdGhlIHRlc3RzIGFuZCBzdGFydGluZyB0aGUgaW1hZ2UuCisgICAgICAgIFRvIHVzZSB0aGUgY2xhc3NlcywgeW91IG5lZWQgdG8gcGVyZm9ybSBzdGVwcyB0byBzZXQgdXAgdGhlCisgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGluY2x1ZGUgdXNpbmcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9DTEFTU0VTJz48ZmlsZW5hbWU+SU1BR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPiB0bworICAgICAgICAgICAgaW5oZXJpdCB0aGUgPGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+IGNsYXNzIGZvciBhdXRvbWF0ZWQKKyAgICAgICAgICAgIGltYWdlIHRlc3RpbmcuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBjb21tYW5kcyB0aGF0IHJ1biBvbiB0aGUgdGFyZ2V0IHN5c3RlbSBvdmVyCisgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgRWFjaCB0ZXN0IGlzIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBtYWtlcyB1c2Ugb2YgdGhlCisgICAgICAgIDxmaWxlbmFtZT51bml0dGVzdDwvZmlsZW5hbWU+IG1vZHVsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT50ZXN0aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+IHJ1bnMgdGVzdHMgb24gYW4gaW1hZ2UKKyAgICAgICAgd2hlbiBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgdGVzdGltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT50ZXN0aW1hZ2UtYXV0bzwvZmlsZW5hbWU+IGNsYXNzIHJ1bnMgdGVzdHMgb24gYW4gaW1hZ2UKKyAgICAgICAgYWZ0ZXIgdGhlIGltYWdlIGlzIGNvbnN0cnVjdGVkIChpLmUuCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUSU1BR0VfQVVUTyc+PGZpbGVuYW1lPlRFU1RJTUFHRV9BVVRPPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIG11c3QgYmUgc2V0IHRvICIxIikuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlLCBydW4sIGFuZCBjcmVhdGUgbmV3IHRlc3RzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy10ZXN0c2RrJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnRlc3RzZGsuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIHN1cHBvcnRzIHJ1bm5pbmcgYXV0b21hdGVkIHRlc3RzIGFnYWluc3QKKyAgICAgICAgc29mdHdhcmUgZGV2ZWxvcG1lbnQga2l0cyAoU0RLcykuCisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dGVzdHNkazwvZmlsZW5hbWU+IGNsYXNzIHJ1bnMgdGVzdHMgb24gYW4gU0RLIHdoZW4KKyAgICAgICAgY2FsbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIHRlc3RzZGsgaW1hZ2UKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGluY2x1ZGUgdXNpbmcKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9DTEFTU0VTJz48ZmlsZW5hbWU+SU1BR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPiB0bworICAgICAgICAgICAgaW5oZXJpdCB0aGUgPGZpbGVuYW1lPnRlc3RzZGs8L2ZpbGVuYW1lPiBjbGFzcyBmb3IgYXV0b21hdGVkCisgICAgICAgICAgICBTREsgdGVzdGluZy4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXRleGluZm8nPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+dGV4aW5mby5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2xhc3Mgc2hvdWxkIGJlIGluaGVyaXRlZCBieSByZWNpcGVzIHdob3NlIHVwc3RyZWFtIHBhY2thZ2VzCisgICAgICAgIGludm9rZSB0aGUgPGZpbGVuYW1lPnRleGluZm88L2ZpbGVuYW1lPiB1dGlsaXRpZXMgYXQgYnVpbGQtdGltZS4KKyAgICAgICAgTmF0aXZlIGFuZCBjcm9zcyByZWNpcGVzIGFyZSBtYWRlIHRvIHVzZSB0aGUgZHVtbXkgc2NyaXB0cyBwcm92aWRlZAorICAgICAgICBieSA8ZmlsZW5hbWU+dGV4aW5mby1kdW1teS1uYXRpdmU8L2ZpbGVuYW1lPiwgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLgorICAgICAgICBUYXJnZXQgYXJjaGl0ZWN0dXJlIHJlY2lwZXMgdXNlIHRoZSBnZW51aW5lCisgICAgICAgIFRleGluZm8gdXRpbGl0aWVzLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGV5IHVzZSB0aGUgVGV4aW5mbyB1dGlsaXRpZXMgb24gdGhlIGhvc3Qgc3lzdGVtLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGV4aW5mbyByZWNpcGUgc2hpcHBlZCB3aXRoIHRoZSBidWlsZAorICAgICAgICAgICAgc3lzdGVtLCB5b3UgY2FuIHJlbW92ZSAidGV4aW5mby1uYXRpdmUiIGZyb20KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1BU1NVTUVfUFJPVklERUQnPjxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZCBtYWtlaW5mbyBmcm9tCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUyc+PGZpbGVuYW1lPlNBTklUWV9SRVFVSVJFRF9VVElMSVRJRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy10aW5kZXJjbGllbnQnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+dGluZGVyY2xpZW50LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT50aW5kZXJjbGllbnQ8L2ZpbGVuYW1lPiBjbGFzcyBzdWJtaXRzIGJ1aWxkIHJlc3VsdHMgdG8KKyAgICAgICAgYW4gZXh0ZXJuYWwgVGluZGVyYm94IGluc3RhbmNlLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IHVubWFpbnRhaW5lZC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXRvYXN0ZXInPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+dG9hc3Rlci5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dG9hc3RlcjwvZmlsZW5hbWU+IGNsYXNzIGNvbGxlY3RzIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgIHBhY2thZ2VzIGFuZCBpbWFnZXMgYW5kIHNlbmRzIHRoZW0gYXMgZXZlbnRzIHRoYXQgdGhlIEJpdEJha2UKKyAgICAgICAgdXNlciBpbnRlcmZhY2UgY2FuIHJlY2VpdmUuCisgICAgICAgIFRoZSBjbGFzcyBpcyBlbmFibGVkIHdoZW4gdGhlIFRvYXN0ZXIgdXNlciBpbnRlcmZhY2UgaXMgcnVubmluZy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy10b29sY2hhaW4tc2NyaXB0cyc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT50b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dG9vbGNoYWluLXNjcmlwdHM8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyB0aGUgc2NyaXB0cworICAgICAgICB1c2VkIGZvciBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgaW5zdGFsbGVkIFNES3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtdHlwZWNoZWNrJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnR5cGVjaGVjay5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dHlwZWNoZWNrPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3IKKyAgICAgICAgdmFsaWRhdGluZyB0aGUgdmFsdWVzIG9mIHZhcmlhYmxlcyBzZXQgYXQgdGhlIGNvbmZpZ3VyYXRpb24gbGV2ZWwKKyAgICAgICAgYWdhaW5zdCB0aGVpciBkZWZpbmVkIHR5cGVzLgorICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhbGxvd3MgeW91IHRvIGRlZmluZSB0aGUgdHlwZSBvZiBhCisgICAgICAgIHZhcmlhYmxlIHVzaW5nIHRoZSAidHlwZSIgdmFyZmxhZy4KKyAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTW3R5cGVdID0gImxpc3QiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy11Ym9vdC1jb25maWcnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+dWJvb3QtY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT51Ym9vdC1jb25maWc8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvcgorICAgICAgICBVLUJvb3QgY29uZmlndXJhdGlvbiBmb3IgYSBtYWNoaW5lLgorICAgICAgICBTcGVjaWZ5IHRoZSBtYWNoaW5lIGluIHlvdXIgcmVjaXBlIGFzIGZvbGxvd3M6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVUJPT1RfQ09ORklHID8/PSAmbHQ7ZGVmYXVsdCZndDsKKyAgICAgVUJPT1RfQ09ORklHW2Zvb10gPSAiY29uZmlnLGltYWdlcyIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgbWFjaGluZSB1c2luZyB0aGlzIG1ldGhvZDoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVQk9PVF9NQUNISU5FID0gImNvbmZpZyIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBTZWUgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9DT05GSUcnPjxmaWxlbmFtZT5VQk9PVF9DT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgYW5kCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9NQUNISU5FJz48ZmlsZW5hbWU+VUJPT1RfTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB2YXJpYWJsZXMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtdW5pbmF0aXZlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnVuaW5hdGl2ZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEF0dGVtcHRzIHRvIGlzb2xhdGUgdGhlIGJ1aWxkIHN5c3RlbSBmcm9tIHRoZSBob3N0CisgICAgICAgIGRpc3RyaWJ1dGlvbidzIEMgbGlicmFyeSBpbiBvcmRlciB0byBtYWtlIHJlLXVzZSBvZiBuYXRpdmUgc2hhcmVkIHN0YXRlCisgICAgICAgIGFydGlmYWN0cyBhY3Jvc3MgZGlmZmVyZW50IGhvc3QgZGlzdHJpYnV0aW9ucyBwcmFjdGljYWwuCisgICAgICAgIFdpdGggdGhpcyBjbGFzcyBlbmFibGVkLCBhIHRhcmJhbGwgY29udGFpbmluZyBhIHByZS1idWlsdCBDIGxpYnJhcnkKKyAgICAgICAgaXMgZG93bmxvYWRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGJ1aWxkLgorICAgICAgICBJbiB0aGUgUG9reSByZWZlcmVuY2UgZGlzdHJpYnV0aW9uIHRoaXMgaXMgZW5hYmxlZCBieSBkZWZhdWx0CisgICAgICAgIHRocm91Z2gKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jPC9maWxlbmFtZT4uCisgICAgICAgIE90aGVyIGRpc3RyaWJ1dGlvbnMgdGhhdCBkbyBub3QgZGVyaXZlIGZyb20gcG9reSBjYW4gYWxzbworICAgICAgICAiPGZpbGVuYW1lPnJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jPC9maWxlbmFtZT4iCisgICAgICAgIHRvIHVzZSB0aGlzLgorICAgICAgICBBbHRlcm5hdGl2ZWx5IGlmIHlvdSBwcmVmZXIsIHlvdSBjYW4gYnVpbGQgdGhlIHVuaW5hdGl2ZS10YXJiYWxsIHJlY2lwZQorICAgICAgICB5b3Vyc2VsZiwgcHVibGlzaCB0aGUgcmVzdWx0aW5nIHRhcmJhbGwgKGUuZy4gdmlhIEhUVFApIGFuZCBzZXQKKyAgICAgICAgPGZpbGVuYW1lPlVOSU5BVElWRV9VUkw8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgPGZpbGVuYW1lPlVOSU5BVElWRV9DSEVDS1NVTTwvZmlsZW5hbWU+IGFwcHJvcHJpYXRlbHkuCisgICAgICAgIEZvciBhbiBleGFtcGxlLCBzZWUgdGhlCisgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYzwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnVuaW5hdGl2ZTwvZmlsZW5hbWU+IGNsYXNzIGlzIGFsc28gdXNlZCB1bmNvbmRpdGlvbmFsbHkKKyAgICAgICAgYnkgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICBXaGVuIGJ1aWxkaW5nIHRoZSBleHRlbnNpYmxlIFNESywKKyAgICAgICAgPGZpbGVuYW1lPnVuaW5hdGl2ZS10YXJiYWxsPC9maWxlbmFtZT4gaXMgYnVpbHQgYW5kIHRoZSByZXN1bHRpbmcKKyAgICAgICAgdGFyYmFsbCBpcyBpbmNsdWRlZCB3aXRoaW4gdGhlIFNESy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy11cGRhdGUtYWx0ZXJuYXRpdmVzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXM8L2ZpbGVuYW1lPiBjbGFzcyBoZWxwcyB0aGUKKyAgICAgICAgYWx0ZXJuYXRpdmVzIHN5c3RlbSB3aGVuIG11bHRpcGxlIHNvdXJjZXMgcHJvdmlkZSB0aGUgc2FtZSBjb21tYW5kLgorICAgICAgICBUaGlzIHNpdHVhdGlvbiBvY2N1cnMgd2hlbiBzZXZlcmFsIHByb2dyYW1zIHRoYXQgaGF2ZSB0aGUgc2FtZSBvcgorICAgICAgICBzaW1pbGFyIGZ1bmN0aW9uIGFyZSBpbnN0YWxsZWQgd2l0aCB0aGUgc2FtZSBuYW1lLgorICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5hcjwvZmlsZW5hbWU+IGNvbW1hbmQgaXMgYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+ZWxmdXRpbHM8L2ZpbGVuYW1lPiBwYWNrYWdlcy4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzPC9maWxlbmFtZT4gY2xhc3MgaGFuZGxlcworICAgICAgICByZW5hbWluZyB0aGUgYmluYXJpZXMgc28gdGhhdCBtdWx0aXBsZSBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkCisgICAgICAgIHdpdGhvdXQgY29uZmxpY3RzLgorICAgICAgICBUaGUgPGZpbGVuYW1lPmFyPC9maWxlbmFtZT4gY29tbWFuZCBzdGlsbCB3b3JrcyByZWdhcmRsZXNzIG9mIHdoaWNoCisgICAgICAgIHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQgb3Igc3Vic2VxdWVudGx5IHJlbW92ZWQuCisgICAgICAgIFRoZSBjbGFzcyByZW5hbWVzIHRoZSBjb25mbGljdGluZyBiaW5hcnkgaW4gZWFjaCBwYWNrYWdlIGFuZCBzeW1saW5rcworICAgICAgICB0aGUgaGlnaGVzdCBwcmlvcml0eSBiaW5hcnkgZHVyaW5nIGluc3RhbGxhdGlvbiBvciByZW1vdmFsIG9mIHBhY2thZ2VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUbyB1c2UgdGhpcyBjbGFzcywgeW91IG5lZWQgdG8gZGVmaW5lIGEgbnVtYmVyIG9mIHZhcmlhYmxlczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItQUxURVJOQVRJVkUnPjxmaWxlbmFtZT5BTFRFUk5BVElWRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1BTFRFUk5BVElWRV9MSU5LX05BTUUnPjxmaWxlbmFtZT5BTFRFUk5BVElWRV9MSU5LX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItQUxURVJOQVRJVkVfVEFSR0VUJz48ZmlsZW5hbWU+QUxURVJOQVRJVkVfVEFSR0VUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUFMVEVSTkFUSVZFX1BSSU9SSVRZJz48ZmlsZW5hbWU+QUxURVJOQVRJVkVfUFJJT1JJVFk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIFRoZXNlIHZhcmlhYmxlcyBsaXN0IGFsdGVybmF0aXZlIGNvbW1hbmRzIG5lZWRlZCBieSBhIHBhY2thZ2UsCisgICAgICAgIHByb3ZpZGUgcGF0aG5hbWVzIGZvciBsaW5rcywgZGVmYXVsdCBsaW5rcyBmb3IgdGFyZ2V0cywgYW5kCisgICAgICAgIHNvIGZvcnRoLgorICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdXNlIHRoaXMgY2xhc3MsIHNlZSB0aGUgY29tbWVudHMgaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzJz48ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICBmaWxlLgorICAgIDwvcGFyYT4KKworICAgIDxub3RlPgorICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXM8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgIGRpcmVjdGx5IGluIHlvdXIgcmVjaXBlcy4KKyAgICAgICAgSG93ZXZlciwgdGhpcyBjbGFzcyBzaW1wbGlmaWVzIHRoaW5ncyBpbiBtb3N0IGNhc2VzLgorICAgIDwvbm90ZT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXVwZGF0ZS1yYy5kJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnVwZGF0ZS1yYy5kLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT51cGRhdGUtcmMuZDwvZmlsZW5hbWU+IGNsYXNzIHVzZXMKKyAgICAgICAgPGZpbGVuYW1lPnVwZGF0ZS1yYy5kPC9maWxlbmFtZT4gdG8gc2FmZWx5IGluc3RhbGwgYW4KKyAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0IG9uIGJlaGFsZiBvZiB0aGUgcGFja2FnZS4KKyAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGFrZXMgY2FyZSBvZiBkZXRhaWxzIHN1Y2ggYXMgbWFraW5nCisgICAgICAgIHN1cmUgdGhlIHNjcmlwdCBpcyBzdG9wcGVkIGJlZm9yZSBhIHBhY2thZ2UgaXMgcmVtb3ZlZCBhbmQgc3RhcnRlZCB3aGVuCisgICAgICAgIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhyZWUgdmFyaWFibGVzIGNvbnRyb2wgdGhpcyBjbGFzczoKKyAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUU0NSSVBUX1BBQ0tBR0VTJz5JTklUU0NSSVBUX1BBQ0tBR0VTPC9saW5rPjwvZmlsZW5hbWU+LAorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlOSVRTQ1JJUFRfTkFNRSc+SU5JVFNDUklQVF9OQU1FPC9saW5rPjwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlOSVRTQ1JJUFRfUEFSQU1TJz5JTklUU0NSSVBUX1BBUkFNUzwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgU2VlIHRoZSB2YXJpYWJsZSBsaW5rcyBmb3IgZGV0YWlscy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy11c2VyYWRkJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnVzZXJhZGQqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT51c2VyYWRkKjwvZmlsZW5hbWU+IGNsYXNzZXMgc3VwcG9ydCB0aGUgYWRkaXRpb24gb2YgdXNlcnMKKyAgICAgICAgb3IgZ3JvdXBzIGZvciB1c2FnZSBieSB0aGUgcGFja2FnZSBvbiB0aGUgdGFyZ2V0LgorICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgcGFja2FnZXMgdGhhdCBjb250YWluIHN5c3RlbSBzZXJ2aWNlcyB0aGF0CisgICAgICAgIHNob3VsZCBiZSBydW4gdW5kZXIgdGhlaXIgb3duIHVzZXIgb3IgZ3JvdXAsIHlvdSBjYW4gdXNlIHRoZXNlIGNsYXNzZXMKKyAgICAgICAgdG8gZW5hYmxlIGNyZWF0aW9uIG9mIHRoZSB1c2VyIG9yIGdyb3VwLgorICAgICAgICBUaGUKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2tlbGV0b24vcmVjaXBlcy1za2VsZXRvbi91c2VyYWRkL3VzZXJhZGQtZXhhbXBsZS5iYjwvZmlsZW5hbWU+CisgICAgICAgIHJlY2lwZSBpbiB0aGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgcHJvdmlkZXMgYSBzaW1wbGUgZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBhZGQgdGhyZWUKKyAgICAgICAgdXNlcnMgYW5kIGdyb3VwcyB0byB0d28gcGFja2FnZXMuCisgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPnVzZXJhZGQtZXhhbXBsZS5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbW9yZQorICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZXNlIGNsYXNzZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dXNlcmFkZF9iYXNlPC9maWxlbmFtZT4gY2xhc3MgcHJvdmlkZXMgYmFzaWMKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgdXNlciBvciBncm91cHMgc2V0dGluZ3MuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dXNlcmFkZCo8L2ZpbGVuYW1lPiBjbGFzc2VzIHN1cHBvcnQgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSQUREX1BBQ0tBR0VTJz48ZmlsZW5hbWU+VVNFUkFERF9QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfUEFSQU0nPjxmaWxlbmFtZT5VU0VSQUREX1BBUkFNPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItR1JPVVBBRERfUEFSQU0nPjxmaWxlbmFtZT5HUk9VUEFERF9QQVJBTTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgYW5kCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HUk9VUE1FTVNfUEFSQU0nPjxmaWxlbmFtZT5HUk9VUE1FTVNfUEFSQU08L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPnVzZXJhZGQtc3RhdGljaWRzPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMgdGhlIGFkZGl0aW9uCisgICAgICAgIG9mIHVzZXJzIG9yIGdyb3VwcyB0aGF0IGhhdmUgc3RhdGljIHVzZXIgaWRlbnRpZmljYXRpb24KKyAgICAgICAgKDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPikgYW5kIGdyb3VwIGlkZW50aWZpY2F0aW9uCisgICAgICAgICg8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4pIHZhbHVlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZm9yIGFzc2lnbmluZworICAgICAgICA8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPiB2YWx1ZXMgd2hlbgorICAgICAgICBwYWNrYWdlcyBhZGQgdXNlcnMgYW5kIGdyb3VwcyBkdXJpbmcgcGFja2FnZSBpbnN0YWxsIHRpbWUgaXMgdG8KKyAgICAgICAgYWRkIHRoZW0gZHluYW1pY2FsbHkuCisgICAgICAgIFRoaXMgd29ya3MgZmluZSBmb3IgcHJvZ3JhbXMgdGhhdCBkbyBub3QgY2FyZSB3aGF0IHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHJlc3VsdGluZyB1c2VycyBhbmQgZ3JvdXBzIGJlY29tZS4KKyAgICAgICAgSW4gdGhlc2UgY2FzZXMsIHRoZSBvcmRlciBvZiB0aGUgaW5zdGFsbGF0aW9uIGRldGVybWluZXMgdGhlIGZpbmFsCisgICAgICAgIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+IHZhbHVlcy4KKyAgICAgICAgSG93ZXZlciwgaWYgbm9uLWRldGVybWluaXN0aWMKKyAgICAgICAgPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4gdmFsdWVzIGFyZSBhCisgICAgICAgIHByb2JsZW0sIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQsIGR5bmFtaWMgYXBwbGljYXRpb24gb2YgdGhlc2UKKyAgICAgICAgdmFsdWVzIGJ5IHNldHRpbmcgc3RhdGljIHZhbHVlcy4KKyAgICAgICAgV2hlbiB5b3Ugc2V0IHN0YXRpYyB2YWx1ZXMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGxvb2tzIGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4gZm9yCisgICAgICAgIDxmaWxlbmFtZT5maWxlcy9wYXNzd2Q8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmZpbGVzL2dyb3VwPC9maWxlbmFtZT4KKyAgICAgICAgZmlsZXMgZm9yIHRoZSB2YWx1ZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIHVzZSBzdGF0aWMgPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4KKyAgICAgICAgdmFsdWVzLCB5b3UgbmVlZCB0byBzZXQgc29tZSB2YXJpYWJsZXMuCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERFWFRFTlNJT04nPjxmaWxlbmFtZT5VU0VSQURERVhURU5TSU9OPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9VSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9VSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9HSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9HSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfRVJST1JfRFlOQU1JQyc+PGZpbGVuYW1lPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgIFlvdSBkbyBub3QgdXNlIHRoZSA8ZmlsZW5hbWU+dXNlcmFkZC1zdGF0aWNpZHM8L2ZpbGVuYW1lPgorICAgICAgICBjbGFzcyBkaXJlY3RseS4KKyAgICAgICAgWW91IGVpdGhlciBlbmFibGUgb3IgZGlzYWJsZSB0aGUgY2xhc3MgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgPGZpbGVuYW1lPlVTRVJBRERFWFRFTlNJT048L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgSWYgeW91IGVuYWJsZSBvciBkaXNhYmxlIHRoZSBjbGFzcyBpbiBhIGNvbmZpZ3VyZWQgc3lzdGVtLAorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIG1pZ2h0IGNvbnRhaW4gaW5jb3JyZWN0IDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+IHZhbHVlcy4KKyAgICAgICAgRGVsZXRpbmcgdGhlIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgd2lsbCBjb3JyZWN0IHRoaXMgY29uZGl0aW9uLgorICAgIDwvbm90ZT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXV0aWxpdHktdGFza3MnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+dXRpbGl0eS10YXNrcy5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+dXRpbGl0eS10YXNrczwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yCisgICAgICAgIHZhcmlvdXMgInV0aWxpdHkiIHR5cGUgdGFza3MgdGhhdCBhcmUgYXBwbGljYWJsZSB0byBhbGwgcmVjaXBlcywKKyAgICAgICAgc3VjaCBhcworICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY2xlYW4nPjxmaWxlbmFtZT5kb19jbGVhbjwvZmlsZW5hbWU+PC9saW5rPiBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWxpc3R0YXNrcyc+PGZpbGVuYW1lPmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjbGFzcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdCBpcyBpbmhlcml0ZWQgYnkKKyAgICAgICAgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJhc2UnPjxmaWxlbmFtZT5iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIGNsYXNzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLXV0aWxzJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPnV0aWxzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT51dGlsczwvZmlsZW5hbWU+IGNsYXNzIHByb3ZpZGVzIHNvbWUgdXNlZnVsIFB5dGhvbgorICAgICAgICBmdW5jdGlvbnMgdGhhdCBhcmUgdHlwaWNhbGx5IHVzZWQgaW4gaW5saW5lIFB5dGhvbiBleHByZXNzaW9ucworICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+JHtALi4ufTwvZmlsZW5hbWU+KS4KKyAgICAgICAgT25lIGV4YW1wbGUgdXNlIGlzIGZvciA8ZmlsZW5hbWU+YmIudXRpbHMuY29udGFpbnMoKTwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIGNsYXNzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIGl0IGlzIGluaGVyaXRlZCBieSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtdmFsYSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT52YWxhLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT52YWxhPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMgcmVjaXBlcyB0aGF0IG5lZWQgdG8KKyAgICAgICAgYnVpbGQgc29mdHdhcmUgd3JpdHRlbiB1c2luZyB0aGUgVmFsYSBwcm9ncmFtbWluZyBsYW5ndWFnZS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy13YWYnPgorICAgIDx0aXRsZT48ZmlsZW5hbWU+d2FmLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT53YWY8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyByZWNpcGVzIHRoYXQgbmVlZCB0byBidWlsZAorICAgICAgICBzb2Z0d2FyZSB0aGF0IHVzZXMgdGhlIFdhZiBidWlsZCBzeXN0ZW0uCisgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRVhUUkFfT0VDT05GJz48ZmlsZW5hbWU+RVhUUkFfT0VDT05GPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIG9yCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB2YXJpYWJsZXMgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBiZSBwYXNzZWQgb24KKyAgICAgICAgdGhlIFdhZiBjb21tYW5kIGxpbmUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8IS0tIFVuZG9jdW1lbnRlZCBjbGFzc2VzIGFyZToKKyAgICAgICAgaW1hZ2UtZW1wdHkuYmJjbGFzcyAocG9zc2libHkgYmVpbmcgZHJvcHBlZCkKKyAgICAgICAgbWlncmF0ZV9sb2NhbGNvdW50LmJiY2xhc3MgKHN0aWxsIG5lZWQgYSBkZXNjcmlwdGlvbikKKy0tPgorCisKKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS5yc3QKaW5kZXggMWZlODk5Ny4uZWFjYTQ1YSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioKIGBgZGV2dG9vbGBgIFF1aWNrIFJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMzY2NjMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKQEAgLTAsMCArMSw4NDIgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ncmVmLWRldnRvb2wtcmVmZXJlbmNlJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBRdWljayBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSB0b29sIHByb3ZpZGVzIGEgbnVtYmVyCisgICAgICAgIG9mIGZlYXR1cmVzIHRoYXQgaGVscCB5b3UgYnVpbGQsIHRlc3QsIGFuZCBwYWNrYWdlIHNvZnR3YXJlLgorICAgICAgICBUaGlzIGNvbW1hbmQgaXMgYXZhaWxhYmxlIGFsb25nc2lkZSB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgorICAgICAgICBjb21tYW5kLgorICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQgaXMgYSBrZXkKKyAgICAgICAgcGFydCBvZiB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBhIFF1aWNrIFJlZmVyZW5jZSBmb3IgdGhlCisgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGFwcGx5IHRoZSBjb21tYW5kIHdoZW4gdXNpbmcgdGhlCisgICAgICAgIGV4dGVuc2libGUgU0RLLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLWdldHRpbmctaGVscCc+CisgICAgICAgIDx0aXRsZT5HZXR0aW5nIEhlbHA8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZCBsaW5lIGlzIG9yZ2FuaXplZAorICAgICAgICAgICAgc2ltaWxhcmx5IHRvIEdpdCBpbiB0aGF0IGl0IGhhcyBhIG51bWJlciBvZiBzdWItY29tbWFuZHMgZm9yCisgICAgICAgICAgICBlYWNoIGZ1bmN0aW9uLgorICAgICAgICAgICAgWW91IGNhbiBydW4gPGZpbGVuYW1lPmRldnRvb2wgLS1oZWxwPC9maWxlbmFtZT4gdG8gc2VlIGFsbAorICAgICAgICAgICAgdGhlIGNvbW1hbmRzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgLWgKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgdXNhZ2U6IGRldnRvb2wgWy0tYmFzZXBhdGggQkFTRVBBVEhdIFstLWJicGF0aCBCQlBBVEhdIFstZF0gWy1xXQorICAgICAgICAgICAgICAgICAgICBbLS1jb2xvciBDT0xPUl0gWy1oXQorICAgICAgICAgICAgICAgICAgICAmbHQ7c3ViY29tbWFuZCZndDsgLi4uCisKKyAgICAgT3BlbkVtYmVkZGVkIGRldmVsb3BtZW50IHRvb2wKKworICAgICBvcHRpb25zOgorICAgICAgIC0tYmFzZXBhdGggQkFTRVBBVEggICBCYXNlIGRpcmVjdG9yeSBvZiBTREsgLyBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAtLWJicGF0aCBCQlBBVEggICAgICAgRXhwbGljaXRseSBzcGVjaWZ5IHRoZSBCQlBBVEgsIHJhdGhlciB0aGFuIGdldHRpbmcgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgbWV0YWRhdGEKKyAgICAgICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBQcmludCBvbmx5IGVycm9ycworICAgICAgIC0tY29sb3IgQ09MT1IgICAgICAgICBDb2xvcml6ZSBvdXRwdXQgKHdoZXJlIENPTE9SIGlzIGF1dG8sIGFsd2F5cywgbmV2ZXIpCisgICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKworICAgICBzdWJjb21tYW5kczoKKyAgICAgICBCZWdpbm5pbmcgd29yayBvbiBhIHJlY2lwZToKKyAgICAgICAgIGFkZCAgICAgICAgICAgICAgICAgICBBZGQgYSBuZXcgcmVjaXBlCisgICAgICAgICBtb2RpZnkgICAgICAgICAgICAgICAgTW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZQorICAgICAgICAgdXBncmFkZSAgICAgICAgICAgICAgIFVwZ3JhZGUgYW4gZXhpc3RpbmcgcmVjaXBlCisgICAgICAgR2V0dGluZyBpbmZvcm1hdGlvbjoKKyAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICBTaG93IHdvcmtzcGFjZSBzdGF0dXMKKyAgICAgICAgIHNlYXJjaCAgICAgICAgICAgICAgICBTZWFyY2ggYXZhaWxhYmxlIHJlY2lwZXMKKyAgICAgICAgIGxhdGVzdC12ZXJzaW9uICAgICAgICBSZXBvcnQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGFuIGV4aXN0aW5nIHJlY2lwZQorICAgICAgICAgY2hlY2stdXBncmFkZS1zdGF0dXMgIFJlcG9ydCB1cGdyYWRhYmlsaXR5IGZvciBtdWx0aXBsZSAob3IgYWxsKSByZWNpcGVzCisgICAgICAgV29ya2luZyBvbiBhIHJlY2lwZSBpbiB0aGUgd29ya3NwYWNlOgorICAgICAgICAgYnVpbGQgICAgICAgICAgICAgICAgIEJ1aWxkIGEgcmVjaXBlCisgICAgICAgICByZW5hbWUgICAgICAgICAgICAgICAgUmVuYW1lIGEgcmVjaXBlIGZpbGUgaW4gdGhlIHdvcmtzcGFjZQorICAgICAgICAgZWRpdC1yZWNpcGUgICAgICAgICAgIEVkaXQgYSByZWNpcGUgZmlsZQorICAgICAgICAgZmluZC1yZWNpcGUgICAgICAgICAgIEZpbmQgYSByZWNpcGUgZmlsZQorICAgICAgICAgY29uZmlndXJlLWhlbHAgICAgICAgIEdldCBoZWxwIG9uIGNvbmZpZ3VyZSBzY3JpcHQgb3B0aW9ucworICAgICAgICAgdXBkYXRlLXJlY2lwZSAgICAgICAgIEFwcGx5IGNoYW5nZXMgZnJvbSBleHRlcm5hbCBzb3VyY2UgdHJlZSB0byByZWNpcGUKKyAgICAgICAgIHJlc2V0ICAgICAgICAgICAgICAgICBSZW1vdmUgYSByZWNpcGUgZnJvbSB5b3VyIHdvcmtzcGFjZQorICAgICAgICAgZmluaXNoICAgICAgICAgICAgICAgIEZpbmlzaCB3b3JraW5nIG9uIGEgcmVjaXBlIGluIHlvdXIgd29ya3NwYWNlCisgICAgICAgVGVzdGluZyBjaGFuZ2VzIG9uIHRhcmdldDoKKyAgICAgICAgIGRlcGxveS10YXJnZXQgICAgICAgICBEZXBsb3kgcmVjaXBlIG91dHB1dCBmaWxlcyB0byBsaXZlIHRhcmdldCBtYWNoaW5lCisgICAgICAgICB1bmRlcGxveS10YXJnZXQgICAgICAgVW5kZXBsb3kgcmVjaXBlIG91dHB1dCBmaWxlcyBpbiBsaXZlIHRhcmdldCBtYWNoaW5lCisgICAgICAgICBidWlsZC1pbWFnZSAgICAgICAgICAgQnVpbGQgaW1hZ2UgaW5jbHVkaW5nIHdvcmtzcGFjZSByZWNpcGUgcGFja2FnZXMKKyAgICAgICBBZHZhbmNlZDoKKyAgICAgICAgIGNyZWF0ZS13b3Jrc3BhY2UgICAgICBTZXQgdXAgd29ya3NwYWNlIGluIGFuIGFsdGVybmF0aXZlIGxvY2F0aW9uCisgICAgICAgICBleHBvcnQgICAgICAgICAgICAgICAgRXhwb3J0IHdvcmtzcGFjZSBpbnRvIGEgdGFyIGFyY2hpdmUKKyAgICAgICAgIGltcG9ydCAgICAgICAgICAgICAgICBJbXBvcnQgZXhwb3J0ZWQgdGFyIGFyY2hpdmUgaW50byB3b3Jrc3BhY2UKKyAgICAgICAgIGV4dHJhY3QgICAgICAgICAgICAgICBFeHRyYWN0IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZQorICAgICAgICAgc3luYyAgICAgICAgICAgICAgICAgIFN5bmNocm9uaXplIHRoZSBzb3VyY2UgdHJlZSBmb3IgYW4gZXhpc3RpbmcgcmVjaXBlCisgICAgIFVzZSBkZXZ0b29sICZsdDtzdWJjb21tYW5kJmd0OyAtLWhlbHAgdG8gZ2V0IGhlbHAgb24gYSBzcGVjaWZpYyBjb21tYW5kCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBcyBkaXJlY3RlZCBpbiB0aGUgZ2VuZXJhbCBoZWxwIG91dHB1dCwgeW91IGNhbiBnZXQgbW9yZSBzeW50YXgKKyAgICAgICAgICAgIG9uIGEgc3BlY2lmaWMgY29tbWFuZCBieSBwcm92aWRpbmcgdGhlIGNvbW1hbmQgbmFtZSBhbmQgdXNpbmcKKyAgICAgICAgICAgICItLWhlbHAiOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYWRkIC0taGVscAorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICB1c2FnZTogZGV2dG9vbCBhZGQgWy1oXSBbLS1zYW1lLWRpciB8IC0tbm8tc2FtZS1kaXJdIFstLWZldGNoIFVSSV0KKyAgICAgICAgICAgICAgICAgICAgICAgIFstLWZldGNoLWRldl0gWy0tdmVyc2lvbiBWRVJTSU9OXSBbLS1uby1naXRdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1zcmNyZXYgU1JDUkVWIHwgLS1hdXRvcmV2XSBbLS1zcmNicmFuY2ggU1JDQlJBTkNIXQorICAgICAgICAgICAgICAgICAgICAgICAgWy0tYmluYXJ5XSBbLS1hbHNvLW5hdGl2ZV0gWy0tc3JjLXN1YmRpciBTVUJESVJdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1taXJyb3JzXSBbLS1wcm92aWRlcyBQUk9WSURFU10KKyAgICAgICAgICAgICAgICAgICAgICAgIFtyZWNpcGVuYW1lXSBbc3JjdHJlZV0gW2ZldGNodXJpXQorCisgICAgIEFkZHMgYSBuZXcgcmVjaXBlIHRvIHRoZSB3b3Jrc3BhY2UgdG8gYnVpbGQgYSBzcGVjaWZpZWQgc291cmNlIHRyZWUuIENhbgorICAgICBvcHRpb25hbGx5IGZldGNoIGEgcmVtb3RlIFVSSSBhbmQgdW5wYWNrIGl0IHRvIGNyZWF0ZSB0aGUgc291cmNlIHRyZWUuCisKKyAgICAgYXJndW1lbnRzOgorICAgICAgIHJlY2lwZW5hbWUgICAgICAgICAgICBOYW1lIGZvciBuZXcgcmVjaXBlIHRvIGFkZCAoanVzdCBuYW1lIC0gbm8gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBvciBleHRlbnNpb24pLiBJZiBub3Qgc3BlY2lmaWVkLCB3aWxsIGF0dGVtcHQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0by1kZXRlY3QgaXQuCisgICAgICAgc3JjdHJlZSAgICAgICAgICAgICAgIFBhdGggdG8gZXh0ZXJuYWwgc291cmNlIHRyZWUuIElmIG5vdCBzcGVjaWZpZWQsIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkLgorICAgICAgIGZldGNodXJpICAgICAgICAgICAgICBGZXRjaCB0aGUgc3BlY2lmaWVkIFVSSSBhbmQgZXh0cmFjdCBpdCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0cmVlCisKKyAgICAgb3B0aW9uczoKKyAgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgIC0tc2FtZS1kaXIsIC1zICAgICAgICBCdWlsZCBpbiBzYW1lIGRpcmVjdG9yeSBhcyBzb3VyY2UKKyAgICAgICAtLW5vLXNhbWUtZGlyICAgICAgICAgRm9yY2UgYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAtLWZldGNoIFVSSSwgLWYgVVJJICAgRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgdHJlZSAoZGVwcmVjYXRlZCAtIHBhc3MgYXMgcG9zaXRpb25hbCBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkKQorICAgICAgIC0tZmV0Y2gtZGV2ICAgICAgICAgICBGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcworICAgICAgIC0tdmVyc2lvbiBWRVJTSU9OLCAtViBWRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBWKQorICAgICAgIC0tbm8tZ2l0LCAtZyAgICAgICAgICBJZiBmZXRjaGluZyBzb3VyY2UsIGRvIG5vdCBzZXQgdXAgc291cmNlIHRyZWUgYXMgYSBnaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeQorICAgICAgIC0tc3JjcmV2IFNSQ1JFViwgLVMgU1JDUkVWCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSByZXZpc2lvbiB0byBmZXRjaCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGdpdCAoZGVmYXVsdCBsYXRlc3QpCisgICAgICAgLS1hdXRvcmV2LCAtYSAgICAgICAgIFdoZW4gZmV0Y2hpbmcgZnJvbSBhIGdpdCByZXBvc2l0b3J5LCBzZXQgU1JDUkVWIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgdG8gYSBmbG9hdGluZyByZXZpc2lvbiBpbnN0ZWFkIG9mIGZpeGVkCisgICAgICAgLS1zcmNicmFuY2ggU1JDQlJBTkNILCAtQiBTUkNCUkFOQ0gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmNoIGluIHNvdXJjZSByZXBvc2l0b3J5IGlmIGZldGNoaW5nIGZyb20gYW4gU0NNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IG1hc3RlcikKKyAgICAgICAtLWJpbmFyeSwgLWIgICAgICAgICAgVHJlYXQgdGhlIHNvdXJjZSB0cmVlIGFzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgdmVyYmF0aW0gKG5vIGNvbXBpbGF0aW9uLCBzYW1lIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUpLiBVc2VmdWwgd2l0aCBiaW5hcnkgcGFja2FnZXMgZS5nLiBSUE1zLgorICAgICAgIC0tYWxzby1uYXRpdmUgICAgICAgICBBbHNvIGFkZCBuYXRpdmUgdmFyaWFudCAoaS5lLiBzdXBwb3J0IGJ1aWxkaW5nIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkIGhvc3QgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0IG1hY2hpbmUpCisgICAgICAgLS1zcmMtc3ViZGlyIFNVQkRJUiAgIFNwZWNpZnkgc3ViZGlyZWN0b3J5IHdpdGhpbiBzb3VyY2UgdHJlZSB0byB1c2UKKyAgICAgICAtLW1pcnJvcnMgICAgICAgICAgICAgRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlIGZldGNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNhYmxlIGJ5IGRlZmF1bHQpLgorICAgICAgIC0tcHJvdmlkZXMgUFJPVklERVMsIC1wIFBST1ZJREVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gYWxpYXMgZm9yIHRoZSBpdGVtIHByb3ZpZGVkIGJ5IHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUuZy4gdmlydHVhbC9saWJnbAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtdGhlLXdvcmtzcGFjZS1sYXllci1zdHJ1Y3R1cmUnPgorICAgICAgICA8dGl0bGU+VGhlIFdvcmtzcGFjZSBMYXllciBTdHJ1Y3R1cmU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB1c2VzIGEgIldvcmtzcGFjZSIgbGF5ZXIKKyAgICAgICAgICAgIGluIHdoaWNoIHRvIGFjY29tcGxpc2ggYnVpbGRzLgorICAgICAgICAgICAgVGhpcyBsYXllciBpcyBub3Qgc3BlY2lmaWMgdG8gYW55IHNpbmdsZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kIGJ1dCBpcyByYXRoZXIgYSBjb21tb24KKyAgICAgICAgICAgIHdvcmtpbmcgYXJlYSB1c2VkIGFjcm9zcyB0aGUgdG9vbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhlIHdvcmtzcGFjZSBzdHJ1Y3R1cmU6CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9idWlsZC13b3Jrc3BhY2UtZGlyZWN0b3J5LnBuZyIKKyAgICAgICAgICAgICAgICB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiBhbGlnbj0ibGVmdCIgc2NhbGU9IjcwIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGF0dGljIC0gQSBkaXJlY3RvcnkgY3JlYXRlZCBpZiBkZXZ0b29sIGJlbGlldmVzIGl0IG11c3QgcHJlc2VydmUKKyAgICAgICAgICAgICBhbnl0aGluZyB3aGVuIHlvdSBydW4gImRldnRvb2wgcmVzZXQiLiAgRm9yIGV4YW1wbGUsIGlmIHlvdQorICAgICAgICAgICAgIHJ1biAiZGV2dG9vbCBhZGQiLCBtYWtlIGNoYW5nZXMgdG8gdGhlIHJlY2lwZSwgYW5kIHRoZW4KKyAgICAgICAgICAgICBydW4gImRldnRvb2wgcmVzZXQiLCBkZXZ0b29sIHRha2VzIG5vdGljZSB0aGF0IHRoZSBmaWxlIGhhcworICAgICAgICAgICAgIGJlZW4gY2hhbmdlZCBhbmQgbW92ZXMgaXQgaW50byB0aGUgYXR0aWMgc2hvdWxkIHlvdSBzdGlsbAorICAgICAgICAgICAgIHdhbnQgdGhlIHJlY2lwZS4KKworICAgICBSRUFETUUgLSBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiB3aGF0IGlzIGluIHdvcmtzcGFjZSBsYXllciBhbmQgaG93IHRvCisgICAgICAgICAgICAgIG1hbmFnZSBpdC4KKworICAgICAuZGV2dG9vbF9tZDUgLSBBIGNoZWNrc3VtIGZpbGUgdXNlZCBieSBkZXZ0b29sLgorCisgICAgIGFwcGVuZHMgLSBBIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zICouYmJhcHBlbmQgZmlsZXMsIHdoaWNoIHBvaW50IHRvCisgICAgICAgICAgICAgICBleHRlcm5hbCBzb3VyY2UuCisKKyAgICAgY29uZiAtIEEgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0aGUgbGF5ZXIuY29uZiBmaWxlLgorCisgICAgIHJlY2lwZXMgLSBBIGRpcmVjdG9yeSBjb250YWluaW5nIHJlY2lwZXMuICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhCisgICAgICAgICAgICAgICBmb2xkZXIgZm9yIGVhY2ggZGlyZWN0b3J5IGFkZGVkIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGF0IG9mIHRoZQorICAgICAgICAgICAgICAgYWRkZWQgcmVjaXBlLiAgZGV2dG9vbCBwbGFjZXMgdGhlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPi5iYiBmaWxlCisgICAgICAgICAgICAgICB3aXRoaW4gdGhhdCBzdWItZGlyZWN0b3J5LgorCisgICAgIHNvdXJjZXMgLSBBIGRpcmVjdG9yeSBjb250YWluaW5nIGEgd29ya2luZyBjb3B5IG9mIHRoZSBzb3VyY2UgZmlsZXMgdXNlZAorICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUgcmVjaXBlLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBkaXJlY3RvcnkgdXNlZAorICAgICAgICAgICAgICAgYXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBzb3VyY2UgdHJlZSB3aGVuIHlvdSBkbyBub3QgcHJvdmlkZSBhCisgICAgICAgICAgICAgICBzb3VyY2UgdHJlZSBwYXRoLiAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBmb2xkZXIgZm9yIGVhY2gKKyAgICAgICAgICAgICAgIHNldCBvZiBzb3VyY2UgZmlsZXMgbWF0Y2hlZCB0byBhIGNvcnJlc3BvbmRpbmcgcmVjaXBlLgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtYWRkaW5nLWEtbmV3LXJlY2lwZS10by10aGUtd29ya3NwYWNlJz4KKyAgICAgICAgPHRpdGxlPkFkZGluZyBhIE5ldyBSZWNpcGUgdG8gdGhlIFdvcmtzcGFjZSBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gYWRkIGEgbmV3IHJlY2lwZQorICAgICAgICAgICAgdG8gdGhlIHdvcmtzcGFjZSBsYXllci4KKyAgICAgICAgICAgIFRoZSByZWNpcGUgeW91IGFkZCBzaG91bGQgbm90IGV4aXN0IC0KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY3JlYXRlcyBpdCBmb3IgeW91LgorICAgICAgICAgICAgVGhlIHNvdXJjZSBmaWxlcyB0aGUgcmVjaXBlIHVzZXMgc2hvdWxkIGV4aXN0IGluIGFuIGV4dGVybmFsCisgICAgICAgICAgICBhcmVhLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhbmQgYWRkcyBhIG5ldyByZWNpcGUgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5qYWNrc29uPC9maWxlbmFtZT4gdG8gYSB3b3Jrc3BhY2UgbGF5ZXIgdGhlIHRvb2wgY3JlYXRlcy4KKyAgICAgICAgICAgIFRoZSBzb3VyY2UgY29kZSBidWlsdCBieSB0aGUgcmVjaXBlcyByZXNpZGVzIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9zb3VyY2VzL2phY2tzb248L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGFkZCBqYWNrc29uIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vc291cmNlcy9qYWNrc29uCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBhZGQgYSByZWNpcGUgYW5kIHRoZSB3b3Jrc3BhY2UgbGF5ZXIgZG9lcyBub3QgZXhpc3QsCisgICAgICAgICAgICB0aGUgY29tbWFuZCBjcmVhdGVzIHRoZSBsYXllciBhbmQgcG9wdWxhdGVzIGl0IGFzCisgICAgICAgICAgICBkZXNjcmliZWQgaW4KKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz5UaGUgV29ya3NwYWNlIExheWVyIFN0cnVjdHVyZTwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSdW5uaW5nIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IHdoZW4gdGhlCisgICAgICAgICAgICB3b3Jrc3BhY2UgbGF5ZXIgZXhpc3RzIGNhdXNlcyB0aGUgdG9vbCB0byBhZGQgdGhlIHJlY2lwZSwKKyAgICAgICAgICAgIGFwcGVuZCBmaWxlcywgYW5kIHNvdXJjZSBmaWxlcyBpbnRvIHRoZSBleGlzdGluZyB3b3Jrc3BhY2UgbGF5ZXIuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaXMgY3JlYXRlZCB0byBwb2ludAorICAgICAgICAgICAgdG8gdGhlIGV4dGVybmFsIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91ciByZWNpcGUgaGFzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGRlZmluZWQsIHlvdSBtdXN0IGJlIHN1cmUKKyAgICAgICAgICAgICAgICB0aGF0IHRoZXNlIHBhY2thZ2VzIGV4aXN0IG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUgYmVmb3JlIGF0dGVtcHRpbmcKKyAgICAgICAgICAgICAgICB0byBydW4geW91ciBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICBJZiBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gbGlicmFyaWVzKSBkbyBub3QgZXhpc3Qgb24gdGhlIHRhcmdldCwKKyAgICAgICAgICAgICAgICB5b3VyIGFwcGxpY2F0aW9uLCB3aGVuIHJ1biwgd2lsbCBmYWlsIHRvIGZpbmQgdGhvc2UgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldnRvb2wtZGVwbG95aW5nLXlvdXItc29mdHdhcmUtb24tdGhlLXRhcmdldC1tYWNoaW5lJz5EZXBsb3lpbmcgWW91ciBTb2Z0d2FyZSBvbiB0aGUgVGFyZ2V0IE1hY2hpbmU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IHVzZXMgdGhlIGxhdGVzdAorICAgICAgICAgICAgcmV2aXNpb24gKGkuZS4gbWFzdGVyKSB3aGVuIHVucGFja2luZyBmaWxlcyBmcm9tIGEgcmVtb3RlIFVSSS4KKyAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIHlvdSBtaWdodCB3YW50IHRvIHNwZWNpZnkgYSBzb3VyY2UgcmV2aXNpb24gYnkKKyAgICAgICAgICAgIGJyYW5jaCwgdGFnLCBvciBjb21taXQgaGFzaC4gWW91IGNhbiBzcGVjaWZ5IHRoZXNlIG9wdGlvbnMgd2hlbgorICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBhIHNvdXJjZSBicmFuY2gsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc3JjYnJhbmNoPC9maWxlbmFtZT4gb3B0aW9uOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBhZGQgLS1zcmNicmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgamFja3NvbiAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3NvdXJjZXMvamFja3NvbgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB5b3UgYXJlIGNoZWNraW5nIG91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgJkRJU1RST19OQU1FX05PX0NBUDsgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHNwZWNpZnkgYSBzcGVjaWZpYyB0YWcgb3IgY29tbWl0IGhhc2gsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc3JjcmV2PC9maWxlbmFtZT4gb3B0aW9uOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBhZGQgLS1zcmNyZXYgJkRJU1RST19SRUxfVEFHOyBqYWNrc29uIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vc291cmNlcy9qYWNrc29uCisgICAgICQgZGV2dG9vbCBhZGQgLS1zcmNyZXYgPHJlcGxhY2VhYmxlPnNvbWVfY29tbWl0X2hhc2g8L3JlcGxhY2VhYmxlPiAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3NvdXJjZXMvamFja3NvbgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlcyBjaGVjayBvdXQgdGhlICZESVNUUk9fUkVMX1RBRzsgdGFnCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgY29tbWl0IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvbWVfY29tbWl0X2hhc2g8L3JlcGxhY2VhYmxlPiBoYXNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91IHByZWZlciB0byB1c2UgdGhlIGxhdGVzdCByZXZpc2lvbiBldmVyeSB0aW1lIHRoZSByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICBidWlsdCwgdXNlIHRoZSBvcHRpb25zIDxmaWxlbmFtZT4tLWF1dG9yZXY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtZXh0cmFjdGluZy10aGUtc291cmNlLWZvci1hbi1leGlzdGluZy1yZWNpcGUnPgorICAgICAgICA8dGl0bGU+RXh0cmFjdGluZyB0aGUgU291cmNlIGZvciBhbiBFeGlzdGluZyBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBleHRyYWN0PC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgZXh0cmFjdCB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUuCisgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhpcyBjb21tYW5kLCB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZQorICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSAoaS5lLiBubyB2ZXJzaW9uLCBwYXRocywgb3IgZXh0ZW5zaW9ucyksIGFuZAorICAgICAgICAgICAgeW91IG11c3Qgc3VwcGx5IHRoZSBkaXJlY3RvcnkgdG8gd2hpY2ggeW91IHdhbnQgdGhlIHNvdXJjZQorICAgICAgICAgICAgZXh0cmFjdGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZGRpdGlvbmFsIGNvbW1hbmQgb3B0aW9ucyBsZXQgeW91IGNvbnRyb2wgdGhlIG5hbWUgb2YgYQorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGludG8gd2hpY2ggeW91IGNhbiBjaGVja291dCB0aGUgc291cmNlCisgICAgICAgICAgICBhbmQgd2hldGhlciBvciBub3QgdG8ga2VlcCBhIHRlbXBvcmFyeSBkaXJlY3RvcnksIHdoaWNoIGlzCisgICAgICAgICAgICB1c2VmdWwgZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXN5bmNocm9uaXppbmctYS1yZWNpcGVzLWV4dHJhY3RlZC1zb3VyY2UtdHJlZSc+CisgICAgICAgIDx0aXRsZT5TeW5jaHJvbml6aW5nIGEgUmVjaXBlJ3MgRXh0cmFjdGVkIFNvdXJjZSBUcmVlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgc3luYzwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KKyAgICAgICAgICAgIHN5bmNocm9uaXplIGEgcHJldmlvdXNseSBleHRyYWN0ZWQgc291cmNlIHRyZWUgZm9yIGFuCisgICAgICAgICAgICBleGlzdGluZyByZWNpcGUuCisgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhpcyBjb21tYW5kLCB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZQorICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSAoaS5lLiBubyB2ZXJzaW9uLCBwYXRocywgb3IgZXh0ZW5zaW9ucyksIGFuZAorICAgICAgICAgICAgeW91IG11c3Qgc3VwcGx5IHRoZSBkaXJlY3RvcnkgdG8gd2hpY2ggeW91IHdhbnQgdGhlIHNvdXJjZQorICAgICAgICAgICAgZXh0cmFjdGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZGRpdGlvbmFsIGNvbW1hbmQgb3B0aW9ucyBsZXQgeW91IGNvbnRyb2wgdGhlIG5hbWUgb2YgYQorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGludG8gd2hpY2ggeW91IGNhbiBjaGVja291dCB0aGUgc291cmNlCisgICAgICAgICAgICBhbmQgd2hldGhlciBvciBub3QgdG8ga2VlcCBhIHRlbXBvcmFyeSBkaXJlY3RvcnksIHdoaWNoIGlzCisgICAgICAgICAgICB1c2VmdWwgZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLW1vZGlmeWluZy1hLXJlY2lwZSc+CisgICAgICAgIDx0aXRsZT5Nb2RpZnlpbmcgYW4gRXhpc3RpbmcgUmVjaXBlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZCB0byBiZWdpbgorICAgICAgICAgICAgbW9kaWZ5aW5nIHRoZSBzb3VyY2Ugb2YgYW4gZXhpc3RpbmcgcmVjaXBlLgorICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2RldnRvb2wtYWRkaW5nLWEtbmV3LXJlY2lwZS10by10aGUtd29ya3NwYWNlJz48ZmlsZW5hbWU+YWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjb21tYW5kIGV4Y2VwdCB0aGF0IGl0IGRvZXMgbm90IHBoeXNpY2FsbHkgY3JlYXRlIHRoZQorICAgICAgICAgICAgcmVjaXBlIGluIHRoZSB3b3Jrc3BhY2UgbGF5ZXIgYmVjYXVzZSB0aGUgcmVjaXBlIGFscmVhZHkKKyAgICAgICAgICAgIGV4aXN0cyBpbiBhbiBhbm90aGVyIGxheWVyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZCBleHRyYWN0cyB0aGUKKyAgICAgICAgICAgIHNvdXJjZSBmb3IgYSByZWNpcGUsIHNldHMgaXQgdXAgYXMgYSBHaXQgcmVwb3NpdG9yeSBpZiB0aGUKKyAgICAgICAgICAgIHNvdXJjZSBoYWQgbm90IGFscmVhZHkgYmVlbiBmZXRjaGVkIGZyb20gR2l0LCBjaGVja3Mgb3V0IGEKKyAgICAgICAgICAgIGJyYW5jaCBmb3IgZGV2ZWxvcG1lbnQsIGFuZCBhcHBsaWVzIGFueSBwYXRjaGVzIGZyb20gdGhlIHJlY2lwZQorICAgICAgICAgICAgYXMgY29tbWl0cyBvbiB0b3AuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gY2hlY2tvdXQgdGhlIHNvdXJjZQorICAgICAgICAgICAgZmlsZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBtb2RpZnkgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBVc2luZyB0aGUgYWJvdmUgY29tbWFuZCBmb3JtLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHVzZXMKKyAgICAgICAgICAgIHRoZSBleGlzdGluZyByZWNpcGUncworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBzdGF0ZW1lbnQgdG8gbG9jYXRlIHRoZSB1cHN0cmVhbSBzb3VyY2UsIGV4dHJhY3RzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIGludG8gdGhlIGRlZmF1bHQgc291cmNlcyBsb2NhdGlvbiBpbiB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgVGhlIGRlZmF1bHQgZGV2ZWxvcG1lbnQgYnJhbmNoIHVzZWQgaXMgImRldnRvb2wiLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtZWRpdC1hbi1leGlzdGluZy1yZWNpcGUnPgorICAgICAgICA8dGl0bGU+RWRpdCBhbiBFeGlzdGluZyBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBlZGl0LXJlY2lwZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIHRvIHJ1biB0aGUgZGVmYXVsdCBlZGl0b3IsIHdoaWNoIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+RURJVE9SPC9maWxlbmFtZT4gdmFyaWFibGUsIG9uIHRoZSBzcGVjaWZpZWQgcmVjaXBlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGVkaXQtcmVjaXBlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGNvbW1hbmQsIHlvdSBtdXN0IHN1cHBseSB0aGUgcm9vdCBuYW1lIG9mIHRoZSByZWNpcGUKKyAgICAgICAgICAgIChpLmUuIG5vIHZlcnNpb24sIHBhdGhzLCBvciBleHRlbnNpb25zKS4KKyAgICAgICAgICAgIEFsc28sIHRoZSByZWNpcGUgZmlsZSBpdHNlbGYgbXVzdCByZXNpZGUgaW4gdGhlIHdvcmtzcGFjZQorICAgICAgICAgICAgYXMgYSByZXN1bHQgb2YgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZHMuCisgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIG92ZXJyaWRlIHRoYXQgcmVxdWlyZW1lbnQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAiLWEiIG9yICItLWFueS1yZWNpcGUiIG9wdGlvbi4KKyAgICAgICAgICAgIFVzaW5nIGVpdGhlciBvZiB0aGVzZSBvcHRpb25zIGFsbG93cyB5b3UgdG8gZWRpdCBhbnkgcmVjaXBlCisgICAgICAgICAgICByZWdhcmRsZXNzIG9mIGl0cyBsb2NhdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXVwZGF0aW5nLWEtcmVjaXBlJz4KKyAgICAgICAgPHRpdGxlPlVwZGF0aW5nIGEgUmVjaXBlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBkYXRlLXJlY2lwZTwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KKyAgICAgICAgICAgIHVwZGF0ZSB5b3VyIHJlY2lwZSB3aXRoIHBhdGNoZXMgdGhhdCByZWZsZWN0IGNoYW5nZXMgeW91IG1ha2UKKyAgICAgICAgICAgIHRvIHRoZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGtub3cgeW91IGFyZSBnb2luZyB0byB3b3JrIG9uIHNvbWUKKyAgICAgICAgICAgIGNvZGUsIHlvdSBjb3VsZCBmaXJzdCB1c2UgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdkZXZ0b29sLW1vZGlmeWluZy1hLXJlY2lwZSc+PGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjb21tYW5kIHRvIGV4dHJhY3QgdGhlIGNvZGUgYW5kIHNldCB1cCB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgQWZ0ZXIgd2hpY2gsIHlvdSBjb3VsZCBtb2RpZnksIGNvbXBpbGUsIGFuZCB0ZXN0IHRoZSBjb2RlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggdGhlIHJlc3VsdHMgYW5kIHlvdSBoYXZlIGNvbW1pdHRlZAorICAgICAgICAgICAgeW91ciBjaGFuZ2VzIHRvIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiB0aGVuCisgICAgICAgICAgICBydW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZGF0ZS1yZWNpcGU8L2ZpbGVuYW1lPiB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICBwYXRjaGVzIGFuZCB1cGRhdGUgdGhlIHJlY2lwZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJZiB5b3UgcnVuIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGRhdGUtcmVjaXBlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdpdGhvdXQgY29tbWl0dGluZyB5b3VyIGNoYW5nZXMsIHRoZSBjb21tYW5kIGlnbm9yZXMgdGhlCisgICAgICAgICAgICBjaGFuZ2VzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPZnRlbiwgeW91IG1pZ2h0IHdhbnQgdG8gYXBwbHkgY3VzdG9taXphdGlvbnMgbWFkZSB0byB5b3VyCisgICAgICAgICAgICBzb2Z0d2FyZSBpbiB5b3VyIG93biBsYXllciByYXRoZXIgdGhhbiBhcHBseSB0aGVtIHRvIHRoZQorICAgICAgICAgICAgb3JpZ2luYWwgcmVjaXBlLgorICAgICAgICAgICAgSWYgc28sIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi1hPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi0tYXBwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgIG9wdGlvbiB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGRhdGUtcmVjaXBlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICBUaGVzZSBvcHRpb25zIGFsbG93IHlvdSB0byBzcGVjaWZ5IHRoZSBsYXllciBpbnRvIHdoaWNoIHRvCisgICAgICAgICAgICB3cml0ZSBhbiBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+IC1hIDxyZXBsYWNlYWJsZT5iYXNlLWxheWVyLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGlzIGNyZWF0ZWQgYXQgdGhlCisgICAgICAgICAgICBhcHByb3ByaWF0ZSBwYXRoIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGxheWVyIGRpcmVjdG9yeSwgd2hpY2gKKyAgICAgICAgICAgIG1heSBvciBtYXkgbm90IGJlIGluIHlvdXIgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgIElmIGFuIGFwcGVuZCBmaWxlIGFscmVhZHkgZXhpc3RzLCB0aGUgY29tbWFuZCB1cGRhdGVzIGl0CisgICAgICAgICAgICBhcHByb3ByaWF0ZWx5LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtY2hlY2tpbmctb24tdGhlLXVwZ3JhZGUtc3RhdHVzLW9mLWEtcmVjaXBlJz4KKyAgICAgICAgPHRpdGxlPkNoZWNraW5nIG9uIHRoZSBVcGdyYWRlIFN0YXR1cyBvZiBhIFJlY2lwZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVcHN0cmVhbSByZWNpcGVzIGNoYW5nZSBvdmVyIHRpbWUuCisgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBmaW5kIHRoYXQgeW91IG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHlvdQorICAgICAgICAgICAgY2FuIHVwZ3JhZGUgYSByZWNpcGUgdG8gYSBuZXdlciB2ZXJzaW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBjaGVjayBvbiB0aGUgdXBncmFkZSBzdGF0dXMgb2YgYSByZWNpcGUsIHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGNoZWNrLXVwZ3JhZGUtc3RhdHVzPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kIGRpc3BsYXlzIGEgdGFibGUgb2YgeW91ciBjdXJyZW50IHJlY2lwZSB2ZXJzaW9ucywKKyAgICAgICAgICAgIHRoZSBsYXRlc3QgdXBzdHJlYW0gdmVyc2lvbnMsIHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSByZWNpcGUncworICAgICAgICAgICAgbWFpbnRhaW5lciwgYW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgY29tbWl0IGhhc2gKKyAgICAgICAgICAgIHN0cmluZ3MgYW5kIHJlYXNvbnMgeW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIHVwZ3JhZGUgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tk9URVM6PC90aXRsZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIDxmaWxlbmFtZT5vZS1jb3JlPC9maWxlbmFtZT4gbGF5ZXIsIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lcnMgY29tZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMnPjxmaWxlbmFtZT5tYWludGFpbmVycy5pbmM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSByZWNpcGUgaXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2dpdC1mZXRjaGVyJz5HaXQgZmV0Y2hlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIHRhcmJhbGwsIHRoZSBjb21taXQgaGFzaCBwb2ludHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQgdGhhdCBtYXRjaGVzIHRoZSByZWNpcGUncyBsYXRlc3QgdmVyc2lvbiB0YWcuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgd2l0aCBhbGwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kcywgeW91IGNhbiBnZXQKKyAgICAgICAgICAgIGhlbHAgb24gdGhlIGluZGl2aWR1YWwgY29tbWFuZDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGNoZWNrLXVwZ3JhZGUtc3RhdHVzIC1oCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIHVzYWdlOiBkZXZ0b29sIGNoZWNrLXVwZ3JhZGUtc3RhdHVzIFstaF0gWy0tYWxsXSBbcmVjaXBlIFtyZWNpcGUgLi4uXV0KKworICAgICBQcmludHMgYSB0YWJsZSBvZiByZWNpcGVzIHRvZ2V0aGVyIHdpdGggdmVyc2lvbnMgY3VycmVudGx5IHByb3ZpZGVkIGJ5CisgICAgIHJlY2lwZXMsIGFuZCBsYXRlc3QgdXBzdHJlYW0gdmVyc2lvbnMsIHdoZW4gdGhlcmUgaXMgYSBsYXRlciB2ZXJzaW9uIGF2YWlsYWJsZQorCisgICAgIGFyZ3VtZW50czoKKyAgICAgICByZWNpcGUgICAgICBOYW1lIG9mIHRoZSByZWNpcGUgdG8gcmVwb3J0IChvbWl0IHRvIHJlcG9ydCB1cGdyYWRlIGluZm8gZm9yCisgICAgICAgICAgICAgICAgICAgYWxsIHJlY2lwZXMpCisKKyAgICAgb3B0aW9uczoKKyAgICAgIC1oLCAtLWhlbHAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAtLWFsbCwgLWEgICBTaG93IGFsbCByZWNpcGVzLCBub3QganVzdCByZWNpcGVzIG5lZWRpbmcgdXBncmFkZQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVbmxlc3MgeW91IHByb3ZpZGUgYSBzcGVjaWZpYyByZWNpcGUgbmFtZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgdGhlIGNvbW1hbmQgY2hlY2tzIGFsbCByZWNpcGVzIGluIGFsbCBjb25maWd1cmVkIGxheWVycy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgcGFydGlhbCBleGFtcGxlIHRhYmxlIHRoYXQgcmVwb3J0cyBvbiBhbGwgdGhlCisgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgTm90aWNlIHRoZSByZXBvcnRlZCByZWFzb24gZm9yIG5vdCB1cGdyYWRpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1wYXNzd2Q8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHdoaWxlIGEgbmV3IHZlcnNpb24gaXMgYXZhaWxhYmxlIHVwc3RyZWFtLAorICAgICAgICAgICAgeW91IGRvIG5vdCB3YW50IHRvIHVzZSBpdCBiZWNhdXNlIHRoZSBkZXBlbmRlbmN5IG9uCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y2RlYmNvbmY8L2ZpbGVuYW1lPiBpcyBub3QgZWFzaWx5IHNhdGlzZmllZC4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFdoZW4gYSByZWFzb24gZm9yIG5vdCB1cGdyYWRpbmcgZGlzcGxheXMsIHRoZSByZWFzb24gaXMKKyAgICAgICAgICAgICAgICB1c3VhbGx5IHdyaXR0ZW4gaW50byB0aGUgcmVjaXBlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUNJUEVfTk9fVVBEQVRFX1JFQVNPTjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1wYXNzd2QvYmFzZS1wYXNzd2RfMy41LjI5LmJiJz48ZmlsZW5hbWU+YmFzZS1wYXNzd2QuYmI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgcmVjaXBlIGZvciBhbiBleGFtcGxlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgY2hlY2stdXBncmFkZS1zdGF0dXMKKyAgICAgICAgIC4uLgorICAgICAgICAgTk9URTogYWNwaWQgICAgICAgICAgICAgICAgICAgICAyLjAuMzAgICAgICAgICAgMi4wLjMxCisgICAgIFJvc3MgQnVydG9uICZsdDtyb3NzLmJ1cnRvbkBpbnRlbC5jb20mZ3Q7CisgICAgICAgICBOT1RFOiB1LWJvb3QtZnctdXRpbHMgICAgICAgICAgIDIwMTguMTEgICAgICAgICAyMDE5LjAxCisgICAgIE1hcmVrIFZhc3V0ICZsdDttYXJlay52YXN1dEBnbWFpbC5jb20mZ3Q7CisgICAgIGQzNjg5MjY3ZjkyYzU5NTZlMDljYzdkMWJhYTQ3MDAxNDE2NjJiZmYKKyAgICAgICAgIE5PVEU6IHUtYm9vdC10b29scyAgICAgICAgICAgICAgMjAxOC4xMSAgICAgICAgIDIwMTkuMDEKKyAgICAgTWFyZWsgVmFzdXQgJmx0O21hcmVrLnZhc3V0QGdtYWlsLmNvbSZndDsKKyAgICAgZDM2ODkyNjdmOTJjNTk1NmUwOWNjN2QxYmFhNDcwMDE0MTY2MmJmZgorICAgICAgICAgIC4KKyAgICAgICAgICAuCisgICAgICAgICAgLgorICAgICAgICAgTk9URTogYmFzZS1wYXNzd2QgICAgICAgICAgICAgICAzLjUuMjkgICAgICAgICAgMy41LjQ1CisgICAgIEFudWogTWl0dGFsICZsdDthbnVqLm1pdHRhbEBpbnRlbC5jb20mZ3Q7ICBjYW5ub3QgYmUgdXBkYXRlZCBkdWUgdG86IFZlcnNpb24KKyAgICAgMy41LjM4IHJlcXVpcmVzIGNkZWJjb25mIGZvciB1cGRhdGUtcGFzc3dkIHV0aWxpdHkKKyAgICAgICAgIE5PVEU6IGJ1c3lib3ggICAgICAgICAgICAgICAgICAgMS4yOS4yICAgICAgICAgIDEuMzAuMAorICAgICBBbmRyZWogVmFsZWsgJmx0O2FuZHJlai52YWxla0BzaWVtZW5zLmNvbSZndDsKKyAgICAgICAgIE5PVEU6IGRidXMtdGVzdCAgICAgICAgICAgICAgICAgMS4xMi4xMCAgICAgICAgIDEuMTIuMTIKKyAgICAgQ2hlbiBRaSAmbHQ7UWkuQ2hlbkB3aW5kcml2ZXIuY29tJmd0OworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtdXBncmFkaW5nLWEtcmVjaXBlJz4KKyAgICAgICAgPHRpdGxlPlVwZ3JhZGluZyBhIFJlY2lwZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBzb2Z0d2FyZSBtYXR1cmVzLCB1cHN0cmVhbSByZWNpcGVzIGFyZSB1cGdyYWRlZCB0byBuZXdlcgorICAgICAgICAgICAgdmVyc2lvbnMuCisgICAgICAgICAgICBBcyBhIGRldmVsb3BlciwgeW91IG5lZWQgdG8ga2VlcCB5b3VyIGxvY2FsIHJlY2lwZXMgdXAtdG8tZGF0ZQorICAgICAgICAgICAgd2l0aCB0aGUgdXBzdHJlYW0gdmVyc2lvbiByZWxlYXNlcy4KKyAgICAgICAgICAgIFNldmVyYWwgbWV0aG9kcyBleGlzdCBieSB3aGljaCB5b3UgY2FuIHVwZ3JhZGUgcmVjaXBlcy4KKyAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBhYm91dCB0aGVtIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dzLXVwZ3JhZGluZy1yZWNpcGVzJz5VcGdyYWRpbmcgUmVjaXBlczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gb3ZlcnZpZXdzIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgeW91IHVwZ3JhZGUgYSByZWNpcGUsIHlvdSBjYW4gY2hlY2sgb24gaXRzIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICBzdGF0dXMuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZ0b29sLWNoZWNraW5nLW9uLXRoZS11cGdyYWRlLXN0YXR1cy1vZi1hLXJlY2lwZSc+Q2hlY2tpbmcgb24gdGhlIFVwZ3JhZGUgU3RhdHVzIG9mIGEgUmVjaXBlPC9saW5rPiIKKyAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICB1cGdyYWRlcyBhbiBleGlzdGluZyByZWNpcGUgdG8gYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgcmVjaXBlIHVwc3RyZWFtLgorICAgICAgICAgICAgVGhlIGNvbW1hbmQgcHV0cyB0aGUgdXBncmFkZWQgcmVjaXBlIGZpbGUgYWxvbmcgd2l0aCBhbnkgYXNzb2NpYXRlZAorICAgICAgICAgICAgZmlsZXMgaW50byBhICJ3b3Jrc3BhY2UiIGFuZCwgaWYgbmVjZXNzYXJ5LCBleHRyYWN0cyB0aGUgc291cmNlCisgICAgICAgICAgICB0cmVlIHRvIGEgc3BlY2lmaWVkIGxvY2F0aW9uLgorICAgICAgICAgICAgRHVyaW5nIHRoZSB1cGdyYWRlLCBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjaXBlIGFyZQorICAgICAgICAgICAgcmViYXNlZCBvciBhZGRlZCBhcyBuZWVkZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQsCisgICAgICAgICAgICB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZSBvZiB0aGUgcmVjaXBlIChpLmUuIG5vIHZlcnNpb24sCisgICAgICAgICAgICBwYXRocywgb3IgZXh0ZW5zaW9ucyksIGFuZCB5b3UgbXVzdCBzdXBwbHkgdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgdG8gd2hpY2ggeW91IHdhbnQgdGhlIHNvdXJjZSBleHRyYWN0ZWQuCisgICAgICAgICAgICBBZGRpdGlvbmFsIGNvbW1hbmQgb3B0aW9ucyBsZXQgeW91IGNvbnRyb2wgdGhpbmdzIHN1Y2ggYXMKKyAgICAgICAgICAgIHRoZSB2ZXJzaW9uIG51bWJlciB0byB3aGljaCB5b3Ugd2FudCB0byB1cGdyYWRlIChpLmUuIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4pLAorICAgICAgICAgICAgdGhlIHNvdXJjZSByZXZpc2lvbiB0byB3aGljaCB5b3Ugd2FudCB0byB1cGdyYWRlIChpLmUuIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPiksCisgICAgICAgICAgICB3aGV0aGVyIG9yIG5vdCB0byBhcHBseSBwYXRjaGVzLCBhbmQgc28gZm9ydGguCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIG9uIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdvcmtmbG93IGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1kZXZ0b29sLXVzZS1kZXZ0b29sLXVwZ3JhZGUtdG8tY3JlYXRlLWEtdmVyc2lvbi1vZi10aGUtcmVjaXBlLXRoYXQtc3VwcG9ydHMtYS1uZXdlci12ZXJzaW9uLW9mLXRoZS1zb2Z0d2FyZSc+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byBDcmVhdGUgYSBWZXJzaW9uIG9mIHRoZSBSZWNpcGUgdGhhdCBTdXBwb3J0cyBhIE5ld2VyIFZlcnNpb24gb2YgdGhlIFNvZnR3YXJlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dzLXVzaW5nLWRldnRvb2wtdXBncmFkZSc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXJlc2V0dGluZy1hLXJlY2lwZSc+CisgICAgICAgIDx0aXRsZT5SZXNldHRpbmcgYSBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gcmVtb3ZlIGEKKyAgICAgICAgICAgIHJlY2lwZSBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gKGUuZy4gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlKSBmcm9tIHRoZSB3b3Jrc3BhY2UgbGF5ZXIuCisgICAgICAgICAgICBSZWFsaXplIHRoYXQgdGhpcyBjb21tYW5kIGRlbGV0ZXMgdGhlIHJlY2lwZSBhbmQgdGhlCisgICAgICAgICAgICBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kIGRvZXMgbm90IHBoeXNpY2FsbHkgbW92ZSB0aGVtIGZvciB5b3UuCisgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IGJlIHN1cmUgdG8gcGh5c2ljYWxseSByZWxvY2F0ZSB5b3VyCisgICAgICAgICAgICB1cGRhdGVkIHJlY2lwZSBhbmQgdGhlIGFwcGVuZCBmaWxlIG91dHNpZGUgb2YgdGhlIHdvcmtzcGFjZQorICAgICAgICAgICAgbGF5ZXIgYmVmb3JlIHJ1bm5pbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHJlc2V0PC9maWxlbmFtZT4KKyAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+IGNvbW1hbmQgZGV0ZWN0cyB0aGF0CisgICAgICAgICAgICB0aGUgcmVjaXBlIG9yIHRoZSBhcHBlbmQgZmlsZXMgaGF2ZSBiZWVuIG1vZGlmaWVkLCB0aGUKKyAgICAgICAgICAgIGNvbW1hbmQgcHJlc2VydmVzIHRoZSBtb2RpZmllZCBmaWxlcyBpbiBhIHNlcGFyYXRlICJhdHRpYyIKKyAgICAgICAgICAgIHN1YmRpcmVjdG9yeSB1bmRlciB0aGUgd29ya3NwYWNlIGxheWVyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCByZXNldHMgdGhlIHdvcmtzcGFjZSBkaXJlY3RvcnkgdGhhdAorICAgICAgICAgICAgY29udGFpbnMgdGhlIDxmaWxlbmFtZT5tdHI8L2ZpbGVuYW1lPiByZWNpcGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCByZXNldCBtdHIKKyAgICAgTk9URTogQ2xlYW5pbmcgc3lzcm9vdCBmb3IgcmVjaXBlIG10ci4uLgorICAgICBOT1RFOiBMZWF2aW5nIHNvdXJjZSB0cmVlIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbXRyIGFzLWlzOyBpZiB5b3Ugbm8KKyAgICAgICAgbG9uZ2VyIG5lZWQgaXQgdGhlbiBwbGVhc2UgZGVsZXRlIGl0IG1hbnVhbGx5CisgICAgICQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLWJ1aWxkaW5nLXlvdXItcmVjaXBlJz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFlvdXIgUmVjaXBlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGJ1aWxkIHlvdXIKKyAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IGNvbW1hbmQgaXMgZXF1aXZhbGVudCB0bworICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gY29tbWFuZCwKKyAgICAgICAgICAgIHlvdSBtdXN0IHN1cHBseSB0aGUgcm9vdCBuYW1lIG9mIHRoZSByZWNpcGUgKGkuZS4gZG8gbm90IHByb3ZpZGUKKyAgICAgICAgICAgIHZlcnNpb25zLCBwYXRocywgb3IgZXh0ZW5zaW9ucykuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBlaXRoZXIgdGhlICItcyIgb3IgdGhlICItLWRpc2FibGUtcGFyYWxsZWwtbWFrZSIKKyAgICAgICAgICAgIG9wdGlvbnMgdG8gZGlzYWJsZSBwYXJhbGxlbCBtYWtlcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZGV2dG9vbC1idWlsZGluZy15b3VyLWltYWdlJz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFlvdXIgSW1hZ2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIHRvIGJ1aWxkIGFuIGltYWdlLCBleHRlbmRpbmcgaXQgdG8gaW5jbHVkZSBwYWNrYWdlcyBmcm9tCisgICAgICAgICAgICByZWNpcGVzIGluIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICBVc2luZyB0aGlzIGNvbW1hbmQgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgYW4gaW1hZ2UgdGhhdAorICAgICAgICAgICAgcmVhZHkgZm9yIGltbWVkaWF0ZSBkZXBsb3ltZW50IG9udG8gYSBkZXZpY2UgZm9yIHRlc3RpbmcuCisgICAgICAgICAgICBGb3IgcHJvcGVyIGludGVncmF0aW9uIGludG8gYSBmaW5hbCBpbWFnZSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgIGVkaXQgeW91ciBjdXN0b20gaW1hZ2UgcmVjaXBlIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29tbWFuZCwgeW91IG11c3Qgc3VwcGx5IHRoZSBuYW1lIG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBoYXMgbm8gY29tbWFuZCBsaW5lIG9wdGlvbnM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZC1pbWFnZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtZGVwbG95aW5nLXlvdXItc29mdHdhcmUtb24tdGhlLXRhcmdldC1tYWNoaW5lJz4KKyAgICAgICAgPHRpdGxlPkRlcGxveWluZyBZb3VyIFNvZnR3YXJlIG9uIHRoZSBUYXJnZXQgTWFjaGluZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICBkZXBsb3kgdGhlIHJlY2lwZSdzIGJ1aWxkIG91dHB1dCB0byB0aGUgbGl2ZSB0YXJnZXQgbWFjaGluZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Jm5ic3A7PHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIHRoZSBhZGRyZXNzIG9mIHRoZQorICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUsIHdoaWNoIG11c3QgYmUgcnVubmluZyBhbiBTU0ggc2VydmVyIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+dXNlckBob3N0bmFtZVs6ZGVzdGRpcl08L2ZpbGVuYW1lPikuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBkZXBsb3lzIGFsbCBmaWxlcyBpbnN0YWxsZWQgZHVyaW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgRnVydGhlcm1vcmUsIHlvdSBkbyBub3QgbmVlZCB0byBoYXZlIHBhY2thZ2UgbWFuYWdlbWVudCBlbmFibGVkCisgICAgICAgICAgICB3aXRoaW4gdGhlIHRhcmdldCBtYWNoaW5lLgorICAgICAgICAgICAgSWYgeW91IGRvLCB0aGUgcGFja2FnZSBtYW5hZ2VyIGlzIGJ5cGFzc2VkLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBpcyBmb3IgZGV2ZWxvcG1lbnQgb25seS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBuZXZlciB1c2UgaXQgdG8gdXBkYXRlIGFuIGltYWdlIHRoYXQgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHByb2R1Y3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21lIGNvbmRpdGlvbnMgZXhpc3QgdGhhdCBjb3VsZCBwcmV2ZW50IGEgZGVwbG95ZWQgYXBwbGljYXRpb24KKyAgICAgICAgICAgIGZyb20gYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICBXaGVuIGJvdGggb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGV4aXN0LCB5b3VyIGFwcGxpY2F0aW9uIGhhcworICAgICAgICAgICAgdGhlIHBvdGVudGlhbCB0byBub3QgYmVoYXZlIGNvcnJlY3RseSB3aGVuIHJ1biBvbiB0aGUgdGFyZ2V0OgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBhcmUgZGVwbG95aW5nIGEgbmV3IGFwcGxpY2F0aW9uIHRvIHRoZSB0YXJnZXQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgeW91IHVzZWQgdG8gYnVpbGQgdGhlIGFwcGxpY2F0aW9uIGhhZAorICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bHkgZGVmaW5lZCBydW50aW1lIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGRvZXMgbm90IHBoeXNpY2FsbHkgaGF2ZSB0aGUgcGFja2FnZXMgb24gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIGRlcGVuZHMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgSWYgYm90aCBvZiB0aGVzZSBjb25kaXRpb25zIGV4aXN0LCB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgbm90CisgICAgICAgICAgICBiZWhhdmUgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIG1pc2JlaGF2aW9yIGlzIGJlY2F1c2UgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZCBkb2VzIG5vdCBkZXBsb3kKKyAgICAgICAgICAgIHRoZSBwYWNrYWdlcyAoZS5nLiBsaWJyYXJpZXMpIG9uIHdoaWNoIHlvdXIgbmV3IGFwcGxpY2F0aW9uCisgICAgICAgICAgICBkZXBlbmRzLgorICAgICAgICAgICAgVGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcGFja2FnZXMgYXJlIGFscmVhZHkgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgd2hlbiBhIHJ1bnRpbWUgY2FsbCBpcyBtYWRlIGluIHRoZSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgZm9yIGEgZGVwZW5kZW50IGZ1bmN0aW9uIChlLmcuIGEgbGlicmFyeSBjYWxsKSwgdGhlIGZ1bmN0aW9uCisgICAgICAgICAgICBjYW5ub3QgYmUgZm91bmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgbG9jYWwgdG8gdGhlIHRhcmdldCwgeW91CisgICAgICAgICAgICBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgcGFja2FnZXMgYXJlIHByZS1kZXBsb3llZCAoaW5zdGFsbGVkKQorICAgICAgICAgICAgb24gdGhlIHRhcmdldCBiZWZvcmUgYXR0ZW1wdGluZyB0byBydW4geW91ciBhcHBsaWNhdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXJlbW92aW5nLXlvdXItc29mdHdhcmUtZnJvbS10aGUtdGFyZ2V0LW1hY2hpbmUnPgorICAgICAgICA8dGl0bGU+UmVtb3ZpbmcgWW91ciBTb2Z0d2FyZSBmcm9tIHRoZSBUYXJnZXQgTWFjaGluZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KKyAgICAgICAgICAgIHJlbW92ZSBkZXBsb3llZCBidWlsZCBvdXRwdXQgZnJvbSB0aGUgdGFyZ2V0IG1hY2hpbmUuCisgICAgICAgICAgICBGb3IgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KKyAgICAgICAgICAgIHdvcmssIHlvdSBtdXN0IGhhdmUgcHJldmlvdXNseSB1c2VkIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZGV2dG9vbC1kZXBsb3lpbmcteW91ci1zb2Z0d2FyZS1vbi10aGUtdGFyZ2V0LW1hY2hpbmUnPjxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Jm5ic3A7PHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIHRoZSBhZGRyZXNzIG9mIHRoZQorICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUsIHdoaWNoIG11c3QgYmUgcnVubmluZyBhbiBTU0ggc2VydmVyIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+dXNlckBob3N0bmFtZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLWNyZWF0aW5nLXRoZS13b3Jrc3BhY2UnPgorICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFdvcmtzcGFjZSBMYXllciBpbiBhbiBBbHRlcm5hdGl2ZSBMb2NhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICBjcmVhdGUgYSBuZXcgd29ya3NwYWNlIGxheWVyIGluIHlvdXIKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIG5ldyB3b3Jrc3BhY2UgbGF5ZXIsIGl0IGlzIHBvcHVsYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgYW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb25seS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYSBuZXcgd29ya3NwYWNlIGxheWVyIGluIHlvdXIKKyAgICAgICAgICAgIGN1cnJlbnQgd29ya2luZyBhbmQgYnkgZGVmYXVsdCBuYW1lcyB0aGUgd29ya3NwYWNlIGxheWVyCisgICAgICAgICAgICAid29ya3NwYWNlIjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2UKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgYSB3b3Jrc3BhY2UgbGF5ZXIgYW55d2hlcmUgYnkgc3VwcGx5aW5nCisgICAgICAgICAgICBhIHBhdGhuYW1lIHdpdGggdGhlIGNvbW1hbmQuCisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgY3JlYXRlcyBhIG5ldyB3b3Jrc3BhY2UgbGF5ZXIgbmFtZWQKKyAgICAgICAgICAgICJuZXctd29ya3NwYWNlIjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2UgL2hvbWUvc2NvdHRyaWYvbmV3LXdvcmtzcGFjZQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtZ2V0LXRoZS1zdGF0dXMtb2YtdGhlLXJlY2lwZXMtaW4teW91ci13b3Jrc3BhY2UnPgorICAgICAgICA8dGl0bGU+R2V0IHRoZSBTdGF0dXMgb2YgdGhlIFJlY2lwZXMgaW4gWW91ciBXb3Jrc3BhY2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzdGF0dXM8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICBsaXN0IHRoZSByZWNpcGVzIGN1cnJlbnRseSBpbiB5b3VyIHdvcmtzcGFjZS4KKyAgICAgICAgICAgIEluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBwYXRocyB0byB0aGVpciByZXNwZWN0aXZlCisgICAgICAgICAgICBleHRlcm5hbCBzb3VyY2UgdHJlZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzdGF0dXM8L2ZpbGVuYW1lPiBjb21tYW5kIGhhcyBubworICAgICAgICAgICAgY29tbWFuZC1saW5lIG9wdGlvbnM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyBzYW1wbGUgb3V0cHV0IGFmdGVyIHVzaW5nCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdkZXZ0b29sLWFkZGluZy1hLW5ldy1yZWNpcGUtdG8tdGhlLXdvcmtzcGFjZSc+PGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0byBjcmVhdGUgYW5kIGFkZCB0aGUgPGZpbGVuYW1lPm10cl8wLjg2LmJiPC9maWxlbmFtZT4gcmVjaXBlCisgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPndvcmtzcGFjZTwvZmlsZW5hbWU+IGRpcmVjdG9yeToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHN0YXR1cworICAgICBtdHI6IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbXRyICgvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3dvcmtzcGFjZS9yZWNpcGVzL210ci9tdHJfMC44Ni5iYikKKyAgICAgJAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldnRvb2wtc2VhcmNoLWZvci1hdmFpbGFibGUtdGFyZ2V0LXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+U2VhcmNoIGZvciBBdmFpbGFibGUgVGFyZ2V0IFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzZWFyY2g8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICBzZWFyY2ggZm9yIGF2YWlsYWJsZSB0YXJnZXQgcmVjaXBlcy4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kIG1hdGNoZXMgdGhlIHJlY2lwZSBuYW1lLCBwYWNrYWdlIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwgYW5kIGluc3RhbGxlZCBmaWxlcy4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kIGRpc3BsYXlzIHRoZSByZWNpcGUgbmFtZSBhcyBhIHJlc3VsdCBvZiBhCisgICAgICAgICAgICBtYXRjaC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzZWFyY2g8L2ZpbGVuYW1lPiBjb21tYW5kLAorICAgICAgICAgICAgeW91IG11c3Qgc3VwcGx5IGEgPHJlcGxhY2VhYmxlPmtleXdvcmQ8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kIHVzZXMgdGhlIDxyZXBsYWNlYWJsZT5rZXl3b3JkPC9yZXBsYWNlYWJsZT4gd2hlbgorICAgICAgICAgICAgc2VhcmNoaW5nIGZvciBhIG1hdGNoLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnJzdAppbmRleCA2MGQ5MDVkLi5hZTVhMGUzIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqCiBGZWF0dXJlcwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNhYjVlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKQEAgLTAsMCArMSw0NjEgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ncmVmLWZlYXR1cmVzJz4KKyAgICA8dGl0bGU+RmVhdHVyZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBhIHJlZmVyZW5jZSBvZiBzaGlwcGVkIG1hY2hpbmUgYW5kIGRpc3RybyBmZWF0dXJlcworICAgICAgICB5b3UgY2FuIGluY2x1ZGUgYXMgcGFydCBvZiB5b3VyIGltYWdlLCBhIHJlZmVyZW5jZSBvbiBpbWFnZSBmZWF0dXJlcyB5b3UgY2FuCisgICAgICAgIHNlbGVjdCwgYW5kIGEgcmVmZXJlbmNlIG9uIGZlYXR1cmUgYmFja2ZpbGxpbmcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZlYXR1cmVzIHByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIHdvcmtpbmcgb3V0IHdoaWNoIHBhY2thZ2VzCisgICAgICAgIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGltYWdlcy4KKyAgICAgICAgRGlzdHJpYnV0aW9ucyBjYW4gc2VsZWN0IHdoaWNoIGZlYXR1cmVzIHRoZXkgd2FudCB0byBzdXBwb3J0IHRocm91Z2ggdGhlCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz5ESVNUUk9fRkVBVFVSRVM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBvciBhcHBlbmRlZCB0byBpbiBhIGRpc3RyaWJ1dGlvbidzIGNvbmZpZ3VyYXRpb24gZmlsZSBzdWNoIGFzCisgICAgICAgIDxmaWxlbmFtZT5wb2t5LmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgPGZpbGVuYW1lPnBva3ktdGlueS5jb25mPC9maWxlbmFtZT4sCisgICAgICAgIDxmaWxlbmFtZT5wb2t5LWxzYi5jb25mPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoLgorICAgICAgICBNYWNoaW5lIGZlYXR1cmVzIGFyZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+TUFDSElORV9GRUFUVVJFUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQKKyAgICAgICAgc3BlY2lmaWVzIHRoZSBoYXJkd2FyZSBmZWF0dXJlcyBmb3IgYSBnaXZlbiBtYWNoaW5lLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGVzZSB0d28gdmFyaWFibGVzIGNvbWJpbmUgdG8gd29yayBvdXQgd2hpY2gga2VybmVsIG1vZHVsZXMsCisgICAgICAgIHV0aWxpdGllcywgYW5kIG90aGVyIHBhY2thZ2VzIHRvIGluY2x1ZGUuCisgICAgICAgIEEgZ2l2ZW4gZGlzdHJpYnV0aW9uIGNhbiBzdXBwb3J0IGEgc2VsZWN0ZWQgc3Vic2V0IG9mIGZlYXR1cmVzIHNvIHNvbWUgbWFjaGluZSBmZWF0dXJlcyBtaWdodCBub3QKKyAgICAgICAgYmUgaW5jbHVkZWQgaWYgdGhlIGRpc3RyaWJ1dGlvbiBpdHNlbGYgZG9lcyBub3Qgc3VwcG9ydCB0aGVtLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBPbmUgbWV0aG9kIHlvdSBjYW4gdXNlIHRvIGRldGVybWluZSB3aGljaCByZWNpcGVzIGFyZSBjaGVja2luZyB0byBzZWUgaWYgYQorICAgICAgICBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgY29udGFpbmVkIG9yIG5vdCBpcyB0byA8ZmlsZW5hbWU+Z3JlcDwvZmlsZW5hbWU+IHRocm91Z2gKKyAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KKyAgICAgICAgZm9yIHRoZSBmZWF0dXJlLgorICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBkaXNjb3ZlcnMgdGhlIHJlY2lwZXMgd2hvc2UgYnVpbGQgaXMgcG90ZW50aWFsbHkKKyAgICAgICAgY2hhbmdlZCBiYXNlZCBvbiBhIGdpdmVuIGZlYXR1cmU6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBwb2t5CisgICAgICQgZ2l0IGdyZXAgJ2NvbnRhaW5zLipNQUNISU5FX0ZFQVRVUkVTLio8cmVwbGFjZWFibGU+ZmVhdHVyZTwvcmVwbGFjZWFibGU+JworICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi1mZWF0dXJlcy1tYWNoaW5lJz4KKyAgICAgICAgPHRpdGxlPk1hY2hpbmUgRmVhdHVyZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGl0ZW1zIGJlbG93IGFyZSBmZWF0dXJlcyB5b3UgY2FuIHVzZSB3aXRoCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICBGZWF0dXJlcyBkbyBub3QgaGF2ZSBhIG9uZS10by1vbmUgY29ycmVzcG9uZGVuY2UgdG8gcGFja2FnZXMsIGFuZCB0aGV5IGNhbgorICAgICAgICAgICAgZ28gYmV5b25kIHNpbXBseSBjb250cm9sbGluZyB0aGUgaW5zdGFsbGF0aW9uIG9mIGEgcGFja2FnZSBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgIFNvbWV0aW1lcyBhIGZlYXR1cmUgY2FuIGluZmx1ZW5jZSBob3cgY2VydGFpbiByZWNpcGVzIGFyZSBidWlsdC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGZlYXR1cmUgbWlnaHQgZGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyZSBvcHRpb24KKyAgICAgICAgICAgIGlzIHNwZWNpZmllZCB3aXRoaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrIGZvciBhIHBhcnRpY3VsYXIgcmVjaXBlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGZlYXR1cmUgbGlzdCBvbmx5IHJlcHJlc2VudHMgZmVhdHVyZXMgYXMgc2hpcHBlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IG1ldGFkYXRhOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmFjcGk6PC9lbXBoYXNpcz4gSGFyZHdhcmUgaGFzIEFDUEkgKHg4Ni94ODZfNjQgb25seSkKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5hbHNhOjwvZW1waGFzaXM+IEhhcmR3YXJlIGhhcyBBTFNBIGF1ZGlvIGRyaXZlcnMKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5hcG06PC9lbXBoYXNpcz4gSGFyZHdhcmUgdXNlcyBBUE0gKG9yIEFQTSBlbXVsYXRpb24pCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ymx1ZXRvb3RoOjwvZW1waGFzaXM+IEhhcmR3YXJlIGhhcyBpbnRlZ3JhdGVkIEJUCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZWZpOjwvZW1waGFzaXM+IFN1cHBvcnQgZm9yIGJvb3RpbmcgdGhyb3VnaCBFRkkKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5leHQyOjwvZW1waGFzaXM+IEhhcmR3YXJlIEhERCBvciBNaWNyb2RyaXZlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+a2V5Ym9hcmQ6PC9lbXBoYXNpcz4gSGFyZHdhcmUgaGFzIGEga2V5Ym9hcmQKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5wY2Jpb3M6PC9lbXBoYXNpcz4gU3VwcG9ydCBmb3IgYm9vdGluZyB0aHJvdWdoIEJJT1MKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5wY2k6PC9lbXBoYXNpcz4gSGFyZHdhcmUgaGFzIGEgUENJIGJ1cworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnBjbWNpYTo8L2VtcGhhc2lzPiBIYXJkd2FyZSBoYXMgUENNQ0lBIG9yIENvbXBhY3RGbGFzaCBzb2NrZXRzCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+cGhvbmU6PC9lbXBoYXNpcz4gTW9iaWxlIHBob25lICh2b2ljZSkgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnF2Z2E6PC9lbXBoYXNpcz4gTWFjaGluZSBoYXMgYSBRVkdBICgzMjB4MjQwKSBkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+cnRjOjwvZW1waGFzaXM+IE1hY2hpbmUgaGFzIGEgUmVhbC1UaW1lIENsb2NrCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c2NyZWVuOjwvZW1waGFzaXM+IEhhcmR3YXJlIGhhcyBhIHNjcmVlbgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnNlcmlhbDo8L2VtcGhhc2lzPiBIYXJkd2FyZSBoYXMgc2VyaWFsIHN1cHBvcnQgKHVzdWFsbHkgUlMyMzIpCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dG91Y2hzY3JlZW46PC9lbXBoYXNpcz4gSGFyZHdhcmUgaGFzIGEgdG91Y2hzY3JlZW4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c2JnYWRnZXQ6PC9lbXBoYXNpcz4gSGFyZHdhcmUgaXMgVVNCIGdhZGdldCBkZXZpY2UgY2FwYWJsZQorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnVzYmhvc3Q6PC9lbXBoYXNpcz4gSGFyZHdhcmUgaXMgVVNCIEhvc3QgY2FwYWJsZQorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnZmYXQ6PC9lbXBoYXNpcz4gRkFUIGZpbGUgc3lzdGVtIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz53aWZpOjwvZW1waGFzaXM+IEhhcmR3YXJlIGhhcyBpbnRlZ3JhdGVkIFdpRmkKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtZmVhdHVyZXMtZGlzdHJvJz4KKyAgICAgICAgPHRpdGxlPkRpc3RybyBGZWF0dXJlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgaXRlbXMgYmVsb3cgYXJlIGZlYXR1cmVzIHlvdSBjYW4gdXNlIHdpdGgKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRvIGVuYWJsZSBmZWF0dXJlcyBhY3Jvc3MgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBGZWF0dXJlcyBkbyBub3QgaGF2ZSBhIG9uZS10by1vbmUgY29ycmVzcG9uZGVuY2UgdG8gcGFja2FnZXMsCisgICAgICAgICAgICBhbmQgdGhleSBjYW4gZ28gYmV5b25kIHNpbXBseSBjb250cm9sbGluZyB0aGUgaW5zdGFsbGF0aW9uIG9mIGEKKyAgICAgICAgICAgIHBhY2thZ2Ugb3IgcGFja2FnZXMuCisgICAgICAgICAgICBJbiBtb3N0IGNhc2VzLCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBhIGZlYXR1cmUgdHJhbnNsYXRlcyB0bworICAgICAgICAgICAgdGhlIGFwcHJvcHJpYXRlIG9wdGlvbiBzdXBwbGllZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCBkdXJpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrIGZvciB0aGUgcmVjaXBlcyB0aGF0IG9wdGlvbmFsbHkKKyAgICAgICAgICAgIHN1cHBvcnQgdGhlIGZlYXR1cmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUgZGlzdHJvIGZlYXR1cmVzIGFyZSBhbHNvIG1hY2hpbmUgZmVhdHVyZXMuCisgICAgICAgICAgICBUaGVzZSBzZWxlY3QgZmVhdHVyZXMgbWFrZSBzZW5zZSB0byBiZSBjb250cm9sbGVkIGJvdGggYXQKKyAgICAgICAgICAgIHRoZSBtYWNoaW5lIGFuZCBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBsZXZlbC4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT01CSU5FRF9GRUFUVVJFUyc+PGZpbGVuYW1lPkNPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBsaXN0IG9ubHkgcmVwcmVzZW50cyBmZWF0dXJlcyBhcyBzaGlwcGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgbWV0YWRhdGE6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+YWxzYTo8L2VtcGhhc2lzPiBJbmNsdWRlIEFMU0Egc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAoT1NTIGNvbXBhdGliaWxpdHkga2VybmVsIG1vZHVsZXMgaW5zdGFsbGVkIGlmIGF2YWlsYWJsZSkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+YXBpLWRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBnZW5lcmF0aW9uIG9mIEFQSSBkb2N1bWVudGF0aW9uIGR1cmluZyByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIGRvY3VtZW50YXRpb24gaXMgYWRkZWQgdG8gU0RLIHRhcmJhbGxzCisgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3NkazwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjYWRkaW5nLWFwaS1kb2N1bWVudGF0aW9uLXRvLXRoZS1zdGFuZGFyZC1zZGsnPkFkZGluZyBBUEkgRG9jdW1lbnRhdGlvbiB0byB0aGUgU3RhbmRhcmQgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmJsdWV0b290aDo8L2VtcGhhc2lzPiBJbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIGJsdWV0b290aCBzdXBwb3J0IChpbnRlZ3JhdGVkIEJUIG9ubHkpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y3JhbWZzOjwvZW1waGFzaXM+IEluY2x1ZGUgQ3JhbUZTCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5kaXJlY3RmYjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIERpcmVjdEZCIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZXh0Mjo8L2VtcGhhc2lzPiBJbmNsdWRlIHRvb2xzIGZvcgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0aW5nIGZvciBkZXZpY2VzIHdpdGggaW50ZXJuYWwgSEREL01pY3JvZHJpdmUgZm9yCisgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgZmlsZXMgKGluc3RlYWQgb2YgRmxhc2ggb25seSBkZXZpY2VzKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5pcHNlYzo8L2VtcGhhc2lzPiBJbmNsdWRlIElQU2VjCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5pcHY2OjwvZW1waGFzaXM+IEluY2x1ZGUgSVB2NiBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmtleWJvYXJkOjwvZW1waGFzaXM+IEluY2x1ZGUga2V5Ym9hcmQKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCAoZS5nLiBrZXltYXBzIHdpbGwgYmUgbG9hZGVkIGR1cmluZyBib290KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5sZGNvbmZpZzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIHN1cHBvcnQgZm9yIGxkY29uZmlnIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGQuc28uY29uZjwvZmlsZW5hbWU+IG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+bmZzOjwvZW1waGFzaXM+IEluY2x1ZGUgTkZTIGNsaWVudAorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IChmb3IgbW91bnRpbmcgTkZTIGV4cG9ydHMgb24gZGV2aWNlKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5vcGVuZ2w6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSB0aGUgT3BlbiBHcmFwaGljcyBMaWJyYXJ5LCB3aGljaCBpcyBhCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLWxhbmd1YWdlLCBtdWx0aS1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBwcm9ncmFtbWluZworICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UgdXNlZCBmb3IgcmVuZGVyaW5nIHR3byBhbmQgdGhyZWUtZGltZW5zaW9uYWwKKyAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3MuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5wY2k6PC9lbXBoYXNpcz4gSW5jbHVkZSBQQ0kgYnVzCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5wY21jaWE6PC9lbXBoYXNpcz4gSW5jbHVkZQorICAgICAgICAgICAgICAgICAgICBQQ01DSUEvQ29tcGFjdEZsYXNoIHN1cHBvcnQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5wcHA6PC9lbXBoYXNpcz4gSW5jbHVkZSBQUFAgZGlhbHVwCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5wdGVzdDo8L2VtcGhhc2lzPiBFbmFibGVzIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIHRlc3RzIHdoZXJlIHN1cHBvcnRlZCBieSBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHBhY2thZ2UgdGVzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyBXaXRoIHB0ZXN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnNtYmZzOjwvZW1waGFzaXM+IEluY2x1ZGUgU01CIG5ldHdvcmtzCisgICAgICAgICAgICAgICAgICAgIGNsaWVudCBzdXBwb3J0IChmb3IgbW91bnRpbmcgU2FtYmEvTWljcm9zb2Z0IFdpbmRvd3Mgc2hhcmVzCisgICAgICAgICAgICAgICAgICAgIG9uIGRldmljZSkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5zeXN0ZW1kOjwvZW1waGFzaXM+IEluY2x1ZGUgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyA8ZmlsZW5hbWU+aW5pdDwvZmlsZW5hbWU+IG1hbmFnZXIsIHdoaWNoIGlzIGEgZnVsbAorICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCBvZiBmb3IgPGZpbGVuYW1lPmluaXQ8L2ZpbGVuYW1lPiB3aXRoIHBhcmFsbGVsCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIG9mIHNlcnZpY2VzLCByZWR1Y2VkIHNoZWxsIG92ZXJoZWFkLCBhbmQgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgPGZpbGVuYW1lPmluaXQ8L2ZpbGVuYW1lPiBtYW5hZ2VyIGlzIHVzZWQgYnkgbWFueQorICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb25zLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dXNiZ2FkZ2V0OjwvZW1waGFzaXM+IEluY2x1ZGUgVVNCCisgICAgICAgICAgICAgICAgICAgIEdhZGdldCBEZXZpY2Ugc3VwcG9ydCAoZm9yIFVTQiBuZXR3b3JraW5nL3NlcmlhbC9zdG9yYWdlKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c2Job3N0OjwvZW1waGFzaXM+IEluY2x1ZGUgVVNCIEhvc3QKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCAoYWxsb3dzIHRvIGNvbm5lY3QgZXh0ZXJuYWwga2V5Ym9hcmQsIG1vdXNlLAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBuZXR3b3JrIGV0YykuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c3JtZXJnZTo8L2VtcGhhc2lzPiBNZXJnZXMgdGhlIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2JpbjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+L3NiaW48L2ZpbGVuYW1lPiwgCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vbGliPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+L2xpYjY0PC9maWxlbmFtZT4gICAgICAgCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBjb3VudGVycGFydHMgaW4gdGhlIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3VzcjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0byBwcm92aWRlIGJldHRlciBwYWNrYWdlIAorICAgICAgICAgICAgICAgICAgIGFuZCBhcHBsaWNhdGlvbiBjb21wYXRpYmlsaXR5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+d2F5bGFuZDo8L2VtcGhhc2lzPiBJbmNsdWRlIHRoZQorICAgICAgICAgICAgICAgICAgICBXYXlsYW5kIGRpc3BsYXkgc2VydmVyIHByb3RvY29sIGFuZCB0aGUgbGlicmFyeSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGl0LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+d2lmaTo8L2VtcGhhc2lzPiBJbmNsdWRlIFdpRmkgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAoaW50ZWdyYXRlZCBvbmx5KS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPngxMTo8L2VtcGhhc2lzPiBJbmNsdWRlIHRoZSBYIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICBhbmQgbGlicmFyaWVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLWZlYXR1cmVzLWltYWdlJz4KKyAgICAgICAgPHRpdGxlPkltYWdlIEZlYXR1cmVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjb250ZW50cyBvZiBpbWFnZXMgZ2VuZXJhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICBjYW4gYmUgY29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZXMgdGhhdCB5b3UgdHlwaWNhbGx5IGNvbmZpZ3VyZSBpbiB5b3VyIGltYWdlIHJlY2lwZXMuCisgICAgICAgICAgICBUaHJvdWdoIHRoZXNlIHZhcmlhYmxlcywgeW91IGNhbiBhZGQgc2V2ZXJhbCBkaWZmZXJlbnQKKyAgICAgICAgICAgIHByZWRlZmluZWQgcGFja2FnZXMgc3VjaCBhcyBkZXZlbG9wbWVudCB1dGlsaXRpZXMgb3IgcGFja2FnZXMgd2l0aAorICAgICAgICAgICAgZGVidWcgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGludmVzdGlnYXRlIGFwcGxpY2F0aW9uIHByb2JsZW1zIG9yCisgICAgICAgICAgICBwcm9maWxlIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpbWFnZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGZvciBhbGwgaW1hZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmFsbG93LWVtcHR5LXBhc3N3b3JkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFsbG93cyBEcm9wYmVhciBhbmQgT3BlblNTSCB0byBhY2NlcHQgcm9vdCBsb2dpbnMKKyAgICAgICAgICAgICAgICAgICAgYW5kIGxvZ2lucyBmcm9tIGFjY291bnRzIGhhdmluZyBhbiBlbXB0eSBwYXNzd29yZCBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZGJnLXBrZ3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgZGVidWcgc3ltYm9sIHBhY2thZ2VzIGZvciBhbGwgcGFja2FnZXMgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgIGluIGEgZ2l2ZW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZGVidWctdHdlYWtzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1ha2VzIGFuIGltYWdlIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCAoZS5nLgorICAgICAgICAgICAgICAgICAgICBhbGxvd3Mgcm9vdCBsb2dpbnMgd2l0aG91dCBwYXNzd29yZHMgYW5kIGVuYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgcG9zdC1pbnN0YWxsYXRpb24gbG9nZ2luZykuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgJ2FsbG93LWVtcHR5LXBhc3N3b3JkJywgJ2VtcHR5LXJvb3QtcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICBhbmQgJ3Bvc3QtaW5zdGFsbC1sb2dnaW5nJyBmZWF0dXJlcyBpbiB0aGlzIGxpc3QgZm9yCisgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZGV2LXBrZ3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgZGV2ZWxvcG1lbnQgcGFja2FnZXMgKGhlYWRlcnMgYW5kIGV4dHJhIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgbGlua3MpIGZvciBhbGwgcGFja2FnZXMgaW5zdGFsbGVkIGluIGEgZ2l2ZW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+ZG9jLXBrZ3M6PC9lbXBoYXNpcz4gSW5zdGFsbHMKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBwYWNrYWdlcyBmb3IgYWxsIHBhY2thZ2VzIGluc3RhbGxlZCBpbiBhCisgICAgICAgICAgICAgICAgICAgIGdpdmVuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmVtcHR5LXJvb3QtcGFzc3dvcmQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU2V0cyB0aGUgcm9vdCBwYXNzd29yZCB0byBhbiBlbXB0eSBzdHJpbmcsIHdoaWNoIGFsbG93cworICAgICAgICAgICAgICAgICAgICBsb2dpbnMgd2l0aCBhIGJsYW5rIHBhc3N3b3JkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnBhY2thZ2UtbWFuYWdlbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyBwYWNrYWdlIG1hbmFnZW1lbnQgdG9vbHMgYW5kIHByZXNlcnZlcyB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnBvc3QtaW5zdGFsbC1sb2dnaW5nOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgbG9nZ2luZyBwb3N0aW5zdGFsbCBzY3JpcHQgcnVucyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPi92YXIvbG9nL3Bvc3RpbnN0YWxsLmxvZzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgb24gZmlyc3QgYm9vdCBvZiB0aGUgaW1hZ2Ugb24gdGhlIHRhcmdldCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gbWFrZSB0aGUgPGZpbGVuYW1lPi92YXIvbG9nPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IHBlcnNpc3RlbnQsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1WT0xBVElMRV9MT0dfRElSJz48ZmlsZW5hbWU+Vk9MQVRJTEVfTE9HX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYnkgc2V0dGluZyBpdCB0byAibm8iLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+cHRlc3QtcGtnczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyBwdGVzdCBwYWNrYWdlcyBmb3IgYWxsIHB0ZXN0LWVuYWJsZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5yZWFkLW9ubHktcm9vdGZzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYW4gaW1hZ2Ugd2hvc2Ugcm9vdCBmaWxlc3lzdGVtIGlzIHJlYWQtb25seS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1yZWFkLW9ubHktcm9vdC1maWxlc3lzdGVtJz5DcmVhdGluZyBhIFJlYWQtT25seSBSb290IEZpbGVzeXN0ZW08L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c3BsYXNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgc2hvd2luZyBhIHNwbGFzaCBzY3JlZW4gZHVyaW5nIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgc2NyZWVuIGlzIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4sIHdoaWNoIGRvZXMgYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHByZWZlciB0byB1c2UgYW4gYWx0ZXJuYXRpdmUgc3BsYXNoIHNjcmVlbiBwYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGRvIHNvIGJ5IHNldHRpbmcgdGhlIDxmaWxlbmFtZT5TUExBU0g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBhIGRpZmZlcmVudCBwYWNrYWdlIG5hbWUgKG9yIG5hbWVzKSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGltYWdlIHJlY2lwZSBvciBhdCB0aGUgZGlzdHJvIGNvbmZpZ3VyYXRpb24gbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c3RhdGljZGV2LXBrZ3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgc3RhdGljIGRldmVsb3BtZW50IHBhY2thZ2VzLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGxpYnJhcmllcyAoaS5lLiA8ZmlsZW5hbWU+Ki5hPC9maWxlbmFtZT4gZmlsZXMpLCBmb3IKKyAgICAgICAgICAgICAgICAgICAgYWxsIHBhY2thZ2VzIGluc3RhbGxlZCBpbiBhIGdpdmVuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21lIGltYWdlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgb25seSB3aGVuIHlvdSBpbmhlcml0IHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgVGhlIGN1cnJlbnQgbGlzdCBvZiB0aGVzZSB2YWxpZCBmZWF0dXJlcyBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmh3Y29kZWNzOjwvZW1waGFzaXM+IEluc3RhbGxzCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjb2RlY3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+bmZzLXNlcnZlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyBhbiBORlMgc2VydmVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnBlcmY6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgcHJvZmlsaW5nIHRvb2xzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBlcmY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnN5c3RlbXRhcDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkxUVG5nPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHVzZXItc3BhY2UgdG9vbHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c3NoLXNlcnZlci1kcm9wYmVhcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyB0aGUgRHJvcGJlYXIgbWluaW1hbCBTU0ggc2VydmVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnNzaC1zZXJ2ZXItb3BlbnNzaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyB0aGUgT3BlblNTSCBTU0ggc2VydmVyLCB3aGljaCBpcyBtb3JlCisgICAgICAgICAgICAgICAgICAgIGZ1bGwtZmVhdHVyZWQgdGhhbiBEcm9wYmVhci4KKyAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGlmIGJvdGggdGhlIE9wZW5TU0ggU1NIIHNlcnZlciBhbmQgdGhlIERyb3BiZWFyCisgICAgICAgICAgICAgICAgICAgIG1pbmltYWwgU1NIIHNlcnZlciBhcmUgcHJlc2VudCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgdGhlbiBPcGVuU1NIIHdpbGwgdGFrZQorICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlIGFuZCBEcm9wYmVhciB3aWxsIG5vdCBiZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dG9vbHMtZGVidWc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0cmFjZTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+Z2RiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBHREIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0cmFjaW5nIGFuZCBwcm9maWxpbmcsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUFJPRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz50b29scy1zZGs6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgYSBmdWxsIFNESyB0aGF0IHJ1bnMgb24gdGhlIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz50b29scy10ZXN0YXBwczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyBkZXZpY2UgdGVzdGluZyB0b29scyAoZS5nLiB0b3VjaHNjcmVlbiBkZWJ1Z2dpbmcpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPngxMTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyB0aGUgWCBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+eDExLWJhc2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbHMgdGhlIFggc2VydmVyIHdpdGggYSBtaW5pbWFsIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPngxMS1zYXRvOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluc3RhbGxzIHRoZSBPcGVuZWRIYW5kIFNhdG8gZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtZmVhdHVyZXMtYmFja2ZpbGwnPgorICAgICAgICA8dGl0bGU+RmVhdHVyZSBCYWNrZmlsbGluZzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGV4dGVuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBvciA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0byBjb250cm9sIGZ1bmN0aW9uYWxpdHkgdGhhdCB3YXMgcHJldmlvdXNseSBlbmFibGVkIGFuZCBub3QgYWJsZQorICAgICAgICAgICAgdG8gYmUgZGlzYWJsZWQuCisgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHdlIG5lZWQgdG8gYWRkIGFuCisgICAgICAgICAgICBhZGRpdGlvbmFsIGZlYXR1cmUgaXRlbSB0byBhcHBlYXIgaW4gb25lIG9mIHRoZXNlIHZhcmlhYmxlcywKKyAgICAgICAgICAgIGJ1dCB3ZSBkbyBub3Qgd2FudCB0byBmb3JjZSBkZXZlbG9wZXJzIHdobyBoYXZlIGV4aXN0aW5nIHZhbHVlcworICAgICAgICAgICAgb2YgdGhlIHZhcmlhYmxlcyBpbiB0aGVpciBjb25maWd1cmF0aW9uIHRvIGFkZCB0aGUgbmV3IGZlYXR1cmUKKyAgICAgICAgICAgIGluIG9yZGVyIHRvIHJldGFpbiB0aGUgc2FtZSBvdmVyYWxsIGxldmVsIG9mIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBUaHVzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgYSBtZWNoYW5pc20gdG8KKyAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgImJhY2tmaWxsIiB0aGVzZSBhZGRlZCBmZWF0dXJlcyBpbnRvIGV4aXN0aW5nCisgICAgICAgICAgICBkaXN0cm8gb3IgbWFjaGluZSBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBsaXN0IG9mIGZlYXR1cmVzIGZvciB3aGljaCB0aGlzIGlzIGRvbmUgYnkKKyAgICAgICAgICAgIGZpbmRpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTEwnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZXMgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVjYXVzZSBzdWNoIGZlYXR1cmVzIGFyZSBiYWNrZmlsbGVkIGJ5IGRlZmF1bHQgaW50byBhbGwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGFzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBkZXZlbG9wZXJzCisgICAgICAgICAgICB3aG8gd2lzaCB0byBkaXNhYmxlIHRoZSBuZXcgZmVhdHVyZXMgbmVlZCB0byBiZSBhYmxlIHRvIHNlbGVjdGl2ZWx5CisgICAgICAgICAgICBwcmV2ZW50IHRoZSBiYWNrZmlsbGluZyBmcm9tIG9jY3VycmluZy4KKyAgICAgICAgICAgIFRoZXkgY2FuIGRvIHRoaXMgYnkgYWRkaW5nIHRoZSB1bmRlc2lyZWQgZmVhdHVyZSBvciBmZWF0dXJlcyB0byB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBvciA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIGRpc3RybyBmZWF0dXJlcyBhbmQgbWFjaGluZSBmZWF0dXJlcyByZXNwZWN0aXZlbHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUgYXJlIHR3byBleGFtcGxlcyB0byBoZWxwIGlsbHVzdHJhdGUgZmVhdHVyZSBiYWNrZmlsbGluZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UaGUgInB1bHNlYXVkaW8iIGRpc3RybyBmZWF0dXJlIG9wdGlvbjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBQcmV2aW91c2x5LCBQdWxzZUF1ZGlvIHN1cHBvcnQgd2FzIGVuYWJsZWQgd2l0aGluIHRoZSBRdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgR1N0cmVhbWVyIGZyYW1ld29ya3MuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugb2YgdGhpcywgdGhlIGZlYXR1cmUgaXMgYmFja2ZpbGxlZCBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICBlbmFibGVkIGZvciBhbGwgZGlzdHJvcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91ciBkaXN0cm8gbmVlZHMgdG8gZGlzYWJsZSB0aGUgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNhYmxlIHRoZSBmZWF0dXJlIHdpdGhvdXQgYWZmZWN0aW5nCisgICAgICAgICAgICAgICAgICAgIG90aGVyIGV4aXN0aW5nIGRpc3RybyBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgUHVsc2VBdWRpbyBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIGJ5IGFkZGluZyAicHVsc2VhdWRpbyIgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciBkaXN0cm8ncyA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhlIGZlYXR1cmUgdG8gdGhpcyB2YXJpYWJsZSB3aGVuIGl0IGFsc28KKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgcHJldmVudHMgdGhlIGJ1aWxkIHN5c3RlbSBmcm9tIGFkZGluZyB0aGUgZmVhdHVyZSB0bworICAgICAgICAgICAgICAgICAgICB5b3VyIGNvbmZpZ3VyYXRpb24ncyA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4sIGVmZmVjdGl2ZWx5IGRpc2FibGluZworICAgICAgICAgICAgICAgICAgICB0aGUgZmVhdHVyZSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRpc3Ryby48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRoZSAicnRjIiBtYWNoaW5lIGZlYXR1cmUgb3B0aW9uPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHksIHJlYWwgdGltZSBjbG9jayAoUlRDKSBzdXBwb3J0IHdhcyBlbmFibGVkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGRldmljZXMuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugb2YgdGhpcywgdGhlIGZlYXR1cmUgaXMgYmFja2ZpbGxlZCBhbmQgdGh1cyBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgIGZvciBhbGwgbWFjaGluZXMgdGhyb3VnaCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTEw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3VyIHRhcmdldCBkZXZpY2UgZG9lcyBub3QgaGF2ZSB0aGlzIGNhcGFiaWxpdHkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGlzYWJsZSBSVEMgc3VwcG9ydCBmb3IgeW91ciBkZXZpY2Ugd2l0aG91dAorICAgICAgICAgICAgICAgICAgICBhZmZlY3Rpbmcgb3RoZXIgbWFjaGluZXMgdGhhdCBuZWVkIFJUQyBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIGJ5IGFkZGluZyB0aGUgZmVhdHVyZSB0byB5b3VyIG1hY2hpbmUncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbGlzdCBpbiB0aGUgbWFjaGluZSdzIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGUgZmVhdHVyZSB0byB0aGlzIHZhcmlhYmxlIHdoZW4gaXQgYWxzbworICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgcHJldmVudHMgdGhlIGJ1aWxkIHN5c3RlbSBmcm9tIGFkZGluZyB0aGUgZmVhdHVyZSB0bworICAgICAgICAgICAgICAgICAgICB5b3VyIGNvbmZpZ3VyYXRpb24ncyA8ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCBlZmZlY3RpdmVseQorICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgUlRDIHN1cHBvcnQgZm9yIHRoYXQgcGFydGljdWxhciBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+CisKKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQgc3BlbGwgc3BlbGxsYW5nPWVuX2diCistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy5yc3QKaW5kZXggZWFhNmM0OS4uYzg4ZDRkNyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKgogSW1hZ2VzCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMTBhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbApAQCAtMCwwICsxLDE3MCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdyZWYtaW1hZ2VzJz4KKyAgICA8dGl0bGU+SW1hZ2VzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwcm92aWRlcyBzZXZlcmFsIGV4YW1wbGUKKyAgICAgICAgaW1hZ2VzIHRvIHNhdGlzZnkgZGlmZmVyZW50IG5lZWRzLgorICAgICAgICBXaGVuIHlvdSBpc3N1ZSB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHlvdSBwcm92aWRlIGEgInRvcC1sZXZlbCIgcmVjaXBlCisgICAgICAgIHRoYXQgZXNzZW50aWFsbHkgYmVnaW5zIHRoZSBidWlsZCBmb3IgdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQuCisgICAgPC9wYXJhPgorCisgICAgPG5vdGU+CisgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIHdpdGhvdXQgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzIChHUEx2MyksCisgICAgICAgIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgKExHUEx2MyksIGFuZCB0aGUKKyAgICAgICAgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAoQUdQTC0zLjApIGNvbXBvbmVudHMKKyAgICAgICAgaXMgb25seSBzdXBwb3J0ZWQgZm9yIG1pbmltYWwgYW5kIGJhc2UgaW1hZ2VzLgorICAgICAgICBGdXJ0aGVybW9yZSwgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBhbiBpbWFnZSB1c2luZyBub24tR1BMdjMgYW5kCisgICAgICAgIHNpbWlsYXJseSBsaWNlbnNlZCBjb21wb25lbnRzLCB5b3UgbXVzdCBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyBpbgorICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGJlZm9yZSB1c2luZyB0aGUgQml0QmFrZQorICAgICAgICBjb21tYW5kIHRvIGJ1aWxkIHRoZSBtaW5pbWFsIG9yIGJhc2UgaW1hZ2U6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgMS4gQ29tbWVudCBvdXQgdGhlIEVYVFJBX0lNQUdFX0ZFQVRVUkVTIGxpbmUKKyAgICAgMi4gU2V0IElOQ09NUEFUSUJMRV9MSUNFTlNFID0gIkdQTC0zLjAgTEdQTC0zLjAgQUdQTC0zLjAiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRnJvbSB3aXRoaW4gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnksIHlvdSBjYW4gdXNlCisgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBkaXNwbGF5IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHdpdGhpbiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgdGhhdCBjb250YWluIGltYWdlIHJlY2lwZSBmaWxlczoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGxzIG1ldGEqL3JlY2lwZXMqL2ltYWdlcy8qLmJiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgcmVjaXBlczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQtYXBwbGlhbmNlLWltYWdlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSB2aXJ0dWFsIG1hY2hpbmUgdGhhdCBjb250YWlucyBhbGwgdGhlIHBpZWNlcworICAgICAgICAgICAgICAgIHJlcXVpcmVkIHRvIHJ1biBidWlsZHMgdXNpbmcgdGhlIGJ1aWxkIHN5c3RlbSBhcyB3ZWxsIGFzIHRoZQorICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICAgICAgWW91IGNhbiBib290IGFuZCBydW4gdGhlIGltYWdlIHVzaW5nIGVpdGhlciB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZtd2FyZS5jb20vcHJvZHVjdHMvcGxheWVyL292ZXJ2aWV3Lmh0bWwnPlZNd2FyZSBQbGF5ZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy52bXdhcmUuY29tL3Byb2R1Y3RzL3dvcmtzdGF0aW9uL292ZXJ2aWV3Lmh0bWwnPlZNd2FyZSBXb3Jrc3RhdGlvbjwvdWxpbms+LgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgaW1hZ2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L3NvZnR3YXJlLWl0ZW0vYnVpbGQtYXBwbGlhbmNlLyc+QnVpbGQgQXBwbGlhbmNlPC91bGluaz4KKyAgICAgICAgICAgICAgICBwYWdlIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNvcmUtaW1hZ2UtYmFzZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEEgY29uc29sZS1vbmx5IGltYWdlIHRoYXQgZnVsbHkgc3VwcG9ydHMgdGhlIHRhcmdldCBkZXZpY2UgaGFyZHdhcmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNvcmUtaW1hZ2UtY2x1dHRlcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEFuIGltYWdlIHdpdGggc3VwcG9ydCBmb3IgdGhlIE9wZW4gR0wtYmFzZWQgdG9vbGtpdCBDbHV0dGVyLCB3aGljaCBlbmFibGVzIGRldmVsb3BtZW50IG9mCisgICAgICAgICAgICAgICAgcmljaCBhbmQgYW5pbWF0ZWQgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIGNvbnNvbGUtb25seSBpbWFnZSB3aXRoIG1vcmUgZnVsbC1mZWF0dXJlZCBMaW51eCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGluc3RhbGxlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQW4gaW1hZ2UgdGhhdCBjb25mb3JtcyB0byB0aGUgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKQorICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24uCisgICAgICAgICAgICAgICAgVGhpcyBpbWFnZSByZXF1aXJlcyBhIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICBlbmFibGVzIExTQiBjb21wbGlhbmNlIChlLmcuIDxmaWxlbmFtZT5wb2t5LWxzYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYnVpbGQgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gd2l0aG91dCB0aGF0CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgdGhlIGltYWdlIHdpbGwgbm90IGJlIExTQi1jb21wbGlhbnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiLWRldjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gaW1hZ2UgdGhhdCBpcyBzdWl0YWJsZSBmb3IgZGV2ZWxvcG1lbnQgd29yaworICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBob3N0LgorICAgICAgICAgICAgICAgIFRoZSBpbWFnZSBpbmNsdWRlcyBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgeW91IGNhbiB1c2UgaW4gYSBob3N0IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgVGhpcyBpbWFnZSByZXF1aXJlcyBhIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICBlbmFibGVzIExTQiBjb21wbGlhbmNlIChlLmcuIDxmaWxlbmFtZT5wb2t5LWxzYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYnVpbGQgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiLWRldjwvZmlsZW5hbWU+IHdpdGhvdXQgdGhhdAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHRoZSBpbWFnZSB3aWxsIG5vdCBiZSBMU0ItY29tcGxpYW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLWxzYi1zZGs8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5jb3JlLWltYWdlLWxzYjwvZmlsZW5hbWU+IHRoYXQgaW5jbHVkZXMgZXZlcnl0aGluZyBpbgorICAgICAgICAgICAgICAgIHRoZSBjcm9zcy10b29sY2hhaW4gYnV0IGFsc28gaW5jbHVkZXMgZGV2ZWxvcG1lbnQgaGVhZGVycyBhbmQgbGlicmFyaWVzCisgICAgICAgICAgICAgICAgdG8gZm9ybSBhIGNvbXBsZXRlIHN0YW5kYWxvbmUgU0RLLgorICAgICAgICAgICAgICAgIFRoaXMgaW1hZ2UgcmVxdWlyZXMgYSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgZW5hYmxlcyBMU0IgY29tcGxpYW5jZSAoZS5nLiA8ZmlsZW5hbWU+cG9reS1sc2I8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgSWYgeW91IGJ1aWxkIDxmaWxlbmFtZT5jb3JlLWltYWdlLWxzYi1zZGs8L2ZpbGVuYW1lPiB3aXRob3V0IHRoYXQKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCB0aGUgaW1hZ2Ugd2lsbCBub3QgYmUgTFNCLWNvbXBsaWFudC4KKyAgICAgICAgICAgICAgICBUaGlzIGltYWdlIGlzIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCB1c2luZyB0aGUgdGFyZ2V0LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIHNtYWxsIGltYWdlIGp1c3QgY2FwYWJsZSBvZiBhbGxvd2luZyBhIGRldmljZSB0byBib290LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtZGV2PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2Ugc3VpdGFibGUgZm9yIGRldmVsb3BtZW50IHdvcmsKKyAgICAgICAgICAgICAgICB1c2luZyB0aGUgaG9zdC4KKyAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgaW5jbHVkZXMgaGVhZGVycyBhbmQgbGlicmFyaWVzIHlvdSBjYW4gdXNlIGluIGEgaG9zdCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdpbWFnZXMtY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyc+PGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZSB0aGF0IGhhcyB0aGUgTWluaW1hbCBSQU0tYmFzZWQKKyAgICAgICAgICAgICAgICBJbml0aWFsIFJvb3QgRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBhcyBwYXJ0IG9mIHRoZSBrZXJuZWwsCisgICAgICAgICAgICAgICAgd2hpY2ggYWxsb3dzIHRoZSBzeXN0ZW0gdG8gZmluZCB0aGUgZmlyc3QgImluaXQiIHByb2dyYW0gbW9yZSBlZmZpY2llbnRseS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGhlbHBmdWwgd2hlbiB3b3JraW5nIHdpdGgKKyAgICAgICAgICAgICAgICBpbml0cmFtZnMgaW1hZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZSB0aGF0IGhhcyBzdXBwb3J0CisgICAgICAgICAgICAgICAgZm9yIHRoZSBNaW5pbWFsIE1URCBVdGlsaXRpZXMsIHdoaWNoIGxldCB0aGUgdXNlciBpbnRlcmFjdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIE1URCBzdWJzeXN0ZW0gaW4gdGhlIGtlcm5lbCB0byBwZXJmb3JtIG9wZXJhdGlvbnMgb24gZmxhc2ggZGV2aWNlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1ydDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlIHBsdXMgYSByZWFsLXRpbWUgdGVzdCBzdWl0ZSBhbmQKKyAgICAgICAgICAgICAgICB0b29scyBhcHByb3ByaWF0ZSBmb3IgcmVhbC10aW1lIHVzZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1ydC1zZGs8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5jb3JlLWltYWdlLXJ0PC9maWxlbmFtZT4gaW1hZ2UgdGhhdCBpbmNsdWRlcyBldmVyeXRoaW5nIGluCisgICAgICAgICAgICAgICAgdGhlIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgYWxzbyBpbmNsdWRlcyBkZXZlbG9wbWVudCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgdG8gZm9ybSBhIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgc3RhbmQtYWxvbmUgU0RLIGFuZCBpcyBzdWl0YWJsZSBmb3IgZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQW4gaW1hZ2Ugd2l0aCBTYXRvIHN1cHBvcnQsIGEgbW9iaWxlIGVudmlyb25tZW50IGFuZCB2aXN1YWwgc3R5bGUgdGhhdCB3b3JrcyB3ZWxsCisgICAgICAgICAgICAgICAgd2l0aCBtb2JpbGUgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICBUaGUgaW1hZ2Ugc3VwcG9ydHMgWDExIHdpdGggYSBTYXRvIHRoZW1lIGFuZCBhcHBsaWNhdGlvbnMgc3VjaCBhcworICAgICAgICAgICAgICAgIGEgdGVybWluYWwsIGVkaXRvciwgZmlsZSBtYW5hZ2VyLCBtZWRpYSBwbGF5ZXIsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvLWRldjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBob3N0LgorICAgICAgICAgICAgICAgIFRoZSBpbWFnZSBpbmNsdWRlcyBsaWJyYXJpZXMgbmVlZGVkIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyBvbiB0aGUgZGV2aWNlIGl0c2VsZiwKKyAgICAgICAgICAgICAgICB0ZXN0aW5nIGFuZCBwcm9maWxpbmcgdG9vbHMsIGFuZCBkZWJ1ZyBzeW1ib2xzLgorICAgICAgICAgICAgICAgIFRoaXMgaW1hZ2Ugd2FzIGZvcm1lcmx5IDxmaWxlbmFtZT5jb3JlLWltYWdlLXNkazwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG8tc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2UgdGhhdCBpbmNsdWRlcyBldmVyeXRoaW5nIGluCisgICAgICAgICAgICAgICAgdGhlIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgYWxzbyBpbmNsdWRlcyBkZXZlbG9wbWVudCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgdG8gZm9ybSBhIGNvbXBsZXRlIHN0YW5kYWxvbmUgU0RLCisgICAgICAgICAgICAgICAgYW5kIGlzIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCB1c2luZyB0aGUgdGFyZ2V0LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLXRlc3RtYXN0ZXI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBICJtYXN0ZXIiIGltYWdlIGRlc2lnbmVkIHRvIGJlIHVzZWQgZm9yIGF1dG9tYXRlZCBydW50aW1lIHRlc3RpbmcuCisgICAgICAgICAgICAgICAgUHJvdmlkZXMgYSAia25vd24gZ29vZCIgaW1hZ2UgdGhhdCBpcyBkZXBsb3llZCB0byBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgcGFydGl0aW9uIHNvIHRoYXQgeW91IGNhbiBib290IGludG8gaXQgYW5kIHVzZSBpdCB0byBkZXBsb3kgYQorICAgICAgICAgICAgICAgIHNlY29uZCBpbWFnZSB0byBiZSB0ZXN0ZWQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcnVudGltZSB0ZXN0aW5nIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQSBSQU0tYmFzZWQgSW5pdGlhbCBSb290IEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgaW1hZ2UgdGFpbG9yZWQgZm9yCisgICAgICAgICAgICAgICAgdXNlIHdpdGggdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXRlc3RtYXN0ZXI8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS13ZXN0b248L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIHZlcnkgYmFzaWMgV2F5bGFuZCBpbWFnZSB3aXRoIGEgdGVybWluYWwuCisgICAgICAgICAgICAgICAgVGhpcyBpbWFnZSBwcm92aWRlcyB0aGUgV2F5bGFuZCBwcm90b2NvbCBsaWJyYXJpZXMgYW5kIHRoZQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBXZXN0b24gY29tcG9zaXRvci4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtdXNpbmctd2F5bGFuZC1hbmQtd2VzdG9uJz5Vc2luZyBXYXlsYW5kIGFuZCBXZXN0b248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS14MTE8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICBBIHZlcnkgYmFzaWMgWDExIGltYWdlIHdpdGggYSB0ZXJtaW5hbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQucnN0CmluZGV4IGMwMzFlZjIuLjQ1MjIyZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBPcGVuRW1iZWRkZWQgS2lja3N0YXJ0IChgYC53a3NgYCkgUmVmZXJlbmNlCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZGIxYzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbApAQCAtMCwwICsxLDMzNSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdyZWYta2lja3N0YXJ0Jz4KKzx0aXRsZT5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+CisgICAgICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGN1cnJlbnQgV2ljIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIG9ubHkgdGhlIGJhc2ljIGtpY2tzdGFydAorICAgICAgICAgICAgcGFydGl0aW9uaW5nIGNvbW1hbmRzOgorICAgICAgICAgICAgPGZpbGVuYW1lPnBhcnRpdGlvbjwvZmlsZW5hbWU+IChvciA8ZmlsZW5hbWU+cGFydDwvZmlsZW5hbWU+CisgICAgICAgICAgICBmb3Igc2hvcnQpIGFuZCA8ZmlsZW5hbWU+Ym9vdGxvYWRlcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRnV0dXJlIHVwZGF0ZXMgd2lsbCBpbXBsZW1lbnQgbW9yZSBjb21tYW5kcyBhbmQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGFueXRoaW5nIHRoYXQgaXMgbm90IHNwZWNpZmljYWxseSBzdXBwb3J0ZWQsIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBjYW4gYmUgdW5wcmVkaWN0YWJsZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGEgcmVmZXJlbmNlIG9uIHRoZSBhdmFpbGFibGUga2lja3N0YXJ0CisgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBsaXN0cyB0aGUgY29tbWFuZHMsIHRoZWlyIHN5bnRheCwgYW5kIG1lYW5pbmdzLgorICAgICAgICAgICAgS2lja3N0YXJ0IGNvbW1hbmRzIGFyZSBiYXNlZCBvbiB0aGUgRmVkb3JhIGtpY2tzdGFydCB2ZXJzaW9ucyBidXQKKyAgICAgICAgICAgIHdpdGggbW9kaWZpY2F0aW9ucyB0byByZWZsZWN0IFdpYyBjYXBhYmlsaXRpZXMuCisgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhvc2UgY29tbWFuZHMgYXQgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgbGluazoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHVsaW5rIHVybD0naHR0cDovL3B5a2lja3N0YXJ0LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9raWNrc3RhcnQtZG9jcy5odG1sJz5odHRwOi8vcHlraWNrc3RhcnQucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2tpY2tzdGFydC1kb2NzLmh0bWw8L3VsaW5rPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NvbW1hbmQtcGFydC1vci1wYXJ0aXRpb24nPgorICAgICAgICA8dGl0bGU+Q29tbWFuZDogcGFydCBvciBwYXJ0aXRpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRWl0aGVyIG9mIHRoZXNlIGNvbW1hbmRzIGNyZWF0ZXMgYSBwYXJ0aXRpb24gb24gdGhlIHN5c3RlbSBhbmQgdXNlcworICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBhcnQgWzxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+XQorICAgICBwYXJ0aXRpb24gWzxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+XQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBwcm92aWRlIDxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+LCBXaWMKKyAgICAgICAgICAgIGNyZWF0ZXMgYSBwYXJ0aXRpb24gYnV0IGRvZXMgbm90IG1vdW50IGl0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgIHdoZXJlIHRoZSBwYXJ0aXRpb24gaXMgbW91bnRlZCBhbmQgbXVzdCBiZSBpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgZm9ybXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi88cmVwbGFjZWFibGU+cGF0aDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCAiLyIsICIvdXNyIiwgb3IgIi9ob21lIgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zd2FwPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBjcmVhdGVkIHBhcnRpdGlvbiBpcyB1c2VkIGFzIHN3YXAgc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU3BlY2lmeWluZyBhIDxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+IGNhdXNlcyB0aGUKKyAgICAgICAgICAgIHBhcnRpdGlvbiB0byBhdXRvbWF0aWNhbGx5IGJlIG1vdW50ZWQuCisgICAgICAgICAgICBXaWMgYWNoaWV2ZXMgdGhpcyBieSBhZGRpbmcgZW50cmllcyB0byB0aGUgZmlsZXN5c3RlbSB0YWJsZSAoZnN0YWIpCisgICAgICAgICAgICBkdXJpbmcgaW1hZ2UgZ2VuZXJhdGlvbi4KKyAgICAgICAgICAgIEluIG9yZGVyIGZvciBXaWMgdG8gZ2VuZXJhdGUgYSB2YWxpZCBmc3RhYiwgeW91IG11c3QgYWxzbyBwcm92aWRlCisgICAgICAgICAgICBvbmUgb2YgdGhlIDxmaWxlbmFtZT4tLW9uZHJpdmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+LCBvcgorICAgICAgICAgICAgPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBwYXJ0aXRpb24gb3B0aW9ucyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBtb3VudCBwcm9ncmFtIG11c3QgdW5kZXJzdGFuZCB0aGUgUEFSVFVVSUQgc3ludGF4IHlvdSB1c2UKKyAgICAgICAgICAgICAgICB3aXRoIDxmaWxlbmFtZT4tLXVzZS11dWlkPC9maWxlbmFtZT4gYW5kIG5vbi1yb290CisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPm1vdW50cG9pbnQ8L3JlcGxhY2VhYmxlPiwgaW5jbHVkaW5nIHN3YXAuCisgICAgICAgICAgICAgICAgVGhlIGJ1c3lib3ggdmVyc2lvbnMgb2YgdGhlc2UgYXBwbGljYXRpb24gYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgICAgIGV4Y2x1ZGVkLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyAiLyIgYXMgdGhlCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+bW91bnRwb2ludDwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgVGhlIGNvbW1hbmQgdXNlcyA8ZmlsZW5hbWU+LS1vbmRpc2s8L2ZpbGVuYW1lPiB0byBmb3JjZSB0aGUKKyAgICAgICAgICAgIHBhcnRpdGlvbiBvbnRvIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnNkYjwvZmlsZW5hbWU+IGRpc2s6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSGVyZSBpcyBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb3RoZXIgc3VwcG9ydGVkIG9wdGlvbnMgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5wYXJ0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+cGFydGl0aW9uPC9maWxlbmFtZT4gY29tbWFuZHM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW11bSBwYXJ0aXRpb24gc2l6ZSBpbiBNQnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gaW50ZWdlciB2YWx1ZSBzdWNoIGFzIDUwMC4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IGFwcGVuZCB0aGUgbnVtYmVyIHdpdGggIk1CIi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRoaXMgb3B0aW9uIGlmIHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZpeGVkLXNpemU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhY3QgcGFydGl0aW9uIHNpemUgaW4gTUJ5dGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHNwZWNpZnkgd2l0aCA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycyB3aGVuIGFzc2VtYmxpbmcgdGhlIGRpc2sgaW1hZ2UgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBkYXRhIGlzIGxhcmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWZpeGVkLXNpemU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgbmFtZXMgdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZGF0YSB0aGF0IHBvcHVsYXRlcyB0aGUgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdmFsdWUgZm9yIHRoaXMgb3B0aW9uIGlzICJyb290ZnMiLCBidXQgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiB1c2UgYW55IHZhbHVlIHRoYXQgbWFwcyB0byBhIHZhbGlkIHNvdXJjZSBwbHVnaW4uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgc291cmNlIHBsdWdpbnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dpYy11c2luZy10aGUtd2ljLXBsdWdpbi1pbnRlcmZhY2UnPlVzaW5nIHRoZSBXaWMgUGx1Z2lucyBJbnRlcmZhY2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgdXNlIDxmaWxlbmFtZT4tLXNvdXJjZSByb290ZnM8L2ZpbGVuYW1lPiwgV2ljCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBwYXJ0aXRpb24gYXMgbGFyZ2UgYXMgbmVlZGVkIGFuZCBmaWxscyBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tcjwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBvcHRpb24gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGVxdWl2YWxlbnQgcm9vdGZzIGRlcml2ZWQgZnJvbSB0aGUgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzeXN0ZW0gdHlwZSB1c2VkIHRvIGNyZWF0ZSB0aGUgcGFydGl0aW9uIGlzIGRyaXZlbgorICAgICAgICAgICAgICAgICAgICBieSB0aGUgdmFsdWUgb2YgdGhlIDxmaWxlbmFtZT4tLWZzdHlwZTwvZmlsZW5hbWU+IG9wdGlvbgorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgZm9yIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZW50cnkgb24gPGZpbGVuYW1lPi0tZnN0eXBlPC9maWxlbmFtZT4gdGhhdCBmb2xsb3dzCisgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZSA8cmVwbGFjZWFibGU+cGx1Z2luLW5hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBXaWMgY3JlYXRlcyBhIHBhcnRpdGlvbiBhcyBsYXJnZSBhcyBuZWVkZWQgYW5kIGZpbGxzIGl0CisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJ0aXRpb24gdGhhdCBpcyBnZW5lcmF0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBwbHVnaW4gbmFtZSB1c2luZyB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZQorICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIEV4YWN0bHkgd2hhdCB0aG9zZSBjb250ZW50cyBhcmUgYW5kIGZpbGVzeXN0ZW0gdHlwZSB1c2VkIGFyZQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgb24gdGhlIGdpdmVuIHBsdWdpbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkbyBub3QgdXNlIHRoZSA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGFuCisgICAgICAgICAgICAgICAgICAgIGVtcHR5IHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbXVzdCB1c2UgdGhlIDxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgZW1wdHkgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1vbmRpc2s8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LS1vbmRyaXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yY2VzIHRoZSBwYXJ0aXRpb24gdG8gYmUgY3JlYXRlZCBvbiBhIHBhcnRpY3VsYXIgZGlzay4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZnN0eXBlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU2V0cyB0aGUgZmlsZSBzeXN0ZW0gdHlwZSBmb3IgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVmFsaWQgdmFsdWVzIGFyZToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnRyZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zcXVhc2hmczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN3YXA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZnNvcHRpb25zPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnJlZS1mb3JtIHN0cmluZyBvZiBvcHRpb25zIHRvIGJlIHVzZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICBtb3VudGluZyB0aGUgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzdHJpbmcgaXMgY29waWVkIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gZmlsZSBvZiB0aGUgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4KKyAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgc3RyaW5nIGlzICJkZWZhdWx0cyIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWxhYmVsIGxhYmVsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsYWJlbCB0byBnaXZlIHRvIHRoZSBmaWxlc3lzdGVtIHRvIGJlIG1hZGUgb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGdpdmVuIGxhYmVsIGlzIGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIgZmlsZXN5c3RlbSwKKyAgICAgICAgICAgICAgICAgICAgYSBuZXcgbGFiZWwgaXMgY3JlYXRlZCBmb3IgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYWN0aXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWFya3MgdGhlIHBhcnRpdGlvbiBhcyBhY3RpdmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWFsaWduIChpbiBLQnl0ZXMpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc2F5cyB0byBzdGFydAorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zIG9uIGJvdW5kYXJpZXMgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPiBLQnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLW5vLXRhYmxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgb3B0aW9uIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgcGFydGl0aW9uIGFuZAorICAgICAgICAgICAgICAgICAgICBjYXVzZXMgaXQgdG8gYmVjb21lIHBvcHVsYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHBhcnRpdGlvbiBpcyBub3QgYWRkZWQgdG8gdGhlIHBhcnRpdGlvbiB0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZXhjbHVkZS1wYXRoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgZXhjbHVkZXMgdGhlIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcmVzdWx0aW5nIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBvbmx5IGVmZmVjdGl2ZSB3aXRoIHRoZSByb290ZnMgc291cmNlCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZXh0cmEtc3BhY2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBhZGRzIGV4dHJhIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBzcGFjZSBmaWxsZWQgYnkgdGhlIGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHNpemUgY2FuIGV4Y2VlZCB0aGUgc2l6ZSBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPiBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwIE1ieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tb3ZlcmhlYWQtZmFjdG9yPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgbXVsdGlwbGllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiB0aGUgcGFydGl0aW9uIGJ5IHRoZSBvcHRpb24ncyB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3VwcGx5IGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICIxIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIjEuMyIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXBhcnQtbmFtZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNwZWNpZmllcyBhIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgZm9yIEdQVCBwYXJ0aXRpb25zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1wYXJ0LXR5cGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiB0eXBlIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIChHVUlEKSBmb3IgR1BUCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgbGlzdCBvZiBwYXJ0aXRpb24gdHlwZSBHVUlEcyBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dVSURfUGFydGl0aW9uX1RhYmxlI1BhcnRpdGlvbl90eXBlX0dVSURzJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBjYXVzZXMgV2ljIHRvCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGEgcmFuZG9tIEdVSUQgZm9yIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgaWRlbnRpZmllciBpcyB1c2VkIGluIHRoZSBib290bG9hZGVyCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gdG8gc3BlY2lmeSB0aGUgcm9vdCBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXV1aWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBVVUlELgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1mc3V1aWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gVVVJRC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZW5lcmF0ZSBvciBtb2RpZnkKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdLU19GSUxFJz48ZmlsZW5hbWU+V0tTX0ZJTEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGlzIG9wdGlvbiBpZiBhIHByZWNvbmZpZ3VyZWQgZmlsZXN5c3RlbSBVVUlEIGlzCisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGluIHRoZSBib290bG9hZGVyCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHlvdSBydW4gV2ljLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1zeXN0ZW0taWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBzeXN0ZW0gSUQsIHdoaWNoIGlzIGEgb25lIGJ5dGUgbG9uZywgaGV4YWRlY2ltYWwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIHdpdGggb3Igd2l0aG91dCB0aGUgMHggcHJlZml4LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1ta2ZzLWV4dHJhb3B0czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIHNwZWNpZmllcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rZnM8L2ZpbGVuYW1lPiB1dGlsaXR5LgorICAgICAgICAgICAgICAgICAgICBTb21lIGRlZmF1bHQgb3B0aW9ucyBmb3IgY2VydGFpbiBmaWxlc3lzdGVtcyBkbyBub3QgdGFrZQorICAgICAgICAgICAgICAgICAgICBlZmZlY3QuCisgICAgICAgICAgICAgICAgICAgIFNlZSBXaWMncyBoZWxwIG9uIGtpY2tzdGFydAorICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+d2ljIGhlbHAga2lja3N0YXJ0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NvbW1hbmQtYm9vdGxvYWRlcic+CisgICAgPHRpdGxlPkNvbW1hbmQ6IGJvb3Rsb2FkZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBjb21tYW5kIHNwZWNpZmllcyBob3cgdGhlIGJvb3Rsb2FkZXIgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYW5kCisgICAgICAgICAgICBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCb290bG9hZGVyIGZ1bmN0aW9uYWxpdHkgYW5kIGJvb3QgcGFydGl0aW9ucyBhcmUgaW1wbGVtZW50ZWQgYnkKKyAgICAgICAgICAgICAgICB0aGUgdmFyaW91cyA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPiBwbHVnaW5zIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnQgYm9vdGxvYWRlciBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgIFRoZSBib290bG9hZGVyIGNvbW1hbmQgZXNzZW50aWFsbHkgcHJvdmlkZXMgYSBtZWFucyBvZgorICAgICAgICAgICAgICAgIG1vZGlmeWluZyBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXRpbWVvdXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgYm9vdGxvYWRlciB0aW1lcworICAgICAgICAgICAgICAgICAgICBvdXQgYW5kIGJvb3RzIHRoZSBkZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYXBwZW5kPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGtlcm5lbCBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBwYXJhbWV0ZXJzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c2xpbnV4CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BUFBFTkQ8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+Z3J1YjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWNvbmZpZ2ZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB1c2VyLWRlZmluZWQgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYm9vdGxvYWRlci4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIGEgZnVsbCBwYXRobmFtZSBmb3IgdGhlIGZpbGUgb3IgYSBmaWxlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSA8ZmlsZW5hbWU+Y2FubmVkLXdrczwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gb3ZlcnJpZGVzIGFsbCBvdGhlciBib290bG9hZGVyIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwtY3VzdG9taXphdGlvbi54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxODFmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCkBAIC0wLDAgKzEsMzEgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworPCEtLQorCisgIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworLS0+CisKKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3Blcm1hbGlua3MueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9zZWN0aW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvY29tcG9uZW50LnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZGl2aXNpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9mb3JtYWwub2JqZWN0LmhlYWRpbmcueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9nbG9zcy1wZXJtYWxpbmtzLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcWEtY29kZS1wZXJtYWxpbmtzLnhzbCIvPgorCisgIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9IidyZWYtc3R5bGUuY3NzJyIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaGFwdGVyLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImFwcGVuZGl4LmF1dG9sYWJlbCIgc2VsZWN0PSJBIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24uYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pZC5hdHRyaWJ1dGVzIiBzZWxlY3Q9IjEiIC8+CisKKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwucnN0CmluZGV4IDAzM2Y0YmEuLmExMDZhZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YTkxNGYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKQEAgLTAsMCArMSwyMzIgQEAKKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxib29rIGlkPSdyZWYtbWFudWFsJyBsYW5nPSdlbicKKyAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIgorICAgICAgeG1sbnM9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICAgICAgPgorICAgIDxib29raW5mbz4KKworICAgICAgICA8bWVkaWFvYmplY3Q+CisgICAgICAgICAgICA8aW1hZ2VvYmplY3Q+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSdmaWd1cmVzL3Bva3ktdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwKKyAgICAgICAgPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgorICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgorICAgICAgICAgICAgPC9hdXRob3I+CisKKyAgICAgICAgPC9hdXRob3Jncm91cD4KKworICAgICAgICA8cmV2aGlzdG9yeT4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjQuMCtnaXQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDEwPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZTwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4zPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDEyPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEzPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTM8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS44PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4wPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE1PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTY8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjc8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgIDwvcmV2aGlzdG9yeT4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4mQ09QWVJJR0hUX1lFQVI7PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUgPHVsaW5rIHR5cGU9Imh0dHAiIHVybD0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL3VrLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkgQ3JlYXRpdmUgQ29tbW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtdGVybXMueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtcmVsZWFzZS1wcm9jZXNzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ibWlncmF0aW9uLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLXN0cnVjdHVyZS54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1jbGFzc2VzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLXRhc2tzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLWtpY2tzdGFydC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1xYS1jaGVja3MueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtaW1hZ2VzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLWZlYXR1cmVzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLXZhcmlhYmxlcy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi12YXJsb2NhbGl0eS54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9ImZhcS54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InJlc291cmNlcy54bWwiLz4KKworPCEtLSAgICA8aW5kZXggaWQ9J2luZGV4Jz4KKyAgICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CisgICAgPC9pbmRleD4KKy0tPgorCis8L2Jvb2s+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1xYS1jaGVja3MucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXFhLWNoZWNrcy5yc3QKaW5kZXggNGFjNjVjMC4uM2U3NmFjMSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXFhLWNoZWNrcy5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXFhLWNoZWNrcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBRQSBFcnJvciBhbmQgV2FybmluZyBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXFhLWNoZWNrcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcWEtY2hlY2tzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDcxZTRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXFhLWNoZWNrcy54bWwKQEAgLTAsMCArMSwxMjI1IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3JlZi1xYS1jaGVja3MnPgorPHRpdGxlPlFBIEVycm9yIGFuZCBXYXJuaW5nIE1lc3NhZ2VzPC90aXRsZT4KKworPHNlY3Rpb24gaWQ9J3FhLWludHJvZHVjdGlvbic+CisgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hlbiBidWlsZGluZyBhIHJlY2lwZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcGVyZm9ybXMKKyAgICAgICAgdmFyaW91cyBRQSBjaGVja3Mgb24gdGhlIG91dHB1dCB0byBlbnN1cmUgdGhhdCBjb21tb24gaXNzdWVzIGFyZQorICAgICAgICBkZXRlY3RlZCBhbmQgcmVwb3J0ZWQuCisgICAgICAgIFNvbWV0aW1lcyB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgcmVjaXBlIHRvIGJ1aWxkIG5ldyBzb2Z0d2FyZSwKKyAgICAgICAgaXQgd2lsbCBidWlsZCB3aXRoIG5vIHByb2JsZW1zLgorICAgICAgICBXaGVuIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBvciB3aGVuIHlvdSBoYXZlIFFBIGlzc3VlcyBidWlsZGluZyBhbnkKKyAgICAgICAgc29mdHdhcmUsIGl0IGNvdWxkIHRha2UgYSBsaXR0bGUgdGltZSB0byByZXNvbHZlIHRoZW0uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdoaWxlIGl0IGlzIHRlbXB0aW5nIHRvIGlnbm9yZSBhIFFBIG1lc3NhZ2Ugb3IgZXZlbiB0bworICAgICAgICBkaXNhYmxlIFFBIGNoZWNrcywgaXQgaXMgYmVzdCB0byB0cnkgYW5kIHJlc29sdmUgYW55CisgICAgICAgIHJlcG9ydGVkIFFBIGlzc3Vlcy4KKyAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGEgbGlzdCBvZiB0aGUgUUEgbWVzc2FnZXMgYW5kIGJyaWVmIGV4cGxhbmF0aW9ucworICAgICAgICBvZiB0aGUgaXNzdWVzIHlvdSBjb3VsZCBlbmNvdW50ZXIgc28gdGhhdCB5b3UgY2FuIHByb3Blcmx5IHJlc29sdmUKKyAgICAgICAgcHJvYmxlbXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXh0IHNlY3Rpb24gcHJvdmlkZXMgYSBsaXN0IG9mIGFsbCBRQSBlcnJvciBhbmQgd2FybmluZworICAgICAgICBtZXNzYWdlcyBiYXNlZCBvbiBhIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgRWFjaCBlbnRyeSBwcm92aWRlcyB0aGUgbWVzc2FnZSBvciBlcnJvciBmb3JtIGFsb25nIHdpdGggYW4KKyAgICAgICAgZXhwbGFuYXRpb24uCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGUgZW5kIG9mIGVhY2ggbWVzc2FnZSwgdGhlIG5hbWUgb2YgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgUUEgdGVzdCAoYXMgbGlzdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24pIGFwcGVhcnMgd2l0aGluIHNxdWFyZSBicmFja2V0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQsIHRoaXMgbGlzdCBvZiBlcnJvciBhbmQgd2FybmluZyBtZXNzYWdlcyBpcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgUUEgY2hlY2tzIG9ubHkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IGRvZXMgbm90IGNvdmVyIGFsbCBwb3NzaWJsZSBidWlsZCBlcnJvcnMgb3IKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgeW91IGNvdWxkIGVuY291bnRlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHNvbWUgUUEgY2hlY2tzIGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0LCB0aGlzIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBhbGwgcG9zc2libGUgUUEgY2hlY2sgZXJyb3JzIGFuZCB3YXJuaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3FhLWVycm9ycy1hbmQtd2FybmluZ3MnPgorICAgIDx0aXRsZT5FcnJvcnMgYW5kIFdhcm5pbmdzPC90aXRsZT4KKworPCEtLQorVGhpcyBzZWN0aW9uIHVzZXMgdGhlIDxwYXJhPjxjb2RlPiBjb25zdHJ1Y3QgdG8gZW5hYmxlIHBlcm1hbGlua3MgZm9yIHRoZQordmFyaW91cyBRQSBpc3N1ZSBhbmQgd2FybmluZyBtZXNzYWdlcy4gIFRoZSBmaWxlIHRlbXBsYXRlcy9xYS1jb2RlLXBlcm1hbGlua3MueHNsCitpcyB1c2VkIHRvIGxvY2F0ZSB0aGUgY29uc3RydWN0IGFuZCBnZW5lcmF0ZSB0aGUgcGVybWFsaW5rLiAgVGhpcyBzb2x1dGlvbgorbGV2ZXJhZ2VzIHRoZSBmYWN0IHRoYXQgcmlnaHQgbm93IHRoaXMgc2VjdGlvbiBpbiB0aGUgcmVmLW1hbnVhbCBpcyB0aGUgb25seQorcGxhY2UgaXMgYWxsIHRoZSBZUCBkb2NzIHRoYXQgdXNlcyB0aGUgPHBhcmE+PGNvZGU+IGNvbnN0cnVjdC4gIElmLCBpbiB0aGUKK2Z1dHVyZSwgdGhhdCBjb25zdHJ1Y3Qgd2VyZSB0byBhcHBlYXIgaW4gdGhlIHJlZi1tYW51YWwsIGEgZ2VuZXJpYyBwZXJtYWxpbmsKK3dvdWxkIGJlIGdlbmVyYXRlZCBmb3IgdGhlIHRleHQgYmV0d2VlbiA8Y29kZT48L2NvZGU+LiAgSWYgYSBiZXR0ZXIgc29sdXRpb24KK2NhbiBiZSBmb3VuZCB0aGVuIGl0IHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gIEkgY2FuJ3QgZmluZCBvbmUgYXQgdGhlIG1vbWVudC4KKy0tPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLWxpYmV4ZWMnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgJmx0O3BhY2thZ2VuYW1lJmd0OzogJmx0O3BhdGgmZ3Q7IGlzIHVzaW5nIGxpYmV4ZWMgcGxlYXNlIHJlbG9jYXRlIHRvICZsdDtsaWJleGVjZGlyJmd0OyBbbGliZXhlY10KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWVkIHBhY2thZ2UgY29udGFpbnMgZmlsZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbGliZXhlYzwvZmlsZW5hbWU+IHdoZW4gdGhlIGRpc3RybworICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHVzZXMgYSBkaWZmZXJlbnQgcGF0aCBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZsdDtsaWJleGVjZGlyJmd0OzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT4mbHQ7bGliZXhlY2RpciZndDs8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHByZWZpeC9saWJleGVjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZCAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtsaWJkaXJ9PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtcnBhdGhzJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIHBhY2thZ2UgJmx0O3BhY2thZ2VuYW1lJmd0OyBjb250YWlucyBiYWQgUlBBVEggJmx0O3JwYXRoJmd0OyBpbiBmaWxlICZsdDtmaWxlJmd0OyBbcnBhdGhzXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgYmluYXJ5IHByb2R1Y2VkIGJ5IHRoZSByZWNpcGUgY29udGFpbnMgZHluYW1pYworICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IGxvYWQgcGF0aHMgKHJwYXRocykgdGhhdCBjb250YWluIGJ1aWxkIHN5c3RlbSBwYXRocworICAgICAgICAgICAgICAgICAgICBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBpbmNvcnJlY3QgZm9yIHRoZSB0YXJnZXQgYW5kIGNvdWxkIHBvdGVudGlhbGx5CisgICAgICAgICAgICAgICAgICAgIGJlIGEgc2VjdXJpdHkgaXNzdWUuCisgICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgPGZpbGVuYW1lPi1ycGF0aDwvZmlsZW5hbWU+IG9wdGlvbnMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBsaW5rZXIgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgbG9nLgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGJ1aWxkIHN5c3RlbSB1c2VkIGJ5IHRoZSBzb2Z0d2FyZSBiZWluZworICAgICAgICAgICAgICAgICAgICBidWlsdCwgdGhlcmUgbWlnaHQgYmUgYSBjb25maWd1cmUgb3B0aW9uIHRvIGRpc2FibGUgcnBhdGgKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UgY29tcGxldGVseSB3aXRoaW4gdGhlIGJ1aWxkIG9mIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLXVzZWxlc3MtcnBhdGhzJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgICZsdDtwYWNrYWdlbmFtZSZndDs6ICZsdDtmaWxlJmd0OyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggJmx0O3JwYXRoJmd0OyBbdXNlbGVzcy1ycGF0aHNdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmllZCBiaW5hcnkgcHJvZHVjZWQgYnkgdGhlIHJlY2lwZSBjb250YWlucyBkeW5hbWljCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgbG9hZCBwYXRocyAocnBhdGhzKSB0aGF0IG9uIGEgc3RhbmRhcmQgc3lzdGVtIGFyZQorICAgICAgICAgICAgICAgICAgICBzZWFyY2hlZCBieSBkZWZhdWx0IGJ5IHRoZSBsaW5rZXIgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9saWI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi91c3IvbGliPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGVzZSBwYXRocyB3aWxsIG5vdCBjYXVzZSBhbnkgYnJlYWthZ2UsIHRoZXkgZG8gd2FzdGUKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UgYW5kIGFyZSB1bm5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBidWlsZCBzeXN0ZW0gdXNlZCBieSB0aGUgc29mdHdhcmUgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQsIHRoZXJlIG1pZ2h0IGJlIGEgY29uZmlndXJlIG9wdGlvbiB0byBkaXNhYmxlIHJwYXRoCisgICAgICAgICAgICAgICAgICAgIHVzYWdlIGNvbXBsZXRlbHkgd2l0aGluIHRoZSBidWlsZCBvZiB0aGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1maWxlLXJkZXBzJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgICZsdDtwYWNrYWdlbmFtZSZndDsgcmVxdWlyZXMgJmx0O2ZpbGVzJmd0OywgYnV0IG5vIHByb3ZpZGVycyBpbiBpdHMgUkRFUEVORFMgW2ZpbGUtcmRlcHNdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBmaWxlLWxldmVsIGRlcGVuZGVuY3kgaGFzIGJlZW4gaWRlbnRpZmllZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgcGFja2FnZSBvbiB0aGUgc3BlY2lmaWVkIGZpbGVzLCBidXQgdGhlcmUgaXMKKyAgICAgICAgICAgICAgICAgICAgbm8gZXhwbGljaXQgY29ycmVzcG9uZGluZyBlbnRyeSBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgcGFydGljdWxhciBmaWxlcyBhcmUgcmVxdWlyZWQgYXQgcnVudGltZSB0aGVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IHNob3VsZCBiZSBkZWNsYXJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRvIGVuc3VyZSB0aGUgcGFja2FnZXMgcHJvdmlkaW5nIHRoZW0gYXJlIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtYnVpbGQtZGVwcyc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICAmbHQ7cGFja2FnZW5hbWUxJmd0OyByZGVwZW5kcyBvbiAmbHQ7cGFja2FnZW5hbWUyJmd0OywgYnV0IGl0IGlzbid0IGEgYnVpbGQgZGVwZW5kZW5jeT8gW2J1aWxkLWRlcHNdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBydW50aW1lIGRlcGVuZGVuY3kgZXhpc3RzIGJldHdlZW4gdGhlIHR3byBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMsIGJ1dCB0aGVyZSBpcyBub3RoaW5nIGV4cGxpY2l0IHdpdGhpbiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHRvIGVuYWJsZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBlbnN1cmUgdGhhdAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IGlzIHNhdGlzZmllZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25kaXRpb24gaXMgdXN1YWxseSB0cmlnZ2VyZWQgYnkgYW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgYmVpbmcgYWRkZWQgYXQgdGhlIHBhY2thZ2luZyBzdGFnZSByYXRoZXIgdGhhbiB1cAorICAgICAgICAgICAgICAgICAgICBmcm9udCwgd2hpY2ggaXMgdXN1YWxseSBhdXRvbWF0aWMgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBJbiBtb3N0IGNhc2VzLCB5b3Ugc2hvdWxkIGNoYW5nZSB0aGUgcmVjaXBlIHRvIGFkZCBhbgorICAgICAgICAgICAgICAgICAgICBleHBsaWNpdCA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiBmb3IgdGhlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1kZXYtc28nPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgbm9uIC1kZXYvLWRiZy9uYXRpdmVzZGstIHBhY2thZ2UgY29udGFpbnMgc3ltbGluayAuc286ICZsdDtwYWNrYWdlbmFtZSZndDsgcGF0aCAnJmx0O3BhdGgmZ3Q7JyBbZGV2LXNvXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFN5bWxpbmsgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGVzIGFyZSBmb3IgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgb25seSwgYW5kIHNob3VsZCB0aGVyZWZvcmUgZ28gaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNpdHVhdGlvbiBtaWdodCBvY2N1ciBpZiB5b3UgYWRkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLnNvKjwvZmlsZW5hbWU+IHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLnNvLio8L2ZpbGVuYW1lPiB0byBhIG5vbi1kZXYgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQ2hhbmdlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIChhbmQgcG9zc2libHkKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgIHN1Y2ggdGhhdCB0aGUgc3BlY2lmaWVkIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlIGdvZXMKKyAgICAgICAgICAgICAgICAgICAgaW50byBhbiBhcHByb3ByaWF0ZSA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1zdGF0aWNkZXYnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgbm9uIC1zdGF0aWNkZXYgcGFja2FnZSBjb250YWlucyBzdGF0aWMgLmEgbGlicmFyeTogJmx0O3BhY2thZ2VuYW1lJmd0OyBwYXRoICcmbHQ7cGF0aCZndDsnIFtzdGF0aWNkZXZdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3RhdGljIDxmaWxlbmFtZT4uYTwvZmlsZW5hbWU+IGxpYnJhcnkgZmlsZXMgc2hvdWxkIGdvIGludG8KKyAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+LXN0YXRpY2RldjwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIENoYW5nZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAoYW5kIHBvc3NpYmx5CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICBzdWNoIHRoYXQgdGhlIHNwZWNpZmllZCA8ZmlsZW5hbWU+LmE8L2ZpbGVuYW1lPiBmaWxlIGdvZXMKKyAgICAgICAgICAgICAgICAgICAgaW50byBhbiBhcHByb3ByaWF0ZSA8ZmlsZW5hbWU+LXN0YXRpY2RldjwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1saWJkaXInPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgJmx0O3BhY2thZ2VuYW1lJmd0OzogZm91bmQgbGlicmFyeSBpbiB3cm9uZyBsb2NhdGlvbiBbbGliZGlyXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgZmlsZSBtYXkgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbnRvIGFuIGluY29ycmVjdAorICAgICAgICAgICAgICAgICAgICAocG9zc2libHkgaGFyZGNvZGVkKSBpbnN0YWxsYXRpb24gcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgdGVzdCB3aWxsIGNhdGNoIHJlY2lwZXMgdGhhdCBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vbGliL2Jhci5zbzwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7YmFzZV9saWJkaXJ9PC9maWxlbmFtZT4gaXMgImxpYjMyIi4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIGlzIHdoZW4gcmVjaXBlcyBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYjY0L2Zvby5zbzwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7bGliZGlyfTwvZmlsZW5hbWU+IGlzICIvdXNyL2xpYiIuCisgICAgICAgICAgICAgICAgICAgIEZhbHNlIHBvc2l0aXZlcyBvY2Nhc2lvbmFsbHkgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcyBhZGQgImxpYmRpciIgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOU0FORV9TS0lQJz48ZmlsZW5hbWU+SU5TQU5FX1NLSVA8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtZGVidWctZmlsZXMnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgbm9uIGRlYnVnIHBhY2thZ2UgY29udGFpbnMgLmRlYnVnIGRpcmVjdG9yeTogJmx0O3BhY2thZ2VuYW1lJmd0OyBwYXRoICZsdDtwYXRoJmd0OyBbZGVidWctZmlsZXNdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmllZCBwYWNrYWdlIGNvbnRhaW5zIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggc2hvdWxkIG5vdAorICAgICAgICAgICAgICAgICAgICBhcHBlYXIgaW4gYW55dGhpbmcgYnV0IHRoZSA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIG1pZ2h0IG9jY3VyIGlmIHlvdSBhZGQgYSBwYXRoIHdoaWNoIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkIHRoZSA8ZmlsZW5hbWU+LmRlYnVnPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgaXMgdGhlIGNhc2UsIGFkZCB0aGUgPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBleHBsaWNpdGx5IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18ke1BOfS1kYmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtYXJjaCc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICBBcmNoaXRlY3R1cmUgZGlkIG5vdCBtYXRjaCAoJmx0O21hY2hpbmVfYXJjaCZndDsgdG8gJmx0O2ZpbGVfYXJjaCZndDspIG9uICZsdDtmaWxlJmd0OyBbYXJjaF0KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjaGVja3MgdGhlCisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGFibGUgYW5kIExpbmthYmxlIEZvcm1hdCAoRUxGKSB0eXBlLCBiaXQgc2l6ZSwgYW5kCisgICAgICAgICAgICAgICAgICAgIGVuZGlhbm5lc3Mgb2YgYW55IGJpbmFyaWVzIHRvIGVuc3VyZSB0aGV5IG1hdGNoIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRlc3QgZmFpbHMgaWYgYW55IGJpbmFyaWVzIGRvIG5vdCBtYXRjaCB0aGUgdHlwZSBzaW5jZQorICAgICAgICAgICAgICAgICAgICB0aGVyZSB3b3VsZCBiZSBhbiBpbmNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXN0IGNvdWxkIGluZGljYXRlIHRoYXQgdGhlIHdyb25nIGNvbXBpbGVyIG9yIGNvbXBpbGVyCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBzb2Z0d2FyZSwgbGlrZSBib290bG9hZGVycywgbWlnaHQgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBieXBhc3MgdGhpcyBjaGVjay4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGUgeW91IHJlY2VpdmUgdGhlIGVycm9yIGZvciBpcyBmaXJtd2FyZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSBleGVjdXRlZCB3aXRoaW4gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIG9yIGlzIGludGVuZGVkIHRvIHJ1biBvbiBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB3aXRoaW4gdGhlIGRldmljZSwgeW91IGNhbiBhZGQgImFyY2giIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTlNBTkVfU0tJUCc+PGZpbGVuYW1lPklOU0FORV9TS0lQPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBvcHRpb24gaXMgdG8gY2hlY2sgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBsb2cgYW5kIHZlcmlmeSB0aGF0IHRoZSBjb21waWxlciBvcHRpb25zIGJlaW5nIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgYXJlIGNvcnJlY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1hcmNoLWJpdC1zaXplLW5vLW1hdGNoJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIEJpdCBzaXplIGRpZCBub3QgbWF0Y2ggKCZsdDttYWNoaW5lX2JpdHMmZ3Q7IHRvICZsdDtmaWxlX2JpdHMmZ3Q7KSAmbHQ7cmVjaXBlJmd0OyBvbiAmbHQ7ZmlsZSZndDsgW2FyY2hdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2hlY2tzCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeGVjdXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQgKEVMRikgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgYml0IHNpemUsIGFuZCBlbmRpYW5uZXNzIG9mIGFueSBiaW5hcmllcyB0byBlbnN1cmUKKyAgICAgICAgICAgICAgICAgICAgdGhleSBtYXRjaCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0IGZhaWxzIGlmIGFueSBiaW5hcmllcyBkbyBub3QgbWF0Y2ggdGhlIHR5cGUgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhlcmUgd291bGQgYmUgYW4gaW5jb21wYXRpYmlsaXR5LgorICAgICAgICAgICAgICAgICAgICBUaGUgdGVzdCBjb3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB3cm9uZyBjb21waWxlciBvciBjb21waWxlcgorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIGhhdmUgYmVlbiB1c2VkLgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgc29mdHdhcmUsIGxpa2UgYm9vdGxvYWRlcnMsIG1pZ2h0IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgYnlwYXNzIHRoaXMgY2hlY2suCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlIHlvdSByZWNlaXZlIHRoZSBlcnJvciBmb3IgaXMgZmlybXdhcmUgdGhhdAorICAgICAgICAgICAgICAgICAgICBpcyBub3QgaW50ZW5kZWQgdG8gYmUgZXhlY3V0ZWQgd2l0aGluIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSBvciBpcyBpbnRlbmRlZCB0byBydW4gb24gYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Igd2l0aGluIHRoZSBkZXZpY2UsIHlvdSBjYW4gYWRkICJhcmNoIiB0bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5TQU5FX1NLSVAnPjxmaWxlbmFtZT5JTlNBTkVfU0tJUDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIEFub3RoZXIgb3B0aW9uIGlzIHRvIGNoZWNrIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgbG9nIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY29tcGlsZXIgb3B0aW9ucyBiZWluZyB1c2VkIGFyZQorICAgICAgICAgICAgICAgICAgICBjb3JyZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtYXJjaC1lbmRpYW5uZXNzLW5vLW1hdGNoJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIEVuZGlhbm5lc3MgZGlkIG5vdCBtYXRjaCAoJmx0O21hY2hpbmVfZW5kaWFubmVzcyZndDsgdG8gJmx0O2ZpbGVfZW5kaWFubmVzcyZndDspIG9uICZsdDtmaWxlJmd0OyBbYXJjaF0KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjaGVja3MKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4ZWN1dGFibGUgYW5kIExpbmthYmxlIEZvcm1hdCAoRUxGKSB0eXBlLCBiaXQKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSwgYW5kIGVuZGlhbm5lc3Mgb2YgYW55IGJpbmFyaWVzIHRvIGVuc3VyZSB0aGV5CisgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRlc3QgZmFpbHMgaWYgYW55IGJpbmFyaWVzIGRvIG5vdCBtYXRjaCB0aGUgdHlwZSBzaW5jZQorICAgICAgICAgICAgICAgICAgICB0aGVyZSB3b3VsZCBiZSBhbiBpbmNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXN0IGNvdWxkIGluZGljYXRlIHRoYXQgdGhlIHdyb25nIGNvbXBpbGVyIG9yIGNvbXBpbGVyCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgaGF2ZSBiZWVuIHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBzb2Z0d2FyZSwgbGlrZSBib290bG9hZGVycywgbWlnaHQgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBieXBhc3MgdGhpcyBjaGVjay4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGUgeW91IHJlY2VpdmUgdGhlIGVycm9yIGZvciBpcyBmaXJtd2FyZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSBleGVjdXRlZCB3aXRoaW4gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIG9yIGlzIGludGVuZGVkIHRvIHJ1biBvbiBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB3aXRoaW4gdGhlIGRldmljZSwgeW91IGNhbiBhZGQgImFyY2giIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTlNBTkVfU0tJUCc+PGZpbGVuYW1lPklOU0FORV9TS0lQPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBvcHRpb24gaXMgdG8gY2hlY2sgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBsb2cgYW5kIHZlcmlmeSB0aGF0IHRoZSBjb21waWxlciBvcHRpb25zIGJlaW5nIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgYXJlIGNvcnJlY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS10ZXh0cmVsJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIEVMRiBiaW5hcnkgJyZsdDtmaWxlJmd0OycgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgRUxGIGJpbmFyeSBjb250YWlucyByZWxvY2F0aW9ucyBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi50ZXh0PC9maWxlbmFtZT4gc2VjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIGNhbiByZXN1bHQgaW4gYSBwZXJmb3JtYW5jZSBpbXBhY3QKKyAgICAgICAgICAgICAgICAgICAgYXQgcnVudGltZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB0aGUgd2F5IHRvIHNvbHZlIHRoaXMgcGVyZm9ybWFuY2UgaXNzdWUgaXMgdG8KKyAgICAgICAgICAgICAgICAgICAgYWRkICItZlBJQyIgb3IgIi1mcGljIiB0byB0aGUgY29tcGlsZXIgY29tbWFuZC1saW5lCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBnaXZlbiBzb2Z0d2FyZSB0aGF0IHJlYWRzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DRkxBR1MnPjxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2hlbiB5b3UgYnVpbGQgaXQsIHlvdSBjb3VsZCBhZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfYXBwZW5kID0gIiAtZlBJQyAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGV4dCByZWxvY2F0aW9ucyBhdCBydW50aW1lLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5ha2thZGlhLm9yZy9kcmVwcGVyL3RleHRyZWxvY3MuaHRtbCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1sZGZsYWdzJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OiAnJmx0O2ZpbGUmZ3Q7JyBbbGRmbGFnc10KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGluZGljYXRlcyB0aGF0IGJpbmFyaWVzIHByb2R1Y2VkIHdoZW4gYnVpbGRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBoYXZlIG5vdCBiZWVuIGxpbmtlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTERGTEFHUyc+PGZpbGVuYW1lPkxERkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyBwcm92aWRlZCBieSB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBDaGVjayB0byBiZSBzdXJlIHRoYXQgdGhlIDxmaWxlbmFtZT5MREZMQUdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgYmVpbmcgcGFzc2VkIHRvIHRoZSBsaW5rZXIgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gd29ya2Fyb3VuZCBmb3IgdGhpcyBzaXR1YXRpb24gaXMgdG8gcGFzcyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfQ0NfQVJDSCc+PGZpbGVuYW1lPlRBUkdFVF9DQ19BUkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgcmVjaXBlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLXhvcmctZHJpdmVyLWFiaSc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICBQYWNrYWdlICZsdDtwYWNrYWdlbmFtZSZndDsgY29udGFpbnMgWG9yZyBkcml2ZXIgKCZsdDtkcml2ZXImZ3Q7KSBidXQgbm8geG9yZy1hYmktIGRlcGVuZGVuY2llcyBbeG9yZy1kcml2ZXItYWJpXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgcGFja2FnZSBjb250YWlucyBhbiBYb3JnIGRyaXZlciwgYnV0IGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgIGhhdmUgYSBjb3JyZXNwb25kaW5nIEFCSSBwYWNrYWdlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgICAgIFRoZSB4c2VydmVyLXhvcmcgcmVjaXBlIHByb3ZpZGVzIGRyaXZlciBBQkkgbmFtZXMuCisgICAgICAgICAgICAgICAgICAgIEFsbCBkcml2ZXJzIHNob3VsZCBkZXBlbmQgb24gdGhlIEFCSSB2ZXJzaW9ucyB0aGF0IHRoZXkgaGF2ZQorICAgICAgICAgICAgICAgICAgICBiZWVuIGJ1aWx0IGFnYWluc3QuCisgICAgICAgICAgICAgICAgICAgIERyaXZlciByZWNpcGVzIHRoYXQgaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eG9yZy1kcml2ZXItaW5wdXQuaW5jPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnhvcmctZHJpdmVyLXZpZGVvLmluYzwvZmlsZW5hbWU+IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZXQgdGhlc2UgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBvbmx5IG5lZWQgdG8gZXhwbGljaXRseSBhZGQKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIHRvIGJpbmFyeSBkcml2ZXIgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLWluZm9kaXInPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgVGhlIC91c3Ivc2hhcmUvaW5mby9kaXIgZmlsZSBpcyBub3QgbWVhbnQgdG8gYmUgc2hpcHBlZCBpbiBhIHBhcnRpY3VsYXIgcGFja2FnZS4gW2luZm9kaXJdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4vdXNyL3NoYXJlL2luZm8vZGlyPC9maWxlbmFtZT4gc2hvdWxkIG5vdCBiZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZC4KKyAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9yIHRvIHlvdXIgPGZpbGVuYW1lPmRvX2luc3RhbGxfYXBwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSByZWNpcGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBybSAke0R9JHtpbmZvZGlyfS9kaXIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtc3ltbGluay10by1zeXNyb290Jz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIFN5bWxpbmsgJmx0O3BhdGgmZ3Q7IGluICZsdDtwYWNrYWdlbmFtZSZndDsgcG9pbnRzIHRvIFRNUERJUiBbc3ltbGluay10by1zeXNyb290XQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgc3ltbGluayBwb2ludHMgaW50bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBob3N0LgorICAgICAgICAgICAgICAgICAgICBTdWNoIHN5bWxpbmtzIHdpbGwgd29yayBvbiB0aGUgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhleSBhcmUgY2xlYXJseSBpbnZhbGlkIHdoZW4gcnVubmluZyBvbgorICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGVpdGhlciBjb3JyZWN0IHRoZSBzeW1saW5rIHRvIHVzZSBhIHJlbGF0aXZlCisgICAgICAgICAgICAgICAgICAgIHBhdGggb3IgcmVtb3ZlIHRoZSBzeW1saW5rLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtbGEnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgJmx0O2ZpbGUmZ3Q7IGZhaWxlZCBzYW5pdHkgdGVzdCAod29ya2RpcikgaW4gcGF0aCAmbHQ7cGF0aCZndDsgW2xhXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgPGZpbGVuYW1lPi5sYTwvZmlsZW5hbWU+IGZpbGUgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBwYXRocy4KKyAgICAgICAgICAgICAgICAgICAgQW55IDxmaWxlbmFtZT4ubGE8L2ZpbGVuYW1lPiBmaWxlIGNvbnRhaW5pbmcgdGhlc2UgcGF0aHMKKyAgICAgICAgICAgICAgICAgICAgaXMgaW5jb3JyZWN0IHNpbmNlIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT4gYWRkcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29ycmVjdCBzeXNyb290IHByZWZpeCB3aGVuIHVzaW5nIHRoZSBmaWxlcyBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgIGl0c2VsZi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLXBrZ2NvbmZpZyc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICAmbHQ7ZmlsZSZndDsgZmFpbGVkIHNhbml0eSB0ZXN0ICh0bXBkaXIpIGluIHBhdGggJmx0O3BhdGgmZ3Q7IFtwa2djb25maWddCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmllZCA8ZmlsZW5hbWU+LnBjPC9maWxlbmFtZT4gZmlsZSBjb250YWlucworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPi88L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBwYXRocy4KKyAgICAgICAgICAgICAgICAgICAgQW55IDxmaWxlbmFtZT4ucGM8L2ZpbGVuYW1lPiBmaWxlIGNvbnRhaW5pbmcgdGhlc2UgcGF0aHMgaXMKKyAgICAgICAgICAgICAgICAgICAgaW5jb3JyZWN0IHNpbmNlIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4gaXRzZWxmIGFkZHMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvcnJlY3Qgc3lzcm9vdCBwcmVmaXggd2hlbiB0aGUgZmlsZXMgYXJlIGFjY2Vzc2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtZGVidWctZGVwcyc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICAmbHQ7cGFja2FnZW5hbWUmZ3Q7IHJkZXBlbmRzIG9uICZsdDtkZWJ1Z19wYWNrYWdlbmFtZSZndDsgW2RlYnVnLWRlcHNdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBkZXBlbmRlbmN5IGV4aXN0cyBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgbm9uLWRiZyBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIGEgcGFja2FnZSB3aG9zZSBuYW1lIGRvZXMgbm90IGVuZCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+KSBhbmQgYSBwYWNrYWdlIHRoYXQgaXMgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGJnPC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcyBjb250YWluCisgICAgICAgICAgICAgICAgICAgIGRlYnVnIHN5bWJvbHMgYW5kIGFyZSBicm91Z2h0IGluIHVzaW5nIHNldmVyYWwKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IG1ldGhvZHM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT5kYmctcGtnczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhIGRlcGVuZGVuY3kgb2YgYW5vdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlIHRoYXQgd2FzIGJyb3VnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1c2luZyBvbmUgb2YgdGhlIGFib3ZlIG1ldGhvZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVwZW5kZW5jeSBtaWdodCBoYXZlIGJlZW4gYXV0b21hdGljYWxseSBhZGRlZAorICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZSA8ZmlsZW5hbWU+ZGJnPC9maWxlbmFtZT4gcGFja2FnZSBlcnJvbmVvdXNseQorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBmaWxlcyB0aGF0IGl0IHNob3VsZCBub3QgY29udGFpbiAoZS5nLiBhCisgICAgICAgICAgICAgICAgICAgIG5vbi1zeW1saW5rIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlKSBvciBpdCBtaWdodAorICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gYWRkZWQgbWFudWFsbHkgKGUuZy4gYnkgYWRkaW5nIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLWRldi1kZXBzJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgICZsdDtwYWNrYWdlbmFtZSZndDsgcmRlcGVuZHMgb24gJmx0O2Rldl9wYWNrYWdlbmFtZSZndDsgW2Rldi1kZXBzXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgZGVwZW5kZW5jeSBleGlzdHMgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIG5vbi1kZXYgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAoYSBwYWNrYWdlIHdob3NlIG5hbWUgZG9lcyBub3QgZW5kIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4pIGFuZCBhIHBhY2thZ2UgdGhhdCBpcyBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldjwvZmlsZW5hbWU+IHBhY2thZ2VzIGNvbnRhaW4gZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycyBhbmQgYXJlIHVzdWFsbHkgYnJvdWdodCBpbiB1c2luZyBzZXZlcmFsIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICBtZXRob2RzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2LXBrZ3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYSBkZXBlbmRlbmN5IG9mIGFub3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2PC9maWxlbmFtZT4gcGFja2FnZSB0aGF0IHdhcyBicm91Z2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdXNpbmcgb25lIG9mIHRoZSBhYm92ZSBtZXRob2RzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlcGVuZGVuY3kgbWlnaHQgaGF2ZSBiZWVuIGF1dG9tYXRpY2FsbHkgYWRkZWQgKGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlIGVycm9uZW91c2x5IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoYXQgaXQgc2hvdWxkIG5vdCBoYXZlIChlLmcuIGEgbm9uLXN5bWxpbmsKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGUpIG9yIGl0IG1pZ2h0IGhhdmUgYmVlbiBhZGRlZAorICAgICAgICAgICAgICAgICAgICBtYW51YWxseSAoZS5nLiBieSBhZGRpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtZGVwLWNtcCc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICAmbHQ7dmFyJmd0O18mbHQ7cGFja2FnZW5hbWUmZ3Q7IGlzIGludmFsaWQ6ICZsdDtjb21wYXJpc29uJmd0OyAoJmx0O3ZhbHVlJmd0OykgICBvbmx5IGNvbXBhcmlzb25zICZsdDssID0sICZndDssICZsdDs9LCBhbmQgJmd0Oz0gYXJlIGFsbG93ZWQgW2RlcC1jbXBdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBhZGRpbmcgYSB2ZXJzaW9uZWQgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgdG8gb25lCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBkZXBlbmRlbmN5IHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlNVR0dFU1RTJz48ZmlsZW5hbWU+UlNVR0dFU1RTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlBST1ZJREVTJz48ZmlsZW5hbWU+UlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFUExBQ0VTJz48ZmlsZW5hbWU+UlJFUExBQ0VTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkNPTkZMSUNUUyc+PGZpbGVuYW1lPlJDT05GTElDVFM8L2ZpbGVuYW1lPjwvbGluaz4pLAorICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBvbmx5IHVzZSB0aGUgbmFtZWQgY29tcGFyaXNvbiBvcGVyYXRvcnMuCisgICAgICAgICAgICAgICAgICAgIENoYW5nZSB0aGUgdmVyc2lvbmVkIGRlcGVuZGVuY3kgdmFsdWVzIHlvdSBhcmUgYWRkaW5nCisgICAgICAgICAgICAgICAgICAgIHRvIG1hdGNoIHRob3NlIGxpc3RlZCBpbiB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLWNvbXBpbGUtaG9zdC1wYXRoJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgICZsdDtyZWNpcGVuYW1lJmd0OzogVGhlIGNvbXBpbGUgbG9nIGluZGljYXRlcyB0aGF0IGhvc3QgaW5jbHVkZSBhbmQvb3IgbGlicmFyeSBwYXRocyB3ZXJlIHVzZWQuIFBsZWFzZSBjaGVjayB0aGUgbG9nICcmbHQ7bG9nZmlsZSZndDsnIGZvciBtb3JlIGluZm9ybWF0aW9uLiBbY29tcGlsZS1ob3N0LXBhdGhdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvZyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGluZGljYXRlcyB0aGF0IHBhdGhzIG9uIHRoZSBob3N0IHdlcmUgc2VhcmNoZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVzLCB3aGljaCBpcyBub3QgYXBwcm9wcmlhdGUgd2hlbiBjcm9zcy1jb21waWxpbmcuCisgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yICJpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIiBvciAiQ1JPU1MgQ09NUElMRQorICAgICAgICAgICAgICAgICAgICBCYWRuZXNzIiBpbiB0aGUgc3BlY2lmaWVkIGxvZyBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtaW5zdGFsbC1ob3N0LXBhdGgnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgJmx0O3JlY2lwZW5hbWUmZ3Q7OiBUaGUgaW5zdGFsbCBsb2cgaW5kaWNhdGVzIHRoYXQgaG9zdCBpbmNsdWRlIGFuZC9vciBsaWJyYXJ5IHBhdGhzIHdlcmUgdXNlZC4gUGxlYXNlIGNoZWNrIHRoZSBsb2cgJyZsdDtsb2dmaWxlJmd0OycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFtpbnN0YWxsLWhvc3QtcGF0aF0KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9nIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW5kaWNhdGVzIHRoYXQgcGF0aHMgb24gdGhlIGhvc3Qgd2VyZSBzZWFyY2hlZAorICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZXMsIHdoaWNoIGlzIG5vdCBhcHByb3ByaWF0ZSB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKyAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgImlzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24iCisgICAgICAgICAgICAgICAgICAgIG9yICJDUk9TUyBDT01QSUxFIEJhZG5lc3MiIGluIHRoZSBzcGVjaWZpZWQgbG9nIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1hdXRvY29uZi1sb2cnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgVGhpcyBhdXRvY29uZiBsb2cgaW5kaWNhdGVzIGVycm9ycywgaXQgbG9va2VkIGF0IGhvc3QgaW5jbHVkZSBhbmQvb3IgbGlicmFyeSBwYXRocyB3aGlsZSBkZXRlcm1pbmluZyBzeXN0ZW0gY2FwYWJpbGl0aWVzLiBSZXJ1biBjb25maWd1cmUgdGFzayBhZnRlciBmaXhpbmcgdGhpcy4gVGhlIHBhdGggd2FzICcmbHQ7cGF0aCZndDsnCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvZyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBpbmRpY2F0ZXMgdGhhdCBwYXRocyBvbiB0aGUgaG9zdCB3ZXJlIHNlYXJjaGVkCisgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlcywgd2hpY2ggaXMgbm90IGFwcHJvcHJpYXRlIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgorICAgICAgICAgICAgICAgICAgICBMb29rIGZvciAiaXMgdW5zYWZlIGZvciBjcm9zcy1jb21waWxhdGlvbiIgb3IKKyAgICAgICAgICAgICAgICAgICAgIkNST1NTIENPTVBJTEUgQmFkbmVzcyIgaW4gdGhlIHNwZWNpZmllZCBsb2cgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLXBrZ25hbWUnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgJmx0O3BhY2thZ2VuYW1lJmd0OyBkb2Vzbid0IG1hdGNoIHRoZSBbYS16MC05ListXSsgcmVnZXggW3BrZ25hbWVdCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNvbnZlbnRpb24gd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIChzb21ldGltZXMgZW5mb3JjZWQgYnkgdGhlIHBhY2thZ2UgbWFuYWdlciBpdHNlbGYpIGlzIHRvCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUgdGhhdCBwYWNrYWdlIG5hbWVzIGFyZSBhbGwgbG93ZXIgY2FzZQorICAgICAgICAgICAgICAgICAgICBhbmQgdG8gYWxsb3cgYSByZXN0cmljdGVkIHNldCBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHJlY2lwZSBuYW1lIGRvZXMgbm90IG1hdGNoIHRoaXMsIG9yIHlvdSBhZGQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkbyBub3QgY29uZm9ybSB0byB0aGUgY29udmVudGlvbiwgdGhlbiB5b3UKKyAgICAgICAgICAgICAgICAgICAgd2lsbCByZWNlaXZlIHRoaXMgZXJyb3IuCisgICAgICAgICAgICAgICAgICAgIFJlbmFtZSB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHlvdSBoYXZlIGFkZGVkIGEgbm9uLWNvbmZvcm1pbmcgcGFja2FnZSBuYW1lIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+LCBjaGFuZ2UgdGhlIHBhY2thZ2UgbmFtZQorICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZWx5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAmbmJzcDsKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtdW5rbm93bi1jb25maWd1cmUtb3B0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgICZsdDtyZWNpcGUmZ3Q7OiBjb25maWd1cmUgd2FzIHBhc3NlZCB1bnJlY29nbml6ZWQgb3B0aW9uczogJmx0O29wdGlvbnMmZ3Q7IFt1bmtub3duLWNvbmZpZ3VyZS1vcHRpb25dCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgcmVwb3J0aW5nIHRoYXQgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIGFyZSB1bnJlY29nbml6ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIGNvdWxkIGJlIGJlY2F1c2UgdGhlIG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgd2VyZSBwcmV2aW91c2x5IHZhbGlkIGJ1dCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICBPciwgdGhlcmUgd2FzIGEgbWlzdGFrZSB3aGVuIHRoZSBvcHRpb25zIHdlcmUgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZXJlIGlzIGFub3RoZXIgb3B0aW9uIHRoYXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bnN1cmUsIGNvbnN1bHQgdGhlIHVwc3RyZWFtIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li9jb25maWd1cmUgLS1oZWxwPC9maWxlbmFtZT4gb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHVwc3RyZWFtIGNoYW5nZSBsb2cgb3IgcmVsZWFzZSBub3Rlcy4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB3b3JrZWQgb3V0IHdoYXQgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZSBpcywgeW91IGNhbiB1cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUdfQ09ORkFSR1MnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBvciB0aGUgaW5kaXZpZHVhbAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlcyBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLXBuLW92ZXJyaWRlcyc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICBSZWNpcGUgJmx0O3JlY2lwZWZpbGUmZ3Q7IGhhcyBQTiBvZiAiJmx0O3JlY2lwZW5hbWUmZ3Q7IiB3aGljaCBpcyBpbiBPVkVSUklERVMsIHRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW9yLiBbcG4tb3ZlcnJpZGVzXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgcmVjaXBlIGhhcyBhIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSB0aGF0IGFwcGVhcnMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU9WRVJSSURFUyc+PGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgaXMgbmFtZWQgc3VjaCB0aGF0IGl0cyA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBtYXRjaGVzIHNvbWV0aGluZyBhbHJlYWR5IGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPiAoZS5nLiA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBoYXBwZW5zIHRvIGJlIHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L2xpbms+KSwKKyAgICAgICAgICAgICAgICAgICAgaXQgY2FuIGhhdmUgdW5leHBlY3RlZCBjb25zZXF1ZW5jZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhc3NpZ25tZW50cyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18ke1BOfSA9ICJ4eXoiPC9maWxlbmFtZT4gZWZmZWN0aXZlbHkKKyAgICAgICAgICAgICAgICAgICAgdHVybiBpbnRvIDxmaWxlbmFtZT5GSUxFUyA9ICJ4eXoiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFJlbmFtZSB5b3VyIHJlY2lwZSAob3IgaWYgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gaXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgc2V0IGV4cGxpY2l0bHksIGNoYW5nZSB0aGUgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gdmFsdWUpIHNvCisgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIGNvbmZsaWN0IGRvZXMgbm90IG9jY3VyLgorICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1wa2d2YXJjaGVjayc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICAmbHQ7cmVjaXBlZmlsZSZndDs6IFZhcmlhYmxlICZsdDt2YXJpYWJsZSZndDsgaXMgc2V0IGFzIG5vdCBiZWluZyBwYWNrYWdlIHNwZWNpZmljLCBwbGVhc2UgZml4IHRoaXMuIFtwa2d2YXJjaGVja10KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDZXJ0YWluIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlNVR0dFU1RTJz48ZmlsZW5hbWU+UlNVR0dFU1RTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkNPTkZMSUNUUyc+PGZpbGVuYW1lPlJDT05GTElDVFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUFJPVklERVMnPjxmaWxlbmFtZT5SUFJPVklERVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVQTEFDRVMnPjxmaWxlbmFtZT5SUkVQTEFDRVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3ByZWluc3Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3ByZXJtPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdHJtPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGFsd2F5cyBiZSBzZXQgc3BlY2lmaWMgdG8gYSBwYWNrYWdlIChpLmUuIHRoZXkKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHNldCB3aXRoIGEgcGFja2FnZSBuYW1lIG92ZXJyaWRlIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTXyR7UE59ID0gInZhbHVlIjwvZmlsZW5hbWU+IHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUyA9ICJ2YWx1ZSI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSByZWNlaXZlIHRoaXMgZXJyb3IsIGNvcnJlY3QgYW55IGFzc2lnbm1lbnRzIHRvIHRoZXNlCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB3aXRoaW4geW91ciByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1hbHJlYWR5LXN0cmlwcGVkJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIEZpbGUgJyZsdDtmaWxlJmd0OycgZnJvbSAmbHQ7cmVjaXBlbmFtZSZndDsgd2FzIGFscmVhZHkgc3RyaXBwZWQsIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchIFthbHJlYWR5LXN0cmlwcGVkXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFByb2R1Y2VkIGJpbmFyaWVzIGhhdmUgYWxyZWFkeSBiZWVuIHN0cmlwcGVkIHByaW9yIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gZXh0cmFjdGluZyBkZWJ1ZyBzeW1ib2xzLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBjb21tb24gZm9yIHVwc3RyZWFtIHNvZnR3YXJlIHByb2plY3RzIHRvIGRlZmF1bHQgdG8KKyAgICAgICAgICAgICAgICAgICAgc3RyaXBwaW5nIGRlYnVnIHN5bWJvbHMgZm9yIG91dHB1dCBiaW5hcmllcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGRlYnVnZ2luZyB0byB3b3JrIG9uIHRoZSB0YXJnZXQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcywgdGhpcyBzdHJpcHBpbmcgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBidWlsZCBzeXN0ZW0gdXNlZCBieSB0aGUgc29mdHdhcmUgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQsIGRpc2FibGluZyB0aGlzIHN0cmlwcGluZyBjb3VsZCBiZSBhcyBlYXN5IGFzCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgYW4gYWRkaXRpb25hbCBjb25maWd1cmUgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBJZiBub3QsIGRpc2FibGluZyBzdHJpcHBpbmcgbWlnaHQgaW52b2x2ZSBwYXRjaGluZworICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc2NyaXB0cy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGxhdHRlciBjYXNlLCBsb29rIGZvciByZWZlcmVuY2VzIHRvICJzdHJpcCIgb3IKKyAgICAgICAgICAgICAgICAgICAgIlNUUklQIiwgb3IgdGhlICItcyIgb3IgIi1TIiBjb21tYW5kLWxpbmUgb3B0aW9ucyBiZWluZworICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgb24gdGhlIGxpbmtlciBjb21tYW5kIGxpbmUgKHBvc3NpYmx5CisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIGNvbXBpbGVyIGNvbW1hbmQgbGluZSBpZiBwcmVjZWRlZCB3aXRoICItV2wsIikuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsaW5nIHN0cmlwcGluZyBoZXJlIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VkIGJpbmFyaWVzIHdpbGwgYmUgdW5zdHJpcHBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc3BsaXRzIG91dCBkZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9scyB0byB0aGUgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgaXQgd2lsbCB0aGVuIHN0cmlwIHRoZSBzeW1ib2xzIGZyb20gdGhlIGJpbmFyaWVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1wYWNrYWdlcy1saXN0Jz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgICZsdDtwYWNrYWdlbmFtZSZndDsgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIFtwYWNrYWdlcy1saXN0XQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgbmFtZXMgbXVzdCBhcHBlYXIgb25seSBvbmNlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IHJlY2VpdmUgdGhpcyBlcnJvciBpZiB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gYWRkIGEKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSB0byA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPiB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgaW4gdGhlIHZhcmlhYmxlJ3MgdmFsdWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1maWxlcy1pbnZhbGlkJz4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+CisgICAgIEZJTEVTIHZhcmlhYmxlIGZvciBwYWNrYWdlICZsdDtwYWNrYWdlbmFtZSZndDsgY29udGFpbnMgJy8vJyB3aGljaCBpcyBpbnZhbGlkLiBBdHRlbXB0aW5nIHRvIGZpeCB0aGlzIGJ1dCB5b3Ugc2hvdWxkIGNvcnJlY3QgdGhlIG1ldGFkYXRhLiBbZmlsZXMtaW52YWxpZF0KKyAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgc3RyaW5nICIvLyIgaXMgaW52YWxpZCBpbiBhIFVuaXggcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgQ29ycmVjdCBhbGwgb2NjdXJyZW5jZXMgd2hlcmUgdGhpcyBzdHJpbmcgYXBwZWFycyBpbiBhCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNvIHRoYXQgdGhlcmUgaXMgb25seSBhIHNpbmdsZSAiLyIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICZuYnNwOworICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdxYS1pc3N1ZS1pbnN0YWxsZWQtdnMtc2hpcHBlZCc+CisgICAgICAgICAgICAgICAgICAgIDxjb2RlPgorICAgICAgJmx0O3JlY2lwZW5hbWUmZ3Q7OiBGaWxlcy9kaXJlY3RvcmllcyB3ZXJlIGluc3RhbGxlZCBidXQgbm90IHNoaXBwZWQgaW4gYW55IHBhY2thZ2UgW2luc3RhbGxlZC12cy1zaGlwcGVkXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZpbGVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBidXQgaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiBhbnkgcGFja2FnZSBieSB3YXkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBGaWxlcyB0aGF0IGRvIG5vdCBhcHBlYXIgaW4gYW55IHBhY2thZ2UgY2Fubm90IGJlIHByZXNlbnQgaW4KKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgbGF0ZXIgb24gaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZmlsZXMgdG8gPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgeW91IHdhbnQgdGhlbSB0byBhcHBlYXIgaW4gKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVNfJHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiBmb3IgdGhlIG1haW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGZpbGVzIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiB0YXNrIGlmIHRoZSBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgbmVlZGVkIGluIGFueSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3FhLWlzc3VlLW9sZC1hbmQtbmV3LXBhY2thZ2UtYW5kLXZlcnNpb24tbmFtZXMnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgJmx0O29sZHBhY2thZ2UmZ3Q7LSZsdDtvbGRwa2d2ZXJzaW9uJmd0OyB3YXMgcmVnaXN0ZXJlZCBhcyBzaGxpYiBwcm92aWRlciBmb3IgJmx0O2xpYnJhcnkmZ3Q7LCBjaGFuZ2luZyBpdCB0byAmbHQ7bmV3cGFja2FnZSZndDstJmx0O25ld3BrZ3ZlcnNpb24mZ3Q7IGJlY2F1c2UgaXQgd2FzIGJ1aWx0IGxhdGVyCisgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXNzYWdlIG1lYW5zIHRoYXQgYm90aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Jmx0O29sZHBhY2thZ2UmZ3Q7PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mbHQ7bmV3cGFja2FnZSZndDs8L2ZpbGVuYW1lPiBwcm92aWRlIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZXhwZWN0IHRoaXMgbWVzc2FnZSB3aGVuIGEgcmVjaXBlIGhhcyBiZWVuIHJlbmFtZWQuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHRoYXQgaXMgbm90IHRoZSBjYXNlLCB0aGUgbWVzc2FnZSBtaWdodCBpbmRpY2F0ZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGEgcHJpdmF0ZSB2ZXJzaW9uIG9mIGEgbGlicmFyeSBpcyBiZWluZyBlcnJvbmVvdXNseQorICAgICAgICAgICAgICAgICAgICBwaWNrZWQgdXAgYXMgdGhlIHByb3ZpZGVyIGZvciBhIGNvbW1vbiBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgICBJZiB0aGF0IGlzIHRoZSBjYXNlLCB5b3Ugc2hvdWxkIGFkZCB0aGUgbGlicmFyeSdzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlIG5hbWUgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSSVZBVEVfTElCUyc+PGZpbGVuYW1lPlBSSVZBVEVfTElCUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjaXBlIHRoYXQgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0ncWEtaXNzdWUtdW5saXN0ZWQtcGtnLWxpY3MnPgorICAgICAgICAgICAgICAgICAgICA8Y29kZT4KKyAgICAgTElDRU5TRV8mbHQ7cGFja2FnZW5hbWUmZ3Q7IGluY2x1ZGVzIGxpY2Vuc2VzICgmbHQ7bGljZW5zZXMmZ3Q7KSB0aGF0IGFyZSBub3QgbGlzdGVkIGluIExJQ0VOU0UgW3VubGlzdGVkLXBrZy1saWNzXQorICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKwkJICAgIG9mIHRoZSByZWNpcGUgc2hvdWxkIGJlIGEgc3VwZXJzZXQgb2YgYWxsIHRoZSBsaWNlbnNlcyBvZgorCQkgICAgYWxsIHBhY2thZ2VzIHByb2R1Y2VkIGJ5IHRoaXMgcmVjaXBlLgorCQkgICAgSW4gb3RoZXIgd29yZHMsIGFueSBsaWNlbnNlIGluIDxmaWxlbmFtZT5MSUNFTlNFXyo8L2ZpbGVuYW1lPgorCQkgICAgc2hvdWxkIGFsc28gYXBwZWFyIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgJm5ic3A7CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nY29uZmlndXJpbmctYW5kLWRpc2FibGluZy1xYS1jaGVja3MnPgorICAgIDx0aXRsZT5Db25maWd1cmluZyBhbmQgRGlzYWJsaW5nIFFBIENoZWNrczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBjb25maWd1cmUgdGhlIFFBIGNoZWNrcyBnbG9iYWxseSBzbyB0aGF0IHNwZWNpZmljIGNoZWNrCisgICAgICAgIGZhaWx1cmVzIGVpdGhlciByYWlzZSBhIHdhcm5pbmcgb3IgYW4gZXJyb3IgbWVzc2FnZSwgdXNpbmcgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XQVJOX1FBJz48ZmlsZW5hbWU+V0FSTl9RQTwvZmlsZW5hbWU+PC9saW5rPiBhbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVSUk9SX1FBJz48ZmlsZW5hbWU+RVJST1JfUUE8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgdmFyaWFibGVzLCByZXNwZWN0aXZlbHkuCisgICAgICAgIFlvdSBjYW4gYWxzbyBkaXNhYmxlIGNoZWNrcyB3aXRoaW4gYSBwYXJ0aWN1bGFyIHJlY2lwZSB1c2luZworICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5TQU5FX1NLSVAnPjxmaWxlbmFtZT5JTlNBTkVfU0tJUDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB3b3JrIHdpdGggdGhlIFFBIGNoZWNrcywgc2VlIHRoZQorICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBRQSBjaGVja3MgZXhpc3QgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgIGRldGVjdCByZWFsIG9yIHBvdGVudGlhbCBwcm9ibGVtcyBpbiB0aGUgcGFja2FnZWQgb3V0cHV0LgorICAgICAgICAgICAgU28gZXhlcmNpc2UgY2F1dGlvbiB3aGVuIGRpc2FibGluZyB0aGVzZSBjaGVja3MuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1yZWxlYXNlLXByb2Nlc3MucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy5yc3QKaW5kZXggMTcyMzg1Yy4uYmUwNDFlNyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBZb2N0byBQcm9qZWN0IFJlbGVhc2VzIGFuZCB0aGUgU3RhYmxlIFJlbGVhc2UgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2Y1MzA4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwKQEAgLTAsMCArMSwyNTYgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ncmVmLXJlbGVhc2UtcHJvY2Vzcyc+Cis8dGl0bGU+WW9jdG8gUHJvamVjdCBSZWxlYXNlcyBhbmQgdGhlIFN0YWJsZSBSZWxlYXNlIFByb2Nlc3M8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGUgWW9jdG8gUHJvamVjdCByZWxlYXNlIHByb2Nlc3MgaXMgcHJlZGljdGFibGUgYW5kIGNvbnNpc3RzIG9mIGJvdGgKKyAgICBtYWpvciBhbmQgbWlub3IgKHBvaW50KSByZWxlYXNlcy4KKyAgICBUaGlzIGJyaWVmIGNoYXB0ZXIgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHJlbGVhc2VzIGFyZSBuYW1lZCwgdGhlaXIKKyAgICBsaWZlIGN5Y2xlLCBhbmQgdGhlaXIgc3RhYmlsaXR5LgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nbWFqb3ItYW5kLW1pbm9yLXJlbGVhc2UtY2FkZW5jZSc+CisgICAgPHRpdGxlPk1ham9yIGFuZCBNaW5vciBSZWxlYXNlIENhZGVuY2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGRlbGl2ZXJzIG1ham9yIHJlbGVhc2VzIChlLmcuICZESVNUUk87KSB1c2luZyBhIHNpeAorICAgICAgICBtb250aCBjYWRlbmNlIHJvdWdobHkgdGltZWQgZWFjaCBBcHJpbCBhbmQgT2N0b2JlciBvZiB0aGUgeWVhci4KKyAgICAgICAgRm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiBzb21lIG1ham9yIFlQIHJlbGVhc2VzIHdpdGggdGhlaXIgY29kZW5hbWVzCisgICAgICAgIGFsc28gc2hvd24uCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21ham9yLXJlbGVhc2UtY29kZW5hbWVzJz5NYWpvciBSZWxlYXNlIENvZGVuYW1lczwvbGluaz4iCisgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGNvZGVuYW1lcyB1c2VkIHdpdGggbWFqb3IgcmVsZWFzZXMuCisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAyLjIgKE1vcnR5KQorICAgIDIuMSAoS3JvZ290aCkKKyAgICAyLjAgKEpldGhybykKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBXaGlsZSB0aGUgY2FkZW5jZSBpcyBuZXZlciBwZXJmZWN0LCB0aGlzIHRpbWVzY2FsZSBmYWNpbGl0YXRlcworICAgICAgICByZWd1bGFyIHJlbGVhc2VzIHRoYXQgaGF2ZSBzdHJvbmcgUUEgY3ljbGVzIHdoaWxlIG5vdCBvdmVyd2hlbG1pbmcKKyAgICAgICAgdXNlcnMgd2l0aCB0b28gbWFueSBuZXcgcmVsZWFzZXMuCisgICAgICAgIFRoZSBjYWRlbmNlIGlzIHByZWRpY3RhYmxlIGFuZCBhdm9pZHMgbWFueSBtYWpvciBob2xpZGF5cyBpbiB2YXJpb3VzCisgICAgICAgIGdlb2dyYXBoaWVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gcHJvamVjdCBkZWxpdmVycyBtaW5vciAocG9pbnQpIHJlbGVhc2VzIG9uIGFuIHVuc2NoZWR1bGVkCisgICAgICAgIGJhc2lzIGFuZCBhcmUgdXN1YWxseSBkcml2ZW4gYnkgdGhlIGFjY3VtdWxhdGlvbiBvZiBlbm91Z2ggc2lnbmlmaWNhbnQKKyAgICAgICAgZml4ZXMgb3IgZW5oYW5jZW1lbnRzIHRvIHRoZSBhc3NvY2lhdGVkIG1ham9yIHJlbGVhc2UuCisgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlIHBhc3QgcG9pbnQgcmVsZWFzZXM6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAyLjEuMQorICAgIDIuMS4yCisgICAgMi4yLjEKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBUaGUgcG9pbnQgcmVsZWFzZSBpbmRpY2F0ZXMgYSBwb2ludCBpbiB0aGUgbWFqb3IgcmVsZWFzZSBicmFuY2ggd2hlcmUKKyAgICAgICAgYSBmdWxsIFFBIGN5Y2xlIGFuZCByZWxlYXNlIHByb2Nlc3MgdmFsaWRhdGVzIHRoZSBjb250ZW50IG9mIHRoZSBuZXcKKyAgICAgICAgYnJhbmNoLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFJlYWxpemUgdGhhdCB0aGVyZSBjYW4gYmUgcGF0Y2hlcyBtZXJnZWQgb250byB0aGUgc3RhYmxlIHJlbGVhc2UKKyAgICAgICAgICAgIGJyYW5jaGVzIGFzIGFuZCB3aGVuIHRoZXkgYmVjb21lIGF2YWlsYWJsZS4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21ham9yLXJlbGVhc2UtY29kZW5hbWVzJz4KKyAgICA8dGl0bGU+TWFqb3IgUmVsZWFzZSBDb2RlbmFtZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEVhY2ggbWFqb3IgcmVsZWFzZSByZWNlaXZlcyBhIGNvZGVuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUgcmVsZWFzZSBpbgorICAgICAgICB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgIFRoZSBjb25jZXB0IGlzIHRoYXQgYnJhbmNoZXMgb2YKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgorICAgICAgICB3aXRoIHRoZSBzYW1lIGNvZGVuYW1lIGFyZSBsaWtlbHkgdG8gYmUgY29tcGF0aWJsZSBhbmQgdGh1cworICAgICAgICB3b3JrIHRvZ2V0aGVyLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIENvZGVuYW1lcyBhcmUgYXNzb2NpYXRlZCB3aXRoIG1ham9yIHJlbGVhc2VzIGJlY2F1c2UgYSBZb2N0bworICAgICAgICAgICAgUHJvamVjdCByZWxlYXNlIG51bWJlciAoZS5nLiAmRElTVFJPOykgY291bGQgY29uZmxpY3Qgd2l0aAorICAgICAgICAgICAgYSBnaXZlbiBsYXllciBvciBjb21wYW55IHZlcnNpb25pbmcgc2NoZW1lLgorICAgICAgICAgICAgQ29kZW5hbWVzIGFyZSB1bmlxdWUsIGludGVyZXN0aW5nLCBhbmQgZWFzaWx5IGlkZW50aWZpYWJsZS4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBSZWxlYXNlcyBhcmUgZ2l2ZW4gYSBub21pbmFsIHJlbGVhc2UgdmVyc2lvbiBhcyB3ZWxsIGJ1dCB0aGUgY29kZW5hbWUKKyAgICAgICAgaXMgdXNlZCBpbiByZXBvc2l0b3JpZXMgZm9yIHRoaXMgcmVhc29uLgorICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gWW9jdG8gUHJvamVjdCByZWxlYXNlcyBhbmQgY29kZW5hbWVzIGF0CisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvUmVsZWFzZXMnPjwvdWxpbms+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3N0YWJsZS1yZWxlYXNlLXByb2Nlc3MnPgorICAgIDx0aXRsZT5TdGFibGUgUmVsZWFzZSBQcm9jZXNzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBPbmNlIHJlbGVhc2VkLCB0aGUgcmVsZWFzZSBlbnRlcnMgdGhlIHN0YWJsZSByZWxlYXNlIHByb2Nlc3MgYXQgd2hpY2gKKyAgICAgICAgdGltZSBhIHBlcnNvbiBpcyBhc3NpZ25lZCBhcyB0aGUgbWFpbnRhaW5lciBmb3IgdGhhdCBzdGFibGUgcmVsZWFzZS4KKyAgICAgICAgVGhpcyBtYWludGFpbmVyIG1vbml0b3JzIGFjdGl2aXR5IGZvciB0aGUgcmVsZWFzZSBieSBpbnZlc3RpZ2F0aW5nCisgICAgICAgIGFuZCBoYW5kbGluZyBub21pbmF0ZWQgcGF0Y2hlcyBhbmQgYmFja3BvcnQgYWN0aXZpdHkuCisgICAgICAgIE9ubHkgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyB0aGF0IGhhdmUgZmlyc3QgYmVlbiBhcHBsaWVkIG9uIHRoZQorICAgICAgICAibWFzdGVyIiBicmFuY2ggKGkuZS4gdGhlIGN1cnJlbnQsIGluLWRldmVsb3BtZW50IGJyYW5jaCkgYXJlCisgICAgICAgIGNvbnNpZGVyZWQgZm9yIGJhY2twb3J0aW5nIHRvIGEgc3RhYmxlIHJlbGVhc2UuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhlIGN1cnJlbnQgWW9jdG8gUHJvamVjdCBwb2xpY3kgcmVnYXJkaW5nIGJhY2twb3J0aW5nIGlzIHRvCisgICAgICAgICAgICBjb25zaWRlciBidWcgZml4ZXMgYW5kIHNlY3VyaXR5IGZpeGVzIG9ubHkuCisgICAgICAgICAgICBQb2xpY3kgZGljdGF0ZXMgdGhhdCBmZWF0dXJlcyBhcmUgbm90IGJhY2twb3J0ZWQgdG8gYSBzdGFibGUKKyAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICBUaGlzIHBvbGljeSBtZWFucyBnZW5lcmljIHJlY2lwZSB2ZXJzaW9uIHVwZ3JhZGVzIGFyZSB1bmxpa2VseSB0bworICAgICAgICAgICAgYmUgYWNjZXB0ZWQgZm9yIGJhY2twb3J0aW5nLgorICAgICAgICAgICAgVGhlIGV4Y2VwdGlvbiB0byB0aGlzIHBvbGljeSBvY2N1cnMgd2hlbiBhIHN0cm9uZyByZWFzb24gZXhpc3RzCisgICAgICAgICAgICBzdWNoIGFzIHRoZSBmaXggaGFwcGVucyB0byBhbHNvIGJlIHRoZSBwcmVmZXJyZWQgdXBzdHJlYW0gYXBwcm9hY2guCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU3RhYmxlIHJlbGVhc2UgYnJhbmNoZXMgaGF2ZSBzdHJvbmcgbWFpbnRlbmFuY2UgZm9yIGFib3V0IGEgeWVhciBhZnRlcgorICAgICAgICB0aGVpciBpbml0aWFsIHJlbGVhc2UuCisgICAgICAgIFNob3VsZCBzaWduaWZpY2FudCBpc3N1ZXMgYmUgZm91bmQgZm9yIGFueSByZWxlYXNlIHJlZ2FyZGxlc3Mgb2YgaXRzCisgICAgICAgIGFnZSwgZml4ZXMgY291bGQgYmUgYmFja3BvcnRlZCB0byBvbGRlciByZWxlYXNlcy4KKyAgICAgICAgRm9yIGlzc3VlcyB0aGF0IGFyZSBub3QgYmFja3BvcnRlZCBnaXZlbiBhbiBvbGRlciByZWxlYXNlLAorICAgICAgICBDb21tdW5pdHkgTFRTIHRyZWVzIGFuZCBicmFuY2hlcyBleGlzdCB3aGVyZQorICAgICAgICBjb21tdW5pdHkgbWVtYmVycyBzaGFyZSBwYXRjaGVzIGZvciBvbGRlciByZWxlYXNlcy4KKyAgICAgICAgSG93ZXZlciwgdGhlc2UgdHlwZXMgb2YgcGF0Y2hlcyBkbyBub3QgZ28gdGhyb3VnaCB0aGUgc2FtZSByZWxlYXNlCisgICAgICAgIHByb2Nlc3MgYXMgZG8gcG9pbnQgcmVsZWFzZXMuCisgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHN0YWJsZSBicmFuY2ggbWFpbnRlbmFuY2UgYXQKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9TdGFibGVfYnJhbmNoX21haW50ZW5hbmNlJz48L3VsaW5rPi4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSd0ZXN0aW5nLWFuZC1xdWFsaXR5LWFzc3VyYW5jZSc+CisgICAgPHRpdGxlPlRlc3RpbmcgYW5kIFF1YWxpdHkgQXNzdXJhbmNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBQYXJ0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGFuZCByZWxlYXNlIHByb2Nlc3MgaXMgcXVhbGl0eQorICAgICAgICBhc3N1cmFuY2UgdGhyb3VnaCB0aGUgZXhlY3V0aW9uIG9mIHRlc3Qgc3RyYXRlZ2llcy4KKyAgICAgICAgVGVzdCBzdHJhdGVnaWVzIHByb3ZpZGUgdGhlIFlvY3RvIFByb2plY3QgdGVhbSBhIHdheSB0byBlbnN1cmUgYQorICAgICAgICByZWxlYXNlIGlzIHZhbGlkYXRlZC4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBiZWNhdXNlIHRoZSB0ZXN0IHN0cmF0ZWdpZXMgYXJlIHZpc2libGUgdG8geW91IGFzIGEKKyAgICAgICAgZGV2ZWxvcGVyLCB5b3UgY2FuIHZhbGlkYXRlIHlvdXIgcHJvamVjdHMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBvdmVydmlld3MgdGhlIGF2YWlsYWJsZSB0ZXN0IGluZnJhc3RydWN0dXJlIHVzZWQgaW4gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcnVuIGF2YWlsYWJsZSB0ZXN0cyBvbiB5b3VyIHByb2plY3RzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFFBL3Rlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgd292ZW4gaW50byB0aGUgcHJvamVjdCB0byB0aGUgcG9pbnQKKyAgICAgICAgd2hlcmUgY29yZSBkZXZlbG9wZXJzIHRha2Ugc29tZSBvZiBpdCBmb3IgZ3JhbnRlZC4KKyAgICAgICAgVGhlIGluZnJhc3RydWN0dXJlIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgcGllY2VzOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQSBzdGFuZGFsb25lIGNvbW1hbmQgdGhhdCBydW5zIHVuaXQgdGVzdHMgb24ga2V5IHBpZWNlcyBvZgorICAgICAgICAgICAgICAgIEJpdEJha2UgYW5kIGl0cyBmZXRjaGVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zYW5pdHknPjxmaWxlbmFtZT5zYW5pdHkuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBUaGlzIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQgY2xhc3MgY2hlY2tzIHRoZSBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgIGZvciBtaXNzaW5nIHRvb2xzIChlLmcuIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPikgb3IgY29tbW9uCisgICAgICAgICAgICAgICAgbWlzY29uZmlndXJhdGlvbnMgc3VjaCBhcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHNldCBpbmNvcnJlY3RseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmUuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIGNoZWNrcyB0aGUgZ2VuZXJhdGVkIG91dHB1dCBmcm9tIGJ1aWxkcyBmb3Igc2FuaXR5LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBidWlsZGluZyBmb3IgYW4gQVJNIHRhcmdldCwgZGlkIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIHByb2R1Y2UgQVJNIGJpbmFyaWVzLgorICAgICAgICAgICAgICAgIElmLCBmb3IgZXhhbXBsZSwgdGhlIGJ1aWxkIHByb2R1Y2VkIFBQQyBiaW5hcmllcyB0aGVuIHRoZXJlCisgICAgICAgICAgICAgICAgaXMgYSBwcm9ibGVtLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXRlc3RpbWFnZSonPjxmaWxlbmFtZT50ZXN0aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIHBlcmZvcm1zIHJ1bnRpbWUgdGVzdGluZyBvZiBpbWFnZXMgYWZ0ZXIgdGhleSBhcmUKKyAgICAgICAgICAgICAgICBidWlsdC4KKyAgICAgICAgICAgICAgICBUaGUgdGVzdHMgYXJlIHVzdWFsbHkgdXNlZCB3aXRoCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5RRU1VPC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBib290IHRoZSBpbWFnZXMgYW5kIGNoZWNrIHRoZSBjb21iaW5lZCBydW50aW1lIHJlc3VsdAorICAgICAgICAgICAgICAgIGJvb3Qgb3BlcmF0aW9uIGFuZCBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHRlc3QgY2FuIGFsc28gdXNlIHRoZSBJUCBhZGRyZXNzIG9mIGEgbWFjaGluZSB0bworICAgICAgICAgICAgICAgIHRlc3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdGVzdGluZy1wYWNrYWdlcy13aXRoLXB0ZXN0Jz48ZmlsZW5hbWU+cHRlc3Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgIFJ1bnMgdGVzdHMgYWdhaW5zdCBwYWNrYWdlcyBwcm9kdWNlZCBkdXJpbmcgdGhlIGJ1aWxkIGZvciBhCisgICAgICAgICAgICAgICAgZ2l2ZW4gcGllY2Ugb2Ygc29mdHdhcmUuCisgICAgICAgICAgICAgICAgVGhlIHRlc3QgYWxsb3dzIHRoZSBwYWNrYWdlcyB0byBiZSBiZSBydW4gd2l0aGluIGEgdGFyZ2V0CisgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgVGVzdHMgY29tYmluYXRpb24gQml0QmFrZSBpbnZvY2F0aW9ucy4KKyAgICAgICAgICAgICAgICBUaGVzZSB0ZXN0cyBvcGVyYXRlIG91dHNpZGUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBpdHNlbGYuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+IGNhbiBydW4gYWxsIHRlc3RzIGJ5CisgICAgICAgICAgICAgICAgZGVmYXVsdCBvciBjYW4gcnVuIHNlbGVjdGVkIHRlc3RzIG9yIHRlc3Qgc3VpdGVzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+IHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgIGhvc3QgcGFja2FnZXMgYmV5b25kIHRoZSAiRXNzZW50aWFsIiBncm91cGluZy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1idWlsZC1ob3N0Jz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEJ1aWxkIEhvc3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE9yaWdpbmFsbHksIG11Y2ggb2YgdGhpcyB0ZXN0aW5nIHdhcyBkb25lIG1hbnVhbGx5LgorICAgICAgICBIb3dldmVyLCBzaWduaWZpY2FudCBlZmZvcnQgaGFzIGJlZW4gbWFkZSB0byBhdXRvbWF0ZSB0aGUgdGVzdHMgc28KKyAgICAgICAgdGhhdCBtb3JlIHBlb3BsZSBjYW4gdXNlIHRoZW0gYW5kIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IHRlYW0KKyAgICAgICAgY2FuIHJ1biB0aGVtIGZhc3RlciBhbmQgbW9yZSBlZmZpY2llbnRseS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QncyBtYWluIEF1dG9idWlsZGVyCisgICAgICAgICg8ZmlsZW5hbWU+YXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+KSBwdWJsaWNseSB0ZXN0cworICAgICAgICBlYWNoIFlvY3RvIFByb2plY3QgcmVsZWFzZSdzIGNvZGUgaW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+LCBQb2t5LCBhbmQgQml0QmFrZQorICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgIFRoZSB0ZXN0aW5nIG9jY3VycyBmb3IgYm90aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKKyAgICAgICAgIm1hc3RlciIgYnJhbmNoIGFuZCBhbHNvIGZvciBzdWJtaXR0ZWQgcGF0Y2hlcy4KKyAgICAgICAgVGVzdGluZyBmb3Igc3VibWl0dGVkIHBhdGNoZXMgdXN1YWxseSBvY2N1cnMgaW4gdGhlCisgICAgICAgICJyb3NzL211dCIgYnJhbmNoIGluIHRoZSA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4gcmVwb3NpdG9yeQorICAgICAgICAoaS5lLiB0aGUgbWFzdGVyLXVuZGVyLXRlc3QgYnJhbmNoKSBvciBpbiB0aGUgIm1hc3Rlci1uZXh0IiBicmFuY2gKKyAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWxsIHRoZXNlIGJyYW5jaGVzIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBUZXN0aW5nIHdpdGhpbiB0aGVzZSBwdWJsaWMgYnJhbmNoZXMgZW5zdXJlcyBpbiBhIHB1YmxpY2x5IHZpc2libGUgd2F5CisgICAgICAgIHRoYXQgYWxsIG9mIHRoZSBtYWluIHN1cHBvc2VkIGFyY2hpdGVjdHVyZXMgYW5kIHJlY2lwZXMgaW4gT0UtQ29yZQorICAgICAgICBzdWNjZXNzZnVsbHkgYnVpbGQgYW5kIGJlaGF2ZSBwcm9wZXJseS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVmFyaW91cyBmZWF0dXJlcyBzdWNoIGFzIDxmaWxlbmFtZT5tdWx0aWxpYjwvZmlsZW5hbWU+LCBzdWIKKyAgICAgICAgYXJjaGl0ZWN0dXJlcyAoZS5nLiA8ZmlsZW5hbWU+eDMyPC9maWxlbmFtZT4sCisgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPm11c2w8L2ZpbGVuYW1lPiwKKyAgICAgICAgPGZpbGVuYW1lPm5vLXgxMTwvZmlsZW5hbWU+IGFuZCBhbmQgc28gZm9ydGgpLAorICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1zZWxmdGVzdDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT4gYXJlIHRlc3RlZCBhcyBwYXJ0IG9mCisgICAgICAgIHRoZSBRQSBwcm9jZXNzIG9mIGEgcmVsZWFzZS4KKyAgICAgICAgQ29tcGxldGUgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiBmb3IgYSByZWxlYXNlIHRha2VzIHRoZSBBdXRvYnVpbGRlcgorICAgICAgICB3b3JrZXJzIHNldmVyYWwgaG91cnMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhlIEF1dG9idWlsZGVyIHdvcmtlcnMgYXJlIG5vbi1ob21vZ2VuZW91cywgd2hpY2ggbWVhbnMgcmVndWxhcgorICAgICAgICAgICAgdGVzdGluZyBhY3Jvc3MgYSB2YXJpZXR5IG9mIExpbnV4IGRpc3RyaWJ1dGlvbnMgb2NjdXJzLgorICAgICAgICAgICAgVGhlIEF1dG9idWlsZGVyIGlzIGxpbWl0ZWQgdG8gb25seSB0ZXN0aW5nIFFFTVUtYmFzZWQgc2V0dXBzIGFuZAorICAgICAgICAgICAgbm90IHJlYWwgaGFyZHdhcmUuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRmluYWxseSwgaW4gYWRkaXRpb24gdG8gdGhlIEF1dG9idWlsZGVyJ3MgdGVzdHMsIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIFFBIHRlYW0gYWxzbyBwZXJmb3JtcyB0ZXN0aW5nIG9uIGEgdmFyaWV0eSBvZiBwbGF0Zm9ybXMsIHdoaWNoIGluY2x1ZGVzCisgICAgICAgIGFjdHVhbCBoYXJkd2FyZSwgdG8gZW5zdXJlIGV4cGVjdGVkIHJlc3VsdHMuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS5yc3QKaW5kZXggZWYwNzM1NC4uNDhhNDQzMyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqCiBTb3VyY2UgRGlyZWN0b3J5IFN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTg4ZTljCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKQEAgLTAsMCArMSwxMTIzIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3JlZi1zdHJ1Y3R1cmUnPgorCis8dGl0bGU+U291cmNlIERpcmVjdG9yeSBTdHJ1Y3R1cmU8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICBjb25zaXN0cyBvZiBudW1lcm91cyBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzOworICAgIHVuZGVyc3RhbmRpbmcgdGhlaXIgbG9jYXRpb25zIGFuZCBjb250ZW50cyBpcyBrZXkgdG8gdXNpbmcgdGhlCisgICAgWW9jdG8gUHJvamVjdCBlZmZlY3RpdmVseS4KKyAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGFuZCBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dAorICAgIHRob3NlIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KKzwvcGFyYT4KKworPHBhcmE+CisgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlc3RhYmxpc2ggYSBsb2NhbCBTb3VyY2UgRGlyZWN0b3J5IG9uIHlvdXIKKyAgICBkZXZlbG9wbWVudCBzeXN0ZW0sIHNlZSB0aGUKKyAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbG9jYXRpbmcteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCis8L3BhcmE+CisKKyAgICA8bm90ZT4KKyAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB0aGF0CisgICAgICAgIGNvbnRhaW4gc3BhY2VzLgorICAgICAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluIHRoZXNlIHR5cGVzCisgICAgICAgIG9mIG5hbWVzLgorICAgIDwvbm90ZT4KKworPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1jb3JlJz4KKyAgICA8dGl0bGU+VG9wLUxldmVsIENvcmUgQ29tcG9uZW50czwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgdG9wLWxldmVsIGNvbXBvbmVudHMgb2YgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtY29yZS1iaXRiYWtlJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5iaXRiYWtlLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGluY2x1ZGVzIGEgY29weSBvZiBCaXRCYWtlIGZvciBlYXNlIG9mIHVzZS4KKyAgICAgICAgICAgIFRoZSBjb3B5IHVzdWFsbHkgbWF0Y2hlcyB0aGUgY3VycmVudCBzdGFibGUgQml0QmFrZSByZWxlYXNlIGZyb20KKyAgICAgICAgICAgIHRoZSBCaXRCYWtlIHByb2plY3QuCisgICAgICAgICAgICBCaXRCYWtlLCBhCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CisgICAgICAgICAgICBpbnRlcnByZXRlciwgcmVhZHMgdGhlIFlvY3RvIFByb2plY3QgTWV0YWRhdGEgYW5kIHJ1bnMgdGhlIHRhc2tzCisgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoYXQgZGF0YS4KKyAgICAgICAgICAgIEZhaWx1cmVzIGFyZSB1c3VhbGx5IGNhdXNlZCBieSBlcnJvcnMgaW4geW91ciBNZXRhZGF0YSBhbmQgbm90IGZyb20gQml0QmFrZSBpdHNlbGY7CisgICAgICAgICAgICBjb25zZXF1ZW50bHksIG1vc3QgdXNlcnMgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgQml0QmFrZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZQorICAgICAgICAgICAgbWFpbiBCaXRCYWtlIGV4ZWN1dGFibGUgKHdoaWNoIHJlc2lkZXMgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW4vPC9maWxlbmFtZT4gZGlyZWN0b3J5KSBzdGFydHMuCisgICAgICAgICAgICBTb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IChpLmUuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgIHBsYWNlcyB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW4vPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgKGluIHRoYXQgb3JkZXIpIGludG8KKyAgICAgICAgICAgIHRoZSBzaGVsbCdzIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtY29yZS1idWlsZCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdXNlciBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB0aGUgb3V0cHV0CisgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaW4gaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gd2hlcmUKKyAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZSBpcyBjb21iaW5lZCB3aXRoIHRoZSBvdXRwdXQuCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgaXMgY3JlYXRlZCBpbml0aWFsbHkgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAorICAgICAgICAgICAgKGkuZS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBwbGFjZSBvdXRwdXQgYW5kIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGZpbGVzIGluIGEgZGlyZWN0b3J5IHNlcGFyYXRlIGZyb20gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgYnkgcHJvdmlkaW5nIGEgZGlyZWN0b3J5IG5hbWUgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICB0aGUgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNlcGFyYXRpbmcgb3V0cHV0IGZyb20geW91ciBsb2NhbAorICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBmaWxlcyAoY29tbW9ubHkgZGVzY3JpYmVkIGFzIGFuICJvdXQgb2YgdHJlZSIgYnVpbGQpLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2hhbmRib29rJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb2N1bWVudGF0aW9uLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGhvbGRzIHRoZSBzb3VyY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24KKyAgICAgICAgICAgIGFzIHdlbGwgYXMgdGVtcGxhdGVzIGFuZCB0b29scyB0aGF0IGFsbG93IHlvdSB0byBnZW5lcmF0ZSBQREYgYW5kIEhUTUwKKyAgICAgICAgICAgIHZlcnNpb25zIG9mIHRoZSBtYW51YWxzLgorICAgICAgICAgICAgRWFjaCBtYW51YWwgaXMgY29udGFpbmVkIGluIGl0cyBvd24gc3ViLWZvbGRlcjsKKyAgICAgICAgICAgIGZvciBleGFtcGxlLCB0aGUgZmlsZXMgZm9yIHRoaXMgcmVmZXJlbmNlIG1hbnVhbCByZXNpZGUgaW4KKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cmVmLW1hbnVhbC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWNvcmUtbWV0YSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgbWluaW1hbCwgdW5kZXJseWluZyBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YS4KKyAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaG9sZHMgcmVjaXBlcywgY29tbW9uIGNsYXNzZXMsIGFuZCBtYWNoaW5lCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciBzdHJpY3RseSBlbXVsYXRlZCB0YXJnZXRzICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoLikKKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtY29yZS1tZXRhLXBva3knPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEtcG9reS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEZXNpZ25lZCBhYm92ZSB0aGUgPGZpbGVuYW1lPm1ldGEvPC9maWxlbmFtZT4gY29udGVudCwgdGhpcyBkaXJlY3RvcnkKKyAgICAgICAgICAgIGFkZHMganVzdCBlbm91Z2ggbWV0YWRhdGEgdG8gZGVmaW5lIHRoZSBQb2t5IHJlZmVyZW5jZSBkaXN0cmlidXRpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWNvcmUtbWV0YS15b2N0by1ic3AnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBZb2N0byBQcm9qZWN0IHJlZmVyZW5jZQorICAgICAgICAgICAgaGFyZHdhcmUgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1BzLCBzZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtbWV0YS1zZWxmdGVzdCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS1zZWxmdGVzdC88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBhZGRzIGFkZGl0aW9uYWwgcmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzCisgICAgICAgICAgICB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgc2VsZnRlc3RzIHRvIHZlcmlmeSB0aGUgYmVoYXZpb3IKKyAgICAgICAgICAgIG9mIHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYWRkIHRoaXMgbGF5ZXIgdG8geW91cgorICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHVubGVzcyB5b3Ugd2FudCB0byBydW4gdGhlCisgICAgICAgICAgICBzZWxmdGVzdHMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtc2tlbGV0b24nPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEtc2tlbGV0b24vPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGVtcGxhdGUgcmVjaXBlcyBmb3IgQlNQIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0cyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+c2NyaXB0cy88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB2YXJpb3VzIGludGVncmF0aW9uIHNjcmlwdHMgdGhhdCBpbXBsZW1lbnQKKyAgICAgICAgICAgIGV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQgKGUuZy4gUUVNVSBzY3JpcHRzKS4KKyAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSJzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgc2NyaXB0IHByZXBlbmRzIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBzaGVsbCdzCisgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaGFzIHVzZWZ1bCBzY3JpcHRzIHRoYXQgYXNzaXN0IGluIGNvbnRyaWJ1dGluZworICAgICAgICAgICAgYmFjayB0byB0aGUgWW9jdG8gUHJvamVjdCwgc3VjaCBhcyA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2NyaXB0IHNldHMgdXAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFJ1bm5pbmcgdGhpcyBzY3JpcHQgd2l0aCB0aGUgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IGNvbW1hbmQgaW4KKyAgICAgICAgICAgIGEgc2hlbGwgbWFrZXMgY2hhbmdlcyB0byA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGFuZCBzZXRzIG90aGVyCisgICAgICAgICAgICBjb3JlIEJpdEJha2UgdmFyaWFibGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgWW91IG5lZWQgdG8gcnVuIGFuIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBiZWZvcmUgcnVubmluZyBCaXRCYWtlCisgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgIFRoZSBzY3JpcHQgdXNlcyBvdGhlciBzY3JpcHRzIHdpdGhpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRvIGRvIHRoZSBidWxrIG9mIHRoZSB3b3JrLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhpcyBzY3JpcHQsIHlvdXIgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudCBpcyBzZXQKKyAgICAgICAgICAgIHVwLCBhCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgIGlzIGNyZWF0ZWQsIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgYmVjb21lcyB0aGUgQnVpbGQgRGlyZWN0b3J5LAorICAgICAgICAgICAgYW5kIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggc29tZSBzaW1wbGUgc3VnZ2VzdGlvbnMgYXMgdG8gd2hhdCB0byBkbworICAgICAgICAgICAgbmV4dCwgaW5jbHVkaW5nIGEgbGlzdCBvZiBzb21lIHBvc3NpYmxlIHRhcmdldHMgdG8gYnVpbGQuCisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisKKyAgICAgIyMjIFNoZWxsIGVudmlyb25tZW50IHNldCB1cCBmb3IgYnVpbGRzLiAjIyMKKworICAgICBZb3UgY2FuIG5vdyBydW4gJ2JpdGJha2UgJmx0O3RhcmdldCZndDsnCisKKyAgICAgQ29tbW9uIHRhcmdldHMgYXJlOgorICAgICAgICAgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICBjb3JlLWltYWdlLXNhdG8KKyAgICAgICAgIG1ldGEtdG9vbGNoYWluCisgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CisKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGRlZmF1bHQgb3V0cHV0IG9mIHRoZSA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgIGlzIGZyb20gdGhlIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBkZXNpZ24gYSBjdXN0b20gZGlzdHJpYnV0aW9uLCB5b3UgY2FuIGluY2x1ZGUgeW91ciBvd24gdmVyc2lvbgorICAgICAgICAgICAgb2YgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgdG8gbWVudGlvbiB0aGUgdGFyZ2V0cyBkZWZpbmVkIGJ5IHlvdXIKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEgQnVpbGQgRGlyZWN0b3J5CisgICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICBpbiB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICAgICAgICAgICBJZiB5b3UgcHJvdmlkZSBhIEJ1aWxkIERpcmVjdG9yeSBhcmd1bWVudCB3aGVuIHlvdQorICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSBzY3JpcHQsIHlvdSBkaXJlY3QgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIEJ1aWxkIERpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgY3JlYXRlcyBhIEJ1aWxkIERpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgPGZpbGVuYW1lPm15YnVpbGRzLzwvZmlsZW5hbWU+IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyB+L215YnVpbGRzCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlcywgd2hpY2ggYXJlIGZvdW5kIGJ5IGRlZmF1bHQgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQorICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeS4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMgdGhhdAorICAgICAgICAgICAgICAgIGNvbnRhaW4gc3BhY2VzLgorICAgICAgICAgICAgICAgIElmIHlvdSBhdHRlbXB0IHRvIHJ1biB0aGUgPGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICAgICAgZnJvbSBhIFNvdXJjZSBEaXJlY3RvcnkgdGhhdCBjb250YWlucyBzcGFjZXMgaW4gZWl0aGVyIHRoZSBmaWxlbmFtZXMKKyAgICAgICAgICAgICAgICBvciBkaXJlY3RvcnkgbmFtZXMsIHRoZSBzY3JpcHQgcmV0dXJucyBhbiBlcnJvciBpbmRpY2F0aW5nIG5vIHN1Y2gKKyAgICAgICAgICAgICAgICBmaWxlIG9yIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSBhIFNvdXJjZSBEaXJlY3RvcnkgZnJlZSBvZiBuYW1lcyBjb250YWluaW5nIHNwYWNlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYmFzaWMtdG9wLWxldmVsJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5MSUNFTlNFLCBSRUFETUUsIGFuZCBSRUFETUUuaGFyZHdhcmU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgc3RhbmRhcmQgdG9wLWxldmVsIGZpbGVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkJz4KKyAgICA8dGl0bGU+VGhlIEJ1aWxkIERpcmVjdG9yeSAtIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgIHdoZW4geW91IHJ1biB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CisgICAgICAgIDxsaW5rCitsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgSWYgeW91IGRvIG5vdCBnaXZlIHRoZSBCdWlsZCBEaXJlY3RvcnkgYSBzcGVjaWZpYyBuYW1lIHdoZW4geW91IHJ1bgorICAgICAgICB0aGUgc2V0dXAgc2NyaXB0LCB0aGUgbmFtZSBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBzdWJzZXF1ZW50IHBhcnNpbmcgYW5kIHByb2Nlc3NpbmcsIHRoZSBuYW1lIG9mIHRoZSBCdWlsZAorICAgICAgICBkaXJlY3RvcnkgaXMgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLWJ1aWxkaGlzdG9yeSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvYnVpbGRoaXN0b3J5LzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhpcyBkaXJlY3Rvcnkgd2hlbiB5b3UKKyAgICAgICAgICAgIGVuYWJsZSBidWlsZCBoaXN0b3J5IHZpYSB0aGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGNsYXNzIGZpbGUuCisgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IG9yZ2FuaXplcyBidWlsZCBpbmZvcm1hdGlvbiBpbnRvIGltYWdlLCBwYWNrYWdlcywgYW5kCisgICAgICAgICAgICBTREsgc3ViZGlyZWN0b3JpZXMuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZSwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLWNvbmYtbG9jYWwuY29uZic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvY29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbnMgYWxsIHRoZSBsb2NhbCB1c2VyIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICBmb3IgeW91ciBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgY29udGFpbnMgZG9jdW1lbnRhdGlvbiBvbgorICAgICAgICAgICAgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAgICAgQW55IHZhcmlhYmxlIHNldCBoZXJlIG92ZXJyaWRlcyBhbnkgdmFyaWFibGUgc2V0IGVsc2V3aGVyZSB3aXRoaW4KKyAgICAgICAgICAgIHRoZSBlbnZpcm9ubWVudCB1bmxlc3MgdGhhdCB2YXJpYWJsZSBpcyBoYXJkLWNvZGVkIHdpdGhpbiBhIGZpbGUKKyAgICAgICAgICAgIChlLmcuIGJ5IHVzaW5nICc9JyBpbnN0ZWFkIG9mICc/PScpLgorICAgICAgICAgICAgU29tZSB2YXJpYWJsZXMgYXJlIGhhcmQtY29kZWQgZm9yIHZhcmlvdXMgcmVhc29ucyBidXQgc3VjaAorICAgICAgICAgICAgdmFyaWFibGVzIGFyZSByZWxhdGl2ZWx5IHJhcmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEF0IGEgbWluaW11bSwgeW91IHdvdWxkIG5vcm1hbGx5IGVkaXQgdGhpcyBmaWxlIHRvIHNlbGVjdCB0aGUgdGFyZ2V0CisgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L2xpbms+PC9maWxlbmFtZT4sCisgICAgICAgICAgICB3aGljaCBwYWNrYWdlIHR5cGVzIHlvdSB3aXNoIHRvIHVzZQorICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4pLAorICAgICAgICAgICAgYW5kIHRoZSBsb2NhdGlvbiBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIGFjY2VzcyBkb3dubG9hZGVkIGZpbGVzCisgICAgICAgICAgICAoPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPkRMX0RJUjwvbGluaz48L2ZpbGVuYW1lPikuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gaXMgbm90IHByZXNlbnQgd2hlbiB5b3UKKyAgICAgICAgICAgIHN0YXJ0IHRoZSBidWlsZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBpdCBmcm9tCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHNldHVwIHNjcmlwdAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzb3VyY2UgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSB1c2VkCisgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHNjcmlwdCB2YXJpYWJsZSwKKyAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPgorICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50LCBhbmQgdG8gPGZpbGVuYW1lPm1ldGEvY29uZi88L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIGVudmlyb25tZW50LgorICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2NyaXB0IHZhcmlhYmxlIHBvaW50cyB0byB0aGUgc291cmNlIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSwgdGhpcyBpbXBsaWVzIHRoYXQKKyAgICAgICAgICAgIHlvdSBjYW4gY29uZmlndXJlIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgZnJvbSBhbnkgbGF5ZXIgYnkgc2V0dGluZworICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGluIHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGFzCisgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURU1QTEFURUNPTkY9PHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXI8L3JlcGxhY2VhYmxlPi9jb25mCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBwcm9jZXNzIGdldHMgdGhlIHNhbXBsZSBmaWxlLCBpdCB1c2VzCisgICAgICAgICAgICA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4gdG8gc3Vic3RpdHV0ZSBmaW5hbAorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItT0VST09UJz48ZmlsZW5hbWU+T0VST09UPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgdmFsdWVzIGZvciBhbGwgPGZpbGVuYW1lPiMjT0VST09UIyM8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBob3cgdGhlIDxmaWxlbmFtZT5URU1QTEFURUNPTkY8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGlzIHVzZWQgYnkgbG9va2luZyBhdCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtY29uZi1iYmxheWVycy5jb25mJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBkZWZpbmVzCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPmxheWVyczwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggYXJlIGRpcmVjdG9yeSB0cmVlcywgdHJhdmVyc2VkIChvciB3YWxrZWQpIGJ5IEJpdEJha2UuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHVzZXMgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgdG8gbGlzdCB0aGUgbGF5ZXJzIEJpdEJha2UgdHJpZXMgdG8gZmluZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBpcyBub3QgcHJlc2VudCB3aGVuIHlvdQorICAgICAgICAgICAgc3RhcnQgdGhlIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIGl0IGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlIHRvcC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgc2V0dXAgc2NyaXB0IChpLmUuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIHdpdGggdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgIHRoZSBzb3VyY2UgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSB1c2VkCisgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHNjcmlwdCB2YXJpYWJsZSwKKyAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPgorICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50LCBhbmQgdG8gPGZpbGVuYW1lPm1ldGEvY29uZi88L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIGVudmlyb25tZW50LgorICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2NyaXB0IHZhcmlhYmxlIHBvaW50cyB0byB0aGUgc291cmNlIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSwgdGhpcyBpbXBsaWVzIHRoYXQKKyAgICAgICAgICAgIHlvdSBjYW4gYmFzZSB5b3VyIGJ1aWxkIGZyb20gYW55IGxheWVyIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlIGluCisgICAgICAgICAgICB0aGUgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURU1QTEFURUNPTkY9PHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXI8L3JlcGxhY2VhYmxlPi9jb25mCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBwcm9jZXNzIGdldHMgdGhlIHNhbXBsZSBmaWxlLCBpdCB1c2VzCisgICAgICAgICAgICA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4gdG8gc3Vic3RpdHV0ZSBmaW5hbAorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItT0VST09UJz48ZmlsZW5hbWU+T0VST09UPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgdmFsdWVzIGZvciBhbGwgPGZpbGVuYW1lPiMjT0VST09UIyM8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBob3cgdGhlIDxmaWxlbmFtZT5URU1QTEFURUNPTkY8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyPC9maWxlbmFtZT4gc2NyaXB0IGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtY29uZi1zYW5pdHlfaW5mbyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvY2FjaGUvc2FuaXR5X2luZm88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGZpbGUgaW5kaWNhdGVzIHRoZSBzdGF0ZSBvZiB0aGUgc2FuaXR5IGNoZWNrcyBhbmQgaXMgY3JlYXRlZAorICAgICAgICAgICAgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtZG93bmxvYWRzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9kb3dubG9hZHMvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZG93bmxvYWRlZCB1cHN0cmVhbSBzb3VyY2UgdGFyYmFsbHMuCisgICAgICAgICAgICBZb3UgY2FuIHJldXNlIHRoZSBkaXJlY3RvcnkgZm9yIG11bHRpcGxlIGJ1aWxkcyBvciBtb3ZlCisgICAgICAgICAgICB0aGUgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24uCisgICAgICAgICAgICBZb3UgY2FuIGNvbnRyb2wgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5IHRocm91Z2ggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+RExfRElSPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC1zc3RhdGUtY2FjaGUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3NzdGF0ZS1jYWNoZS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlLgorICAgICAgICAgICAgWW91IGNhbiByZXVzZSB0aGUgZGlyZWN0b3J5IGZvciBtdWx0aXBsZSBidWlsZHMgb3IgbW92ZQorICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uLgorICAgICAgICAgICAgWW91IGNhbiBjb250cm9sIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfRElSJz5TU1RBVEVfRElSPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIGFuZCB1c2VzIHRoaXMgZGlyZWN0b3J5CisgICAgICAgICAgICBmb3IgYWxsIHRoZSBidWlsZCBzeXN0ZW0ncyBvdXRwdXQuCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGlzIGRpcmVjdG9yeS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBjcmVhdGVzIHRoaXMgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgQXMgYSBsYXN0IHJlc29ydCwgdG8gY2xlYW4gdXAgYSBidWlsZCBhbmQgc3RhcnQgaXQgZnJvbSBzY3JhdGNoCisgICAgICAgICAgICAob3RoZXIgdGhhbiB0aGUgZG93bmxvYWRzKSwgeW91IGNhbiByZW1vdmUgZXZlcnl0aGluZyBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb3IgZ2V0IHJpZCBvZiB0aGUKKyAgICAgICAgICAgIGRpcmVjdG9yeSBjb21wbGV0ZWx5LgorICAgICAgICAgICAgSWYgeW91IGRvLCB5b3Ugc2hvdWxkIGFsc28gY29tcGxldGVseSByZW1vdmUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvc3N0YXRlLWNhY2hlPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtYnVpbGRzdGF0cyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvdG1wL2J1aWxkc3RhdHMvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3Rvcnkgc3RvcmVzIHRoZSBidWlsZCBzdGF0aXN0aWNzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtY2FjaGUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC9jYWNoZS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIEJpdEJha2UgcGFyc2VzIHRoZSBtZXRhZGF0YSAocmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyksCisgICAgICAgICAgICBpdCBjYWNoZXMgdGhlIHJlc3VsdHMgaW4gPGZpbGVuYW1lPmJ1aWxkL3RtcC9jYWNoZS88L2ZpbGVuYW1lPgorICAgICAgICAgICAgdG8gc3BlZWQgdXAgZnV0dXJlIGJ1aWxkcy4KKyAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSBzdG9yZWQgb24gYSBwZXItbWFjaGluZSBiYXNpcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRHVyaW5nIHN1YnNlcXVlbnQgYnVpbGRzLCBCaXRCYWtlIGNoZWNrcyBlYWNoIHJlY2lwZSAodG9nZXRoZXIKKyAgICAgICAgICAgIHdpdGgsIGZvciBleGFtcGxlLCBhbnkgZmlsZXMgaW5jbHVkZWQgb3IgYXBwZW5kZWQgdG8gaXQpIHRvIHNlZQorICAgICAgICAgICAgaWYgdGhleSBoYXZlIGJlZW4gbW9kaWZpZWQuCisgICAgICAgICAgICBDaGFuZ2VzIGNhbiBiZSBkZXRlY3RlZCwgZm9yIGV4YW1wbGUsIHRocm91Z2ggZmlsZSBtb2RpZmljYXRpb24KKyAgICAgICAgICAgIHRpbWUgKG10aW1lKSBjaGFuZ2VzIGFuZCBoYXNoaW5nIG9mIGZpbGUgY29udGVudHMuCisgICAgICAgICAgICBJZiBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlIGFyZSBkZXRlY3RlZCwgdGhlbiB0aGUgcGFyc2VkIHJlc3VsdAorICAgICAgICAgICAgc3RvcmVkIGluIHRoZSBjYWNoZSBpcyByZXVzZWQuCisgICAgICAgICAgICBJZiB0aGUgZmlsZSBoYXMgY2hhbmdlZCwgaXQgaXMgcmVwYXJzZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1kZXBsb3knPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYW55ICJlbmQgcmVzdWx0IiBvdXRwdXQgZnJvbSB0aGUKKyAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoaXMgZGlyZWN0b3J5LgorICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlcy1kZXYtZW52aXJvbm1lbnQnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb25zIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1kZXBsb3ktZGViJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvZGVwbG95L2RlYi88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSByZWNlaXZlcyBhbnkgPGZpbGVuYW1lPi5kZWI8L2ZpbGVuYW1lPiBwYWNrYWdlcyBwcm9kdWNlZCBieQorICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICBUaGUgcGFja2FnZXMgYXJlIHNvcnRlZCBpbnRvIGZlZWRzIGZvciBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlIHR5cGVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtZGVwbG95LXJwbSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9ycG0vPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgcmVjZWl2ZXMgYW55IDxmaWxlbmFtZT4ucnBtPC9maWxlbmFtZT4gcGFja2FnZXMgcHJvZHVjZWQgYnkKKyAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgVGhlIHBhY2thZ2VzIGFyZSBzb3J0ZWQgaW50byBmZWVkcyBmb3IgZGlmZmVyZW50IGFyY2hpdGVjdHVyZSB0eXBlcy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtdG1wLWRlcGxveS1pcGsnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IHJlY2VpdmVzIDxmaWxlbmFtZT4uaXBrPC9maWxlbmFtZT4gcGFja2FnZXMgcHJvZHVjZWQgYnkKKyAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtZGVwbG95LWxpY2Vuc2VzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvZGVwbG95L2xpY2Vuc2VzLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IHJlY2VpdmVzIHBhY2thZ2UgbGljZW5zaW5nIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBkaXJlY3RvcnkgY29udGFpbnMgc3ViLWRpcmVjdG9yaWVzIGZvciA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPmJ1c3lib3g8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IChhbW9uZyBvdGhlcnMpIHRoYXQgaW4gdHVybgorICAgICAgICAgICAgY29udGFpbiBhcHByb3ByaWF0ZSA8ZmlsZW5hbWU+Q09QWUlORzwvZmlsZW5hbWU+IGxpY2Vuc2UgZmlsZXMgd2l0aCBvdGhlciBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gbGljZW5zaW5nLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtZGVwbG95LWltYWdlcyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgcG9wdWxhdGVkIHdpdGggdGhlIGJhc2ljIG91dHB1dCBvYmplY3RzIG9mIHRoZQorICAgICAgICAgICAgYnVpbGQgKHRoaW5rIG9mIHRoZW0gYXMgdGhlICJnZW5lcmF0ZWQgYXJ0aWZhY3RzIiBvZiB0aGUgYnVpbGQgcHJvY2VzcyksCisgICAgICAgICAgICBpbmNsdWRpbmcgdGhpbmdzIGxpa2UgdGhlIGJvb3QgbG9hZGVyIGltYWdlLCBrZXJuZWwsIHJvb3QgZmlsZXN5c3RlbSBhbmQgbW9yZS4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZsYXNoIHRoZSByZXN1bHRpbmcgaW1hZ2UgZnJvbSBhIGJ1aWxkIG9udG8gYSBkZXZpY2UsCisgICAgICAgICAgICBsb29rIGhlcmUgZm9yIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmUgY2FyZWZ1bCB3aGVuIGRlbGV0aW5nIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgorICAgICAgICAgICAgWW91IGNhbiBzYWZlbHkgZGVsZXRlIG9sZCBpbWFnZXMgZnJvbSB0aGlzIGRpcmVjdG9yeSAoZS5nLgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtKjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBrZXJuZWwgKDxmaWxlbmFtZT4qekltYWdlKjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+KnVJbWFnZSo8L2ZpbGVuYW1lPiwgZXRjLiksCisgICAgICAgICAgICBib290bG9hZGVyIGFuZCBvdGhlciBzdXBwbGVtZW50YXJ5IGZpbGVzIG1pZ2h0IGJlIGRlcGxveWVkIGhlcmUgcHJpb3IgdG8gYnVpbGRpbmcgYW4KKyAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgQmVjYXVzZSB0aGVzZSBmaWxlcyBhcmUgbm90IGRpcmVjdGx5IHByb2R1Y2VkIGZyb20gdGhlIGltYWdlLCBpZiB5b3UKKyAgICAgICAgICAgIGRlbGV0ZSB0aGVtIHRoZXkgd2lsbCBub3QgYmUgYXV0b21hdGljYWxseSByZS1jcmVhdGVkIHdoZW4geW91IGJ1aWxkIHRoZSBpbWFnZSBhZ2Fpbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IGRvIGFjY2lkZW50YWxseSBkZWxldGUgZmlsZXMgaGVyZSwgeW91IHdpbGwgbmVlZCB0byBmb3JjZSB0aGVtIHRvIGJlCisgICAgICAgICAgICByZS1jcmVhdGVkLgorICAgICAgICAgICAgSW4gb3JkZXIgdG8gZG8gdGhhdCwgeW91IHdpbGwgbmVlZCB0byBrbm93IHRoZSB0YXJnZXQgdGhhdCBwcm9kdWNlZCB0aGVtLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZXNlIGNvbW1hbmRzIHJlYnVpbGQgYW5kIHJlLWNyZWF0ZSB0aGUga2VybmVsIGZpbGVzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgY2xlYW4gdmlydHVhbC9rZXJuZWwKKyAgICAgJCBiaXRiYWtlIHZpcnR1YWwva2VybmVsCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1kZXBsb3ktc2RrJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvZGVwbG95L3Nkay88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoaXMgZGlyZWN0b3J5IHRvIGhvbGQKKyAgICAgICAgICAgIHRvb2xjaGFpbiBpbnN0YWxsZXIgc2NyaXB0cyB3aGljaCwgd2hlbiBleGVjdXRlZCwgaW5zdGFsbCB0aGUKKyAgICAgICAgICAgIHN5c3Jvb3QgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoZXNlIGluc3RhbGxlcnMgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtdG1wLXNzdGF0ZS1jb250cm9sJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvc3N0YXRlLWNvbnRyb2wvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGlzIGRpcmVjdG9yeSBmb3IgdGhlCisgICAgICAgICAgICBzaGFyZWQgc3RhdGUgbWFuaWZlc3QgZmlsZXMuCisgICAgICAgICAgICBUaGUgc2hhcmVkIHN0YXRlIGNvZGUgdXNlcyB0aGVzZSBmaWxlcyB0byByZWNvcmQgdGhlIGZpbGVzCisgICAgICAgICAgICBpbnN0YWxsZWQgYnkgZWFjaCBzc3RhdGUgdGFzayBzbyB0aGF0IHRoZSBmaWxlcyBjYW4gYmUgcmVtb3ZlZAorICAgICAgICAgICAgd2hlbiBjbGVhbmluZyB0aGUgcmVjaXBlIG9yIHdoZW4gYSBuZXdlciB2ZXJzaW9uIGlzIGFib3V0IHRvCisgICAgICAgICAgICBiZSBpbnN0YWxsZWQuCisgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGFsc28gdXNlcyB0aGUgbWFuaWZlc3RzIHRvIGRldGVjdCBhbmQgcHJvZHVjZQorICAgICAgICAgICAgYSB3YXJuaW5nIHdoZW4gZmlsZXMgZnJvbSBvbmUgdGFzayBhcmUgb3ZlcndyaXRpbmcgdGhvc2UgZnJvbQorICAgICAgICAgICAgYW5vdGhlci4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtdG1wLXN5c3Jvb3RzLWNvbXBvbmVudHMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC9zeXNyb290cy1jb21wb25lbnRzLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3lzcm9vdCBjb250ZW50cyB0aGF0IHRoZQorICAgICAgICAgICAgdGFzaworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXByZXBhcmVfcmVjaXBlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wcmVwYXJlX3JlY2lwZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBsaW5rcyBvciBjb3BpZXMgaW50byB0aGUgcmVjaXBlLXNwZWNpZmljIHN5c3Jvb3QgZm9yIGVhY2gKKyAgICAgICAgICAgIHJlY2lwZSBsaXN0ZWQgaW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIFBvcHVsYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkgaXMgaGFuZGxlZCB0aHJvdWdoIHNoYXJlZCBzdGF0ZSwgd2hpbGUKKyAgICAgICAgICAgIHRoZSBwYXRoIGlzIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT01QT05FTlRTX0RJUic+PGZpbGVuYW1lPkNPTVBPTkVOVFNfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZS4gQXBhcnQgZnJvbSBhIGZldyB1bnVzdWFsIGNpcmN1bXN0YW5jZXMsIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3Jvb3RzLWNvbXBvbmVudHM8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgc2hvdWxkIGJlCisgICAgICAgICAgICBhdXRvbWF0aWMsIGFuZCByZWNpcGVzIHNob3VsZCBub3QgZGlyZWN0bHkgcmVmZXJlbmNlCisgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL3N5c3Jvb3RzLWNvbXBvbmVudHM8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtdG1wLXN5c3Jvb3RzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvc3lzcm9vdHMvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlZCB0bworICAgICAgICAgICAgY3JlYXRlIGEgZ2xvYmFsIHNoYXJlZCBzeXNyb290IHBlciBtYWNoaW5lIGFsb25nIHdpdGggYSBuYXRpdmUKKyAgICAgICAgICAgIHN5c3Jvb3QuCisgICAgICAgICAgICBCZWdpbm5pbmcgd2l0aCB0aGUgJkRJU1RSTzsgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCwKKyAgICAgICAgICAgIHN5c3Jvb3RzIGV4aXN0IGluIHJlY2lwZS1zcGVjaWZpYworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIFRodXMsIHRoZSA8ZmlsZW5hbWU+YnVpbGQvdG1wL3N5c3Jvb3RzLzwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgaXMgdW51c2VkLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5idWlsZC90bXAvc3lzcm9vdHMvPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgY2FuIHN0aWxsIGJlIHBvcHVsYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSBidWlsZC1zeXNyb290czwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIGNhbgorICAgICAgICAgICAgICAgIGJlIHVzZWQgZm9yIGNvbXBhdGliaWxpdHkgaW4gc29tZSBjYXNlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpbiBnZW5lcmFsIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBwb3B1bGF0ZQorICAgICAgICAgICAgICAgIHRoaXMgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIEluZGl2aWR1YWwgcmVjaXBlLXNwZWNpZmljIHN5c3Jvb3RzIHNob3VsZCBiZSB1c2VkLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtc3RhbXBzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvc3RhbXBzLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGhvbGRzIGluZm9ybWF0aW9uIHRoYXQgQml0QmFrZSB1c2VzIGZvcgorICAgICAgICAgICAgYWNjb3VudGluZyBwdXJwb3NlcyB0byB0cmFjayB3aGF0IHRhc2tzIGhhdmUgcnVuIGFuZCB3aGVuIHRoZXkKKyAgICAgICAgICAgIGhhdmUgcnVuLgorICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpcyBzdWItZGl2aWRlZCBieSBhcmNoaXRlY3R1cmUsIHBhY2thZ2UgbmFtZSwgYW5kCisgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHN0YW1wcy9hbGwtcG9reS1saW51eC9kaXN0Y2MtY29uZmlnLzEuMC1yMC5kb19idWlsZC0yZmRkLi4uLjJkbworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQWx0aG91Z2ggdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIGVtcHR5IG9mIGRhdGEsCisgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIGZpbGVuYW1lcyBhbmQgdGltZXN0YW1wcyBmb3IgdHJhY2tpbmcgcHVycG9zZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgQml0QmFrZSB1c2VzIHN0YW1wIGZpbGVzIHRvIGRldGVybWluZSBpZgorICAgICAgICAgICAgYSB0YXNrIHNob3VsZCBiZSByZXJ1biwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc3RhbXAtZmlsZXMtYW5kLXRoZS1yZXJ1bm5pbmctb2YtdGFza3MnPlN0YW1wIEZpbGVzIGFuZCB0aGUgUmVydW5uaW5nIG9mIFRhc2tzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1sb2cnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC9sb2cvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZ2VuZXJhbCBsb2dzIHRoYXQgYXJlIG5vdCBvdGhlcndpc2UgcGxhY2VkIHVzaW5nIHRoZQorICAgICAgICAgICAgcGFja2FnZSdzIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+V09SS0RJUjwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEV4YW1wbGVzIG9mIGxvZ3MgYXJlIHRoZSBvdXRwdXQgZnJvbSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jaGVja19wa2c8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2Rpc3Ryb19jaGVjazwvZmlsZW5hbWU+IHRhc2tzLgorICAgICAgICAgICAgUnVubmluZyBhIGJ1aWxkIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhpcyBkaXJlY3RvcnkgaXMgY3JlYXRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtdG1wLXdvcmsnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC93b3JrLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB3b3JrIHN1Yi1kaXJlY3RvcmllcworICAgICAgICAgICAgZm9yIHBhY2thZ2VzIGJ1aWx0IGJ5IEJpdEJha2UuCisgICAgICAgICAgICBBbGwgdGFza3MgZXhlY3V0ZSBmcm9tIHRoZSBhcHByb3ByaWF0ZSB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgc291cmNlIGZvciBhIHBhcnRpY3VsYXIgcGFja2FnZSBpcyB1bnBhY2tlZCwKKyAgICAgICAgICAgIHBhdGNoZWQsIGNvbmZpZ3VyZWQgYW5kIGNvbXBpbGVkIGFsbCB3aXRoaW4gaXRzIG93biB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFdpdGhpbiB0aGUgd29yayBkaXJlY3RvcnksIG9yZ2FuaXphdGlvbiBpcyBiYXNlZCBvbiB0aGUgcGFja2FnZSBncm91cAorICAgICAgICAgICAgYW5kIHZlcnNpb24gZm9yIHdoaWNoIHRoZSBzb3VyY2UgaXMgYmVpbmcgY29tcGlsZWQKKyAgICAgICAgICAgIGFzIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIHdvcnRoIGNvbnNpZGVyaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgYSB0eXBpY2FsIHdvcmsgZGlyZWN0b3J5LgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWtlcm5lbC0zLjA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb24gdGhlIG1hY2hpbmUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYnVpbHQgd2l0aGluIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgRm9yIHRoaXMgcGFja2FnZSwgYSB3b3JrIGRpcmVjdG9yeSBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9saW51eC15b2N0by8zLjArZ2l0MSsmbHQ7Li4uLi4mZ3Q7PC9maWxlbmFtZT4sCisgICAgICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiwgaXMgY3JlYXRlZC4KKyAgICAgICAgICAgIFdpdGhpbiB0aGlzIGRpcmVjdG9yeSwgdGhlIHNvdXJjZSBpcyB1bnBhY2tlZCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXFlbXV4ODYtc3RhbmRhcmQtYnVpbGQ8L2ZpbGVuYW1lPiBhbmQgdGhlbiBwYXRjaGVkIGJ5IFF1aWx0LgorICAgICAgICAgICAgKFNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1hLXF1aWx0LXdvcmtmbG93Jz5Vc2luZyBRdWlsdCBpbiBZb3VyIFdvcmtmbG93PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb24uKQorICAgICAgICAgICAgV2l0aGluIHRoZSA8ZmlsZW5hbWU+bGludXgtcWVtdXg4Ni1zdGFuZGFyZC1idWlsZDwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKKyAgICAgICAgICAgIHN0YW5kYXJkIFF1aWx0IGRpcmVjdG9yaWVzIDxmaWxlbmFtZT5saW51eC0zLjAvcGF0Y2hlczwvZmlsZW5hbWU+CisgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmxpbnV4LTMuMC8ucGM8L2ZpbGVuYW1lPiBhcmUgY3JlYXRlZCwKKyAgICAgICAgICAgIGFuZCBzdGFuZGFyZCBRdWlsdCBjb21tYW5kcyBjYW4gYmUgdXNlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlcmUgYXJlIG90aGVyIGRpcmVjdG9yaWVzIGdlbmVyYXRlZCB3aXRoaW4gPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSBtb3N0IGltcG9ydGFudCBkaXJlY3RvcnkgaXMgPGZpbGVuYW1lPldPUktESVIvdGVtcC88L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHdoaWNoIGhhcyBsb2cgZmlsZXMgZm9yIGVhY2ggdGFzayAoPGZpbGVuYW1lPmxvZy5kb18qLnBpZDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgYW5kIGNvbnRhaW5zIHRoZSBzY3JpcHRzIEJpdEJha2UgcnVucyBmb3IgZWFjaCB0YXNrCisgICAgICAgICAgICAoPGZpbGVuYW1lPnJ1bi5kb18qLnBpZDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+V09SS0RJUi9pbWFnZS88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgd2hlcmUgIm1ha2UKKyAgICAgICAgICAgIGluc3RhbGwiIHBsYWNlcyBpdHMgb3V0cHV0IHRoYXQgaXMgdGhlbiBzcGxpdCBpbnRvIHN1Yi1wYWNrYWdlcworICAgICAgICAgICAgd2l0aGluIDxmaWxlbmFtZT5XT1JLRElSL3BhY2thZ2VzLXNwbGl0LzwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC10bXAtd29yay10dW5lYXJjaC1yZWNpcGVuYW1lLXZlcnNpb24nPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC93b3JrLzxyZXBsYWNlYWJsZT50dW5lYXJjaDwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPi88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVjaXBlIHdvcmsgZGlyZWN0b3J5IC0gPGZpbGVuYW1lPiR7V09SS0RJUn08L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1zeXNyb290cyc+PGZpbGVuYW1lPmJ1aWxkL3RtcC9zeXNyb290cy88L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLCBiZWdpbm5pbmcgd2l0aCB0aGUgJkRJU1RSTzsgcmVsZWFzZSBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGJ1aWxkcyBlYWNoIHJlY2lwZSBpbiBpdHMKKyAgICAgICAgICAgIG93biB3b3JrIGRpcmVjdG9yeSAoaS5lLgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIFRoZSBwYXRoIHRvIHRoZSB3b3JrIGRpcmVjdG9yeSBpcyBjb25zdHJ1Y3RlZCB1c2luZyB0aGUKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBvZiB0aGUgZ2l2ZW4gYnVpbGQgKGUuZy4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UVU5FX1BLR0FSQ0gnPjxmaWxlbmFtZT5UVU5FX1BLR0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9BUkNIJz48ZmlsZW5hbWU+TUFDSElORV9BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgb3IgImFsbGFyY2giKSwgdGhlIHJlY2lwZSBuYW1lLCBhbmQgdGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZSAoaS5lLgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+OjwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+LTwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBIG51bWJlciBvZiBrZXkgc3ViZGlyZWN0b3JpZXMgZXhpc3Qgd2l0aGluIGVhY2ggcmVjaXBlCisgICAgICAgICAgICB3b3JrIGRpcmVjdG9yeToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSBsb2cgZmlsZXMgb2YgZWFjaCB0YXNrIGV4ZWN1dGVkIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgdGhlICJydW4iIGZpbGVzIGZvciBlYWNoIGV4ZWN1dGVkIHRhc2ssIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIGNvZGUgcnVuLCBhbmQgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9nLnRhc2tfb3JkZXI8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBsaXN0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgb3JkZXIgaW4gd2hpY2ggdGFza3Mgd2VyZSBleGVjdXRlZC4KKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L2ltYWdlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSBvdXRwdXQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoYXQgdGFzay4KKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3BzZXVkbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBDb250YWlucyB0aGUgcHNldWRvIGRhdGFiYXNlIGFuZCBsb2cgZm9yIGFueSB0YXNrcyBleGVjdXRlZAorICAgICAgICAgICAgICAgICAgICB1bmRlciBwc2V1ZG8gZm9yIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtXT1JLRElSfS9zeXNyb290LWRlc3RkaXI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgdGhlIG91dHB1dCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtXT1JLRElSfS9wYWNrYWdlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSBvdXRwdXQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGJlZm9yZSB0aGUgb3V0cHV0IGlzIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3BhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSBvdXRwdXQgb2YgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBhZnRlciB0aGUgb3V0cHV0IGhhcyBiZWVuIHNwbGl0IGludG8gaW5kaXZpZHVhbAorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgU3ViZGlyZWN0b3JpZXMgZXhpc3QgZm9yIGVhY2ggaW5kaXZpZHVhbCBwYWNrYWdlIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3JlY2lwZS1zeXNyb290PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHBvcHVsYXRlZCB3aXRoIHRoZSB0YXJnZXQgZGVwZW5kZW5jaWVzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBmaWxlc3lzdGVtIGFuZAorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBsaWJyYXJpZXMgdGhhdCB0aGUgcmVjaXBlIG1pZ2h0IG5lZWQgdG8gbGluaworICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IChlLmcuIHRoZSBDIGxpYnJhcnkpLgorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHBvcHVsYXRlZCB3aXRoIHRoZSBuYXRpdmUgZGVwZW5kZW5jaWVzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSB0b29scyB0aGUgcmVjaXBlIG5lZWRzIHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBjb21waWxlciwgQXV0b2NvbmYsIGxpYnRvb2wsIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtXT1JLRElSfS9idWlsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN1YmRpcmVjdG9yeSBhcHBsaWVzIG9ubHkgdG8gcmVjaXBlcyB0aGF0IHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzIHdoZXJlIHRoZSBzb3VyY2UgaXMgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoaXMgZGlyZWN0b3J5IGFzIGEKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5IChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtd29yay1zaGFyZWQnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC93b3JrLXNoYXJlZC88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgZWZmaWNpZW5jeSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBhbmQgdXNlcworICAgICAgICAgICAgdGhpcyBkaXJlY3RvcnkgdG8gaG9sZCByZWNpcGVzIHRoYXQgc2hhcmUgYSB3b3JrIGRpcmVjdG9yeSB3aXRoCisgICAgICAgICAgICBvdGhlciByZWNpcGVzLgorICAgICAgICAgICAgSW4gcHJhY3RpY2UsIHRoaXMgaXMgb25seSB1c2VkIGZvciA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGFuZCBpdHMgdmFyaWFudHMgKGUuZy4gPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmdjYzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Z2NjLXJ1bnRpbWU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtbWV0YSc+CisgICAgPHRpdGxlPlRoZSBNZXRhZGF0YSAtIDxmaWxlbmFtZT5tZXRhLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBBcyBtZW50aW9uZWQgcHJldmlvdXNseSwKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiBpcyB0aGUgY29yZQorICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgTWV0YWRhdGEgaGFzIHNldmVyYWwgaW1wb3J0YW50IHN1YmRpdmlzaW9uczoKKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtY2xhc3Nlcyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9jbGFzc2VzLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSA8ZmlsZW5hbWU+Ki5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBDbGFzcyBmaWxlcyBhcmUgdXNlZCB0byBhYnN0cmFjdCBjb21tb24gY29kZSBzbyBpdCBjYW4gYmUgcmV1c2VkIGJ5IG11bHRpcGxlCisgICAgICAgICAgICBwYWNrYWdlcy4KKyAgICAgICAgICAgIEV2ZXJ5IHBhY2thZ2UgaW5oZXJpdHMgdGhlIDxmaWxlbmFtZT5iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgRXhhbXBsZXMgb2Ygb3RoZXIgaW1wb3J0YW50IGNsYXNzZXMgYXJlIDxmaWxlbmFtZT5hdXRvdG9vbHMuYmJjbGFzczwvZmlsZW5hbWU+LCB3aGljaAorICAgICAgICAgICAgaW4gdGhlb3J5IGFsbG93cyBhbnkgQXV0b3Rvb2wtZW5hYmxlZCBwYWNrYWdlIHRvIHdvcmsgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCB3aXRoIG1pbmltYWwgZWZmb3J0LgorICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIGlzIDxmaWxlbmFtZT5rZXJuZWwuYmJjbGFzczwvZmlsZW5hbWU+IHRoYXQgY29udGFpbnMgY29tbW9uIGNvZGUgYW5kIGZ1bmN0aW9ucworICAgICAgICAgICAgZm9yIHdvcmtpbmcgd2l0aCB0aGUgTGludXgga2VybmVsLgorICAgICAgICAgICAgRnVuY3Rpb25zIGxpa2UgaW1hZ2UgZ2VuZXJhdGlvbiBvciBwYWNrYWdpbmcgYWxzbyBoYXZlIHRoZWlyIHNwZWNpZmljIGNsYXNzIGZpbGVzCisgICAgICAgICAgICBzdWNoIGFzIDxmaWxlbmFtZT5pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5yb290ZnNfKi5iYmNsYXNzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZSouYmJjbGFzczwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIGNsYXNzZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvbGluaz4iIGNoYXB0ZXIuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtY29uZic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBjb3JlIHNldCBvZiBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgc3RhcnQgZnJvbQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGFuZCBmcm9tIHdoaWNoIGFsbCBvdGhlciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlcyBhcmUgaW5jbHVkZWQuCisgICAgICAgICAgICBTZWUgdGhlIGluY2x1ZGUgc3RhdGVtZW50cyBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kIHlvdSB3aWxsIG5vdGUgdGhhdCBldmVuCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGlzIGxvYWRlZCBmcm9tIHRoZXJlLgorICAgICAgICAgICAgV2hpbGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IHNldHMgdXAgdGhlIGRlZmF1bHRzLCB5b3UgY2FuIG9mdGVuIG92ZXJyaWRlCisgICAgICAgICAgICB0aGVzZSBieSB1c2luZyB0aGUgKDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4pIGZpbGUsIG1hY2hpbmUgZmlsZSBvcgorICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtY29uZi1tYWNoaW5lJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhbGwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIElmIHlvdSBzZXQgPGZpbGVuYW1lPk1BQ0hJTkUgPSAicWVtdXg4NiI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGxvb2tzIGZvciBhIDxmaWxlbmFtZT5xZW11eDg2LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoaXMKKyAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjb250YWlucyB2YXJpb3VzIGRhdGEgY29tbW9uIHRvIG11bHRpcGxlIG1hY2hpbmVzLgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIGEgbmV3IG1hY2hpbmUgdG8gdGhlIFlvY3RvIFByb2plY3QsIGxvb2sgaW4gdGhpcyBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtY29uZi1kaXN0cm8nPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZGlyZWN0b3J5IGNvbnRyb2xzIGFueSBkaXN0cmlidXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgRm9yIHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgPGZpbGVuYW1lPmRlZmF1bHRzZXR1cC5jb25mPC9maWxlbmFtZT4gaXMgdGhlIG1haW4gZmlsZSBoZXJlLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGhlIHZlcnNpb25zIGFuZCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNEQVRFPC9maWxlbmFtZT4gZGVmaW5pdGlvbnMgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBjb25maWd1cmVkIGhlcmUuCisgICAgICAgICAgICBBbiBleGFtcGxlIG9mIGFuIGFsdGVybmF0aXZlIGNvbmZpZ3VyYXRpb24gbWlnaHQgYmUgPGZpbGVuYW1lPnBva3ktYmxlZWRpbmcuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBmaWxlIG1haW5seSBpbmhlcml0cyBpdHMgY29uZmlndXJhdGlvbiBmcm9tIFBva3kuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtY29uZi1tYWNoaW5lLXNkayc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUtc2RrLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNlYXJjaGVzIHRoaXMgZGlyZWN0b3J5IGZvcgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICBCeSBkZWZhdWx0LCAzMi1iaXQgYW5kIDY0LWJpdCB4ODYgZmlsZXMgc2hpcCB3aXRoIHRoZSBZb2N0bworICAgICAgICAgICAgUHJvamVjdCB0aGF0IHN1cHBvcnQgc29tZSBTREsgaG9zdHMuCisgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBleHRlbmQgdGhhdCBzdXBwb3J0IHRvIG90aGVyIFNESyBob3N0cworICAgICAgICAgICAgYnkgYWRkaW5nIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmaWxlcyBpbiB0aGlzIHN1YmRpcmVjdG9yeQorICAgICAgICAgICAgd2l0aGluIGFub3RoZXIgbGF5ZXIuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtZmlsZXMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvZmlsZXMvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgY29tbW9uIGxpY2Vuc2UgZmlsZXMgYW5kIHNldmVyYWwgdGV4dCBmaWxlcworICAgICAgICAgICAgdXNlZCBieSB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgVGhlIHRleHQgZmlsZXMgY29udGFpbiBtaW5pbWFsIGRldmljZSBpbmZvcm1hdGlvbiBhbmQKKyAgICAgICAgICAgIGxpc3RzIG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB3aXRoIGtub3duIHBlcm1pc3Npb25zLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLWxpYic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9saWIvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgT3BlbkVtYmVkZGVkIFB5dGhvbiBsaWJyYXJ5IGNvZGUKKyAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtYnNwJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtYnNwLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGFueXRoaW5nIGxpbmtpbmcgdG8gc3BlY2lmaWMgaGFyZHdhcmUgb3IgaGFyZHdhcmUKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gc3VjaCBhcyAidS1ib290IiBhbmQgImdydWIiLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtY29ubmVjdGl2aXR5Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5LzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGxpYnJhcmllcyBhbmQgYXBwbGljYXRpb25zIHJlbGF0ZWQgdG8gY29tbXVuaWNhdGlvbiB3aXRoIG90aGVyIGRldmljZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtcmVjaXBlcy1jb3JlJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB3aGF0IGlzIG5lZWRlZCB0byBidWlsZCBhIGJhc2ljIHdvcmtpbmcgTGludXggaW1hZ2UKKyAgICAgICAgICAgIGluY2x1ZGluZyBjb21tb25seSB1c2VkIGRlcGVuZGVuY2llcy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtbWV0YS1yZWNpcGVzLWRldnRvb2xzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtZGV2dG9vbHMvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdG9vbHMgdGhhdCBhcmUgcHJpbWFyaWx5IHVzZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIFRoZSB0b29scywgaG93ZXZlciwgY2FuIGFsc28gYmUgdXNlZCBvbiB0YXJnZXRzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtZXh0ZW5kZWQnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1leHRlbmRlZC88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBub24tZXNzZW50aWFsIGFwcGxpY2F0aW9ucyB0aGF0IGFkZCBmZWF0dXJlcyBjb21wYXJlZCB0byB0aGUKKyAgICAgICAgICAgIGFsdGVybmF0aXZlcyBpbiBjb3JlLgorICAgICAgICAgICAgWW91IG1pZ2h0IG5lZWQgdGhpcyBkaXJlY3RvcnkgZm9yIGZ1bGwgdG9vbCBmdW5jdGlvbmFsaXR5IG9yIGZvciBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpCisgICAgICAgICAgICBjb21wbGlhbmNlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtZ25vbWUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1nbm9tZS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIEdUSysgYXBwbGljYXRpb24gZnJhbWV3b3JrLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtZ3JhcGhpY3MnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBYIGFuZCBvdGhlciBncmFwaGljYWxseSByZWxhdGVkIHN5c3RlbSBsaWJyYXJpZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtcmVjaXBlcy1rZXJuZWwnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIGtlcm5lbCBhbmQgZ2VuZXJpYyBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcyB0aGF0CisgICAgICAgICAgICBoYXZlIHN0cm9uZyBrZXJuZWwgZGVwZW5kZW5jaWVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtbHNiNCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWxzYjQvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgcmVjaXBlcyBzcGVjaWZpY2FsbHkgYWRkZWQgdG8gc3VwcG9ydAorICAgICAgICAgICAgdGhlIExpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikgdmVyc2lvbiA0LnguCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtcmVjaXBlcy1tdWx0aW1lZGlhJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBjb2RlY3MgYW5kIHN1cHBvcnQgdXRpbGl0aWVzIGZvciBhdWRpbywgaW1hZ2VzIGFuZCB2aWRlby4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtbWV0YS1yZWNpcGVzLXJ0Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtcnQvPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgcGFja2FnZSBhbmQgaW1hZ2UgcmVjaXBlcyBmb3IgdXNpbmcgYW5kIHRlc3RpbmcKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UFJFRU1QVF9SVDwvZmlsZW5hbWU+IGtlcm5lbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtbWV0YS1yZWNpcGVzLXNhdG8nPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1zYXRvLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBTYXRvIGRlbW8vcmVmZXJlbmNlIFVJL1VYIGFuZCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbnMKKyAgICAgICAgICAgIGFuZCBjb25maWd1cmF0aW9uIGRhdGEuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtcmVjaXBlcy1zdXBwb3J0Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtc3VwcG9ydC88L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyByZWNpcGVzIHVzZWQgYnkgb3RoZXIgcmVjaXBlcywgYnV0IHRoYXQgYXJlCisgICAgICAgICAgICBub3QgZGlyZWN0bHkgaW5jbHVkZWQgaW4gaW1hZ2VzIChpLmUuIGRlcGVuZGVuY2llcyBvZiBvdGhlcgorICAgICAgICAgICAgcmVjaXBlcykuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLW1ldGEtc2l0ZSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9zaXRlLzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgbGlzdCBvZiBjYWNoZWQgcmVzdWx0cyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgQmVjYXVzZSBjZXJ0YWluICJhdXRvY29uZiIgdGVzdCByZXN1bHRzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGR1ZSB0bworICAgICAgICAgICAgdGhlIHRlc3RzIG5vdCBhYmxlIHRvIHJ1biBvbiBhIGxpdmUgc3lzdGVtLCB0aGUgaW5mb3JtYXRpb24gaW4gdGhpcyBkaXJlY3RvcnkgaXMKKyAgICAgICAgICAgIHBhc3NlZCB0byAiYXV0b2NvbmYiIGZvciB0aGUgdmFyaW91cyBhcmNoaXRlY3R1cmVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZXRhLXJlY2lwZXMtdHh0Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMudHh0PC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRlbnRzIG9mIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3R5bGUuY3NzIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJjZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0eWxlLmNzcwpAQCAtMCwwICsxLDEwMzUgQEAKKy8qCisKKyAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKKworICAgR2VuZXJpYyBYSFRNTCAvIERvY0Jvb2sgWEhUTUwgQ1NTIFN0eWxlc2hlZXQuCisKKyAgIEJyb3dzZXIgd3JhbmdsaW5nIGFuZCB0eXBvZ3JhcGhpYyBkZXNpZ24gYnkKKyAgICAgIE95dmluZCBLb2xhcyAvIHBpcHBpbkBnaW1wLm9yZworCisgICBDdXN0b21pc2VkIGZvciBQb2t5IGJ5CisgICAgICBNYXR0aGV3IEFsbHVtIC8gbWFsbHVtQG8taGFuZC5jb20KKworICAgVGhhbmtzIHRvOgorICAgICBMaWFtIFIuIEUuIFF1aW4KKyAgICAgV2lsbGlhbSBTa2FnZ3MKKyAgICAgSmFrdWIgU3RlaW5lcgorCisgICBTdHJ1Y3R1cmUKKyAgIC0tLS0tLS0tLQorCisgICBUaGUgc3R5bGVzaGVldCBpcyBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBzZWN0aW9uczoKKworICAgICAgIFBvc2l0aW9uaW5nCisgICAgICAgICAgTWFyZ2lucywgcGFkZGluZ3MsIHdpZHRoLCBmb250LXNpemUsIGNsZWFyaW5nLgorICAgICAgIERlY29yYXRpb25zCisgICAgICAgICAgQm9yZGVycywgc3R5bGUKKyAgICAgICBDb2xvcnMKKyAgICAgICAgICBDb2xvcnMKKyAgICAgICBHcmFwaGljcworICAgICAgICAgIEdyYXBoaWNhbCBiYWNrZ3JvdW5kcworICAgICAgIE5hc3R5IElFIHR3ZWFrcworICAgICAgICAgIFdvcmthcm91bmRzIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsgaW4gaW50ZXJuZXQgZXhwbG9yZXIsCisgICAgICAgICAgY3VycmVudGx5IG1ha2VzIHRoZSBzdHlsZXNoZWV0IG5vbiB2YWxpZGF0aW5nLCBidXQgdXAgdW50aWwKKyAgICAgICAgICB0aGlzIHBvaW50IGl0IGlzIHZhbGlkYXRpbmcuCisgICAgICAgTW96aWxsYSBleHRlbnNpb25zCisgICAgICAgICAgVHJhbnNwYXJlbmN5IGZvciBmb290ZXIKKwkgIFJvdW5kZWQgY29ybmVycyBvbiBib3hlcworCisqLworCisKKyAgLyoqKioqKioqKioqKioqKiAvCisgLyAgUG9zaXRpb25pbmcgICAvCisvICoqKioqKioqKioqKioqKi8KKworYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTYW5zLCBzYW5zLXNlcmlmOworCisgIG1pbi13aWR0aDogNjQwcHg7CisgIHdpZHRoOiA4MCU7CisgIG1hcmdpbjogIDBlbSBhdXRvOworICBwYWRkaW5nOiAyZW0gNWVtIDVlbSA1ZW07CisgIGNvbG9yOiAjMzMzOworfQorCitoMSxoMixoMyxoNCxoNSxoNixoNyB7CisgIGZvbnQtZmFtaWx5OiBBcmlhbCwgU2FuczsKKyAgY29sb3I6ICMwMDU1N0Q7CisgIGNsZWFyOiBib3RoOworfQorCitoMSB7CisgIGZvbnQtc2l6ZTogMmVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMmVtIDBlbSAwZW0gMGVtOworfQorCitoMi5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMC4xMGVtIDBlbSAzLjBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjhlbTsKKyAgcGFkZGluZy1sZWZ0OiAyMCU7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworaDIgeworICBtYXJnaW46IDJlbSAwZW0gMC42NmVtIDBlbTsKKyAgcGFkZGluZzogMC41ZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS41ZW07CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoMy5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQyLjE0JTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK2gzIHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0MCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNCB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDUgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g2IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLmF1dGhvcmdyb3VwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIHBhZGRpbmctdG9wOiAyNTZweDsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3Bva3ktdGl0bGUucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOworICBtYXJnaW4tdG9wOiAtMjU2cHg7CisgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CisgIG1hcmdpbi1sZWZ0OiAwcHg7CisgIHRleHQtYWxpZ246IHJpZ2h0OworICB3aWR0aDogNzQwcHg7Cit9CisKK2gzLmF1dGhvciB7CisgIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc2l6ZTogMTAwJTsKKyAgY29sb3I6ICMzMzM7CisgIGNsZWFyOiBib3RoOworfQorCisuYXV0aG9yIHR0LmVtYWlsIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKKy50aXRsZXBhZ2UgaHIgeworICB3aWR0aDogMGVtOworICBjbGVhcjogYm90aDsKK30KKworLnJldmhpc3RvcnkgeworICBwYWRkaW5nLXRvcDogMmVtOworICBjbGVhcjogYm90aDsKK30KKworLnRvYywKKy5saXN0LW9mLXRhYmxlcywKKy5saXN0LW9mLWV4YW1wbGVzLAorLmxpc3Qtb2YtZmlndXJlcyB7CisgIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOworICBjb2xvcjogIzAwNTU3RDsKK30KKworLnRvYyBwLAorLmxpc3Qtb2YtdGFibGVzIHAsCisubGlzdC1vZi1maWd1cmVzIHAsCisubGlzdC1vZi1leGFtcGxlcyBwIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOworICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIHAgYiwKKy5saXN0LW9mLXRhYmxlcyBwIGIsCisubGlzdC1vZi1maWd1cmVzIHAgYiwKKy5saXN0LW9mLWV4YW1wbGVzIHAgYnsKKyAgZm9udC1zaXplOiAxMDAuMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisudG9jIGRsLAorLmxpc3Qtb2YtdGFibGVzIGRsLAorLmxpc3Qtb2YtZmlndXJlcyBkbCwKKy5saXN0LW9mLWV4YW1wbGVzIGRsIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGR0IHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkZCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLyogVXNlIHRoaXMgc2V0IHdoZW4geW91IGRlY2lkZSB0byBnZXQgdGhlIGltYWdlcyBpbiBmb3IgdmFyaWFibGVzLgorCitkaXYuZ2xvc3NhcnkgZGwsCitkaXYudmFyaWFibGVsaXN0IGRsIHsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgd2lkdGg6IDBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWxlZnQ6IDE1LjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMmVtOworfQorCisuZ2xvc3NhcnkgZGQgcCwKKy52YXJpYWJsZWxpc3QgZGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZ2xvc3NkZWZmaXJzdCB7CisgIHRleHQtaW5kZW50OiAtNzBweDsKK30KKyovCisKKy8qIFN0YXJ0IG9mIG5vbi1pbWFnZSBzZXQgKi8KKworZGl2Lmdsb3NzYXJ5IGRsLAorZGl2LnZhcmlhYmxlbGlzdCBkbCB7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHdpZHRoOiAyMGVtOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnZhcmlhYmxlbGlzdCBkbCBkdCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworfQorCisuZ2xvc3NhcnkgZGwgZGQsCisudmFyaWFibGVsaXN0IGRsIGRkIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tbGVmdDogMjUuNWVtOworfQorCisuZ2xvc3NhcnkgZGQgcCwKKy52YXJpYWJsZWxpc3QgZGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZ2xvc3NkZWZmaXJzdCB7CisgIHRleHQtaW5kZW50OiAwcHg7Cit9CisKKy8qIEVuZCBvZiBub24taW1hZ2Ugc2V0ICovCisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK2RpdiBwLmNvcHlyaWdodCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK2Rpdi5sZWdhbG5vdGljZSBwLmxlZ2Fsbm90aWNlLXRpdGxlIHsKKyAgbWFyZ2luLWJvdHRvbTogMGVtOworfQorCitwIHsKKyAgbGluZS1oZWlnaHQ6IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisKK30KKworZGwgeworICBwYWRkaW5nLXRvcDogMGVtOworfQorCitociB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCisKKy5tZWRpYW9iamVjdCwKKy5tZWRpYW9iamVjdGNvIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitpbWcgeworICBib3JkZXI6IG5vbmU7Cit9CisKK3VsIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMS41ZW07Cit9CisKK3VsIGxpIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCit1bCBsaSBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwordGFibGUgeworICB3aWR0aCA6MTAwJTsKK30KKwordGggeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCitwIGFbaWRdIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDBweDsKKyAgZGlzcGxheTogaW5saW5lOworICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworfQorCithIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGNvbG9yOiAjNDQ0OworfQorCitwcmUgeworICAgIG92ZXJmbG93OiBhdXRvOworfQorCithOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIC8qZm9udC13ZWlnaHQ6IGJvbGQ7Ki8KK30KKworLyogVGhpcyBzdHlsZSBkZWZpbmVzIGhvdyB0aGUgcGVybWFsaW5rIGNoYXJhY3RlcgorICAgYXBwZWFycyBieSBpdHNlbGYgYW5kIHdoZW4gaG92ZXJlZCBvdmVyIHdpdGgKKyAgIHRoZSBtb3VzZS4gKi8KKworW2FsdD0nUGVybWFsaW5rJ10geyBjb2xvcjogI2VlZTsgfQorW2FsdD0nUGVybWFsaW5rJ106aG92ZXIgeyBjb2xvcjogYmxhY2s7IH0KKworCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUgeworICBtYXJnaW46IDFlbSAwZW07CisgIHBhZGRpbmc6IDFlbTsKKyAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWxleGFtcGxlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbHRhYmxlIHAudGl0bGUgYiwKK2Rpdi5maWd1cmUgcC50aXRsZSBiLAorZGl2LmV4YW1wbGUgcC50aXRsZSBiLAorZGl2LnRhYmxlIHAudGl0bGUgYnsKKyAgICBwYWRkaW5nLXRvcDogMGVtOworICAgIG1hcmdpbi10b3A6IDBlbTsKKyAgICBmb250LXNpemU6IDEwMCU7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKworLm1lZGlhb2JqZWN0IC5jYXB0aW9uLAorLm1lZGlhb2JqZWN0IC5jYXB0aW9uIHAgIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZy10b3A6IDAuNWVtOworICBwYWRkaW5nLWJvdHRvbTogMC41ZW07Cit9CisKKy5lcGlncmFwaCB7CisgIHBhZGRpbmctbGVmdDogNTUlOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKy5lcGlncmFwaCBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmVwaWdyYXBoIC5xdW90ZSB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKy5lcGlncmFwaCAuYXR0cmlidXRpb24geworICBmb250LXN0eWxlOiBub3JtYWw7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitzcGFuLmFwcGxpY2F0aW9uIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucHJvZ3JhbWxpc3RpbmcgeworICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICBmb250LXNpemU6IDgwJTsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgbWFyZ2luOiAxLjMzZW0gMGVtOworICBwYWRkaW5nOiAxLjMzZW07Cit9CisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBtYXJnaW4tdG9wOiAxZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKKworfQorCisvKiBmb3JjZSBmdWxsIHdpZHRoIG9mIHRhYmxlIHdpdGhpbiBkaXYgKi8KKy50aXAgdGFibGUsCisud2FybmluZyB0YWJsZSwKKy5jYXV0aW9uIHRhYmxlLAorLm5vdGUgdGFibGUgeworICBib3JkZXI6IG5vbmU7CisgIHdpZHRoOiAxMDAlOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBwYWRkaW5nOiAwLjhlbSAwLjBlbSAwLjBlbSAwLjBlbTsKKyAgbWFyZ2luIDogMGVtIDBlbSAwZW0gMGVtOworfQorCisudGlwIHAsCisud2FybmluZyBwLAorLmNhdXRpb24gcCwKKy5ub3RlIHAgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMC41ZW07CisgIHBhZGRpbmctcmlnaHQ6IDFlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmFjcm9ueW0geworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICBwYWRkaW5nOiAwLjA5ZW0gMC4zZW07CisgIG1hcmdpbjogMGVtOworfQorCisuaXRlbWl6ZWRsaXN0IGxpIHsKKyAgY2xlYXI6IG5vbmU7Cit9CisKKy5maWxlbmFtZSB7CisgIGZvbnQtc2l6ZTogbWVkaXVtOworICBmb250LWZhbWlseTogQ291cmllciwgbW9ub3NwYWNlOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDBlbTsKKyAgdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RmOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIHBvc2l0aW9uOiBmaXhlZDsKKyAgbGVmdDogMGVtOworICBib3R0b206IDBlbTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworZGl2Lm5hdmhlYWRlciB0ZCwKK2Rpdi5uYXZmb290ZXIgdGQgeworICBmb250LXNpemU6IDY2JTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0aCB7CisgIC8qZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzLCBzZXJpZjsqLworICAvKmZvbnQtc2l6ZTogeC1sYXJnZTsqLworICBmb250LXNpemU6IDgwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci1ib3R0b206IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYSwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYSB7CisgIGNvbG9yOiAjNzc3OworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKKy8qIG5vcm1hbCB0ZXh0IGluIHRoZSBmb290ZXIgKi8KK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgeworICBjb2xvcjogYmxhY2s7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTp2aXNpdGVkLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOnZpc2l0ZWQgeworICBjb2xvcjogIzQ0NDsKK30KKworCisvKiBsaW5rcyBpbiBoZWFkZXIgYW5kIGZvb3RlciAqLworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOmhvdmVyLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBjb2xvcjogIzMzYTsKK30KKworZGl2Lm5hdmhlYWRlciBociwKK2Rpdi5uYXZmb290ZXIgaHIgeworICBkaXNwbGF5OiBub25lOworfQorCisKKy5xYW5kYXNldCB0ci5xdWVzdGlvbiB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnFhbmRhc2V0IHRyLmFuc3dlciB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKy5hbnN3ZXIgdGQgeworICBwYWRkaW5nLWJvdHRvbTogMS41ZW07Cit9CisKKy5lbXBoYXNpcyB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisKKyAgLyoqKioqKioqKioqKiogLworIC8gZGVjb3JhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKi8KKworLnRpdGxlcGFnZSB7Cit9CisKKy5wYXJ0IC50aXRsZSB7Cit9CisKKy5zdWJ0aXRsZSB7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKgoraDEgeworICBib3JkZXI6IG5vbmU7Cit9CisKK2gyIHsKKyAgYm9yZGVyLXRvcDogc29saWQgMC4yZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDMgeworICBib3JkZXItdG9wOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDQgeworICBib3JkZXI6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNSB7CisgIGJvcmRlcjogMGVtOworfQorKi8KKworLnByb2dyYW1saXN0aW5nIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisucXVlc3Rpb24gdGQgeworICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Cit9CisKKy5hbnN3ZXIgeworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZDsKK30KKworICAvKioqKioqKioqIC8KKyAvICBjb2xvcnMgIC8KKy8gKioqKioqKioqLworCitib2R5IHsKKyAgY29sb3I6ICMzMzM7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorCithIHsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKK2E6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVkZWRlOworfQorCisKK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3LAoraDggeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworaHIgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKKworLnRpcCwgLndhcm5pbmcsIC5jYXV0aW9uLCAubm90ZSB7CisgIGJvcmRlci1jb2xvcjogI2ZmZjsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKK30KKworCisud2FybmluZyB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLnRpcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5ub3RlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgY29sb3I6ICMwNDQ7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworcHJlLnByb2dyYW1saXN0aW5nIHsKKyAgY29sb3I6IGJsYWNrOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworICBib3JkZXItY29sb3I6ICNhYWE7CisgIGJvcmRlci13aWR0aDogMnB4OworfQorCisuZ3VpbWVudSwKKy5ndWlsYWJlbCwKKy5ndWltZW51aXRlbSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgYm9yZGVyLWNvbG9yOiAjOTk5OworfQorCisKK2Rpdi5uYXZoZWFkZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKK2Rpdi5uYXZmb290ZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCisKKyAgLyoqKioqKioqKioqIC8KKyAvICBncmFwaGljcyAgLworLyAqKioqKioqKioqKi8KKworLyoKK2JvZHkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisubmF2aGVhZGVyLAorLm5vdGUsCisudGlwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLndhcm5pbmcsCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5maWd1cmUsCisuaW5mb3JtYWxmaWd1cmUsCisuZXhhbXBsZSwKKy5pbmZvcm1hbGV4YW1wbGUsCisudGFibGUsCisuaW5mb3JtYWx0YWJsZSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworKi8KK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3eworfQorCisvKgorRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCisKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisqLworCitkaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5jb2xvcGhvbiAudGl0bGUsCitkaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7Cit9CisKK2Rpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworfQorCisKK2gxLnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy9wb2t5LXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBoZWlnaHQ6IDI1NnB4OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCitoMi5zdWJ0aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworICB3aWR0aDogMHB4OworICBkaXNwbGF5OiBub25lOworfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gIHBpcHBpbi5naW1wLm9yZyBzcGVjaWZpYyBhbHRlcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIGNvbG9yOiAjNzc3OworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZzogMDsKKyAgbWFyZ2luOiAwOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHRvcDogMHB4OworICBsZWZ0OiAwcHg7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDUwcHg7CisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9oZWFkaW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7CisgIGJvcmRlcjogbm9uZTsKK30KKworZGl2LmhlYWRpbmcgYSB7CisgIGNvbG9yOiAjNDQ0OworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlcjogbm9uZTsKKyAgY29sb3I6ICNkZGQ7CisgIGZvbnQtc2l6ZTogODAlOworICB0ZXh0LWFsaWduOnJpZ2h0OworCisgIHdpZHRoOiAxMDAlOworICBwYWRkaW5nLXRvcDogMTBweDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBib3R0b206IDBweDsKKyAgbGVmdDogMHB4OworCisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9mb290aW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworfQorKi8KKworCisKKyAgLyoqKioqKioqKioqKioqKioqKiAvCisgLyAgbmFzdHkgaWUgdHdlYWtzICAvCisvICoqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7CisgIG1hcmdpbi1sZWZ0OmV4cHJlc3Npb24oIi01ZW0iKTsKK30KK2JvZHkgeworICBwYWRkaW5nOmV4cHJlc3Npb24oIjRlbSA1ZW0gMGVtIDVlbSIpOworfQorKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyBtb3ppbGxhIHZlbmRvciBzcGVjaWZpYyBjc3MgZXh0ZW5zaW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICAtbW96LW9wYWNpdHk6IDAuOGVtOworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUsCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjNlbTsKK30KKyovCisKK3RhYmxlIHRyIHRkIHRhYmxlIHRyIHRkIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCitociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3RhYmxlIHsKKyAgYm9yZGVyOiAwZW07Cit9CisKKyAucGhvdG8geworICBmbG9hdDogcmlnaHQ7CisgIG1hcmdpbi1sZWZ0OiAgIDEuNWVtOworICBtYXJnaW4tYm90dG9tOiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXgtd2lkdGg6ICAgICAgMTdlbTsKKyAgYm9yZGVyOiAgICAgMXB4IHNvbGlkIGdyYXk7CisgIHBhZGRpbmc6ICAgIDNweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisgLnNlcGVyYXRvciB7CisgICBwYWRkaW5nLXRvcDogMmVtOworICAgY2xlYXI6IGJvdGg7CisgIH0KKworICAjdmFsaWRhdG9ycyB7CisgICAgICBtYXJnaW4tdG9wOiA1ZW07CisgICAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICAgIGNvbG9yOiAjNzc3OworICB9CisgIEBtZWRpYSBwcmludCB7CisgICAgICBib2R5IHsKKyAgICAgICAgICBmb250LXNpemU6IDhwdDsKKyAgICAgIH0KKyAgICAgIC5ub3ByaW50IHsKKyAgICAgICAgICBkaXNwbGF5OiBub25lOworICAgICAgfQorICB9CisKKworLnRpcCwKKy5ub3RlIHsKKyAgIGJhY2tncm91bmQ6ICNmMGYwZjI7CisgICBjb2xvcjogIzMzMzsKKyAgIHBhZGRpbmc6IDIwcHg7CisgICBtYXJnaW46IDIwcHg7Cit9CisKKy50aXAgaDMsCisubm90ZSBoMyB7CisgICBwYWRkaW5nOiAwZW07CisgICBtYXJnaW46IDBlbTsKKyAgIGZvbnQtc2l6ZTogMmVtOworICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICBjb2xvcjogIzMzMzsKK30KKworLnRpcCBhLAorLm5vdGUgYSB7CisgICBjb2xvcjogIzMzMzsKKyAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuZm9vdG5vdGUgeworICAgZm9udC1zaXplOiBzbWFsbDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisvKiBDaGFuZ2VzIHRoZSBhbm5vdW5jZW1lbnQgdGV4dCAqLworLnRpcCBoMywKKy53YXJuaW5nIGgzLAorLmNhdXRpb24gaDMsCisubm90ZSBoMyB7CisgICBmb250LXNpemU6bGFyZ2U7CisgICBjb2xvcjogIzAwNTU3RDsKK30KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnJzdAppbmRleCA1NGYzOGY2Li41NjIxOGU0IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqCiBTeXN0ZW0gUmVxdWlyZW1lbnRzCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4YjAwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbApAQCAtMCwwICsxLDU3NyBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdyZWYtbWFudWFsLXN5c3RlbS1yZXF1aXJlbWVudHMnPgorPHRpdGxlPlN5c3RlbSBSZXF1aXJlbWVudHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCEKKyAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCByZWxlYXNlCisgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LCBhbmQKKyAgICAgICAgaXMgbW9zdCBlZmZlY3RpdmVseSB1c2VkIGFmdGVyIHlvdSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcKKyAgICAgICAgb2YgdGhlIGJhc2ljcyBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgVGhlIG1hbnVhbCBpcyBuZWl0aGVyIG1lYW50IHRvIGJlIHJlYWQgYXMgYSBzdGFydGluZyBwb2ludCB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCwgbm9yIHJlYWQgZnJvbSBzdGFydCB0byBmaW5pc2guCisgICAgICAgIFJhdGhlciwgdXNlIHRoaXMgbWFudWFsIHRvIGZpbmQgdmFyaWFibGUgZGVmaW5pdGlvbnMsIGNsYXNzCisgICAgICAgIGRlc2NyaXB0aW9ucywgYW5kIHNvIGZvcnRoIGFzIG5lZWRlZCBkdXJpbmcgdGhlIGNvdXJzZSBvZiB1c2luZworICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPiBhbmQgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I292ZXJ2aWV3LWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC91bGluaz4iCisgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIHF1aWNrbHkgYnVpbGQgYW4gaW1hZ2UKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gdW5kZXJzdGFuZCBjb25jZXB0cywgd29yayB0aHJvdWdoIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CUklFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC91bGluaz4KKyAgICAgICAgZG9jdW1lbnQuCisgICAgICAgIFlvdSBjYW4gZmluZCAiaG93LXRvIiBpbmZvcm1hdGlvbiBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC91bGluaz4uCisgICAgICAgIFlvdSBjYW4gZmluZCBZb2N0byBQcm9qZWN0IG92ZXJ2aWV3IGFuZCBjb25jZXB0dWFsIGluZm9ybWF0aW9uIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7Jz5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHNldCwKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz4KKyAgICAgICAgPHRpdGxlPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlIFlvY3RvIFByb2plY3QgaXMgc3VwcG9ydGVkIG9uIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbnM6CisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgYXJlIHRlc3RlZCBhZ2FpbnN0IHRoZSBzdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbnMgaW4gdGhlIGZvbGxvd2luZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc2hvdWxkIHdvcmsgb24gb3RoZXIgZGlzdHJpYnV0aW9ucyBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24gaXMgbm90IHBlcmZvcm1lZCBhZ2FpbnN0IHRoZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIFlvY3RvIFByb2plY3QgZG9lcyBub3Qgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGN1cnJlbnRseSBoYXMgbm8gcGxhbnMgdG8gc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgcm9sbGluZy1yZWxlYXNlcyBvciBkZXZlbG9wbWVudCBkaXN0cmlidXRpb25zIGR1ZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgY29uc3RhbnRseSBjaGFuZ2luZyBuYXR1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICBXZSB3ZWxjb21lIHBhdGNoZXMgYW5kIGJ1ZyByZXBvcnRzLCBidXQga2VlcCBpbiBtaW5kCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG91ciBwcmlvcml0eSBpcyBvbiB0aGUgc3VwcG9ydGVkIHBsYXRmb3JtcyBsaXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgdXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCB2MiB0byBzZXQgdXAgYSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCB1c2luZyBXaW5kb3dzIDEwLCBidXQgdmFsaWRhdGlvbiBpcyBub3QgcGVyZm9ybWVkCisgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IGJ1aWxkIGhvc3RzIHVzaW5nIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMdjEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggV1NMdjIsIGlmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZQorICAgICAgICAgICAgICAgICAgICAgICAgICB0byBXU0x2Mi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zLCBwbGVhc2UgZ28gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdWJtaXQgYSBidWcuCisgICAgICAgICAgICAgICAgICAgICAgICBXZSBhcmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIGFib3V0IHlvdXIgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3VibWl0IGEgYnVnLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz5CdWd6aWxsYSB3aWtpIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3N1Ym1pdHRpbmctYS1kZWZlY3QtYWdhaW5zdC10aGUteW9jdG8tcHJvamVjdCc+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE2LjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxOC4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMjAuMDQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDMwPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSAzMTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMzI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIDcueDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgOC54PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggOC54IChKZXNzaWUpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggOS54IChTdHJldGNoKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDEwLnggKEJ1c3Rlcik8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T3BlblNVU0UgTGVhcCAxNS4xPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgV2hpbGUgdGhlIFlvY3RvIFByb2plY3QgVGVhbSBhdHRlbXB0cyB0byBlbnN1cmUgYWxsIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHJlbGVhc2VzIGFyZSBvbmUgaHVuZHJlZCBwZXJjZW50IGNvbXBhdGlibGUgd2l0aCBlYWNoIG9mZmljaWFsbHkKKyAgICAgICAgICAgIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24sIGluc3RhbmNlcyBtaWdodCBleGlzdCB3aGVyZSB5b3UKKyAgICAgICAgICAgIGVuY291bnRlciBhIHByb2JsZW0gd2hpbGUgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBzcGVjaWZpYworICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+CisgICAgPHRpdGxlPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgQnVpbGQgSG9zdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyB5b3UgbmVlZCBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gY2FuCisgICAgICAgICAgICBiZSBsYXJnZSB3aGVuIGNvdmVyaW5nIGFsbCBidWlsZCBzY2VuYXJpb3MgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHJlcXVpcmVkIHBhY2thZ2VzIGFjY29yZGluZyB0bworICAgICAgICAgICAgTGludXggZGlzdHJpYnV0aW9uIGFuZCBmdW5jdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1YnVudHUtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPlVidW50dSBhbmQgRGViaWFuPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIFVidW50dSBvciBEZWJpYW4gTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vc3M0LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodCBleHBlcmllbmNlIFFFTVUgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBpdHMgb3duIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmg8L2ZpbGVuYW1lPiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEZWJpYW4gc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gaW50byB0aGlzIHNpdHVhdGlvbiwgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbnMgZXhpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gYXB0LWdldCBidWlsZC1kZXAgcWVtdQorICAgICAkIHN1ZG8gYXB0LWdldCByZW1vdmUgb3NzNC1kZXYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgRGViaWFuLTgsIDxmaWxlbmFtZT5weXRob24zLWdpdDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cHlsaW50MzwvZmlsZW5hbWU+IGFyZSBubyBsb25nZXIgYXZhaWxhYmxlIHZpYSA8ZmlsZW5hbWU+YXB0LWdldDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gcHlsaW50PT0xLjkuNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIG9uIGEgaGVhZGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCAmVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIG1ha2UgeHNsdHByb2MgZG9jYm9vay11dGlscyBmb3AgZGJsYXRleCB4bWx0bworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2ZlZG9yYS1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+RmVkb3JhIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIEZlZG9yYSBMaW51eCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIGEgaGVhZGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsICZGRURPUkFfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKKyAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J29wZW5zdXNlLXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5vcGVuU1VTRSBQYWNrYWdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBvcGVuU1VTRSBMaW51eCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIGEgaGVhZGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIHp5cHBlciBpbnN0YWxsICZPUEVOU1VTRV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIHp5cHBlciBpbnN0YWxsIGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtNy1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2VudE9TLTcgUGFja2FnZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgQ2VudE9TLTcgTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TN19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVzIGFkZGl0aW9uYWwgTWV0YWRhdGEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKKyAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtOC1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2VudE9TLTggUGFja2FnZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgQ2VudE9TLTggTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCAmQ0VOVE9TOF9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBvd2VyVG9vbHM8L2ZpbGVuYW1lPiByZXBvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBhZGRpdGlvbmFsIHBhY2thZ2VzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycGNnZW48L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXhpbmZvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVzIGFkZGl0aW9uYWwgTWV0YWRhdGEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKKyAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz4KKyAgICAgICAgPHRpdGxlPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIGJ1aWxkIHN5c3RlbSwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQorICAgICAgICAgICAgbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcgdmVyc2lvbiByZXF1aXJlbWVudHMgZm9yIEdpdCwgdGFyLCBhbmQKKyAgICAgICAgICAgIFB5dGhvbjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjggb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy41LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCBhbGwgdGhlc2UgcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgeW91IGNhbiByZXNvbHZlIHRoaXMgYnkgaW5zdGFsbGluZyBhIDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhcmJhbGwgdGhhdCBjb250YWlucyB0aGVzZSB0b29scy4KKyAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoZSB0YXJiYWxsIG9uZSBvZiB0d28gd2F5czogZG93bmxvYWQgYSBwcmUtYnVpbHQKKyAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uLCB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIG11c3QgbWVldCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBnY2M6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5nY2MgNS4wIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGRvZXMgbm90IG1lZXQgdGhpcyByZXF1aXJlbWVudCwKKyAgICAgICAgICAgIHlvdSBjYW4gcmVzb2x2ZSB0aGlzIGJ5IGluc3RhbGxpbmcgYSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXJiYWxsIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCB0b29scywgdGhlIGVxdWl2YWxlbnQgb2YgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2luc3RhbGxpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsLXdpdGgtaW5zdGFsbC1idWlsZHRvb2xzLXNjcmlwdCc+CisgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGwgd2l0aCA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgaXMgdGhlIGVhc2llc3QKKyAgICAgICAgICAgICAgICBvZiB0aGUgdGhyZWUgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29scy4gSXQgZG93bmxvYWRzCisgICAgICAgICAgICAgICAgYSBwcmUtYnVpbHQgYnVpbGR0b29scyBpbnN0YWxsZXIgYW5kIGF1dG9tYXRpY2FsbHkgaW5zdGFsbHMgdGhlIHRvb2xzCisgICAgICAgICAgICAgICAgZm9yIHlvdToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgdGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHBva3kKKyAgICAgJCBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scyAtLXdpdGhvdXQtZXh0ZW5kZWQtYnVpbGR0b29scyBcCisgICAgICAgLS1iYXNlLXVybCAmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy95b2N0byBcCisgICAgICAgLS1yZWxlYXNlIHlvY3RvLSZESVNUUk87IFwKKyAgICAgICAtLWluc3RhbGxlci12ZXJzaW9uICZESVNUUk87CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCB0aGUgYnVpbGR0b29scyB0YXJiYWxsIHdpbGwgYmUgZG93bmxvYWRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjaGVja3N1bSBvZiB0aGUgZG93bmxvYWQgd2lsbCBiZSB2ZXJpZmllZCwgdGhlIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBydW4gZm9yIHlvdSwgYW5kIHNvbWUgYmFzaWMgY2hlY2tzIHdpbGwgYmUgcnVuIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0byBtYWtlIHN1cmUgdGhlIGluc3RhbGxhdGlvbiBpcyBmdW5jdGlvbmFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gYXZvaWQgdGhlIG5lZWQgb2YgPGZpbGVuYW1lPnN1ZG88L2ZpbGVuYW1lPiBwcml2aWxlZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCB0ZWxsIHRoZSBpbnN0YWxsZXIgdG8gaW5zdGFsbCBpbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPi9wYXRoL3RvLzwvcmVwbGFjZWFibGU+cG9reS9idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIG5lZWRzIHRoZSBhZGRpdGlvbmFsIHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBpbiB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbCwgeW91IGNhbiBpbnN0ZWFkIGV4ZWN1dGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgcG9reQorICAgICAkIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgPHJlcGxhY2VhYmxlPi9wYXRoL3RvLzwvcmVwbGFjZWFibGU+cG9reS9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5c2RrLWxpbnV4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg2IG9yIHg4Nl82NCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCisgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4gQW5kIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgd29ya2luZyB2ZXJzaW9ucyBvZiB0b29scyBpbmNsdWRpbmcgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGFuZCB0aGUgb3RoZXIgdG9vbHMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rvd25sb2FkaW5nLWEtcHJlLWJ1aWx0LWJ1aWxkdG9vbHMtdGFyYmFsbCc+CisgICAgICAgICAgICA8dGl0bGU+RG93bmxvYWRpbmcgYSBQcmUtQnVpbHQgPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIHJ1bm5pbmcgYSBwcmUtYnVpbHQgYnVpbGR0b29scyBpbnN0YWxsZXIgaXMKKyAgICAgICAgICAgICAgICB0aGUgZWFzaWVzdCBvZiB0aGUgdHdvIG1ldGhvZHMgYnkgd2hpY2ggeW91IGNhbiBnZXQgdGhlc2UgdG9vbHM6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGUgYW5kIGRvd25sb2FkIHRoZSA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUkVMRUFTRV9ETF9VUkw7L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgdHJhZGl0aW9uYWwgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSBleHRlbmRlZCBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24sIGEgcHJvbXB0IGFwcGVhcnMgdGhhdCBhbGxvd3MgeW91IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGNob29zZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAvaG9tZS88cmVwbGFjZWFibGU+eW91ci11c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgdGhlIHRvb2xzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBieSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NSBvciB4ODYtNjQpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgYXJlIGFkZGVkIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LiBBbmQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgdmVyc2lvbnMgb2YgdG9vbHMgaW5jbHVkaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYW5kIHRoZSBvdGhlciB0b29scyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLXlvdXItb3duLWJ1aWxkdG9vbHMtdGFyYmFsbCc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgWW91ciBPd24gPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnVpbGRpbmcgYW5kIHJ1bm5pbmcgeW91ciBvd24gYnVpbGR0b29scyBpbnN0YWxsZXIgYXBwbGllcworICAgICAgICAgICAgICAgIG9ubHkgd2hlbiB5b3UgaGF2ZSBhIGJ1aWxkIGhvc3QgdGhhdCBjYW4gYWxyZWFkeSBydW4gQml0QmFrZS4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB1c2UgdGhhdCBtYWNoaW5lIHRvIGJ1aWxkIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgdGFrZSBzdGVwcyB0byB0cmFuc2ZlciBhbmQgcnVuIGl0IG9uIGEKKyAgICAgICAgICAgICAgICBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgbWluaW1hbCBHaXQsIHRhciwgYW5kIFB5dGhvbgorICAgICAgICAgICAgICAgIChvciBnY2MpIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIHN0ZXBzIHRvIHRha2UgdG8gYnVpbGQgYW5kIHJ1biB5b3VyIG93bgorICAgICAgICAgICAgICAgIGJ1aWxkdG9vbHMgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBpcyBhYmxlIHRvIHJ1biBCaXRCYWtlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmUgc3VyZSB5b3UgaGF2ZSBzZXQgdXAgeW91ciBidWlsZCBlbnZpcm9ubWVudCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2V0dXAgc2NyaXB0CisgICAgICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUgQml0QmFrZSBjb21tYW5kIHRvIGJ1aWxkIHRoZSB0YXJiYWxsOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgYnVpbGR0b29scy10YXJiYWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBvciBydW4gdGhlIEJpdEJha2UgY29tbWFuZCB0byBidWlsZCB0aGUgZXh0ZW5kZWQgdGFyYmFsbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGJ1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hldGhlciB5b3UgYnVpbGQgdG9vbHMgZm9yIGEgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICBvciA2NC1iaXQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcywgeW91IGNhbiBmaW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZSB0aGF0IGluc3RhbGxzCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBpbiB0aGUgPGZpbGVuYW1lPnRtcC9kZXBsb3kvc2RrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbnN0YWxsZXIgZmlsZSBoYXMgdGhlIHN0cmluZyAiYnVpbGR0b29scyIKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yICJidWlsZHRvb2xzLWV4dGVuZGVkIikgaW4gdGhlIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmZXIgdGhlIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QgdG8gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgb3IgUHl0aG9uIChvciBnY2MpIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgbWFjaGluZSB0aGF0IGRvZXMgbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRoZSA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICB0byBpbnN0YWxsIHRoZSB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgdHJhZGl0aW9uYWwgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSBleHRlbmRlZCBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzaCB+L0Rvd25sb2Fkcy94ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24sIGEgcHJvbXB0IGFwcGVhcnMgdGhhdCBhbGxvd3MgeW91IHRvCisgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBjaG9vc2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSB0b29scyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYnkgdXNpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC14ODZfNjQtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NiBvciB4ODZfNjQpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgYXJlIGFkZGVkIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LiBBbmQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgdmVyc2lvbnMgb2YgdG9vbHMgaW5jbHVkaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYW5kIHRoZSBvdGhlciB0b29scyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnJzdAppbmRleCAyNTY5MzA2Li5kY2RmZjA1IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqCiBUYXNrcwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIwOWIzZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKQEAgLTAsMCArMSwxMTMxIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3JlZi10YXNrcyc+Cis8dGl0bGU+VGFza3M8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUYXNrcyBhcmUgdW5pdHMgb2YgZXhlY3V0aW9uIGZvciBCaXRCYWtlLgorICAgIFJlY2lwZXMgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlcykgdXNlIHRhc2tzIHRvIGNvbXBsZXRlCisgICAgY29uZmlndXJpbmcsIGNvbXBpbGluZywgYW5kIHBhY2thZ2luZyBzb2Z0d2FyZS4KKyAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgYSByZWZlcmVuY2Ugb2YgdGhlIHRhc2tzIGRlZmluZWQgaW4gdGhlCisgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKzwvcGFyYT4KKworPHNlY3Rpb24gaWQ9J25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPgorICAgIDx0aXRsZT5Ob3JtYWwgUmVjaXBlIEJ1aWxkIFRhc2tzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIG5vcm1hbCB0YXNrcyBhc3NvY2lhdGVkIHdpdGggYnVpbGRpbmcKKyAgICAgICAgYSByZWNpcGUuCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRhc2tzIGFuZCBkZXBlbmRlbmNpZXMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdGFza3MnPlRhc2tzPC91bGluaz4iIGFuZAorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNkZXBlbmRlbmNpZXMnPkRlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICBzZWN0aW9ucyBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IHRhc2sgZm9yIGFsbCByZWNpcGVzLgorICAgICAgICAgICAgVGhpcyB0YXNrIGRlcGVuZHMgb24gYWxsIG90aGVyIG5vcm1hbCB0YXNrcworICAgICAgICAgICAgcmVxdWlyZWQgdG8gYnVpbGQgYSByZWNpcGUuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWNvbXBpbGUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb21waWxlcyB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICBUaGlzIHRhc2sgcnVucyB3aXRoIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNldAorICAgICAgICAgICAgdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhpcyB0YXNrIGlzIHRvIHJ1biB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5vZV9ydW5tYWtlPC9maWxlbmFtZT4gZnVuY3Rpb24gaWYgYSBtYWtlZmlsZQorICAgICAgICAgICAgKDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+bWFrZWZpbGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIG9yIDxmaWxlbmFtZT5HTlVtYWtlZmlsZTwvZmlsZW5hbWU+KSBpcyBmb3VuZC4KKyAgICAgICAgICAgIElmIG5vIHN1Y2ggZmlsZSBpcyBmb3VuZCwgdGhlIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhc2sgZG9lcyBub3RoaW5nLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1jb21waWxlX3B0ZXN0X2Jhc2UnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NvbXBpbGVfcHRlc3RfYmFzZTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENvbXBpbGVzIHRoZSBydW50aW1lIHRlc3Qgc3VpdGUgaW5jbHVkZWQgaW4gdGhlIHNvZnR3YXJlIGJlaW5nCisgICAgICAgICAgICBidWlsdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtY29uZmlndXJlJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb25maWd1cmVzIHRoZSBzb3VyY2UgYnkgZW5hYmxpbmcgYW5kIGRpc2FibGluZyBhbnkgYnVpbGQtdGltZSBhbmQKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgVGhlIHRhc2sgcnVucyB3aXRoIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNldCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGlzIHRhc2sgaXMgdG8gcnVuCisgICAgICAgICAgICA8ZmlsZW5hbWU+b2VfcnVubWFrZSBjbGVhbjwvZmlsZW5hbWU+IGlmIGEgbWFrZWZpbGUKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPm1ha2VmaWxlPC9maWxlbmFtZT4sCisgICAgICAgICAgICBvciA8ZmlsZW5hbWU+R05VbWFrZWZpbGU8L2ZpbGVuYW1lPikgaXMgZm91bmQgYW5kCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ0xFQU5CUk9LRU4nPjxmaWxlbmFtZT5DTEVBTkJST0tFTjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgaXMgbm90IHNldCB0byAiMSIuCisgICAgICAgICAgICBJZiBubyBzdWNoIGZpbGUgaXMgZm91bmQgb3IgdGhlIDxmaWxlbmFtZT5DTEVBTkJST0tFTjwvZmlsZW5hbWU+CisgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gIjEiLCB0aGUgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXNrIGRvZXMgbm90aGluZy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtY29uZmlndXJlX3B0ZXN0X2Jhc2UnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZV9wdGVzdF9iYXNlPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29uZmlndXJlcyB0aGUgcnVudGltZSB0ZXN0IHN1aXRlIGluY2x1ZGVkIGluIHRoZSBzb2Z0d2FyZSBiZWluZworICAgICAgICAgICAgYnVpbHQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWRlcGxveSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV3JpdGVzIG91dHB1dCBmaWxlcyB0aGF0IGFyZSB0byBiZSBkZXBsb3llZCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JTUFHRSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfSU1BR0U8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhlIHRhc2sgcnVucyB3aXRoIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNldCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZWNpcGVzIGltcGxlbWVudGluZyB0aGlzIHRhc2sgc2hvdWxkIGluaGVyaXQgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kZXBsb3knPjxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzIGFuZCBzaG91bGQgd3JpdGUgdGhlIG91dHB1dCB0bworICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZRElSJz48ZmlsZW5hbWU+REVQTE9ZRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHdoaWNoIGlzIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJ9PC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGNsYXNzIHNldHMgdXAKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBhcyBhIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSB0YXNrIHRoYXQKKyAgICAgICAgICAgIGNhbiBiZSBhY2NlbGVyYXRlZCB0aHJvdWdoIHNzdGF0ZSB1c2UuCisgICAgICAgICAgICBUaGUgc3N0YXRlIG1lY2hhbmlzbSB0YWtlcyBjYXJlIG9mIGNvcHlpbmcgdGhlIG91dHB1dCBmcm9tCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHtERVBMT1lESVJ9PC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJfSU1BR0V9PC9maWxlbmFtZT4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIDx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICBEbyBub3Qgd3JpdGUgdGhlIG91dHB1dCBkaXJlY3RseSB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJfSU1BR0V9PC9maWxlbmFtZT4sIGFzIHRoaXMgY2F1c2VzCisgICAgICAgICAgICAgICAgdGhlIHNzdGF0ZSBtZWNoYW5pc20gdG8gbWFsZnVuY3Rpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzayBpcyBub3QgYWRkZWQgYXMgYSB0YXNrCisgICAgICAgICAgICBieSBkZWZhdWx0IGFuZCBjb25zZXF1ZW50bHkgbmVlZHMgdG8gYmUgYWRkZWQgbWFudWFsbHkuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgdGFzayB0byBydW4gYWZ0ZXIKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIHlvdSBjYW4gYWRkIGl0IGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGFkZHRhc2sgZGVwbG95IGFmdGVyIGRvX2NvbXBpbGUKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFkZGluZyA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gYWZ0ZXIgb3RoZXIgdGFza3Mgd29ya3MgdGhlCisgICAgICAgICAgICBzYW1lIHdheS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBhZGQgPGZpbGVuYW1lPmJlZm9yZSBkb19idWlsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5hZGR0YXNrPC9maWxlbmFtZT4gY29tbWFuZCAodGhvdWdoIGl0IGlzCisgICAgICAgICAgICAgICAgaGFybWxlc3MpLCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJhc2UnPjxmaWxlbmFtZT5iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY2xhc3MgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2J1aWxkW3JlY3JkZXB0YXNrXSArPSAiZG9fZGVwbG95IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjZGVwZW5kZW5jaWVzJz5EZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgcmUtZXhlY3V0ZXMsIGFueQorICAgICAgICAgICAgcHJldmlvdXMgb3V0cHV0IGlzIHJlbW92ZWQgKGkuZS4gImNsZWFuZWQiKS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtZmV0Y2gnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRmV0Y2hlcyB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICBUaGlzIHRhc2sgdXNlcyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZSBhcmd1bWVudCdzIHByZWZpeCB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYmItZmV0Y2hlcnMnPmZldGNoZXI8L3VsaW5rPgorICAgICAgICAgICAgbW9kdWxlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1pbWFnZSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTdGFydHMgdGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMgYWZ0ZXIgdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBydW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrIGR1cmluZyB3aGljaCBwYWNrYWdlcyBhcmUgaWRlbnRpZmllZCBmb3IgaW5zdGFsbGF0aW9uIGludG8KKyAgICAgICAgICAgIHRoZSBpbWFnZSBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkLCBjb21wbGV0ZSB3aXRoCisgICAgICAgICAgICBwb3N0LXByb2Nlc3NpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPiB0YXNrIHBlcmZvcm1zIHByZS1wcm9jZXNzaW5nCisgICAgICAgICAgICBvbiB0aGUgaW1hZ2UgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZCBkeW5hbWljYWxseSBnZW5lcmF0ZXMgc3VwcG9ydGluZworICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGltYWdlIGNyZWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1pbWFnZS1jb21wbGV0ZSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb21wbGV0ZXMgdGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMgYWZ0ZXIgdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBydW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW1hZ2UnPjxmaWxlbmFtZT5kb19pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayBkdXJpbmcgd2hpY2ggaW1hZ2UgcHJlLXByb2Nlc3Npbmcgb2NjdXJzIGFuZCB0aHJvdWdoCisgICAgICAgICAgICBkeW5hbWljYWxseSBnZW5lcmF0ZWQgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyB0aGUKKyAgICAgICAgICAgIGltYWdlIGlzIGNvbnN0cnVjdGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2ltYWdlX2NvbXBsZXRlPC9maWxlbmFtZT4gdGFzayBwZXJmb3JtcworICAgICAgICAgICAgcG9zdC1wcm9jZXNzaW5nIG9uIHRoZSBpbWFnZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpbWFnZSBjcmVhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtaW5zdGFsbCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENvcGllcyBmaWxlcyB0aGF0IGFyZSB0byBiZSBwYWNrYWdlZCBpbnRvIHRoZSBob2xkaW5nIGFyZWEKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoaXMgdGFzayBydW5zIHdpdGggdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgc2V0IHRvCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCisgICAgICAgICAgICB3aGljaCBpcyB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFzaywgYXMgd2VsbCBhcyBvdGhlciB0YXNrcworICAgICAgICAgICAgdGhhdCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBkZXBlbmQgb24gdGhlIGluc3RhbGxlZCBmaWxlcworICAgICAgICAgICAgKGUuZy4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXJvb3Rmcyc+PGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+PC9saW5rPiksCisgICAgICAgICAgICBydW4gdW5kZXIKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZmFrZXJvb3QtYW5kLXBzZXVkbyc+ZmFrZXJvb3Q8L3VsaW5rPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIDx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluc3RhbGxpbmcgZmlsZXMsIGJlIGNhcmVmdWwgbm90IHRvIHNldCB0aGUgb3duZXIgYW5kCisgICAgICAgICAgICAgICAgICAgIGdyb3VwIElEcyBvZiB0aGUgaW5zdGFsbGVkIGZpbGVzIHRvIHVuaW50ZW5kZWQgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICBTb21lIG1ldGhvZHMgb2YgY29weWluZyBmaWxlcywgbm90YWJseSB3aGVuIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmUgPGZpbGVuYW1lPmNwPC9maWxlbmFtZT4gY29tbWFuZCwgY2FuIHByZXNlcnZlIHRoZQorICAgICAgICAgICAgICAgICAgICBVSUQgYW5kL29yIEdJRCBvZiB0aGUgb3JpZ2luYWwgZmlsZSwgd2hpY2ggaXMgdXN1YWxseSBub3QKKyAgICAgICAgICAgICAgICAgICAgd2hhdCB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2luc2FuZS1ob3N0LXVzZXItY29udGFtaW5hdGVkJz48ZmlsZW5hbWU+aG9zdC11c2VyLWNvbnRhbWluYXRlZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBRQSBjaGVjayBjaGVja3MgZm9yIGZpbGVzIHRoYXQgcHJvYmFibHkgaGF2ZSB0aGUgd3JvbmcKKyAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlwLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTYWZlIG1ldGhvZHMgZm9yIGluc3RhbGxpbmcgZmlsZXMgaW5jbHVkZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5zdGFsbDwvZmlsZW5hbWU+IHV0aWxpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB1dGlsaXR5IGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y3A8L2ZpbGVuYW1lPiBjb21tYW5kIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8tcHJlc2VydmU9b3duZXJzaGlwIiBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT50YXI8L2ZpbGVuYW1lPiBjb21tYW5kIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8tc2FtZS1vd25lciIgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPmJpbl9wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWluc3RhbGxfcHRlc3RfYmFzZSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9faW5zdGFsbF9wdGVzdF9iYXNlPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29waWVzIHRoZSBydW50aW1lIHRlc3Qgc3VpdGUgZmlsZXMgZnJvbSB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5CisgICAgICAgICAgICB0byBhIGhvbGRpbmcgYXJlYS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtcGFja2FnZSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFuYWx5emVzIHRoZSBjb250ZW50IG9mIHRoZSBob2xkaW5nIGFyZWEKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIHNwbGl0cyB0aGUgY29udGVudCBpbnRvIHN1YnNldHMgYmFzZWQgb24gYXZhaWxhYmxlIHBhY2thZ2VzCisgICAgICAgICAgICBhbmQgZmlsZXMuCisgICAgICAgICAgICBUaGlzIHRhc2sgbWFrZXMgdXNlIG9mIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzaywgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrLCBhbHNvIHNhdmVzIHNvbWUgaW1wb3J0YW50IHBhY2thZ2UgbWV0YWRhdGEuCisgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0RFU1RXT1JLJz48ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGFuZCB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtcGFja2FnZV9xYSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZV9xYTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJ1bnMgUUEgY2hlY2tzIG9uIHBhY2thZ2VkIGZpbGVzLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgY2hlY2tzLCBzZWUgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9kZWI8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIERlYmlhbiBwYWNrYWdlcyAoaS5lLiA8ZmlsZW5hbWU+Ki5kZWI8L2ZpbGVuYW1lPiBmaWxlcykgYW5kCisgICAgICAgICAgICBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2lwayc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIElQSyBwYWNrYWdlcyAoaS5lLiA8ZmlsZW5hbWU+Ki5pcGs8L2ZpbGVuYW1lPiBmaWxlcykgYW5kCisgICAgICAgICAgICBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfSVBLJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JUEs8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3JwbSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9ycG08L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIFJQTSBwYWNrYWdlcyAoaS5lLiA8ZmlsZW5hbWU+Ki5ycG08L2ZpbGVuYW1lPiBmaWxlcykgYW5kCisgICAgICAgICAgICBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfUlBNJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9SUE08L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV90YXI8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIHRhcmJhbGxzIGFuZCBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfVEFSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTYXZlcyBwYWNrYWdlIG1ldGFkYXRhIGdlbmVyYXRlZCBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayBpbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRvIG1ha2UgaXQgYXZhaWxhYmxlIGdsb2JhbGx5LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wYXRjaCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMb2NhdGVzIHBhdGNoIGZpbGVzIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZnRlciBmZXRjaGluZyBhbmQgdW5wYWNraW5nIHNvdXJjZSBmaWxlcywgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgdXNlcyB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHN0YXRlbWVudHMgdG8gbG9jYXRlIGFuZCBhcHBseSBwYXRjaCBmaWxlcyB0byB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgc2V0IG9mIGRpcmVjdG9yaWVzIHdoZW4KKyAgICAgICAgICAgICAgICBzZWFyY2hpbmcgZm9yIHBhdGNoZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBQYXRjaCBmaWxlcywgYnkgZGVmYXVsdCwgYXJlIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZXMgY3JlYXRlZCBhbmQga2VwdCBpbiBhCisgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoZSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NSc+PGZpbGVuYW1lPmJsdWV6NTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHJlY2lwZSBmcm9tIHRoZSBPRS1Db3JlIGxheWVyIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhPC9maWxlbmFtZT4pOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgdHdvIHBhdGNoIGZpbGVzIGxvY2F0ZWQgaGVyZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5ibHVlejU8L2ZpbGVuYW1lPiByZWNpcGUsIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIHBvaW50IHRvIHRoZSBzb3VyY2UgYW5kCisgICAgICAgICAgICBwYXRjaCBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY2FzZSBmb3IgdGhlIDxmaWxlbmFtZT5ibHVlejVfNS40OC5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlLCB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGFyZSBmcm9tIGFuCisgICAgICAgICAgICAgICAgaW5jbHVkZSBmaWxlIDxmaWxlbmFtZT5ibHVlejUuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgYnVpbGQgc3lzdGVtIHRyZWF0cyBmaWxlcyB3aG9zZSBmaWxlCisgICAgICAgICAgICB0eXBlcyBhcmUgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPi5kaWZmPC9maWxlbmFtZT4gYXMgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHVzZSB0aGUgImFwcGx5PXllcyIgcGFyYW1ldGVyIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB0byBpbmRpY2F0ZSBhbnkgZmlsZSBhcyBhCisgICAgICAgICAgICBwYXRjaCBmaWxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gIiBcCisgICAgICAgICAgZ2l0Oi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fcmVwbzwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5zb21lX3BhY2thZ2U8L3JlcGxhY2VhYmxlPiBcCisgICAgICAgICAgZmlsZTovLzxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT47YXBwbHk9eWVzIFwKKyAgICAgIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb252ZXJzZWx5LCBpZiB5b3UgaGF2ZSBhIGRpcmVjdG9yeSBmdWxsIG9mIHBhdGNoIGZpbGVzIGFuZCB5b3UKKyAgICAgICAgICAgIHdhbnQgdG8gZXhjbHVkZSBzb21lIHNvIHRoYXQgdGhlIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXNrIGRvZXMgbm90IGFwcGx5IHRoZW0gZHVyaW5nIHRoZSBwYXRjaCBwaGFzZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIHRoZSAiYXBwbHk9bm8iIHBhcmFtZXRlciB3aXRoIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdGF0ZW1lbnQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiIFwKKyAgICAgICAgICBnaXQ6Ly88cmVwbGFjZWFibGU+cGF0aF90b19yZXBvPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnNvbWVfcGFja2FnZTwvcmVwbGFjZWFibGU+IFwKKyAgICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fbG90c19vZl9wYXRjaF9maWxlczwvcmVwbGFjZWFibGU+IFwKKyAgICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fbG90c19vZl9wYXRjaF9maWxlczwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5wYXRjaF9maWxlNTwvcmVwbGFjZWFibGU+O2FwcGx5PW5vIFwKKyAgICAgIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGFzc3VtaW5nIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgaG9sZGluZyB0aGUgcGF0Y2ggZmlsZXMgZW5kIHdpdGggZWl0aGVyIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3IgPGZpbGVuYW1lPi5kaWZmPC9maWxlbmFtZT4sIGV2ZXJ5IGZpbGUgd291bGQgYmUgYXBwbGllZCBhcyBhCisgICAgICAgICAgICBwYXRjaCBieSBkZWZhdWx0IGV4Y2VwdCBmb3IgdGhlCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+cGF0Y2hfZmlsZTU8L3JlcGxhY2VhYmxlPiBwYXRjaC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoZSBwYXRjaGluZyBwcm9jZXNzIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPlBhdGNoaW5nIENvZGU8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9saWMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX2xpYzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdyaXRlcyBsaWNlbnNlIGluZm9ybWF0aW9uIGZvciB0aGUgcmVjaXBlIHRoYXQgaXMgY29sbGVjdGVkIGxhdGVyCisgICAgICAgICAgICB3aGVuIHRoZSBpbWFnZSBpcyBjb25zdHJ1Y3RlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIHRoZSBmaWxlIGFuZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBhbiBpbnN0YWxsYWJsZSBTREsuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPlNESyBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU3RhZ2VzIChjb3BpZXMpIGEgc3Vic2V0IG9mIHRoZSBmaWxlcyBpbnN0YWxsZWQgYnkgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2sgaW50byB0aGUgYXBwcm9wcmlhdGUgc3lzcm9vdC4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYWNjZXNzIHRoZXNlIGZpbGVzIGZyb20gb3RoZXIgcmVjaXBlcywKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVIqPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICBEaXJlY3RvcmllcyB0aGF0IHdvdWxkIHR5cGljYWxseSBub3QgYmUgbmVlZGVkIGJ5IG90aGVyIHJlY2lwZXMgYXQKKyAgICAgICAgICAgIGJ1aWxkIHRpbWUgKGUuZy4gPGZpbGVuYW1lPi9ldGM8L2ZpbGVuYW1lPikgYXJlIG5vdCBjb3BpZWQgYnkKKyAgICAgICAgICAgIGRlZmF1bHQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB3aGF0IGRpcmVjdG9yaWVzIGFyZSBjb3BpZWQgYnkgZGVmYXVsdCwgc2VlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSUyc+PGZpbGVuYW1lPlNZU1JPT1RfRElSUyo8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgIFlvdSBjYW4gY2hhbmdlIHRoZXNlIHZhcmlhYmxlcyBpbnNpZGUgeW91ciByZWNpcGUgaWYgeW91IG5lZWQKKyAgICAgICAgICAgIHRvIG1ha2UgYWRkaXRpb25hbCAob3IgZmV3ZXIpIGRpcmVjdG9yaWVzIGF2YWlsYWJsZSB0byBvdGhlcgorICAgICAgICAgICAgcmVjaXBlcyBhdCBidWlsZCB0aW1lLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPiB0YXNrIGlzIGEKKyAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSB0YXNrLCB3aGljaCBtZWFucyB0aGF0IHRoZSB0YXNrIGNhbgorICAgICAgICAgICAgYmUgYWNjZWxlcmF0ZWQgdGhyb3VnaCBzc3RhdGUgdXNlLgorICAgICAgICAgICAgUmVhbGl6ZSBhbHNvIHRoYXQgaWYgdGhlIHRhc2sgaXMgcmUtZXhlY3V0ZWQsIGFueSBwcmV2aW91cyBvdXRwdXQKKyAgICAgICAgICAgIGlzIHJlbW92ZWQgKGkuZS4gImNsZWFuZWQiKS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluc3RhbGxzIHRoZSBmaWxlcyBpbnRvIHRoZSBpbmRpdmlkdWFsIHJlY2lwZSBzcGVjaWZpYyBzeXNyb290cworICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4gdW5kZXIKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgYmFzZWQgdXBvbiB0aGUgZGVwZW5kZW5jaWVzIHNwZWNpZmllZCBieQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zdGFnaW5nJz48ZmlsZW5hbWU+c3RhZ2luZzwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgIGNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1ybV93b3JrJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19ybV93b3JrPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUmVtb3ZlcyB3b3JrIGZpbGVzIGFmdGVyIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcworICAgICAgICAgICAgZmluaXNoZWQgd2l0aCB0aGVtLgorICAgICAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGJ5IGxvb2tpbmcgYXQgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcmsuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXVucGFjayc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVW5wYWNrcyB0aGUgc291cmNlIGNvZGUgaW50byBhIHdvcmtpbmcgZGlyZWN0b3J5IHBvaW50ZWQgdG8KKyAgICAgICAgICAgIGJ5CisgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZSBhbHNvCisgICAgICAgICAgICBwbGF5cyBhIHJvbGUgaW4gd2hlcmUgdW5wYWNrZWQgc291cmNlIGZpbGVzIHVsdGltYXRlbHkgcmVzaWRlLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHNvdXJjZSBmaWxlcyBhcmUgdW5wYWNrZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPlNvdXJjZSBGZXRjaGluZzwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGFuZCBhbHNvCisgICAgICAgICAgICBzZWUgdGhlIDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+IHZhcmlhYmxlIGRlc2NyaXB0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21hbnVhbGx5LWNhbGxlZC10YXNrcyc+CisgICAgPHRpdGxlPk1hbnVhbGx5IENhbGxlZCBUYXNrczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlc2UgdGFza3MgYXJlIHR5cGljYWxseSBtYW51YWxseSB0cmlnZ2VyZWQgKGUuZy4gYnkgdXNpbmcgdGhlCisgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jPC9maWxlbmFtZT4gY29tbWFuZC1saW5lIG9wdGlvbik6CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1jaGVja3BrZyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fY2hlY2twa2c8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVjaXBlIGluY2x1ZGluZyBpdHMgdXBzdHJlYW0KKyAgICAgICAgICAgIHZlcnNpb24gYW5kIHN0YXR1cy4KKyAgICAgICAgICAgIFRoZSB1cHN0cmVhbSB2ZXJzaW9uIGFuZCBzdGF0dXMgcmV2ZWFscyB3aGV0aGVyIG9yIG5vdCBhIHZlcnNpb24KKyAgICAgICAgICAgIG9mIHRoZSByZWNpcGUgZXhpc3RzIHVwc3RyZWFtIGFuZCBhIHN0YXR1cyBvZiBub3QgdXBkYXRlZCwgdXBkYXRlZCwKKyAgICAgICAgICAgIG9yIHVua25vd24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGNoZWNrIHRoZSB1cHN0cmVhbSB2ZXJzaW9uIGFuZCBzdGF0dXMgb2YgYSByZWNpcGUsIHVzZSB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZyBkZXZ0b29sIGNvbW1hbmRzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgbGF0ZXN0LXZlcnNpb24KKyAgICAgJCBkZXZ0b29sIGNoZWNrLXVwZ3JhZGUtc3RhdHVzCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWRldnRvb2wtcmVmZXJlbmNlJz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IFF1aWNrIFJlZmVyZW5jZTwvbGluaz4iCisgICAgICAgICAgICBjaGFwdGVyIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV2dG9vbC1jaGVja2luZy1vbi10aGUtdXBncmFkZS1zdGF0dXMtb2YtYS1yZWNpcGUnPkNoZWNraW5nIG9uIHRoZSBVcGdyYWRlIFN0YXR1cyBvZiBhIFJlY2lwZTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gY2hlY2tpbmcgdGhlIHVwZ3JhZGUgc3RhdHVzIG9mIGEgcmVjaXBlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBidWlsZCB0aGUgPGZpbGVuYW1lPmNoZWNrcGtnPC9maWxlbmFtZT4gdGFzaywgdXNlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHdpdGggdGhlICItYyIgb3B0aW9uIGFuZAorICAgICAgICAgICAgdGFzayBuYW1lOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsIC1jIGNoZWNrcGtnCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgcmVzdWx0cyBhcmUgc3RvcmVkIGluCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTE9HX0RJUic+PGZpbGVuYW1lPiRMT0dfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+JEJVSUxEX0RJUi90bXAvbG9nPC9maWxlbmFtZT4pLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1jaGVja3VyaSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fY2hlY2t1cmk8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBWYWxpZGF0ZXMgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhbHVlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1jbGVhbic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZW1vdmVzIGFsbCBvdXRwdXQgZmlsZXMgZm9yIGEgdGFyZ2V0IGZyb20gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrIGZvcndhcmQgKGkuZS4gPGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBydW4gdGhpcyB0YXNrIHVzaW5nIEJpdEJha2UgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIGNsZWFuIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSdW5uaW5nIHRoaXMgdGFzayBkb2VzIG5vdCByZW1vdmUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC91bGluaz4KKyAgICAgICAgICAgIGNhY2hlIGZpbGVzLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiBubyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIGFuZCB0aGUgcmVjaXBlIGlzCisgICAgICAgICAgICByZWJ1aWx0IGFmdGVyIGNsZWFuaW5nLCBvdXRwdXQgZmlsZXMgYXJlIHNpbXBseSByZXN0b3JlZCBmcm9tIHRoZQorICAgICAgICAgICAgc3N0YXRlIGNhY2hlLgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBzc3RhdGUgY2FjaGUgZmlsZXMgZm9yIHRoZSByZWNpcGUsCisgICAgICAgICAgICB5b3UgbmVlZCB0byB1c2UgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY2xlYW5zc3RhdGUnPjxmaWxlbmFtZT5kb19jbGVhbnNzdGF0ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayBpbnN0ZWFkIChpLmUuIDxmaWxlbmFtZT5iaXRiYWtlIC1jIGNsZWFuc3N0YXRlPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtY2xlYW5hbGwnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzLCBzaGFyZWQgc3RhdGUKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC91bGluaz4pCisgICAgICAgICAgICBjYWNoZSwgYW5kIGRvd25sb2FkZWQgc291cmNlIGZpbGVzIGZvciBhIHRhcmdldCAoaS5lLiB0aGUgY29udGVudHMKKyAgICAgICAgICAgIG9mCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIEVzc2VudGlhbGx5LCB0aGUgPGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT4gdGFzayBpcworICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNsZWFuc3N0YXRlJz48ZmlsZW5hbWU+ZG9fY2xlYW5zc3RhdGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2sgd2l0aCB0aGUgYWRkZWQgcmVtb3ZhbCBvZiBkb3dubG9hZGVkIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBydW4gdGhpcyB0YXNrIHVzaW5nIEJpdEJha2UgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIGNsZWFuYWxsIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSB3b3VsZCBub3Qgbm9ybWFsbHkgdXNlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmNsZWFuYWxsPC9maWxlbmFtZT4gdGFzay4KKyAgICAgICAgICAgIERvIHNvIG9ubHkgaWYgeW91IHdhbnQgdG8gc3RhcnQgZnJlc2ggd2l0aCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1jbGVhbnNzdGF0ZSc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fY2xlYW5zc3RhdGU8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZW1vdmVzIGFsbCBvdXRwdXQgZmlsZXMgYW5kIHNoYXJlZCBzdGF0ZQorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKKyAgICAgICAgICAgIGNhY2hlIGZvciBhIHRhcmdldC4KKyAgICAgICAgICAgIEVzc2VudGlhbGx5LCB0aGUgPGZpbGVuYW1lPmRvX2NsZWFuc3N0YXRlPC9maWxlbmFtZT4gdGFzayBpcworICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNsZWFuJz48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2sgd2l0aCB0aGUgYWRkZWQgcmVtb3ZhbCBvZiBzaGFyZWQgc3RhdGUKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC91bGluaz4pCisgICAgICAgICAgICBjYWNoZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBydW4gdGhpcyB0YXNrIHVzaW5nIEJpdEJha2UgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIGNsZWFuc3N0YXRlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT5kb19jbGVhbnNzdGF0ZTwvZmlsZW5hbWU+IHRhc2ssCisgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBubyBsb25nZXIgdXNlcyBhbnkKKyAgICAgICAgICAgIHNzdGF0ZS4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgYnVpbGRpbmcgdGhlIHJlY2lwZSBmcm9tIHNjcmF0Y2ggaXMgZ3VhcmFudGVlZC4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fY2xlYW5zc3RhdGU8L2ZpbGVuYW1lPiB0YXNrIGNhbm5vdCByZW1vdmUKKyAgICAgICAgICAgICAgICBzc3RhdGUgZnJvbSBhIHJlbW90ZSBzc3RhdGUgbWlycm9yLgorICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGJ1aWxkIGEgdGFyZ2V0IGZyb20gc2NyYXRjaCB1c2luZyByZW1vdGUKKyAgICAgICAgICAgICAgICBtaXJyb3JzLCB1c2UgdGhlICItZiIgb3B0aW9uIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWYgLWMgZG9fY2xlYW5zc3RhdGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtZGV2cHlzaGVsbCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fZGV2cHlzaGVsbDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFN0YXJ0cyBhIHNoZWxsIGluIHdoaWNoIGFuIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlciBhbGxvd3MKKyAgICAgICAgICAgIHlvdSB0byBpbnRlcmFjdCB3aXRoIHRoZSBCaXRCYWtlIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgRnJvbSB3aXRoaW4gdGhpcyBzaGVsbCwgeW91IGNhbiBkaXJlY3RseSBleGFtaW5lIGFuZCBzZXQKKyAgICAgICAgICAgIGJpdHMgZnJvbSB0aGUgZGF0YSBzdG9yZSBhbmQgZXhlY3V0ZSBmdW5jdGlvbnMgYXMgaWYgd2l0aGluCisgICAgICAgICAgICB0aGUgQml0QmFrZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1kZXZweXNoZWxsJz5Vc2luZyBhIERldmVsb3BtZW50IFB5dGhvbiBTaGVsbDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWRldnNoZWxsJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19kZXZzaGVsbDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFN0YXJ0cyBhIHNoZWxsIHdob3NlIGVudmlyb25tZW50IGlzIHNldCB1cCBmb3IKKyAgICAgICAgICAgIGRldmVsb3BtZW50LCBkZWJ1Z2dpbmcsIG9yIGJvdGguCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtbGlzdHRhc2tzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19saXN0dGFza3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMaXN0cyBhbGwgZGVmaW5lZCB0YXNrcyBmb3IgYSB0YXJnZXQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXBhY2thZ2VfaW5kZXgnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX3BhY2thZ2VfaW5kZXg8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGluZGV4IGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+CisgICAgICAgICAgICBhcmVhLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGlzIG5vdCB0cmlnZ2VyZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYzwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBvcHRpb24gYXMKKyAgICAgICAgICAgICAgICBhcmUgdGhlIG90aGVyIHRhc2tzIGluIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoaXMgdGFzayBpcyBzcGVjaWZpY2FsbHkgZm9yIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlLWluZGV4PC9maWxlbmFtZT4gcmVjaXBlLAorICAgICAgICAgICAgICAgIHlvdSBydW4gaXQgdXNpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSBwYWNrYWdlLWluZGV4PC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdpbWFnZS1yZWxhdGVkLXRhc2tzJz4KKyAgICA8dGl0bGU+SW1hZ2UtUmVsYXRlZCBUYXNrczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyB0YXNrcyBhcmUgYXBwbGljYWJsZSB0byBpbWFnZSByZWNpcGVzLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtYm9vdGltZyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fYm9vdGltZzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENyZWF0ZXMgYSBib290YWJsZSBsaXZlIGltYWdlLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBsaXZlIGltYWdlIHR5cGVzLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1idW5kbGVfaW5pdHJhbWZzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19idW5kbGVfaW5pdHJhbWZzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29tYmluZXMgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJhbWZzKSBpbWFnZSBhbmQga2VybmVsCisgICAgICAgICAgICB0b2dldGhlciB0byBmb3JtIGEgc2luZ2xlIGltYWdlLgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UnPjxmaWxlbmFtZT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgaGFzIHNvbWUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSB0eXBlcyBvZiBpbWFnZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXJvb3Rmcyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ3JlYXRlcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChmaWxlIGFuZCBkaXJlY3Rvcnkgc3RydWN0dXJlKSBmb3IgYW4KKyAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtdGVzdGltYWdlJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb190ZXN0aW1hZ2U8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCb290cyBhbiBpbWFnZSBhbmQgcGVyZm9ybXMgcnVudGltZSB0ZXN0cyB3aXRoaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGF1dG9tYXRpY2FsbHkgdGVzdGluZyBpbWFnZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXRlc3RpbWFnZV9hdXRvJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb190ZXN0aW1hZ2VfYXV0bzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJvb3RzIGFuIGltYWdlIGFuZCBwZXJmb3JtcyBydW50aW1lIHRlc3RzIHdpdGhpbiB0aGUgaW1hZ2UKKyAgICAgICAgICAgIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGhhcyBiZWVuIGJ1aWx0LgorICAgICAgICAgICAgVGhpcyB0YXNrIGlzIGVuYWJsZWQgd2hlbiB5b3Ugc2V0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEVTVElNQUdFX0FVVE8nPjxmaWxlbmFtZT5URVNUSU1BR0VfQVVUTzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgZXF1YWwgdG8gIjEiLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYXV0b21hdGljYWxseSB0ZXN0aW5nIGltYWdlcywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2tlcm5lbC1yZWxhdGVkLXRhc2tzJz4KKyAgICA8dGl0bGU+S2VybmVsLVJlbGF0ZWQgVGFza3M8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgdGFza3MgYXJlIGFwcGxpY2FibGUgdG8ga2VybmVsIHJlY2lwZXMuCisgICAgICAgIFNvbWUgb2YgdGhlc2UgdGFza3MgKGUuZy4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1tZW51Y29uZmlnJz48ZmlsZW5hbWU+ZG9fbWVudWNvbmZpZzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICB0YXNrKSBhcmUgYWxzbyBhcHBsaWNhYmxlIHRvIHJlY2lwZXMgdGhhdCB1c2UKKyAgICAgICAgTGludXgga2VybmVsIHN0eWxlIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyB0aGUgQnVzeUJveCByZWNpcGUuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1jb21waWxlX2tlcm5lbG1vZHVsZXMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NvbXBpbGVfa2VybmVsbW9kdWxlczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJ1bnMgdGhlIHN0ZXAgdGhhdCBidWlsZHMgdGhlIGtlcm5lbCBtb2R1bGVzIChpZiBuZWVkZWQpLgorICAgICAgICAgICAgQnVpbGRpbmcgYSBrZXJuZWwgY29uc2lzdHMgb2YgdHdvIHN0ZXBzOiAxKSB0aGUga2VybmVsCisgICAgICAgICAgICAoPGZpbGVuYW1lPnZtbGludXg8L2ZpbGVuYW1lPikgaXMgYnVpbHQsIGFuZCAyKSB0aGUgbW9kdWxlcworICAgICAgICAgICAgYXJlIGJ1aWx0IChpLmUuIDxmaWxlbmFtZT5tYWtlIG1vZHVsZXM8L2ZpbGVuYW1lPikuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWRpZmZjb25maWcnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2RpZmZjb25maWc8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIGludm9rZWQgYnkgdGhlIHVzZXIsIHRoaXMgdGFzayBjcmVhdGVzIGEgZmlsZSBjb250YWluaW5nIHRoZQorICAgICAgICAgICAgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb3JpZ2luYWwgY29uZmlnIGFzIHByb2R1Y2VkIGJ5CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mta2VybmVsX2NvbmZpZ21lJz48ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrIGFuZCB0aGUgY2hhbmdlcyBtYWRlIGJ5IHRoZSB1c2VyIHdpdGggb3RoZXIgbWV0aG9kcworICAgICAgICAgICAgKGkuZS4gdXNpbmcKKyAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mta2VybmVsX21lbnVjb25maWcnPjxmaWxlbmFtZT5kb19rZXJuZWxfbWVudWNvbmZpZzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICBPbmNlIHRoZSBmaWxlIG9mIGRpZmZlcmVuY2VzIGlzIGNyZWF0ZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZQorICAgICAgICAgICAgYSBjb25maWcgZnJhZ21lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBkaWZmZXJlbmNlcy4KKyAgICAgICAgICAgIFlvdSBjYW4gaW52b2tlIHRoaXMgdGFzayBmcm9tIHRoZSBjb21tYW5kIGxpbmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGRpZmZjb25maWcKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWtlcm5lbF9jaGVja291dCc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fa2VybmVsX2NoZWNrb3V0PC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ29udmVydHMgdGhlIG5ld2x5IHVucGFja2VkIGtlcm5lbCBzb3VyY2UgaW50byBhIGZvcm0gd2l0aCB3aGljaAorICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIHdvcmsuCisgICAgICAgICAgICBCZWNhdXNlIHRoZSBrZXJuZWwgc291cmNlIGNhbiBiZSBmZXRjaGVkIGluIHNldmVyYWwgZGlmZmVyZW50IHdheXMsCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRvX2tlcm5lbF9jaGVja291dDwvZmlsZW5hbWU+IHRhc2sgbWFrZXMgc3VyZSB0aGF0CisgICAgICAgICAgICBzdWJzZXF1ZW50IHRhc2tzIGFyZSBnaXZlbiBhIGNsZWFuIHdvcmtpbmcgdHJlZSBjb3B5IG9mIHRoZSBrZXJuZWwKKyAgICAgICAgICAgIHdpdGggdGhlIGNvcnJlY3QgYnJhbmNoZXMgY2hlY2tlZCBvdXQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWtlcm5lbF9jb25maWdjaGVjayc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVmFsaWRhdGVzIHRoZSBjb25maWd1cmF0aW9uIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWtlcm5lbF9tZW51Y29uZmlnJz48ZmlsZW5hbWU+ZG9fa2VybmVsX21lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2sgcHJvZHVjZXMKKyAgICAgICAgICAgIHdhcm5pbmdzIHdoZW4gYSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCisgICAgICAgICAgICBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgb3Igd2hlbiB5b3Ugb3ZlcnJpZGUgYQorICAgICAgICAgICAgcG9saWN5IGNvbmZpZ3VyYXRpb24gaW4gYSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgWW91IGNhbiBydW4gdGhpcyB0YXNrIGV4cGxpY2l0bHkgYW5kIHZpZXcgdGhlIG91dHB1dCBieSB1c2luZworICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyN2YWxpZGF0aW5nLWNvbmZpZ3VyYXRpb24nPlZhbGlkYXRpbmcgQ29uZmlndXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1rZXJuZWxfY29uZmlnbWUnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFmdGVyIHRoZSBrZXJuZWwgaXMgcGF0Y2hlZCBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrLCB0aGUgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+IHRhc2sgYXNzZW1ibGVzCisgICAgICAgICAgICBhbmQgbWVyZ2VzIGFsbCB0aGUga2VybmVsIGNvbmZpZyBmcmFnbWVudHMgaW50byBhIG1lcmdlZAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiB0aGF0IGNhbiB0aGVuIGJlIHBhc3NlZCB0byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIHBoYXNlIHByb3Blci4KKyAgICAgICAgICAgIFRoaXMgaXMgYWxzbyB0aGUgdGltZSBkdXJpbmcgd2hpY2ggdXNlci1zcGVjaWZpZWQgZGVmY29uZmlncworICAgICAgICAgICAgYXJlIGFwcGxpZWQgaWYgcHJlc2VudCwgYW5kIHdoZXJlIGNvbmZpZ3VyYXRpb24gbW9kZXMgc3VjaCBhcworICAgICAgICAgICAgPGZpbGVuYW1lPi0tYWxsbm9jb25maWc8L2ZpbGVuYW1lPiBhcmUgYXBwbGllZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3Mta2VybmVsX21lbnVjb25maWcnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2tlcm5lbF9tZW51Y29uZmlnPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW52b2tlZCBieSB0aGUgdXNlciB0byBtYW5pcHVsYXRlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHVzZWQgdG8gYnVpbGQgYSBsaW51eC15b2N0bworICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgVGhpcyB0YXNrIHN0YXJ0cyB0aGUgTGludXgga2VybmVsIGNvbmZpZ3VyYXRpb24gdG9vbCwgd2hpY2ggeW91CisgICAgICAgICAgICB0aGVuIHVzZSB0byBtb2RpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGludm9rZSB0aGlzIHRvb2wgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFzCisgICAgICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyN1c2luZy1tZW51Y29uZmlnJz5Vc2luZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwKKyAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29uZmlndXJhdGlvbiB0b29sLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1rZXJuZWxfbWV0YWRhdGEnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2tlcm5lbF9tZXRhZGF0YTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENvbGxlY3RzIGFsbCB0aGUgZmVhdHVyZXMgcmVxdWlyZWQgZm9yIGEgZ2l2ZW4ga2VybmVsIGJ1aWxkLAorICAgICAgICAgICAgd2hldGhlciB0aGUgZmVhdHVyZXMgY29tZSBmcm9tCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIG9yIGZyb20gR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgIEFmdGVyIGNvbGxlY3Rpb24sIHRoZSA8ZmlsZW5hbWU+ZG9fa2VybmVsX21ldGFkYXRhPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgcHJvY2Vzc2VzIHRoZSBmZWF0dXJlcyBpbnRvIGEgc2VyaWVzIG9mIGNvbmZpZyBmcmFnbWVudHMgYW5kCisgICAgICAgICAgICBwYXRjaGVzLCB3aGljaCBjYW4gdGhlbiBiZSBhcHBsaWVkIGJ5IHN1YnNlcXVlbnQgdGFza3Mgc3VjaCBhcworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWtlcm5lbF9jb25maWdtZSc+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtbWVudWNvbmZpZyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fbWVudWNvbmZpZzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJ1bnMgPGZpbGVuYW1lPm1ha2UgbWVudWNvbmZpZzwvZmlsZW5hbWU+IGZvciB0aGUga2VybmVsLgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjdXNpbmctbWVudWNvbmZpZyc+VXNpbmcmbmJzcDsmbmJzcDs8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXNhdmVkZWZjb25maWcnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX3NhdmVkZWZjb25maWc8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIGludm9rZWQgYnkgdGhlIHVzZXIsIGNyZWF0ZXMgYSBkZWZjb25maWcgZmlsZSB0aGF0IGNhbiBiZQorICAgICAgICAgICAgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRlZmNvbmZpZy4KKyAgICAgICAgICAgIFRoZSBzYXZlZCBkZWZjb25maWcgY29udGFpbnMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIGRlZmNvbmZpZyBhbmQgdGhlIGNoYW5nZXMgbWFkZSBieSB0aGUgdXNlciB1c2luZyBvdGhlciBtZXRob2RzCisgICAgICAgICAgICAoaS5lLiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1rZXJuZWxfbWVudWNvbmZpZyc+PGZpbGVuYW1lPmRvX2tlcm5lbF9tZW51Y29uZmlnPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgWW91IGNhbiBpbnZva2UgdGhlIHRhc2sgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgc2F2ZWRlZmNvbmZpZworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1zaGFyZWRfd29ya2Rpcic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fc2hhcmVkX3dvcmtkaXI8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZnRlciB0aGUga2VybmVsIGhhcyBiZWVuIGNvbXBpbGVkIGJ1dCBiZWZvcmUgdGhlIGtlcm5lbCBtb2R1bGVzCisgICAgICAgICAgICBoYXZlIGJlZW4gY29tcGlsZWQsIHRoaXMgdGFzayBjb3BpZXMgZmlsZXMgcmVxdWlyZWQgZm9yIG1vZHVsZQorICAgICAgICAgICAgYnVpbGRzIGFuZCB3aGljaCBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlICBrZXJuZWwgYnVpbGQgaW50byB0aGUKKyAgICAgICAgICAgIHNoYXJlZCB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFdpdGggdGhlc2UgY29waWVzIHN1Y2Nlc3NmdWxseSBjb3BpZWQsIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGVfa2VybmVsbW9kdWxlcyc+PGZpbGVuYW1lPmRvX2NvbXBpbGVfa2VybmVsbW9kdWxlczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdGFzayBjYW4gc3VjY2Vzc2Z1bGx5IGJ1aWxkIHRoZSBrZXJuZWwgbW9kdWxlcyBpbiB0aGUgbmV4dCBzdGVwCisgICAgICAgICAgICBvZiB0aGUgYnVpbGQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXNpemVjaGVjayc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+ZG9fc2l6ZWNoZWNrPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWZ0ZXIgdGhlIGtlcm5lbCBoYXMgYmVlbiBidWlsdCwgdGhpcyB0YXNrIGNoZWNrcyB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgICAgIHN0cmlwcGVkIGtlcm5lbCBpbWFnZSBhZ2FpbnN0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0lNQUdFX01BWFNJWkUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VfTUFYU0laRTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIElmIHRoYXQgdmFyaWFibGUgd2FzIHNldCBhbmQgdGhlIHNpemUgb2YgdGhlIHN0cmlwcGVkIGtlcm5lbAorICAgICAgICAgICAgZXhjZWVkcyB0aGF0IHNpemUsIHRoZSBrZXJuZWwgYnVpbGQgcHJvZHVjZXMgYSB3YXJuaW5nIHRvIHRoYXQKKyAgICAgICAgICAgIGVmZmVjdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3Mtc3RyaXAnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX3N0cmlwPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYKKyAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlM8L2ZpbGVuYW1lPiBpcyBkZWZpbmVkLAorICAgICAgICAgICAgdGhpcyB0YXNrIHN0cmlwcyB0aGUgc2VjdGlvbnMgbmFtZWQgaW4gdGhhdCB2YXJpYWJsZSBmcm9tCisgICAgICAgICAgICA8ZmlsZW5hbWU+dm1saW51eDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhpcyBzdHJpcHBpbmcgaXMgdHlwaWNhbGx5IHVzZWQgdG8gcmVtb3ZlIG5vbmVzc2VudGlhbCBzZWN0aW9ucworICAgICAgICAgICAgc3VjaCBhcyA8ZmlsZW5hbWU+LmNvbW1lbnQ8L2ZpbGVuYW1lPiBzZWN0aW9ucyBmcm9tIGEKKyAgICAgICAgICAgIHNpemUtc2Vuc2l0aXZlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXZhbGlkYXRlX2JyYW5jaGVzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb192YWxpZGF0ZV9icmFuY2hlczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFmdGVyIHRoZSBrZXJuZWwgaXMgdW5wYWNrZWQgYnV0IGJlZm9yZSBpdCBpcyBwYXRjaGVkLCB0aGlzIHRhc2sKKyAgICAgICAgICAgIG1ha2VzIHN1cmUgdGhhdCB0aGUgbWFjaGluZSBhbmQgbWV0YWRhdGEgYnJhbmNoZXMgYXMgc3BlY2lmaWVkCisgICAgICAgICAgICBieSB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGVzIGFjdHVhbGx5IGV4aXN0IG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoZXMuCisgICAgICAgICAgICBJZiB0aGVzZSBicmFuY2hlcyBkbyBub3QgZXhpc3QgYW5kCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQVVUT1JFVic+PGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGlzIG5vdCBiZWluZyB1c2VkLCB0aGUgPGZpbGVuYW1lPmRvX3ZhbGlkYXRlX2JyYW5jaGVzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhc2sgZmFpbHMgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21pc2NlbGxhbmVvdXMtdGFza3MnPgorICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIFRhc2tzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIG1pc2NlbGxhbmVvdXMgdGFza3MuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1zcGR4Jz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19zcGR4PC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBidWlsZCBzdGFnZSB0aGF0IHRha2VzIHRoZSBzb3VyY2UgY29kZSBhbmQgc2NhbnMgaXQgb24gYSByZW1vdGUKKyAgICAgICAgICAgIEZPU1NPTE9HWSBzZXJ2ZXIgaW4gb3JkZXIgdG8gcHJvZHVjZSBhbiBTUERYIGRvY3VtZW50LgorICAgICAgICAgICAgVGhpcyB0YXNrIGFwcGxpZXMgb25seSB0byB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXNwZHgnPjxmaWxlbmFtZT5zcGR4PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnJzdAppbmRleCA1NTZiYzZiLi42MDBjYzIzIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioKIFlvY3RvIFByb2plY3QgVGVybXMKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMDQ1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCkBAIC0wLDAgKzEsNTI1IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3JlZi10ZXJtcyc+Cis8dGl0bGU+WW9jdG8gUHJvamVjdCBUZXJtczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0ZXJtcyBhbmQgZGVmaW5pdGlvbnMgdXNlcnMgbmV3IHRvIHRoZSBZb2N0bworICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IG1pZ2h0IGZpbmQgaGVscGZ1bC4KKyAgICAgICAgV2hpbGUgc29tZSBvZiB0aGVzZSB0ZXJtcyBhcmUgdW5pdmVyc2FsLCB0aGUgbGlzdCBpbmNsdWRlcyB0aGVtCisgICAgICAgIGp1c3QgaW4gY2FzZToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwZW5kIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBhcHBlbmQgYnVpbGQgaW5mb3JtYXRpb24gdG8gYSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgYXJlIGtub3duIGFzIEJpdEJha2UgYXBwZW5kIGZpbGVzIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGV2ZXJ5IGFwcGVuZCBmaWxlIHRvIGhhdmUKKyAgICAgICAgICAgICAgICBhIGNvcnJlc3BvbmRpbmcgcmVjaXBlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGUuCisgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBhcHBlbmQgZmlsZSBhbmQgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZQorICAgICAgICAgICAgICAgIG11c3QgdXNlIHRoZSBzYW1lIHJvb3QgZmlsZW5hbWUuCisgICAgICAgICAgICAgICAgVGhlIGZpbGVuYW1lcyBjYW4gZGlmZmVyIG9ubHkgaW4gdGhlIGZpbGUgdHlwZSBzdWZmaXggdXNlZAorICAgICAgICAgICAgICAgIChlLmcuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4pLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkluZm9ybWF0aW9uIGluIGFwcGVuZCBmaWxlcyBleHRlbmRzIG9yIG92ZXJyaWRlcyB0aGUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgc2ltaWxhcmx5LW5hbWVkIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGFuIGFwcGVuZCBmaWxlIGluIHVzZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBuYW1lIGFuIGFwcGVuZCBmaWxlLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgd2lsZGNhcmQgY2hhcmFjdGVyIHRvIGFsbG93IGZvcgorICAgICAgICAgICAgICAgIG1hdGNoaW5nIHJlY2lwZSBuYW1lcy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBhbiBhcHBlbmQgZmlsZSBuYW1lZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYnVzeWJveF8xLjIxLiUuYmJhcHBlbmQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhhdCBhcHBlbmQgZmlsZSB3b3VsZCBtYXRjaCBhbnkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveF8xLjIxLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBTbywgdGhlIGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlY2lwZSBuYW1lczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJ1c3lib3hfMS4yMS4xLmJiCisgICAgIGJ1c3lib3hfMS4yMS4yLmJiCisgICAgIGJ1c3lib3hfMS4yMS4zLmJiCisgICAgIGJ1c3lib3hfMS4yMS4xMC5iYgorICAgICBidXN5Ym94XzEuMjEuMjUuYmIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaXMgbGltaXRlZCBpbiB0aGF0IGl0IG9ubHkgd29ya3MgZGlyZWN0bHkgaW4gZnJvbnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBwb3J0aW9uIG9mIHRoZSBhcHBlbmQgZmlsZSdzCisgICAgICAgICAgICAgICAgICAgIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgaW4gYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYml0YmFrZS10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSB0YXNrIGV4ZWN1dG9yIGFuZCBzY2hlZHVsZXIgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGJ1aWxkIGltYWdlcy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIGdyb3VwIG9mIGRyaXZlcnMsIGRlZmluaXRpb25zLCBhbmQgb3RoZXIgY29tcG9uZW50cyB0aGF0CisgICAgICAgICAgICAgICAgcHJvdmlkZSBzdXBwb3J0IGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQcywgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdidWlsZC1kaXJlY3RvcnknPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBhcmVhIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSBmb3IgYnVpbGRzLgorICAgICAgICAgICAgICAgIFRoZSBhcmVhIGlzIGNyZWF0ZWQgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZQorICAgICAgICAgICAgICAgIHNldHVwIGVudmlyb25tZW50IHNjcmlwdCB0aGF0IGlzIGZvdW5kIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgKGkuZS4gPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaGF2ZSBhIGxvdCBvZiBmbGV4aWJpbGl0eSB3aGVuIGNyZWF0aW5nIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IGhvdyB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgeW91cgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IGlzCisgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgYW5kIGxldCB0aGUgbmFtZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBkZWZhdWx0IHRvIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkICRIT01FL3Bva3kKKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5IGFuZCBzcGVjaWZpY2FsbHkgbmFtZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtYnVpbGRzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUKKyAgICAgJCBzb3VyY2UgcG9reS8mT0VfSU5JVF9GSUxFOyB0ZXN0LWJ1aWxkcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBkaXJlY3RvcnkgcGF0aCBhbmQgc3BlY2lmaWNhbGx5IG5hbWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIHBhdGhuYW1lIG11c3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WVAtJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAkSE9NRQorICAgICAkIHNvdXJjZSAkSE9NRS9wb2t5LyZPRV9JTklUX0ZJTEU7ICRIT01FL215YnVpbGRzL1lQLSZQT0tZVkVSU0lPTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgQnVpbGQgRGlyZWN0b3J5IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIGl0cyB3b3JrLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gY2Fubm90IGJlIHVuZGVyIE5GUy4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgYnkgZGVmYXVsdCwgdGhlIEJ1aWxkIERpcmVjdG9yeSBjYW5ub3QgYmUgdW5kZXIgTkZTLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgbmVlZCB0aGUgQnVpbGQgRGlyZWN0b3J5IHRvIGJlIHVuZGVyIE5GUywKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBzZXQgdGhpcyB1cCBieSBzZXR0aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICB0byB1c2UgYSBsb2NhbCBkcml2ZS4KKyAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gZWZmZWN0aXZlbHkgc2VwYXJhdGVzIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgSG9zdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBzeXN0ZW0gdXNlZCB0byBidWlsZCBpbWFnZXMgaW4gYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICAgICAgICAgICAgPGZpcnN0dGVybT5kZXZlbG9wbWVudCBob3N0PC9maXJzdHRlcm0+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbGFzc2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBwcm92aWRlIGZvciBsb2dpYyBlbmNhcHN1bGF0aW9uIGFuZCBpbmhlcml0YW5jZSBzbworICAgICAgICAgICAgICAgIHRoYXQgY29tbW9ubHkgdXNlZCBwYXR0ZXJucyBjYW4gYmUgZGVmaW5lZCBvbmNlIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgZWFzaWx5IHVzZWQgaW4gbXVsdGlwbGUgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGNsYXNzZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMnPkNsYXNzZXM8L2xpbms+IiBjaGFwdGVyLgorICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzIGVuZCB3aXRoIHRoZSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVuYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBob2xkIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgdXNlci1kZWZpbmVkIHZhcmlhYmxlcywgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyB0ZWxsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoYXQgdG8KKyAgICAgICAgICAgICAgICBidWlsZCBhbmQgd2hhdCB0byBwdXQgaW50byB0aGUgaW1hZ2UgdG8gc3VwcG9ydCBhCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBwbGF0Zm9ybS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Db25maWd1cmF0aW9uIGZpbGVzIGVuZCB3aXRoIGEgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICBjb250YWlucyB1c2VyLWRlZmluZWQgdmFyaWFibGVzIHRoYXQgYWZmZWN0IGV2ZXJ5IGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGRlZmluZXMgWW9jdG8gImRpc3RybyIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB1c2VkIG9ubHkgd2hlbiBidWlsZGluZyB3aXRoIHRoaXMgcG9saWN5LgorICAgICAgICAgICAgICAgIE1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpY2gKKyAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCB0aHJvdWdob3V0IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICBmb3IgdGhhdCB0YXJnZXQgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmUvYmVhZ2xlYm9uZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB2YXJpYWJsZXMgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBUk0gQ29ydGV4LUE4CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmQpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0ZXJtLWNvbnRhaW5lci1sYXllcic+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbnRhaW5lciBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIExheWVycyB0aGF0IGhvbGQgb3RoZXIgbGF5ZXJzLgorICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgYSBjb250YWluZXIgbGF5ZXIgaXMgT3BlbkVtYmVkZGVkJ3MKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb3BlbmVtYmVkZGVkJz48ZmlsZW5hbWU+bWV0YS1vcGVuZW1iZWRkZWQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLW9wZW5lbWJlZGRlZDwvZmlsZW5hbWU+IGxheWVyIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgbWFueSA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gbGF5ZXJzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpcyBhIGNvbGxlY3Rpb24gb2YKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBkZXZlbG9wbWVudCB0b29scyBhbmQgdXRpbGl0aWVzIHRoYXQgcnVuIG9uIG9uZQorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgYWxsb3cgeW91IHRvIGRldmVsb3Agc29mdHdhcmUgZm9yIGEKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQsIG9yIHRhcmdldGVkLCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgVGhlc2UgdG9vbGNoYWlucyBjb250YWluIGNyb3NzLWNvbXBpbGVycywgbGlua2VycywgYW5kCisgICAgICAgICAgICAgICAgZGVidWdnZXJzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICB0b29sY2hhaW5zOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgdG9vbGNoYWluIG9ubHkgdXNlZCBieSBhbmQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UgZm9yIGEgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVsb2NhdGFibGUgdG9vbGNoYWluIHVzZWQgb3V0c2lkZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBieSBkZXZlbG9wZXJzIHdoZW4gZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBydW4gb24gYSB0YXJnZXRlZCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5DcmVhdGlvbiBvZiB0aGVzZSB0b29sY2hhaW5zIGlzIHNpbXBsZSBhbmQgYXV0b21hdGVkLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW4gY29uY2VwdHMgYXMgdGhleSBhcHBseSB0byB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgcmVsb2NhdGFibGUgdG9vbGNoYWluIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY3VzdG9tIFNESyBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICBUaGlzIGVTREsgYWxsb3dzIGRldmVsb3BlcnMgdG8gaW5jb3Jwb3JhdGUgdGhlaXIgbGlicmFyeQorICAgICAgICAgICAgICAgIGFuZCBwcm9ncmFtbWluZyBjaGFuZ2VzIGJhY2sgaW50byB0aGUgaW1hZ2UgdG8gbWFrZQorICAgICAgICAgICAgICAgIHRoZWlyIGNvZGUgYXZhaWxhYmxlIHRvIG90aGVyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIHRoZSBlU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBbiBpbWFnZSBpcyBhbiBhcnRpZmFjdCBvZiB0aGUgQml0QmFrZSBidWlsZCBwcm9jZXNzIGdpdmVuCisgICAgICAgICAgICAgICAgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgYW5kIHJlbGF0ZWQgTWV0YWRhdGEuCisgICAgICAgICAgICAgICAgSW1hZ2VzIGFyZSB0aGUgYmluYXJ5IG91dHB1dCB0aGF0IHJ1biBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvcgorICAgICAgICAgICAgICAgIFFFTVUgYW5kIGFyZSB1c2VkIGZvciBzcGVjaWZpYyB1c2UtY2FzZXMuCisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGltYWdlIHR5cGVzIHRoYXQgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBwcm92aWRlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBMYXllcnMgYWxsb3cgeW91IHRvIGNvbnNvbGlkYXRlIHJlbGF0ZWQgbWV0YWRhdGEgdG8KKyAgICAgICAgICAgICAgICBjdXN0b21pemUgeW91ciBidWlsZC4KKyAgICAgICAgICAgICAgICBMYXllcnMgYWxzbyBpc29sYXRlIGluZm9ybWF0aW9uIHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgIGZvciBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgIExheWVycyBhcmUgaGllcmFyY2hpY2FsIGluIHRoZWlyIGFiaWxpdHkgdG8gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGluY2x1ZGUgYW55IG51bWJlciBvZiBhdmFpbGFibGUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgY3VzdG9taXplIHRoZSBidWlsZCBieSBhZGRpbmcgeW91cgorICAgICAgICAgICAgICAgIGxheWVycyBhZnRlciB0aGVtLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VhcmNoIHRoZSBMYXllciBJbmRleCBmb3IgbGF5ZXJzIHVzZWQgd2l0aGluCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEga2V5IGVsZW1lbnQgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMgdGhlIE1ldGFkYXRhIHRoYXQKKyAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgaXMgY29udGFpbmVkCisgICAgICAgICAgICAgICAgaW4gdGhlIGZpbGVzIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+CisgICAgICAgICAgICAgICAgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCByZWZlcnMgdG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zIHRoZW1zZWx2ZXMsIGFzIHdlbGwgYXMgdGhlIGRhdGEgdXNlZCB0bworICAgICAgICAgICAgICAgIGNvbnRyb2wgd2hhdCB0aGluZ3MgZ2V0IGJ1aWx0IGFuZCB0aGUgZWZmZWN0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbHNvIGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBkYXRhIHVzZWQgdG8KKyAgICAgICAgICAgICAgICBpbmRpY2F0ZSB3aGF0IHZlcnNpb25zIG9mIHNvZnR3YXJlIGFyZSB1c2VkLCBmcm9tCisgICAgICAgICAgICAgICAgd2hlcmUgdGhleSBhcmUgb2J0YWluZWQsIGFuZCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBpdHNlbGYgKHBhdGNoZXMgb3IgYXV4aWxpYXJ5IGZpbGVzKSB0aGF0CisgICAgICAgICAgICAgICAgYXJlIHVzZWQgdG8gZml4IGJ1Z3Mgb3IgY3VzdG9taXplIHRoZSBzb2Z0d2FyZSBmb3IgdXNlCisgICAgICAgICAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBpcyBhbiBpbXBvcnRhbnQgc2V0IG9mIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgIG1ldGFkYXRhLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoZSBjb250ZXh0IG9mIHRoZSBrZXJuZWwgKCJrZXJuZWwgTWV0YWRhdGEiKSwgdGhlCisgICAgICAgICAgICAgICAgdGVybSByZWZlcnMgdG8gdGhlIGtlcm5lbCBjb25maWcgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcworICAgICAgICAgICAgICAgIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS95b2N0by1rZXJuZWwtY2FjaGUnPjxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J29lLWNvcmUnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIG1ldGFkYXRhIGNvbXByaXNlZCBvZiBmb3VuZGF0aW9uYWwgcmVjaXBlcywKKyAgICAgICAgICAgICAgICBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgICAgICAgICAgICAgIGNvbW1vbiBhbW9uZyBtYW55IGRpZmZlcmVudCBPcGVuRW1iZWRkZWQtZGVyaXZlZCBzeXN0ZW1zLAorICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIGEgY3VyYXRlZCBzdWJzZXQgb2YgYW4gb3JpZ2luYWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgIGRldmVsb3BlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eSB0aGF0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgcGFyZWQgZG93biBpbnRvIGEgc21hbGxlciwgY29yZSBzZXQgb2YgY29udGludW91c2x5CisgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIHRpZ2h0bHkgY29udHJvbGxlZCBhbmQgYW4gcXVhbGl0eS1hc3N1cmVkCisgICAgICAgICAgICAgICAgY29yZSBzZXQgb2YgcmVjaXBlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIHNlZSB0aGUgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdidWlsZC1zeXN0ZW0tdGVybSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHNwZWNpZmljIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIGJhc2VkIG9uIGFub3RoZXIgcHJvamVjdCBrbm93bgorICAgICAgICAgICAgICAgIGFzICJQb2t5Iiwgd2hpY2ggdXNlcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gYXMgdGhlIHRhc2sKKyAgICAgICAgICAgICAgICBleGVjdXRvci4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBzaW1wbHkKKyAgICAgICAgICAgICAgICBhcyAidGhlIGJ1aWxkIHN5c3RlbSIuCisgICAgICAgICAgICAgICAgSWYgb3RoZXIgYnVpbGQgc3lzdGVtcywgc3VjaCBhcyBhIGhvc3Qgb3IgdGFyZ2V0IGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGFyZSByZWZlcmVuY2VkLCB0aGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIGFib3V0IFBva3ksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4gdGVybS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgdGhpcyB0ZXJtIHJlZmVycyB0byBhCisgICAgICAgICAgICAgICAgcmVjaXBlJ3MgcGFja2FnZWQgb3V0cHV0IHByb2R1Y2VkIGJ5IEJpdEJha2UgKGkuZS4gYQorICAgICAgICAgICAgICAgICJiYWtlZCByZWNpcGUiKS4KKyAgICAgICAgICAgICAgICBBIHBhY2thZ2UgaXMgZ2VuZXJhbGx5IHRoZSBjb21waWxlZCBiaW5hcmllcyBwcm9kdWNlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSdzIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgWW91ICJiYWtlIiBzb21ldGhpbmcgYnkgcnVubmluZyBpdCB0aHJvdWdoIEJpdEJha2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHRlcm0gInBhY2thZ2UiIGNhbiwKKyAgICAgICAgICAgICAgICBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHBhY2thZ2VzIHJlZmVycmVkIHRvIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWJ1aWxkLWhvc3QnPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgQnVpbGQgSG9zdDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBhcmUgY29tcGlsZWQgYmluYXJpZXMgdGhhdCwgd2hlbiBpbnN0YWxsZWQsIGFkZAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBMaW51eCBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+QW5vdGhlciBwb2ludCB3b3J0aCBub3RpbmcgaXMgdGhhdCBoaXN0b3JpY2FsbHkgd2l0aGluCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHJlY2lwZXMgd2VyZSByZWZlcnJlZCB0byBhcyBwYWNrYWdlcyAtIHRodXMsCisgICAgICAgICAgICAgICAgdGhlIGV4aXN0ZW5jZSBvZiBzZXZlcmFsIEJpdEJha2UgdmFyaWFibGVzIHRoYXQgYXJlIHNlZW1pbmdseQorICAgICAgICAgICAgICAgIG1pcy1uYW1lZCwKKyAgICAgICAgICAgICAgICAoZS5nLiA8bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiwgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWNrYWdlIEdyb3Vwczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEFyYml0cmFyeSBncm91cHMgb2Ygc29mdHdhcmUgUmVjaXBlcy4KKyAgICAgICAgICAgICAgICBZb3UgdXNlIHBhY2thZ2UgZ3JvdXBzIHRvIGhvbGQgcmVjaXBlcyB0aGF0LCB3aGVuIGJ1aWx0LAorICAgICAgICAgICAgICAgIHVzdWFsbHkgYWNjb21wbGlzaCBhIHNpbmdsZSB0YXNrLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIHBhY2thZ2UgZ3JvdXAgY291bGQgY29udGFpbiB0aGUgcmVjaXBlcyBmb3IgYQorICAgICAgICAgICAgICAgIGNvbXBhbnkncyBwcm9wcmlldGFyeSBvciB2YWx1ZS1hZGQgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgT3IsIHRoZSBwYWNrYWdlIGdyb3VwIGNvdWxkIGNvbnRhaW4gdGhlIHJlY2lwZXMgdGhhdCBlbmFibGUKKyAgICAgICAgICAgICAgICBncmFwaGljcy4KKyAgICAgICAgICAgICAgICBBIHBhY2thZ2UgZ3JvdXAgaXMgcmVhbGx5IGp1c3QgYW5vdGhlciByZWNpcGUuCisgICAgICAgICAgICAgICAgQmVjYXVzZSBwYWNrYWdlIGdyb3VwIGZpbGVzIGFyZSByZWNpcGVzLCB0aGV5IGVuZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlbmFtZSBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3Bva3knPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Qb2t5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgUG9reSwgd2hpY2ggaXMgcHJvbm91bmNlZCA8ZW1waGFzaXM+UG9jazwvZW1waGFzaXM+LWVlLAorICAgICAgICAgICAgICAgIGlzIGEgcmVmZXJlbmNlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBhbmQgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICB0ZXN0IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgUG9reSBwcm92aWRlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgYmFzZS1sZXZlbCBmdW5jdGlvbmFsIGRpc3RybyB1c2VkIHRvIGlsbHVzdHJhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byBjdXN0b21pemUgYSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQSBtZWFucyBieSB3aGljaCB0byB0ZXN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzIChpLmUuIFBva3kgaXMgdXNlZCB0byB2YWxpZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgdmVoaWNsZSB0aHJvdWdoIHdoaWNoIHlvdSBjYW4gZG93bmxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgUG9reSBpcyBub3QgYSBwcm9kdWN0IGxldmVsIGRpc3Ryby4KKyAgICAgICAgICAgICAgICBSYXRoZXIsIGl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgUG9reSBiZWdhbiBhcyBhbiBvcGVuLXNvdXJjZQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGluaXRpYWxseSBkZXZlbG9wZWQgYnkgT3BlbmVkSGFuZC4KKyAgICAgICAgICAgICAgICAgICAgT3BlbmVkSGFuZCBkZXZlbG9wZWQgUG9reSBmcm9tIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIGNvbW1lcmNpYWxseQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0YWJsZSBidWlsZCBzeXN0ZW0gZm9yIGVtYmVkZGVkIExpbnV4LgorICAgICAgICAgICAgICAgICAgICBBZnRlciBJbnRlbCBDb3Jwb3JhdGlvbiBhY3F1aXJlZCBPcGVuZWRIYW5kLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcG9reSBwcm9qZWN0IGJlY2FtZSB0aGUgYmFzaXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVjaXBlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICBBIHJlY2lwZSBkZXNjcmliZXMgd2hlcmUgeW91IGdldCBzb3VyY2UgY29kZSwgd2hpY2ggcGF0Y2hlcworICAgICAgICAgICAgICAgIHRvIGFwcGx5LCBob3cgdG8gY29uZmlndXJlIHRoZSBzb3VyY2UsIGhvdyB0byBjb21waWxlIGl0IGFuZCBzbyBvbi4KKyAgICAgICAgICAgICAgICBSZWNpcGVzIGFsc28gZGVzY3JpYmUgZGVwZW5kZW5jaWVzIGZvciBsaWJyYXJpZXMgb3IgZm9yIG90aGVyCisgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBSZWNpcGVzIHJlcHJlc2VudCB0aGUgbG9naWNhbCB1bml0IG9mIGV4ZWN1dGlvbiwgdGhlIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgdG8gYnVpbGQsIHRoZSBpbWFnZXMgdG8gYnVpbGQsIGFuZCB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdyZWZlcmVuY2Uta2l0LXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2UgS2l0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB3b3JraW5nIGV4YW1wbGUgb2YgYSBzeXN0ZW0sIHdoaWNoIGluY2x1ZGVzIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPkJTUDwvbGluaz4KKyAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvbGluaz4KKyAgICAgICAgICAgICAgICBhbmQgb3RoZXIgY29tcG9uZW50cywgdGhhdCBjYW4gd29yayBvbiBzcGVjaWZpYyBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0nc291cmNlLWRpcmVjdG9yeSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNvdXJjZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGNyZWF0ZWQgYXMgYSByZXN1bHQKKyAgICAgICAgICAgICAgICBvZiBjcmVhdGluZyBhIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgb3IgZXhwYW5kaW5nIGEgcmVsZWFzZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiB0YXJiYWxsLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igc2V0dGluZyB1cAorICAgICAgICAgICAgICAgICAgICB5b3VyIFNvdXJjZSBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB5b3UgbWlnaHQgaGVhciB0aGUgdGVybSAicG9reSBkaXJlY3RvcnkiIHVzZWQgdG8gcmVmZXIKKyAgICAgICAgICAgICAgICB0byB0aGlzIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBvcgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb250YWluIHNwYWNlcy4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0aGF0IHRoZSBTb3VyY2UgRGlyZWN0b3J5IHlvdSB1c2UgZG9lcyBub3QgY29udGFpbgorICAgICAgICAgICAgICAgICAgICB0aGVzZSB0eXBlcyBvZiBuYW1lcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFNvdXJjZSBEaXJlY3RvcnkgY29udGFpbnMgQml0QmFrZSwgRG9jdW1lbnRhdGlvbiwKKyAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbmQgb3RoZXIgZmlsZXMgdGhhdCBhbGwgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IGhhdmUgdGhlIFNvdXJjZSBEaXJlY3RvcnkgaW4gcGxhY2Ugb24KKyAgICAgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSBpbiBvcmRlciB0byBkbyBhbnkgZGV2ZWxvcG1lbnQgdXNpbmcKKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91CisgICAgICAgICAgICAgICAgY2FuIG5hbWUgdGhlIHJlcG9zaXRvcnkgYW55dGhpbmcgeW91IGxpa2UuCisgICAgICAgICAgICAgICAgVGhyb3VnaG91dCBtdWNoIG9mIHRoZSBkb2N1bWVudGF0aW9uLCAicG9reSIKKyAgICAgICAgICAgICAgICBpcyB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgZm9sZGVyIG9mIHRoZSBsb2NhbCBjb3B5IG9mCisgICAgICAgICAgICAgICAgdGhlIHBva3kgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgU28sIGZvciBleGFtcGxlLCBjbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgcmVzdWx0cyBpbiBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IHdob3NlIHRvcC1sZXZlbAorICAgICAgICAgICAgICAgIGZvbGRlciBpcyBhbHNvIG5hbWVkICJwb2t5Ii48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGlsZSBpdCBpcyBub3QgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRhcmJhbGwgZXhwYW5zaW9uCisgICAgICAgICAgICAgICAgdG8gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5LCBpZiB5b3UgZG8sIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSBpcyBkZXJpdmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGRvd25sb2FkaW5nIGFuZCB1bnBhY2tpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1lfVEFSQkFMTDs8L2ZpbGVuYW1lPiByZXN1bHRzIGluIGEKKyAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IHdob3NlIHJvb3QgZm9sZGVyIGlzIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19QT0tZOzwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQorICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY3JlYXRlZCBieSB1bnBhY2tpbmcgYSByZWxlYXNlZCB0YXJiYWxsIGFzCisgICAgICAgICAgICAgICAgY29tcGFyZWQgdG8gY2xvbmluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdW5wYWNrIGEgdGFyYmFsbCwgeW91IGhhdmUgYW4gZXhhY3QgY29weSBvZiB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgdGltZSBvZiByZWxlYXNlIC0gYSBmaXhlZCByZWxlYXNlIHBvaW50LgorICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSBtYWtlIHRvIHlvdXIgbG9jYWwgZmlsZXMgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBhcmUgb24gdG9wIG9mIHRoZSByZWxlYXNlIGFuZCB3aWxsIHJlbWFpbiBsb2NhbCBvbmx5LgorICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB3aGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LCB5b3UgaGF2ZSBhbiBhY3RpdmUgZGV2ZWxvcG1lbnQgcmVwb3NpdG9yeSB3aXRoCisgICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5J3MgYnJhbmNoZXMgYW5kIHRhZ3MuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhbnkgbG9jYWwgY2hhbmdlcyB5b3UgbWFrZSB0byB0aGUgbG9jYWwKKyAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGNhbiBiZSBsYXRlciBhcHBsaWVkIHRvIGFjdGl2ZSBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGJyYW5jaGVzIG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uY2VwdHMgcmVsYXRlZCB0byBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIGJyYW5jaGVzLCBhbmQgdGFncywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhc2s6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHVuaXQgb2YgZXhlY3V0aW9uIGZvciBCaXRCYWtlIChlLmcuCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3RvYXN0ZXItdGVybSc+PGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtPC9saW5rPi4KKyAgICAgICAgICAgICAgICBUaGUgaW50ZXJmYWNlIGVuYWJsZXMgeW91IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIHlvdXIgYnVpbGRzLgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IGJ1aWxkcyBpcyBjb2xsZWN0ZWQgYW5kIHN0b3JlZCBpbiBhIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBUb2FzdGVyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcHN0cmVhbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgcmVmZXJlbmNlIHRvIHNvdXJjZSBjb2RlIG9yIHJlcG9zaXRvcmllcworICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBsb2NhbCB0byB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGJ1dCBsb2NhdGVkIGluIGEKKyAgICAgICAgICAgICAgICBtYXN0ZXIgYXJlYSB0aGF0IGlzIGNvbnRyb2xsZWQgYnkgdGhlIG1haW50YWluZXIgb2YgdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgIGNvZGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIG9yZGVyIGZvciBhIGRldmVsb3BlciB0byB3b3JrIG9uIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgIHBpZWNlIG9mIGNvZGUsIHRoZXkgbmVlZCB0byBmaXJzdCBnZXQgYSBjb3B5IG9mIGl0IGZyb20gYW4KKyAgICAgICAgICAgICAgICAidXBzdHJlYW0iIHNvdXJjZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy5yc3QKaW5kZXggMzE2ZThhYS4uMmQ2NzE5ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKgogVmFyaWFibGVzIEdsb3NzYXJ5CkBAIC03LDE4ICs3LDE4IEBACiBUaGlzIGNoYXB0ZXIgbGlzdHMgY29tbW9uIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKIHN5c3RlbSBhbmQgZ2l2ZXMgYW4gb3ZlcnZpZXcgb2YgdGhlaXIgZnVuY3Rpb24gYW5kIGNvbnRlbnRzLgogCi06dGVybTpgQSA8QUJJRVhURU5TSU9OPmAgOnRlcm06YEJgIDp0ZXJtOmBDIDxDQUNIRT5gCi06dGVybTpgRGAgOnRlcm06YEUgPEVGSV9QUk9WSURFUj5gIDp0ZXJtOmBGIDxGRUFUVVJFX1BBQ0tBR0VTPmAKLTp0ZXJtOmBHIDxHQ0NQSUU+YCA6dGVybTpgSCA8SE9NRVBBR0U+YCA6dGVybTpgSSA8SUNFQ0NfRElTQUJMRUQ+YAotOnRlcm06YEsgPEtBUkNIPmAgOnRlcm06YEwgPExBQkVMUz5gIDp0ZXJtOmBNIDxNQUNISU5FPmAKLTp0ZXJtOmBOIDxOQVRJVkVMU0JTVFJJTkc+YCA6dGVybTpgTyA8T0JKQ09QWT5gIDp0ZXJtOmBQYAotOnRlcm06YFIgPFJBTkxJQj5gIDp0ZXJtOmBTYCA6dGVybTpgVGAKLTp0ZXJtOmBVIDxVQk9PVF9DT05GSUc+YCA6dGVybTpgViA8Vk9MQVRJTEVfTE9HX0RJUj5gCi06dGVybTpgVyA8V0FSTl9RQT5gIDp0ZXJtOmBYIDxYU0VSVkVSPmAKK2BBIDwjdmFyLUFCSUVYVEVOU0lPTj5gX18gOnRlcm06YEJgIGBDIDwjdmFyLUNBQ0hFPmBfXworOnRlcm06YERgIGBFIDwjdmFyLUVGSV9QUk9WSURFUj5gX18gYEYgPCN2YXItRkVBVFVSRV9QQUNLQUdFUz5gX18KK2BHIDwjdmFyLUdDQ1BJRT5gX18gYEggPCN2YXItSE9NRVBBR0U+YF9fIGBJIDwjdmFyLUlDRUNDX0RJU0FCTEVEPmBfXworYEsgPCN2YXItS0FSQ0g+YF9fIGBMIDwjdmFyLUxBQkVMUz5gX18gYE0gPCN2YXItTUFDSElORT5gX18KK2BOIDwjdmFyLU5BVElWRUxTQlNUUklORz5gX18gYE8gPCN2YXItT0JKQ09QWT5gX18gOnRlcm06YFBgCitgUiA8I3Zhci1SQU5MSUI+YF9fIDp0ZXJtOmBTYCA6dGVybTpgVGAKK2BVIDwjdmFyLVVCT09UX0NPTkZJRz5gX18gYFYgPCN2YXItVk9MQVRJTEVfTE9HX0RJUj5gX18KK2BXIDwjdmFyLVdBUk5fUUE+YF9fIGBYIDwjdmFyLVhTRVJWRVI+YF9fCiAKIC4uIGdsb3NzYXJ5OjoKIAotICAgOnRlcm06YEFCSUVYVEVOU0lPTmAKKyAgIEFCSUVYVEVOU0lPTgogICAgICAgRXh0ZW5zaW9uIHRvIHRoZSBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIGZpZWxkIG9mIHRoZSBHTlUKICAgICAgIGNhbm9uaWNhbCBhcmNoaXRlY3R1cmUgbmFtZSAoZS5nLiAiZWFiaSIpLgogCkBAIC0yOSw3ICsyOSw3IEBACiAKICAgICAgICAgIEFCSUVYVEVOU0lPTiA9ICJlYWJpIgogCi0gICA6dGVybTpgQUxMT1dfRU1QVFlgCisgICBBTExPV19FTVBUWQogICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gcHJvZHVjZSBhbiBvdXRwdXQgcGFja2FnZSBldmVuIGlmIGl0IGlzIGVtcHR5LgogICAgICAgQnkgZGVmYXVsdCwgQml0QmFrZSBkb2VzIG5vdCBwcm9kdWNlIGVtcHR5IHBhY2thZ2VzLiBUaGlzIGRlZmF1bHQKICAgICAgIGJlaGF2aW9yIGNhbiBjYXVzZSBpc3N1ZXMgd2hlbiB0aGVyZSBpcyBhbgpAQCAtNDQsNyArNDQsNyBAQAogICAgICAgICAgQUxMT1dfRU1QVFlfJHtQTn0tZGV2ID0gIjEiCiAgICAgICAgICBBTExPV19FTVBUWV8ke1BOfS1zdGF0aWNkZXYgPSAiMSIKIAotICAgOnRlcm06YEFMVEVSTkFUSVZFYAorICAgQUxURVJOQVRJVkUKICAgICAgIExpc3RzIGNvbW1hbmRzIGluIGEgcGFja2FnZSB0aGF0IG5lZWQgYW4gYWx0ZXJuYXRpdmUgYmluYXJ5IG5hbWluZwogICAgICAgc2NoZW1lLiBTb21ldGltZXMgdGhlIHNhbWUgY29tbWFuZCBpcyBwcm92aWRlZCBpbiBtdWx0aXBsZSBwYWNrYWdlcy4KICAgICAgIFdoZW4gdGhpcyBvY2N1cnMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG5lZWRzIHRvIHVzZSB0aGUKQEAgLTYzLDcgKzYzLDcgQEAKICAgICAgICI6cmVmOmB1cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MgPHJlZi1jbGFzc2VzLXVwZGF0ZS1hbHRlcm5hdGl2ZXM+YCIKICAgICAgIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBBTFRFUk5BVElWRV9MSU5LX05BTUVgCisgICBBTFRFUk5BVElWRV9MSU5LX05BTUUKICAgICAgIFVzZWQgYnkgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0gdG8gbWFwIGR1cGxpY2F0ZWQgY29tbWFuZHMgdG8gYWN0dWFsCiAgICAgICBsb2NhdGlvbnMuIEZvciBleGFtcGxlLCBpZiB0aGUgYGBicmFja2V0YGAgY29tbWFuZCBwcm92aWRlZCBieSB0aGUKICAgICAgIGBgYnVzeWJveGBgIHBhY2thZ2UgaXMgZHVwbGljYXRlZCB0aHJvdWdoIGFub3RoZXIgcGFja2FnZSwgeW91IG11c3QKQEAgLTg0LDcgKzg0LDcgQEAKICAgICAgICI6cmVmOmB1cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MgPHJlZi1jbGFzc2VzLXVwZGF0ZS1hbHRlcm5hdGl2ZXM+YCIKICAgICAgIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBBTFRFUk5BVElWRV9QUklPUklUWWAKKyAgIEFMVEVSTkFUSVZFX1BSSU9SSVRZCiAgICAgICBVc2VkIGJ5IHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIHRvIGNyZWF0ZSBkZWZhdWx0IHByaW9yaXRpZXMgZm9yCiAgICAgICBkdXBsaWNhdGVkIGNvbW1hbmRzLiBZb3UgY2FuIHVzZSB0aGUgdmFyaWFibGUgdG8gY3JlYXRlIGEgc2luZ2xlCiAgICAgICBkZWZhdWx0IHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbW1hbmQgbmFtZSBvciBwYWNrYWdlLCBhIGRlZmF1bHQgZm9yCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAgICI6cmVmOmB1cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MgPHJlZi1jbGFzc2VzLXVwZGF0ZS1hbHRlcm5hdGl2ZXM+YCIKICAgICAgIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBBTFRFUk5BVElWRV9UQVJHRVRgCisgICBBTFRFUk5BVElWRV9UQVJHRVQKICAgICAgIFVzZWQgYnkgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0gdG8gY3JlYXRlIGRlZmF1bHQgbGluayBsb2NhdGlvbnMgZm9yCiAgICAgICBkdXBsaWNhdGVkIGNvbW1hbmRzLiBZb3UgY2FuIHVzZSB0aGUgdmFyaWFibGUgdG8gY3JlYXRlIGEgc2luZ2xlCiAgICAgICBkZWZhdWx0IGxvY2F0aW9uIGZvciBhbGwgZHVwbGljYXRlZCBjb21tYW5kcyByZWdhcmRsZXNzIG9mIHRoZQpAQCAtMTMyLDE3ICsxMzIsMTcgQEAKICAgICAgICI6cmVmOmB1cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MgPHJlZi1jbGFzc2VzLXVwZGF0ZS1hbHRlcm5hdGl2ZXM+YCIKICAgICAgIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBBUFBFTkRgCisgICBBUFBFTkQKICAgICAgIEFuIG92ZXJyaWRlIGxpc3Qgb2YgYXBwZW5kIHN0cmluZ3MgZm9yIGVhY2ggdGFyZ2V0IHNwZWNpZmllZCB3aXRoCiAgICAgICA6dGVybTpgTEFCRUxTYC4KIAogICAgICAgU2VlIHRoZSA6cmVmOmBncnViLWVmaSA8cmVmLWNsYXNzZXMtZ3J1Yi1lZmk+YCBjbGFzcyBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZC4KIAotICAgOnRlcm06YEFSYAorICAgQVIKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB1c2VkIHRvIHJ1biBgYGFyYGAuCiAKLSAgIDp0ZXJtOmBBUkNISVZFUl9NT0RFYAorICAgQVJDSElWRVJfTU9ERQogICAgICAgV2hlbiB1c2VkIHdpdGggdGhlIDpyZWY6YGFyY2hpdmVyIDxyZWYtY2xhc3Nlcy1hcmNoaXZlcj5gIGNsYXNzLAogICAgICAgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB1c2VkIHRvIGNyZWF0ZSBhIHJlbGVhc2VkIGFyY2hpdmUuCiAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIHRvIGNyZWF0ZSBhcmNoaXZlcyBvZiBwYXRjaGVkIHNvdXJjZSwKQEAgLTE2MiwxMCArMTYyLDEwIEBACiAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoZSB2YXJpYWJsZSB3b3Jrcywgc2VlIHRoZQogICAgICAgYGBtZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzc2BgIGZpbGUgaW4gdGhlIDp0ZXJtOmBTb3VyY2UgRGlyZWN0b3J5YC4KIAotICAgOnRlcm06YEFTYAorICAgQVMKICAgICAgIE1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIG5lZWRlZCB0byBydW4gdGhlIGFzc2VtYmxlci4KIAotICAgOnRlcm06YEFTU1VNRV9QUk9WSURFRGAKKyAgIEFTU1VNRV9QUk9WSURFRAogICAgICAgTGlzdHMgcmVjaXBlIG5hbWVzICg6dGVybTpgUE5gIHZhbHVlcykgQml0QmFrZSBkb2VzIG5vdAogICAgICAgYXR0ZW1wdCB0byBidWlsZC4gSW5zdGVhZCwgQml0QmFrZSBhc3N1bWVzIHRoZXNlIHJlY2lwZXMgaGF2ZSBhbHJlYWR5CiAgICAgICBiZWVuIGJ1aWx0LgpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICB3aGVuIHNwZWNpZmllZCwgYWxsb3dzIGZvciB0aGUgR2l0IGJpbmFyeSBmcm9tIHRoZSBob3N0IHRvIGJlIHVzZWQKICAgICAgIHJhdGhlciB0aGFuIGJ1aWxkaW5nIGBgZ2l0LW5hdGl2ZWBgLgogCi0gICA6dGVybTpgQVNTVU1FX1NITElCU2AKKyAgIEFTU1VNRV9TSExJQlMKICAgICAgIFByb3ZpZGVzIGFkZGl0aW9uYWwgYGBzaGxpYnNgYCBwcm92aWRlciBtYXBwaW5nIGluZm9ybWF0aW9uLCB3aGljaAogICAgICAgYWRkcyB0byBvciBvdmVyd3JpdGVzIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZQogICAgICAgc3lzdGVtLiBTZXBhcmF0ZSBtdWx0aXBsZSBlbnRyaWVzIHVzaW5nIHNwYWNlcy4KQEAgLTE5MiwxMSArMTkyLDExIEBACiAKICAgICAgICAgIEFTU1VNRV9TSExJQlMgPSAibGliRUdMLnNvLjE6bGliZWdsLWltcGxlbWVudGF0aW9uIgogCi0gICA6dGVybTpgQVVUSE9SYAorICAgQVVUSE9SCiAgICAgICBUaGUgZW1haWwgYWRkcmVzcyB1c2VkIHRvIGNvbnRhY3QgdGhlIG9yaWdpbmFsIGF1dGhvciBvciBhdXRob3JzIGluCiAgICAgICBvcmRlciB0byBzZW5kIHBhdGNoZXMgYW5kIGZvcndhcmQgYnVncy4KIAotICAgOnRlcm06YEFVVE9fTElCTkFNRV9QS0dTYAorICAgQVVUT19MSUJOQU1FX1BLR1MKICAgICAgIFdoZW4gdGhlIDpyZWY6YGRlYmlhbiA8cmVmLWNsYXNzZXMtZGViaWFuPmAgY2xhc3MgaXMgaW5oZXJpdGVkLAogICAgICAgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IsIGBgQVVUT19MSUJOQU1FX1BLR1NgYCBzcGVjaWZpZXMgd2hpY2gKICAgICAgIHBhY2thZ2VzIHNob3VsZCBiZSBjaGVja2VkIGZvciBsaWJyYXJpZXMgYW5kIHJlbmFtZWQgYWNjb3JkaW5nIHRvCkBAIC0yMDUsMTIgKzIwNSwxMiBAQAogICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIiR7UEFDS0FHRVN9Iiwgd2hpY2ggY2F1c2VzIHRoZSBkZWJpYW4gY2xhc3MgdG8KICAgICAgIGFjdCBvbiBhbGwgcGFja2FnZXMgdGhhdCBhcmUgZXhwbGljaXRseSBnZW5lcmF0ZWQgYnkgdGhlIHJlY2lwZS4KIAotICAgOnRlcm06YEFVVE9fU1lTTElOVVhNRU5VYAorICAgQVVUT19TWVNMSU5VWE1FTlUKICAgICAgIEVuYWJsZXMgY3JlYXRpbmcgYW4gYXV0b21hdGljIG1lbnUgZm9yIHRoZSBzeXNsaW51eCBib290bG9hZGVyLiBZb3UKICAgICAgIG11c3Qgc2V0IHRoaXMgdmFyaWFibGUgaW4geW91ciByZWNpcGUuIFRoZQogICAgICAgOnJlZjpgc3lzbGludXggPHJlZi1jbGFzc2VzLXN5c2xpbnV4PmAgY2xhc3MgY2hlY2tzIHRoaXMgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBBVVRPUkVWYAorICAgQVVUT1JFVgogICAgICAgV2hlbiBgYFNSQ1JFVmBgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSwgaXQgc3BlY2lmaWVzIHRvCiAgICAgICB1c2UgdGhlIGxhdGVzdCBzb3VyY2UgcmV2aXNpb24gaW4gdGhlIHJlcG9zaXRvcnkuIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgIDo6CkBAIC0yMzAsNyArMjMwLDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOmF1dG9tYXRpY2FsbHkgaW5jcmVtZW50aW5nIGEgcGFja2FnZSB2ZXJzaW9uIG51bWJlcmAiCiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YEFWQUlMQUJMRV9MSUNFTlNFU2AKKyAgIEFWQUlMQUJMRV9MSUNFTlNFUwogICAgICAgTGlzdCBvZiBsaWNlbnNlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5CiAgICAgICA6dGVybTpgQ09NTU9OX0xJQ0VOU0VfRElSYCBhbmQKICAgICAgIDp0ZXJtOmBMSUNFTlNFX1BBVEhgLgpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAgICAgICAgICBsaWNlbnNlLmJiY2xhc3MKICAgICAgICAgICkuCiAKLSAgIDp0ZXJtOmBBVkFJTFRVTkVTYAorICAgQVZBSUxUVU5FUwogICAgICAgVGhlIGxpc3Qgb2YgZGVmaW5lZCBDUFUgYW5kIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkKICAgICAgIHR1bmluZ3MgKGkuZS4gInR1bmVzIikgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAogICAgICAgc3lzdGVtLgpAQCAtMjY0LDcgKzI2NCw3IEBACiAgICAgICAiOnJlZjpgQmFzaWMgU3ludGF4IDxiaXRiYWtlOmJpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YTpiYXNpYyBzeW50YXg+YCIgc2VjdGlvbiBpbiB0aGUgQml0QmFrZQogICAgICAgVXNlciBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBCYAorICAgQgogICAgICAgVGhlIGRpcmVjdG9yeSB3aXRoaW4gdGhlIDp0ZXJtOmBCdWlsZCBEaXJlY3RvcnlgIGluCiAgICAgICB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwbGFjZXMgZ2VuZXJhdGVkIG9iamVjdHMgZHVyaW5nIGEKICAgICAgIHJlY2lwZSdzIGJ1aWxkIHByb2Nlc3MuIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IGlzIHRoZSBzYW1lIGFzIHRoZQpAQCAtMjc4LDcgKzI3OCw3IEBACiAgICAgICBzZXBhcmF0aW5nIHRoZXNlIGRpcmVjdG9yaWVzLiBUaGUgYnVpbGQgc3lzdGVtIGRlZmF1bHRzIHRvIHVzaW5nCiAgICAgICBzZXBhcmF0ZSBkaXJlY3RvcmllcyBmb3IgYGBnY2NgYCBhbmQgc29tZSBrZXJuZWwgcmVjaXBlcy4KIAotICAgOnRlcm06YEJBRF9SRUNPTU1FTkRBVElPTlNgCisgICBCQURfUkVDT01NRU5EQVRJT05TCiAgICAgICBMaXN0cyAicmVjb21tZW5kZWQtb25seSIgcGFja2FnZXMgdG8gbm90IGluc3RhbGwuIFJlY29tbWVuZGVkLW9ubHkKICAgICAgIHBhY2thZ2VzIGFyZSBwYWNrYWdlcyBpbnN0YWxsZWQgb25seSB0aHJvdWdoIHRoZQogICAgICAgOnRlcm06YFJSRUNPTU1FTkRTYCB2YXJpYWJsZS4gWW91IGNhbiBwcmV2ZW50IGFueQpAQCAtMzA4LDcgKzMwOCw3IEBACiAgICAgICA6dGVybTpgUEFDS0FHRV9FWENMVURFYCB2YXJpYWJsZXMgZm9yIHJlbGF0ZWQKICAgICAgIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgQkFTRV9MSUJgCisgICBCQVNFX0xJQgogICAgICAgVGhlIGxpYnJhcnkgZGlyZWN0b3J5IG5hbWUgZm9yIHRoZSBDUFUgb3IgQXBwbGljYXRpb24gQmluYXJ5CiAgICAgICBJbnRlcmZhY2UgKEFCSSkgdHVuZS4gVGhlIGBgQkFTRV9MSUJgYCBhcHBsaWVzIG9ubHkgaW4gdGhlIE11bHRpbGliCiAgICAgICBjb250ZXh0LiBTZWUgdGhlICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOmNvbWJpbmluZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBsaWJyYXJ5IGZpbGVzIGludG8gb25lIGltYWdlYCIKQEAgLTMxOSwxMSArMzE5LDExIEBACiAgICAgICB0aGUgOnRlcm06YFNvdXJjZSBEaXJlY3RvcnlgLiBJZiBNdWx0aWxpYiBpcyBub3QKICAgICAgIGJlaW5nIHVzZWQsIHRoZSB2YWx1ZSBkZWZhdWx0cyB0byAibGliIi4KIAotICAgOnRlcm06YEJBU0VfV09SS0RJUmAKKyAgIEJBU0VfV09SS0RJUgogICAgICAgUG9pbnRzIHRvIHRoZSBiYXNlIG9mIHRoZSB3b3JrIGRpcmVjdG9yeSBmb3IgYWxsIHJlY2lwZXMuIFRoZSBkZWZhdWx0CiAgICAgICB2YWx1ZSBpcyAiJHtUTVBESVJ9L3dvcmsiLgogCi0gICA6dGVybTpgQkJfQUxMT1dFRF9ORVRXT1JLU2AKKyAgIEJCX0FMTE9XRURfTkVUV09SS1MKICAgICAgIFNwZWNpZmllcyBhIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIGhvc3RzIHRoYXQgdGhlIGZldGNoZXIgaXMgYWxsb3dlZAogICAgICAgdG8gdXNlIHRvIG9idGFpbiB0aGUgcmVxdWlyZWQgc291cmNlIGNvZGUuIEZvbGxvd2luZyBhcmUKICAgICAgIGNvbnNpZGVyYXRpb25zIHN1cnJvdW5kaW5nIHRoaXMgdmFyaWFibGU6CkBAIC0zNjIsNyArMzYyLDcgQEAKICAgICAgIGhvc3QgbGlzdGVkIGluIGBgU1JDX1VSSWBgIGFmdGVyIGEgc3VjY2Vzc2Z1bCBmZXRjaCBmcm9tIHRoZQogICAgICAgYGBQUkVNSVJST1JTYGAgb2NjdXJzLgogCi0gICA6dGVybTpgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZYAorICAgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZCiAgICAgICBEZWZpbmVzIGhvdyBCaXRCYWtlIGhhbmRsZXMgc2l0dWF0aW9ucyB3aGVyZSBhbiBhcHBlbmQgZmlsZQogICAgICAgKGBgLmJiYXBwZW5kYGApIGhhcyBubyBjb3JyZXNwb25kaW5nIHJlY2lwZSBmaWxlIChgYC5iYmBgKS4gVGhpcwogICAgICAgY29uZGl0aW9uIG9mdGVuIG9jY3VycyB3aGVuIGxheWVycyBnZXQgb3V0IG9mIHN5bmMgKGUuZy4gYGBvZS1jb3JlYGAKQEAgLTM4MSw3ICszODEsNyBAQAogCiAgICAgICAgICBCQl9EQU5HTElOR0FQUEVORFNfV0FSTk9OTFkgPSAiMSIKIAotICAgOnRlcm06YEJCX0RJU0tNT05fRElSU2AKKyAgIEJCX0RJU0tNT05fRElSUwogICAgICAgTW9uaXRvcnMgZGlzayBzcGFjZSBhbmQgYXZhaWxhYmxlIGlub2RlcyBkdXJpbmcgdGhlIGJ1aWxkIGFuZCBhbGxvd3MKICAgICAgIHlvdSB0byBjb250cm9sIHRoZSBidWlsZCBiYXNlZCBvbiB0aGVzZSBwYXJhbWV0ZXJzLgogCkBAIC00NTMsNyArNDUzLDcgQEAKICAgICAgIGZyZWUgaW5vZGVzIGluIHRoZSBgYCR7VE1QRElSfWBgIGRpcmVjdG9yeSBkcm9wcyBiZWxvdyAxMDAgS2J5dGVzLiBObwogICAgICAgZGlzayBzcGFjZSBtb25pdG9yaW5nIGZvciB0aGUgZGlyZWN0b3J5IGl0c2VsZiBvY2N1cnMgaW4gdGhpcyBjYXNlLgogCi0gICA6dGVybTpgQkJfRElTS01PTl9XQVJOSU5URVJWQUxgCisgICBCQl9ESVNLTU9OX1dBUk5JTlRFUlZBTAogICAgICAgRGVmaW5lcyB0aGUgZGlzayBzcGFjZSBhbmQgZnJlZSBpbm9kZSB3YXJuaW5nIGludGVydmFscy4gVG8gc2V0IHRoZXNlCiAgICAgICBpbnRlcnZhbHMsIGRlZmluZSB0aGUgdmFyaWFibGUgaW4geW91ciBgYGNvbmYvbG9jYWwuY29uZmBgIGZpbGUgaW4KICAgICAgIHRoZSA6dGVybTpgQnVpbGQgRGlyZWN0b3J5YC4KQEAgLTUwMyw3ICs1MDMsNyBAQAogICAgICAgYSByZXNwZWN0aXZlIGludGVydmFsIGlzIHJlYWNoZWQgYmV5b25kIHRoZSBpbml0aWFsIHdhcm5pbmcgKGkuZS4gMQogICAgICAgR2J5dGVzIGFuZCAxMDAgS2J5dGVzKS4KIAotICAgOnRlcm06YEJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMU2AKKyAgIEJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUwogICAgICAgQ2F1c2VzIHRhcmJhbGxzIG9mIHRoZSBzb3VyY2UgY29udHJvbCByZXBvc2l0b3JpZXMgKGUuZy4gR2l0CiAgICAgICByZXBvc2l0b3JpZXMpLCBpbmNsdWRpbmcgbWV0YWRhdGEsIHRvIGJlIHBsYWNlZCBpbiB0aGUKICAgICAgIDp0ZXJtOmBETF9ESVJgIGRpcmVjdG9yeS4KQEAgLTUyMiw3ICs1MjIsNyBAQAogICAgICAgY2xlYW4gdXAgeW91ciBgYERMX0RJUmBgIGRpcmVjdG9yeSBieSBkZWxldGluZyBhbnkgR2l0IG9yIG90aGVyCiAgICAgICBzb3VyY2UgY29udHJvbCB3b3JrIGRpcmVjdG9yaWVzLgogCi0gICA6dGVybTpgQkJfTlVNQkVSX1RIUkVBRFNgCisgICBCQl9OVU1CRVJfVEhSRUFEUwogICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIEJpdEJha2Ugc2hvdWxkIHJ1biBpbiBwYXJhbGxlbCBhdCBhbnkgb25lCiAgICAgICB0aW1lLiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhpcwogICAgICAgdmFyaWFibGUgdG8gYmUgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBjb3JlcyBvbiB0aGUgYnVpbGQgc3lzdGVtLiBGb3IKQEAgLTU0MCw3ICs1NDAsNyBAQAogICAgICAgIjpyZWY6YGRldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3M6c3BlZWRpbmcgdXAgYSBidWlsZGAiCiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YEJCX1NFUlZFUl9USU1FT1VUYAorICAgQkJfU0VSVkVSX1RJTUVPVVQKICAgICAgIFNwZWNpZmllcyB0aGUgdGltZSAoaW4gc2Vjb25kcykgYWZ0ZXIgd2hpY2ggdG8gdW5sb2FkIHRoZSBCaXRCYWtlCiAgICAgICBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHkuIFNldCBgYEJCX1NFUlZFUl9USU1FT1VUYGAgdG8gZGV0ZXJtaW5lIGhvdwogICAgICAgbG9uZyB0aGUgQml0QmFrZSBzZXJ2ZXIgc3RheXMgcmVzaWRlbnQgYmV0d2VlbiBpbnZvY2F0aW9ucy4KQEAgLTU1NCw3ICs1NTQsNyBAQAogICAgICAgSWYgeW91IHdhbnQgdGhlIHNlcnZlciB0byBuZXZlciBiZSB1bmxvYWRlZCwKICAgICAgIHNldCBgYEJCX1NFUlZFUl9USU1FT1VUYGAgdG8gIi0xIi4KIAotICAgOnRlcm06YEJCQ0xBU1NFWFRFTkRgCisgICBCQkNMQVNTRVhURU5ECiAgICAgICBBbGxvd3MgeW91IHRvIGV4dGVuZCBhIHJlY2lwZSBzbyB0aGF0IGl0IGJ1aWxkcyB2YXJpYW50cyBvZiB0aGUKICAgICAgIHNvZnR3YXJlLiBDb21tb24gdmFyaWFudHMgZm9yIHJlY2lwZXMgZXhpc3Qgc3VjaCBhcyAibmF0aXZlcyIgbGlrZQogICAgICAgYGBxdWlsdC1uYXRpdmVgYCwgd2hpY2ggaXMgYSBjb3B5IG9mIFF1aWx0IGJ1aWx0IHRvIHJ1biBvbiB0aGUgYnVpbGQKQEAgLTU4NSwxOCArNTg1LDE4IEBACiAgICAgICAgICBzaW5jZSBgYGluY2x1ZGVgYCBzdGF0ZW1lbnRzIGFyZSBwcm9jZXNzZWQgd2hlbiB0aGUgcmVjaXBlIGlzCiAgICAgICAgICBwYXJzZWQuCiAKLSAgIDp0ZXJtOmBCQkZJTEVfQ09MTEVDVElPTlNgCisgICBCQkZJTEVfQ09MTEVDVElPTlMKICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiBjb25maWd1cmVkIGxheWVycy4gVGhlc2UgbmFtZXMgYXJlIHVzZWQgdG8gZmluZAogICAgICAgdGhlIG90aGVyIGBgQkJGSUxFXypgYCB2YXJpYWJsZXMuIFR5cGljYWxseSwgZWFjaCBsYXllciB3aWxsIGFwcGVuZAogICAgICAgaXRzIG5hbWUgdG8gdGhpcyB2YXJpYWJsZSBpbiBpdHMgYGBjb25mL2xheWVyLmNvbmZgYCBmaWxlLgogCi0gICA6dGVybTpgQkJGSUxFX1BBVFRFUk5gCisgICBCQkZJTEVfUEFUVEVSTgogICAgICAgVmFyaWFibGUgdGhhdCBleHBhbmRzIHRvIG1hdGNoIGZpbGVzIGZyb20KICAgICAgIDp0ZXJtOmBCQkZJTEVTYCBpbiBhIHBhcnRpY3VsYXIgbGF5ZXIuIFRoaXMgdmFyaWFibGUKICAgICAgIGlzIHVzZWQgaW4gdGhlIGBgY29uZi9sYXllci5jb25mYGAgZmlsZSBhbmQgbXVzdCBiZSBzdWZmaXhlZCB3aXRoIHRoZQogICAgICAgbmFtZSBvZiB0aGUgc3BlY2lmaWMgbGF5ZXIgKGUuZy4gYGBCQkZJTEVfUEFUVEVSTl9lbWVubG93YGApLgogCi0gICA6dGVybTpgQkJGSUxFX1BSSU9SSVRZYAorICAgQkJGSUxFX1BSSU9SSVRZCiAgICAgICBBc3NpZ25zIHRoZSBwcmlvcml0eSBmb3IgcmVjaXBlIGZpbGVzIGluIGVhY2ggbGF5ZXIuCiAKICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHNhbWUgcmVjaXBlIGFwcGVhcnMKQEAgLTYyMyw3ICs2MjMsNyBAQAogICAgICAgICAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMKICAgICAgICAgIHRvIGxpc3QgYWxsIGNvbmZpZ3VyZWQgbGF5ZXJzIGFsb25nIHdpdGggdGhlaXIgcHJpb3JpdGllcy4KIAotICAgOnRlcm06YEJCRklMRVNgCisgICBCQkZJTEVTCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJlY2lwZSBmaWxlcyBCaXRCYWtlIHVzZXMgdG8gYnVpbGQKICAgICAgIHNvZnR3YXJlLgogCkBAIC02MzIsNyArNjMyLDcgQEAKICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXgsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBieSBmb2xsb3dpbmcgdGhlCiAgICAgICBwcmV2aW91cyBsaW5rLgogCi0gICA6dGVybTpgQkJGSUxFU19EWU5BTUlDYAorICAgQkJGSUxFU19EWU5BTUlDCiAgICAgICBBY3RpdmF0ZXMgY29udGVudCB3aGVuIGlkZW50aWZpZWQgbGF5ZXJzIGFyZSBwcmVzZW50LiBZb3UgaWRlbnRpZnkKICAgICAgIHRoZSBsYXllcnMgYnkgdGhlIGNvbGxlY3Rpb25zIHRoYXQgdGhlIGxheWVycyBkZWZpbmUuCiAKQEAgLTY1OSwxNiArNjU5LDE2IEBACiAgICAgICAgICAgICAgL3dvcmsvbXktbGF5ZXIvYmJhcHBlbmRzL21ldGEtc2VjdXJpdHktaXNhZncvKi8qLyouYmJhcHBlbmQKICAgICAgICAgICAgICAvd29yay9teS1sYXllci9iYmFwcGVuZHMvb3BlbmVtYmVkZGVkLWNvcmUvbWV0YS8qLyovKi5iYmFwcGVuZAogCi0gICA6dGVybTpgQkJJTkNMVURFTE9HU2AKKyAgIEJCSU5DTFVERUxPR1MKICAgICAgIFZhcmlhYmxlIHRoYXQgY29udHJvbHMgaG93IEJpdEJha2UgZGlzcGxheXMgbG9ncyBvbiBidWlsZCBmYWlsdXJlLgogCi0gICA6dGVybTpgQkJJTkNMVURFTE9HU19MSU5FU2AKKyAgIEJCSU5DTFVERUxPR1NfTElORVMKICAgICAgIElmIDp0ZXJtOmBCQklOQ0xVREVMT0dTYCBpcyBzZXQsIHNwZWNpZmllcyB0aGUKICAgICAgIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIGZyb20gdGhlIHRhc2sgbG9nIGZpbGUgdG8gcHJpbnQgd2hlbgogICAgICAgcmVwb3J0aW5nIGEgZmFpbGVkIHRhc2suIElmIHlvdSBkbyBub3Qgc2V0IGBgQkJJTkNMVURFTE9HU19MSU5FU2BgLAogICAgICAgdGhlIGVudGlyZSBsb2cgaXMgcHJpbnRlZC4KIAotICAgOnRlcm06YEJCTEFZRVJTYAorICAgQkJMQVlFUlMKICAgICAgIExpc3RzIHRoZSBsYXllcnMgdG8gZW5hYmxlIGR1cmluZyB0aGUgYnVpbGQuIFRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZAogICAgICAgaW4gdGhlIGBgYmJsYXllcnMuY29uZmBgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgOnRlcm06YEJ1aWxkIERpcmVjdG9yeWAuCiAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CkBAIC02ODMsNyArNjgzLDcgQEAKICAgICAgIFRoaXMgZXhhbXBsZSBlbmFibGVzIGZvdXIgbGF5ZXJzLCBvbmUgb2Ygd2hpY2ggaXMgYSBjdXN0b20sCiAgICAgICB1c2VyLWRlZmluZWQgbGF5ZXIgbmFtZWQgYGBtZXRhLW15a2VybmVsYGAuCiAKLSAgIDp0ZXJtOmBCQk1BU0tgCisgICBCQk1BU0sKICAgICAgIFByZXZlbnRzIEJpdEJha2UgZnJvbSBwcm9jZXNzaW5nIHJlY2lwZXMgYW5kIHJlY2lwZSBhcHBlbmQgZmlsZXMuCiAKICAgICAgIFlvdSBjYW4gdXNlIHRoZSBgYEJCTUFTS2BgIHZhcmlhYmxlIHRvICJoaWRlIiB0aGVzZSBgYC5iYmBgIGFuZApAQCAtNzIwLDcgKzcyMCw3IEBACiAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgYSBkaXJlY3RvcnkgbmFtZSwgdXNlIHRoZSB0cmFpbGluZyBzbGFzaCBjaGFyYWN0ZXIKICAgICAgICAgIHRvIGVuc3VyZSB5b3UgbWF0Y2gganVzdCB0aGF0IGRpcmVjdG9yeSBuYW1lLgogCi0gICA6dGVybTpgQkJNVUxUSUNPTkZJR2AKKyAgIEJCTVVMVElDT05GSUcKICAgICAgIFNwZWNpZmllcyBlYWNoIGFkZGl0aW9uYWwgc2VwYXJhdGUgY29uZmlndXJhdGlvbiB3aGVuIHlvdSBhcmUKICAgICAgIGJ1aWxkaW5nIHRhcmdldHMgd2l0aCBtdWx0aXBsZSBjb25maWd1cmF0aW9ucy4gVXNlIHRoaXMgdmFyaWFibGUgaW4KICAgICAgIHlvdXIgYGBjb25mL2xvY2FsLmNvbmZgYCBjb25maWd1cmF0aW9uIGZpbGUuIFNwZWNpZnkgYQpAQCAtNzQwLDcgKzc0MCw3IEBACiAgICAgICAiOnJlZjpgZGV2LWJ1aWxkaW5nLWltYWdlcy1mb3ItbXVsdGlwbGUtdGFyZ2V0cy11c2luZy1tdWx0aXBsZS1jb25maWd1cmF0aW9uc2AiCiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YEJCUEFUSGAKKyAgIEJCUEFUSAogICAgICAgVXNlZCBieSBCaXRCYWtlIHRvIGxvY2F0ZSBgYC5iYmNsYXNzYGAgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoaXMKICAgICAgIHZhcmlhYmxlIGlzIGFuYWxvZ291cyB0byB0aGUgYGBQQVRIYGAgdmFyaWFibGUuCiAKQEAgLTc1OSw3ICs3NTksNyBAQAogICAgICAgICAgICAgICAgICAkIGJpdGJha2UgdGFyZ2V0CiAKIAotICAgOnRlcm06YEJCU0VSVkVSYAorICAgQkJTRVJWRVIKICAgICAgIElmIGRlZmluZWQgaW4gdGhlIEJpdEJha2UgZW52aXJvbm1lbnQsIGBgQkJTRVJWRVJgYCBwb2ludHMgdG8gdGhlCiAgICAgICBCaXRCYWtlIHJlbW90ZSBzZXJ2ZXIuCiAKQEAgLTc3NCw3ICs3NzQsNyBAQAogICAgICAgQ29uc2VxdWVudGx5LCBgYEJCU0VSVkVSYGAgaXMgZXhjbHVkZWQgZnJvbSBjaGVja3N1bSBhbmQgZGVwZW5kZW5jeQogICAgICAgZGF0YS4KIAotICAgOnRlcm06YEJJTkNPTkZJR2AKKyAgIEJJTkNPTkZJRwogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQogICAgICAgOnJlZjpgYmluY29uZmlnLWRpc2FibGVkIDxyZWYtY2xhc3Nlcy1iaW5jb25maWctZGlzYWJsZWQ+YCBjbGFzcywKICAgICAgIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGJpbmFyeSBjb25maWd1cmF0aW9uIHNjcmlwdHMgdG8gZGlzYWJsZSBpbgpAQCAtNzg5LDcgKzc4OSw3IEBACiAKICAgICAgICAgIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgogCi0gICA6dGVybTpgQklOQ09ORklHX0dMT0JgCisgICBCSU5DT05GSUdfR0xPQgogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmBiaW5jb25maWcgPHJlZi1jbGFzc2VzLWJpbmNvbmZpZz5gIGNsYXNzLAogICAgICAgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSB3aWxkY2FyZCBmb3IgY29uZmlndXJhdGlvbiBzY3JpcHRzIHRoYXQKICAgICAgIG5lZWQgZWRpdGluZy4gVGhlIHNjcmlwdHMgYXJlIGVkaXRlZCB0byBjb3JyZWN0IGFueSBwYXRocyB0aGF0IGhhdmUKQEAgLTgxNiw3ICs4MTYsNyBAQAogICAgICAgaW5mb3JtYXRpb24gb24gdGhlIGNsYXNzIGluIHRoZQogICAgICAgIjpyZWY6YGJpbmNvbmZpZy5iYmNsYXNzIDxyZWYtY2xhc3Nlcy1iaW5jb25maWc+YCIgc2VjdGlvbi4KIAotICAgOnRlcm06YEJQYAorICAgQlAKICAgICAgIFRoZSBiYXNlIHJlY2lwZSBuYW1lIGFuZCB2ZXJzaW9uIGJ1dCB3aXRob3V0IGFueSBzcGVjaWFsIHJlY2lwZSBuYW1lCiAgICAgICBzdWZmaXggKGkuZS4gYGAtbmF0aXZlYGAsIGBgbGliNjQtYGAsIGFuZCBzbyBmb3J0aCkuIGBgQlBgYCBpcwogICAgICAgY29tcHJpc2VkIG9mIHRoZSBmb2xsb3dpbmc6CkBAIC04MjQsNyArODI0LDcgQEAKIAogICAgICAgICAgJHtCUE59LSR7UFZ9CiAKLSAgIDp0ZXJtOmBCUE5gCisgICBCUE4KICAgICAgIFRoaXMgdmFyaWFibGUgaXMgYSB2ZXJzaW9uIG9mIHRoZSA6dGVybTpgUE5gIHZhcmlhYmxlIHdpdGgKICAgICAgIGNvbW1vbiBwcmVmaXhlcyBhbmQgc3VmZml4ZXMgcmVtb3ZlZCwgc3VjaCBhcyBgYG5hdGl2ZXNkay1gYCwKICAgICAgIGBgLWNyb3NzYGAsIGBgLW5hdGl2ZWBgLCBhbmQgbXVsdGlsaWIncyBgYGxpYjY0LWBgIGFuZCBgYGxpYjMyLWBgLgpAQCAtODMzLDczICs4MzMsNzMgQEAKICAgICAgIDp0ZXJtOmBTUEVDSUFMX1BLR1NVRkZJWGAgdmFyaWFibGVzLAogICAgICAgcmVzcGVjdGl2ZWx5LgogCi0gICA6dGVybTpgQlVHVFJBQ0tFUmAKKyAgIEJVR1RSQUNLRVIKICAgICAgIFNwZWNpZmllcyBhIFVSTCBmb3IgYW4gdXBzdHJlYW0gYnVnIHRyYWNraW5nIHdlYnNpdGUgZm9yIGEgcmVjaXBlLgogICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3QgdXNlIHRoaXMgdmFyaWFibGUuIFJhdGhlciwgdGhlCiAgICAgICB2YXJpYWJsZSBpcyBhIHVzZWZ1bCBwb2ludGVyIGluIGNhc2UgYSBidWcgaW4gdGhlIHNvZnR3YXJlIGJlaW5nCiAgICAgICBidWlsdCBuZWVkcyB0byBiZSBtYW51YWxseSByZXBvcnRlZC4KIAotICAgOnRlcm06YEJVSUxEX0FSQ0hgCisgICBCVUlMRF9BUkNICiAgICAgICBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbGQgaG9zdCAoZS5nLiBgYGk2ODZgYCkuIFRoZQogICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzZXRzIHRoZSB2YWx1ZSBvZiBgYEJVSUxEX0FSQ0hgYCBmcm9tIHRoZQogICAgICAgbWFjaGluZSBuYW1lIHJlcG9ydGVkIGJ5IHRoZSBgYHVuYW1lYGAgY29tbWFuZC4KIAotICAgOnRlcm06YEJVSUxEX0FTX0FSQ0hgCisgICBCVUlMRF9BU19BUkNICiAgICAgICBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhc3NlbWJsZXIgZmxhZ3MgZm9yIHRoZSBidWlsZAogICAgICAgaG9zdC4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG9mIGBgQlVJTERfQVNfQVJDSGBgIGlzIGVtcHR5LgogCi0gICA6dGVybTpgQlVJTERfQ0NfQVJDSGAKKyAgIEJVSUxEX0NDX0FSQ0gKICAgICAgIFNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBidWlsZAogICAgICAgaG9zdC4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG9mIGBgQlVJTERfQ0NfQVJDSGBgIGlzIGVtcHR5LgogCi0gICA6dGVybTpgQlVJTERfQ0NMRGAKKyAgIEJVSUxEX0NDTEQKICAgICAgIFNwZWNpZmllcyB0aGUgbGlua2VyIGNvbW1hbmQgdG8gYmUgdXNlZCBmb3IgdGhlIGJ1aWxkIGhvc3Qgd2hlbiB0aGUgQwogICAgICAgY29tcGlsZXIgaXMgYmVpbmcgdXNlZCBhcyB0aGUgbGlua2VyLiBCeSBkZWZhdWx0LCBgYEJVSUxEX0NDTERgYAogICAgICAgcG9pbnRzIHRvIEdDQyBhbmQgcGFzc2VzIGFzIGFyZ3VtZW50cyB0aGUgdmFsdWUgb2YKICAgICAgIDp0ZXJtOmBCVUlMRF9DQ19BUkNIYCwgYXNzdW1pbmcKICAgICAgIGBgQlVJTERfQ0NfQVJDSGBgIGlzIHNldC4KIAotICAgOnRlcm06YEJVSUxEX0NGTEFHU2AKKyAgIEJVSUxEX0NGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIGNvbXBpbGVyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZQogICAgICAgYnVpbGQgaG9zdC4gV2hlbiBidWlsZGluZyBpbiB0aGUgYGAtbmF0aXZlYGAgY29udGV4dCwKICAgICAgIDp0ZXJtOmBDRkxBR1NgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieQogICAgICAgZGVmYXVsdC4KIAotICAgOnRlcm06YEJVSUxEX0NQUEZMQUdTYAorICAgQlVJTERfQ1BQRkxBR1MKICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmVwcm9jZXNzb3IgKGkuZS4gdG8gYm90aCB0aGUgQwogICAgICAgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4gV2hlbgogICAgICAgYnVpbGRpbmcgaW4gdGhlIGBgLW5hdGl2ZWBgIGNvbnRleHQsIDp0ZXJtOmBDUFBGTEFHU2AKICAgICAgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgogCi0gICA6dGVybTpgQlVJTERfQ1hYRkxBR1NgCisgICBCVUlMRF9DWFhGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIgd2hlbiBidWlsZGluZyBmb3IgdGhlCiAgICAgICBidWlsZCBob3N0LiBXaGVuIGJ1aWxkaW5nIGluIHRoZSBgYC1uYXRpdmVgYCBjb250ZXh0LAogICAgICAgOnRlcm06YENYWEZMQUdTYCBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUKICAgICAgIGJ5IGRlZmF1bHQuCiAKLSAgIDp0ZXJtOmBCVUlMRF9GQ2AKKyAgIEJVSUxEX0ZDCiAgICAgICBTcGVjaWZpZXMgdGhlIEZvcnRyYW4gY29tcGlsZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIEJ5CiAgICAgICBkZWZhdWx0LCBgYEJVSUxEX0ZDYGAgcG9pbnRzIHRvIEdmb3J0cmFuIGFuZCBwYXNzZXMgYXMgYXJndW1lbnRzIHRoZQogICAgICAgdmFsdWUgb2YgOnRlcm06YEJVSUxEX0NDX0FSQ0hgLCBhc3N1bWluZwogICAgICAgYGBCVUlMRF9DQ19BUkNIYGAgaXMgc2V0LgogCi0gICA6dGVybTpgQlVJTERfTERgCisgICBCVUlMRF9MRAogICAgICAgU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIEJ5IGRlZmF1bHQsCiAgICAgICBgYEJVSUxEX0xEYGAgcG9pbnRzIHRvIHRoZSBHTlUgbGlua2VyIChsZCkgYW5kIHBhc3NlcyBhcyBhcmd1bWVudHMKICAgICAgIHRoZSB2YWx1ZSBvZiA6dGVybTpgQlVJTERfTERfQVJDSGAsIGFzc3VtaW5nCiAgICAgICBgYEJVSUxEX0xEX0FSQ0hgYCBpcyBzZXQuCiAKLSAgIDp0ZXJtOmBCVUlMRF9MRF9BUkNIYAorICAgQlVJTERfTERfQVJDSAogICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yIHRoZSBidWlsZCBob3N0LiBCeQogICAgICAgZGVmYXVsdCwgdGhlIHZhbHVlIG9mIGBgQlVJTERfTERfQVJDSGBgIGlzIGVtcHR5LgogCi0gICA6dGVybTpgQlVJTERfTERGTEFHU2AKKyAgIEJVSUxEX0xERkxBR1MKICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZAogICAgICAgaG9zdC4gV2hlbiBidWlsZGluZyBpbiB0aGUgYGAtbmF0aXZlYGAgY29udGV4dCwKICAgICAgIDp0ZXJtOmBMREZMQUdTYCBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUKICAgICAgIGJ5IGRlZmF1bHQuCiAKLSAgIDp0ZXJtOmBCVUlMRF9PUFRJTUlaQVRJT05gCisgICBCVUlMRF9PUFRJTUlaQVRJT04KICAgICAgIFNwZWNpZmllcyB0aGUgb3B0aW1pemF0aW9uIGZsYWdzIHBhc3NlZCB0byB0aGUgQyBjb21waWxlciB3aGVuCiAgICAgICBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3Qgb3IgdGhlIFNESy4gVGhlIGZsYWdzIGFyZSBwYXNzZWQgdGhyb3VnaAogICAgICAgdGhlIDp0ZXJtOmBCVUlMRF9DRkxBR1NgIGFuZApAQCAtOTA4LDI1ICs5MDgsMjUgQEAKICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBgYEJVSUxEX09QVElNSVpBVElPTmBgIHZhcmlhYmxlIGlzICItTzIKICAgICAgIC1waXBlIi4KIAotICAgOnRlcm06YEJVSUxEX09TYAorICAgQlVJTERfT1MKICAgICAgIFNwZWNpZmllcyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbiB1c2Ugb24gdGhlIGJ1aWxkIGhvc3QgKGUuZy4KICAgICAgICJsaW51eCIpLiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzZXRzIHRoZSB2YWx1ZSBvZgogICAgICAgYGBCVUlMRF9PU2BgIGZyb20gdGhlIE9TIHJlcG9ydGVkIGJ5IHRoZSBgYHVuYW1lYGAgY29tbWFuZCAtIHRoZQogICAgICAgZmlyc3Qgd29yZCwgY29udmVydGVkIHRvIGxvd2VyLWNhc2UgY2hhcmFjdGVycy4KIAotICAgOnRlcm06YEJVSUxEX1BSRUZJWGAKKyAgIEJVSUxEX1BSRUZJWAogICAgICAgVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IHVzZWQgZm9yIG5hdGl2ZSByZWNpcGVzLiBUaGUgT3BlbkVtYmVkZGVkCiAgICAgICBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgYGBCVUlMRF9QUkVGSVhgYCB2YWx1ZSB0byBzZXQgdGhlCiAgICAgICA6dGVybTpgVEFSR0VUX1BSRUZJWGAgd2hlbiBidWlsZGluZyBmb3IKICAgICAgIGBgbmF0aXZlYGAgcmVjaXBlcy4KIAotICAgOnRlcm06YEJVSUxEX1NUUklQYAorICAgQlVJTERfU1RSSVAKICAgICAgIFNwZWNpZmllcyB0aGUgY29tbWFuZCB0byBiZSB1c2VkIHRvIHN0cmlwIGRlYnVnZ2luZyBzeW1ib2xzIGZyb20KICAgICAgIGJpbmFyaWVzIHByb2R1Y2VkIGZvciB0aGUgYnVpbGQgaG9zdC4gQnkgZGVmYXVsdCwgYGBCVUlMRF9TVFJJUGBgCiAgICAgICBwb2ludHMgdG8KICAgICAgIGBgJHtgYFwgOnRlcm06YEJVSUxEX1BSRUZJWGBcIGBgfXN0cmlwYGAuCiAKLSAgIDp0ZXJtOmBCVUlMRF9TWVNgCisgICBCVUlMRF9TWVMKICAgICAgIFNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZwogICAgICAgc3lzdGVtLCB0byB1c2Ugd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QgKGkuZS4gd2hlbiBidWlsZGluZwogICAgICAgYGBuYXRpdmVgYCByZWNpcGVzKS4KQEAgLTkzNywxMSArOTM3LDExIEBACiAgICAgICA6dGVybTpgQlVJTERfT1NgLiBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZQogICAgICAgYGBCVUlMRF9TWVNgYCB2YXJpYWJsZSB5b3Vyc2VsZi4KIAotICAgOnRlcm06YEJVSUxEX1ZFTkRPUmAKKyAgIEJVSUxEX1ZFTkRPUgogICAgICAgU3BlY2lmaWVzIHRoZSB2ZW5kb3IgbmFtZSB0byB1c2Ugd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QuCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBhbiBlbXB0eSBzdHJpbmcgKCIiKS4KIAotICAgOnRlcm06YEJVSUxERElSYAorICAgQlVJTERESVIKICAgICAgIFBvaW50cyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIDp0ZXJtOmBCdWlsZCBEaXJlY3RvcnlgLgogICAgICAgWW91IGNhbiBkZWZpbmUgdGhpcyBkaXJlY3RvcnkgaW5kaXJlY3RseSB0aHJvdWdoIHRoZQogICAgICAgYGBgYGAgPCNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQ+YF9fIHNjcmlwdCBieSBwYXNzaW5nIGluIGEgQnVpbGQKQEAgLTk0OSw3ICs5NDksNyBAQAogICAgICAgbm90IHByb3ZpZGUgYSBCdWlsZCBEaXJlY3RvcnkgcGF0aCwgdGhlIGBgQlVJTERESVJgYCBkZWZhdWx0cyB0bwogICAgICAgYGBidWlsZGBgIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KIAotICAgOnRlcm06YEJVSUxESElTVE9SWV9DT01NSVRgCisgICBCVUlMREhJU1RPUllfQ09NTUlUCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YGJ1aWxkaGlzdG9yeSA8cmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5PmAKICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0byBjb21taXQgdGhlIGJ1aWxkCiAgICAgICBoaXN0b3J5IG91dHB1dCBpbiBhIGxvY2FsIEdpdCByZXBvc2l0b3J5LiBJZiBzZXQgdG8gIjEiLCB0aGlzIGxvY2FsCkBAIC05NjUsNyArOTY1LDcgQEAKIAogICAgICAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA/PSAiMCIKIAotICAgOnRlcm06YEJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SYAorICAgQlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1IKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgYnVpbGRoaXN0b3J5IDxyZWYtY2xhc3Nlcy1idWlsZGhpc3Rvcnk+YAogICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBhdXRob3IgdG8gdXNlIGZvciBlYWNoIEdpdCBjb21taXQuCiAgICAgICBJbiBvcmRlciBmb3IgdGhlIGBgQlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1JgYCB2YXJpYWJsZSB0byB3b3JrLCB0aGUKQEAgLTk4Miw3ICs5ODIsNyBAQAogCiAgICAgICAgICBCVUlMREhJU1RPUllfQ09NTUlUX0FVVEhPUiA/PSAiYnVpbGRoaXN0b3J5IDxidWlsZGhpc3RvcnlAJHtESVNUUk99PiIKIAotICAgOnRlcm06YEJVSUxESElTVE9SWV9ESVJgCisgICBCVUlMREhJU1RPUllfRElSCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YGJ1aWxkaGlzdG9yeSA8cmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5PmAKICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGJ1aWxkIGhpc3RvcnkKICAgICAgIGluZm9ybWF0aW9uIGlzIGtlcHQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgdmFyaWFibGUgd29ya3MsCkBAIC05OTMsNyArOTkzLDcgQEAKIAogICAgICAgICAgQlVJTERISVNUT1JZX0RJUiA/PSAiJHtUT1BESVJ9L2J1aWxkaGlzdG9yeSIKIAotICAgOnRlcm06YEJVSUxESElTVE9SWV9GRUFUVVJFU2AKKyAgIEJVSUxESElTVE9SWV9GRUFUVVJFUwogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmBidWlsZGhpc3RvcnkgPHJlZi1jbGFzc2VzLWJ1aWxkaGlzdG9yeT5gCiAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZXMgdG8gYmUKICAgICAgIGVuYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBidWlsZCBoaXN0b3J5IHdvcmtzLCBzZWUgdGhlCkBAIC0xMDIyLDcgKzEwMjIsNyBAQAogCiAgICAgICAgICBCVUlMREhJU1RPUllfRkVBVFVSRVMgPz0gImltYWdlIHBhY2thZ2Ugc2RrIgogCi0gICA6dGVybTpgQlVJTERISVNUT1JZX0lNQUdFX0ZJTEVTYAorICAgQlVJTERISVNUT1JZX0lNQUdFX0ZJTEVTCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YGJ1aWxkaGlzdG9yeSA8cmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5PmAKICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgcGF0aHMgdG8gZmlsZXMgY29waWVkIGZyb20KICAgICAgIHRoZSBpbWFnZSBjb250ZW50cyBpbnRvIHRoZSBidWlsZCBoaXN0b3J5IGRpcmVjdG9yeSB1bmRlciBhbgpAQCAtMTAzOSw3ICsxMDM5LDcgQEAKIAogICAgICAgICAgQlVJTERISVNUT1JZX0lNQUdFX0ZJTEVTID89ICIvZXRjL3Bhc3N3ZCAvZXRjL2dyb3VwIgogCi0gICA6dGVybTpgQlVJTERISVNUT1JZX1BVU0hfUkVQT2AKKyAgIEJVSUxESElTVE9SWV9QVVNIX1JFUE8KICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgYnVpbGRoaXN0b3J5IDxyZWYtY2xhc3Nlcy1idWlsZGhpc3Rvcnk+YAogICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgb3B0aW9uYWxseSBzcGVjaWZpZXMgYSByZW1vdGUgcmVwb3NpdG9yeSB0bwogICAgICAgd2hpY2ggYnVpbGQgaGlzdG9yeSBwdXNoZXMgR2l0IGNoYW5nZXMuIEluIG9yZGVyIGZvcgpAQCAtMTA1NywzOCArMTA1NywzOCBAQAogCiAgICAgICAgICBCVUlMREhJU1RPUllfUFVTSF9SRVBPID89ICIiCiAKLSAgIDp0ZXJtOmBCVUlMRFNES19DRkxBR1NgCisgICBCVUlMRFNES19DRkxBR1MKICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBjb21waWxlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUKICAgICAgIFNESy4gV2hlbiBidWlsZGluZyBpbiB0aGUgYGBuYXRpdmVzZGstYGAgY29udGV4dCwKICAgICAgIDp0ZXJtOmBDRkxBR1NgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieQogICAgICAgZGVmYXVsdC4KIAotICAgOnRlcm06YEJVSUxEU0RLX0NQUEZMQUdTYAorICAgQlVJTERTREtfQ1BQRkxBR1MKICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmUtcHJvY2Vzc29yIChpLmUuIHRvIGJvdGggdGhlCiAgICAgICBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykgd2hlbiBidWlsZGluZyBmb3IgdGhlIFNESy4gV2hlbiBidWlsZGluZyBpbgogICAgICAgdGhlIGBgbmF0aXZlc2RrLWBgIGNvbnRleHQsIDp0ZXJtOmBDUFBGTEFHU2AgaXMgc2V0CiAgICAgICB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgogCi0gICA6dGVybTpgQlVJTERTREtfQ1hYRkxBR1NgCisgICBCVUlMRFNES19DWFhGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIgd2hlbiBidWlsZGluZyBmb3IgdGhlCiAgICAgICBTREsuIFdoZW4gYnVpbGRpbmcgaW4gdGhlIGBgbmF0aXZlc2RrLWBgIGNvbnRleHQsCiAgICAgICA6dGVybTpgQ1hYRkxBR1NgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZQogICAgICAgYnkgZGVmYXVsdC4KIAotICAgOnRlcm06YEJVSUxEU0RLX0xERkxBR1NgCisgICBCVUlMRFNES19MREZMQUdTCiAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgU0RLLgogICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgYGBuYXRpdmVzZGstYGAgY29udGV4dCwKICAgICAgIDp0ZXJtOmBMREZMQUdTYCBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUKICAgICAgIGJ5IGRlZmF1bHQuCiAKLSAgIDp0ZXJtOmBCVUlMRFNUQVRTX0JBU0VgCisgICBCVUlMRFNUQVRTX0JBU0UKICAgICAgIFBvaW50cyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGJ1aWxkIHN0YXRpc3RpY3MKICAgICAgIHdoZW4geW91IHVzZSBhbmQgZW5hYmxlIHRoZQogICAgICAgOnJlZjpgYnVpbGRzdGF0cyA8cmVmLWNsYXNzZXMtYnVpbGRzdGF0cz5gIGNsYXNzLiBUaGUKICAgICAgIGBgQlVJTERTVEFUU19CQVNFYGAgZGlyZWN0b3J5IGRlZmF1bHRzIHRvCiAgICAgICBgYCR7YGBcIDp0ZXJtOmBUTVBESVJgXCBgYH0vYnVpbGRzdGF0cy9gYC4KIAotICAgOnRlcm06YEJVU1lCT1hfU1BMSVRfU1VJRGAKKyAgIEJVU1lCT1hfU1BMSVRfU1VJRAogICAgICAgRm9yIHRoZSBCdXN5Qm94IHJlY2lwZSwgc3BlY2lmaWVzIHdoZXRoZXIgdG8gc3BsaXQgdGhlIG91dHB1dAogICAgICAgZXhlY3V0YWJsZSBmaWxlIGludG8gdHdvIHBhcnRzOiBvbmUgZm9yIGZlYXR1cmVzIHRoYXQgcmVxdWlyZQogICAgICAgYGBzZXR1aWQgcm9vdGBgLCBhbmQgb25lIGZvciB0aGUgcmVtYWluaW5nIGZlYXR1cmVzIChpLmUuIHRob3NlIHRoYXQKQEAgLTEwOTgsMTUgKzEwOTgsMTUgQEAKICAgICAgIHNwbGl0dGluZyB0aGUgb3V0cHV0IGV4ZWN1dGFibGUgZmlsZS4gU2V0IHRoZSB2YXJpYWJsZSB0byAiMCIgdG8gZ2V0CiAgICAgICBhIHNpbmdsZSBvdXRwdXQgZXhlY3V0YWJsZSBmaWxlLgogCi0gICA6dGVybTpgQ0FDSEVgCisgICBDQUNIRQogICAgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgQml0QmFrZSB1c2VzIHRvIHN0b3JlIGEgY2FjaGUgb2YgdGhlCiAgICAgICA6dGVybTpgTWV0YWRhdGFgIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgcGFyc2VkIGV2ZXJ5IHRpbWUKICAgICAgIEJpdEJha2UgaXMgc3RhcnRlZC4KIAotICAgOnRlcm06YENDYAorICAgQ0MKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB1c2VkIHRvIHJ1biB0aGUgQyBjb21waWxlci4KIAotICAgOnRlcm06YENGTEFHU2AKKyAgIENGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIGNvbXBpbGVyLiBUaGlzIHZhcmlhYmxlIGlzCiAgICAgICBleHBvcnRlZCB0byBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgdGh1cyBtYWRlIHZpc2libGUgdG8gdGhlCiAgICAgICBzb2Z0d2FyZSBiZWluZyBidWlsdCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIHN0ZXAuCkBAIC0xMTIzLDcgKzExMjMsNyBAQAogICAgICAgLSAgOnRlcm06YEJVSUxEU0RLX0NGTEFHU2Agd2hlbiBidWlsZGluZyBmb3IKICAgICAgICAgIGFuIFNESyAoaS5lLiBgYG5hdGl2ZXNkay1gYCkKIAotICAgOnRlcm06YENMQVNTT1ZFUlJJREVgCisgICBDTEFTU09WRVJSSURFCiAgICAgICBBbiBpbnRlcm5hbCB2YXJpYWJsZSBzcGVjaWZ5aW5nIHRoZSBzcGVjaWFsIGNsYXNzIG92ZXJyaWRlIHRoYXQKICAgICAgIHNob3VsZCBjdXJyZW50bHkgYXBwbHkgKGUuZy4gImNsYXNzLXRhcmdldCIsICJjbGFzcy1uYXRpdmUiLCBhbmQgc28KICAgICAgIGZvcnRoKS4gVGhlIGNsYXNzZXMgdGhhdCB1c2UgdGhpcyB2YXJpYWJsZSAoZS5nLgpAQCAtMTE1OCwxNCArMTE1OCwxNCBAQAogICAgICAgdGhhdCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZgogICAgICAgOnRlcm06YE9WRVJSSURFU2AuCiAKLSAgIDp0ZXJtOmBDTEVBTkJST0tFTmAKKyAgIENMRUFOQlJPS0VOCiAgICAgICBJZiBzZXQgdG8gIjEiIHdpdGhpbiBhIHJlY2lwZSwgYGBDTEVBTkJST0tFTmBgIHNwZWNpZmllcyB0aGF0IHRoZQogICAgICAgYGBtYWtlIGNsZWFuYGAgY29tbWFuZCBkb2VzIG5vdCB3b3JrIGZvciB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQuCiAgICAgICBDb25zZXF1ZW50bHksIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdpbGwgbm90IHRyeSB0byBydW4KICAgICAgIGBgbWFrZSBjbGVhbmBgIGR1cmluZyB0aGUgOnJlZjpgcmVmLXRhc2tzLWNvbmZpZ3VyZWAKICAgICAgIHRhc2ssIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgogCi0gICA6dGVybTpgQ09NQklORURfRkVBVFVSRVNgCisgICBDT01CSU5FRF9GRUFUVVJFUwogICAgICAgUHJvdmlkZXMgYSBsaXN0IG9mIGhhcmR3YXJlIGZlYXR1cmVzIHRoYXQgYXJlIGVuYWJsZWQgaW4gYm90aAogICAgICAgOnRlcm06YE1BQ0hJTkVfRkVBVFVSRVNgIGFuZAogICAgICAgOnRlcm06YERJU1RST19GRUFUVVJFU2AuIFRoaXMgc2VsZWN0IGxpc3Qgb2YKQEAgLTExNzUsMTIgKzExNzUsMTIgQEAKICAgICAgIG9wdGlvbmFsIGF0IHRoZSBkaXN0cmlidXRpb24gbGV2ZWwsIGluIGNhc2UgdGhlIGhhcmR3YXJlIHN1cHBvcnRzCiAgICAgICBCbHVldG9vdGggYnV0IHlvdSBkbyBub3QgZXZlciBpbnRlbmQgdG8gdXNlIGl0LgogCi0gICA6dGVybTpgQ09NTU9OX0xJQ0VOU0VfRElSYAorICAgQ09NTU9OX0xJQ0VOU0VfRElSCiAgICAgICBQb2ludHMgdG8gYGBtZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlc2BgIGluIHRoZQogICAgICAgOnRlcm06YFNvdXJjZSBEaXJlY3RvcnlgLCB3aGljaCBpcyB3aGVyZSBnZW5lcmljIGxpY2Vuc2UKICAgICAgIGZpbGVzIHJlc2lkZS4KIAotICAgOnRlcm06YENPTVBBVElCTEVfSE9TVGAKKyAgIENPTVBBVElCTEVfSE9TVAogICAgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCByZXNvbHZlcyB0byBvbmUgb3IgbW9yZSBob3N0cyAod2hlbiB0aGUKICAgICAgIHJlY2lwZSBpcyBuYXRpdmUpIG9yIG9uZSBvciBtb3JlIHRhcmdldHMgKHdoZW4gdGhlIHJlY2lwZSBpcwogICAgICAgbm9uLW5hdGl2ZSkgd2l0aCB3aGljaCBhIHJlY2lwZSBpcyBjb21wYXRpYmxlLiBUaGUgcmVndWxhciBleHByZXNzaW9uCkBAIC0xMTkxLDcgKzExOTEsNyBAQAogICAgICAgcGFyc2luZyBzcGVlZCBzaW5jZSB0aGUgYnVpbGQgc3lzdGVtIHNraXBzIHBhcnNpbmcgcmVjaXBlcyBub3QKICAgICAgIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBzeXN0ZW0uCiAKLSAgIDp0ZXJtOmBDT01QQVRJQkxFX01BQ0hJTkVgCisgICBDT01QQVRJQkxFX01BQ0hJTkUKICAgICAgIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgcmVzb2x2ZXMgdG8gb25lIG9yIG1vcmUgdGFyZ2V0IG1hY2hpbmVzCiAgICAgICB3aXRoIHdoaWNoIGEgcmVjaXBlIGlzIGNvbXBhdGlibGUuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gaXMgbWF0Y2hlZAogICAgICAgYWdhaW5zdCA6dGVybTpgTUFDSElORU9WRVJSSURFU2AuIFlvdSBjYW4gdXNlCkBAIC0xMjAxLDcgKzEyMDEsNyBAQAogICAgICAgc3BlZWQgc2luY2UgdGhlIGJ1aWxkIHN5c3RlbSBza2lwcyBwYXJzaW5nIHJlY2lwZXMgbm90IGNvbXBhdGlibGUKICAgICAgIHdpdGggdGhlIGN1cnJlbnQgbWFjaGluZS4KIAotICAgOnRlcm06YENPTVBMRU1FTlRBUllfR0xPQmAKKyAgIENPTVBMRU1FTlRBUllfR0xPQgogICAgICAgRGVmaW5lcyB3aWxkY2FyZHMgdG8gbWF0Y2ggd2hlbiBpbnN0YWxsaW5nIGEgbGlzdCBvZiBjb21wbGVtZW50YXJ5CiAgICAgICBwYWNrYWdlcyBmb3IgYWxsIHRoZSBwYWNrYWdlcyBleHBsaWNpdGx5IChvciBpbXBsaWNpdGx5KSBpbnN0YWxsZWQgaW4KICAgICAgIGFuIGltYWdlLgpAQCAtMTIzMCw3ICsxMjMwLDcgQEAKIAogICAgICAgICAgQ09NUExFTUVOVEFSWV9HTE9CW2Rldi1wa2dzXSA9ICcqLWRldicKIAotICAgOnRlcm06YENPTVBPTkVOVFNfRElSYAorICAgQ09NUE9ORU5UU19ESVIKICAgICAgIFN0b3JlcyBzeXNyb290IGNvbXBvbmVudHMgZm9yIGVhY2ggcmVjaXBlLiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gdXNlcyBgYENPTVBPTkVOVFNfRElSYGAgd2hlbiBjb25zdHJ1Y3RpbmcgcmVjaXBlLXNwZWNpZmljCiAgICAgICBzeXNyb290cyBmb3Igb3RoZXIgcmVjaXBlcy4KQEAgLTEyNDAsMTIgKzEyNDAsMTIgQEAKICAgICAgIChpLmUuCiAgICAgICAiYGAke2BgXCA6dGVybTpgVE1QRElSYFwgYGB9L3N5c3Jvb3RzLWNvbXBvbmVudHNgYCIpLgogCi0gICA6dGVybTpgQ09ORl9WRVJTSU9OYAorICAgQ09ORl9WRVJTSU9OCiAgICAgICBUcmFja3MgdGhlIHZlcnNpb24gb2YgdGhlIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZSAoaS5lLgogICAgICAgYGBsb2NhbC5jb25mYGApLiBUaGUgdmFsdWUgZm9yIGBgQ09ORl9WRVJTSU9OYGAgaW5jcmVtZW50cyBlYWNoIHRpbWUKICAgICAgIGBgYnVpbGQvY29uZi9gYCBjb21wYXRpYmlsaXR5IGNoYW5nZXMuCiAKLSAgIDp0ZXJtOmBDT05GRklMRVNgCisgICBDT05GRklMRVMKICAgICAgIElkZW50aWZpZXMgZWRpdGFibGUgb3IgY29uZmlndXJhYmxlIGZpbGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwYWNrYWdlLgogICAgICAgSWYgdGhlIFBhY2thZ2UgTWFuYWdlbWVudCBTeXN0ZW0gKFBNUykgaXMgYmVpbmcgdXNlZCB0byB1cGRhdGUKICAgICAgIHBhY2thZ2VzIG9uIHRoZSB0YXJnZXQgc3lzdGVtLCBpdCBpcyBwb3NzaWJsZSB0aGF0IGNvbmZpZ3VyYXRpb24KQEAgLTEyOTEsNyArMTI5MSw3IEBACiAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5CiAgICAgICAgICAuCiAKLSAgIDp0ZXJtOmBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRWAKKyAgIENPTkZJR19JTklUUkFNRlNfU09VUkNFCiAgICAgICBJZGVudGlmaWVzIHRoZSBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpIHNvdXJjZSBmaWxlcy4gVGhlCiAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHJlY2VpdmVzIGFuZCB1c2VzIHRoaXMga2VybmVsIEtjb25maWcKICAgICAgIHZhcmlhYmxlIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiBCeSBkZWZhdWx0LCB0aGUgdmFyaWFibGUgaXMgc2V0CkBAIC0xMzEyLDE1ICsxMzEyLDE1IEBACiAgICAgICAiOnJlZjpgYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlYCIgc2VjdGlvbgogICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgQ09ORklHX1NJVEVgCisgICBDT05GSUdfU0lURQogICAgICAgQSBsaXN0IG9mIGZpbGVzIHRoYXQgY29udGFpbnMgYGBhdXRvY29uZmBgIHRlc3QgcmVzdWx0cyByZWxldmFudCB0bwogICAgICAgdGhlIGN1cnJlbnQgYnVpbGQuIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBieSB0aGUgQXV0b3Rvb2xzIHV0aWxpdGllcwogICAgICAgd2hlbiBydW5uaW5nIGBgY29uZmlndXJlYGAuCiAKLSAgIDp0ZXJtOmBDT05GSUdVUkVfRkxBR1NgCisgICBDT05GSUdVUkVfRkxBR1MKICAgICAgIFRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IgR05VIGNvbmZpZ3VyZS4KIAotICAgOnRlcm06YENPTkZMSUNUX0RJU1RST19GRUFUVVJFU2AKKyAgIENPTkZMSUNUX0RJU1RST19GRUFUVVJFUwogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQogICAgICAgOnJlZjpgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIDxyZWYtY2xhc3Nlcy1kaXN0cm9fZmVhdHVyZXNfY2hlY2s+YAogICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgaWRlbnRpZmllcyBkaXN0cmlidXRpb24gZmVhdHVyZXMgdGhhdCB3b3VsZCBiZQpAQCAtMTMyOSw3ICsxMzI5LDcgQEAKICAgICAgIGFwcGVhcnMgaW4gYGBESVNUUk9fRkVBVFVSRVNgYCB3aXRoaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgYW4KICAgICAgIGVycm9yIG9jY3VycyBhbmQgdGhlIGJ1aWxkIHN0b3BzLgogCi0gICA6dGVybTpgQ09QWUxFRlRfTElDRU5TRV9FWENMVURFYAorICAgQ09QWUxFRlRfTElDRU5TRV9FWENMVURFCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGxpY2Vuc2VzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgc291cmNlCiAgICAgICBhcmNoaXZlZCBieSB0aGUgOnJlZjpgYXJjaGl2ZXIgPHJlZi1jbGFzc2VzLWFyY2hpdmVyPmAgY2xhc3MuIEluCiAgICAgICBvdGhlciB3b3JkcywgaWYgYSBsaWNlbnNlIGluIGEgcmVjaXBlJ3MKQEAgLTEzNTAsNyArMTM1MCw3IEBACiAgICAgICA6cmVmOmBjb3B5bGVmdF9maWx0ZXIgPHJlZi1jbGFzc2VzLWNvcHlsZWZ0X2ZpbHRlcj5gIGNsYXNzLCB3aGljaAogICAgICAgaXMgaW5oZXJpdGVkIGJ5IHRoZSBgYGFyY2hpdmVyYGAgY2xhc3MuCiAKLSAgIDp0ZXJtOmBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREVgCisgICBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUKICAgICAgIEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbGljZW5zZXMgdG8gaW5jbHVkZSBpbiB0aGUgc291cmNlIGFyY2hpdmVkCiAgICAgICBieSB0aGUgOnJlZjpgYXJjaGl2ZXIgPHJlZi1jbGFzc2VzLWFyY2hpdmVyPmAgY2xhc3MuIEluIG90aGVyCiAgICAgICB3b3JkcywgaWYgYSBsaWNlbnNlIGluIGEgcmVjaXBlJ3MgOnRlcm06YExJQ0VOU0VgCkBAIC0xMzYyLDcgKzEzNjIsNyBAQAogICAgICAgaXMgaW5oZXJpdGVkIGJ5IHRoZSBgYGFyY2hpdmVyYGAgY2xhc3MuIFRoZSBkZWZhdWx0IHZhbHVlIGluY2x1ZGVzCiAgICAgICAiR1BMKiIsICJMR1BMKiIsIGFuZCAiQUdQTCoiLgogCi0gICA6dGVybTpgQ09QWUxFRlRfUE5fRVhDTFVERWAKKyAgIENPUFlMRUZUX1BOX0VYQ0xVREUKICAgICAgIEEgbGlzdCBvZiByZWNpcGVzIHRvIGV4Y2x1ZGUgaW4gdGhlIHNvdXJjZSBhcmNoaXZlZCBieSB0aGUKICAgICAgIDpyZWY6YGFyY2hpdmVyIDxyZWYtY2xhc3Nlcy1hcmNoaXZlcj5gIGNsYXNzLiBUaGUKICAgICAgIGBgQ09QWUxFRlRfUE5fRVhDTFVERWBgIHZhcmlhYmxlIG92ZXJyaWRlcyB0aGUgbGljZW5zZSBpbmNsdXNpb24gYW5kCkBAIC0xMzc2LDcgKzEzNzYsNyBAQAogICAgICAgOnJlZjpgY29weWxlZnRfZmlsdGVyIDxyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXI+YCBjbGFzcywgd2hpY2gKICAgICAgIGlzIGluaGVyaXRlZCBieSB0aGUgYGBhcmNoaXZlcmBgIGNsYXNzLgogCi0gICA6dGVybTpgQ09QWUxFRlRfUE5fSU5DTFVERWAKKyAgIENPUFlMRUZUX1BOX0lOQ0xVREUKICAgICAgIEEgbGlzdCBvZiByZWNpcGVzIHRvIGluY2x1ZGUgaW4gdGhlIHNvdXJjZSBhcmNoaXZlZCBieSB0aGUKICAgICAgIDpyZWY6YGFyY2hpdmVyIDxyZWYtY2xhc3Nlcy1hcmNoaXZlcj5gIGNsYXNzLiBUaGUKICAgICAgIGBgQ09QWUxFRlRfUE5fSU5DTFVERWBgIHZhcmlhYmxlIG92ZXJyaWRlcyB0aGUgbGljZW5zZSBpbmNsdXNpb24gYW5kCkBAIC0xMzkwLDcgKzEzOTAsNyBAQAogICAgICAgOnJlZjpgY29weWxlZnRfZmlsdGVyIDxyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXI+YCBjbGFzcywgd2hpY2gKICAgICAgIGlzIGluaGVyaXRlZCBieSB0aGUgYGBhcmNoaXZlcmBgIGNsYXNzLgogCi0gICA6dGVybTpgQ09QWUxFRlRfUkVDSVBFX1RZUEVTYAorICAgQ09QWUxFRlRfUkVDSVBFX1RZUEVTCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJlY2lwZSB0eXBlcyB0byBpbmNsdWRlIGluIHRoZSBzb3VyY2UKICAgICAgIGFyY2hpdmVkIGJ5IHRoZSA6cmVmOmBhcmNoaXZlciA8cmVmLWNsYXNzZXMtYXJjaGl2ZXI+YCBjbGFzcy4KICAgICAgIFJlY2lwZSB0eXBlcyBhcmUgYGB0YXJnZXRgYCwgYGBuYXRpdmVgYCwgYGBuYXRpdmVzZGtgYCwgYGBjcm9zc2BgLApAQCAtMTQwMCw3ICsxNDAwLDcgQEAKICAgICAgIGlzIHNldCBieSB0aGUgOnJlZjpgY29weWxlZnRfZmlsdGVyIDxyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXI+YAogICAgICAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBieSB0aGUgYGBhcmNoaXZlcmBgIGNsYXNzLgogCi0gICA6dGVybTpgQ09QWV9MSUNfRElSU2AKKyAgIENPUFlfTElDX0RJUlMKICAgICAgIElmIHNldCB0byAiMSIgYWxvbmcgd2l0aCB0aGUKICAgICAgIDp0ZXJtOmBDT1BZX0xJQ19NQU5JRkVTVGAgdmFyaWFibGUsIHRoZQogICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjb3BpZXMgaW50byB0aGUgaW1hZ2UgdGhlIGxpY2Vuc2UgZmlsZXMsCkBAIC0xNDIxLDcgKzE0MjEsNyBAQAogICAgICAgICAgIiBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHByb3ZpZGluZyBsaWNlbnNlIHRleHQuCiAKLSAgIDp0ZXJtOmBDT1BZX0xJQ19NQU5JRkVTVGAKKyAgIENPUFlfTElDX01BTklGRVNUCiAgICAgICBJZiBzZXQgdG8gIjEiLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjb3BpZXMgdGhlIGxpY2Vuc2UKICAgICAgIG1hbmlmZXN0IGZvciB0aGUgaW1hZ2UgdG8KICAgICAgIGBgL3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXMvbGljZW5zZS5tYW5pZmVzdGBgIHdpdGhpbiB0aGUgaW1hZ2UKQEAgLTE0NDAsNyArMTQ0MCw3IEBACiAgICAgICAgICAiIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgogICAgICAgICAgaW5mb3JtYXRpb24gb24gcHJvdmlkaW5nIGxpY2Vuc2UgdGV4dC4KIAotICAgOnRlcm06YENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTGAKKyAgIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTAogICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBpbWFnZS4gWW91IHNob3VsZAogICAgICAgb25seSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgYGBsb2NhbC5jb25mYGAgY29uZmlndXJhdGlvbiBmaWxlIGZvdW5kCiAgICAgICBpbiB0aGUgOnRlcm06YEJ1aWxkIERpcmVjdG9yeWAuCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQAogICAgICAgVGhpcyB2YXJpYWJsZSByZXBsYWNlcyBgYFBPS1lfRVhUUkFfSU5TVEFMTGBgLCB3aGljaCBpcyBubyBsb25nZXIKICAgICAgIHN1cHBvcnRlZC4KIAotICAgOnRlcm06YENPUkVCQVNFYAorICAgQ09SRUJBU0UKICAgICAgIFNwZWNpZmllcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgTWV0YWRhdGEKICAgICAgIGxheWVyIChpLmUuIGBgbWV0YWBgKS4KIApAQCAtMTQ1OSw3ICsxNDU5LDcgQEAKICAgICAgIHBvaW50cyB0byB0aGUgYGBwb2t5YGAgZm9sZGVyIGJlY2F1c2UgaXQgaXMgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YKICAgICAgIHRoZSBgYHBva3kvbWV0YWBgIGxheWVyLgogCi0gICA6dGVybTpgQ09SRUJBU0VfRklMRVNgCisgICBDT1JFQkFTRV9GSUxFUwogICAgICAgTGlzdHMgZmlsZXMgZnJvbSB0aGUgOnRlcm06YENPUkVCQVNFYCBkaXJlY3RvcnkgdGhhdAogICAgICAgc2hvdWxkIGJlIGNvcGllZCBvdGhlciB0aGFuIHRoZSBsYXllcnMgbGlzdGVkIGluIHRoZQogICAgICAgYGBiYmxheWVycy5jb25mYGAgZmlsZS4gVGhlIGBgQ09SRUJBU0VfRklMRVNgYCB2YXJpYWJsZSBleGlzdHMgZm9yCkBAIC0xNDcyLDEwICsxNDcyLDEwIEBACiAgICAgICBvZiBgYENPUkVCQVNFX0ZJTEVTYGAgaXMgdXNlZCBpbiBvcmRlciB0byBvbmx5IGNvcHkgdGhlIGZpbGVzIHRoYXQKICAgICAgIGFyZSBhY3R1YWxseSBuZWVkZWQuCiAKLSAgIDp0ZXJtOmBDUFBgCisgICBDUFAKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB1c2VkIHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuCiAKLSAgIDp0ZXJtOmBDUFBGTEFHU2AKKyAgIENQUEZMQUdTCiAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvciAoaS5lLiB0byBib3RoIHRoZQogICAgICAgQyBhbmQgdGhlIEMrKyBjb21waWxlcnMpLiBUaGlzIHZhcmlhYmxlIGlzIGV4cG9ydGVkIHRvIGFuIGVudmlyb25tZW50CiAgICAgICB2YXJpYWJsZSBhbmQgdGh1cyBtYWRlIHZpc2libGUgdG8gdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGR1cmluZyB0aGUKQEAgLTE0OTMsNyArMTQ5Myw3IEBACiAgICAgICAtICA6dGVybTpgQlVJTERTREtfQ1BQRkxBR1NgIHdoZW4gYnVpbGRpbmcKICAgICAgICAgIGZvciBhbiBTREsgKGkuZS4gYGBuYXRpdmVzZGstYGApCiAKLSAgIDp0ZXJtOmBDUk9TU19DT01QSUxFYAorICAgQ1JPU1NfQ09NUElMRQogICAgICAgVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IGZvciB0aGUgdGFyZ2V0IHRvb2xzLiBUaGUKICAgICAgIGBgQ1JPU1NfQ09NUElMRWBgIHZhcmlhYmxlIGlzIHRoZSBzYW1lIGFzIHRoZQogICAgICAgOnRlcm06YFRBUkdFVF9QUkVGSVhgIHZhcmlhYmxlLgpAQCAtMTUwNSwxNCArMTUwNSwxNCBAQAogICAgICAgICAgdmFyaWFibGUgb25seSBpbiBjZXJ0YWluIGNvbnRleHRzIChlLmcuIHdoZW4gYnVpbGRpbmcgZm9yIGtlcm5lbAogICAgICAgICAgYW5kIGtlcm5lbCBtb2R1bGUgcmVjaXBlcykuCiAKLSAgIDp0ZXJtOmBDVlNESVJgCisgICBDVlNESVIKICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZmlsZXMgY2hlY2tlZCBvdXQgdW5kZXIgdGhlIENWUyBzeXN0ZW0gYXJlCiAgICAgICBzdG9yZWQuCiAKLSAgIDp0ZXJtOmBDWFhgCisgICBDWFgKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB1c2VkIHRvIHJ1biB0aGUgQysrIGNvbXBpbGVyLgogCi0gICA6dGVybTpgQ1hYRkxBR1NgCisgICBDWFhGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIuIFRoaXMgdmFyaWFibGUgaXMKICAgICAgIGV4cG9ydGVkIHRvIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCB0aHVzIG1hZGUgdmlzaWJsZSB0byB0aGUKICAgICAgIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGR1cmluZyB0aGUgY29tcGlsYXRpb24gc3RlcC4KQEAgLTE1MjksNyArMTUyOSw3IEBACiAgICAgICAtICA6dGVybTpgQlVJTERTREtfQ1hYRkxBR1NgIHdoZW4gYnVpbGRpbmcKICAgICAgICAgIGZvciBhbiBTREsgKGkuZS4gYGBuYXRpdmVzZGstYGApCiAKLSAgIDp0ZXJtOmBEYAorICAgRAogICAgICAgVGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4gVGhlIGxvY2F0aW9uIGluIHRoZSA6dGVybTpgQnVpbGQgRGlyZWN0b3J5YAogICAgICAgd2hlcmUgY29tcG9uZW50cyBhcmUgaW5zdGFsbGVkIGJ5IHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLWluc3RhbGxgIHRhc2suIFRoaXMgbG9jYXRpb24gZGVmYXVsdHMKQEAgLTE1NDQsMTUgKzE1NDQsMTUgQEAKICAgICAgICAgIGZha2Vyb290CiAgICAgICAgICAuCiAKLSAgIDp0ZXJtOmBEQVRFYAorICAgREFURQogICAgICAgVGhlIGRhdGUgdGhlIGJ1aWxkIHdhcyBzdGFydGVkLiBEYXRlcyBhcHBlYXIgdXNpbmcgdGhlIHllYXIsIG1vbnRoLAogICAgICAgYW5kIGRheSAoWU1EKSBmb3JtYXQgKGUuZy4gIjIwMTUwMjA5IiBmb3IgRmVicnVhcnkgOXRoLCAyMDE1KS4KIAotICAgOnRlcm06YERBVEVUSU1FYAorICAgREFURVRJTUUKICAgICAgIFRoZSBkYXRlIGFuZCB0aW1lIG9uIHdoaWNoIHRoZSBjdXJyZW50IGJ1aWxkIHN0YXJ0ZWQuIFRoZSBmb3JtYXQgaXMKICAgICAgIHN1aXRhYmxlIGZvciB0aW1lc3RhbXBzLgogCi0gICA6dGVybTpgREVCSUFOX05PQVVUT05BTUVgCisgICBERUJJQU5fTk9BVVRPTkFNRQogICAgICAgV2hlbiB0aGUgOnJlZjpgZGViaWFuIDxyZWYtY2xhc3Nlcy1kZWJpYW4+YCBjbGFzcyBpcyBpbmhlcml0ZWQsCiAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvciwgYGBERUJJQU5fTk9BVVRPTkFNRWBgIHNwZWNpZmllcyBhCiAgICAgICBwYXJ0aWN1bGFyIHBhY2thZ2Ugc2hvdWxkIG5vdCBiZSByZW5hbWVkIGFjY29yZGluZyB0byBEZWJpYW4gbGlicmFyeQpAQCAtMTU2Miw3ICsxNTYyLDcgQEAKIAogICAgICAgICAgREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgogCi0gICA6dGVybTpgREVCSUFOTkFNRWAKKyAgIERFQklBTk5BTUUKICAgICAgIFdoZW4gdGhlIDpyZWY6YGRlYmlhbiA8cmVmLWNsYXNzZXMtZGViaWFuPmAgY2xhc3MgaXMgaW5oZXJpdGVkLAogICAgICAgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IsIGBgREVCSUFOTkFNRWBgIGFsbG93cyB5b3UgdG8gb3ZlcnJpZGUKICAgICAgIHRoZSBsaWJyYXJ5IG5hbWUgZm9yIGFuIGluZGl2aWR1YWwgcGFja2FnZS4gT3ZlcnJpZGluZyB0aGUgbGlicmFyeQpAQCAtMTU3MywxNiArMTU3MywxNiBAQAogCiAgICAgICAgICBERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKIAotICAgOnRlcm06YERFQlVHX0JVSUxEYAorICAgREVCVUdfQlVJTEQKICAgICAgIFNwZWNpZmllcyB0byBidWlsZCBwYWNrYWdlcyB3aXRoIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gVGhpcwogICAgICAgaW5mbHVlbmNlcyB0aGUgdmFsdWUgb2YgdGhlIGBgU0VMRUNURURfT1BUSU1JWkFUSU9OYGAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBERUJVR19PUFRJTUlaQVRJT05gCisgICBERUJVR19PUFRJTUlaQVRJT04KICAgICAgIFRoZSBvcHRpb25zIHRvIHBhc3MgaW4gYGBUQVJHRVRfQ0ZMQUdTYGAgYW5kIGBgQ0ZMQUdTYGAgd2hlbgogICAgICAgY29tcGlsaW5nIGEgc3lzdGVtIGZvciBkZWJ1Z2dpbmcuIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gIi1PCiAgICAgICAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAke0RFQlVHX0ZMQUdTfSAtcGlwZSIuCiAKLSAgIDp0ZXJtOmBERUZBVUxUX1BSRUZFUkVOQ0VgCisgICBERUZBVUxUX1BSRUZFUkVOQ0UKICAgICAgIFNwZWNpZmllcyBhIHdlYWsgYmlhcyBmb3IgcmVjaXBlIHNlbGVjdGlvbiBwcmlvcml0eS4KIAogICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIG9mIHRoaXMgaXMgdmFyaWFibGUgaXMgdG8gc2V0IGl0IHRvICItMSIgd2l0aGluCkBAIC0xNjAwLDcgKzE2MDAsNyBAQAogICAgICAgICAgaWYgdGhhdCB2YXJpYWJsZSBpcyBkaWZmZXJlbnQgYmV0d2VlbiB0d28gbGF5ZXJzIHRoYXQgY29udGFpbgogICAgICAgICAgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJlY2lwZS4KIAotICAgOnRlcm06YERFRkFVTFRUVU5FYAorICAgREVGQVVMVFRVTkUKICAgICAgIFRoZSBkZWZhdWx0IENQVSBhbmQgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5pbmdzIChpLmUuCiAgICAgICB0aGUgInR1bmUiKSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiBUaGUKICAgICAgIGBgREVGQVVMVFRVTkVgYCBoZWxwcyBkZWZpbmUKQEAgLTE2MTEsNyArMTYxMSw3IEBACiAgICAgICB0aGUgc2V0dGluZyB1c2luZyBhdmFpbGFibGUgdHVuZXMgYXMgZGVmaW5lZCB3aXRoCiAgICAgICA6dGVybTpgQVZBSUxUVU5FU2AuCiAKLSAgIDp0ZXJtOmBERVBFTkRTYAorICAgREVQRU5EUwogICAgICAgTGlzdHMgYSByZWNpcGUncyBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4gVGhlc2UgYXJlIGRlcGVuZGVuY2llcyBvbgogICAgICAgb3RoZXIgcmVjaXBlcyB3aG9zZSBjb250ZW50cyAoZS5nLiBoZWFkZXJzIGFuZCBzaGFyZWQgbGlicmFyaWVzKSBhcmUKICAgICAgIG5lZWRlZCBieSB0aGUgcmVjaXBlIGF0IGJ1aWxkIHRpbWUuCkBAIC0xNjg2LDcgKzE2ODYsNyBAQAogICAgICAgQml0QmFrZSBVc2VyIE1hbnVhbCBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0YXNrcyBhbmQKICAgICAgIGRlcGVuZGVuY2llcy4KIAotICAgOnRlcm06YERFUExPWV9ESVJgCisgICBERVBMT1lfRElSCiAgICAgICBQb2ludHMgdG8gdGhlIGdlbmVyYWwgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8KICAgICAgIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkKICAgICAgIHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLiBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAKICAgICAgICI6cmVmOmBzZGstZGV2LWVudmlyb25tZW50YCIgc2VjdGlvbnMgYWxsIGluIHRoZQogICAgICAgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogCi0gICA6dGVybTpgREVQTE9ZX0RJUl9ERUJgCisgICBERVBMT1lfRElSX0RFQgogICAgICAgUG9pbnRzIHRvIHRoZSBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZQogICAgICAgRGViaWFuIHBhY2thZ2VzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQKICAgICAgIHN5c3RlbS4gVGhpcyB2YXJpYWJsZSBhcHBsaWVzIG9ubHkgd2hlbgpAQCAtMTcyMyw3ICsxNzIzLDcgQEAKICAgICAgIEZlZWRzIDxwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudD5gIiBzZWN0aW9uCiAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogCi0gICA6dGVybTpgREVQTE9ZX0RJUl9JTUFHRWAKKyAgIERFUExPWV9ESVJfSU1BR0UKICAgICAgIFBvaW50cyB0byB0aGUgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gcGxhY2UKICAgICAgIGltYWdlcyBhbmQgb3RoZXIgYXNzb2NpYXRlZCBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUKICAgICAgIGRlcGxveWVkIG9udG8gdGhlIHRhcmdldCBtYWNoaW5lLiBUaGUgZGlyZWN0b3J5IGlzIG1hY2hpbmUtc3BlY2lmaWMKQEAgLTE3MzgsNyArMTczOCw3IEBACiAgICAgICAiOnJlZjpgc2RrLWRldi1lbnZpcm9ubWVudGAiIHNlY3Rpb25zIGJvdGggaW4KICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBERVBMT1lfRElSX0lQS2AKKyAgIERFUExPWV9ESVJfSVBLCiAgICAgICBQb2ludHMgdG8gdGhlIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlCiAgICAgICBJUEsgcGFja2FnZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uCiAgICAgICBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgb25seSB3aGVuCkBAIC0xNzU5LDcgKzE3NTksNyBAQAogICAgICAgRmVlZHMgPHBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50PmAiIHNlY3Rpb24KICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBERVBMT1lfRElSX1JQTWAKKyAgIERFUExPWV9ESVJfUlBNCiAgICAgICBQb2ludHMgdG8gdGhlIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlCiAgICAgICBSUE0gcGFja2FnZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uCiAgICAgICBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgb25seSB3aGVuCkBAIC0xNzgwLDcgKzE3ODAsNyBAQAogICAgICAgRmVlZHMgPHBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50PmAiIHNlY3Rpb24KICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBERVBMT1lfRElSX1RBUmAKKyAgIERFUExPWV9ESVJfVEFSCiAgICAgICBQb2ludHMgdG8gdGhlIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlCiAgICAgICB0YXJiYWxscyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4gVGhpcwogICAgICAgdmFyaWFibGUgYXBwbGllcyBvbmx5IHdoZW4KQEAgLTE4MDEsNyArMTgwMSw3IEBACiAgICAgICBGZWVkcyA8cGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQ+YCIgc2VjdGlvbgogICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KIAotICAgOnRlcm06YERFUExPWURJUmAKKyAgIERFUExPWURJUgogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmBkZXBsb3kgPHJlZi1jbGFzc2VzLWRlcGxveT5gIGNsYXNzLCB0aGUKICAgICAgIGBgREVQTE9ZRElSYGAgcG9pbnRzIHRvIGEgdGVtcG9yYXJ5IHdvcmsgYXJlYSBmb3IgZGVwbG95ZWQgZmlsZXMgdGhhdAogICAgICAgaXMgc2V0IGluIHRoZSBgYGRlcGxveWBgIGNsYXNzIGFzIGZvbGxvd3M6CkBAIC0xODE0LDEyICsxODE0LDEyIEBACiAgICAgICB0aGVtIGludG8gOnRlcm06YERFUExPWV9ESVJfSU1BR0VgCiAgICAgICBhZnRlcndhcmRzLgogCi0gICA6dGVybTpgREVTQ1JJUFRJT05gCisgICBERVNDUklQVElPTgogICAgICAgVGhlIHBhY2thZ2UgZGVzY3JpcHRpb24gdXNlZCBieSBwYWNrYWdlIG1hbmFnZXJzLiBJZiBub3Qgc2V0LAogICAgICAgYGBERVNDUklQVElPTmBgIHRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgOnRlcm06YFNVTU1BUllgCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YERJU1RST2AKKyAgIERJU1RSTwogICAgICAgVGhlIHNob3J0IG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBsb25nIG5hbWUKICAgICAgIG9mIHRoZSBkaXN0cmlidXRpb24sIHNlZSB0aGUgOnRlcm06YERJU1RST19OQU1FYAogICAgICAgdmFyaWFibGUuCkBAIC0xODUxLDEwICsxODUxLDEwIEBACiAgICAgICAgICBtZXRhL2NvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mCiAgICAgICAgICBhbHNvIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgogCi0gICA6dGVybTpgRElTVFJPX0NPREVOQU1FYAorICAgRElTVFJPX0NPREVOQU1FCiAgICAgICBTcGVjaWZpZXMgYSBjb2RlbmFtZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBiZWluZyBidWlsdC4KIAotICAgOnRlcm06YERJU1RST19FWFRSQV9SREVQRU5EU2AKKyAgIERJU1RST19FWFRSQV9SREVQRU5EUwogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBkaXN0cm8tc3BlY2lmaWMgcGFja2FnZXMgdG8gYWRkIHRvIGFsbCBpbWFnZXMuCiAgICAgICBUaGlzIHZhcmlhYmxlIHRha2VzIGFmZmVjdCB0aHJvdWdoIGBgcGFja2FnZWdyb3VwLWJhc2VgYCBzbyB0aGUKICAgICAgIHZhcmlhYmxlIG9ubHkgcmVhbGx5IGFwcGxpZXMgdG8gdGhlIG1vcmUgZnVsbC1mZWF0dXJlZCBpbWFnZXMgdGhhdApAQCAtMTg2MiwxMyArMTg2MiwxMyBAQAogICAgICAgZGlzdHJvIHBvbGljeSBvdXQgb2YgZ2VuZXJpYyBpbWFnZXMuIEFzIHdpdGggYWxsIG90aGVyIGRpc3RybwogICAgICAgdmFyaWFibGVzLCB5b3Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gdGhlIGRpc3RybyBgYC5jb25mYGAgZmlsZS4KIAotICAgOnRlcm06YERJU1RST19FWFRSQV9SUkVDT01NRU5EU2AKKyAgIERJU1RST19FWFRSQV9SUkVDT01NRU5EUwogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBkaXN0cm8tc3BlY2lmaWMgcGFja2FnZXMgdG8gYWRkIHRvIGFsbCBpbWFnZXMgaWYKICAgICAgIHRoZSBwYWNrYWdlcyBleGlzdC4gVGhlIHBhY2thZ2VzIG1pZ2h0IG5vdCBleGlzdCBvciBiZSBlbXB0eSAoZS5nLgogICAgICAga2VybmVsIG1vZHVsZXMpLiBUaGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgYnV0CiAgICAgICB5b3UgY2FuIHJlbW92ZSB0aGVtLgogCi0gICA6dGVybTpgRElTVFJPX0ZFQVRVUkVTYAorICAgRElTVFJPX0ZFQVRVUkVTCiAgICAgICBUaGUgc29mdHdhcmUgc3VwcG9ydCB5b3Ugd2FudCBpbiB5b3VyIGRpc3RyaWJ1dGlvbiBmb3IgdmFyaW91cwogICAgICAgZmVhdHVyZXMuIFlvdSBkZWZpbmUgeW91ciBkaXN0cmlidXRpb24gZmVhdHVyZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgpAQCAtMTg4Nyw3ICsxODg3LDcgQEAKICAgICAgIHByb3ZpZGUgd2l0aCB0aGlzIHZhcmlhYmxlLCBzZWUgdGhlICJgRGlzdHJvCiAgICAgICBGZWF0dXJlcyA8I3JlZi1mZWF0dXJlcy1kaXN0cm8+YF9fIiBzZWN0aW9uLgogCi0gICA6dGVybTpgRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMYAorICAgRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMCiAgICAgICBGZWF0dXJlcyB0byBiZSBhZGRlZCB0byBgYERJU1RST19GRUFUVVJFU2BgIGlmIG5vdCBhbHNvIHByZXNlbnQgaW4KICAgICAgIGBgRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURgYC4KIApAQCAtMTg5OCwxMyArMTg5OCwxMyBAQAogICAgICAgQmFja2ZpbGxpbmcgPCNyZWYtZmVhdHVyZXMtYmFja2ZpbGw+YF9fIiBzZWN0aW9uIGZvciBtb3JlCiAgICAgICBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YERJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEYAorICAgRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQKICAgICAgIEZlYXR1cmVzIGZyb20gYGBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExgYCB0aGF0IHNob3VsZCBub3QgYmUKICAgICAgIGJhY2tmaWxsZWQgKGkuZS4gYWRkZWQgdG8gYGBESVNUUk9fRkVBVFVSRVNgYCkgZHVyaW5nIHRoZSBidWlsZC4gU2VlCiAgICAgICB0aGUgImBGZWF0dXJlIEJhY2tmaWxsaW5nIDwjcmVmLWZlYXR1cmVzLWJhY2tmaWxsPmBfXyIgc2VjdGlvbiBmb3IKICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBESVNUUk9fRkVBVFVSRVNfREVGQVVMVGAKKyAgIERJU1RST19GRUFUVVJFU19ERUZBVUxUCiAgICAgICBBIGNvbnZlbmllbmNlIHZhcmlhYmxlIHRoYXQgZ2l2ZXMgeW91IHRoZSBkZWZhdWx0IGxpc3Qgb2YgZGlzdHJvCiAgICAgICBmZWF0dXJlcyB3aXRoIHRoZSBleGNlcHRpb24gb2YgYW55IGZlYXR1cmVzIHNwZWNpZmljIHRvIHRoZSBDIGxpYnJhcnkKICAgICAgIChgYGxpYmNgYCkuCkBAIC0xOTE4LDcgKzE5MTgsNyBAQAogCiAgICAgICAgICBESVNUUk9fRkVBVFVSRVMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9IG15ZmVhdHVyZSIKIAotICAgOnRlcm06YERJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFYAorICAgRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkUKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZmVhdHVyZXMgdGhhdCBpZiBwcmVzZW50IGluIHRoZSB0YXJnZXQKICAgICAgIDp0ZXJtOmBESVNUUk9fRkVBVFVSRVNgIHZhbHVlIHNob3VsZCBiZQogICAgICAgaW5jbHVkZWQgaW4gYGBESVNUUk9fRkVBVFVSRVNgYCB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSByZWNpcGVzLiBUaGlzCkBAIC0xOTI2LDcgKzE5MjYsNyBAQAogICAgICAgOnRlcm06YERJU1RST19GRUFUVVJFU19OQVRJVkVgCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YERJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFU0RLYAorICAgRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVTREsKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZmVhdHVyZXMgdGhhdCBpZiBwcmVzZW50IGluIHRoZSB0YXJnZXQKICAgICAgIDp0ZXJtOmBESVNUUk9fRkVBVFVSRVNgIHZhbHVlIHNob3VsZCBiZQogICAgICAgaW5jbHVkZWQgaW4gYGBESVNUUk9fRkVBVFVSRVNgYCB3aGVuIGJ1aWxkaW5nIG5hdGl2ZXNkayByZWNpcGVzLiBUaGlzCkBAIC0xOTM0LDcgKzE5MzQsNyBAQAogICAgICAgOnRlcm06YERJU1RST19GRUFUVVJFU19OQVRJVkVTREtgCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YERJU1RST19GRUFUVVJFU19OQVRJVkVgCisgICBESVNUUk9fRkVBVFVSRVNfTkFUSVZFCiAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZlYXR1cmVzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluCiAgICAgICA6dGVybTpgRElTVFJPX0ZFQVRVUkVTYCB3aGVuIGJ1aWxkaW5nIG5hdGl2ZQogICAgICAgcmVjaXBlcy4gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIGFkZGl0aW9uIHRvIHRoZSBmZWF0dXJlcyBmaWx0ZXJlZApAQCAtMTk0Miw3ICsxOTQyLDcgQEAKICAgICAgIDp0ZXJtOmBESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRWAKICAgICAgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgRElTVFJPX0ZFQVRVUkVTX05BVElWRVNES2AKKyAgIERJU1RST19GRUFUVVJFU19OQVRJVkVTREsKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZmVhdHVyZXMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4KICAgICAgIDp0ZXJtOmBESVNUUk9fRkVBVFVSRVNgIHdoZW4gYnVpbGRpbmcKICAgICAgIG5hdGl2ZXNkayByZWNpcGVzLiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gYWRkaXRpb24gdG8gdGhlIGZlYXR1cmVzCkBAIC0xOTUwLDcgKzE5NTAsNyBAQAogICAgICAgOnRlcm06YERJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFU0RLYAogICAgICAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBESVNUUk9fTkFNRWAKKyAgIERJU1RST19OQU1FCiAgICAgICBUaGUgbG9uZyBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24uIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgc2hvcnQgbmFtZQogICAgICAgb2YgdGhlIGRpc3RyaWJ1dGlvbiwgc2VlIHRoZSA6dGVybTpgRElTVFJPYCB2YXJpYWJsZS4KIApAQCAtMTk4MCwxMCArMTk4MCwxMCBAQAogICAgICAgICAgbWV0YS9jb25mL2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZgogICAgICAgICAgYWxzbyBpbiB0aGUgU291cmNlIERpcmVjdG9yeS4KIAotICAgOnRlcm06YERJU1RST19WRVJTSU9OYAorICAgRElTVFJPX1ZFUlNJT04KICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSBkaXN0cmlidXRpb24uCiAKLSAgIDp0ZXJtOmBESVNUUk9PVkVSUklERVNgCisgICBESVNUUk9PVkVSUklERVMKICAgICAgIEEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2Ygb3ZlcnJpZGVzIHNwZWNpZmljIHRvIHRoZSBjdXJyZW50CiAgICAgICBkaXN0cmlidXRpb24uIEJ5IGRlZmF1bHQsIHRoaXMgbGlzdCBpbmNsdWRlcyB0aGUgdmFsdWUgb2YKICAgICAgIDp0ZXJtOmBESVNUUk9gLgpAQCAtMTk5NSw3ICsxOTk1LDcgQEAKICAgICAgIGlzIGluY2x1ZGVkIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mCiAgICAgICA6dGVybTpgT1ZFUlJJREVTYC4KIAotICAgOnRlcm06YERMX0RJUmAKKyAgIERMX0RJUgogICAgICAgVGhlIGNlbnRyYWwgZG93bmxvYWQgZGlyZWN0b3J5IHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc3RvcmUKICAgICAgIGRvd25sb2Fkcy4gQnkgZGVmYXVsdCwgYGBETF9ESVJgYCBnZXRzIGZpbGVzIHN1aXRhYmxlIGZvciBtaXJyb3JpbmcKICAgICAgIGZvciBldmVyeXRoaW5nIGV4Y2VwdCBHaXQgcmVwb3NpdG9yaWVzLiBJZiB5b3Ugd2FudCB0YXJiYWxscyBvZiBHaXQKQEAgLTIwMzQsNyArMjAzNCw3IEBACiAgICAgICAiOnlvY3RvX3dpa2k6YFdvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eSA8L3dpa2kvV29ya2luZ19CZWhpbmRfYV9OZXR3b3JrX1Byb3h5PmAiCiAgICAgICBXaWtpIHBhZ2UuCiAKLSAgIDp0ZXJtOmBET0NfQ09NUFJFU1NgCisgICBET0NfQ09NUFJFU1MKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgY29tcHJlc3NfZG9jIDxyZWYtY2xhc3Nlcy1jb21wcmVzc19kb2M+YAogICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc2V0cyB0aGUgY29tcHJlc3Npb24gcG9saWN5IHVzZWQgd2hlbiB0aGUKICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY29tcHJlc3NlcyBtYW4gcGFnZXMgYW5kIGluZm8gcGFnZXMuIEJ5CkBAIC0yMDQ0LDcgKzIwNDQsNyBAQAogICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHBvbGljaWVzIGFuZCBvbiBob3cgdG8gdXNlIHRoaXMgdmFyaWFibGUsIHNlZSB0aGUKICAgICAgIGNvbW1lbnRzIGluIHRoZSBgYG1ldGEvY2xhc3Nlcy9jb21wcmVzc19kb2MuYmJjbGFzc2BgIGZpbGUuCiAKLSAgIDp0ZXJtOmBFRklfUFJPVklERVJgCisgICBFRklfUFJPVklERVIKICAgICAgIFdoZW4gYnVpbGRpbmcgYm9vdGFibGUgaW1hZ2VzIChpLmUuIHdoZXJlIGBgaGRkaW1nYGAsIGBgaXNvYGAsIG9yCiAgICAgICBgYHdpYy52bWRrYGAgaXMgaW4gOnRlcm06YElNQUdFX0ZTVFlQRVNgKSwgdGhlCiAgICAgICBgYEVGSV9QUk9WSURFUmBgIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgRUZJIGJvb3Rsb2FkZXIgdG8gdXNlLiBUaGUKQEAgLTIwNTQsMTIgKzIwNTQsMTIgQEAKICAgICAgIDpyZWY6YGltYWdlLWxpdmUgPHJlZi1jbGFzc2VzLWltYWdlLWxpdmU+YCBjbGFzc2VzIGZvciBtb3JlCiAgICAgICBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YEVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT05gCisgICBFTkFCTEVfQklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OCiAgICAgICBWYXJpYWJsZSB0aGF0IGNvbnRyb2xzIHdoaWNoIGxvY2FsZXMgZm9yIGBgZ2xpYmNgYCBhcmUgZ2VuZXJhdGVkCiAgICAgICBkdXJpbmcgdGhlIGJ1aWxkICh1c2VmdWwgaWYgdGhlIHRhcmdldCBkZXZpY2UgaGFzIDY0TWJ5dGVzIG9mIFJBTSBvcgogICAgICAgbGVzcykuCiAKLSAgIDp0ZXJtOmBFUlJfUkVQT1JUX0RJUmAKKyAgIEVSUl9SRVBPUlRfRElSCiAgICAgICBXaGVuIHVzZWQgd2l0aCB0aGUgOnJlZjpgcmVwb3J0LWVycm9yIDxyZWYtY2xhc3Nlcy1yZXBvcnQtZXJyb3I+YAogICAgICAgY2xhc3MsIHNwZWNpZmllcyB0aGUgcGF0aCB1c2VkIGZvciBzdG9yaW5nIHRoZSBkZWJ1ZyBmaWxlcyBjcmVhdGVkIGJ5CiAgICAgICB0aGUgOnJlZjpgZXJyb3IgcmVwb3J0aW5nCkBAIC0yMDc1LDE0ICsyMDc1LDE0IEBACiAKICAgICAgICAgIEVSUl9SRVBPUlRfRElSID0gInBhdGgiCiAKLSAgIDp0ZXJtOmBFUlJPUl9RQWAKKyAgIEVSUk9SX1FBCiAgICAgICBTcGVjaWZpZXMgdGhlIHF1YWxpdHkgYXNzdXJhbmNlIGNoZWNrcyB3aG9zZSBmYWlsdXJlcyBhcmUgcmVwb3J0ZWQgYXMKICAgICAgIGVycm9ycyBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4gWW91IHNldCB0aGlzIHZhcmlhYmxlIGluCiAgICAgICB5b3VyIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUuIEZvciBhIGxpc3Qgb2YgdGhlIGNoZWNrcyB5b3UKICAgICAgIGNhbiBjb250cm9sIHdpdGggdGhpcyB2YXJpYWJsZSwgc2VlIHRoZQogICAgICAgIjpyZWY6YGluc2FuZS5iYmNsYXNzIDxyZWYtY2xhc3Nlcy1pbnNhbmU+YCIgc2VjdGlvbi4KIAotICAgOnRlcm06YEVYQ0xVREVfRlJPTV9TSExJQlNgCisgICBFWENMVURFX0ZST01fU0hMSUJTCiAgICAgICBUcmlnZ2VycyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSdzIHNoYXJlZCBsaWJyYXJpZXMgcmVzb2x2ZXIgdG8KICAgICAgIGV4Y2x1ZGUgYW4gZW50aXJlIHBhY2thZ2Ugd2hlbiBzY2FubmluZyBmb3Igc2hhcmVkIGxpYnJhcmllcy4KIApAQCAtMjEwNiw3ICsyMTA2LDcgQEAKIAogICAgICAgICAgRVhDTFVERV9GUk9NX1NITElCUyA9ICIxIgogCi0gICA6dGVybTpgRVhDTFVERV9GUk9NX1dPUkxEYAorICAgRVhDTFVERV9GUk9NX1dPUkxECiAgICAgICBEaXJlY3RzIEJpdEJha2UgdG8gZXhjbHVkZSBhIHJlY2lwZSBmcm9tIHdvcmxkIGJ1aWxkcyAoaS5lLgogICAgICAgYGBiaXRiYWtlIHdvcmxkYGApLiBEdXJpbmcgd29ybGQgYnVpbGRzLCBCaXRCYWtlIGxvY2F0ZXMsIHBhcnNlcyBhbmQKICAgICAgIGJ1aWxkcyBhbGwgcmVjaXBlcyBmb3VuZCBpbiBldmVyeSBsYXllciBleHBvc2VkIGluIHRoZQpAQCAtMjEyNSw3ICsyMTI1LDcgQEAKICAgICAgICAgIG9ubHkgZW5zdXJlcyB0aGF0IHRoZSByZWNpcGUgaXMgbm90IGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIGxpc3QKICAgICAgICAgIG9mIGJ1aWxkIHRhcmdldHMgaW4gYSB3b3JsZCBidWlsZC4KIAotICAgOnRlcm06YEVYVEVORFBFYAorICAgRVhURU5EUEUKICAgICAgIFVzZWQgd2l0aCBmaWxlIGFuZCBwYXRobmFtZXMgdG8gY3JlYXRlIGEgcHJlZml4IGZvciBhIHJlY2lwZSdzCiAgICAgICB2ZXJzaW9uIGJhc2VkIG9uIHRoZSByZWNpcGUncyA6dGVybTpgUEVgIHZhbHVlLiBJZiBgYFBFYGAKICAgICAgIGlzIHNldCBhbmQgZ3JlYXRlciB0aGFuIHplcm8gZm9yIGEgcmVjaXBlLCBgYEVYVEVORFBFYGAgYmVjb21lcyB0aGF0CkBAIC0yMTM1LDcgKzIxMzUsNyBAQAogCiAgICAgICBTZWUgdGhlIDp0ZXJtOmBTVEFNUGAgdmFyaWFibGUgZm9yIGFuIGV4YW1wbGUuCiAKLSAgIDp0ZXJtOmBFWFRFTkRQS0dWYAorICAgRVhURU5EUEtHVgogICAgICAgVGhlIGZ1bGwgcGFja2FnZSB2ZXJzaW9uIHNwZWNpZmljYXRpb24gYXMgaXQgYXBwZWFycyBvbiB0aGUgZmluYWwKICAgICAgIHBhY2thZ2VzIHByb2R1Y2VkIGJ5IGEgcmVjaXBlLiBUaGUgdmFyaWFibGUncyB2YWx1ZSBpcyBub3JtYWxseSB1c2VkCiAgICAgICB0byBmaXggYSBydW50aW1lIGRlcGVuZGVuY3kgdG8gdGhlIGV4YWN0IHNhbWUgdmVyc2lvbiBvZiBhbm90aGVyCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQAogICAgICAgVGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBhcmUgaW50ZW5kZWQgdG8gZm9yY2UgdGhlIHBhY2thZ2UKICAgICAgIG1hbmFnZXIgdG8gdXBncmFkZSB0aGVzZSB0eXBlcyBvZiBwYWNrYWdlcyBpbiBsb2NrLXN0ZXAuCiAKLSAgIDp0ZXJtOmBFWFRFUk5BTF9LRVJORUxfVE9PTFNgCisgICBFWFRFUk5BTF9LRVJORUxfVE9PTFMKICAgICAgIFdoZW4gc2V0LCB0aGUgYGBFWFRFUk5BTF9LRVJORUxfVE9PTFNgYCB2YXJpYWJsZSBpbmRpY2F0ZXMgdGhhdCB0aGVzZQogICAgICAgdG9vbHMgYXJlIG5vdCBpbiB0aGUgc291cmNlIHRyZWUuCiAKQEAgLTIxNTgsNyArMjE1OCw3IEBACiAgICAgICA6cmVmOmBrZXJuZWwteW9jdG8gPHJlZi1jbGFzc2VzLWtlcm5lbC15b2N0bz5gIGNsYXNzIGluCiAgICAgICBgYG1ldGEvY2xhc3Nlc2BgIHRvIHNlZSBob3cgdGhlIHZhcmlhYmxlIGlzIHVzZWQuCiAKLSAgIDp0ZXJtOmBFWFRFUk5BTFNSQ2AKKyAgIEVYVEVSTkFMU1JDCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YGV4dGVybmFsc3JjIDxyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYz5gCiAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIHNvdXJjZSB0cmVlLCB3aGljaCBpcyBvdXRzaWRlIG9mCiAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4gV2hlbiBzZXQsIHRoaXMgdmFyaWFibGUgc2V0cyB0aGUKQEAgLTIxNzEsNyArMjE3MSw3IEBACiAgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpidWlsZGluZyBzb2Z0d2FyZSBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZWAiCiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YEVYVEVSTkFMU1JDX0JVSUxEYAorICAgRVhURVJOQUxTUkNfQlVJTEQKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgZXh0ZXJuYWxzcmMgPHJlZi1jbGFzc2VzLWV4dGVybmFsc3JjPmAKICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSByZWNpcGUncwogICAgICAgc291cmNlIGNvZGUgaXMgYnVpbHQsIHdoaWNoIGlzIG91dHNpZGUgb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZApAQCAtMjE4NSw3ICsyMTg1LDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOmJ1aWxkaW5nIHNvZnR3YXJlIGZyb20gYW4gZXh0ZXJuYWwgc291cmNlYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgRVhUUkFfQVVUT1JFQ09ORmAKKyAgIEVYVFJBX0FVVE9SRUNPTkYKICAgICAgIEZvciByZWNpcGVzIGluaGVyaXRpbmcgdGhlIDpyZWY6YGF1dG90b29scyA8cmVmLWNsYXNzZXMtYXV0b3Rvb2xzPmAKICAgICAgIGNsYXNzLCB5b3UgY2FuIHVzZSBgYEVYVFJBX0FVVE9SRUNPTkZgYCB0byBzcGVjaWZ5IGV4dHJhIG9wdGlvbnMgdG8KICAgICAgIHBhc3MgdG8gdGhlIGBgYXV0b3JlY29uZmBgIGNvbW1hbmQgdGhhdCBpcyBleGVjdXRlZCBkdXJpbmcgdGhlCkBAIC0yMTkzLDcgKzIxOTMsNyBAQAogCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiLS1leGNsdWRlPWF1dG9wb2ludCIuCiAKLSAgIDp0ZXJtOmBFWFRSQV9JTUFHRV9GRUFUVVJFU2AKKyAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTCiAgICAgICBBIGxpc3Qgb2YgYWRkaXRpb25hbCBmZWF0dXJlcyB0byBpbmNsdWRlIGluIGFuIGltYWdlLiBXaGVuIGxpc3RpbmcKICAgICAgIG1vcmUgdGhhbiBvbmUgZmVhdHVyZSwgc2VwYXJhdGUgdGhlbSB3aXRoIGEgc3BhY2UuCiAKQEAgLTIyMzcsNyArMjIzNyw3IEBACiAgICAgICB2YXJpYWJsZSwgc2VlIHRoZSAiOnJlZjpgdXNpbmdwb2t5LWV4dGVuZC1jdXN0b21pbWFnZS1pbWFnZWZlYXR1cmVzYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgRVhUUkFfSU1BR0VDTURgCisgICBFWFRSQV9JTUFHRUNNRAogICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGltYWdlIGNyZWF0aW9uIGNvbW1hbmQgdGhhdCBoYXMKICAgICAgIGJlZW4gc3BlY2lmaWVkIGluIDp0ZXJtOmBJTUFHRV9DTURgLiBXaGVuIHNldHRpbmcKICAgICAgIHRoaXMgdmFyaWFibGUsIHVzZSBhbiBvdmVycmlkZSBmb3IgdGhlIGFzc29jaWF0ZWQgaW1hZ2UgdHlwZS4gSGVyZSBpcwpAQCAtMjI0Niw3ICsyMjQ2LDcgQEAKIAogICAgICAgICAgRVhUUkFfSU1BR0VDTURfZXh0MyA/PSAiLWkgNDA5NiIKIAotICAgOnRlcm06YEVYVFJBX0lNQUdFREVQRU5EU2AKKyAgIEVYVFJBX0lNQUdFREVQRU5EUwogICAgICAgQSBsaXN0IG9mIHJlY2lwZXMgdG8gYnVpbGQgdGhhdCBkbyBub3QgcHJvdmlkZSBwYWNrYWdlcyBmb3IKICAgICAgIGluc3RhbGxpbmcgaW50byB0aGUgcm9vdCBmaWxlc3lzdGVtLgogCkBAIC0yMjYxLDcgKzIyNjEsNyBAQAogICAgICAgICAgXCpSREVQRU5EUyBhbmQgXCpSUkVDT01NRU5EUwogICAgICAgICAgdmFyaWFibGVzLgogCi0gICA6dGVybTpgRVhUUkFOQVRJVkVQQVRIYAorICAgRVhUUkFOQVRJVkVQQVRICiAgICAgICBBIGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMgb2YKICAgICAgIGBgJHtgYFwgOnRlcm06YFNUQUdJTkdfQklORElSX05BVElWRWBcIGBgfWBgCiAgICAgICBhZGRlZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYFBBVEhgYC4gQXMgYW4KQEAgLTIyNzIsMTYgKzIyNzIsMTYgQEAKIAogICAgICAgICAgRVhUUkFOQVRJVkVQQVRIID0gImZvbyBiYXIiCiAKLSAgIDp0ZXJtOmBFWFRSQV9PRUNNQUtFYAorICAgRVhUUkFfT0VDTUFLRQogICAgICAgQWRkaXRpb25hbCBgQ01ha2UgPGh0dHBzOi8vY21ha2Uub3JnL292ZXJ2aWV3Lz5gX18gb3B0aW9ucy4gU2VlIHRoZQogICAgICAgOnJlZjpgY21ha2UgPHJlZi1jbGFzc2VzLWNtYWtlPmAgY2xhc3MgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBFWFRSQV9PRUNPTkZgCisgICBFWFRSQV9PRUNPTkYKICAgICAgIEFkZGl0aW9uYWwgYGBjb25maWd1cmVgYCBzY3JpcHQgb3B0aW9ucy4gU2VlCiAgICAgICA6dGVybTpgUEFDS0FHRUNPTkZJR19DT05GQVJHU2AgZm9yCiAgICAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHBhc3NpbmcgY29uZmlndXJlIHNjcmlwdCBvcHRpb25zLgogCi0gICA6dGVybTpgRVhUUkFfT0VNQUtFYAorICAgRVhUUkFfT0VNQUtFCiAgICAgICBBZGRpdGlvbmFsIEdOVSBgYG1ha2VgYCBvcHRpb25zLgogCiAgICAgICBCZWNhdXNlIHRoZSBgYEVYVFJBX09FTUFLRWBgIGRlZmF1bHRzIHRvICIiLCB5b3UgbmVlZCB0byBzZXQgdGhlCkBAIC0yMjkxLDEyICsyMjkxLDEyIEBACiAgICAgICA6dGVybTpgUEFSQUxMRUxfTUFLRUlOU1RgIGFsc28gbWFrZSB1c2Ugb2YKICAgICAgIGBgRVhUUkFfT0VNQUtFYGAgdG8gcGFzcyB0aGUgcmVxdWlyZWQgZmxhZ3MuCiAKLSAgIDp0ZXJtOmBFWFRSQV9PRVNDT05TYAorICAgRVhUUkFfT0VTQ09OUwogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmBzY29ucyA8cmVmLWNsYXNzZXMtc2NvbnM+YCBjbGFzcywgdGhpcwogICAgICAgdmFyaWFibGUgc3BlY2lmaWVzIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHlvdSB3YW50IHRvIHBhc3MKICAgICAgIHRvIHRoZSBgYHNjb25zYGAgY29tbWFuZCBsaW5lLgogCi0gICA6dGVybTpgRVhUUkFfVVNFUlNfUEFSQU1TYAorICAgRVhUUkFfVVNFUlNfUEFSQU1TCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YGV4dHJhdXNlcnMgPHJlZi1jbGFzc2VzLWV4dHJhdXNlcnM+YAogICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgcHJvdmlkZXMgaW1hZ2UgbGV2ZWwgdXNlciBhbmQgZ3JvdXAgb3BlcmF0aW9ucy4KICAgICAgIFRoaXMgaXMgYSBtb3JlIGdsb2JhbCBtZXRob2Qgb2YgcHJvdmlkaW5nIHVzZXIgYW5kIGdyb3VwCkBAIC0yMzE4LDcgKzIzMTgsNyBAQAogICAgICAgICAgIyB1c2VybW9kIC1zIC9iaW4vc2ggdGVzdGVyOyBcCiAgICAgICAgICAjICIKIAotICAgOnRlcm06YEZFQVRVUkVfUEFDS0FHRVNgCisgICBGRUFUVVJFX1BBQ0tBR0VTCiAgICAgICBEZWZpbmVzIG9uZSBvciBtb3JlIHBhY2thZ2VzIHRvIGluY2x1ZGUgaW4gYW4gaW1hZ2Ugd2hlbiBhIHNwZWNpZmljCiAgICAgICBpdGVtIGlzIGluY2x1ZGVkIGluIDp0ZXJtOmBJTUFHRV9GRUFUVVJFU2AuCiAgICAgICBXaGVuIHNldHRpbmcgdGhlIHZhbHVlLCBgYEZFQVRVUkVfUEFDS0FHRVNgYCBzaG91bGQgaGF2ZSB0aGUgbmFtZSBvZgpAQCAtMjM0MCw3ICsyMzQwLDcgQEAKICAgICAgICAgIHZhcmlhYmxlIHdpdGggcGFja2FnZSBncm91cHMsIHdoaWNoIGFyZSBkaXNjdXNzZWQgZWxzZXdoZXJlIGluIHRoZQogICAgICAgICAgZG9jdW1lbnRhdGlvbi4KIAotICAgOnRlcm06YEZFRURfREVQTE9ZRElSX0JBU0VfVVJJYAorICAgRkVFRF9ERVBMT1lESVJfQkFTRV9VUkkKICAgICAgIFBvaW50cyB0byB0aGUgYmFzZSBVUkwgb2YgdGhlIHNlcnZlciBhbmQgbG9jYXRpb24gd2l0aGluIHRoZQogICAgICAgZG9jdW1lbnQtcm9vdCB0aGF0IHByb3ZpZGVzIHRoZSBtZXRhZGF0YSBhbmQgcGFja2FnZXMgcmVxdWlyZWQgYnkKICAgICAgIE9QS0cgdG8gc3VwcG9ydCBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCBvZiBJUEsgcGFja2FnZXMuIFlvdSBzZXQKQEAgLTIzNTgsNyArMjM1OCw3IEBACiAgICAgICBhIHNldCBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB5b3UgaW4geW91ciB0YXJnZXQgdGhhdCB3b3JrIHdpdGgKICAgICAgIHRoZSBmZWVkLgogCi0gICA6dGVybTpgRklMRVNgCisgICBGSUxFUwogICAgICAgVGhlIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgYXJlIHBsYWNlZCBpbiBhIHBhY2thZ2UuIFRoZQogICAgICAgOnRlcm06YFBBQ0tBR0VTYCB2YXJpYWJsZSBsaXN0cyB0aGUgcGFja2FnZXMKICAgICAgIGdlbmVyYXRlZCBieSBhIHJlY2lwZS4KQEAgLTIzOTUsNyArMjM5NSw3IEBACiAgICAgICB0aGUgOnRlcm06YENPTkZGSUxFU2AgdmFyaWFibGUgZm9yIGluZm9ybWF0aW9uIG9uCiAgICAgICBob3cgdG8gaWRlbnRpZnkgdGhlc2UgZmlsZXMgdG8gdGhlIFBNUy4KIAotICAgOnRlcm06YEZJTEVTX1NPTElCU0RFVmAKKyAgIEZJTEVTX1NPTElCU0RFVgogICAgICAgRGVmaW5lcyB0aGUgZmlsZSBzcGVjaWZpY2F0aW9uIHRvIG1hdGNoCiAgICAgICA6dGVybTpgU09MSUJTREVWYC4gSW4gb3RoZXIgd29yZHMsCiAgICAgICBgYEZJTEVTX1NPTElCU0RFVmBgIGRlZmluZXMgdGhlIGZ1bGwgcGF0aCBuYW1lIG9mIHRoZSBkZXZlbG9wbWVudApAQCAtMjQwNyw3ICsyNDA3LDcgQEAKIAogICAgICAgICAgRklMRVNfU09MSUJTREVWID89ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IgogCi0gICA6dGVybTpgRklMRVNFWFRSQVBBVEhTYAorICAgRklMRVNFWFRSQVBBVEhTCiAgICAgICBFeHRlbmRzIHRoZSBzZWFyY2ggcGF0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHdoZW4KICAgICAgIGxvb2tpbmcgZm9yIGZpbGVzIGFuZCBwYXRjaGVzIGFzIGl0IHByb2Nlc3NlcyByZWNpcGVzIGFuZCBhcHBlbmQKICAgICAgIGZpbGVzLiBUaGUgZGVmYXVsdCBkaXJlY3RvcmllcyBCaXRCYWtlIHVzZXMgd2hlbiBpdCBwcm9jZXNzZXMgcmVjaXBlcwpAQCAtMjQ3OSw3ICsyNDc5LDcgQEAKICAgICAgIGZpbGVzIHRoYXQgcmVzaWRlIGluIGRpZmZlcmVudCBsYXllcnMgYnV0IGFyZSB1c2VkIGZvciB0aGUgc2FtZQogICAgICAgcmVjaXBlIHRvIGNvcnJlY3RseSBleHRlbmQgdGhlIHBhdGguCiAKLSAgIDp0ZXJtOmBGSUxFU09WRVJSSURFU2AKKyAgIEZJTEVTT1ZFUlJJREVTCiAgICAgICBBIHN1YnNldCBvZiA6dGVybTpgT1ZFUlJJREVTYCB1c2VkIGJ5IHRoZQogICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBmb3IgY3JlYXRpbmcKICAgICAgIDp0ZXJtOmBGSUxFU1BBVEhgLiBUaGUgYGBGSUxFU09WRVJSSURFU2BgIHZhcmlhYmxlCkBAIC0yNTAzLDcgKzI1MDMsNyBAQAogICAgICAgICAgdmFyaWFibGUuIFRoZSB2YWx1ZXMgbWF0Y2ggdXAgd2l0aCBleHBlY3RlZCBvdmVycmlkZXMgYW5kIGFyZSB1c2VkCiAgICAgICAgICBpbiBhbiBleHBlY3RlZCBtYW5uZXIgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KIAotICAgOnRlcm06YEZJTEVTUEFUSGAKKyAgIEZJTEVTUEFUSAogICAgICAgVGhlIGRlZmF1bHQgc2V0IG9mIGRpcmVjdG9yaWVzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKICAgICAgIHdoZW4gc2VhcmNoaW5nIGZvciBwYXRjaGVzIGFuZCBmaWxlcy4KIApAQCAtMjU2Miw3ICsyNTYyLDcgQEAKICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4gU2VlIHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLXBhdGNoYCB0YXNrIGFzIHdlbGwuCiAKLSAgIDp0ZXJtOmBGSUxFU1lTVEVNX1BFUk1TX1RBQkxFU2AKKyAgIEZJTEVTWVNURU1fUEVSTVNfVEFCTEVTCiAgICAgICBBbGxvd3MgeW91IHRvIGRlZmluZSB5b3VyIG93biBmaWxlIHBlcm1pc3Npb25zIHNldHRpbmdzIHRhYmxlIGFzIHBhcnQKICAgICAgIG9mIHlvdXIgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBhY2thZ2luZyBwcm9jZXNzLiBGb3IgZXhhbXBsZSwgc3VwcG9zZQogICAgICAgeW91IG5lZWQgYSBjb25zaXN0ZW50IHNldCBvZiBjdXN0b20gcGVybWlzc2lvbnMgZm9yIGEgc2V0IG9mIGdyb3VwcwpAQCAtMjU4NSw0MiArMjU4NSw0MiBAQAogICAgICAgRm9yIGd1aWRhbmNlIG9uIGhvdyB0byBjcmVhdGUgeW91ciBvd24gZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5ncwogICAgICAgdGFibGUgZmlsZSwgZXhhbWluZSB0aGUgZXhpc3RpbmcgYGBmcy1wZXJtcy50eHRgYC4KIAotICAgOnRlcm06YEZJVF9HRU5FUkFURV9LRVlTYAorICAgRklUX0dFTkVSQVRFX0tFWVMKICAgICAgIERlY2lkZXMgd2hldGhlciB0byBnZW5lcmF0ZSB0aGUga2V5cyBmb3Igc2lnbmluZyBmaXRJbWFnZSBpZiB0aGV5CiAgICAgICBkb24ndCBhbHJlYWR5IGV4aXN0LiBUaGUga2V5cyBhcmUgY3JlYXRlZCBpbiBgYFVCT09UX1NJR05fS0VZRElSYGAuCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgogCi0gICA6dGVybTpgRklUX0hBU0hfQUxHYAorICAgRklUX0hBU0hfQUxHCiAgICAgICBTcGVjaWZpZXMgdGhlIGhhc2ggYWxnb3JpdGhtIHVzZWQgaW4gY3JlYXRpbmcgdGhlIEZJVCBJbWFnZS4gRm9yIGUuZy4gc2hhMjU2LgogCi0gICA6dGVybTpgRklUX0tFWV9HRU5SU0FfQVJHU2AKKyAgIEZJVF9LRVlfR0VOUlNBX0FSR1MKICAgICAgIEFyZ3VtZW50cyB0byBvcGVuc3NsIGdlbnJzYSBmb3IgZ2VuZXJhdGluZyBSU0EgcHJpdmF0ZSBrZXkgZm9yIHNpZ25pbmcKICAgICAgIGZpdEltYWdlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiLUY0Ii4gaS5lLiB0aGUgcHVibGljIGV4cG9uZW50IDY1NTM3IHRvCiAgICAgICB1c2UuCiAKLSAgIDp0ZXJtOmBGSVRfS0VZX1JFUV9BUkdTYAorICAgRklUX0tFWV9SRVFfQVJHUwogICAgICAgQXJndW1lbnRzIHRvIG9wZW5zc2wgcmVxIGZvciBnZW5lcmF0aW5nIGNlcnRpZmljYXRlIGZvciBzaWduaW5nIGZpdEltYWdlLgogICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIi1iYXRjaCAtbmV3Ii4gYmF0Y2ggZm9yIG5vbiBpbnRlcmFjdGl2ZSBtb2RlCiAgICAgICBhbmQgbmV3IGZvciBnZW5lcmF0aW5nIG5ldyBrZXlzLgogCi0gICA6dGVybTpgRklUX0tFWV9TSUdOX1BLQ1NgCisgICBGSVRfS0VZX1NJR05fUEtDUwogICAgICAgRm9ybWF0IGZvciBwdWJsaWMga2V5IGNlcml0aWZjYXRlIHVzZWQgaW4gc2lnbmluZyBmaXRJbWFnZS4KICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICJ4NTA5Ii4KIAotICAgOnRlcm06YEZJVF9TSUdOX0FMR2AKKyAgIEZJVF9TSUdOX0FMRwogICAgICAgU3BlY2lmaWVzIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtIHVzZWQgaW4gY3JlYXRpbmcgdGhlIEZJVCBJbWFnZS4KICAgICAgIEZvciBlLmcuIHJzYTIwNDguCiAKLSAgIDp0ZXJtOmBGSVRfU0lHTl9OVU1CSVRTYAorICAgRklUX1NJR05fTlVNQklUUwogICAgICAgU2l6ZSBvZiBwcml2YXRlIGtleSBpbiBudW1iZXIgb2YgYml0cyB1c2VkIGluIGZpdEltYWdlLiBUaGUgZGVmYXVsdAogICAgICAgdmFsdWUgaXMgIjIwNDgiLgogCi0gICA6dGVybTpgRk9OVF9FWFRSQV9SREVQRU5EU2AKKyAgIEZPTlRfRVhUUkFfUkRFUEVORFMKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgZm9udGNhY2hlIDxyZWYtY2xhc3Nlcy1mb250Y2FjaGU+YCBjbGFzcywKICAgICAgIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBydW50aW1lIGRlcGVuZGVuY2llcyBmb3IgZm9udCBwYWNrYWdlcy4KICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBgYEZPTlRfRVhUUkFfUkRFUEVORFNgYCBpcyBzZXQgdG8gImZvbnRjb25maWctdXRpbHMiLgogCi0gICA6dGVybTpgRk9OVF9QQUNLQUdFU2AKKyAgIEZPTlRfUEFDS0FHRVMKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgZm9udGNhY2hlIDxyZWYtY2xhc3Nlcy1mb250Y2FjaGU+YCBjbGFzcywKICAgICAgIHRoaXMgdmFyaWFibGUgaWRlbnRpZmllcyBwYWNrYWdlcyBjb250YWluaW5nIGZvbnQgZmlsZXMgdGhhdCBuZWVkIHRvCiAgICAgICBiZSBjYWNoZWQgYnkgRm9udGNvbmZpZy4gQnkgZGVmYXVsdCwgdGhlIGBgZm9udGNhY2hlYGAgY2xhc3MgYXNzdW1lcwpAQCAtMjYyOCwxOCArMjYyOCwxOCBAQAogICAgICAgYGAke2BgXCA6dGVybTpgUE5gXCBgYH1gYCkuIFVzZSB0aGlzIHZhcmlhYmxlIGlmIGZvbnRzIHlvdQogICAgICAgbmVlZCBhcmUgaW4gYSBwYWNrYWdlIG90aGVyIHRoYW4gdGhhdCBtYWluIHBhY2thZ2UuCiAKLSAgIDp0ZXJtOmBGT1JDRV9ST19SRU1PVkVgCisgICBGT1JDRV9ST19SRU1PVkUKICAgICAgIEZvcmNlcyB0aGUgcmVtb3ZhbCBvZiB0aGUgcGFja2FnZXMgbGlzdGVkIGluIGBgUk9PVEZTX1JPX1VOTkVFREVEYGAKICAgICAgIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtLgogCiAgICAgICBTZXQgdGhlIHZhcmlhYmxlIHRvICIxIiB0byBmb3JjZSB0aGUgcmVtb3ZhbCBvZiB0aGVzZSBwYWNrYWdlcy4KIAotICAgOnRlcm06YEZVTExfT1BUSU1JWkFUSU9OYAorICAgRlVMTF9PUFRJTUlaQVRJT04KICAgICAgIFRoZSBvcHRpb25zIHRvIHBhc3MgaW4gYGBUQVJHRVRfQ0ZMQUdTYGAgYW5kIGBgQ0ZMQUdTYGAgd2hlbgogICAgICAgY29tcGlsaW5nIGFuIG9wdGltaXplZCBzeXN0ZW0uIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gIi1PMiAtcGlwZQogICAgICAgJHtERUJVR19GTEFHU30iLgogCi0gICA6dGVybTpgR0NDUElFYAorICAgR0NDUElFCiAgICAgICBFbmFibGVzIFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVzIChQSUUpIHdpdGhpbiB0aGUgR05VIEMKICAgICAgIENvbXBpbGVyIChHQ0MpLiBFbmFibGluZyBQSUUgaW4gdGhlIEdDQyBtYWtlcyBSZXR1cm4gT3JpZW50ZWQKICAgICAgIFByb2dyYW1taW5nIChST1ApIGF0dGFja3MgbXVjaCBtb3JlIGRpZmZpY3VsdCB0byBleGVjdXRlLgpAQCAtMjY1MCw3ICsyNjUwLDcgQEAKIAogICAgICAgICAgR0NDUElFID89ICItLWVuYWJsZS1kZWZhdWx0LXBpZSIKIAotICAgOnRlcm06YEdDQ1ZFUlNJT05gCisgICBHQ0NWRVJTSU9OCiAgICAgICBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgR05VIEMgQ29tcGlsZXIgKEdDQykgdXNlZCBmb3IKICAgICAgIGNvbXBpbGF0aW9uLiBCeSBkZWZhdWx0LCBgYEdDQ1ZFUlNJT05gYCBpcyBzZXQgdG8gIjgueCIgaW4gdGhlCiAgICAgICBgYG1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmNgYCBpbmNsdWRlIGZpbGU6CkBAIC0yNjYxLDE0ICsyNjYxLDE0IEBACiAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgdmFsdWUgYnkgc2V0dGluZyBpdCBpbiBhCiAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgc3VjaCBhcyB0aGUgYGBsb2NhbC5jb25mYGAuCiAKLSAgIDp0ZXJtOmBHREJgCisgICBHREIKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEdOVSBEZWJ1Z2dlci4KIAotICAgOnRlcm06YEdJVERJUmAKKyAgIEdJVERJUgogICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSBpcyBzdG9yZWQKICAgICAgIHdoZW4gaXQgaXMgY2xvbmVkLgogCi0gICA6dGVybTpgR0xJQkNfR0VORVJBVEVfTE9DQUxFU2AKKyAgIEdMSUJDX0dFTkVSQVRFX0xPQ0FMRVMKICAgICAgIFNwZWNpZmllcyB0aGUgbGlzdCBvZiBHTElCQyBsb2NhbGVzIHRvIGdlbmVyYXRlIHNob3VsZCB5b3Ugbm90IHdpc2gKICAgICAgIHRvIGdlbmVyYXRlIGFsbCBMSUJDIGxvY2Fscywgd2hpY2ggY2FuIGJlIHRpbWUgY29uc3VtaW5nLgogCkBAIC0yNjg2LDcgKzI2ODYsNyBAQAogCiAgICAgICAgICBHTElCQ19HRU5FUkFURV9MT0NBTEVTID0gImVuX0dCLlVURi04IGVuX1VTLlVURi04IgogCi0gICA6dGVybTpgR1JPVVBBRERfUEFSQU1gCisgICBHUk9VUEFERF9QQVJBTQogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmB1c2VyYWRkIDxyZWYtY2xhc3Nlcy11c2VyYWRkPmAgY2xhc3MsCiAgICAgICB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUKICAgICAgIHBhc3NlZCB0byB0aGUgYGBncm91cGFkZGBgIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gYWRkIGEgZ3JvdXAgdG8gdGhlCkBAIC0yNzAwLDcgKzI3MDAsNyBAQAogICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFuZGFyZCBMaW51eCBzaGVsbCBjb21tYW5kCiAgICAgICBgYGdyb3VwYWRkYGAsIHNlZSBodHRwOi8vbGludXguZGllLm5ldC9tYW4vOC9ncm91cGFkZC4KIAotICAgOnRlcm06YEdST1VQTUVNU19QQVJBTWAKKyAgIEdST1VQTUVNU19QQVJBTQogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmB1c2VyYWRkIDxyZWYtY2xhc3Nlcy11c2VyYWRkPmAgY2xhc3MsCiAgICAgICB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUKICAgICAgIHBhc3NlZCB0byB0aGUgYGBncm91cG1lbXNgYCBjb21tYW5kIGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgbWVtYmVycwpAQCAtMjcwOSw3ICsyNzA5LDcgQEAKICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgc3RhbmRhcmQgTGludXggc2hlbGwgY29tbWFuZCBgYGdyb3VwbWVtc2BgLAogICAgICAgc2VlIGh0dHA6Ly9saW51eC5kaWUubmV0L21hbi84L2dyb3VwbWVtcy4KIAotICAgOnRlcm06YEdSVUJfR0ZYU0VSSUFMYAorICAgR1JVQl9HRlhTRVJJQUwKICAgICAgIENvbmZpZ3VyZXMgdGhlIEdOVSBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIgKEdSVUIpIHRvIGhhdmUgZ3JhcGhpY3MKICAgICAgIGFuZCBzZXJpYWwgaW4gdGhlIGJvb3QgbWVudS4gU2V0IHRoaXMgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIKICAgICAgIGBgbG9jYWwuY29uZmBgIG9yIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUgdG8gZW5hYmxlIGdyYXBoaWNzCkBAIC0yNzE4LDcgKzI3MTgsNyBAQAogICAgICAgU2VlIHRoZSA6cmVmOmBncnViLWVmaSA8cmVmLWNsYXNzZXMtZ3J1Yi1lZmk+YCBjbGFzcyBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZC4KIAotICAgOnRlcm06YEdSVUJfT1BUU2AKKyAgIEdSVUJfT1BUUwogICAgICAgQWRkaXRpb25hbCBvcHRpb25zIHRvIGFkZCB0byB0aGUgR05VIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlciAoR1JVQikKICAgICAgIGNvbmZpZ3VyYXRpb24uIFVzZSBhIHNlbWktY29sb24gY2hhcmFjdGVyIChgYDtgYCkgdG8gc2VwYXJhdGUKICAgICAgIG11bHRpcGxlIG9wdGlvbnMuCkBAIC0yNzI3LDcgKzI3MjcsNyBAQAogICAgICAgOnJlZjpgZ3J1Yi1lZmkgPHJlZi1jbGFzc2VzLWdydWItZWZpPmAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgICAgIG9uIGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQuCiAKLSAgIDp0ZXJtOmBHUlVCX1RJTUVPVVRgCisgICBHUlVCX1RJTUVPVVQKICAgICAgIFNwZWNpZmllcyB0aGUgdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWZhdWx0IGBgTEFCRUxgYCBpbiB0aGUKICAgICAgIEdOVSBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIgKEdSVUIpLgogCkBAIC0yNzM1LDE4ICsyNzM1LDE4IEBACiAgICAgICA6cmVmOmBncnViLWVmaSA8cmVmLWNsYXNzZXMtZ3J1Yi1lZmk+YCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZC4KIAotICAgOnRlcm06YEdUS0lNTU9EVUxFU19QQUNLQUdFU2AKKyAgIEdUS0lNTU9EVUxFU19QQUNLQUdFUwogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQogICAgICAgOnJlZjpgZ3RrLWltbW9kdWxlcy1jYWNoZSA8cmVmLWNsYXNzZXMtZ3RrLWltbW9kdWxlcy1jYWNoZT5gIGNsYXNzLAogICAgICAgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRoYXQgY29udGFpbiB0aGUgR1RLKyBpbnB1dAogICAgICAgbWV0aG9kIG1vZHVsZXMgYmVpbmcgaW5zdGFsbGVkIHdoZW4gdGhlIG1vZHVsZXMgYXJlIGluIHBhY2thZ2VzIG90aGVyCiAgICAgICB0aGFuIHRoZSBtYWluIHBhY2thZ2UuCiAKLSAgIDp0ZXJtOmBIT01FUEFHRWAKKyAgIEhPTUVQQUdFCiAgICAgICBXZWJzaXRlIHdoZXJlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvZnR3YXJlIHRoZSByZWNpcGUgaXMKICAgICAgIGJ1aWxkaW5nIGNhbiBiZSBmb3VuZC4KIAotICAgOnRlcm06YEhPU1RfQVJDSGAKKyAgIEhPU1RfQVJDSAogICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIG5vcm1hbGx5IHRoZSBzYW1lIGFzCiAgICAgICA6dGVybTpgVEFSR0VUX0FSQ0hgLiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgc3VwcG9ydHMgbWFueSBhcmNoaXRlY3R1cmVzLiBIZXJlIGlzIGFuIGV4YW1wbGUgbGlzdCBvZiBhcmNoaXRlY3R1cmVzCkBAIC0yNzYxLDcgKzI3NjEsNyBAQAogICAgICAgLSBtaXBzCiAgICAgICAtIG1pcHNlbAogCi0gICA6dGVybTpgSE9TVF9DQ19BUkNIYAorICAgSE9TVF9DQ19BUkNICiAgICAgICBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbXBpbGVyIGZsYWdzIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUKICAgICAgIEMgY29tcGlsZXIuCiAKQEAgLTI3NzcsMTggKzI3NzcsMTggQEAKICAgICAgIC0gIGBgQlVJTERTREtfQ0NfQVJDSGBgIHdoZW4gYnVpbGRpbmcgZm9yIGFuIFNESyAoaS5lLgogICAgICAgICAgYGBuYXRpdmVzZGstYGApCiAKLSAgIDp0ZXJtOmBIT1NUX09TYAorICAgSE9TVF9PUwogICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbSwgd2hpY2ggaXMgbm9ybWFsbHkKICAgICAgIHRoZSBzYW1lIGFzIHRoZSA6dGVybTpgVEFSR0VUX09TYC4gVGhlIHZhcmlhYmxlIGNhbgogICAgICAgYmUgc2V0IHRvICJsaW51eCIgZm9yIGBgZ2xpYmNgYC1iYXNlZCBzeXN0ZW1zIGFuZCB0byAibGludXgtbXVzbCIgZm9yCiAgICAgICBgYG11c2xgYC4gRm9yIEFSTS9FQUJJIHRhcmdldHMsIHRoZXJlIGFyZSBhbHNvICJsaW51eC1nbnVlYWJpIiBhbmQKICAgICAgICJsaW51eC1tdXNsZWFiaSIgdmFsdWVzIHBvc3NpYmxlLgogCi0gICA6dGVybTpgSE9TVF9QUkVGSVhgCisgICBIT1NUX1BSRUZJWAogICAgICAgU3BlY2lmaWVzIHRoZSBwcmVmaXggZm9yIHRoZSBjcm9zcy1jb21waWxlIHRvb2xjaGFpbi4gYGBIT1NUX1BSRUZJWGBgCiAgICAgICBpcyBub3JtYWxseSB0aGUgc2FtZSBhcyA6dGVybTpgVEFSR0VUX1BSRUZJWGAuCiAKLSAgIDp0ZXJtOmBIT1NUX1NZU2AKKyAgIEhPU1RfU1lTCiAgICAgICBTcGVjaWZpZXMgdGhlIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHRoZSBvcGVyYXRpbmcKICAgICAgIHN5c3RlbSwgZm9yIHdoaWNoIHRoZSBidWlsZCBpcyBvY2N1cnJpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlCiAgICAgICBjdXJyZW50IHJlY2lwZS4KQEAgLTI4MTAsNyArMjgxMCw3IEBACiAgICAgICAtICBHaXZlbiBhIHJlY2lwZSBiZWluZyBidWlsdCBmb3IgYSBsaXR0bGUtZW5kaWFuIE1JUFMgdGFyZ2V0IHJ1bm5pbmcKICAgICAgICAgIExpbnV4LCB0aGUgdmFsdWUgbWlnaHQgYmUgIm1pcHNlbC1saW51eCIuCiAKLSAgIDp0ZXJtOmBIT1NUVE9PTFNgCisgICBIT1NUVE9PTFMKICAgICAgIEEgc3BhY2Utc2VwYXJhdGVkIGxpc3QgKGZpbHRlcikgb2YgdG9vbHMgb24gdGhlIGJ1aWxkIGhvc3QgdGhhdAogICAgICAgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGJ1aWxkIHRhc2tzLiBVc2luZyB0aGlzCiAgICAgICBmaWx0ZXIgaGVscHMgcmVkdWNlIHRoZSBwb3NzaWJpbGl0eSBvZiBob3N0IGNvbnRhbWluYXRpb24uIElmIGEgdG9vbApAQCAtMjgyMSw3ICsyODIxLDcgQEAKICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBzZWUKICAgICAgIDp0ZXJtOmBIT1NUVE9PTFNfTk9ORkFUQUxgLgogCi0gICA6dGVybTpgSE9TVFRPT0xTX05PTkZBVEFMYAorICAgSE9TVFRPT0xTX05PTkZBVEFMCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IChmaWx0ZXIpIG9mIHRvb2xzIG9uIHRoZSBidWlsZCBob3N0IHRoYXQKICAgICAgIHNob3VsZCBiZSBhbGxvd2VkIHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBidWlsZCB0YXNrcy4gVXNpbmcgdGhpcwogICAgICAgZmlsdGVyIGhlbHBzIHJlZHVjZSB0aGUgcG9zc2liaWxpdHkgb2YgaG9zdCBjb250YW1pbmF0aW9uLiBVbmxpa2UKQEAgLTI4MzAsMTEgKzI4MzAsMTEgQEAKICAgICAgIGBgSE9TVFRPT0xTX05PTkZBVEFMYGAgaXMgbm90IGZvdW5kIG9uIHRoZSBidWlsZCBob3N0LiBUaHVzLCB5b3UgY2FuCiAgICAgICB1c2UgYGBIT1NUVE9PTFNfTk9ORkFUQUxgYCB0byBmaWx0ZXIgb3B0aW9uYWwgaG9zdCB0b29scy4KIAotICAgOnRlcm06YEhPU1RfVkVORE9SYAorICAgSE9TVF9WRU5ET1IKICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgdmVuZG9yLiBgYEhPU1RfVkVORE9SYGAgaXMgbm9ybWFsbHkgdGhlCiAgICAgICBzYW1lIGFzIDp0ZXJtOmBUQVJHRVRfVkVORE9SYC4KIAotICAgOnRlcm06YElDRUNDX0RJU0FCTEVEYAorICAgSUNFQ0NfRElTQUJMRUQKICAgICAgIERpc2FibGVzIG9yIGVuYWJsZXMgdGhlIGBgaWNlY2NgYCAoSWNlY3JlYW0pIGZ1bmN0aW9uLiBGb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24gb24gdGhpcyBmdW5jdGlvbiBhbmQgYmVzdCBwcmFjdGljZXMgZm9yIHVzaW5nIHRoaXMKICAgICAgIHZhcmlhYmxlLCBzZWUgdGhlICI6cmVmOmBpY2VjYy5iYmNsYXNzIDxyZWYtY2xhc3Nlcy1pY2VjYz5gIgpAQCAtMjg1MSw3ICsyODUxLDcgQEAKIAogICAgICAgICAgSUNFQ0NfRElTQUJMRUQgPSAiIgogCi0gICA6dGVybTpgSUNFQ0NfRU5WX0VYRUNgCisgICBJQ0VDQ19FTlZfRVhFQwogICAgICAgUG9pbnRzIHRvIHRoZSBgYGljZWNjLWNyZWF0ZS1lbnZgYCBzY3JpcHQgdGhhdCB5b3UgcHJvdmlkZS4gVGhpcwogICAgICAgdmFyaWFibGUgaXMgdXNlZCBieSB0aGUgOnJlZjpgaWNlY2MgPHJlZi1jbGFzc2VzLWljZWNjPmAgY2xhc3MuIFlvdQogICAgICAgc2V0IHRoaXMgdmFyaWFibGUgaW4geW91ciBgYGxvY2FsLmNvbmZgYCBmaWxlLgpAQCAtMjg2MSw3ICsyODYxLDcgQEAKICAgICAgIGBgaWNlY2MtY3JlYXRlLWVudi5iYmBgIHJlY2lwZSwgd2hpY2ggaXMgYSBtb2RpZmllZCB2ZXJzaW9uIGFuZCBub3QKICAgICAgIHRoZSBvbmUgdGhhdCBjb21lcyB3aXRoIGBgaWNlY2NgYC4KIAotICAgOnRlcm06YElDRUNDX1BBUkFMTEVMX01BS0VgCisgICBJQ0VDQ19QQVJBTExFTF9NQUtFCiAgICAgICBFeHRyYSBvcHRpb25zIHBhc3NlZCB0byB0aGUgYGBtYWtlYGAgY29tbWFuZCBkdXJpbmcgdGhlCiAgICAgICA6cmVmOmByZWYtdGFza3MtY29tcGlsZWAgdGFzayB0aGF0IHNwZWNpZnkgcGFyYWxsZWwKICAgICAgIGNvbXBpbGF0aW9uLiBUaGlzIHZhcmlhYmxlIHVzdWFsbHkgdGFrZXMgdGhlIGZvcm0gb2YgIi1qIHgiLCB3aGVyZSB4CkBAIC0yODg3LDEzICsyODg3LDEzIEBACiAgICAgICB1c2UgaXQgKGkuZS4gdGhlIHN5c3RlbSBkb2VzIG5vdCBkZXRlY3QgYW5kIGFzc2lnbiB0aGUgbnVtYmVyIG9mCiAgICAgICBjb3JlcyBhcyBpcyBkb25lIHdpdGggYGBQQVJBTExFTF9NQUtFYGApLgogCi0gICA6dGVybTpgSUNFQ0NfUEFUSGAKKyAgIElDRUNDX1BBVEgKICAgICAgIFRoZSBsb2NhdGlvbiBvZiB0aGUgYGBpY2VjY2BgIGJpbmFyeS4gWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBpbgogICAgICAgeW91ciBgYGxvY2FsLmNvbmZgYCBmaWxlLiBJZiB5b3VyIGBgbG9jYWwuY29uZmBgIGZpbGUgZG9lcyBub3QgZGVmaW5lCiAgICAgICB0aGlzIHZhcmlhYmxlLCB0aGUgOnJlZjpgaWNlY2MgPHJlZi1jbGFzc2VzLWljZWNjPmAgY2xhc3MgYXR0ZW1wdHMKICAgICAgIHRvIGRlZmluZSBpdCBieSBsb2NhdGluZyBgYGljZWNjYGAgdXNpbmcgYGB3aGljaGBgLgogCi0gICA6dGVybTpgSUNFQ0NfVVNFUl9DTEFTU19CTGAKKyAgIElDRUNDX1VTRVJfQ0xBU1NfQkwKICAgICAgIElkZW50aWZpZXMgdXNlciBjbGFzc2VzIHRoYXQgeW91IGRvIG5vdCB3YW50IHRoZSBJY2VjcmVhbSBkaXN0cmlidXRlZAogICAgICAgY29tcGlsZSBzdXBwb3J0IHRvIGNvbnNpZGVyLiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgYnkgdGhlCiAgICAgICA6cmVmOmBpY2VjYyA8cmVmLWNsYXNzZXMtaWNlY2M+YCBjbGFzcy4gWW91IHNldCB0aGlzIHZhcmlhYmxlIGluCkBAIC0yOTAzLDcgKzI5MDMsNyBAQAogICAgICAgdGhlbSBmcm9tIGRpc3RyaWJ1dGVkIGNvbXBpbGF0aW9uIGFjcm9zcyByZW1vdGUgaG9zdHMuIEFueSBjbGFzc2VzCiAgICAgICB5b3UgbGlzdCB3aWxsIGJlIGRpc3RyaWJ1dGVkIGFuZCBjb21waWxlZCBsb2NhbGx5LgogCi0gICA6dGVybTpgSUNFQ0NfVVNFUl9QQUNLQUdFX0JMYAorICAgSUNFQ0NfVVNFUl9QQUNLQUdFX0JMCiAgICAgICBJZGVudGlmaWVzIHVzZXIgcmVjaXBlcyB0aGF0IHlvdSBkbyBub3Qgd2FudCB0aGUgSWNlY3JlYW0gZGlzdHJpYnV0ZWQKICAgICAgIGNvbXBpbGUgc3VwcG9ydCB0byBjb25zaWRlci4gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5IHRoZQogICAgICAgOnJlZjpgaWNlY2MgPHJlZi1jbGFzc2VzLWljZWNjPmAgY2xhc3MuIFlvdSBzZXQgdGhpcyB2YXJpYWJsZSBpbgpAQCAtMjkxMyw3ICsyOTEzLDcgQEAKICAgICAgIHRoZW0gZnJvbSBkaXN0cmlidXRlZCBjb21waWxhdGlvbiBhY3Jvc3MgcmVtb3RlIGhvc3RzLiBBbnkgcGFja2FnZXMKICAgICAgIHlvdSBsaXN0IHdpbGwgYmUgZGlzdHJpYnV0ZWQgYW5kIGNvbXBpbGVkIGxvY2FsbHkuCiAKLSAgIDp0ZXJtOmBJQ0VDQ19VU0VSX1BBQ0tBR0VfV0xgCisgICBJQ0VDQ19VU0VSX1BBQ0tBR0VfV0wKICAgICAgIElkZW50aWZpZXMgdXNlciByZWNpcGVzIHRoYXQgdXNlIGFuIGVtcHR5CiAgICAgICA6dGVybTpgUEFSQUxMRUxfTUFLRWAgdmFyaWFibGUgdGhhdCB5b3Ugd2FudCB0bwogICAgICAgZm9yY2UgcmVtb3RlIGRpc3RyaWJ1dGVkIGNvbXBpbGF0aW9uIG9uIHVzaW5nIHRoZSBJY2VjcmVhbQpAQCAtMjkyMSwxMSArMjkyMSwxMSBAQAogICAgICAgOnJlZjpgaWNlY2MgPHJlZi1jbGFzc2VzLWljZWNjPmAgY2xhc3MuIFlvdSBzZXQgdGhpcyB2YXJpYWJsZSBpbgogICAgICAgeW91ciBgYGxvY2FsLmNvbmZgYCBmaWxlLgogCi0gICA6dGVybTpgSU1BR0VfQkFTRU5BTUVgCisgICBJTUFHRV9CQVNFTkFNRQogICAgICAgVGhlIGJhc2UgbmFtZSBvZiBpbWFnZSBvdXRwdXQgZmlsZXMuIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gdGhlCiAgICAgICByZWNpcGUgbmFtZSAoYGAke2BgXCA6dGVybTpgUE5gXCBgYH1gYCkuCiAKLSAgIDp0ZXJtOmBJTUFHRV9FRklfQk9PVF9GSUxFU2AKKyAgIElNQUdFX0VGSV9CT09UX0ZJTEVTCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZSBib290IHBhcnRpdGlvbgogICAgICAgd2hlbiBwcmVwYXJpbmcgYW4gaW1hZ2UgdXNpbmcgdGhlIFdpYyB0b29sIHdpdGggdGhlCiAgICAgICBgYGJvb3RpbWctZWZpYGAgc291cmNlIHBsdWdpbi4gQnkgZGVmYXVsdCwKQEAgLTI5NjEsNyArMjk2MSw3IEBACiAgICAgICBtYXRlcmlhbCBmb3IgV2ljIGlzIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAiOmRvYzpgLi4vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0YCIgY2hhcHRlci4KIAotICAgOnRlcm06YElNQUdFX0JPT1RfRklMRVNgCisgICBJTUFHRV9CT09UX0ZJTEVTCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZSBib290IHBhcnRpdGlvbgogICAgICAgd2hlbiBwcmVwYXJpbmcgYW4gaW1hZ2UgdXNpbmcgdGhlIFdpYyB0b29sIHdpdGggdGhlCiAgICAgICBgYGJvb3RpbWctcGFydGl0aW9uYGAgc291cmNlIHBsdWdpbi4gQnkgZGVmYXVsdCwKQEAgLTI5OTcsNyArMjk5Nyw3IEBACiAgICAgICBtYXRlcmlhbCBmb3IgV2ljIGlzIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAiOmRvYzpgLi4vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0YCIgY2hhcHRlci4KIAotICAgOnRlcm06YElNQUdFX0NMQVNTRVNgCisgICBJTUFHRV9DTEFTU0VTCiAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0aGF0IGFsbCBpbWFnZXMgc2hvdWxkIGluaGVyaXQuIFlvdSB0eXBpY2FsbHkgdXNlCiAgICAgICB0aGlzIHZhcmlhYmxlIHRvIHNwZWNpZnkgdGhlIGxpc3Qgb2YgY2xhc3NlcyB0aGF0IHJlZ2lzdGVyIHRoZQogICAgICAgZGlmZmVyZW50IHR5cGVzIG9mIGltYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzLgpAQCAtMzAwOSw3ICszMDA5LDcgQEAKICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgYGBtZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzc2BgIGluIHRoZQogICAgICAgOnRlcm06YFNvdXJjZSBEaXJlY3RvcnlgLgogCi0gICA6dGVybTpgSU1BR0VfQ01EYAorICAgSU1BR0VfQ01ECiAgICAgICBTcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBpbWFnZSBmaWxlIGZvciBhIHNwZWNpZmljIGltYWdlCiAgICAgICB0eXBlLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgdmFsdWUgc2V0IHNldCBpbgogICAgICAgOnRlcm06YElNQUdFX0ZTVFlQRVNgLCAoZS5nLiBgYGV4dDNgYCwKQEAgLTMwMjYsNyArMzAyNiw3IEBACiAgICAgICB2YXJpYWJsZSwgc2VlIHRoZSA6cmVmOmBpbWFnZV90eXBlcyA8cmVmLWNsYXNzZXMtaW1hZ2VfdHlwZXM+YAogICAgICAgY2xhc3MgZmlsZSwgd2hpY2ggaXMgYGBtZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzc2BgLgogCi0gICA6dGVybTpgSU1BR0VfREVWSUNFX1RBQkxFU2AKKyAgIElNQUdFX0RFVklDRV9UQUJMRVMKICAgICAgIFNwZWNpZmllcyBvbmUgb3IgbW9yZSBmaWxlcyB0aGF0IGNvbnRhaW4gY3VzdG9tIGRldmljZSB0YWJsZXMgdGhhdAogICAgICAgYXJlIHBhc3NlZCB0byB0aGUgYGBtYWtlZGV2c2BgIGNvbW1hbmQgYXMgcGFydCBvZiBjcmVhdGluZyBhbiBpbWFnZS4KICAgICAgIFRoZXNlIGZpbGVzIGxpc3QgYmFzaWMgZGV2aWNlIG5vZGVzIHRoYXQgc2hvdWxkIGJlIGNyZWF0ZWQgdW5kZXIKQEAgLTMwMzYsNyArMzAzNiw3IEBACiAgICAgICBkZXZpY2UgdGFibGUgZmlsZXMsIHNlZSBgYG1ldGEvZmlsZXMvZGV2aWNlX3RhYmxlLW1pbmltYWwudHh0YGAgYXMgYW4KICAgICAgIGV4YW1wbGUuCiAKLSAgIDp0ZXJtOmBJTUFHRV9GRUFUVVJFU2AKKyAgIElNQUdFX0ZFQVRVUkVTCiAgICAgICBUaGUgcHJpbWFyeSBsaXN0IG9mIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gYW4gaW1hZ2UuIFR5cGljYWxseSwgeW91CiAgICAgICBjb25maWd1cmUgdGhpcyB2YXJpYWJsZSBpbiBhbiBpbWFnZSByZWNpcGUuIEFsdGhvdWdoIHlvdSBjYW4gdXNlIHRoaXMKICAgICAgIHZhcmlhYmxlIGZyb20geW91ciBgYGxvY2FsLmNvbmZgYCBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKQEAgLTMwNTYsNyArMzA1Niw3IEBACiAgICAgICB2YXJpYWJsZSwgc2VlIHRoZSAiOnJlZjpgdXNpbmdwb2t5LWV4dGVuZC1jdXN0b21pbWFnZS1pbWFnZWZlYXR1cmVzYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgSU1BR0VfRlNUWVBFU2AKKyAgIElNQUdFX0ZTVFlQRVMKICAgICAgIFNwZWNpZmllcyB0aGUgZm9ybWF0cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIGR1cmluZyB0aGUKICAgICAgIGJ1aWxkIHdoZW4gY3JlYXRpbmcgdGhlIHJvb3QgZmlsZXN5c3RlbS4gRm9yIGV4YW1wbGUsIHNldHRpbmcKICAgICAgIGBgSU1BR0VfRlNUWVBFU2BgIGFzIGZvbGxvd3MgY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIHJvb3QKQEAgLTMwNzksNyArMzA3OSw3IEBACiAgICAgICAgICAgICBvciBgYF9wcmVwZW5kYGAuIFlvdSBtdXN0IHVzZSB0aGUgYGArPWBgIG9wZXJhdG9yIHRvIGFkZCBvbmUgb3IKICAgICAgICAgICAgIG1vcmUgb3B0aW9ucyB0byB0aGUgYGBJTUFHRV9GU1RZUEVTYGAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBJTUFHRV9JTlNUQUxMYAorICAgSU1BR0VfSU5TVEFMTAogICAgICAgVXNlZCBieSByZWNpcGVzIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZQogICAgICAgdGhyb3VnaCB0aGUgOnJlZjpgaW1hZ2UgPHJlZi1jbGFzc2VzLWltYWdlPmAgY2xhc3MuIFVzZSB0aGUKICAgICAgIGBgSU1BR0VfSU5TVEFMTGBgIHZhcmlhYmxlIHdpdGggY2FyZSB0byBhdm9pZCBvcmRlcmluZyBpc3N1ZXMuCkBAIC0zMTI5LDcgKzMxMjksNyBAQAogICAgICAgICAgICAgc3BlY2lmaWMgc2l0dWF0aW9uLiBJbiBib3RoIHRoZXNlIGNhc2VzLCB0aGUgYmVoYXZpb3IgaXMKICAgICAgICAgICAgIGNvbnRyYXJ5IHRvIGhvdyBtb3N0IHVzZXJzIGV4cGVjdCB0aGUgYGArPWBgIG9wZXJhdG9yIHRvIHdvcmsuCiAKLSAgIDp0ZXJtOmBJTUFHRV9MSU5HVUFTYAorICAgSU1BR0VfTElOR1VBUwogICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIGxvY2FsZXMgdG8gaW5zdGFsbCBpbnRvIHRoZSBpbWFnZSBkdXJpbmcgdGhlCiAgICAgICByb290IGZpbGVzeXN0ZW0gY29uc3RydWN0aW9uIHByb2Nlc3MuIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCiAgICAgICBhdXRvbWF0aWNhbGx5IHNwbGl0cyBsb2NhbGUgZmlsZXMsIHdoaWNoIGFyZSB1c2VkIGZvciBsb2NhbGl6YXRpb24sCkBAIC0zMTUxLDcgKzMxNTEsNyBAQAogICAgICAgU2VlIHRoZSA6dGVybTpgR0xJQkNfR0VORVJBVEVfTE9DQUxFU2AKICAgICAgIHZhcmlhYmxlIGZvciBpbmZvcm1hdGlvbiBvbiBnZW5lcmF0aW5nIEdMSUJDIGxvY2FsZXMuCiAKLSAgIDp0ZXJtOmBJTUFHRV9NQU5JRkVTVGAKKyAgIElNQUdFX01BTklGRVNUCiAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIGltYWdlLiBUaGlzIGZpbGUgbGlzdHMgYWxsIHRoZSBpbnN0YWxsZWQKICAgICAgIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaW1hZ2UuIFRoZSBmaWxlIGNvbnRhaW5zIHBhY2thZ2UKICAgICAgIGluZm9ybWF0aW9uIG9uIGEgbGluZS1wZXItcGFja2FnZSBiYXNpcyBhcyBmb2xsb3dzOgpAQCAtMzE3MSw3ICszMTcxLDcgQEAKICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgaW1hZ2UgaXMgY3JlYXRlZCBpbiB0aGUgIjpyZWY6YGltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50YCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KIAotICAgOnRlcm06YElNQUdFX05BTUVgCisgICBJTUFHRV9OQU1FCiAgICAgICBUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IGltYWdlIGZpbGVzIG1pbnVzIHRoZSBleHRlbnNpb24uIFRoaXMgdmFyaWFibGUKICAgICAgIGlzIGRlcml2ZWQgdXNpbmcgdGhlIDp0ZXJtOmBJTUFHRV9CQVNFTkFNRWAsCiAgICAgICA6dGVybTpgTUFDSElORWAsIGFuZCA6dGVybTpgREFURVRJTUVgCkBAIC0zMTgwLDcgKzMxODAsNyBAQAogCiAgICAgICAgICBJTUFHRV9OQU1FID0gIiR7SU1BR0VfQkFTRU5BTUV9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCiAKLSAgIDp0ZXJtOmBJTUFHRV9PVkVSSEVBRF9GQUNUT1JgCisgICBJTUFHRV9PVkVSSEVBRF9GQUNUT1IKICAgICAgIERlZmluZXMgYSBtdWx0aXBsaWVyIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRvIHRoZSBpbml0aWFsCiAgICAgICBpbWFnZSBzaXplIGZvciBjYXNlcyB3aGVuIHRoZSBtdWx0aXBsaWVyIHRpbWVzIHRoZSByZXR1cm5lZCBkaXNrCiAgICAgICB1c2FnZSB2YWx1ZSBmb3IgdGhlIGltYWdlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3VtIG9mCkBAIC0zMjA5LDcgKzMyMDksNyBAQAogICAgICAgYWRkZWQgdG8gdGhlIGltYWdlIGJ5IHVzaW5nIHRoZSBgYElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRWBgCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YElNQUdFX1BLR1RZUEVgCisgICBJTUFHRV9QS0dUWVBFCiAgICAgICBEZWZpbmVzIHRoZSBwYWNrYWdlIHR5cGUgKGkuZS4gREVCLCBSUE0sIElQSywgb3IgVEFSKSB1c2VkIGJ5IHRoZQogICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4gVGhlIHZhcmlhYmxlIGlzIGRlZmluZWQgYXBwcm9wcmlhdGVseSBieQogICAgICAgdGhlIDpyZWY6YHBhY2thZ2VfZGViIDxyZWYtY2xhc3Nlcy1wYWNrYWdlX2RlYj5gLApAQCAtMzI0Miw3ICszMjQyLDcgQEAKICAgICAgICAgIGZvcm1hdCBhcmUgbmV2ZXIgdXNlZCBhcyBhIHN1YnN0aXR1dGUgcGFja2FnaW5nIGZvcm1hdCBmb3IgREVCLAogICAgICAgICAgUlBNLCBhbmQgSVBLIGZvcm1hdHRlZCBmaWxlcyBmb3IgeW91ciBpbWFnZSBvciBTREsuCiAKLSAgIDp0ZXJtOmBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EYAorICAgSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKICAgICAgIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQgZmlsZXMuIFlvdSBjYW4gc3BlY2lmeQogICAgICAgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgpAQCAtMzI1Niw3ICszMjU2LDcgQEAKICAgICAgIDp0ZXJtOmBJTUFHRV9ST09URlNgIHZhcmlhYmxlIGZvciBtb3JlCiAgICAgICBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YElNQUdFX1BSRVBST0NFU1NfQ09NTUFORGAKKyAgIElNQUdFX1BSRVBST0NFU1NfQ09NTUFORAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAogICAgICAgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dCBmaWxlcy4gWW91IGNhbiBzcGVjaWZ5CiAgICAgICBmdW5jdGlvbnMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnM6CkBAIC0zMjcwLDE5ICszMjcwLDE5IEBACiAgICAgICA6dGVybTpgSU1BR0VfUk9PVEZTYCB2YXJpYWJsZSBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBJTUFHRV9ST09URlNgCisgICBJTUFHRV9ST09URlMKICAgICAgIFRoZSBsb2NhdGlvbiBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtIHdoaWxlIGl0IGlzIHVuZGVyIGNvbnN0cnVjdGlvbgogICAgICAgKGkuZS4gZHVyaW5nIHRoZSA6cmVmOmByZWYtdGFza3Mtcm9vdGZzYCB0YXNrKS4gVGhpcwogICAgICAgdmFyaWFibGUgaXMgbm90IGNvbmZpZ3VyYWJsZS4gRG8gbm90IGNoYW5nZSBpdC4KIAotICAgOnRlcm06YElNQUdFX1JPT1RGU19BTElHTk1FTlRgCisgICBJTUFHRV9ST09URlNfQUxJR05NRU5UCiAgICAgICBTcGVjaWZpZXMgdGhlIGFsaWdubWVudCBmb3IgdGhlIG91dHB1dCBpbWFnZSBmaWxlIGluIEtieXRlcy4gSWYgdGhlCiAgICAgICBzaXplIG9mIHRoZSBpbWFnZSBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGlzIHZhbHVlLCB0aGVuIHRoZSBzaXplIGlzCiAgICAgICByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoZSB2YWx1ZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMKICAgICAgICIxIi4gU2VlIDp0ZXJtOmBJTUFHRV9ST09URlNfU0laRWAgZm9yCiAgICAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFYAorICAgSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFCiAgICAgICBEZWZpbmVzIGFkZGl0aW9uYWwgZnJlZSBkaXNrIHNwYWNlIGNyZWF0ZWQgaW4gdGhlIGltYWdlIGluIEtieXRlcy4gQnkKICAgICAgIGRlZmF1bHQsIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICIwIi4gVGhpcyBmcmVlIGRpc2sgc3BhY2UgaXMgYWRkZWQKICAgICAgIHRvIHRoZSBpbWFnZSBhZnRlciB0aGUgYnVpbGQgc3lzdGVtIGRldGVybWluZXMgdGhlIGltYWdlIHNpemUgYXMKQEAgLTMzMDIsNyArMzMwMiw3IEBACiAKICAgICAgICAgIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICI0MTk0MzA0MCIKIAotICAgOnRlcm06YElNQUdFX1JPT1RGU19TSVpFYAorICAgSU1BR0VfUk9PVEZTX1NJWkUKICAgICAgIERlZmluZXMgdGhlIHNpemUgaW4gS2J5dGVzIGZvciB0aGUgZ2VuZXJhdGVkIGltYWdlLiBUaGUgT3BlbkVtYmVkZGVkCiAgICAgICBidWlsZCBzeXN0ZW0gZGV0ZXJtaW5lcyB0aGUgZmluYWwgc2l6ZSBmb3IgdGhlIGdlbmVyYXRlZCBpbWFnZSB1c2luZwogICAgICAgYW4gYWxnb3JpdGhtIHRoYXQgdGFrZXMgaW50byBhY2NvdW50IHRoZSBpbml0aWFsIGRpc2sgc3BhY2UgdXNlZCBmb3IKQEAgLTMzMjcsNyArMzMyNyw3IEBACiAgICAgICBhbmQgOnRlcm06YElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRWAKICAgICAgIHZhcmlhYmxlcyBmb3IgcmVsYXRlZCBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YElNQUdFX1RZUEVERVBgCisgICBJTUFHRV9UWVBFREVQCiAgICAgICBTcGVjaWZpZXMgYSBkZXBlbmRlbmN5IGZyb20gb25lIGltYWdlIHR5cGUgb24gYW5vdGhlci4gSGVyZSBpcyBhbgogICAgICAgZXhhbXBsZSBmcm9tIHRoZSA6cmVmOmBpbWFnZS1saXZlIDxyZWYtY2xhc3Nlcy1pbWFnZS1saXZlPmAgY2xhc3M6CiAgICAgICA6OgpAQCAtMzM0MCw3ICszMzQwLDcgQEAKICAgICAgIG9uZSBvZiB0aGUgY29tcG9uZW50cyBvZiB0aGUgbGl2ZSBpbWFnZSBpcyBhbiBgYGV4dDNgYCBmb3JtYXR0ZWQKICAgICAgIHBhcnRpdGlvbiBjb250YWluaW5nIHRoZSByb290IGZpbGVzeXN0ZW0uCiAKLSAgIDp0ZXJtOmBJTUFHRV9UWVBFU2AKKyAgIElNQUdFX1RZUEVTCiAgICAgICBTcGVjaWZpZXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIGltYWdlIHR5cGVzIGJ5IGRlZmF1bHQ6CiAKICAgICAgIC0gYnRyZnMKQEAgLTMzODUsNyArMzM4NSw3IEBACiAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSB0eXBlcyBvZiBpbWFnZXMsIHNlZQogICAgICAgYGBtZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMqLmJiY2xhc3NgYCBpbiB0aGUgOnRlcm06YFNvdXJjZSBEaXJlY3RvcnlgLgogCi0gICA6dGVybTpgSU5DX1BSYAorICAgSU5DX1BSCiAgICAgICBIZWxwcyBkZWZpbmUgdGhlIHJlY2lwZSByZXZpc2lvbiBmb3IgcmVjaXBlcyB0aGF0IHNoYXJlIGEgY29tbW9uCiAgICAgICBgYGluY2x1ZGVgYCBmaWxlLiBZb3UgY2FuIHRoaW5rIG9mIHRoaXMgdmFyaWFibGUgYXMgcGFydCBvZiB0aGUKICAgICAgIHJlY2lwZSByZXZpc2lvbiBhcyBzZXQgZnJvbSB3aXRoaW4gYW4gaW5jbHVkZSBmaWxlLgpAQCAtMzQyMyw3ICszNDIzLDcgQEAKICAgICAgIGxpbmVzIGluIHRoZSBleGFtcGxlIGFyZSBmcm9tIGluZGl2aWR1YWwgcmVjaXBlcyBhbmQgc2hvdyBob3cgdGhlCiAgICAgICBgYFBSYGAgdmFsdWUgaXMgc2V0LgogCi0gICA6dGVybTpgSU5DT01QQVRJQkxFX0xJQ0VOU0VgCisgICBJTkNPTVBBVElCTEVfTElDRU5TRQogICAgICAgU3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbGljZW5zZSBuYW1lcyAoYXMgdGhleSB3b3VsZAogICAgICAgYXBwZWFyIGluIDp0ZXJtOmBMSUNFTlNFYCkgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQKICAgICAgIGZyb20gdGhlIGJ1aWxkLiBSZWNpcGVzIHRoYXQgcHJvdmlkZSBubyBhbHRlcm5hdGl2ZXMgdG8gbGlzdGVkCkBAIC0zNDY1LDcgKzM0NjUsNyBAQAogICAgICAgICAgQ09NUEFUSUJMRV9MSUNFTlNFUwogICAgICAgICAgLCB0aHVzIG9ubHkgYWxsb3dpbmcgdGhlIGxhdHRlciBsaWNlbmNlcyB0byBiZSB1c2VkLgogCi0gICA6dGVybTpgSU5IRVJJVGAKKyAgIElOSEVSSVQKICAgICAgIENhdXNlcyB0aGUgbmFtZWQgY2xhc3Mgb3IgY2xhc3NlcyB0byBiZSBpbmhlcml0ZWQgZ2xvYmFsbHkuIEFub255bW91cwogICAgICAgZnVuY3Rpb25zIGluIHRoZSBjbGFzcyBvciBjbGFzc2VzIGFyZSBub3QgZXhlY3V0ZWQgZm9yIHRoZSBiYXNlCiAgICAgICBjb25maWd1cmF0aW9uIGFuZCBpbiBlYWNoIGluZGl2aWR1YWwgcmVjaXBlLiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkCkBAIC0zNDc1LDcgKzM0NzUsNyBAQAogICAgICAgOnJlZjpgYml0YmFrZTpiaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGE6XGBcYGluaGVyaXRcYFxgIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdGJha2UgVXNlciBNYW51YWwuCiAKLSAgIDp0ZXJtOmBJTkhFUklUX0RJU1RST2AKKyAgIElOSEVSSVRfRElTVFJPCiAgICAgICBMaXN0cyBjbGFzc2VzIHRoYXQgd2lsbCBiZSBpbmhlcml0ZWQgYXQgdGhlIGRpc3RyaWJ1dGlvbiBsZXZlbC4gSXQgaXMKICAgICAgIHVubGlrZWx5IHRoYXQgeW91IHdhbnQgdG8gZWRpdCB0aGlzIHZhcmlhYmxlLgogCkBAIC0zNDg1LDcgKzM0ODUsNyBAQAogCiAgICAgICAgICBJTkhFUklUX0RJU1RSTyA/PSAiZGViaWFuIGRldnNoZWxsIHNzdGF0ZSBsaWNlbnNlIgogCi0gICA6dGVybTpgSU5ISUJJVF9ERUZBVUxUX0RFUFNgCisgICBJTkhJQklUX0RFRkFVTFRfREVQUwogICAgICAgUHJldmVudHMgdGhlIGRlZmF1bHQgZGVwZW5kZW5jaWVzLCBuYW1lbHkgdGhlIEMgY29tcGlsZXIgYW5kIHN0YW5kYXJkCiAgICAgICBDIGxpYnJhcnkgKGxpYmMpLCBmcm9tIGJlaW5nIGFkZGVkIHRvIDp0ZXJtOmBERVBFTkRTYC4KICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXN1YWxseSB1c2VkIHdpdGhpbiByZWNpcGVzIHRoYXQgZG8gbm90IHJlcXVpcmUgYW55CkBAIC0zNDk0LDcgKzM0OTQsNyBAQAogICAgICAgU2V0IHRoZSB2YXJpYWJsZSB0byAiMSIgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBkZXBlbmRlbmNpZXMgZnJvbQogICAgICAgYmVpbmcgYWRkZWQuCiAKLSAgIDp0ZXJtOmBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVRgCisgICBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQKICAgICAgIFByZXZlbnRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGZyb20gc3BsaXR0aW5nIG91dCBkZWJ1ZwogICAgICAgaW5mb3JtYXRpb24gZHVyaW5nIHBhY2thZ2luZy4gQnkgZGVmYXVsdCwgdGhlIGJ1aWxkIHN5c3RlbSBzcGxpdHMgb3V0CiAgICAgICBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZHVyaW5nIHRoZQpAQCAtMzUxMCw3ICszNTEwLDcgQEAKIAogICAgICAgICAgSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCiAKLSAgIDp0ZXJtOmBJTkhJQklUX1BBQ0tBR0VfU1RSSVBgCisgICBJTkhJQklUX1BBQ0tBR0VfU1RSSVAKICAgICAgIElmIHNldCB0byAiMSIsIGNhdXNlcyB0aGUgYnVpbGQgdG8gbm90IHN0cmlwIGJpbmFyaWVzIGluIHJlc3VsdGluZwogICAgICAgcGFja2FnZXMgYW5kIHByZXZlbnRzIHRoZSBgYC1kYmdgYCBwYWNrYWdlIGZyb20gY29udGFpbmluZyB0aGUgc291cmNlCiAgICAgICBmaWxlcy4KQEAgLTM1MjAsNyArMzUyMCw3IEBACiAgICAgICBDb25zZXF1ZW50bHksIHlvdSBzaG91bGQgbm90IHNldCBgYElOSElCSVRfUEFDS0FHRV9TVFJJUGBgIHdoZW4geW91CiAgICAgICBwbGFuIHRvIGRlYnVnIGluIGdlbmVyYWwuCiAKLSAgIDp0ZXJtOmBJTkhJQklUX1NZU1JPT1RfU1RSSVBgCisgICBJTkhJQklUX1NZU1JPT1RfU1RSSVAKICAgICAgIElmIHNldCB0byAiMSIsIGNhdXNlcyB0aGUgYnVpbGQgdG8gbm90IHN0cmlwIGJpbmFyaWVzIGluIHRoZQogICAgICAgcmVzdWx0aW5nIHN5c3Jvb3QuCiAKQEAgLTM1NDQsNyArMzU0NCw3IEBACiAgICAgICAgICBzdHJpcHBhYmxlLCBvdGhlciBmaWxlcyBleGlzdCB0aGF0IGFyZSBuZWVkZWQgZm9yIHRoZSBidWlsZCB0aGF0CiAgICAgICAgICBhcmUgbm90IHN0cmlwcGFibGUuCiAKLSAgIDp0ZXJtOmBJTklUUkFNRlNfRlNUWVBFU2AKKyAgIElOSVRSQU1GU19GU1RZUEVTCiAgICAgICBEZWZpbmVzIHRoZSBmb3JtYXQgZm9yIHRoZSBvdXRwdXQgaW1hZ2Ugb2YgYW4gaW5pdGlhbCBSQU0gZmlsZXN5c3RlbQogICAgICAgKGluaXRyYW1mcyksIHdoaWNoIGlzIHVzZWQgZHVyaW5nIGJvb3QuIFN1cHBvcnRlZCBmb3JtYXRzIGFyZSB0aGUKICAgICAgIHNhbWUgYXMgdGhvc2Ugc3VwcG9ydGVkIGJ5IHRoZQpAQCAtMzU1Nyw3ICszNTU3LDcgQEAKICAgICAgIGBpbml0cmQgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luaXRyZD5gX18gbWVjaGFuaXNtLCBleHBlY3RzCiAgICAgICBhbiBvcHRpb25hbGx5IGNvbXByZXNzZWQgY3BpbyBhcmNoaXZlLgogCi0gICA6dGVybTpgSU5JVFJBTUZTX0lNQUdFYAorICAgSU5JVFJBTUZTX0lNQUdFCiAgICAgICBTcGVjaWZpZXMgdGhlIDp0ZXJtOmBQUk9WSURFU2AgbmFtZSBvZiBhbiBpbWFnZQogICAgICAgcmVjaXBlIHRoYXQgaXMgdXNlZCB0byBidWlsZCBhbiBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpCiAgICAgICBpbWFnZS4gSW4gb3RoZXIgd29yZHMsIHRoZSBgYElOSVRSQU1GU19JTUFHRWBgIHZhcmlhYmxlIGNhdXNlcyBhbgpAQCAtMzU5OCw3ICszNTk4LDcgQEAKICAgICAgIGltYWdlLCBzZWUgdGhlICI6cmVmOmBidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2VgIiBzZWN0aW9uCiAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBJTklUUkFNRlNfSU1BR0VfQlVORExFYAorICAgSU5JVFJBTUZTX0lNQUdFX0JVTkRMRQogICAgICAgQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGltYWdlIHJlY2lwZSBzcGVjaWZpZWQgYnkKICAgICAgIDp0ZXJtOmBJTklUUkFNRlNfSU1BR0VgIGlzIHJ1biB0aHJvdWdoIGFuCiAgICAgICBleHRyYSBwYXNzCkBAIC0zNjQ4LDcgKzM2NDgsNyBAQAogICAgICAgaW5pdHJhbWZzLCBzZWUgdGhlICI6cmVmOmBidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2VgIiBzZWN0aW9uCiAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBJTklUUkFNRlNfTElOS19OQU1FYAorICAgSU5JVFJBTUZTX0xJTktfTkFNRQogICAgICAgVGhlIGxpbmsgbmFtZSBvZiB0aGUgaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSBpbWFnZS4gVGhpcyB2YXJpYWJsZSBpcwogICAgICAgc2V0IGluIHRoZSBgYG1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzc2BgIGZpbGUgYXMKICAgICAgIGZvbGxvd3M6CkBAIC0zNjY2LDcgKzM2NjYsNyBAQAogICAgICAgU2VlIHRoZSA6dGVybTpgTUFDSElORWAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwKICAgICAgIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgSU5JVFJBTUZTX05BTUVgCisgICBJTklUUkFNRlNfTkFNRQogICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUgaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSBpbWFnZS4gVGhpcyB2YXJpYWJsZSBpcwogICAgICAgc2V0IGluIHRoZSBgYG1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzc2BgIGZpbGUgYXMKICAgICAgIGZvbGxvd3M6CkBAIC0zNjgwLDE0ICszNjgwLDE0IEBACiAKICAgICAgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCiAKLSAgIDp0ZXJtOmBJTklUUkRgCisgICBJTklUUkQKICAgICAgIEluZGljYXRlcyBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4KICAgICAgIGluaXRpYWwgUkFNIGRpc2sgKGBgaW5pdHJkYGApLgogCiAgICAgICBUaGUgYGBJTklUUkRgYCB2YXJpYWJsZSBpcyBhbiBvcHRpb25hbCB2YXJpYWJsZSB1c2VkIHdpdGggdGhlCiAgICAgICA6cmVmOmBpbWFnZS1saXZlIDxyZWYtY2xhc3Nlcy1pbWFnZS1saXZlPmAgY2xhc3MuCiAKLSAgIDp0ZXJtOmBJTklUUkRfSU1BR0VgCisgICBJTklUUkRfSU1BR0UKICAgICAgIFdoZW4gYnVpbGRpbmcgYSAibGl2ZSIgYm9vdGFibGUgaW1hZ2UgKGkuZS4gd2hlbgogICAgICAgOnRlcm06YElNQUdFX0ZTVFlQRVNgIGNvbnRhaW5zICJsaXZlIiksCiAgICAgICBgYElOSVRSRF9JTUFHRWBgIHNwZWNpZmllcyB0aGUgaW1hZ2UgcmVjaXBlIHRoYXQgc2hvdWxkIGJlIGJ1aWx0IHRvCkBAIC0zNjk3LDE0ICszNjk3LDE0IEBACiAgICAgICBTZWUgdGhlIDpyZWY6YGltYWdlLWxpdmUgPHJlZi1jbGFzc2VzLWltYWdlLWxpdmU+YCBjbGFzcyBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBJTklUU0NSSVBUX05BTUVgCisgICBJTklUU0NSSVBUX05BTUUKICAgICAgIFRoZSBmaWxlbmFtZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2NyaXB0IGFzIGluc3RhbGxlZCB0bwogICAgICAgYGAke3N5c2NvbmZkaXJ9L2luaXQuZGBgLgogCiAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gcmVjaXBlcyB3aGVuIHVzaW5nIGBgdXBkYXRlLXJjLmQuYmJjbGFzc2BgLgogICAgICAgVGhlIHZhcmlhYmxlIGlzIG1hbmRhdG9yeS4KIAotICAgOnRlcm06YElOSVRTQ1JJUFRfUEFDS0FHRVNgCisgICBJTklUU0NSSVBUX1BBQ0tBR0VTCiAgICAgICBBIGxpc3Qgb2YgdGhlIHBhY2thZ2VzIHRoYXQgY29udGFpbiBpbml0c2NyaXB0cy4gSWYgbXVsdGlwbGUgcGFja2FnZXMKICAgICAgIGFyZSBzcGVjaWZpZWQsIHlvdSBuZWVkIHRvIGFwcGVuZCB0aGUgcGFja2FnZSBuYW1lIHRvIHRoZSBvdGhlcgogICAgICAgYGBJTklUU0NSSVBUXypgYCBhcyBhbiBvdmVycmlkZS4KQEAgLTM3MTMsNyArMzcxMyw3IEBACiAgICAgICBUaGUgdmFyaWFibGUgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIHRoZSA6dGVybTpgUE5gCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YElOSVRTQ1JJUFRfUEFSQU1TYAorICAgSU5JVFNDUklQVF9QQVJBTVMKICAgICAgIFNwZWNpZmllcyB0aGUgb3B0aW9ucyB0byBwYXNzIHRvIGBgdXBkYXRlLXJjLmRgYC4gSGVyZSBpcyBhbiBleGFtcGxlOgogICAgICAgOjoKIApAQCAtMzczMCw3ICszNzMwLDcgQEAKICAgICAgIHBsZWFzZSBzZWUgdGhlIGBgdXBkYXRlLXJjLmRgYCBtYW51YWwgcGFnZSBhdAogICAgICAgaHR0cHM6Ly9tYW5wYWdlcy5kZWJpYW4ub3JnL2J1c3Rlci9pbml0LXN5c3RlbS1oZWxwZXJzL3VwZGF0ZS1yYy5kLjguZW4uaHRtbAogCi0gICA6dGVybTpgSU5TQU5FX1NLSVBgCisgICBJTlNBTkVfU0tJUAogICAgICAgU3BlY2lmaWVzIHRoZSBRQSBjaGVja3MgdG8gc2tpcCBmb3IgYSBzcGVjaWZpYyBwYWNrYWdlIHdpdGhpbiBhCiAgICAgICByZWNpcGUuIEZvciBleGFtcGxlLCB0byBza2lwIHRoZSBjaGVjayBmb3Igc3ltYm9saWMgbGluayBgYC5zb2BgCiAgICAgICBmaWxlcyBpbiB0aGUgbWFpbiBwYWNrYWdlIG9mIGEgcmVjaXBlLCBhZGQgdGhlIGZvbGxvd2luZyB0byB0aGUKQEAgLTM3NDMsMTkgKzM3NDMsMTkgQEAKICAgICAgIFNlZSB0aGUgIjpyZWY6YGluc2FuZS5iYmNsYXNzIDxyZWYtY2xhc3Nlcy1pbnNhbmU+YCIgc2VjdGlvbiBmb3IgYQogICAgICAgbGlzdCBvZiB0aGUgdmFsaWQgUUEgY2hlY2tzIHlvdSBjYW4gc3BlY2lmeSB1c2luZyB0aGlzIHZhcmlhYmxlLgogCi0gICA6dGVybTpgSU5TVEFMTF9USU1FWk9ORV9GSUxFYAorICAgSU5TVEFMTF9USU1FWk9ORV9GSUxFCiAgICAgICBCeSBkZWZhdWx0LCB0aGUgYGB0emRhdGFgYCByZWNpcGUgcGFja2FnZXMgYW4gYGAvZXRjL3RpbWV6b25lYGAgZmlsZS4KICAgICAgIFNldCB0aGUgYGBJTlNUQUxMX1RJTUVaT05FX0ZJTEVgYCB2YXJpYWJsZSB0byAiMCIgYXQgdGhlCiAgICAgICBjb25maWd1cmF0aW9uIGxldmVsIHRvIGRpc2FibGUgdGhpcyBiZWhhdmlvci4KIAotICAgOnRlcm06YElQS19GRUVEX1VSSVNgCisgICBJUEtfRkVFRF9VUklTCiAgICAgICBXaGVuIHRoZSBJUEsgYmFja2VuZCBpcyBpbiB1c2UgYW5kIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBlbmFibGVkIG9uCiAgICAgICB0aGUgdGFyZ2V0LCB5b3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIHRvIHNldCB1cCBgYG9wa2dgYCBpbiB0aGUKICAgICAgIHRhcmdldCBpbWFnZSB0byBwb2ludCB0byBwYWNrYWdlIGZlZWRzIG9uIGEgbm9taW5hdGVkIHNlcnZlci4gT25jZQogICAgICAgdGhlIGZlZWQgaXMgZXN0YWJsaXNoZWQsIHlvdSBjYW4gcGVyZm9ybSBpbnN0YWxsYXRpb25zIG9yIHVwZ3JhZGVzCiAgICAgICB1c2luZyB0aGUgcGFja2FnZSBtYW5hZ2VyIGF0IHJ1bnRpbWUuCiAKLSAgIDp0ZXJtOmBLQVJDSGAKKyAgIEtBUkNICiAgICAgICBEZWZpbmVzIHRoZSBrZXJuZWwgYXJjaGl0ZWN0dXJlIHVzZWQgd2hlbiBhc3NlbWJsaW5nIHRoZQogICAgICAgY29uZmlndXJhdGlvbi4gQXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgZm9yIHRoaXMgcmVsZWFzZSBhcmU6CiAKQEAgLTM3NjgsNyArMzc2OCw3IEBACiAKICAgICAgIFlvdSBkZWZpbmUgdGhlIGBgS0FSQ0hgYCB2YXJpYWJsZSBpbiB0aGUgOnJlZjpga2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkOmJzcCBkZXNjcmlwdGlvbnNgLgogCi0gICA6dGVybTpgS0JSQU5DSGAKKyAgIEtCUkFOQ0gKICAgICAgIEEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gZXhwbGljaXRseSBpZGVudGlmeQogICAgICAgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsIHBhdGNoZWQsIGFuZCBjb25maWd1cmVkIGR1cmluZyBhCiAgICAgICBidWlsZC4gWW91IG11c3Qgc2V0IHRoaXMgdmFyaWFibGUgdG8gZW5zdXJlIHRoZSBleGFjdCBrZXJuZWwgYnJhbmNoCkBAIC0zODAzLDcgKzM4MDMsNyBAQAogICAgICAgaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggdG8gdXNlIHdoZW4gYnVpbGRpbmcgZm9yIGVhY2ggc3VwcG9ydGVkCiAgICAgICBCU1AuCiAKLSAgIDp0ZXJtOmBLQlVJTERfREVGQ09ORklHYAorICAgS0JVSUxEX0RFRkNPTkZJRwogICAgICAgV2hlbiB1c2VkIHdpdGggdGhlIDpyZWY6YGtlcm5lbC15b2N0byA8cmVmLWNsYXNzZXMta2VybmVsLXlvY3RvPmAKICAgICAgIGNsYXNzLCBzcGVjaWZpZXMgYW4gImluLXRyZWUiIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHVzZQogICAgICAgZHVyaW5nIGEga2VybmVsIGJ1aWxkLgpAQCAtMzgzOSwxMiArMzgzOSwxMiBAQAogICAgICAgIjpyZWY6YGtlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb246dXNpbmcgYW4gImluLXRyZWUiIFxgXGBkZWZjb25maWdcYFxgIGZpbGVgIgogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgogCi0gICA6dGVybTpgS0VSTkVMX0FMVF9JTUFHRVRZUEVgCisgICBLRVJORUxfQUxUX0lNQUdFVFlQRQogICAgICAgU3BlY2lmaWVzIGFuIGFsdGVybmF0ZSBrZXJuZWwgaW1hZ2UgdHlwZSBmb3IgY3JlYXRpb24gaW4gYWRkaXRpb24gdG8KICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UgdHlwZSBzcGVjaWZpZWQgdXNpbmcgdGhlCiAgICAgICA6dGVybTpgS0VSTkVMX0lNQUdFVFlQRWAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBLRVJORUxfQVJUSUZBQ1RfTkFNRWAKKyAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FCiAgICAgICBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgYWxsIG9mIHRoZSBidWlsZCBhcnRpZmFjdHMuIFlvdSBjYW4gY2hhbmdlIHRoZQogICAgICAgbmFtZSBvZiB0aGUgYXJ0aWZhY3RzIGJ5IGNoYW5naW5nIHRoZSBgYEtFUk5FTF9BUlRJRkFDVF9OQU1FYGAKICAgICAgIHZhcmlhYmxlLgpAQCAtMzg2Myw3ICszODYzLDcgQEAKIAogICAgICAgICAgVGhlIElNQUdFX1ZFUlNJT05fU1VGRklYIHZhcmlhYmxlIGlzIHNldCB0byBEQVRFVElNRS4KIAotICAgOnRlcm06YEtFUk5FTF9DTEFTU0VTYAorICAgS0VSTkVMX0NMQVNTRVMKICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIGRlZmluaW5nIGtlcm5lbCBpbWFnZSB0eXBlcyB0aGF0IHRoZQogICAgICAgOnJlZjpga2VybmVsIDxyZWYtY2xhc3Nlcy1rZXJuZWw+YCBjbGFzcyBzaG91bGQgaW5oZXJpdC4gWW91CiAgICAgICB0eXBpY2FsbHkgYXBwZW5kIHRoaXMgdmFyaWFibGUgdG8gZW5hYmxlIGV4dGVuZGVkIGltYWdlIHR5cGVzLiBBbgpAQCAtMzg3Miw3ICszODcyLDcgQEAKICAgICAgIGN1c3RvbSBrZXJuZWwgaW1hZ2UgdHlwZXMgd2l0aCB0aGUgYGBrZXJuZWxgYCBjbGFzcyB1c2luZyB0aGlzCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YEtFUk5FTF9ERVZJQ0VUUkVFYAorICAgS0VSTkVMX0RFVklDRVRSRUUKICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIExpbnV4IGtlcm5lbCBkZXZpY2UgdHJlZSAoaS5lLgogICAgICAgdGhlIGBgLmR0YmBgKSBmaWxlLgogCkBAIC0zODg1LDcgKzM4ODUsNyBAQAogICAgICAgOnJlZjpga2VybmVsLWRldmljZXRyZWUgPHJlZi1jbGFzc2VzLWtlcm5lbC1kZXZpY2V0cmVlPmAgY2xhc3MgbXVzdAogICAgICAgYmUgaW5oZXJpdGVkLgogCi0gICA6dGVybTpgS0VSTkVMX0RUQl9MSU5LX05BTUVgCisgICBLRVJORUxfRFRCX0xJTktfTkFNRQogICAgICAgVGhlIGxpbmsgbmFtZSBvZiB0aGUga2VybmVsIGRldmljZSB0cmVlIGJpbmFyeSAoRFRCKS4gVGhpcyB2YXJpYWJsZQogICAgICAgaXMgc2V0IGluIHRoZSBgYG1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzc2BgIGZpbGUgYXMKICAgICAgIGZvbGxvd3M6CkBAIC0zOTAzLDcgKzM5MDMsNyBAQAogICAgICAgU2VlIHRoZSA6dGVybTpgTUFDSElORWAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwKICAgICAgIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgS0VSTkVMX0RUQl9OQU1FYAorICAgS0VSTkVMX0RUQl9OQU1FCiAgICAgICBUaGUgYmFzZSBuYW1lIG9mIHRoZSBrZXJuZWwgZGV2aWNlIHRyZWUgYmluYXJ5IChEVEIpLiBUaGlzIHZhcmlhYmxlCiAgICAgICBpcyBzZXQgaW4gdGhlIGBgbWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzYGAgZmlsZSBhcwogICAgICAgZm9sbG93czoKQEAgLTM5MTcsMTEgKzM5MTcsMTEgQEAKIAogICAgICAgICAgS0VSTkVMX0FSVElGQUNUX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0ke0lNQUdFX1ZFUlNJT05fU1VGRklYfSIKIAotICAgOnRlcm06YEtFUk5FTF9FWFRSQV9BUkdTYAorICAgS0VSTkVMX0VYVFJBX0FSR1MKICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIGBgbWFrZWBgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdGhlIE9wZW5FbWJlZGRlZAogICAgICAgYnVpbGQgc3lzdGVtIHBhc3NlcyBvbiB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsLgogCi0gICA6dGVybTpgS0VSTkVMX0ZFQVRVUkVTYAorICAgS0VSTkVMX0ZFQVRVUkVTCiAgICAgICBJbmNsdWRlcyBhZGRpdGlvbmFsIGtlcm5lbCBtZXRhZGF0YS4gSW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZAogICAgICAgc3lzdGVtLCB0aGUgZGVmYXVsdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKQogICAgICAgOnRlcm06YE1ldGFkYXRhYCBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZQpAQCAtMzk0OCw3ICszOTQ4LDcgQEAKICAgICAgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4NiA9ICIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKICAgICAgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02NCA9ICJjZmcvc291bmQuc2NjIgogCi0gICA6dGVybTpgS0VSTkVMX0ZJVF9MSU5LX05BTUVgCisgICBLRVJORUxfRklUX0xJTktfTkFNRQogICAgICAgVGhlIGxpbmsgbmFtZSBvZiB0aGUga2VybmVsIGZsYXR0ZW5lZCBpbWFnZSB0cmVlIChGSVQpIGltYWdlLiBUaGlzCiAgICAgICB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGBgbWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzYGAKICAgICAgIGZpbGUgYXMgZm9sbG93czoKQEAgLTM5NjYsNyArMzk2Niw3IEBACiAgICAgICBTZWUgdGhlIDp0ZXJtOmBNQUNISU5FYCB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbAogICAgICAgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBLRVJORUxfRklUX05BTUVgCisgICBLRVJORUxfRklUX05BTUUKICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBmbGF0dGVuZWQgaW1hZ2UgdHJlZSAoRklUKSBpbWFnZS4gVGhpcwogICAgICAgdmFyaWFibGUgaXMgc2V0IGluIHRoZSBgYG1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzc2BgCiAgICAgICBmaWxlIGFzIGZvbGxvd3M6CkBAIC0zOTgwLDcgKzM5ODAsNyBAQAogCiAgICAgICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgogCi0gICA6dGVybTpgS0VSTkVMX0lNQUdFX0xJTktfTkFNRWAKKyAgIEtFUk5FTF9JTUFHRV9MSU5LX05BTUUKICAgICAgIFRoZSBsaW5rIG5hbWUgZm9yIHRoZSBrZXJuZWwgaW1hZ2UuIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQogICAgICAgYGBtZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3NgYCBmaWxlIGFzIGZvbGxvd3M6CiAgICAgICA6OgpAQCAtMzk5Nyw3ICszOTk3LDcgQEAKICAgICAgIFNlZSB0aGUgOnRlcm06YE1BQ0hJTkVgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsCiAgICAgICBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YEtFUk5FTF9JTUFHRV9NQVhTSVpFYAorICAgS0VSTkVMX0lNQUdFX01BWFNJWkUKICAgICAgIFNwZWNpZmllcyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UgZmlsZSBpbiBraWxvYnl0ZXMuIElmCiAgICAgICBgYEtFUk5FTF9JTUFHRV9NQVhTSVpFYGAgaXMgc2V0LCB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlIGZpbGUgaXMKICAgICAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgc2V0IHZhbHVlIGR1cmluZyB0aGUKQEAgLTQwMTAsNyArNDAxMCw3IEBACiAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHdoaWNoIG1lYW5zIHRoZSBzaXplIG9mIHRoZQogICAgICAga2VybmVsIGltYWdlIGlzIG5vdCBjaGVja2VkLgogCi0gICA6dGVybTpgS0VSTkVMX0lNQUdFX05BTUVgCisgICBLRVJORUxfSU1BR0VfTkFNRQogICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGltYWdlLiBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKICAgICAgIGBgbWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzYGAgZmlsZSBhcyBmb2xsb3dzOgogICAgICAgOjoKQEAgLTQwMjQsNyArNDAyNCw3IEBACiAKICAgICAgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCiAKLSAgIDp0ZXJtOmBLRVJORUxfSU1BR0VUWVBFYAorICAgS0VSTkVMX0lNQUdFVFlQRQogICAgICAgVGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciBhIGRldmljZSwgdXN1YWxseSBzZXQgYnkgdGhlIG1hY2hpbmUKICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGRlZmF1bHRzIHRvICJ6SW1hZ2UiLiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQKICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGtlcm5lbCBhbmQgaXMgcGFzc2VkIHRvIGBgbWFrZWBgIGFzIHRoZSB0YXJnZXQgdG8KQEAgLTQwMzMsNyArNDAzMyw3IEBACiAgICAgICBJZiB5b3Ugd2FudCB0byBidWlsZCBhbiBhbHRlcm5hdGUga2VybmVsIGltYWdlIHR5cGUsIHVzZSB0aGUKICAgICAgIDp0ZXJtOmBLRVJORUxfQUxUX0lNQUdFVFlQRWAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBLRVJORUxfTU9EVUxFX0FVVE9MT0FEYAorICAgS0VSTkVMX01PRFVMRV9BVVRPTE9BRAogICAgICAgTGlzdHMga2VybmVsIG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlIGF1dG8tbG9hZGVkIGR1cmluZyBib290LgogCiAgICAgICAuLiBub3RlOjoKQEAgLTQwNjUsMTQgKzQwNjUsMTQgQEAKICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcG9wdWxhdGUgdGhlIGBgbW9kbmFtZS5jb25mYGAgZmlsZSB3aXRoCiAgICAgICBgYG1vZHByb2JlLmRgYCBzeW50YXggbGluZXMsIHNlZSB0aGUgOnRlcm06YEtFUk5FTF9NT0RVTEVfUFJPQkVDT05GYCB2YXJpYWJsZS4KIAotICAgOnRlcm06YEtFUk5FTF9NT0RVTEVfUFJPQkVDT05GYAorICAgS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYKICAgICAgIFByb3ZpZGVzIGEgbGlzdCBvZiBtb2R1bGVzIGZvciB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgZXhwZWN0cyB0byBmaW5kIGBgbW9kdWxlX2NvbmZfYGBcIG1vZG5hbWUgdmFsdWVzIHRoYXQgc3BlY2lmeQogICAgICAgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBvZiB0aGUgbW9kdWxlcy4gRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0bwogICAgICAgcHJvdmlkZSB0aG9zZSBtb2R1bGUgY29uZmlndXJhdGlvbnMsIHNlZSB0aGUKICAgICAgIDp0ZXJtOmBtb2R1bGVfY29uZl8qIDxtb2R1bGVfY29uZj5gIHZhcmlhYmxlLgogCi0gICA6dGVybTpgS0VSTkVMX1BBVEhgCisgICBLRVJORUxfUEFUSAogICAgICAgVGhlIGxvY2F0aW9uIG9mIHRoZSBrZXJuZWwgc291cmNlcy4gVGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIHZhbHVlCiAgICAgICBvZiB0aGUgOnRlcm06YFNUQUdJTkdfS0VSTkVMX0RJUmAgd2l0aGluCiAgICAgICB0aGUgOnJlZjpgbW9kdWxlIDxyZWYtY2xhc3Nlcy1tb2R1bGU+YCBjbGFzcy4gRm9yIGluZm9ybWF0aW9uIG9uCkBAIC00MDg2LDcgKzQwODYsNyBAQAogICAgICAgdGhlIGBgS0VSTkVMX1BBVEhgYCB2YXJpYWJsZS4gQm90aCB2YXJpYWJsZXMgYXJlIGNvbW1vbiB2YXJpYWJsZXMKICAgICAgIHVzZWQgYnkgZXh0ZXJuYWwgTWFrZWZpbGVzIHRvIHBvaW50IHRvIHRoZSBrZXJuZWwgc291cmNlIGRpcmVjdG9yeS4KIAotICAgOnRlcm06YEtFUk5FTF9TUkNgCisgICBLRVJORUxfU1JDCiAgICAgICBUaGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUKICAgICAgIG9mIHRoZSA6dGVybTpgU1RBR0lOR19LRVJORUxfRElSYCB3aXRoaW4KICAgICAgIHRoZSA6cmVmOmBtb2R1bGUgPHJlZi1jbGFzc2VzLW1vZHVsZT5gIGNsYXNzLiBGb3IgaW5mb3JtYXRpb24gb24KQEAgLTQxMDAsMTQgKzQxMDAsMTQgQEAKICAgICAgIHRvIHRoZSBgYEtFUk5FTF9TUkNgYCB2YXJpYWJsZS4gQm90aCB2YXJpYWJsZXMgYXJlIGNvbW1vbiB2YXJpYWJsZXMKICAgICAgIHVzZWQgYnkgZXh0ZXJuYWwgTWFrZWZpbGVzIHRvIHBvaW50IHRvIHRoZSBrZXJuZWwgc291cmNlIGRpcmVjdG9yeS4KIAotICAgOnRlcm06YEtFUk5FTF9WRVJTSU9OYAorICAgS0VSTkVMX1ZFUlNJT04KICAgICAgIFNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiB0aGUga2VybmVsIGFzIGV4dHJhY3RlZCBmcm9tIGBgdmVyc2lvbi5oYGAKICAgICAgIG9yIGBgdXRzcmVsZWFzZS5oYGAgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlcy4gRWZmZWN0cyBvZiBzZXR0aW5nCiAgICAgICB0aGlzIHZhcmlhYmxlIGRvIG5vdCB0YWtlIGFmZmVjdCB1bnRpbCB0aGUga2VybmVsIGhhcyBiZWVuCiAgICAgICBjb25maWd1cmVkLiBDb25zZXF1ZW50bHksIGF0dGVtcHRpbmcgdG8gcmVmZXIgdG8gdGhpcyB2YXJpYWJsZSBpbgogICAgICAgY29udGV4dHMgcHJpb3IgdG8gY29uZmlndXJhdGlvbiB3aWxsIG5vdCB3b3JrLgogCi0gICA6dGVybTpgS0VSTkVMREVQTU9EREVQRU5EYAorICAgS0VSTkVMREVQTU9EREVQRU5ECiAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSByZWZlcmVuY2VkIHRocm91Z2gKICAgICAgIDp0ZXJtOmBQS0dEQVRBX0RJUmAgaXMgbmVlZGVkIG9yIG5vdC4gVGhlCiAgICAgICBgYEtFUk5FTERFUE1PRERFUEVORGBgIGRvZXMgbm90IGNvbnRyb2wgd2hldGhlciBvciBub3QgdGhhdCBkYXRhCkBAIC00MTE2LDcgKzQxMTYsNyBAQAogICAgICAgYGBpbml0cmFtZnNgYCByZWNpcGUuIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRoZXJlIHdoZW4gdGhlIGRhdGEgaXMgbm90CiAgICAgICBuZWVkZWQgYXZvaWRzIGEgcG90ZW50aWFsIGRlcGVuZGVuY3kgbG9vcC4KIAotICAgOnRlcm06YEtGRUFUVVJFX0RFU0NSSVBUSU9OYAorICAgS0ZFQVRVUkVfREVTQ1JJUFRJT04KICAgICAgIFByb3ZpZGVzIGEgc2hvcnQgZGVzY3JpcHRpb24gb2YgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LiBZb3UgdXNlCiAgICAgICB0aGlzIHZhcmlhYmxlIGluIHRoZSBgYC5zY2NgYCBmaWxlIHRoYXQgZGVzY3JpYmVzIGEgY29uZmlndXJhdGlvbgogICAgICAgZnJhZ21lbnQgZmlsZS4gSGVyZSBpcyB0aGUgdmFyaWFibGUgdXNlZCBpbiBhIGZpbGUgbmFtZWQgYGBzbXAuc2NjYGAKQEAgLTQxMjUsNyArNDEyNSw3IEBACiAKICAgICAgICAgICBkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gIkVuYWJsZSBTTVAiCiAKLSAgIDp0ZXJtOmBLTUFDSElORWAKKyAgIEtNQUNISU5FCiAgICAgICBUaGUgbWFjaGluZSBhcyBrbm93biBieSB0aGUga2VybmVsLiBTb21ldGltZXMgdGhlIG1hY2hpbmUgbmFtZSB1c2VkCiAgICAgICBieSB0aGUga2VybmVsIGRvZXMgbm90IG1hdGNoIHRoZSBtYWNoaW5lIG5hbWUgdXNlZCBieSB0aGUKICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIEZvciBleGFtcGxlLCB0aGUgbWFjaGluZSBuYW1lIHRoYXQgdGhlCkBAIC00MTUzLDcgKzQxNTMsNyBAQAogICAgICAgSG93ZXZlciwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdW5kZXJzdGFuZHMgdGhlIG1hY2hpbmUgYXMKICAgICAgICJjb3JlMi0zMi1pbnRlbC1jb21tb24iLgogCi0gICA6dGVybTpgS1RZUEVgCisgICBLVFlQRQogICAgICAgRGVmaW5lcyB0aGUga2VybmVsIHR5cGUgdG8gYmUgdXNlZCBpbiBhc3NlbWJsaW5nIHRoZSBjb25maWd1cmF0aW9uLgogICAgICAgVGhlIGxpbnV4LXlvY3RvIHJlY2lwZXMgZGVmaW5lICJzdGFuZGFyZCIsICJ0aW55IiwgYW5kICJwcmVlbXB0LXJ0IgogICAgICAga2VybmVsIHR5cGVzLiBTZWUgdGhlICI6cmVmOmBrZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQ6a2VybmVsIHR5cGVzYCIKQEAgLTQxNjcsMTMgKzQxNjcsMTMgQEAKICAgICAgIDp0ZXJtOmBMSU5VWF9LRVJORUxfVFlQRWAgdmFsdWUgdXNlZCBieSB0aGUKICAgICAgIGtlcm5lbCByZWNpcGUuCiAKLSAgIDp0ZXJtOmBMQUJFTFNgCisgICBMQUJFTFMKICAgICAgIFByb3ZpZGVzIGEgbGlzdCBvZiB0YXJnZXRzIGZvciBhdXRvbWF0aWMgY29uZmlndXJhdGlvbi4KIAogICAgICAgU2VlIHRoZSA6cmVmOmBncnViLWVmaSA8cmVmLWNsYXNzZXMtZ3J1Yi1lZmk+YCBjbGFzcyBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZC4KIAotICAgOnRlcm06YExBWUVSREVQRU5EU2AKKyAgIExBWUVSREVQRU5EUwogICAgICAgTGlzdHMgdGhlIGxheWVycywgc2VwYXJhdGVkIGJ5IHNwYWNlcywgb24gd2hpY2ggdGhpcyByZWNpcGUgZGVwZW5kcy4KICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSBhIHNwZWNpZmljIGxheWVyIHZlcnNpb24gZm9yIGEgZGVwZW5kZW5jeQogICAgICAgYnkgYWRkaW5nIGl0IHRvIHRoZSBlbmQgb2YgdGhlIGxheWVyIG5hbWUuIEhlcmUgaXMgYW4gZXhhbXBsZToKQEAgLTQxOTAsMTMgKzQxOTAsMTMgQEAKICAgICAgIHRoZSBgYGNvbmYvbGF5ZXIuY29uZmBgIGZpbGUgYW5kIG11c3QgYmUgc3VmZml4ZWQgd2l0aCB0aGUgbmFtZSBvZgogICAgICAgdGhlIHNwZWNpZmljIGxheWVyIChlLmcuIGBgTEFZRVJERVBFTkRTX215bGF5ZXJgYCkuCiAKLSAgIDp0ZXJtOmBMQVlFUkRJUmAKKyAgIExBWUVSRElSCiAgICAgICBXaGVuIHVzZWQgaW5zaWRlIHRoZSBgYGxheWVyLmNvbmZgYCBjb25maWd1cmF0aW9uIGZpbGUsIHRoaXMgdmFyaWFibGUKICAgICAgIHByb3ZpZGVzIHRoZSBwYXRoIG9mIHRoZSBjdXJyZW50IGxheWVyLiBUaGlzIHZhcmlhYmxlIGlzIG5vdAogICAgICAgYXZhaWxhYmxlIG91dHNpZGUgb2YgYGBsYXllci5jb25mYGAgYW5kIHJlZmVyZW5jZXMgYXJlIGV4cGFuZGVkCiAgICAgICBpbW1lZGlhdGVseSB3aGVuIHBhcnNpbmcgb2YgdGhlIGZpbGUgY29tcGxldGVzLgogCi0gICA6dGVybTpgTEFZRVJSRUNPTU1FTkRTYAorICAgTEFZRVJSRUNPTU1FTkRTCiAgICAgICBMaXN0cyB0aGUgbGF5ZXJzLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCByZWNvbW1lbmRlZCBmb3IgdXNlIHdpdGggdGhpcwogICAgICAgbGF5ZXIuCiAKQEAgLTQyMTQsNyArNDIxNCw3IEBACiAgICAgICBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllciAoZS5nLgogICAgICAgYGBMQVlFUlJFQ09NTUVORFNfbXlsYXllcmBgKS4KIAotICAgOnRlcm06YExBWUVSU0VSSUVTX0NPTVBBVGAKKyAgIExBWUVSU0VSSUVTX0NPTVBBVAogICAgICAgTGlzdHMgdGhlIHZlcnNpb25zIG9mIHRoZSA6dGVybTpgT3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpYCBmb3Igd2hpY2gKICAgICAgIGEgbGF5ZXIgaXMgY29tcGF0aWJsZS4gVXNpbmcgdGhlIGBgTEFZRVJTRVJJRVNfQ09NUEFUYGAgdmFyaWFibGUKICAgICAgIGFsbG93cyB0aGUgbGF5ZXIgbWFpbnRhaW5lciB0byBpbmRpY2F0ZSB3aGljaCBjb21iaW5hdGlvbnMgb2YgdGhlCkBAIC00MjQzLDcgKzQyNDMsNyBAQAogICAgICAgU2VlIHRoZSAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpjcmVhdGluZyB5b3VyIG93biBsYXllcmAiCiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YExBWUVSVkVSU0lPTmAKKyAgIExBWUVSVkVSU0lPTgogICAgICAgT3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgYSBsYXllciBhcyBhIHNpbmdsZSBudW1iZXIuIFlvdQogICAgICAgY2FuIHVzZSB0aGlzIHdpdGhpbiA6dGVybTpgTEFZRVJERVBFTkRTYCBmb3IKICAgICAgIGFub3RoZXIgbGF5ZXIgaW4gb3JkZXIgdG8gZGVwZW5kIG9uIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgbGF5ZXIuCkBAIC00MjUxLDEwICs0MjUxLDEwIEBACiAgICAgICBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllciAoZS5nLgogICAgICAgYGBMQVlFUlZFUlNJT05fbXlsYXllcmBgKS4KIAotICAgOnRlcm06YExEYAorICAgTEQKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB1c2VkIHRvIHJ1biB0aGUgbGlua2VyLgogCi0gICA6dGVybTpgTERGTEFHU2AKKyAgIExERkxBR1MKICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgbGlua2VyLiBUaGlzIHZhcmlhYmxlIGlzIGV4cG9ydGVkCiAgICAgICB0byBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgdGh1cyBtYWRlIHZpc2libGUgdG8gdGhlIHNvZnR3YXJlCiAgICAgICBiZWluZyBidWlsdCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIHN0ZXAuCkBAIC00MjcxLDE0ICs0MjcxLDE0IEBACiAgICAgICAtICA6dGVybTpgQlVJTERTREtfTERGTEFHU2Agd2hlbiBidWlsZGluZyBmb3IKICAgICAgICAgIGFuIFNESyAoaS5lLiBgYG5hdGl2ZXNkay1gYCkKIAotICAgOnRlcm06YExFQURfU09OQU1FYAorICAgTEVBRF9TT05BTUUKICAgICAgIFNwZWNpZmllcyB0aGUgbGVhZCAob3IgcHJpbWFyeSkgY29tcGlsZWQgbGlicmFyeSBmaWxlIChpLmUuIGBgLnNvYGApCiAgICAgICB0aGF0IHRoZSA6cmVmOmBkZWJpYW4gPHJlZi1jbGFzc2VzLWRlYmlhbj5gIGNsYXNzIGFwcGxpZXMgaXRzCiAgICAgICBuYW1pbmcgcG9saWN5IHRvIGdpdmVuIGEgcmVjaXBlIHRoYXQgcGFja2FnZXMgbXVsdGlwbGUgbGlicmFyaWVzLgogCiAgICAgICBUaGlzIHZhcmlhYmxlIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGBgZGViaWFuYGAgY2xhc3MuCiAKLSAgIDp0ZXJtOmBMSUNfRklMRVNfQ0hLU1VNYAorICAgTElDX0ZJTEVTX0NIS1NVTQogICAgICAgQ2hlY2tzdW1zIG9mIHRoZSBsaWNlbnNlIHRleHQgaW4gdGhlIHJlY2lwZSBzb3VyY2UgY29kZS4KIAogICAgICAgVGhpcyB2YXJpYWJsZSB0cmFja3MgY2hhbmdlcyBpbiBsaWNlbnNlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlCkBAIC00MjkyLDcgKzQyOTIsNyBAQAogICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgIjpyZWY6YHVzaW5ncG9reS1jb25maWd1cmluZy1saWNfZmlsZXNfY2hrc3VtYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgTElDRU5TRWAKKyAgIExJQ0VOU0UKICAgICAgIFRoZSBsaXN0IG9mIHNvdXJjZSBsaWNlbnNlcyBmb3IgdGhlIHJlY2lwZS4gRm9sbG93IHRoZXNlIHJ1bGVzOgogCiAgICAgICAtICBEbyBub3QgdXNlIHNwYWNlcyB3aXRoaW4gaW5kaXZpZHVhbCBsaWNlbnNlIG5hbWVzLgpAQCAtNDMzNSw3ICs0MzM1LDcgQEAKICAgICAgICAgIExJQ0VOU0VfJHtQTn0gPSAiR1BMdjIiCiAgICAgICAgICBMSUNFTlNFXyR7UE59LWRvYyA9ICJHRkRMLTEuMiIKIAotICAgOnRlcm06YExJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0VgCisgICBMSUNFTlNFX0NSRUFURV9QQUNLQUdFCiAgICAgICBTZXR0aW5nIGBgTElDRU5TRV9DUkVBVEVfUEFDS0FHRWBgIHRvICIxIiBjYXVzZXMgdGhlIE9wZW5FbWJlZGRlZAogICAgICAgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhbiBleHRyYSBwYWNrYWdlIChpLmUuCiAgICAgICBgYCR7YGBcIDp0ZXJtOmBQTmBcIGBgfS1saWNgYCkgZm9yIGVhY2ggcmVjaXBlIGFuZCB0byBhZGQKQEAgLTQzNTgsNyArNDM1OCw3IEBACiAgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpwcm92aWRpbmcgbGljZW5zZSB0ZXh0YCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgTElDRU5TRV9GTEFHU2AKKyAgIExJQ0VOU0VfRkxBR1MKICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIGZsYWdzIGZvciBhIHJlY2lwZSB5b3UgbXVzdCB3aGl0ZWxpc3QgdGhyb3VnaAogICAgICAgOnRlcm06YExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUYCBpbgogICAgICAgb3JkZXIgdG8gYWxsb3cgdGhlIHJlY2lwZSB0byBiZSBidWlsdC4gV2hlbiBwcm92aWRpbmcgbXVsdGlwbGUgZmxhZ3MsCkBAIC00MzcxLDcgKzQzNzEsNyBAQAogICAgICAgIjpyZWY6YGRldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3M6ZW5hYmxpbmcgY29tbWVyY2lhbGx5IGxpY2Vuc2VkIHJlY2lwZXNgIgogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVGAKKyAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUCiAgICAgICBMaXN0cyBsaWNlbnNlIGZsYWdzIHRoYXQgd2hlbiBzcGVjaWZpZWQgaW4KICAgICAgIDp0ZXJtOmBMSUNFTlNFX0ZMQUdTYCB3aXRoaW4gYSByZWNpcGUgc2hvdWxkIG5vdAogICAgICAgcHJldmVudCB0aGF0IHJlY2lwZSBmcm9tIGJlaW5nIGJ1aWx0LiBUaGlzIHByYWN0aWNlIGlzIG90aGVyd2lzZQpAQCAtNDM3OSw3ICs0Mzc5LDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOmVuYWJsaW5nIGNvbW1lcmNpYWxseSBsaWNlbnNlZCByZWNpcGVzYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgTElDRU5TRV9QQVRIYAorICAgTElDRU5TRV9QQVRICiAgICAgICBQYXRoIHRvIGFkZGl0aW9uYWwgbGljZW5zZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLiBCeSBkZWZhdWx0LCB0aGUKICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBgYENPTU1PTl9MSUNFTlNFX0RJUmBgIHRvIGRlZmluZSB0aGUKICAgICAgIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGNvbW1vbiBsaWNlbnNlIHRleHQgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLiBUaGUKQEAgLTQzODksNyArNDM4OSw3IEBACiAKICAgICAgICAgIExJQ0VOU0VfUEFUSCArPSAicGF0aC10by1hZGRpdGlvbmFsLWNvbW1vbi1saWNlbnNlcyIKIAotICAgOnRlcm06YExJTlVYX0tFUk5FTF9UWVBFYAorICAgTElOVVhfS0VSTkVMX1RZUEUKICAgICAgIERlZmluZXMgdGhlIGtlcm5lbCB0eXBlIHRvIGJlIHVzZWQgaW4gYXNzZW1ibGluZyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgIFRoZSBsaW51eC15b2N0byByZWNpcGVzIGRlZmluZSAic3RhbmRhcmQiLCAidGlueSIsIGFuZCAicHJlZW1wdC1ydCIKICAgICAgIGtlcm5lbCB0eXBlcy4gU2VlIHRoZSAiOnJlZjpga2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkOmtlcm5lbCB0eXBlc2AiCkBAIC00NDA0LDcgKzQ0MDQsNyBAQAogICAgICAga2VybmVsIDp0ZXJtOmBNZXRhZGF0YWAgd2l0aCB3aGljaCB0byBidWlsZCBvdXQgdGhlIHNvdXJjZXMKICAgICAgIGFuZCBjb25maWd1cmF0aW9uLgogCi0gICA6dGVybTpgTElOVVhfVkVSU0lPTmAKKyAgIExJTlVYX1ZFUlNJT04KICAgICAgIFRoZSBMaW51eCB2ZXJzaW9uIGZyb20gYGBrZXJuZWwub3JnYGAgb24gd2hpY2ggdGhlIExpbnV4IGtlcm5lbCBpbWFnZQogICAgICAgYmVpbmcgYnVpbHQgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQuIFlvdSBkZWZpbmUKICAgICAgIHRoaXMgdmFyaWFibGUgaW4gdGhlIGtlcm5lbCByZWNpcGUuIEZvciBleGFtcGxlLCB0aGUKQEAgLTQ0MjAsNyArNDQyMCw3IEBACiAKICAgICAgICAgIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKLSAgIDp0ZXJtOmBMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTmAKKyAgIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OCiAgICAgICBBIHN0cmluZyBleHRlbnNpb24gY29tcGlsZWQgaW50byB0aGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIExpbnV4CiAgICAgICBrZXJuZWwgYnVpbHQgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4gWW91IGRlZmluZSB0aGlzCiAgICAgICB2YXJpYWJsZSBpbiB0aGUga2VybmVsIHJlY2lwZS4gRm9yIGV4YW1wbGUsIHRoZSBsaW51eC15b2N0byBrZXJuZWwKQEAgLTQ0MzgsMTQgKzQ0MzgsMTQgQEAKICAgICAgICAgICQgdW5hbWUgLXIKICAgICAgICAgIDMuNy4wLXJjOC1jdXN0b20KIAotICAgOnRlcm06YExPR19ESVJgCisgICBMT0dfRElSCiAgICAgICBTcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSB0byB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3cml0ZXMKICAgICAgIG92ZXJhbGwgbG9nIGZpbGVzLiBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXMgYGAke1RNUERJUn0vbG9nYGAuCiAKICAgICAgIEZvciB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbG9ncyBzcGVjaWZpYyB0byBlYWNoIHRhc2ssIHNlZSB0aGUKICAgICAgIDp0ZXJtOmBUYCB2YXJpYWJsZS4KIAotICAgOnRlcm06YE1BQ0hJTkVgCisgICBNQUNISU5FCiAgICAgICBTcGVjaWZpZXMgdGhlIHRhcmdldCBkZXZpY2UgZm9yIHdoaWNoIHRoZSBpbWFnZSBpcyBidWlsdC4gWW91IGRlZmluZQogICAgICAgYGBNQUNISU5FYGAgaW4gdGhlIGBgbG9jYWwuY29uZmBgIGZpbGUgZm91bmQgaW4gdGhlCiAgICAgICA6dGVybTpgQnVpbGQgRGlyZWN0b3J5YC4gQnkgZGVmYXVsdCwgYGBNQUNISU5FYGAgaXMgc2V0IHRvCkBAIC00NDg4LDEzICs0NDg4LDEzIEBACiAgICAgICAgICBNQUNISU5FCiAgICAgICAgICAuCiAKLSAgIDp0ZXJtOmBNQUNISU5FX0FSQ0hgCisgICBNQUNISU5FX0FSQ0gKICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgbWFjaGluZS1zcGVjaWZpYyBhcmNoaXRlY3R1cmUuIFRoaXMKICAgICAgIHZhcmlhYmxlIGlzIHNldCBhdXRvbWF0aWNhbGx5IGZyb20gOnRlcm06YE1BQ0hJTkVgIG9yCiAgICAgICA6dGVybTpgVFVORV9QS0dBUkNIYC4gWW91IHNob3VsZCBub3QgaGFuZC1lZGl0CiAgICAgICB0aGUgYGBNQUNISU5FX0FSQ0hgYCB2YXJpYWJsZS4KIAotICAgOnRlcm06YE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTYAorICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMKICAgICAgIEEgbGlzdCBvZiByZXF1aXJlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZgogICAgICAgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBUaGUgYnVpbGQgcHJvY2VzcyBkZXBlbmRzIG9uIHRoZXNlIHBhY2thZ2VzCiAgICAgICBiZWluZyBwcmVzZW50LiBGdXJ0aGVybW9yZSwgYmVjYXVzZSB0aGlzIGlzIGEgIm1hY2hpbmUtZXNzZW50aWFsIgpAQCAtNDUxNyw3ICs0NTE3LDcgQEAKIAogICAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMgKz0gImV4YW1wbGUtaW5pdCIKIAotICAgOnRlcm06YE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTYAorICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMKICAgICAgIEEgbGlzdCBvZiByZWNvbW1lbmRlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZgogICAgICAgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBUaGUgYnVpbGQgcHJvY2VzcyBkb2VzIG5vdCBkZXBlbmQgb24gdGhlc2UKICAgICAgIHBhY2thZ2VzIGJlaW5nIHByZXNlbnQuIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBpcyBhCkBAIC00NTYyLDcgKzQ1NjIsNyBAQAogICAgICAgU29tZSBleGFtcGxlcyBvZiB0aGVzZSBtYWNoaW5lIGVzc2VudGlhbHMgYXJlIGZsYXNoLCBzY3JlZW4sCiAgICAgICBrZXlib2FyZCwgbW91c2UsIG9yIHRvdWNoc2NyZWVuIGRyaXZlcnMgKGRlcGVuZGluZyBvbiB0aGUgbWFjaGluZSkuCiAKLSAgIDp0ZXJtOmBNQUNISU5FX0VYVFJBX1JERVBFTkRTYAorICAgTUFDSElORV9FWFRSQV9SREVQRU5EUwogICAgICAgQSBsaXN0IG9mIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mIHRoZSBpbWFnZQogICAgICAgYmVpbmcgYnVpbHQgdGhhdCBhcmUgbm90IGVzc2VudGlhbCBmb3IgdGhlIG1hY2hpbmUgdG8gYm9vdC4gSG93ZXZlciwKICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIGZvciBtb3JlIGZ1bGx5LWZlYXR1cmVkIGltYWdlcyBkZXBlbmRzIG9uIHRoZQpAQCAtNDU4OSw3ICs0NTg5LDcgQEAKIAogICAgICAgICAgTUFDSElORV9FWFRSQV9SREVQRU5EUyArPSAid2lmaWRyaXZlci1maXJtd2FyZSIKIAotICAgOnRlcm06YE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFNgCisgICBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTCiAgICAgICBBIGxpc3Qgb2YgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlCiAgICAgICBiZWluZyBidWlsdCB0aGF0IGFyZSBub3QgZXNzZW50aWFsIGZvciBib290aW5nIHRoZSBtYWNoaW5lLiBUaGUgaW1hZ2UKICAgICAgIGJlaW5nIGJ1aWx0IGhhcyBubyBidWlsZCBkZXBlbmRlbmN5IG9uIHRoaXMgbGlzdCBvZiBwYWNrYWdlcy4KQEAgLTQ2MTYsNyArNDYxNiw3IEBACiAKICAgICAgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGUtZXhhbXBsZXdpZmkiCiAKLSAgIDp0ZXJtOmBNQUNISU5FX0ZFQVRVUkVTYAorICAgTUFDSElORV9GRUFUVVJFUwogICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIGhhcmR3YXJlIGZlYXR1cmVzIHRoZQogICAgICAgOnRlcm06YE1BQ0hJTkVgIGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZy4gRm9yIHJlbGF0ZWQKICAgICAgIGluZm9ybWF0aW9uIG9uIGVuYWJsaW5nIGZlYXR1cmVzLCBzZWUgdGhlCkBAIC00NjI4LDcgKzQ2MjgsNyBAQAogICAgICAgc2hpcHBlZCwgc2VlIHRoZSAiYE1hY2hpbmUgRmVhdHVyZXMgPCNyZWYtZmVhdHVyZXMtbWFjaGluZT5gX18iCiAgICAgICBzZWN0aW9uLgogCi0gICA6dGVybTpgTUFDSElORV9GRUFUVVJFU19CQUNLRklMTGAKKyAgIE1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTEwKICAgICAgIEZlYXR1cmVzIHRvIGJlIGFkZGVkIHRvIGBgTUFDSElORV9GRUFUVVJFU2BgIGlmIG5vdCBhbHNvIHByZXNlbnQgaW4KICAgICAgIGBgTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEYGAuCiAKQEAgLTQ2MzksMTMgKzQ2MzksMTMgQEAKICAgICAgIEJhY2tmaWxsaW5nIDwjcmVmLWZlYXR1cmVzLWJhY2tmaWxsPmBfXyIgc2VjdGlvbiBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURgCisgICBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQKICAgICAgIEZlYXR1cmVzIGZyb20gYGBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMYGAgdGhhdCBzaG91bGQgbm90IGJlCiAgICAgICBiYWNrZmlsbGVkIChpLmUuIGFkZGVkIHRvIGBgTUFDSElORV9GRUFUVVJFU2BgKSBkdXJpbmcgdGhlIGJ1aWxkLiBTZWUKICAgICAgIHRoZSAiYEZlYXR1cmUgQmFja2ZpbGxpbmcgPCNyZWYtZmVhdHVyZXMtYmFja2ZpbGw+YF9fIiBzZWN0aW9uIGZvcgogICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YE1BQ0hJTkVPVkVSUklERVNgCisgICBNQUNISU5FT1ZFUlJJREVTCiAgICAgICBBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIG92ZXJyaWRlcyB0aGF0IGFwcGx5IHRvIHRoZSBjdXJyZW50CiAgICAgICBtYWNoaW5lLiBCeSBkZWZhdWx0LCB0aGlzIGxpc3QgaW5jbHVkZXMgdGhlIHZhbHVlIG9mCiAgICAgICA6dGVybTpgTUFDSElORWAuCkBAIC00NjczLDEwICs0NjczLDEwIEBACiAgICAgICBgYE1BQ0hJTkVPVkVSUklERVNgYCBpcyBzaW1wbHkgdGhhdCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdAogICAgICAgdmFsdWUgb2YgOnRlcm06YE9WRVJSSURFU2AuCiAKLSAgIDp0ZXJtOmBNQUlOVEFJTkVSYAorICAgTUFJTlRBSU5FUgogICAgICAgVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGRpc3RyaWJ1dGlvbiBtYWludGFpbmVyLgogCi0gICA6dGVybTpgTUlSUk9SU2AKKyAgIE1JUlJPUlMKICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIHBhdGhzIGZyb20gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KICAgICAgIGdldHMgc291cmNlIGNvZGUuIFdoZW4gdGhlIGJ1aWxkIHN5c3RlbSBzZWFyY2hlcyBmb3Igc291cmNlIGNvZGUsIGl0CiAgICAgICBmaXJzdCB0cmllcyB0aGUgbG9jYWwgZG93bmxvYWQgZGlyZWN0b3J5LiBJZiB0aGF0IGxvY2F0aW9uIGZhaWxzLCB0aGUKQEAgLTQ2ODgsNyArNDY4OCw3IEBACiAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYGBNSVJST1JTYGAgaXMgZGVmaW5lZCBpbiB0aGUKICAgICAgIGBgY29uZi9kaXN0cm8vcG9reS5jb25mYGAgZmlsZSBpbiB0aGUgYGBtZXRhLXBva3lgYCBHaXQgcmVwb3NpdG9yeS4KIAotICAgOnRlcm06YE1MUFJFRklYYAorICAgTUxQUkVGSVgKICAgICAgIFNwZWNpZmllcyBhIHByZWZpeCBoYXMgYmVlbiBhZGRlZCB0byA6dGVybTpgUE5gIHRvIGNyZWF0ZSBhCiAgICAgICBzcGVjaWFsIHZlcnNpb24gb2YgYSByZWNpcGUgb3IgcGFja2FnZSAoaS5lLiBhIE11bHRpbGliIHZlcnNpb24pLiBUaGUKICAgICAgIHZhcmlhYmxlIGlzIHVzZWQgaW4gcGxhY2VzIHdoZXJlIHRoZSBwcmVmaXggbmVlZHMgdG8gYmUgYWRkZWQgdG8gb3IKQEAgLTQ3NzUsMTIgKzQ3NzUsMTIgQEAKICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3BlY2lmeSBrZXJuZWwgbW9kdWxlcyB0byBhdXRvLWxvYWQgb24KICAgICAgIGJvb3QsIHNlZSB0aGUgOnRlcm06YEtFUk5FTF9NT0RVTEVfQVVUT0xPQURgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgTU9EVUxFX1RBUkJBTExfREVQTE9ZYAorICAgTU9EVUxFX1RBUkJBTExfREVQTE9ZCiAgICAgICBDb250cm9scyBjcmVhdGlvbiBvZiB0aGUgYGBtb2R1bGVzLSoudGd6YGAgZmlsZS4gU2V0IHRoaXMgdmFyaWFibGUgdG8KICAgICAgICIwIiB0byBkaXNhYmxlIGNyZWF0aW9uIG9mIHRoaXMgZmlsZSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZQogICAgICAga2VybmVsIG1vZHVsZXMgcmVzdWx0aW5nIGZyb20gYSBrZXJuZWwgYnVpbGQuCiAKLSAgIDp0ZXJtOmBNT0RVTEVfVEFSQkFMTF9MSU5LX05BTUVgCisgICBNT0RVTEVfVEFSQkFMTF9MSU5LX05BTUUKICAgICAgIFRoZSBsaW5rIG5hbWUgb2YgdGhlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbC4gVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4KICAgICAgIHRoZSBgYG1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzc2BgIGZpbGUgYXMgZm9sbG93czoKICAgICAgIDo6CkBAIC00Nzk2LDcgKzQ3OTYsNyBAQAogCiAgICAgICBTZWUgdGhlIDp0ZXJtOmBNQUNISU5FYCB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YE1PRFVMRV9UQVJCQUxMX05BTUVgCisgICBNT0RVTEVfVEFSQkFMTF9OQU1FCiAgICAgICBUaGUgYmFzZSBuYW1lIG9mIHRoZSBrZXJuZWwgbW9kdWxlIHRhcmJhbGwuIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluCiAgICAgICB0aGUgYGBtZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3NgYCBmaWxlIGFzIGZvbGxvd3M6CiAgICAgICA6OgpAQCAtNDgwOSw3ICs0ODA5LDcgQEAKIAogICAgICAgICAgS0VSTkVMX0FSVElGQUNUX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0ke0lNQUdFX1ZFUlNJT05fU1VGRklYfSIKIAotICAgOnRlcm06YE1VTFRJTUFDSF9UQVJHRVRfU1lTYAorICAgTVVMVElNQUNIX1RBUkdFVF9TWVMKICAgICAgIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBzeXN0ZW0gZm9yIHdoaWNoIHBhY2thZ2VzCiAgICAgICBhcmUgYmVpbmcgYnVpbHQuIFRoaXMgdmFyaWFibGUgYWxsb3dzIG91dHB1dCBmb3IgZGlmZmVyZW50IHR5cGVzIG9mCiAgICAgICB0YXJnZXQgc3lzdGVtcyB0byBiZSBwdXQgaW50byBkaWZmZXJlbnQgc3ViZGlyZWN0b3JpZXMgb2YgdGhlIHNhbWUKQEAgLTQ4MjcsNyArNDgyNyw3IEBACiAgICAgICBTZWUgdGhlIDp0ZXJtOmBTVEFNUGAgdmFyaWFibGUgZm9yIGFuIGV4YW1wbGUuIFNlZSB0aGUKICAgICAgIDp0ZXJtOmBTVEFHSU5HX0RJUl9UQVJHRVRgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgTkFUSVZFTFNCU1RSSU5HYAorICAgTkFUSVZFTFNCU1RSSU5HCiAgICAgICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgaG9zdCBkaXN0cmlidXRpb24uIFN0cmluZ3MgY29uc2lzdCBvZiB0aGUKICAgICAgIGhvc3QgZGlzdHJpYnV0b3IgSUQgZm9sbG93ZWQgYnkgdGhlIHJlbGVhc2UsIGFzIHJlcG9ydGVkIGJ5IHRoZQogICAgICAgYGBsc2JfcmVsZWFzZWBgIHRvb2wgb3IgYXMgcmVhZCBmcm9tIGBgL2V0Yy9sc2ItcmVsZWFzZWBgLiBGb3IKQEAgLTQ4NDIsMTAgKzQ4NDIsMTAgQEAKICAgICAgIDp0ZXJtOmBTQU5JVFlfVEVTVEVEX0RJU1RST1NgIGlmIHRoYXQKICAgICAgIHZhcmlhYmxlIGlzIHNldC4KIAotICAgOnRlcm06YE5NYAorICAgTk0KICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gYGBubWBgLgogCi0gICA6dGVybTpgTk9fR0VORVJJQ19MSUNFTlNFYAorICAgTk9fR0VORVJJQ19MSUNFTlNFCiAgICAgICBBdm9pZHMgUUEgZXJyb3JzIHdoZW4geW91IHVzZSBhIG5vbi1jb21tb24sIG5vbi1DTE9TRUQgbGljZW5zZSBpbiBhCiAgICAgICByZWNpcGUuIFBhY2thZ2VzIGV4aXN0LCBzdWNoIGFzIHRoZSBsaW51eC1maXJtd2FyZSBwYWNrYWdlLCB3aXRoIG1hbnkKICAgICAgIGxpY2Vuc2VzIHRoYXQgYXJlIG5vdCBpbiBhbnkgd2F5IGNvbW1vbi4gQWxzbywgbmV3IGxpY2Vuc2VzIGFyZSBhZGRlZApAQCAtNDg2Nyw3ICs0ODY3LDcgQEAKIAogICAgICAgICAgTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5TRS5BYmlsaXMudHh0IgogCi0gICA6dGVybTpgTk9fUkVDT01NRU5EQVRJT05TYAorICAgTk9fUkVDT01NRU5EQVRJT05TCiAgICAgICBQcmV2ZW50cyBpbnN0YWxsYXRpb24gb2YgYWxsICJyZWNvbW1lbmRlZC1vbmx5IiBwYWNrYWdlcy4KICAgICAgIFJlY29tbWVuZGVkLW9ubHkgcGFja2FnZXMgYXJlIHBhY2thZ2VzIGluc3RhbGxlZCBvbmx5IHRocm91Z2ggdGhlCiAgICAgICA6dGVybTpgUlJFQ09NTUVORFNgIHZhcmlhYmxlKS4gU2V0dGluZyB0aGUKQEAgLTQ5MDAsNyArNDkwMCw3IEBACiAgICAgICB0aGUgOnRlcm06YFBBQ0tBR0VfRVhDTFVERWAgdmFyaWFibGVzIGZvcgogICAgICAgcmVsYXRlZCBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YE5PQVVUT1BBQ0tBR0VERUJVR2AKKyAgIE5PQVVUT1BBQ0tBR0VERUJVRwogICAgICAgRGlzYWJsZXMgYXV0byBwYWNrYWdlIGZyb20gc3BsaXR0aW5nIGBgLmRlYnVnYGAgZmlsZXMuIElmIGEgcmVjaXBlCiAgICAgICByZXF1aXJlcyBgYEZJTEVTXyR7UE59LWRiZ2BgIHRvIGJlIHNldCBtYW51YWxseSwgdGhlCiAgICAgICBgYE5PQVVUT1BBQ0tBR0VERUJVR2BgIGNhbiBiZSBkZWZpbmVkIGFsbG93aW5nIHlvdSB0byBkZWZpbmUgdGhlCkBAIC00OTEyLDEzICs0OTEyLDEzIEBACiAgICAgICAgICBGSUxFU18ke1BOfS1kYmcgPSAiL3Vzci9zcmMvZGVidWcvIgogICAgICAgICAgRklMRVNfJHtRVF9CQVNFX05BTUV9LWRlbW9zLWRvYyA9ICIke2RvY2Rpcn0vJHtRVF9ESVJfTkFNRX0vcWNoL3F0LnFjaCIKIAotICAgOnRlcm06YE9CSkNPUFlgCisgICBPQkpDT1BZCiAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIGBgb2JqY29weWBgLgogCi0gICA6dGVybTpgT0JKRFVNUGAKKyAgIE9CSkRVTVAKICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gYGBvYmpkdW1wYGAuCiAKLSAgIDp0ZXJtOmBPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFYAorICAgT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRQogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmBiaW5jb25maWcgPHJlZi1jbGFzc2VzLWJpbmNvbmZpZz5gIGNsYXNzLAogICAgICAgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSAic2VkIgogICAgICAgY29tbWFuZC4gVGhlIHNlZCBjb21tYW5kIGFsdGVycyBhbnkgcGF0aHMgaW4gY29uZmlndXJhdGlvbiBzY3JpcHRzCkBAIC00OTMzLDcgKzQ5MzMsNyBAQAogICAgICAgaW5mb3JtYXRpb24gb24gdGhlIGBgYmluY29uZmlnYGAgY2xhc3MsIHNlZSB0aGUKICAgICAgICI6cmVmOmBiaW5jb25maWcuYmJjbGFzcyA8cmVmLWNsYXNzZXMtYmluY29uZmlnPmAiIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBPRV9JTVBPUlRTYAorICAgT0VfSU1QT1JUUwogICAgICAgQW4gaW50ZXJuYWwgdmFyaWFibGUgdXNlZCB0byB0ZWxsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoYXQKICAgICAgIFB5dGhvbiBtb2R1bGVzIHRvIGltcG9ydCBmb3IgZXZlcnkgUHl0aG9uIGZ1bmN0aW9uIHJ1biBieSB0aGUgc3lzdGVtLgogCkBAIC00OTQxLDcgKzQ5NDEsNyBAQAogCiAgICAgICAgICBEbyBub3Qgc2V0IHRoaXMgdmFyaWFibGUuIEl0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4KIAotICAgOnRlcm06YE9FX0lOSVRfRU5WX1NDUklQVGAKKyAgIE9FX0lOSVRfRU5WX1NDUklQVAogICAgICAgVGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBmb3IgdGhlIHB1cnBvc2VzIG9mCiAgICAgICBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCB3aXRoaW4gdGhlIGV4dGVuc2libGUgU0RLLiBUaGUgZGVmYXVsdAogICAgICAgdmFsdWUgaXMgIm9lLWluaXQtYnVpbGQtZW52Ii4KQEAgLTQ5NDksNyArNDk0OSw3IEBACiAgICAgICBJZiB5b3UgdXNlIGEgY3VzdG9tIHNjcmlwdCB0byBzZXQgdXAgeW91ciBidWlsZCBlbnZpcm9ubWVudCwgc2V0IHRoZQogICAgICAgYGBPRV9JTklUX0VOVl9TQ1JJUFRgYCB2YXJpYWJsZSB0byBpdHMgbmFtZS4KIAotICAgOnRlcm06YE9FX1RFUk1JTkFMYAorICAgT0VfVEVSTUlOQUwKICAgICAgIENvbnRyb2xzIGhvdyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzcGF3bnMgaW50ZXJhY3RpdmUKICAgICAgIHRlcm1pbmFscyBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gKGUuZy4gdXNpbmcgdGhlIEJpdEJha2UKICAgICAgIGNvbW1hbmQgd2l0aCB0aGUgYGAtYyBkZXZzaGVsbGBgIGNvbW1hbmQtbGluZSBvcHRpb24pLiBGb3IgbW9yZQpAQCAtNDk2Niw3ICs0OTY2LDcgQEAKICAgICAgIC0ga29uc29sZQogICAgICAgLSBub25lCiAKLSAgIDp0ZXJtOmBPRVJPT1RgCisgICBPRVJPT1QKICAgICAgIFRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAogICAgICAgaXMgc291cmNlZC4gVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgIHNldHVwIHNjcmlwdDogYGBgYGAgPCNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQ+YF9fLiBXaGVuIHlvdSBydW4gdGhpcwpAQCAtNDk3Niw3ICs0OTc2LDcgQEAKICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQsIHNlZSB0aGUKICAgICAgIGluaXRpYWxpemF0aW9uIHNjcmlwdC4KIAotICAgOnRlcm06YE9MREVTVF9LRVJORUxgCisgICBPTERFU1RfS0VSTkVMCiAgICAgICBEZWNsYXJlcyB0aGUgb2xkZXN0IHZlcnNpb24gb2YgdGhlIExpbnV4IGtlcm5lbCB0aGF0IHRoZSBwcm9kdWNlZAogICAgICAgYmluYXJpZXMgbXVzdCBzdXBwb3J0LiBUaGlzIHZhcmlhYmxlIGlzIHBhc3NlZCBpbnRvIHRoZSBidWlsZCBvZiB0aGUKICAgICAgIEVtYmVkZGVkIEdOVSBDIExpYnJhcnkgKGBgZ2xpYmNgYCkuCkBAIC00OTg2LDcgKzQ5ODYsNyBAQAogICAgICAgZGVmYXVsdCBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZSBpbiBhIGN1c3RvbSBkaXN0cmlidXRpb24KICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KIAotICAgOnRlcm06YE9WRVJSSURFU2AKKyAgIE9WRVJSSURFUwogICAgICAgQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvdmVycmlkZXMgdGhhdCBjdXJyZW50bHkgYXBwbHkuIE92ZXJyaWRlcwogICAgICAgYXJlIGEgQml0QmFrZSBtZWNoYW5pc20gdGhhdCBhbGxvd3MgdmFyaWFibGVzIHRvIGJlIHNlbGVjdGl2ZWx5CiAgICAgICBvdmVycmlkZGVuIGF0IHRoZSBlbmQgb2YgcGFyc2luZy4gVGhlIHNldCBvZiBvdmVycmlkZXMgaW4KQEAgLTUwMjksMTMgKzUwMjksMTMgQEAKICAgICAgICAgICIgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKICAgICAgICAgIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgUGAKKyAgIFAKICAgICAgIFRoZSByZWNpcGUgbmFtZSBhbmQgdmVyc2lvbi4gYGBQYGAgaXMgY29tcHJpc2VkIG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICA6OgogCiAgICAgICAgICAke1BOfS0ke1BWfQogCi0gICA6dGVybTpgUEFDS0FHRV9BRERfTUVUQURBVEFgCisgICBQQUNLQUdFX0FERF9NRVRBREFUQQogICAgICAgVGhpcyB2YXJpYWJsZSBkZWZpbmVzIGFkZGl0aW9uYWwgbWV0ZGF0YSB0byBhZGQgdG8gcGFja2FnZXMuCiAKICAgICAgIFlvdSBtYXkgZmluZCB5b3UgbmVlZCB0byBpbmplY3QgYWRkaXRpb25hbCBtZXRhZGF0YSBpbnRvIHBhY2thZ2VzLgpAQCAtNTA1MSw3ICs1MDUxLDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOmFkZGluZyBjdXN0b20gbWV0YWRhdGEgdG8gcGFja2FnZXNgIgogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBQQUNLQUdFX0FSQ0hgCisgICBQQUNLQUdFX0FSQ0gKICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHJlc3VsdGluZyBwYWNrYWdlIG9yIHBhY2thZ2VzLgogCiAgICAgICBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8KQEAgLTUwNzQsMTkgKzUwNzQsMTkgQEAKIAogICAgICAgICAgUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAotICAgOnRlcm06YFBBQ0tBR0VfQVJDSFNgCisgICBQQUNLQUdFX0FSQ0hTCiAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0YXJnZXQgbWFjaGluZS4KICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGF1dG9tYXRpY2FsbHkgYW5kIHNob3VsZCBub3Qgbm9ybWFsbHkgYmUKICAgICAgIGhhbmQtZWRpdGVkLiBFbnRyaWVzIGFyZSBzZXBhcmF0ZWQgdXNpbmcgc3BhY2VzIGFuZCBsaXN0ZWQgaW4gb3JkZXIKICAgICAgIG9mIHByaW9yaXR5LiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYGBQQUNLQUdFX0FSQ0hTYGAgaXMgImFsbCBhbnkKICAgICAgIG5vYXJjaCAke1BBQ0tBR0VfRVhUUkFfQVJDSFN9ICR7TUFDSElORV9BUkNIfSIuCiAKLSAgIDp0ZXJtOmBQQUNLQUdFX0JFRk9SRV9QTmAKKyAgIFBBQ0tBR0VfQkVGT1JFX1BOCiAgICAgICBFbmFibGVzIGVhc2lseSBhZGRpbmcgcGFja2FnZXMgdG8gYGBQQUNLQUdFU2BgIGJlZm9yZSBgYCR7UE59YGAgc28KICAgICAgIHRoYXQgdGhvc2UgYWRkZWQgcGFja2FnZXMgY2FuIHBpY2sgdXAgZmlsZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQogICAgICAgaW5jbHVkZWQgaW4gdGhlIGRlZmF1bHQgcGFja2FnZS4KIAotICAgOnRlcm06YFBBQ0tBR0VfQ0xBU1NFU2AKKyAgIFBBQ0tBR0VfQ0xBU1NFUwogICAgICAgVGhpcyB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBgYGxvY2FsLmNvbmZgYCBjb25maWd1cmF0aW9uIGZpbGUKICAgICAgIGZvdW5kIGluIHRoZSBgYGNvbmZgYCBmb2xkZXIgb2YgdGhlCiAgICAgICA6dGVybTpgQnVpbGQgRGlyZWN0b3J5YCwgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIG1hbmFnZXIgdGhlCkBAIC01MTE5LDcgKzUxMTksNyBAQAogICAgICAgcmVzdWx0IG9mIHRoZSBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLCBzZWUgdGhlCiAgICAgICAiOnJlZjpgcGFja2FnZS5iYmNsYXNzIDxyZWYtY2xhc3Nlcy1wYWNrYWdlPmAiIHNlY3Rpb24uCiAKLSAgIDp0ZXJtOmBQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFYAorICAgUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRQogICAgICAgRGV0ZXJtaW5lcyBob3cgdG8gc3BsaXQgdXAgdGhlIGJpbmFyeSBhbmQgZGVidWcgaW5mb3JtYXRpb24gd2hlbgogICAgICAgY3JlYXRpbmcgYGAqLWRiZ2BgIHBhY2thZ2VzIHRvIGJlIHVzZWQgd2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIKICAgICAgIChHREIpLgpAQCAtNTE1Miw3ICs1MTUyLDcgQEAKICAgICAgICI6cmVmOmBwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Z2AiIHNlY3Rpb24KICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YFBBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZYAorICAgUEFDS0FHRV9FWENMVURFX0NPTVBMRU1FTlRBUlkKICAgICAgIFByZXZlbnRzIHNwZWNpZmljIHBhY2thZ2VzIGZyb20gYmVpbmcgaW5zdGFsbGVkIHdoZW4geW91IGFyZQogICAgICAgaW5zdGFsbGluZyBjb21wbGVtZW50YXJ5IHBhY2thZ2VzLgogCkBAIC01MTY0LDcgKzUxNjQsNyBAQAogICAgICAgdXNlIHRoZSBgYFBBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZYGAgdmFyaWFibGUgdG8gc3BlY2lmeSByZWd1bGFyCiAgICAgICBleHByZXNzaW9ucyB0byBtYXRjaCB0aGUgcGFja2FnZXMgeW91IHdhbnQgdG8gZXhjbHVkZS4KIAotICAgOnRlcm06YFBBQ0tBR0VfRVhDTFVERWAKKyAgIFBBQ0tBR0VfRVhDTFVERQogICAgICAgTGlzdHMgcGFja2FnZXMgdGhhdCBzaG91bGQgbm90IGJlIGluc3RhbGxlZCBpbnRvIGFuIGltYWdlLiBGb3IKICAgICAgIGV4YW1wbGU6CiAgICAgICA6OgpAQCAtNTE5MywxMiArNTE5MywxMiBAQAogICAgICAgOnRlcm06YEJBRF9SRUNPTU1FTkRBVElPTlNgIHZhcmlhYmxlcyBmb3IKICAgICAgIHJlbGF0ZWQgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBQQUNLQUdFX0VYVFJBX0FSQ0hTYAorICAgUEFDS0FHRV9FWFRSQV9BUkNIUwogICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXZpY2UgQ1BVLgogICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwgd2hlbiB5b3UgYnVpbGQgZm9yIHNldmVyYWwgZGlmZmVyZW50IGRldmljZXMKICAgICAgIHRoYXQgdXNlIG1pc2NlbGxhbmVvdXMgcHJvY2Vzc29ycyBzdWNoIGFzIFhTY2FsZSBhbmQgQVJNOTI2LUVKUy4KIAotICAgOnRlcm06YFBBQ0tBR0VfRkVFRF9BUkNIU2AKKyAgIFBBQ0tBR0VfRkVFRF9BUkNIUwogICAgICAgT3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHBhY2thZ2UgYXJjaGl0ZWN0dXJlcyB1c2VkIGFzIHBhcnQgb2YgdGhlCiAgICAgICBwYWNrYWdlIGZlZWQgVVJJcyBkdXJpbmcgdGhlIGJ1aWxkLiBXaGVuIHVzZWQsIHRoZQogICAgICAgYGBQQUNLQUdFX0ZFRURfQVJDSFNgYCB2YXJpYWJsZSBpcyBhcHBlbmRlZCB0byB0aGUgZmluYWwgcGFja2FnZSBmZWVkCkBAIC01MjM5LDcgKzUyMzksNyBAQAogICAgICAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0tZGV2L2FsbAogICAgICAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0tZGV2L2NvcmUyLTY0CiAKLSAgIDp0ZXJtOmBQQUNLQUdFX0ZFRURfQkFTRV9QQVRIU2AKKyAgIFBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTCiAgICAgICBTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHdoZW4gY29uc3RydWN0aW5nIHBhY2thZ2UgZmVlZCBVUklzLiBUaGUKICAgICAgIGBgUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFNgYCB2YXJpYWJsZSBtYWtlcyB1cCB0aGUgbWlkZGxlIHBvcnRpb24gb2YgYQogICAgICAgcGFja2FnZSBmZWVkIFVSSSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiBUaGUgYmFzZSBwYXRoCkBAIC01MjY4LDcgKzUyNjgsNyBAQAogICAgICAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0tZGV2L2FsbAogICAgICAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0tZGV2L2NvcmUyLTY0CiAKLSAgIDp0ZXJtOmBQQUNLQUdFX0ZFRURfVVJJU2AKKyAgIFBBQ0tBR0VfRkVFRF9VUklTCiAgICAgICBTcGVjaWZpZXMgdGhlIGZyb250IHBvcnRpb24gb2YgdGhlIHBhY2thZ2UgZmVlZCBVUkkgdXNlZCBieSB0aGUKICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIEVhY2ggZmluYWwgcGFja2FnZSBmZWVkIFVSSSBpcyBjb21wcmlzZWQKICAgICAgIG9mIGBgUEFDS0FHRV9GRUVEX1VSSVNgYCwKQEAgLTUyOTcsNyArNTI5Nyw3IEBACiAgICAgICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzL3JwbS1kZXYvYWxsCiAgICAgICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzL3JwbS1kZXYvY29yZTItNjQKIAotICAgOnRlcm06YFBBQ0tBR0VfSU5TVEFMTGAKKyAgIFBBQ0tBR0VfSU5TVEFMTAogICAgICAgVGhlIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIgZm9yCiAgICAgICBpbnN0YWxsYXRpb24gaW50byB0aGUgaW1hZ2UuCiAKQEAgLTUzMTUsMTggKzUzMTUsMTggQEAKICAgICAgIGluaXRyYW1mcywgc2VlIHRoZSAiOnJlZjpgYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlYCIgc2VjdGlvbgogICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZYAorICAgUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZCiAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIHBhY2thZ2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF0dGVtcHRzCiAgICAgICB0byBpbnN0YWxsIHdoZW4gY3JlYXRpbmcgYW4gaW1hZ2UuIElmIGEgbGlzdGVkIHBhY2thZ2UgZmFpbHMgdG8KICAgICAgIGluc3RhbGwsIHRoZSBidWlsZCBzeXN0ZW0gZG9lcyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuIFRoaXMgdmFyaWFibGUKICAgICAgIGlzIGdlbmVyYWxseSBub3QgdXNlci1kZWZpbmVkLgogCi0gICA6dGVybTpgUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTYAorICAgUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTCiAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyBydW4gdG8gcHJlLXByb2Nlc3MgdGhlCiAgICAgICA6dGVybTpgUEtHRGAgZGlyZWN0b3J5IHByaW9yIHRvIHNwbGl0dGluZyB0aGUgZmlsZXMgb3V0CiAgICAgICB0byBpbmRpdmlkdWFsIHBhY2thZ2VzLgogCi0gICA6dGVybTpgUEFDS0FHRV9XUklURV9ERVBTYAorICAgUEFDS0FHRV9XUklURV9ERVBTCiAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGRlcGVuZGVuY2llcyBmb3IgcG9zdC1pbnN0YWxsYXRpb24gYW5kCiAgICAgICBwcmUtaW5zdGFsbGF0aW9uIHNjcmlwdHMgb24gbmF0aXZlL2Nyb3NzIHRvb2xzLiBJZiB5b3VyCiAgICAgICBwb3N0LWluc3RhbGxhdGlvbiBvciBwcmUtaW5zdGFsbGF0aW9uIHNjcmlwdCBjYW4gZXhlY3V0ZSBhdCByb290ZnMKQEAgLTUzMzgsNyArNTMzOCw3IEBACiAgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpwb3N0LWluc3RhbGxhdGlvbiBzY3JpcHRzYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgUEFDS0FHRUNPTkZJR2AKKyAgIFBBQ0tBR0VDT05GSUcKICAgICAgIFRoaXMgdmFyaWFibGUgcHJvdmlkZXMgYSBtZWFucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgZmVhdHVyZXMgb2YgYQogICAgICAgcmVjaXBlIG9uIGEgcGVyLXJlY2lwZSBiYXNpcy4gYGBQQUNLQUdFQ09ORklHYGAgYmxvY2tzIGFyZSBkZWZpbmVkIGluCiAgICAgICByZWNpcGVzIHdoZW4geW91IHNwZWNpZnkgZmVhdHVyZXMgYW5kIHRoZW4gYXJndW1lbnRzIHRoYXQgZGVmaW5lCkBAIC01NDMwLDcgKzU0MzAsNyBAQAogCiAgICAgICAgICAgICBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1yZWNpcGVuYW1lID0gIiBmNCIKIAotICAgOnRlcm06YFBBQ0tBR0VDT05GSUdfQ09ORkFSR1NgCisgICBQQUNLQUdFQ09ORklHX0NPTkZBUkdTCiAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBnZW5lcmF0ZWQgZnJvbSB0aGUKICAgICAgIDp0ZXJtOmBQQUNLQUdFQ09ORklHYCBzZXR0aW5nLgogCkBAIC01NDQxLDcgKzU0NDEsNyBAQAogICAgICAgaGFuZGxlcyB0aGUgYGBkb19jb25maWd1cmVgYCB0YXNrLCB0aGVuIHlvdSBuZWVkIHRvIHVzZQogICAgICAgYGBQQUNLQUdFQ09ORklHX0NPTkZBUkdTYGAgYXBwcm9wcmlhdGVseS4KIAotICAgOnRlcm06YFBBQ0tBR0VHUk9VUF9ESVNBQkxFX0NPTVBMRU1FTlRBUllgCisgICBQQUNLQUdFR1JPVVBfRElTQUJMRV9DT01QTEVNRU5UQVJZCiAgICAgICBGb3IgcmVjaXBlcyBpbmhlcml0aW5nIHRoZQogICAgICAgOnJlZjpgcGFja2FnZWdyb3VwIDxyZWYtY2xhc3Nlcy1wYWNrYWdlZ3JvdXA+YCBjbGFzcywgc2V0dGluZwogICAgICAgYGBQQUNLQUdFR1JPVVBfRElTQUJMRV9DT01QTEVNRU5UQVJZYGAgdG8gIjEiIHNwZWNpZmllcyB0aGF0IHRoZQpAQCAtNTQ0OSw3ICs1NDQ5LDcgQEAKICAgICAgIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHRoZSBgYHBhY2thZ2Vncm91cGBgIHJlY2lwZSwKICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgogCi0gICA6dGVybTpgUEFDS0FHRVNgCisgICBQQUNLQUdFUwogICAgICAgVGhlIGxpc3Qgb2YgcGFja2FnZXMgdGhlIHJlY2lwZSBjcmVhdGVzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUKICAgICAgIGZvbGxvd2luZzoKICAgICAgIDo6CkBAIC01NDY5LDcgKzU0NjksNyBAQAogICAgICAgdW5sZXNzIGdlbmVyYXRpb24gaXMgZm9yY2VkIHRocm91Z2ggdGhlCiAgICAgICA6dGVybTpgQUxMT1dfRU1QVFlgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgUEFDS0FHRVNfRFlOQU1JQ2AKKyAgIFBBQ0tBR0VTX0RZTkFNSUMKICAgICAgIEEgcHJvbWlzZSB0aGF0IHlvdXIgcmVjaXBlIHNhdGlzZmllcyBydW50aW1lIGRlcGVuZGVuY2llcyBmb3IKICAgICAgIG9wdGlvbmFsIG1vZHVsZXMgdGhhdCBhcmUgZm91bmQgaW4gb3RoZXIgcmVjaXBlcy4KICAgICAgIGBgUEFDS0FHRVNfRFlOQU1JQ2BgIGRvZXMgbm90IGFjdHVhbGx5IHNhdGlzZnkgdGhlIGRlcGVuZGVuY2llcywgaXQKQEAgLTU0OTIsNyArNTQ5Miw3IEBACiAgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpoYW5kbGluZyBvcHRpb25hbCBtb2R1bGUgcGFja2FnaW5nYCIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogCi0gICA6dGVybTpgUEFDS0FHRVNQTElURlVOQ1NgCisgICBQQUNLQUdFU1BMSVRGVU5DUwogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgcnVuIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBzcGxpdHRpbmcgb2YKICAgICAgIGZpbGVzIGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4gUmVjaXBlcyBjYW4gZWl0aGVyIHByZXBlbmQgdG8gdGhpcwogICAgICAgdmFyaWFibGUgb3IgcHJlcGVuZCB0byB0aGUgYGBwb3B1bGF0ZV9wYWNrYWdlc2BgIGZ1bmN0aW9uIGluIG9yZGVyIHRvCkBAIC01NTAyLDcgKzU1MDIsNyBAQAogICAgICAgb3RoZXIgcGFja2FnaW5nIHZhcmlhYmxlcyBhcHByb3ByaWF0ZWx5IGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlCiAgICAgICBkZXNpcmVkIHNwbGl0dGluZy4KIAotICAgOnRlcm06YFBBUkFMTEVMX01BS0VgCisgICBQQVJBTExFTF9NQUtFCiAgICAgICBFeHRyYSBvcHRpb25zIHBhc3NlZCB0byB0aGUgYGBtYWtlYGAgY29tbWFuZCBkdXJpbmcgdGhlCiAgICAgICA6cmVmOmByZWYtdGFza3MtY29tcGlsZWAgdGFzayBpbiBvcmRlciB0byBzcGVjaWZ5CiAgICAgICBwYXJhbGxlbCBjb21waWxhdGlvbiBvbiB0aGUgbG9jYWwgYnVpbGQgaG9zdC4gVGhpcyB2YXJpYWJsZSBpcwpAQCAtNTU0OCw3ICs1NTQ4LDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOnNwZWVkaW5nIHVwIGEgYnVpbGRgIgogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBQQVJBTExFTF9NQUtFSU5TVGAKKyAgIFBBUkFMTEVMX01BS0VJTlNUCiAgICAgICBFeHRyYSBvcHRpb25zIHBhc3NlZCB0byB0aGUgYGBtYWtlIGluc3RhbGxgYCBjb21tYW5kIGR1cmluZyB0aGUKICAgICAgIDpyZWY6YHJlZi10YXNrcy1pbnN0YWxsYCB0YXNrIGluIG9yZGVyIHRvIHNwZWNpZnkKICAgICAgIHBhcmFsbGVsIGluc3RhbGxhdGlvbi4gVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YKQEAgLTU1NjgsNyArNTU2OCw3IEBACiAgICAgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpkZWJ1Z2dpbmcgcGFyYWxsZWwgbWFrZSByYWNlc2AiCiAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YFBBVENIUkVTT0xWRWAKKyAgIFBBVENIUkVTT0xWRQogICAgICAgRGV0ZXJtaW5lcyB0aGUgYWN0aW9uIHRvIHRha2Ugd2hlbiBhIHBhdGNoIGZhaWxzLiBZb3UgY2FuIHNldCB0aGlzCiAgICAgICB2YXJpYWJsZSB0byBvbmUgb2YgdHdvIHZhbHVlczogIm5vb3AiIGFuZCAidXNlciIuCiAKQEAgLTU1ODAsNyArNTU4MCw3IEBACiAKICAgICAgIFNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgYGBsb2NhbC5jb25mYGAgZmlsZS4KIAotICAgOnRlcm06YFBBVENIVE9PTGAKKyAgIFBBVENIVE9PTAogICAgICAgU3BlY2lmaWVzIHRoZSB1dGlsaXR5IHVzZWQgdG8gYXBwbHkgcGF0Y2hlcyBmb3IgYSByZWNpcGUgZHVyaW5nIHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLXBhdGNoYCB0YXNrLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mCiAgICAgICB0aHJlZSB1dGlsaXRpZXM6ICJwYXRjaCIsICJxdWlsdCIsIG9yICJnaXQiLiBUaGUgZGVmYXVsdCB1dGlsaXR5IHVzZWQKQEAgLTU1OTYsMjAgKzU1OTYsMjAgQEAKICAgICAgICAgIFBBVENIVE9PTCA9ICJxdWlsdCIKICAgICAgICAgIFBBVENIVE9PTCA9ICJnaXQiCiAKLSAgIDp0ZXJtOmBQRWAKKyAgIFBFCiAgICAgICBUaGUgZXBvY2ggb2YgdGhlIHJlY2lwZS4gQnkgZGVmYXVsdCwgdGhpcyB2YXJpYWJsZSBpcyB1bnNldC4gVGhlCiAgICAgICB2YXJpYWJsZSBpcyB1c2VkIHRvIG1ha2UgdXBncmFkZXMgcG9zc2libGUgd2hlbiB0aGUgdmVyc2lvbmluZyBzY2hlbWUKICAgICAgIGNoYW5nZXMgaW4gc29tZSBiYWNrd2FyZHMgaW5jb21wYXRpYmxlIHdheS4KIAogICAgICAgYGBQRWBgIGlzIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSA6dGVybTpgUEtHRWAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBQRmAKKyAgIFBGCiAgICAgICBTcGVjaWZpZXMgdGhlIHJlY2lwZSBvciBwYWNrYWdlIG5hbWUgYW5kIGluY2x1ZGVzIGFsbCB2ZXJzaW9uIGFuZAogICAgICAgcmV2aXNpb24gbnVtYmVycyAoaS5lLiBgYGdsaWJjLTIuMTMtcjIwK3N2bnIxNTUwOC9gYCBhbmQKICAgICAgIGBgYmFzaC00LjItcjEvYGApLiBUaGlzIHZhcmlhYmxlIGlzIGNvbXByaXNlZCBvZiB0aGUgZm9sbG93aW5nOgogICAgICAgJHs6dGVybTpgUE5gfS0kezp0ZXJtOmBFWFRFTkRQRWB9JHs6dGVybTpgUFZgfS0kezp0ZXJtOmBQUmB9CiAKLSAgIDp0ZXJtOmBQSVhCVUZfUEFDS0FHRVNgCisgICBQSVhCVUZfUEFDS0FHRVMKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgcGl4YnVmY2FjaGUgPHJlZi1jbGFzc2VzLXBpeGJ1ZmNhY2hlPmAKICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIGlkZW50aWZpZXMgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBwaXhidWYKICAgICAgIGxvYWRlcnMgdXNlZCB3aXRoIGBgZ2RrLXBpeGJ1ZmBgLiBCeSBkZWZhdWx0LCB0aGUgYGBwaXhidWZjYWNoZWBgCkBAIC01NjE3LDcgKzU2MTcsNyBAQAogICAgICAgYGAke2BgXCA6dGVybTpgUE5gXCBgYH1gYCkuIFVzZSB0aGlzIHZhcmlhYmxlIGlmIHRoZQogICAgICAgbG9hZGVycyB5b3UgbmVlZCBhcmUgaW4gYSBwYWNrYWdlIG90aGVyIHRoYW4gdGhhdCBtYWluIHBhY2thZ2UuCiAKLSAgIDp0ZXJtOmBQS0dgCisgICBQS0cKICAgICAgIFRoZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgcGFja2FnZSBjcmVhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKICAgICAgIHN5c3RlbS4KIApAQCAtNTYzMSwxMSArNTYzMSwxMSBAQAogICAgICAgcmVuYW1lcyB0aGUgb3V0cHV0IHBhY2thZ2UsIGl0IGRvZXMgc28gYnkgc2V0dGluZwogICAgICAgYGBQS0dfcGFja2FnZW5hbWVgYC4KIAotICAgOnRlcm06YFBLR19DT05GSUdfUEFUSGAKKyAgIFBLR19DT05GSUdfUEFUSAogICAgICAgVGhlIHBhdGggdG8gYGBwa2ctY29uZmlnYGAgZmlsZXMgZm9yIHRoZSBjdXJyZW50IGJ1aWxkIGNvbnRleHQuCiAgICAgICBgYHBrZy1jb25maWdgYCByZWFkcyB0aGlzIHZhcmlhYmxlIGZyb20gdGhlIGVudmlyb25tZW50LgogCi0gICA6dGVybTpgUEtHRGAKKyAgIFBLR0QKICAgICAgIFBvaW50cyB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGZvciBmaWxlcyB0byBiZSBwYWNrYWdlZCBiZWZvcmUKICAgICAgIHRoZXkgYXJlIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4gVGhpcyBkaXJlY3RvcnkgZGVmYXVsdHMgdG8KICAgICAgIHRoZSBmb2xsb3dpbmc6CkBAIC01NjQ1LDcgKzU2NDUsNyBAQAogCiAgICAgICBEbyBub3QgY2hhbmdlIHRoaXMgZGVmYXVsdC4KIAotICAgOnRlcm06YFBLR0RBVEFfRElSYAorICAgUEtHREFUQV9ESVIKICAgICAgIFBvaW50cyB0byBhIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGRhdGEgZ2VuZXJhdGVkCiAgICAgICBkdXJpbmcgdGhlIHBhY2thZ2luZyBwcm9jZXNzLiBEdXJpbmcgdGhlIHBhY2thZ2luZyBwcm9jZXNzLCB0aGUKICAgICAgIDpyZWY6YHJlZi10YXNrcy1wYWNrYWdlZGF0YWAgdGFzayBwYWNrYWdlcyBkYXRhCkBAIC01NjY0LDcgKzU2NjQsNyBAQAogICAgICAgaW5mb3JtYXRpb24gb24gdGhlIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSwgc2VlCiAgICAgICA6dGVybTpgU1RBR0lOR19ESVJfSE9TVGAuCiAKLSAgIDp0ZXJtOmBQS0dERVNUYAorICAgUEtHREVTVAogICAgICAgUG9pbnRzIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5IGZvciBmaWxlcyB0byBiZSBwYWNrYWdlZCBhZnRlciB0aGV5CiAgICAgICBoYXZlIGJlZW4gc3BsaXQgaW50byBpbmRpdmlkdWFsIHBhY2thZ2VzLiBUaGlzIGRpcmVjdG9yeSBkZWZhdWx0cyB0bwogICAgICAgdGhlIGZvbGxvd2luZzoKQEAgLTU2NzYsNyArNTY3Niw3IEBACiAgICAgICBwYWNrYWdlIHNwZWNpZmllZCBpbiA6dGVybTpgUEFDS0FHRVNgLiBEbyBub3QgY2hhbmdlCiAgICAgICB0aGlzIGRlZmF1bHQuCiAKLSAgIDp0ZXJtOmBQS0dERVNUV09SS2AKKyAgIFBLR0RFU1RXT1JLCiAgICAgICBQb2ludHMgdG8gYSB0ZW1wb3Jhcnkgd29yayBhcmVhIHdoZXJlIHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLXBhY2thZ2VgIHRhc2sgc2F2ZXMgcGFja2FnZSBtZXRhZGF0YS4KICAgICAgIFRoZSBgYFBLR0RFU1RXT1JLYGAgbG9jYXRpb24gZGVmYXVsdHMgdG8gdGhlIGZvbGxvd2luZzoKQEAgLTU2OTAsMTkgKzU2OTAsMTkgQEAKICAgICAgIHBhY2thZ2UgbWV0YWRhdGEgZnJvbSBgYFBLR0RFU1RXT1JLYGAgdG8KICAgICAgIDp0ZXJtOmBQS0dEQVRBX0RJUmAgdG8gbWFrZSBpdCBhdmFpbGFibGUgZ2xvYmFsbHkuCiAKLSAgIDp0ZXJtOmBQS0dFYAorICAgUEtHRQogICAgICAgVGhlIGVwb2NoIG9mIHRoZSBwYWNrYWdlKHMpIGJ1aWx0IGJ5IHRoZSByZWNpcGUuIEJ5IGRlZmF1bHQsIGBgUEtHRWBgCiAgICAgICBpcyBzZXQgdG8gOnRlcm06YFBFYC4KIAotICAgOnRlcm06YFBLR1JgCisgICBQS0dSCiAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHBhY2thZ2UocykgYnVpbHQgYnkgdGhlIHJlY2lwZS4gQnkgZGVmYXVsdCwKICAgICAgIGBgUEtHUmBgIGlzIHNldCB0byA6dGVybTpgUFJgLgogCi0gICA6dGVybTpgUEtHVmAKKyAgIFBLR1YKICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlKHMpIGJ1aWx0IGJ5IHRoZSByZWNpcGUuIEJ5IGRlZmF1bHQsCiAgICAgICBgYFBLR1ZgYCBpcyBzZXQgdG8gOnRlcm06YFBWYC4KIAotICAgOnRlcm06YFBOYAorICAgUE4KICAgICAgIFRoaXMgdmFyaWFibGUgY2FuIGhhdmUgdHdvIHNlcGFyYXRlIGZ1bmN0aW9ucyBkZXBlbmRpbmcgb24gdGhlCiAgICAgICBjb250ZXh0OiBhIHJlY2lwZSBuYW1lIG9yIGEgcmVzdWx0aW5nIHBhY2thZ2UgbmFtZS4KIApAQCAtNTcyMSw3ICs1NzIxLDcgQEAKICAgICAgIHBhY2thZ2VzIGZvciB0aGUgdGFyZ2V0IGFuZCBmb3IgTXVsdGlsaWIsIGBgUE5gYCB3b3VsZCBiZSBgYGJhc2hgYAogICAgICAgYW5kIGBgbGliNjQtYmFzaGBgLCByZXNwZWN0aXZlbHkuCiAKLSAgIDp0ZXJtOmBQTkJMQUNLTElTVGAKKyAgIFBOQkxBQ0tMSVNUCiAgICAgICBMaXN0cyByZWNpcGVzIHlvdSBkbyBub3Qgd2FudCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBidWlsZC4KICAgICAgIFRoaXMgdmFyaWFibGUgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKICAgICAgIDpyZWY6YGJsYWNrbGlzdCA8cmVmLWNsYXNzZXMtYmxhY2tsaXN0PmAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZApAQCAtNTczNCw3ICs1NzM0LDcgQEAKIAogICAgICAgICAgUE5CTEFDS0xJU1RbbXlyZWNpcGVdID0gIk5vdCBzdXBwb3J0ZWQgYnkgb3VyIG9yZ2FuaXphdGlvbi4iCiAKLSAgIDp0ZXJtOmBQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkRgCisgICBQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGhvc3QgcGFydCBvZiB0aGUgU0RLLiBZb3UgY2FuIHNwZWNpZnkKICAgICAgIGZ1bmN0aW9ucyBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9uczoKQEAgLTU3NDcsNyArNTc0Nyw3IEBACiAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGVuIGNyZWF0aW5nIFNESyBvdXRwdXQuIFNlZSB0aGUKICAgICAgIDp0ZXJtOmBTREtfRElSYCB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YFBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EYAorICAgUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIHRhcmdldCBwYXJ0IG9mIHRoZSBTREsuIFlvdSBjYW4gc3BlY2lmeQogICAgICAgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgpAQCAtNTc2MCw3ICs1NzYwLDcgQEAKICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoZW4gY3JlYXRpbmcgU0RLIG91dHB1dC4gU2VlIHRoZQogICAgICAgOnRlcm06YFNES19ESVJgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgUFJgCisgICBQUgogICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHZhcmlhYmxlIGlzCiAgICAgICAicjAiLiBTdWJzZXF1ZW50IHJldmlzaW9ucyBvZiB0aGUgcmVjaXBlIGNvbnZlbnRpb25hbGx5IGhhdmUgdGhlCiAgICAgICB2YWx1ZXMgInIxIiwgInIyIiwgYW5kIHNvIGZvcnRoLiBXaGVuIDp0ZXJtOmBQVmAgaW5jcmVhc2VzLApAQCAtNTc5OSw3ICs1Nzk5LDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOndvcmtpbmcgd2l0aCBhIHByIHNlcnZpY2VgIiBzZWN0aW9uCiAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBQUkVGRVJSRURfUFJPVklERVJgCisgICBQUkVGRVJSRURfUFJPVklERVIKICAgICAgIElmIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLCB0aGlzIHZhcmlhYmxlIGRldGVybWluZXMKICAgICAgIHdoaWNoIHJlY2lwZSBpcyBwcmVmZXJyZWQgYW5kIHRodXMgcHJvdmlkZXMgdGhlIGl0ZW0gKGkuZS4gdGhlCiAgICAgICBwcmVmZXJyZWQgcHJvdmlkZXIpLiBZb3Ugc2hvdWxkIGFsd2F5cyBzdWZmaXggdGhpcyB2YXJpYWJsZSB3aXRoIHRoZQpAQCAtNTgzOCw3ICs1ODM4LDcgQEAKICAgICAgICAgIG1lY2hhbmlzbSBpcyBkZXNpZ25lZCB0byBzZWxlY3QgYmV0d2VlbiBtdXR1YWxseSBleGNsdXNpdmUKICAgICAgICAgIGFsdGVybmF0aXZlIHByb3ZpZGVycy4KIAotICAgOnRlcm06YFBSRUZFUlJFRF9WRVJTSU9OYAorICAgUFJFRkVSUkVEX1ZFUlNJT04KICAgICAgIElmIG11bHRpcGxlIHZlcnNpb25zIG9mIHJlY2lwZXMgZXhpc3QsIHRoaXMgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaAogICAgICAgdmVyc2lvbiBpcyBnaXZlbiBwcmVmZXJlbmNlLiBZb3UgbXVzdCBhbHdheXMgc3VmZml4IHRoZSB2YXJpYWJsZSB3aXRoCiAgICAgICB0aGUgOnRlcm06YFBOYCB5b3Ugd2FudCB0byBzZWxlY3QsIGFuZCB5b3Ugc2hvdWxkIHNldCB0aGUKQEAgLTU5MDAsNyArNTkwMCw3IEBACiAgICAgICAgICBUaGUgXF9mb3JjZXZhcmlhYmxlIG92ZXJyaWRlIGlzIG5vdCBoYW5kbGVkIHNwZWNpYWxseS4gVGhpcyBvdmVycmlkZQogICAgICAgICAgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIE9WRVJSSURFUyBpbmNsdWRlcyAiZm9yY2V2YXJpYWJsZSIuCiAKLSAgIDp0ZXJtOmBQUkVNSVJST1JTYAorICAgUFJFTUlSUk9SUwogICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgZnJvbSB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgZ2V0cyBzb3VyY2UgY29kZS4gV2hlbiB0aGUgYnVpbGQgc3lzdGVtIHNlYXJjaGVzIGZvciBzb3VyY2UgY29kZSwgaXQKICAgICAgIGZpcnN0IHRyaWVzIHRoZSBsb2NhbCBkb3dubG9hZCBkaXJlY3RvcnkuIElmIHRoYXQgbG9jYXRpb24gZmFpbHMsIHRoZQpAQCAtNTkzMCw3ICs1OTMwLDcgQEAKICAgICAgIGBgZmlsZTovL2BgIFVSTHMgdG8gcG9pbnQgdG8gbG9jYWwgZGlyZWN0b3JpZXMgb3IgbmV0d29yayBzaGFyZXMgYXMKICAgICAgIHdlbGwuCiAKLSAgIDp0ZXJtOmBQUklPUklUWWAKKyAgIFBSSU9SSVRZCiAgICAgICBJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLgogCiAgICAgICBgYFBSSU9SSVRZYGAgaXMgY29uc2lkZXJlZCB0byBiZSBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24gcG9saWN5CkBAIC01OTQxLDcgKzU5NDEsNyBAQAogICAgICAgWW91IGNhbiBzZXQgYGBQUklPUklUWWBgIHRvICJyZXF1aXJlZCIsICJzdGFuZGFyZCIsICJleHRyYSIsIGFuZAogICAgICAgIm9wdGlvbmFsIiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCiAKLSAgIDp0ZXJtOmBQUklWQVRFX0xJQlNgCisgICBQUklWQVRFX0xJQlMKICAgICAgIFNwZWNpZmllcyBsaWJyYXJpZXMgaW5zdGFsbGVkIHdpdGhpbiBhIHJlY2lwZSB0aGF0IHNob3VsZCBiZSBpZ25vcmVkCiAgICAgICBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSdzIHNoYXJlZCBsaWJyYXJ5IHJlc29sdmVyLiBUaGlzCiAgICAgICB2YXJpYWJsZSBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGJ5IGEgcmVjaXBlIGhhcwpAQCAtNTk2Nyw3ICs1OTY3LDcgQEAKICAgICAgICI6cmVmOmBvdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzOmF1dG9tYXRpY2FsbHkgYWRkZWQgcnVudGltZSBkZXBlbmRlbmNpZXNgIgogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogCi0gICA6dGVybTpgUFJPVklERVNgCisgICBQUk9WSURFUwogICAgICAgQSBsaXN0IG9mIGFsaWFzZXMgYnkgd2hpY2ggYSBwYXJ0aWN1bGFyIHJlY2lwZSBjYW4gYmUga25vd24uIEJ5CiAgICAgICBkZWZhdWx0LCBhIHJlY2lwZSdzIG93biBgYFBOYGAgaXMgaW1wbGljaXRseSBhbHJlYWR5IGluIGl0cwogICAgICAgYGBQUk9WSURFU2BgIGxpc3QgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBuZWVkIHRvIG1lbnRpb24gdGhhdCBpdApAQCAtNjAzMCw3ICs2MDMwLDcgQEAKICAgICAgICAgICAgICAgICAgVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyID0gInVkZXYiCiAKIAotICAgOnRlcm06YFBSU0VSVl9IT1NUYAorICAgUFJTRVJWX0hPU1QKICAgICAgIFRoZSBuZXR3b3JrIGJhc2VkIDp0ZXJtOmBQUmAgc2VydmljZSBob3N0IGFuZCBwb3J0LgogCiAgICAgICBUaGUgYGBjb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkYGAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQpAQCAtNjA0NSw3ICs2MDQ1LDcgQEAKICAgICAgIHNlcnZpY2UgPGRldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3M6d29ya2luZyB3aXRoIGEgcHIgc2VydmljZT5gLiBZb3UgY2FuCiAgICAgICBzZXQgYGBQUlNFUlZfSE9TVGBgIHRvIG90aGVyIHZhbHVlcyB0byB1c2UgYSByZW1vdGUgUFIgc2VydmljZS4KIAotICAgOnRlcm06YFBURVNUX0VOQUJMRURgCisgICBQVEVTVF9FTkFCTEVECiAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgOnJlZjpgUGFja2FnZQogICAgICAgVGVzdCA8ZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczp0ZXN0aW5nIHBhY2thZ2VzIHdpdGggcHRlc3Q+YCAocHRlc3QpCiAgICAgICBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgd2hlbiBidWlsZGluZyBhIHJlY2lwZS4gWW91IHNob3VsZCBub3Qgc2V0CkBAIC02MDUzLDcgKzYwNTMsNyBAQAogICAgICAgYXQgYnVpbGQgdGltZSBzaG91bGQgYmUgZG9uZSBieSBhZGRpbmcgInB0ZXN0IiB0byAob3IgcmVtb3ZpbmcgaXQKICAgICAgIGZyb20pIDp0ZXJtOmBESVNUUk9fRkVBVFVSRVNgLgogCi0gICA6dGVybTpgUFZgCisgICBQVgogICAgICAgVGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4gVGhlIHZlcnNpb24gaXMgbm9ybWFsbHkgZXh0cmFjdGVkIGZyb20gdGhlCiAgICAgICByZWNpcGUgZmlsZW5hbWUuIEZvciBleGFtcGxlLCBpZiB0aGUgcmVjaXBlIGlzIG5hbWVkCiAgICAgICBgYGV4cGF0XzIuMC4xLmJiYGAsIHRoZW4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYGBQVmBgIHdpbGwgYmUgIjIuMC4xIi4KQEAgLTYwNjMsNyArNjA2Myw3IEBACiAKICAgICAgIGBgUFZgYCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgOnRlcm06YFBLR1ZgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgUFlUSE9OX0FCSWAKKyAgIFBZVEhPTl9BQkkKICAgICAgIFdoZW4gdXNlZCBieSByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUKICAgICAgIDpyZWY6YGRpc3R1dGlsczMgPHJlZi1jbGFzc2VzLWRpc3R1dGlsczM+YCwKICAgICAgIDpyZWY6YHNldHVwdG9vbHMzIDxyZWYtY2xhc3Nlcy1zZXR1cHRvb2xzMz5gLApAQCAtNjA4MSw3ICs2MDgxLDcgQEAKICAgICAgIHVzZSB0aGlzIHZhcmlhYmxlIHRvIGxvY2F0ZSB0aGUgaGVhZGVycyBhbmQgbGlicmFyaWVzIG9mIHRoZQogICAgICAgYXBwcm9wcmlhdGUgUHl0aG9uIHRoYXQgdGhlIGV4dGVuc2lvbiBpcyB0YXJnZXRpbmcuCiAKLSAgIDp0ZXJtOmBQWVRIT05fUE5gCisgICBQWVRIT05fUE4KICAgICAgIFdoZW4gdXNlZCBieSByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUKICAgICAgIGBkaXN0dXRpbHMzIDxyZWYtY2xhc3Nlcy1kaXN0dXRpbHMzPmAsCiAgICAgICA6cmVmOmBzZXR1cHRvb2xzMyA8cmVmLWNsYXNzZXMtc2V0dXB0b29sczM+YCwKQEAgLTYxMDAsMTAgKzYxMDAsMTAgQEAKICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLAogICAgICAgdGhlIHZlcnNpb24gb2YgdGhlIGRlcGVuZGVuY3kgaXMgYGBQWVRIT05fUE5gYC4KIAotICAgOnRlcm06YFJBTkxJQmAKKyAgIFJBTkxJQgogICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biBgYHJhbmxpYmBgLgogCi0gICA6dGVybTpgUkNPTkZMSUNUU2AKKyAgIFJDT05GTElDVFMKICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgY29uZmxpY3Qgd2l0aCBwYWNrYWdlcy4gTm90ZSB0aGF0IHBhY2thZ2VzCiAgICAgICB3aWxsIG5vdCBiZSBpbnN0YWxsZWQgaWYgY29uZmxpY3RpbmcgcGFja2FnZXMgYXJlIG5vdCBmaXJzdCByZW1vdmVkLgogCkBAIC02MTI5LDcgKzYxMjksNyBAQAogCiAgICAgICAgICBSQ09ORkxJQ1RTXyR7UE59ID0gImZvbyAoPj0gMS4yKSIKIAotICAgOnRlcm06YFJERVBFTkRTYAorICAgUkRFUEVORFMKICAgICAgIExpc3RzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9mIGEgcGFja2FnZS4gVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBvdGhlcgogICAgICAgcGFja2FnZXMgdGhhdCBtdXN0IGJlIGluc3RhbGxlZCBpbiBvcmRlciBmb3IgdGhlIHBhY2thZ2UgdG8gZnVuY3Rpb24KICAgICAgIGNvcnJlY3RseS4gQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBhc3NpZ25tZW50IGRlY2xhcmVzIHRoYXQgdGhlCkBAIC02MjQxLDcgKzYyNDEsNyBAQAogICAgICAgQml0QmFrZSBVc2VyIE1hbnVhbCBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0YXNrcyBhbmQKICAgICAgIGRlcGVuZGVuY2llcy4KIAotICAgOnRlcm06YFJFUVVJUkVEX0RJU1RST19GRUFUVVJFU2AKKyAgIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUwogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQogICAgICAgOnJlZjpgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIDxyZWYtY2xhc3Nlcy1kaXN0cm9fZmVhdHVyZXNfY2hlY2s+YAogICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgaWRlbnRpZmllcyBkaXN0cmlidXRpb24gZmVhdHVyZXMgdGhhdCBtdXN0IGV4aXN0CkBAIC02MjUxLDEzICs2MjUxLDEzIEBACiAgICAgICBhcHBlYXIgaW4gYGBESVNUUk9fRkVBVFVSRVNgYCB3aXRoaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgYW4KICAgICAgIGVycm9yIG9jY3VycyBhbmQgdGhlIGJ1aWxkIHN0b3BzLgogCi0gICA6dGVybTpgUk1fV09SS19FWENMVURFYAorICAgUk1fV09SS19FWENMVURFCiAgICAgICBXaXRoIGBgcm1fd29ya2BgIGVuYWJsZWQsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiByZWNpcGVzCiAgICAgICB3aG9zZSB3b3JrIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgcmVtb3ZlZC4gU2VlIHRoZQogICAgICAgIjpyZWY6YHJtX3dvcmsuYmJjbGFzcyA8cmVmLWNsYXNzZXMtcm0td29yaz5gIiBzZWN0aW9uIGZvciBtb3JlCiAgICAgICBkZXRhaWxzLgogCi0gICA6dGVybTpgUk9PVF9IT01FYAorICAgUk9PVF9IT01FCiAgICAgICBEZWZpbmVzIHRoZSByb290IGhvbWUgZGlyZWN0b3J5LiBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSBpcyBzZXQgYXMKICAgICAgIGZvbGxvd3MgaW4gdGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlOgogICAgICAgOjoKQEAgLTYyODMsMTMgKzYyODMsMTMgQEAKICAgICAgIG92ZXJyaWRlIGV4YW1wbGVzIHVzZSBgYC9yb290YGAsIHdoaWNoIGlzIHByb2JhYmx5IHRoZSBtb3N0IGNvbW1vbmx5CiAgICAgICB1c2VkIG92ZXJyaWRlLgogCi0gICA6dGVybTpgUk9PVEZTYAorICAgUk9PVEZTCiAgICAgICBJbmRpY2F0ZXMgYSBmaWxlc3lzdGVtIGltYWdlIHRvIGluY2x1ZGUgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbS4KIAogICAgICAgVGhlIGBgUk9PVEZTYGAgdmFyaWFibGUgaXMgYW4gb3B0aW9uYWwgdmFyaWFibGUgdXNlZCB3aXRoIHRoZQogICAgICAgOnJlZjpgaW1hZ2UtbGl2ZSA8cmVmLWNsYXNzZXMtaW1hZ2UtbGl2ZT5gIGNsYXNzLgogCi0gICA6dGVybTpgUk9PVEZTX1BPU1RJTlNUQUxMX0NPTU1BTkRgCisgICBST09URlNfUE9TVElOU1RBTExfQ09NTUFORAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZnRlciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gaGFzIGluc3RhbGxlZCBwYWNrYWdlcy4gWW91IGNhbiBzcGVjaWZ5IGZ1bmN0aW9ucyBzZXBhcmF0ZWQgYnkKICAgICAgIHNlbWljb2xvbnM6CkBAIC02MzAzLDcgKzYzMDMsNyBAQAogICAgICAgOnRlcm06YElNQUdFX1JPT1RGU2AgdmFyaWFibGUgZm9yIG1vcmUKICAgICAgIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkRgCisgICBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKICAgICAgIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgcm9vdCBmaWxlc3lzdGVtLiBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zCiAgICAgICBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9uczoKQEAgLTYzMTcsNyArNjMxNyw3IEBACiAgICAgICA6dGVybTpgSU1BR0VfUk9PVEZTYCB2YXJpYWJsZSBmb3IgbW9yZQogICAgICAgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBST09URlNfUE9TVFVOSU5TVEFMTF9DT01NQU5EYAorICAgUk9PVEZTX1BPU1RVTklOU1RBTExfQ09NTUFORAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZnRlciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gaGFzIHJlbW92ZWQgdW5uZWNlc3NhcnkgcGFja2FnZXMuIFdoZW4gcnVudGltZSBwYWNrYWdlCiAgICAgICBtYW5hZ2VtZW50IGlzIGRpc2FibGVkIGluIHRoZSBpbWFnZSwgc2V2ZXJhbCBwYWNrYWdlcyBhcmUgcmVtb3ZlZApAQCAtNjMzMyw3ICs2MzMzLDcgQEAKICAgICAgIDp0ZXJtOmBJTUFHRV9ST09URlNgIHZhcmlhYmxlIGZvciBtb3JlCiAgICAgICBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YFJPT1RGU19QUkVQUk9DRVNTX0NPTU1BTkRgCisgICBST09URlNfUFJFUFJPQ0VTU19DT01NQU5ECiAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIHJvb3QgZmlsZXN5c3RlbS4gWW91IGNhbiBzcGVjaWZ5IGZ1bmN0aW9ucwogICAgICAgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnM6CkBAIC02MzQ3LDcgKzYzNDcsNyBAQAogICAgICAgOnRlcm06YElNQUdFX1JPT1RGU2AgdmFyaWFibGUgZm9yIG1vcmUKICAgICAgIGluZm9ybWF0aW9uLgogCi0gICA6dGVybTpgUlBST1ZJREVTYAorICAgUlBST1ZJREVTCiAgICAgICBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lIGFsaWFzZXMgdGhhdCBhIHBhY2thZ2UgYWxzbyBwcm92aWRlcy4gVGhlc2UKICAgICAgIGFsaWFzZXMgYXJlIHVzZWZ1bCBmb3Igc2F0aXNmeWluZyBydW50aW1lIGRlcGVuZGVuY2llcyBvZiBvdGhlcgogICAgICAgcGFja2FnZXMgYm90aCBkdXJpbmcgdGhlIGJ1aWxkIGFuZCBvbiB0aGUgdGFyZ2V0IChhcyBzcGVjaWZpZWQgYnkKQEAgLTYzNjYsNyArNjM2Niw3IEBACiAKICAgICAgICAgIFJQUk9WSURFU18ke1BOfSA9ICJ3aWRnZXQtYWJpLTIiCiAKLSAgIDp0ZXJtOmBSUkVDT01NRU5EU2AKKyAgIFJSRUNPTU1FTkRTCiAgICAgICBBIGxpc3Qgb2YgcGFja2FnZXMgdGhhdCBleHRlbmRzIHRoZSB1c2FiaWxpdHkgb2YgYSBwYWNrYWdlIGJlaW5nCiAgICAgICBidWlsdC4gVGhlIHBhY2thZ2UgYmVpbmcgYnVpbHQgZG9lcyBub3QgZGVwZW5kIG9uIHRoaXMgbGlzdCBvZgogICAgICAgcGFja2FnZXMgaW4gb3JkZXIgdG8gc3VjY2Vzc2Z1bGx5IGJ1aWxkLCBidXQgcmF0aGVyIHVzZXMgdGhlbSBmb3IKQEAgLTY0MjYsNyArNjQyNiw3IEBACiAKICAgICAgICAgIFJSRUNPTU1FTkRTXyR7UE59ID0gImZvbyAoPj0gMS4yKSIKIAotICAgOnRlcm06YFJSRVBMQUNFU2AKKyAgIFJSRVBMQUNFUwogICAgICAgQSBsaXN0IG9mIHBhY2thZ2VzIHJlcGxhY2VkIGJ5IGEgcGFja2FnZS4gVGhlIHBhY2thZ2UgbWFuYWdlciB1c2VzCiAgICAgICB0aGlzIHZhcmlhYmxlIHRvIGRldGVybWluZSB3aGljaCBwYWNrYWdlIHNob3VsZCBiZSBpbnN0YWxsZWQgdG8KICAgICAgIHJlcGxhY2Ugb3RoZXIgcGFja2FnZShzKSBkdXJpbmcgYW4gdXBncmFkZS4gSW4gb3JkZXIgdG8gYWxzbyBoYXZlIHRoZQpAQCAtNjQ2Miw3ICs2NDYyLDcgQEAKIAogICAgICAgICAgIFJSRVBMQUNFU18ke1BOfSA9ICJmb28gKD49IDEuMikiCiAKLSAgIDp0ZXJtOmBSU1VHR0VTVFNgCisgICBSU1VHR0VTVFMKICAgICAgIEEgbGlzdCBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzIHRoYXQgeW91IGNhbiBzdWdnZXN0IGZvciBpbnN0YWxsYXRpb24KICAgICAgIGJ5IHRoZSBwYWNrYWdlIG1hbmFnZXIgYXQgdGhlIHRpbWUgYSBwYWNrYWdlIGlzIGluc3RhbGxlZC4gTm90IGFsbAogICAgICAgcGFja2FnZSBtYW5hZ2VycyBzdXBwb3J0IHRoaXMgZnVuY3Rpb25hbGl0eS4KQEAgLTY0NzQsNyArNjQ3NCw3IEBACiAKICAgICAgICAgIFJTVUdHRVNUU18ke1BOfSA9ICJ1c2VmdWxfcGFja2FnZSBhbm90aGVyX3BhY2thZ2UiCiAKLSAgIDp0ZXJtOmBTYAorICAgUwogICAgICAgVGhlIGxvY2F0aW9uIGluIHRoZSA6dGVybTpgQnVpbGQgRGlyZWN0b3J5YCB3aGVyZQogICAgICAgdW5wYWNrZWQgcmVjaXBlIHNvdXJjZSBjb2RlIHJlc2lkZXMuIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IGlzCiAgICAgICBgYCR7YGBcIDp0ZXJtOmBXT1JLRElSYFwgYGB9LyR7YGBcIDp0ZXJtOmBCUE5gXCBgYH0tJHtgYFwgOnRlcm06YFBWYFwgYGB9YGAsCkBAIC02NTA1LDEzICs2NTA1LDEzIEBACiAgICAgICAgICBTUkNfVVJJID0gImdpdDovL3BhdGgvdG8vcmVwby5naXQiCiAgICAgICAgICBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi0gICA6dGVybTpgU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFU2AKKyAgIFNBTklUWV9SRVFVSVJFRF9VVElMSVRJRVMKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIHV0aWxpdGllcyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGZvcgogICAgICAgZHVyaW5nIHRoZSBpbml0aWFsIHNhbml0eSBjaGVja2luZyBwcm9jZXNzIHdoZW4gcnVubmluZyBCaXRCYWtlLiBJZgogICAgICAgYW55IG9mIHRoZSB1dGlsaXRpZXMgYXJlIG5vdCBpbnN0YWxsZWQgb24gdGhlIGJ1aWxkIGhvc3QsIHRoZW4KICAgICAgIEJpdEJha2UgaW1tZWRpYXRlbHkgZXhpdHMgd2l0aCBhbiBlcnJvci4KIAotICAgOnRlcm06YFNBTklUWV9URVNURURfRElTVFJPU2AKKyAgIFNBTklUWV9URVNURURfRElTVFJPUwogICAgICAgQSBsaXN0IG9mIHRoZSBob3N0IGRpc3RyaWJ1dGlvbiBpZGVudGlmaWVycyB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gaGFzCiAgICAgICBiZWVuIHRlc3RlZCBhZ2FpbnN0LiBJZGVudGlmaWVycyBjb25zaXN0IG9mIHRoZSBob3N0IGRpc3RyaWJ1dG9yIElECiAgICAgICBmb2xsb3dlZCBieSB0aGUgcmVsZWFzZSwgYXMgcmVwb3J0ZWQgYnkgdGhlIGBgbHNiX3JlbGVhc2VgYCB0b29sIG9yCkBAIC02NTIyLDExICs2NTIyLDExIEBACiAgICAgICBsaXN0LCB0aGVuIHRoZSBidWlsZCBzeXN0ZW0gcmVwb3J0cyBhIHdhcm5pbmcgdGhhdCBpbmRpY2F0ZXMgdGhlCiAgICAgICBjdXJyZW50IGhvc3QgZGlzdHJpYnV0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgYXMgYSBidWlsZCBob3N0LgogCi0gICA6dGVybTpgU0RLX0FSQ0hgCisgICBTREtfQVJDSAogICAgICAgVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgZm9yIHRoZSBTREsuIFR5cGljYWxseSwgeW91IGRvIG5vdCBkaXJlY3RseQogICAgICAgc2V0IHRoaXMgdmFyaWFibGUuIEluc3RlYWQsIHVzZSA6dGVybTpgU0RLTUFDSElORWAuCiAKLSAgIDp0ZXJtOmBTREtfREVQTE9ZYAorICAgU0RLX0RFUExPWQogICAgICAgVGhlIGRpcmVjdG9yeSBzZXQgdXAgYW5kIHVzZWQgYnkgdGhlCiAgICAgICA6cmVmOmBwb3B1bGF0ZV9zZGtfYmFzZSA8cmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrPmAgY2xhc3MgdG8gd2hpY2gKICAgICAgIHRoZSBTREsgaXMgZGVwbG95ZWQuIFRoZSBgYHBvcHVsYXRlX3Nka19iYXNlYGAgY2xhc3MgZGVmaW5lcwpAQCAtNjUzNSw3ICs2NTM1LDcgQEAKIAogICAgICAgICAgU0RLX0RFUExPWSA9ICIke1RNUERJUn0vZGVwbG95L3NkayIKIAotICAgOnRlcm06YFNES19ESVJgCisgICBTREtfRElSCiAgICAgICBUaGUgcGFyZW50IGRpcmVjdG9yeSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoZW4KICAgICAgIGNyZWF0aW5nIFNESyBvdXRwdXQuIFRoZQogICAgICAgOnJlZjpgcG9wdWxhdGVfc2RrX2Jhc2UgPHJlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qPmAgY2xhc3MgZGVmaW5lcwpAQCAtNjU1NCw3ICs2NTU0LDcgQEAKICAgICAgICAgIFNES19ERVBMT1kKICAgICAgICAgIC4KIAotICAgOnRlcm06YFNES19FWFRfVFlQRWAKKyAgIFNES19FWFRfVFlQRQogICAgICAgQ29udHJvbHMgd2hldGhlciBvciBub3Qgc2hhcmVkIHN0YXRlIGFydGlmYWN0cyBhcmUgY29waWVkIGludG8gdGhlCiAgICAgICBleHRlbnNpYmxlIFNESy4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgImZ1bGwiIGNvcGllcyBhbGwgb2YgdGhlCiAgICAgICByZXF1aXJlZCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGludG8gdGhlIGV4dGVuc2libGUgU0RLLiBUaGUgdmFsdWUKQEAgLTY1NjcsNyArNjU2Nyw3IEBACiAgICAgICAgICBpcyBzZXQgaW4gdGhlIFNESydzIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIHRoZSBhcnRpZmFjdHMgdG8gYmUKICAgICAgICAgIGZldGNoZWQgYXMgbmVlZGVkLgogCi0gICA6dGVybTpgU0RLX0hPU1RfTUFOSUZFU1RgCisgICBTREtfSE9TVF9NQU5JRkVTVAogICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBob3N0IHBhcnQgb2YgdGhlIFNESy4gVGhpcyBmaWxlIGxpc3RzIGFsbAogICAgICAgdGhlIGluc3RhbGxlZCBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIGhvc3QgcGFydCBvZiB0aGUgU0RLLiBUaGUKICAgICAgIGZpbGUgY29udGFpbnMgcGFja2FnZSBpbmZvcm1hdGlvbiBvbiBhIGxpbmUtcGVyLXBhY2thZ2UgYmFzaXMgYXMKQEAgLTY1ODUsNyArNjU4NSw3IEBACiAgICAgICBUaGUgbG9jYXRpb24gaXMgZGVyaXZlZCB1c2luZyB0aGUgOnRlcm06YFNES19ERVBMT1lgIGFuZAogICAgICAgOnRlcm06YFRPT0xDSEFJTl9PVVRQVVROQU1FYCB2YXJpYWJsZXMuCiAKLSAgIDp0ZXJtOmBTREtfSU5DTFVERV9QS0dEQVRBYAorICAgU0RLX0lOQ0xVREVfUEtHREFUQQogICAgICAgV2hlbiBzZXQgdG8gIjEiLCBzcGVjaWZpZXMgdG8gaW5jbHVkZSB0aGUgcGFja2FnZWRhdGEgZm9yIGFsbCByZWNpcGVzCiAgICAgICBpbiB0aGUgIndvcmxkIiB0YXJnZXQgaW4gdGhlIGV4dGVuc2libGUgU0RLLiBJbmNsdWRpbmcgdGhpcyBkYXRhCiAgICAgICBhbGxvd3MgdGhlIGBgZGV2dG9vbCBzZWFyY2hgYCBjb21tYW5kIHRvIGZpbmQgdGhlc2UgcmVjaXBlcyBpbiBzZWFyY2gKQEAgLTY2MDAsNyArNjYwMCw3IEBACiAgICAgICAgICBuZWVkcyB0byBiZSBidWlsdC4gRW5hYmxpbmcgdGhlIHZhcmlhYmxlIGFsc28gc2xpZ2h0bHkgaW5jcmVhc2VzCiAgICAgICAgICB0aGUgc2l6ZSBvZiB0aGUgZXh0ZW5zaWJsZSBTREsuCiAKLSAgIDp0ZXJtOmBTREtfSU5DTFVERV9UT09MQ0hBSU5gCisgICBTREtfSU5DTFVERV9UT09MQ0hBSU4KICAgICAgIFdoZW4gc2V0IHRvICIxIiwgc3BlY2lmaWVzIHRvIGluY2x1ZGUgdGhlIHRvb2xjaGFpbiBpbiB0aGUgZXh0ZW5zaWJsZQogICAgICAgU0RLLiBJbmNsdWRpbmcgdGhlIHRvb2xjaGFpbiBpcyB1c2VmdWwgcGFydGljdWxhcmx5IHdoZW4KICAgICAgIDp0ZXJtOmBTREtfRVhUX1RZUEVgIGlzIHNldCB0byAibWluaW1hbCIgdG8ga2VlcApAQCAtNjYxMyw3ICs2NjEzLDcgQEAKICAgICAgIGBgU0RLX0VYVF9UWVBFYGAgaXMgc2V0IHRvICJtaW5pbWFsIiwgYW5kIGRlZmF1bHRzIHRvICIxIiBpZgogICAgICAgYGBTREtfRVhUX1RZUEVgYCBpcyBzZXQgdG8gImZ1bGwiLgogCi0gICA6dGVybTpgU0RLX0lOSEVSSVRfQkxBQ0tMSVNUYAorICAgU0RLX0lOSEVSSVRfQkxBQ0tMSVNUCiAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0byByZW1vdmUgZnJvbSB0aGUgOnRlcm06YElOSEVSSVRgCiAgICAgICB2YWx1ZSBnbG9iYWxseSB3aXRoaW4gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uIFRoZQogICAgICAgOnJlZjpgcG9wdWxhdGUtc2RrLWV4dCA8cmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSo+YCBjbGFzcyBzZXRzIHRoZQpAQCAtNjYzMSw3ICs2NjMxLDcgQEAKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQogICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KIAotICAgOnRlcm06YFNES19MT0NBTF9DT05GX0JMQUNLTElTVGAKKyAgIFNES19MT0NBTF9DT05GX0JMQUNLTElTVAogICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIE9wZW5FbWJlZGRlZCBidWlsZAogICAgICAgc3lzdGVtIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4gVXN1YWxseSwKICAgICAgIHRoZXNlIGFyZSB2YXJpYWJsZXMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgb24gd2hpY2ggdGhlCkBAIC02NjU3LDcgKzY2NTcsNyBAQAogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCiAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogCi0gICA6dGVybTpgU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUYAorICAgU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUCiAgICAgICBBIGxpc3Qgb2YgdmFyaWFibGVzIGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uIEJ5CiAgICAgICBkZWZhdWx0LCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMgaXMgZW1wdHkgYW5kIGlzIHNldCBpbiB0aGUKQEAgLTY2NzYsNyArNjY3Niw3IEBACiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAKLSAgIDp0ZXJtOmBTREtfTkFNRWAKKyAgIFNES19OQU1FCiAgICAgICBUaGUgYmFzZSBuYW1lIGZvciBTREsgb3V0cHV0IGZpbGVzLiBUaGUgbmFtZSBpcyBkZXJpdmVkIGZyb20gdGhlCiAgICAgICA6dGVybTpgRElTVFJPYCwgOnRlcm06YFRDTElCQ2AsCiAgICAgICA6dGVybTpgU0RLX0FSQ0hgLApAQCAtNjY4NiwxMSArNjY4NiwxMSBAQAogCiAgICAgICAgICBTREtfTkFNRSA9ICIke0RJU1RST30tJHtUQ0xJQkN9LSR7U0RLX0FSQ0h9LSR7SU1BR0VfQkFTRU5BTUV9LSR7VFVORV9QS0dBUkNIfSIKIAotICAgOnRlcm06YFNES19PU2AKKyAgIFNES19PUwogICAgICAgU3BlY2lmaWVzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZvciB3aGljaCB0aGUgU0RLIHdpbGwgYmUgYnVpbHQuIFRoZQogICAgICAgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgOnRlcm06YEJVSUxEX09TYC4KIAotICAgOnRlcm06YFNES19PVVRQVVRgCisgICBTREtfT1VUUFVUCiAgICAgICBUaGUgbG9jYXRpb24gdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGVuIGNyZWF0aW5nIFNESwogICAgICAgb3V0cHV0LiBUaGUgOnJlZjpgcG9wdWxhdGVfc2RrX2Jhc2UgPHJlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qPmAKICAgICAgIGNsYXNzIGRlZmluZXMgdGhlIHZhcmlhYmxlIGFzIGZvbGxvd3M6CkBAIC02NzA2LDE0ICs2NzA2LDE0IEBACiAgICAgICAgICBXT1JLRElSIGJ5IHdheSBvZiBTREtfRElSLiBUaGUgZmluYWwgb3V0cHV0IGRpcmVjdG9yeSBpcwogICAgICAgICAgU0RLX0RFUExPWS4KIAotICAgOnRlcm06YFNES19QQUNLQUdFX0FSQ0hTYAorICAgU0RLX1BBQ0tBR0VfQVJDSFMKICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgYXJjaGl0ZWN0dXJlcyBjb21wYXRpYmxlIHdpdGggdGhlIFNESyBtYWNoaW5lLgogICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBhbmQgc2hvdWxkIG5vdCBub3JtYWxseSBiZQogICAgICAgaGFuZC1lZGl0ZWQuIEVudHJpZXMgYXJlIHNlcGFyYXRlZCB1c2luZyBzcGFjZXMgYW5kIGxpc3RlZCBpbiBvcmRlcgogICAgICAgb2YgcHJpb3JpdHkuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBgYFNES19QQUNLQUdFX0FSQ0hTYGAgaXMgImFsbCBhbnkKICAgICAgIG5vYXJjaCAke1NES19BUkNIfS0ke1NES1BLR1NVRkZJWH0iLgogCi0gICA6dGVybTpgU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkRgCisgICBTREtfUE9TVFBST0NFU1NfQ09NTUFORAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKICAgICAgIHN5c3RlbSBjcmVhdGVzIHRoZSBTREsuIFlvdSBjYW4gc3BlY2lmeSBmdW5jdGlvbnMgc2VwYXJhdGVkIGJ5CiAgICAgICBzZW1pY29sb25zOiBTREtfUE9TVFBST0NFU1NfQ09NTUFORCArPSAiZnVuY3Rpb247IC4uLiAiCkBAIC02NzIzLDEzICs2NzIzLDEzIEBACiAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGVuIGNyZWF0aW5nIFNESyBvdXRwdXQuIFNlZSB0aGUKICAgICAgIDp0ZXJtOmBTREtfRElSYCB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YFNES19QUkVGSVhgCisgICBTREtfUFJFRklYCiAgICAgICBUaGUgdG9vbGNoYWluIGJpbmFyeSBwcmVmaXggdXNlZCBmb3IgYGBuYXRpdmVzZGtgYCByZWNpcGVzLiBUaGUKICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgYGBTREtfUFJFRklYYGAgdmFsdWUgdG8gc2V0IHRoZQogICAgICAgOnRlcm06YFRBUkdFVF9QUkVGSVhgIHdoZW4gYnVpbGRpbmcKICAgICAgIGBgbmF0aXZlc2RrYGAgcmVjaXBlcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgIiR7U0RLX1NZU30tIi4KIAotICAgOnRlcm06YFNES19SRUNSREVQX1RBU0tTYAorICAgU0RLX1JFQ1JERVBfVEFTS1MKICAgICAgIEEgbGlzdCBvZiBzaGFyZWQgc3RhdGUgdGFza3MgYWRkZWQgdG8gdGhlIGV4dGVuc2libGUgU0RLLiBCeSBkZWZhdWx0LAogICAgICAgdGhlIGZvbGxvd2luZyB0YXNrcyBhcmUgYWRkZWQ6CiAKQEAgLTY3NDUsNyArNjc0NSw3IEBACiAgICAgICB0YXNrcyB0aGF0IGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gYnVpbGQKICAgICAgIDp0ZXJtOmBTREtfVEFSR0VUU2ApLgogCi0gICA6dGVybTpgU0RLX1NZU2AKKyAgIFNES19TWVMKICAgICAgIFNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZwogICAgICAgc3lzdGVtLCBmb3Igd2hpY2ggdGhlIFNESyB3aWxsIGJlIGJ1aWx0LgogCkBAIC02NzU1LDcgKzY3NTUsNyBAQAogICAgICAgOnRlcm06YFNES19PU2AuIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGBgU0RLX1NZU2BgCiAgICAgICB2YXJpYWJsZSB5b3Vyc2VsZi4KIAotICAgOnRlcm06YFNES19UQVJHRVRfTUFOSUZFU1RgCisgICBTREtfVEFSR0VUX01BTklGRVNUCiAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIHRhcmdldCBwYXJ0IG9mIHRoZSBTREsuIFRoaXMgZmlsZSBsaXN0cyBhbGwKICAgICAgIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSB0YXJnZXQgcGFydCBvZiB0aGUgU0RLLiBUaGUKICAgICAgIGZpbGUgY29udGFpbnMgcGFja2FnZSBpbmZvcm1hdGlvbiBvbiBhIGxpbmUtcGVyLXBhY2thZ2UgYmFzaXMgYXMKQEAgLTY3NzMsNyArNjc3Myw3IEBACiAgICAgICBUaGUgbG9jYXRpb24gaXMgZGVyaXZlZCB1c2luZyB0aGUgOnRlcm06YFNES19ERVBMT1lgIGFuZAogICAgICAgOnRlcm06YFRPT0xDSEFJTl9PVVRQVVROQU1FYCB2YXJpYWJsZXMuCiAKLSAgIDp0ZXJtOmBTREtfVEFSR0VUU2AKKyAgIFNES19UQVJHRVRTCiAgICAgICBBIGxpc3Qgb2YgdGFyZ2V0cyB0byBpbnN0YWxsIGZyb20gc2hhcmVkIHN0YXRlIGFzIHBhcnQgb2YgdGhlCiAgICAgICBzdGFuZGFyZCBvciBleHRlbnNpYmxlIFNESyBpbnN0YWxsYXRpb24uIFRoZSBkZWZhdWx0IHZhbHVlIGlzICIke1BOfSIKICAgICAgIChpLmUuIHRoZSBpbWFnZSBmcm9tIHdoaWNoIHRoZSBTREsgaXMgYnVpbHQpLgpAQCAtNjc4MSw3ICs2NzgxLDcgQEAKICAgICAgIFRoZSBgYFNES19UQVJHRVRTYGAgdmFyaWFibGUgaXMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIHR5cGljYWxseQogICAgICAgd291bGQgbm90IGJlIGNoYW5nZWQuCiAKLSAgIDp0ZXJtOmBTREtfVElUTEVgCisgICBTREtfVElUTEUKICAgICAgIFRoZSB0aXRsZSB0byBiZSBwcmludGVkIHdoZW4gcnVubmluZyB0aGUgU0RLIGluc3RhbGxlci4gQnkgZGVmYXVsdCwKICAgICAgIHRoaXMgdGl0bGUgaXMgYmFzZWQgb24gdGhlIDp0ZXJtOmBESVNUUk9fTkFNRWAgb3IKICAgICAgIDp0ZXJtOmBESVNUUk9gIHZhcmlhYmxlIGFuZCBpcyBzZXQgaW4gdGhlCkBAIC02Nzk5LDE1ICs2Nzk5LDE1IEBACiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAKLSAgIDp0ZXJtOmBTREtfVVBEQVRFX1VSTGAKKyAgIFNES19VUERBVEVfVVJMCiAgICAgICBBbiBvcHRpb25hbCBVUkwgZm9yIGFuIHVwZGF0ZSBzZXJ2ZXIgZm9yIHRoZSBleHRlbnNpYmxlIFNESy4gSWYgc2V0LAogICAgICAgdGhlIHZhbHVlIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgdXBkYXRlIHNlcnZlciB3aGVuIHJ1bm5pbmcKICAgICAgIGBgZGV2dG9vbCBzZGstdXBkYXRlYGAgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESy4KIAotICAgOnRlcm06YFNES19WRU5ET1JgCisgICBTREtfVkVORE9SCiAgICAgICBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIFNESyB2ZW5kb3IuCiAKLSAgIDp0ZXJtOmBTREtfVkVSU0lPTmAKKyAgIFNES19WRVJTSU9OCiAgICAgICBTcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgdGhlIFNESy4gVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUKICAgICAgIChlLmcuIGBgL21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmZgYCkgZGVmaW5lcyB0aGUKICAgICAgIGBgU0RLX1ZFUlNJT05gYCBhcyBmb2xsb3dzOgpAQCAtNjgxOSw3ICs2ODE5LDcgQEAKICAgICAgIDp0ZXJtOmBESVNUUk9fVkVSU0lPTmAgYW5kCiAgICAgICA6dGVybTpgREFURWAgdmFyaWFibGVzLgogCi0gICA6dGVybTpgU0RLRVhUUEFUSGAKKyAgIFNES0VYVFBBVEgKICAgICAgIFRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIHRoZSBFeHRlbnNpYmxlIFNESy4gQnkKICAgICAgIGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IGlzIGJhc2VkIG9uIHRoZSA6dGVybTpgRElTVFJPYAogICAgICAgdmFyaWFibGUgYW5kIGlzIHNldCBpbiB0aGUKQEAgLTY4MzcsMTQgKzY4MzcsMTQgQEAKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQogICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KIAotICAgOnRlcm06YFNES0lNQUdFX0ZFQVRVUkVTYAorICAgU0RLSU1BR0VfRkVBVFVSRVMKICAgICAgIEVxdWl2YWxlbnQgdG8gYGBJTUFHRV9GRUFUVVJFU2BgLiBIb3dldmVyLCB0aGlzIHZhcmlhYmxlIGFwcGxpZXMgdG8KICAgICAgIHRoZSBTREsgZ2VuZXJhdGVkIGZyb20gYW4gaW1hZ2UgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgOjoKIAogICAgICAgICAgJCBiaXRiYWtlIC1jIHBvcHVsYXRlX3NkayBpbWFnZW5hbWUKIAotICAgOnRlcm06YFNES01BQ0hJTkVgCisgICBTREtNQUNISU5FCiAgICAgICBUaGUgbWFjaGluZSBmb3Igd2hpY2ggdGhlIFNESyBpcyBidWlsdC4gSW4gb3RoZXIgd29yZHMsIHRoZSBTREsgaXMKICAgICAgIGJ1aWx0IHN1Y2ggdGhhdCBpdCBydW5zIG9uIHRoZSB0YXJnZXQgeW91IHNwZWNpZnkgd2l0aCB0aGUKICAgICAgIGBgU0RLTUFDSElORWBgIHZhbHVlLiBUaGUgdmFsdWUgcG9pbnRzIHRvIGEgY29ycmVzcG9uZGluZyBgYC5jb25mYGAKQEAgLTY4NjQsMjMgKzY4NjQsMjMgQEAKICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZS4gSWYgeW91IGRvLCB0aGUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24gd2lsbCBub3QgdGFrZSBhZmZlY3QuCiAKLSAgIDp0ZXJtOmBTREtQQVRIYAorICAgU0RLUEFUSAogICAgICAgRGVmaW5lcyB0aGUgcGF0aCBvZmZlcmVkIHRvIHRoZSB1c2VyIGZvciBpbnN0YWxsYXRpb24gb2YgdGhlIFNESyB0aGF0CiAgICAgICBpcyBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIFRoZSBwYXRoIGFwcGVhcnMgYXMKICAgICAgIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciBpbnN0YWxsaW5nIHRoZSBTREsgd2hlbiB5b3UgcnVuIHRoZSBTREsncwogICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdC4gWW91IGNhbiBvdmVycmlkZSB0aGUgb2ZmZXJlZCBwYXRoIHdoZW4geW91IHJ1bgogICAgICAgdGhlIHNjcmlwdC4KIAotICAgOnRlcm06YFNES1RBUkdFVFNZU1JPT1RgCisgICBTREtUQVJHRVRTWVNST09UCiAgICAgICBUaGUgZnVsbCBwYXRoIHRvIHRoZSBzeXNyb290IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIHdpdGhpbiBhbiBTREsKICAgICAgIGFzIGl0IHdpbGwgYmUgd2hlbiBpbnN0YWxsZWQgaW50byB0aGUgZGVmYXVsdAogICAgICAgOnRlcm06YFNES1BBVEhgLgogCi0gICA6dGVybTpgU0VDVElPTmAKKyAgIFNFQ1RJT04KICAgICAgIFRoZSBzZWN0aW9uIGluIHdoaWNoIHBhY2thZ2VzIHNob3VsZCBiZSBjYXRlZ29yaXplZC4gUGFja2FnZQogICAgICAgbWFuYWdlbWVudCB1dGlsaXRpZXMgY2FuIG1ha2UgdXNlIG9mIHRoaXMgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBTRUxFQ1RFRF9PUFRJTUlaQVRJT05gCisgICBTRUxFQ1RFRF9PUFRJTUlaQVRJT04KICAgICAgIFNwZWNpZmllcyB0aGUgb3B0aW1pemF0aW9uIGZsYWdzIHBhc3NlZCB0byB0aGUgQyBjb21waWxlciB3aGVuCiAgICAgICBidWlsZGluZyBmb3IgdGhlIHRhcmdldC4gVGhlIGZsYWdzIGFyZSBwYXNzZWQgdGhyb3VnaCB0aGUgZGVmYXVsdAogICAgICAgdmFsdWUgb2YgdGhlIDp0ZXJtOmBUQVJHRVRfQ0ZMQUdTYCB2YXJpYWJsZS4KQEAgLTY4ODksNyArNjg4OSw3IEBACiAgICAgICBgYEZVTExfT1BUSU1JWkFUSU9OYGAgdW5sZXNzIGBgREVCVUdfQlVJTERgYCA9ICIxIi4gSWYgdGhhdCBpcyB0aGUKICAgICAgIGNhc2UsIHRoZSB2YWx1ZSBvZiBgYERFQlVHX09QVElNSVpBVElPTmBgIGlzIHVzZWQuCiAKLSAgIDp0ZXJtOmBTRVJJQUxfQ09OU09MRWAKKyAgIFNFUklBTF9DT05TT0xFCiAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCiAgICAgICBgZ2V0dHkgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dldHR5XyhVbml4KT5gX18uIFByb3ZpZGUgYQogICAgICAgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIGJhdWQgcmF0ZSBmb2xsb3dlZCBieSB0aGUgVFRZIGRldmljZSBuYW1lCkBAIC02OTA2LDcgKzY5MDYsNyBAQAogICAgICAgICAgU0VSSUFMX0NPTlNPTEVTCiAgICAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YFNFUklBTF9DT05TT0xFU2AKKyAgIFNFUklBTF9DT05TT0xFUwogICAgICAgRGVmaW5lcyBhIHNlcmlhbCBjb25zb2xlIChUVFkpIHRvIGVuYWJsZSB1c2luZwogICAgICAgYGdldHR5IDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZXR0eV8oVW5peCk+YF9fLiBQcm92aWRlIGEKICAgICAgIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUgZm9sbG93ZWQgYnkgdGhlIFRUWSBkZXZpY2UgbmFtZQpAQCAtNjkxNSw3ICs2OTE1LDcgQEAKIAogICAgICAgICAgU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCAxMTUyMDA7dHR5UzEiCiAKLSAgIDp0ZXJtOmBTRVJJQUxfQ09OU09MRVNfQ0hFQ0tgCisgICBTRVJJQUxfQ09OU09MRVNfQ0hFQ0sKICAgICAgIFNwZWNpZmllcyBzZXJpYWwgY29uc29sZXMsIHdoaWNoIG11c3QgYmUgbGlzdGVkIGluCiAgICAgICA6dGVybTpgU0VSSUFMX0NPTlNPTEVTYCwgdG8gY2hlY2sgYWdhaW5zdAogICAgICAgYGAvcHJvYy9jb25zb2xlYGAgYmVmb3JlIGVuYWJsaW5nIHRoZW0gdXNpbmcgZ2V0dHkuIFRoaXMgdmFyaWFibGUKQEAgLTY5MjgsNyArNjkyOCw3IEBACiAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCB3aXRoIFN5c1Zpbml0IChpLmUuIG5vdAogICAgICAgd2l0aCBzeXN0ZW1kKS4KIAotICAgOnRlcm06YFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFNgCisgICBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTCiAgICAgICBBIGxpc3Qgb2YgcmVjaXBlIGRlcGVuZGVuY2llcyB0aGF0IHNob3VsZCBub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUKICAgICAgIHNpZ25hdHVyZXMgb2YgdGFza3MgZnJvbSBvbmUgcmVjaXBlIHdoZW4gdGhleSBkZXBlbmQgb24gdGFza3MgZnJvbQogICAgICAgYW5vdGhlciByZWNpcGUuIEZvciBleGFtcGxlOiA6OgpAQCAtNjk1Niw3ICs2OTU2LDcgQEAKICAgICAgICAgIHRoZSBzb2Z0d2FyZSBtaWdodCBicmVhayBkdXJpbmcgcnVudGltZSBpZiB0aGUgaW50ZXJmYWNlIG9mIHRoZQogICAgICAgICAgc2Vjb25kIHJlY2lwZSB3YXMgY2hhbmdlZCBhZnRlciB0aGUgZmlyc3QgcmVjaXBlIGhhZCBiZWVuIGJ1aWx0LgogCi0gICA6dGVybTpgU0lHR0VOX0VYQ0xVREVSRUNJUEVTX0FCSVNBRkVgCisgICBTSUdHRU5fRVhDTFVERVJFQ0lQRVNfQUJJU0FGRQogICAgICAgQSBsaXN0IG9mIHJlY2lwZXMgdGhhdCBhcmUgY29tcGxldGVseSBzdGFibGUgYW5kIHdpbGwgbmV2ZXIgY2hhbmdlLgogICAgICAgVGhlIEFCSSBmb3IgdGhlIHJlY2lwZXMgaW4gdGhlIGxpc3QgYXJlIHByZXNlbnRlZCBieSBvdXRwdXQgZnJvbSB0aGUKICAgICAgIHRhc2tzIHJ1biB0byBidWlsZCB0aGUgcmVjaXBlLiBVc2Ugb2YgdGhpcyB2YXJpYWJsZSBpcyBvbmUgd2F5IHRvCkBAIC02OTY5LDE1ICs2OTY5LDE1IEBACiAgICAgICAgICBtaWdodCBicmVhayBhdCBydW50aW1lIGlmIHRoZSBpbnRlcmZhY2Ugb2YgdGhlIHJlY2lwZSB3YXMgY2hhbmdlZAogICAgICAgICAgYWZ0ZXIgdGhlIG90aGVyIGhhZCBiZWVuIGJ1aWx0LgogCi0gICA6dGVybTpgU0lURUlORk9fQklUU2AKKyAgIFNJVEVJTkZPX0JJVFMKICAgICAgIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJpdHMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtIENQVS4gVGhlIHZhbHVlCiAgICAgICBzaG91bGQgYmUgZWl0aGVyICIzMiIgb3IgIjY0Ii4KIAotICAgOnRlcm06YFNJVEVJTkZPX0VORElBTk5FU1NgCisgICBTSVRFSU5GT19FTkRJQU5ORVNTCiAgICAgICBTcGVjaWZpZXMgdGhlIGVuZGlhbiBieXRlIG9yZGVyIG9mIHRoZSB0YXJnZXQgc3lzdGVtLiBUaGUgdmFsdWUKICAgICAgIHNob3VsZCBiZSBlaXRoZXIgImxlIiBmb3IgbGl0dGxlLWVuZGlhbiBvciAiYmUiIGZvciBiaWctZW5kaWFuLgogCi0gICA6dGVybTpgU0tJUF9GSUxFREVQU2AKKyAgIFNLSVBfRklMRURFUFMKICAgICAgIEVuYWJsZXMgcmVtb3ZhbCBvZiBhbGwgZmlsZXMgZnJvbSB0aGUgIlByb3ZpZGVzIiBzZWN0aW9uIG9mIGFuIFJQTQogICAgICAgcGFja2FnZS4gUmVtb3ZhbCBvZiB0aGVzZSBmaWxlcyBpcyByZXF1aXJlZCBmb3IgcGFja2FnZXMgY29udGFpbmluZwogICAgICAgcHJlYnVpbHQgYmluYXJpZXMgYW5kIGxpYnJhcmllcyBzdWNoIGFzIGBgbGlic3RkYysrYGAgYW5kIGBgZ2xpYmNgYC4KQEAgLTY5ODksNyArNjk4OSw3IEBACiAKICAgICAgICAgIFNLSVBfRklMRURFUFMgPSAiMSIKIAotICAgOnRlcm06YFNPQ19GQU1JTFlgCisgICBTT0NfRkFNSUxZCiAgICAgICBHcm91cHMgdG9nZXRoZXIgbWFjaGluZXMgYmFzZWQgdXBvbiB0aGUgc2FtZSBmYW1pbHkgb2YgU09DIChTeXN0ZW0gT24KICAgICAgIENoaXApLiBZb3UgdHlwaWNhbGx5IHNldCB0aGlzIHZhcmlhYmxlIGluIGEgY29tbW9uIGBgLmluY2BgIGZpbGUgdGhhdAogICAgICAgeW91IGluY2x1ZGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgb2YgYWxsIHRoZSBtYWNoaW5lcy4KQEAgLTcwMDIsNyArNzAwMiw3IEBACiAgICAgICAgICBNQUNISU5FT1ZFUlJJREVTCiAgICAgICAgICAuCiAKLSAgIDp0ZXJtOmBTT0xJQlNgCisgICBTT0xJQlMKICAgICAgIERlZmluZXMgdGhlIHN1ZmZpeCBmb3Igc2hhcmVkIGxpYnJhcmllcyB1c2VkIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0uCiAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHN1ZmZpeCBpcyAiLnNvLioiIGZvciBhbGwgTGludXgtYmFzZWQgc3lzdGVtcyBhbmQgaXMKICAgICAgIGRlZmluZWQgaW4gdGhlIGBgbWV0YS9jb25mL2JpdGJha2UuY29uZmBgIGNvbmZpZ3VyYXRpb24gZmlsZS4KQEAgLTcwMTAsNyArNzAxMCw3IEBACiAgICAgICBZb3Ugd2lsbCBzZWUgdGhpcyB2YXJpYWJsZSByZWZlcmVuY2VkIGluIHRoZSBkZWZhdWx0IHZhbHVlcyBvZgogICAgICAgYGBGSUxFU18ke1BOfWBgLgogCi0gICA6dGVybTpgU09MSUJTREVWYAorICAgU09MSUJTREVWCiAgICAgICBEZWZpbmVzIHRoZSBzdWZmaXggZm9yIHRoZSBkZXZlbG9wbWVudCBzeW1ib2xpYyBsaW5rIChzeW1saW5rKSBmb3IKICAgICAgIHNoYXJlZCBsaWJyYXJpZXMgb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4gQnkgZGVmYXVsdCwgdGhpcyBzdWZmaXggaXMKICAgICAgICIuc28iIGZvciBMaW51eC1iYXNlZCBzeXN0ZW1zIGFuZCBpcyBkZWZpbmVkIGluIHRoZQpAQCAtNzAxOSw3ICs3MDE5LDcgQEAKICAgICAgIFlvdSB3aWxsIHNlZSB0aGlzIHZhcmlhYmxlIHJlZmVyZW5jZWQgaW4gdGhlIGRlZmF1bHQgdmFsdWVzIG9mCiAgICAgICBgYEZJTEVTXyR7UE59LWRldmBgLgogCi0gICA6dGVybTpgU09VUkNFX01JUlJPUl9GRVRDSGAKKyAgIFNPVVJDRV9NSVJST1JfRkVUQ0gKICAgICAgIFdoZW4geW91IGFyZSBmZXRjaGluZyBmaWxlcyB0byBjcmVhdGUgYSBtaXJyb3Igb2Ygc291cmNlcyAoaS5lLgogICAgICAgY3JlYXRpbmcgYSBzb3VyY2UgbWlycm9yKSwgc2V0dGluZyBgYFNPVVJDRV9NSVJST1JfRkVUQ0hgYCB0byAiMSIgaW4KICAgICAgIHlvdXIgYGBsb2NhbC5jb25mYGAgY29uZmlndXJhdGlvbiBmaWxlIGVuc3VyZXMgdGhlIHNvdXJjZSBmb3IgYWxsCkBAIC03MDM4LDcgKzcwMzgsNyBAQAogICAgICAgICAgdmFyaWFibGUgdW5sZXNzIHlvdSBhcmUgY3JlYXRpbmcgYSBzb3VyY2UgbWlycm9yLiBJbiBvdGhlciB3b3JkcywKICAgICAgICAgIGRvIG5vdCBzZXQgdGhlIHZhcmlhYmxlIGR1cmluZyBhIG5vcm1hbCBidWlsZC4KIAotICAgOnRlcm06YFNPVVJDRV9NSVJST1JfVVJMYAorICAgU09VUkNFX01JUlJPUl9VUkwKICAgICAgIERlZmluZXMgeW91ciBvd24gOnRlcm06YFBSRU1JUlJPUlNgIGZyb20gd2hpY2ggdG8KICAgICAgIGZpcnN0IGZldGNoIHNvdXJjZSBiZWZvcmUgYXR0ZW1wdGluZyB0byBmZXRjaCBmcm9tIHRoZSB1cHN0cmVhbQogICAgICAgc3BlY2lmaWVkIGluIDp0ZXJtOmBTUkNfVVJJYC4KQEAgLTcwNTcsNyArNzA1Nyw3IEBACiAgICAgICAgICBTT1VSQ0VfTUlSUk9SX1VSTAogICAgICAgICAgLgogCi0gICA6dGVybTpgU1BEWExJQ0VOU0VNQVBgCisgICBTUERYTElDRU5TRU1BUAogICAgICAgTWFwcyBjb21tb25seSB1c2VkIGxpY2Vuc2UgbmFtZXMgdG8gdGhlaXIgU1BEWCBjb3VudGVycGFydHMgZm91bmQgaW4KICAgICAgIGBgbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvYGAuIEZvciB0aGUgZGVmYXVsdCBgYFNQRFhMSUNFTlNFTUFQYGAKICAgICAgIG1hcHBpbmdzLCBzZWUgdGhlIGBgbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmZgYCBmaWxlLgpAQCAtNzA2NSwxMyArNzA2NSwxMyBAQAogICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNlZSB0aGUgOnRlcm06YExJQ0VOU0VgCiAgICAgICB2YXJpYWJsZS4KIAotICAgOnRlcm06YFNQRUNJQUxfUEtHU1VGRklYYAorICAgU1BFQ0lBTF9QS0dTVUZGSVgKICAgICAgIEEgbGlzdCBvZiBwcmVmaXhlcyBmb3IgOnRlcm06YFBOYCB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQKICAgICAgIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgdmFyaWFudHMgb2YgcmVjaXBlcyBvciBwYWNrYWdlcy4gVGhlIGxpc3QKICAgICAgIHNwZWNpZmllcyB0aGUgcHJlZml4ZXMgdG8gc3RyaXAgb2ZmIGR1cmluZyBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgc3VjaAogICAgICAgYXMgdGhlIGdlbmVyYXRpb24gb2YgdGhlIDp0ZXJtOmBCUE5gIHZhcmlhYmxlLgogCi0gICA6dGVybTpgU1BMX0JJTkFSWWAKKyAgIFNQTF9CSU5BUlkKICAgICAgIFRoZSBmaWxlIHR5cGUgZm9yIHRoZSBTZWNvbmRhcnkgUHJvZ3JhbSBMb2FkZXIgKFNQTCkuIFNvbWUgZGV2aWNlcwogICAgICAgdXNlIGFuIFNQTCBmcm9tIHdoaWNoIHRvIGJvb3QgKGUuZy4gdGhlIEJlYWdsZUJvbmUgZGV2ZWxvcG1lbnQKICAgICAgIGJvYXJkKS4gRm9yIHN1Y2ggY2FzZXMsIHlvdSBjYW4gZGVjbGFyZSB0aGUgZmlsZSB0eXBlIG9mIHRoZSBTUEwKQEAgLTcwOTksNyArNzA5OSw3IEBACiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSBEZXZlbG9wZXIncyBHdWlkZQogICAgICAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBTUkNfVVJJYAorICAgU1JDX1VSSQogICAgICAgVGhlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIC0gbG9jYWwgb3IgcmVtb3RlLiBUaGlzIHZhcmlhYmxlIHRlbGxzIHRoZQogICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGljaCBiaXRzIHRvIHB1bGwgaW4gZm9yIHRoZSBidWlsZCBhbmQgaG93CiAgICAgICB0byBwdWxsIHRoZW0gaW4uIEZvciBleGFtcGxlLCBpZiB0aGUgcmVjaXBlIG9yIGFwcGVuZCBmaWxlIG9ubHkgbmVlZHMKQEAgLTcyNDIsMTggKzcyNDIsMTggQEAKICAgICAgIC0gIGBgZG93bmxvYWRmaWxlbmFtZWBgIC0gU3BlY2lmaWVzIHRoZSBmaWxlbmFtZSB1c2VkIHdoZW4gc3RvcmluZwogICAgICAgICAgdGhlIGRvd25sb2FkZWQgZmlsZS4KIAotICAgOnRlcm06YFNSQ19VUklfT1ZFUlJJREVTX1BBQ0tBR0VfQVJDSGAKKyAgIFNSQ19VUklfT1ZFUlJJREVTX1BBQ0tBR0VfQVJDSAogICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXV0b21hdGljYWxseSBkZXRlY3RzCiAgICAgICB3aGV0aGVyIGBgU1JDX1VSSWBgIGNvbnRhaW5zIGZpbGVzIHRoYXQgYXJlIG1hY2hpbmUtc3BlY2lmaWMuIElmIHNvLAogICAgICAgdGhlIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGNoYW5nZXMgYGBQQUNLQUdFX0FSQ0hgYC4gU2V0dGluZyB0aGlzCiAgICAgICB2YXJpYWJsZSB0byAiMCIgZGlzYWJsZXMgdGhpcyBiZWhhdmlvci4KIAotICAgOnRlcm06YFNSQ0RBVEVgCisgICBTUkNEQVRFCiAgICAgICBUaGUgZGF0ZSBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4gVGhpcyB2YXJpYWJsZQogICAgICAgYXBwbGllcyBvbmx5IGlmIHRoZSBzb3VyY2Ugd2FzIGZldGNoZWQgZnJvbSBhIFNvdXJjZSBDb2RlIE1hbmFnZXIKICAgICAgIChTQ00pLgogCi0gICA6dGVybTpgU1JDUFZgCisgICBTUkNQVgogICAgICAgUmV0dXJucyB0aGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIGN1cnJlbnQgcGFja2FnZS4gVGhpcyBzdHJpbmcgaXMKICAgICAgIHVzZWQgdG8gaGVscCBkZWZpbmUgdGhlIHZhbHVlIG9mIDp0ZXJtOmBQVmAuCiAKQEAgLTcyNzIsNyArNzI3Miw3IEBACiAKICAgICAgICAgIFBWID0gIjAuMTItZ2l0JHtTUkNQVn0iCiAKLSAgIDp0ZXJtOmBTUkNSRVZgCisgICBTUkNSRVYKICAgICAgIFRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4gVGhpcwogICAgICAgdmFyaWFibGUgYXBwbGllcyB0byBTdWJ2ZXJzaW9uLCBHaXQsIE1lcmN1cmlhbCwgYW5kIEJhemFhciBvbmx5LiBOb3RlCiAgICAgICB0aGF0IGlmIHlvdSB3YW50IHRvIGJ1aWxkIGEgZml4ZWQgcmV2aXNpb24gYW5kIHlvdSB3YW50IHRvIGF2b2lkCkBAIC03MjkxLDEwICs3MjkxLDEwIEBACiAgICAgICAgICBBdXRvbWF0aWNhbGx5IEluY3JlbWVudGluZyBhIEJpbmFyeSBQYWNrYWdlIFJldmlzaW9uIE51bWJlcgogICAgICAgICAgIiBzZWN0aW9uLCB3aGljaCBpcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBTU1RBVEVfRElSYAorICAgU1NUQVRFX0RJUgogICAgICAgVGhlIGRpcmVjdG9yeSBmb3IgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZS4KIAotICAgOnRlcm06YFNTVEFURV9NSVJST1JfQUxMT1dfTkVUV09SS2AKKyAgIFNTVEFURV9NSVJST1JfQUxMT1dfTkVUV09SSwogICAgICAgSWYgc2V0IHRvICIxIiwgYWxsb3dzIGZldGNoZXMgZnJvbSBtaXJyb3JzIHRoYXQgYXJlIHNwZWNpZmllZCBpbgogICAgICAgOnRlcm06YFNTVEFURV9NSVJST1JTYCB0byB3b3JrIGV2ZW4gd2hlbgogICAgICAgZmV0Y2hpbmcgZnJvbSB0aGUgbmV0d29yayBpcyBkaXNhYmxlZCBieSBzZXR0aW5nIGBgQkJfTk9fTkVUV09SS2BgIHRvCkBAIC03MzAzLDcgKzczMDMsNyBAQAogICAgICAgeW91ciBzaGFyZWQgc3RhdGUgY2FjaGUsIGJ1dCB5b3Ugd2FudCB0byBkaXNhYmxlIGFueSBvdGhlciBmZXRjaGluZwogICAgICAgZnJvbSB0aGUgbmV0d29yay4KIAotICAgOnRlcm06YFNTVEFURV9NSVJST1JTYAorICAgU1NUQVRFX01JUlJPUlMKICAgICAgIENvbmZpZ3VyZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gc2VhcmNoIG90aGVyIG1pcnJvcgogICAgICAgbG9jYXRpb25zIGZvciBwcmVidWlsdCBjYWNoZSBkYXRhIG9iamVjdHMgYmVmb3JlIGJ1aWxkaW5nIG91dCB0aGUKICAgICAgIGRhdGEuIFRoaXMgdmFyaWFibGUgd29ya3MgbGlrZSBmZXRjaGVyIDp0ZXJtOmBNSVJST1JTYApAQCAtNzMzNyw3ICs3MzM3LDcgQEAKICAgICAgICAgICAgICBmaWxlOi8vLiogaHR0cDovL3NvbWVzZXJ2ZXIudGxkL3NoYXJlL3NzdGF0ZS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCiAgICAgICAgICAgICAgZmlsZTovLy4qIGZpbGU6Ly8vc29tZS1sb2NhbC1kaXIvc3N0YXRlL1BBVEgiCiAKLSAgIDp0ZXJtOmBTU1RBVEVfU0NBTl9GSUxFU2AKKyAgIFNTVEFURV9TQ0FOX0ZJTEVTCiAgICAgICBDb250cm9scyB0aGUgbGlzdCBvZiBmaWxlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzY2FucyBmb3IKICAgICAgIGhhcmRjb2RlZCBpbnN0YWxsYXRpb24gcGF0aHMuIFRoZSB2YXJpYWJsZSB1c2VzIGEgc3BhY2Utc2VwYXJhdGVkCiAgICAgICBsaXN0IG9mIGZpbGVuYW1lcyAobm90IHBhdGhzKSB3aXRoIHN0YW5kYXJkIHdpbGRjYXJkIGNoYXJhY3RlcnMKQEAgLTczNTYsMjEgKzczNTYsMjEgQEAKICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBwcm9jZXNzLCBzZWUgdGhlCiAgICAgICA6cmVmOmBzdGFnaW5nIDxyZWYtY2xhc3Nlcy1zdGFnaW5nPmAgY2xhc3MuCiAKLSAgIDp0ZXJtOmBTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRWAKKyAgIFNUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFCiAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGBgL2xpYmBgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdAogICAgICAgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KIAotICAgOnRlcm06YFNUQUdJTkdfQkFTRUxJQkRJUmAKKyAgIFNUQUdJTkdfQkFTRUxJQkRJUgogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBgYC9saWJgYCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QKICAgICAgIGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0CiAgICAgICAoOnRlcm06YFNUQUdJTkdfRElSX0hPU1RgKS4KIAotICAgOnRlcm06YFNUQUdJTkdfQklORElSYAorICAgU1RBR0lOR19CSU5ESVIKICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgYGAvdXNyL2JpbmBgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdAogICAgICAgZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0IGZvciB3aGljaCB0aGUgY3VycmVudCByZWNpcGUgaXMgYmVpbmcgYnVpbHQKICAgICAgICg6dGVybTpgU1RBR0lOR19ESVJfSE9TVGApLgogCi0gICA6dGVybTpgU1RBR0lOR19CSU5ESVJfQ1JPU1NgCisgICBTVEFHSU5HX0JJTkRJUl9DUk9TUwogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBiaW5hcnkgY29uZmlndXJhdGlvbgogICAgICAgc2NyaXB0cy4gVGhlc2Ugc2NyaXB0cyBwcm92aWRlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIG90aGVyCiAgICAgICBzb2Z0d2FyZSB0aGF0IHdhbnRzIHRvIG1ha2UgdXNlIG9mIGxpYnJhcmllcyBvciBpbmNsdWRlIGZpbGVzCkBAIC03Mzg3LDIwICs3Mzg3LDIwIEBACiAgICAgICAgICBwa2ctY29uZmlnCiAgICAgICAgICBpbnN0ZWFkIG9mIGEgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBzY3JpcHQuCiAKLSAgIDp0ZXJtOmBTVEFHSU5HX0JJTkRJUl9OQVRJVkVgCisgICBTVEFHSU5HX0JJTkRJUl9OQVRJVkUKICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgYGAvdXNyL2JpbmBgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdAogICAgICAgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KIAotICAgOnRlcm06YFNUQUdJTkdfREFUQURJUmAKKyAgIFNUQUdJTkdfREFUQURJUgogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBgYC91c3Ivc2hhcmVgYCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QKICAgICAgIGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0CiAgICAgICAoOnRlcm06YFNUQUdJTkdfRElSX0hPU1RgKS4KIAotICAgOnRlcm06YFNUQUdJTkdfREFUQURJUl9OQVRJVkVgCisgICBTVEFHSU5HX0RBVEFESVJfTkFUSVZFCiAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGBgL3Vzci9zaGFyZWBgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdAogICAgICAgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KIAotICAgOnRlcm06YFNUQUdJTkdfRElSYAorICAgU1RBR0lOR19ESVIKICAgICAgIEhlbHBzIGNvbnN0cnVjdCB0aGUgYGByZWNpcGUtc3lzcm9vdHNgYCBkaXJlY3RvcnksIHdoaWNoIGlzIHVzZWQKICAgICAgIGR1cmluZyBwYWNrYWdpbmcuCiAKQEAgLTc0MjYsNyArNzQyNiw3IEBACiAgICAgICAgICB0YXNrIGFuZCB0aGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdpbGwgc3RhZ2UgYSBzdWJzZXQgb2YKICAgICAgICAgIHRob3NlIGZpbGVzIGludG8gdGhlIHN5c3Jvb3QuCiAKLSAgIDp0ZXJtOmBTVEFHSU5HX0RJUl9IT1NUYAorICAgU1RBR0lOR19ESVJfSE9TVAogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHN5c3RlbSBvbiB3aGljaAogICAgICAgdGhlIGNvbXBvbmVudCBpcyBidWlsdCB0byBydW4gKHRoZSBzeXN0ZW0gdGhhdCBob3N0cyB0aGUgY29tcG9uZW50KS4KICAgICAgIEZvciBtb3N0IHJlY2lwZXMsIHRoaXMgc3lzcm9vdCBpcyB0aGUgb25lIGluIHdoaWNoIHRoYXQgcmVjaXBlJ3MKQEAgLTc0NjQsMTEgKzc0NjQsMTEgQEAKICAgICAgICAgICAgIGZvciBgYC1uYXRpdmVgYCByZWNpcGVzLCBhcyB0aGV5IG1ha2UgdXNlIG9mIGhvc3QgaGVhZGVycyBhbmQKICAgICAgICAgICAgIGxpYnJhcmllcy4KIAotICAgOnRlcm06YFNUQUdJTkdfRElSX05BVElWRWAKKyAgIFNUQUdJTkdfRElSX05BVElWRQogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBzeXNyb290IGRpcmVjdG9yeSB1c2VkIHdoZW4gYnVpbGRpbmcKICAgICAgIGNvbXBvbmVudHMgdGhhdCBydW4gb24gdGhlIGJ1aWxkIGhvc3QgaXRzZWxmLgogCi0gICA6dGVybTpgU1RBR0lOR19ESVJfVEFSR0VUYAorICAgU1RBR0lOR19ESVJfVEFSR0VUCiAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIHN5c3Jvb3QgdXNlZCBmb3IgdGhlIHN5c3RlbSBmb3Igd2hpY2ggdGhlCiAgICAgICBjb21wb25lbnQgZ2VuZXJhdGVzIGNvZGUuIEZvciBjb21wb25lbnRzIHRoYXQgZG8gbm90IGdlbmVyYXRlIGNvZGUsCiAgICAgICB3aGljaCBpcyB0aGUgbWFqb3JpdHksIGBgU1RBR0lOR19ESVJfVEFSR0VUYGAgaXMgc2V0IHRvIG1hdGNoCkBAIC03NDg0LDQ1ICs3NDg0LDQ1IEBACiAgICAgICBmb3IgdGhlICJIT1NUIiBzeXN0ZW0sIHdoaWxlIGBgU1RBR0lOR19ESVJfVEFSR0VUYGAgcG9pbnRzIHRvIHRoZQogICAgICAgc3lzcm9vdCB1c2VkIGZvciB0aGUgIlRBUkdFVCIgc3lzdGVtLgogCi0gICA6dGVybTpgU1RBR0lOR19FVENESVJfTkFUSVZFYAorICAgU1RBR0lOR19FVENESVJfTkFUSVZFCiAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGBgL2V0Y2BgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdAogICAgICAgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KIAotICAgOnRlcm06YFNUQUdJTkdfRVhFQ1BSRUZJWERJUmAKKyAgIFNUQUdJTkdfRVhFQ1BSRUZJWERJUgogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBgYC91c3JgYCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QKICAgICAgIGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0CiAgICAgICAoOnRlcm06YFNUQUdJTkdfRElSX0hPU1RgKS4KIAotICAgOnRlcm06YFNUQUdJTkdfSU5DRElSYAorICAgU1RBR0lOR19JTkNESVIKICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgYGAvdXNyL2luY2x1ZGVgYCBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGJlaW5nCiAgICAgICBidWlsdCAoOnRlcm06YFNUQUdJTkdfRElSX0hPU1RgKS4KIAotICAgOnRlcm06YFNUQUdJTkdfSU5DRElSX05BVElWRWAKKyAgIFNUQUdJTkdfSU5DRElSX05BVElWRQogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBgYC91c3IvaW5jbHVkZWBgIHN1YmRpcmVjdG9yeSBvZiB0aGUKICAgICAgIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KIAotICAgOnRlcm06YFNUQUdJTkdfS0VSTkVMX0JVSUxERElSYAorICAgU1RBR0lOR19LRVJORUxfQlVJTERESVIKICAgICAgIFBvaW50cyB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGtlcm5lbCBidWlsZCBhcnRpZmFjdHMuCiAgICAgICBSZWNpcGVzIGJ1aWxkaW5nIHNvZnR3YXJlIHRoYXQgbmVlZHMgdG8gYWNjZXNzIGtlcm5lbCBidWlsZCBhcnRpZmFjdHMKICAgICAgIChlLmcuIGBgc3lzdGVtdGFwLXVwcm9iZXNgYCkgY2FuIGxvb2sgaW4gdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgd2l0aAogICAgICAgdGhlIGBgU1RBR0lOR19LRVJORUxfQlVJTERESVJgYCB2YXJpYWJsZSB0byBmaW5kIHRoZXNlIGFydGlmYWN0cwogICAgICAgYWZ0ZXIgdGhlIGtlcm5lbCBoYXMgYmVlbiBidWlsdC4KIAotICAgOnRlcm06YFNUQUdJTkdfS0VSTkVMX0RJUmAKKyAgIFNUQUdJTkdfS0VSTkVMX0RJUgogICAgICAgVGhlIGRpcmVjdG9yeSB3aXRoIGtlcm5lbCBoZWFkZXJzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGJ1aWxkCiAgICAgICBvdXQtb2YtdHJlZSBtb2R1bGVzLgogCi0gICA6dGVybTpgU1RBR0lOR19MSUJESVJgCisgICBTVEFHSU5HX0xJQkRJUgogICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBgYC91c3IvbGliYGAgc3ViZGlyZWN0b3J5IG9mIHRoZSBzeXNyb290CiAgICAgICBkaXJlY3RvcnkgZm9yIHRoZSB0YXJnZXQgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHJlY2lwZSBpcyBiZWluZyBidWlsdAogICAgICAgKDp0ZXJtOmBTVEFHSU5HX0RJUl9IT1NUYCkuCiAKLSAgIDp0ZXJtOmBTVEFHSU5HX0xJQkRJUl9OQVRJVkVgCisgICBTVEFHSU5HX0xJQkRJUl9OQVRJVkUKICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgYGAvdXNyL2xpYmBgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdAogICAgICAgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KIAotICAgOnRlcm06YFNUQU1QYAorICAgU1RBTVAKICAgICAgIFNwZWNpZmllcyB0aGUgYmFzZSBwYXRoIHVzZWQgdG8gY3JlYXRlIHJlY2lwZSBzdGFtcCBmaWxlcy4gVGhlIHBhdGgKICAgICAgIHRvIGFuIGFjdHVhbCBzdGFtcCBmaWxlIGlzIGNvbnN0cnVjdGVkIGJ5IGV2YWx1YXRpbmcgdGhpcyBzdHJpbmcgYW5kCiAgICAgICB0aGVuIGFwcGVuZGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBDdXJyZW50bHksIHRoZSBkZWZhdWx0CkBAIC03NTQzLDI2ICs3NTQzLDI2IEBACiAgICAgICA6dGVybTpgUFZgLCBhbmQgOnRlcm06YFBSYCBmb3IgcmVsYXRlZCB2YXJpYWJsZQogICAgICAgaW5mb3JtYXRpb24uCiAKLSAgIDp0ZXJtOmBTVEFNUFNfRElSYAorICAgU1RBTVBTX0RJUgogICAgICAgU3BlY2lmaWVzIHRoZSBiYXNlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgcGxhY2VzIHN0YW1wcy4gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzIGBgJHtUTVBESVJ9L3N0YW1wc2BgLgogCi0gICA6dGVybTpgU1RSSVBgCisgICBTVFJJUAogICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biBgYHN0cmlwYGAsIHdoaWNoIGlzIHVzZWQgdG8KICAgICAgIHN0cmlwIHN5bWJvbHMuCiAKLSAgIDp0ZXJtOmBTVU1NQVJZYAorICAgU1VNTUFSWQogICAgICAgVGhlIHNob3J0ICg3MiBjaGFyYWN0ZXJzIG9yIGxlc3MpIHN1bW1hcnkgb2YgdGhlIGJpbmFyeSBwYWNrYWdlIGZvcgogICAgICAgcGFja2FnaW5nIHN5c3RlbXMgc3VjaCBhcyBgYG9wa2dgYCwgYGBycG1gYCwgb3IgYGBkcGtnYGAuIEJ5IGRlZmF1bHQsCiAgICAgICBgYFNVTU1BUllgYCBpcyB1c2VkIHRvIGRlZmluZSB0aGUKICAgICAgIDp0ZXJtOmBERVNDUklQVElPTmAgdmFyaWFibGUgaWYgYGBERVNDUklQVElPTmBgIGlzCiAgICAgICBub3Qgc2V0IGluIHRoZSByZWNpcGUuCiAKLSAgIDp0ZXJtOmBTVk5ESVJgCisgICBTVk5ESVIKICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZmlsZXMgY2hlY2tlZCBvdXQgb2YgYSBTdWJ2ZXJzaW9uIHN5c3RlbSBhcmUKICAgICAgIHN0b3JlZC4KIAotICAgOnRlcm06YFNZU0xJTlVYX0RFRkFVTFRfQ09OU09MRWAKKyAgIFNZU0xJTlVYX0RFRkFVTFRfQ09OU09MRQogICAgICAgU3BlY2lmaWVzIHRoZSBrZXJuZWwgYm9vdCBkZWZhdWx0IGNvbnNvbGUuIElmIHlvdSB3YW50IHRvIHVzZSBhCiAgICAgICBjb25zb2xlIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQsIHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlIGFzCiAgICAgICBmb2xsb3dzIHdoZXJlICJYIiBpcyB0aGUgY29uc29sZSBudW1iZXIgeW91IHdhbnQgdG8gdXNlOgpAQCAtNzU3Myw3ICs3NTczLDcgQEAKICAgICAgIFRoZSA6cmVmOmBzeXNsaW51eCA8cmVmLWNsYXNzZXMtc3lzbGludXg+YCBjbGFzcyBpbml0aWFsbHkgc2V0cwogICAgICAgdGhpcyB2YXJpYWJsZSB0byBudWxsIGJ1dCB0aGVuIGNoZWNrcyBmb3IgYSB2YWx1ZSBsYXRlci4KIAotICAgOnRlcm06YFNZU0xJTlVYX09QVFNgCisgICBTWVNMSU5VWF9PUFRTCiAgICAgICBMaXN0cyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gYWRkIHRvIHRoZSBzeXNsaW51eCBmaWxlLiBZb3UgbmVlZCB0byBzZXQKICAgICAgIHRoaXMgdmFyaWFibGUgaW4geW91ciByZWNpcGUuIElmIHlvdSB3YW50IHRvIGxpc3QgbXVsdGlwbGUgb3B0aW9ucywKICAgICAgIHNlcGFyYXRlIHRoZSBvcHRpb25zIHdpdGggYSBzZW1pY29sb24gY2hhcmFjdGVyIChgYDtgYCkuCkBAIC03NTgxLDcgKzc1ODEsNyBAQAogICAgICAgVGhlIDpyZWY6YHN5c2xpbnV4IDxyZWYtY2xhc3Nlcy1zeXNsaW51eD5gIGNsYXNzIHVzZXMgdGhpcyB2YXJpYWJsZQogICAgICAgdG8gY3JlYXRlIGEgc2V0IG9mIG9wdGlvbnMuCiAKLSAgIDp0ZXJtOmBTWVNMSU5VWF9TRVJJQUxgCisgICBTWVNMSU5VWF9TRVJJQUwKICAgICAgIFNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIHNlcmlhbCBwb3J0IG9yIHR1cm5zIGl0IG9mZi4gVG8gdHVybiBvZmYKICAgICAgIHNlcmlhbCwgc2V0IHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGluIHlvdXIgcmVjaXBlLiBUaGUKICAgICAgIHZhcmlhYmxlJ3MgZGVmYXVsdCB2YWx1ZSBpcyBzZXQgaW4gdGhlCkBAIC03NTkyLDcgKzc1OTIsMTUgQEAKIAogICAgICAgVGhlIGNsYXNzIGNoZWNrcyBmb3IgYW5kIHVzZXMgdGhlIHZhcmlhYmxlIGFzIG5lZWRlZC4KIAotICAgOnRlcm06YFNZU0xJTlVYX1NFUklBTF9UVFlgCisgICBTWVNMSU5VWF9TUExBU0gKKyAgICAgIEFuIGBgLkxTU2BgIGZpbGUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBmb3IgdGhlIFZHQSBib290IG1lbnUgd2hlbgorICAgICAgeW91IHVzZSB0aGUgYm9vdCBtZW51LiBZb3UgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIHJlY2lwZS4KKworICAgICAgVGhlIDpyZWY6YHN5c2xpbnV4IDxyZWYtY2xhc3Nlcy1zeXNsaW51eD5gIGNsYXNzIGNoZWNrcyBmb3IgdGhpcworICAgICAgdmFyaWFibGUgYW5kIGlmIGZvdW5kLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbnN0YWxscyB0aGUKKyAgICAgIHNwbGFzaCBzY3JlZW4uCisKKyAgIFNZU0xJTlVYX1NFUklBTF9UVFkKICAgICAgIFNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIGNvbnNvbGU9dHR5Li4uIGtlcm5lbCBib290IGFyZ3VtZW50LiBUaGUKICAgICAgIHZhcmlhYmxlJ3MgZGVmYXVsdCB2YWx1ZSBpcyBzZXQgaW4gdGhlCiAgICAgICA6cmVmOmBzeXNsaW51eCA8cmVmLWNsYXNzZXMtc3lzbGludXg+YCBjbGFzcyBhcyBmb2xsb3dzOgpAQCAtNzYwMiwyMSArNzYxMCwxMyBAQAogCiAgICAgICBUaGUgY2xhc3MgY2hlY2tzIGZvciBhbmQgdXNlcyB0aGUgdmFyaWFibGUgYXMgbmVlZGVkLgogCi0gICA6dGVybTpgU1lTTElOVVhfU1BMQVNIYAotICAgICAgQW4gYGAuTFNTYGAgZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuCi0gICAgICB5b3UgdXNlIHRoZSBib290IG1lbnUuIFlvdSBuZWVkIHRvIHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlLgotCi0gICAgICBUaGUgOnJlZjpgc3lzbGludXggPHJlZi1jbGFzc2VzLXN5c2xpbnV4PmAgY2xhc3MgY2hlY2tzIGZvciB0aGlzCi0gICAgICB2YXJpYWJsZSBhbmQgaWYgZm91bmQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluc3RhbGxzIHRoZQotICAgICAgc3BsYXNoIHNjcmVlbi4KLQotICAgOnRlcm06YFNZU1JPT1RfREVTVERJUmAKKyAgIFNZU1JPT1RfREVTVERJUgogICAgICAgUG9pbnRzIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHVuZGVyIHRoZSB3b3JrIGRpcmVjdG9yeSAoZGVmYXVsdAogICAgICAgImBgJHtgYFwgOnRlcm06YFdPUktESVJgXCBgYH0vc3lzcm9vdC1kZXN0ZGlyYGAiKQogICAgICAgd2hlcmUgdGhlIGZpbGVzIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQgZHVyaW5nIHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3RgIHRhc2suCiAKLSAgIDp0ZXJtOmBTWVNST09UX0RJUlNgCisgICBTWVNST09UX0RJUlMKICAgICAgIERpcmVjdG9yaWVzIHRoYXQgYXJlIHN0YWdlZCBpbnRvIHRoZSBzeXNyb290IGJ5IHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3RgIHRhc2suIEJ5CiAgICAgICBkZWZhdWx0LCB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzIGFyZSBzdGFnZWQ6CkBAIC03NjMwLDcgKzc2MzAsNyBAQAogICAgICAgICAgICAgICR7ZGF0YWRpcn0gXAogICAgICAgICAgICAgICIKIAotICAgOnRlcm06YFNZU1JPT1RfRElSU19CTEFDS0xJU1RgCisgICBTWVNST09UX0RJUlNfQkxBQ0tMSVNUCiAgICAgICBEaXJlY3RvcmllcyB0aGF0IGFyZSBub3Qgc3RhZ2VkIGludG8gdGhlIHN5c3Jvb3QgYnkgdGhlCiAgICAgICA6cmVmOmByZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdGAgdGFzay4gWW91CiAgICAgICBjYW4gdXNlIHRoaXMgdmFyaWFibGUgdG8gZXhjbHVkZSBjZXJ0YWluIHN1YmRpcmVjdG9yaWVzIG9mCkBAIC03NjQ4LDcgKzc2NDgsNyBAQAogICAgICAgICAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcyBcCiAgICAgICAgICAgICAgIgogCi0gICA6dGVybTpgU1lTUk9PVF9ESVJTX05BVElWRWAKKyAgIFNZU1JPT1RfRElSU19OQVRJVkUKICAgICAgIEV4dHJhIGRpcmVjdG9yaWVzIHN0YWdlZCBpbnRvIHRoZSBzeXNyb290IGJ5IHRoZQogICAgICAgOnJlZjpgcmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3RgIHRhc2sgZm9yCiAgICAgICBgYC1uYXRpdmVgYCByZWNpcGVzLCBpbiBhZGRpdGlvbiB0byB0aG9zZSBzcGVjaWZpZWQgaW4KQEAgLTc2NzUsMTIgKzc2NzUsMTIgQEAKICAgICAgICAgICksIHdoaWNoIGlzIHdoeSBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgcHJvZ3JhbQogICAgICAgICAgZXhlY3V0YWJsZXMgYW5kIHN1cHBvcnRpbmcgZmlsZXMgbmVlZCB0byBiZSBzdGFnZWQuCiAKLSAgIDp0ZXJtOmBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NgCisgICBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MKICAgICAgIEEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSBhZnRlciBmaWxlcyBhcmUgc3RhZ2VkIGludG8gdGhlCiAgICAgICBzeXNyb290LiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzdWFsbHkgdXNlZCB0byBhcHBseSBhZGRpdGlvbmFsCiAgICAgICBwcm9jZXNzaW5nIG9uIHRoZSBzdGFnZWQgZmlsZXMsIG9yIHRvIHN0YWdlIGFkZGl0aW9uYWwgZmlsZXMuCiAKLSAgIDp0ZXJtOmBTWVNURU1EX0FVVE9fRU5BQkxFYAorICAgU1lTVEVNRF9BVVRPX0VOQUJMRQogICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZSA6cmVmOmBzeXN0ZW1kIDxyZWYtY2xhc3Nlcy1zeXN0ZW1kPmAgY2xhc3MsCiAgICAgICB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgc2VydmljZSBpbgogICAgICAgOnRlcm06YFNZU1RFTURfU0VSVklDRWAgc2hvdWxkIHN0YXJ0CkBAIC03NjkzLDcgKzc2OTMsNyBAQAogCiAgICAgICBZb3UgY2FuIGRpc2FibGUgdGhlIHNlcnZpY2UgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUgdG8gImRpc2FibGUiLgogCi0gICA6dGVybTpgU1lTVEVNRF9CT09UX0NGR2AKKyAgIFNZU1RFTURfQk9PVF9DRkcKICAgICAgIFdoZW4gOnRlcm06YEVGSV9QUk9WSURFUmAgaXMgc2V0IHRvCiAgICAgICAic3lzdGVtZC1ib290IiwgdGhlIGBgU1lTVEVNRF9CT09UX0NGR2BgIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUKICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHNob3VsZCBiZSB1c2VkLiBCeSBkZWZhdWx0LCB0aGUKQEAgLTc3MDYsNyArNzcwNiw3IEBACiAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gU3lzdGVtZC1ib290LCBzZWUgdGhlIGBTeXN0ZW1kLWJvb3QKICAgICAgIGRvY3VtZW50YXRpb24gPGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3QvPmBfXy4KIAotICAgOnRlcm06YFNZU1RFTURfQk9PVF9FTlRSSUVTYAorICAgU1lTVEVNRF9CT09UX0VOVFJJRVMKICAgICAgIFdoZW4gOnRlcm06YEVGSV9QUk9WSURFUmAgaXMgc2V0IHRvCiAgICAgICAic3lzdGVtZC1ib290IiwgdGhlIGBgU1lTVEVNRF9CT09UX0VOVFJJRVNgYCB2YXJpYWJsZSBzcGVjaWZpZXMgYQogICAgICAgbGlzdCBvZiBlbnRyeSBmaWxlcyAoYGAqLmNvbmZgYCkgdG8gaW5zdGFsbCB0aGF0IGNvbnRhaW4gb25lIGJvb3QKQEAgLTc3MjAsNyArNzcyMCw3IEBACiAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gU3lzdGVtZC1ib290LCBzZWUgdGhlIGBTeXN0ZW1kLWJvb3QKICAgICAgIGRvY3VtZW50YXRpb24gPGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3QvPmBfXy4KIAotICAgOnRlcm06YFNZU1RFTURfQk9PVF9USU1FT1VUYAorICAgU1lTVEVNRF9CT09UX1RJTUVPVVQKICAgICAgIFdoZW4gOnRlcm06YEVGSV9QUk9WSURFUmAgaXMgc2V0IHRvCiAgICAgICAic3lzdGVtZC1ib290IiwgdGhlIGBgU1lTVEVNRF9CT09UX1RJTUVPVVRgYCB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlCiAgICAgICBib290IG1lbnUgdGltZW91dCBpbiBzZWNvbmRzLiBCeSBkZWZhdWx0LCB0aGUKQEAgLTc3MzMsNyArNzczMyw3IEBACiAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gU3lzdGVtZC1ib290LCBzZWUgdGhlIGBTeXN0ZW1kLWJvb3QKICAgICAgIGRvY3VtZW50YXRpb24gPGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3QvPmBfXy4KIAotICAgOnRlcm06YFNZU1RFTURfUEFDS0FHRVNgCisgICBTWVNURU1EX1BBQ0tBR0VTCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YHN5c3RlbWQgPHJlZi1jbGFzc2VzLXN5c3RlbWQ+YCBjbGFzcywKICAgICAgIHRoaXMgdmFyaWFibGUgbG9jYXRlcyB0aGUgc3lzdGVtZCB1bml0IGZpbGVzIHdoZW4gdGhleSBhcmUgbm90IGZvdW5kCiAgICAgICBpbiB0aGUgbWFpbiByZWNpcGUncyBwYWNrYWdlLiBCeSBkZWZhdWx0LCB0aGUgYGBTWVNURU1EX1BBQ0tBR0VTYGAKQEAgLTc3NDcsNyArNzc0Nyw3IEBACiAgICAgICB0byB1c2UgYGBTWVNURU1EX1BBQ0tBR0VTYGAgdG8gbGlzdCB0aGUgcGFja2FnZSBvciBwYWNrYWdlcyBpbiB3aGljaAogICAgICAgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gZmluZCB0aGUgc3lzdGVtZCB1bml0IGZpbGVzLgogCi0gICA6dGVybTpgU1lTVEVNRF9TRVJWSUNFYAorICAgU1lTVEVNRF9TRVJWSUNFCiAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlIDpyZWY6YHN5c3RlbWQgPHJlZi1jbGFzc2VzLXN5c3RlbWQ+YCBjbGFzcywKICAgICAgIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBzeXN0ZW1kIHNlcnZpY2UgbmFtZSBmb3IgYSBwYWNrYWdlLgogCkBAIC03NzU4LDcgKzc3NTgsNyBAQAogCiAgICAgICAgICBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29ubm1hbi5zZXJ2aWNlIgogCi0gICA6dGVybTpgU1lTVklOSVRfRU5BQkxFRF9HRVRUWVNgCisgICBTWVNWSU5JVF9FTkFCTEVEX0dFVFRZUwogICAgICAgV2hlbiB1c2luZwogICAgICAgOnJlZjpgU3lzVmluaXQgPGRldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3M6ZW5hYmxpbmcgc3lzdGVtIHNlcnZpY2VzPmAsCiAgICAgICBzcGVjaWZpZXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdmlydHVhbCB0ZXJtaW5hbHMgdGhhdCBzaG91bGQKQEAgLTc3NjksNyArNzc2OSw3IEBACiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYGBTWVNWSU5JVF9FTkFCTEVEX0dFVFRZU2BgIGlzICIxIiAoaS5lLiBvbmx5CiAgICAgICBydW4gYSBnZXR0eSBvbiB0aGUgZmlyc3QgdmlydHVhbCB0ZXJtaW5hbCkuCiAKLSAgIDp0ZXJtOmBUYAorICAgVAogICAgICAgVGhpcyB2YXJpYWJsZSBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgd2VyZSBCaXRCYWtlIHBsYWNlcyB0ZW1wb3JhcnkKICAgICAgIGZpbGVzLCB3aGljaCBjb25zaXN0IG1vc3RseSBvZiB0YXNrIGxvZ3MgYW5kIHNjcmlwdHMsIHdoZW4gYnVpbGRpbmcgYQogICAgICAgcGFydGljdWxhciByZWNpcGUuIFRoZSB2YXJpYWJsZSBpcyB0eXBpY2FsbHkgc2V0IGFzIGZvbGxvd3M6CkBAIC03Nzg2LDcgKzc3ODYsNyBAQAogICAgICAgdGhlIGRpcmVjdG9yeSB0cmVlIHdoZXJlIEJpdEJha2UgcGxhY2VzIHRoZSBvdXRwdXQgb2YgYW4gZW50aXJlCiAgICAgICBidWlsZC4KIAotICAgOnRlcm06YFRBUkdFVF9BUkNIYAorICAgVEFSR0VUX0FSQ0gKICAgICAgIFRoZSB0YXJnZXQgbWFjaGluZSdzIGFyY2hpdGVjdHVyZS4gVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KICAgICAgIHN1cHBvcnRzIG1hbnkgYXJjaGl0ZWN0dXJlcy4gSGVyZSBpcyBhbiBleGFtcGxlIGxpc3Qgb2YgYXJjaGl0ZWN0dXJlcwogICAgICAgc3VwcG9ydGVkLiBUaGlzIGxpc3QgaXMgYnkgbm8gbWVhbnMgY29tcGxldGUgYXMgdGhlIGFyY2hpdGVjdHVyZSBpcwpAQCAtNzgwMyw3ICs3ODAzLDcgQEAKICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIG1hY2hpbmUgYXJjaGl0ZWN0dXJlcywgc2VlIHRoZQogICAgICAgOnRlcm06YFRVTkVfQVJDSGAgdmFyaWFibGUuCiAKLSAgIDp0ZXJtOmBUQVJHRVRfQVNfQVJDSGAKKyAgIFRBUkdFVF9BU19BUkNICiAgICAgICBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFzc2VtYmxlciBmbGFncyBmb3IgdGhlIHRhcmdldAogICAgICAgc3lzdGVtLiBgYFRBUkdFVF9BU19BUkNIYGAgaXMgaW5pdGlhbGl6ZWQgZnJvbQogICAgICAgOnRlcm06YFRVTkVfQVNBUkdTYCBieSBkZWZhdWx0IGluIHRoZSBCaXRCYWtlCkBAIC03ODEyLDcgKzc4MTIsNyBAQAogCiAgICAgICAgICBUQVJHRVRfQVNfQVJDSCA9ICIke1RVTkVfQVNBUkdTfSIKIAotICAgOnRlcm06YFRBUkdFVF9DQ19BUkNIYAorICAgVEFSR0VUX0NDX0FSQ0gKICAgICAgIFNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQyBjb21waWxlciBmbGFncyBmb3IgdGhlIHRhcmdldAogICAgICAgc3lzdGVtLiBgYFRBUkdFVF9DQ19BUkNIYGAgaXMgaW5pdGlhbGl6ZWQgZnJvbQogICAgICAgOnRlcm06YFRVTkVfQ0NBUkdTYCBieSBkZWZhdWx0LgpAQCAtNzgyOCw3ICs3ODI4LDcgQEAKICAgICAgICAgIExERkxBR1MKICAgICAgICAgIHZhcmlhYmxlLgogCi0gICA6dGVybTpgVEFSR0VUX0NDX0tFUk5FTF9BUkNIYAorICAgVEFSR0VUX0NDX0tFUk5FTF9BUkNICiAgICAgICBUaGlzIGlzIGEgc3BlY2lmaWMga2VybmVsIGNvbXBpbGVyIGZsYWcgZm9yIGEgQ1BVIG9yIEFwcGxpY2F0aW9uCiAgICAgICBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIHR1bmUuIFRoZSBmbGFnIGlzIHVzZWQgcmFyZWx5IGFuZCBvbmx5IGZvcgogICAgICAgY2FzZXMgd2hlcmUgYSB1c2Vyc3BhY2UgOnRlcm06YFRVTkVfQ0NBUkdTYCBpcyBub3QKQEAgLTc4MzgsNyArNzgzOCw3IEBACiAgICAgICBgYG1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXRodW1iLmluY2BgIGZpbGUgaW4gdGhlCiAgICAgICA6dGVybTpgU291cmNlIERpcmVjdG9yeWAgZm9yIGFuIGV4YW1wbGUuCiAKLSAgIDp0ZXJtOmBUQVJHRVRfQ0ZMQUdTYAorICAgVEFSR0VUX0NGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIGNvbXBpbGVyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZQogICAgICAgdGFyZ2V0LiBXaGVuIGJ1aWxkaW5nIGluIHRoZSB0YXJnZXQgY29udGV4dCwKICAgICAgIDp0ZXJtOmBDRkxBR1NgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieQpAQCAtNzg0OCw3ICs3ODQ4LDcgQEAKICAgICAgIHZhcmlhYmxlIGluIHRoZSBlbnZpcm9ubWVudCB0byB0aGUgYGBUQVJHRVRfQ0ZMQUdTYGAgdmFsdWUgc28gdGhhdAogICAgICAgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUgdGhlIGZsYWdzIGFwcGxpZWQuCiAKLSAgIDp0ZXJtOmBUQVJHRVRfQ1BQRkxBR1NgCisgICBUQVJHRVRfQ1BQRkxBR1MKICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmUtcHJvY2Vzc29yIChpLmUuIHRvIGJvdGggdGhlCiAgICAgICBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykgd2hlbiBidWlsZGluZyBmb3IgdGhlIHRhcmdldC4gV2hlbiBidWlsZGluZwogICAgICAgaW4gdGhlIHRhcmdldCBjb250ZXh0LCA6dGVybTpgQ1BQRkxBR1NgIGlzIHNldCB0byB0aGUKQEAgLTc4NTksNyArNzg1OSw3IEBACiAgICAgICB2YWx1ZSBzbyB0aGF0IGV4ZWN1dGFibGVzIGJ1aWx0IHVzaW5nIHRoZSBTREsgYWxzbyBoYXZlIHRoZSBmbGFncwogICAgICAgYXBwbGllZC4KIAotICAgOnRlcm06YFRBUkdFVF9DWFhGTEFHU2AKKyAgIFRBUkdFVF9DWFhGTEFHUwogICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIgd2hlbiBidWlsZGluZyBmb3IgdGhlCiAgICAgICB0YXJnZXQuIFdoZW4gYnVpbGRpbmcgaW4gdGhlIHRhcmdldCBjb250ZXh0LAogICAgICAgOnRlcm06YENYWEZMQUdTYCBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUKQEAgLTc4NzAsMTMgKzc4NzAsMTMgQEAKICAgICAgIHZhbHVlIHNvIHRoYXQgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUgdGhlIGZsYWdzCiAgICAgICBhcHBsaWVkLgogCi0gICA6dGVybTpgVEFSR0VUX0ZQVWAKKyAgIFRBUkdFVF9GUFUKICAgICAgIFNwZWNpZmllcyB0aGUgbWV0aG9kIGZvciBoYW5kbGluZyBGUFUgY29kZS4gRm9yIEZQVS1sZXNzIHRhcmdldHMsCiAgICAgICB3aGljaCBpbmNsdWRlIG1vc3QgQVJNIENQVXMsIHRoZSB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byAic29mdCIuIElmCiAgICAgICBub3QsIHRoZSBrZXJuZWwgZW11bGF0aW9uIGdldHMgdXNlZCwgd2hpY2ggcmVzdWx0cyBpbiBhIHBlcmZvcm1hbmNlCiAgICAgICBwZW5hbHR5LgogCi0gICA6dGVybTpgVEFSR0VUX0xEX0FSQ0hgCisgICBUQVJHRVRfTERfQVJDSAogICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLgogICAgICAgYGBUQVJHRVRfTERfQVJDSGBgIGlzIGluaXRpYWxpemVkIGZyb20KICAgICAgIDp0ZXJtOmBUVU5FX0xEQVJHU2AgYnkgZGVmYXVsdCBpbiB0aGUgQml0QmFrZQpAQCAtNzg4NSw3ICs3ODg1LDcgQEAKIAogICAgICAgICAgVEFSR0VUX0xEX0FSQ0ggPSAiJHtUVU5FX0xEQVJHU30iCiAKLSAgIDp0ZXJtOmBUQVJHRVRfTERGTEFHU2AKKyAgIFRBUkdFVF9MREZMQUdTCiAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUKICAgICAgIHRhcmdldC4gV2hlbiBidWlsZGluZyBpbiB0aGUgdGFyZ2V0IGNvbnRleHQsCiAgICAgICA6dGVybTpgTERGTEFHU2AgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlCkBAIC03ODk2LDEzICs3ODk2LDEzIEBACiAgICAgICBgYFRBUkdFVF9MREZMQUdTYGAgdmFsdWUgc28gdGhhdCBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28KICAgICAgIGhhdmUgdGhlIGZsYWdzIGFwcGxpZWQuCiAKLSAgIDp0ZXJtOmBUQVJHRVRfT1NgCisgICBUQVJHRVRfT1MKICAgICAgIFNwZWNpZmllcyB0aGUgdGFyZ2V0J3Mgb3BlcmF0aW5nIHN5c3RlbS4gVGhlIHZhcmlhYmxlIGNhbiBiZSBzZXQgdG8KICAgICAgICJsaW51eCIgZm9yIGdsaWJjLWJhc2VkIHN5c3RlbXMgKEdOVSBDIExpYnJhcnkpIGFuZCB0byAibGludXgtbXVzbCIKICAgICAgIGZvciBtdXNsIGxpYmMuIEZvciBBUk0vRUFCSSB0YXJnZXRzLCAibGludXgtZ251ZWFiaSIgYW5kCiAgICAgICAibGludXgtbXVzbGVhYmkiIHBvc3NpYmxlIHZhbHVlcyBleGlzdC4KIAotICAgOnRlcm06YFRBUkdFVF9QUkVGSVhgCisgICBUQVJHRVRfUFJFRklYCiAgICAgICBTcGVjaWZpZXMgdGhlIHByZWZpeCB1c2VkIGZvciB0aGUgdG9vbGNoYWluIGJpbmFyeSB0YXJnZXQgdG9vbHMuCiAKICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiByZWNpcGUgYW5kIHRoZSBidWlsZCB0YXJnZXQsCkBAIC03OTE3LDcgKzc5MTcsNyBAQAogICAgICAgLSAgRm9yIG5hdGl2ZSBTREsgcmVjaXBlcyAoYGBuYXRpdmVzZGtgYCksIHRoZSBidWlsZCBzeXN0ZW0gc2V0cyB0aGUKICAgICAgICAgIHZhcmlhYmxlIHRvIHRoZSB2YWx1ZSBvZiBgYFNES19QUkVGSVhgYC4KIAotICAgOnRlcm06YFRBUkdFVF9TWVNgCisgICBUQVJHRVRfU1lTCiAgICAgICBTcGVjaWZpZXMgdGhlIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHRoZSBvcGVyYXRpbmcKICAgICAgIHN5c3RlbSwgZm9yIHdoaWNoIHRoZSBidWlsZCBpcyBvY2N1cnJpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlCiAgICAgICBjdXJyZW50IHJlY2lwZS4KQEAgLTc5MzksMTcgKzc5MzksMTcgQEAKICAgICAgIC0gIEdpdmVuIGEgcmVjaXBlIGJlaW5nIGJ1aWx0IGZvciBhIGxpdHRsZS1lbmRpYW4sIE1JUFMgdGFyZ2V0CiAgICAgICAgICBydW5uaW5nIExpbnV4LCB0aGUgdmFsdWUgbWlnaHQgYmUgIm1pcHNlbC1saW51eCIuCiAKLSAgIDp0ZXJtOmBUQVJHRVRfVkVORE9SYAorICAgVEFSR0VUX1ZFTkRPUgogICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgdmVuZG9yLgogCi0gICA6dGVybTpgVENMSUJDYAorICAgVENMSUJDCiAgICAgICBTcGVjaWZpZXMgdGhlIEdOVSBzdGFuZGFyZCBDIGxpYnJhcnkgKGBgbGliY2BgKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcKICAgICAgIHRoZSBidWlsZCBwcm9jZXNzLiBUaGlzIHZhcmlhYmxlIHJlcGxhY2VzIGBgUE9LWUxJQkNgYCwgd2hpY2ggaXMgbm8KICAgICAgIGxvbmdlciBzdXBwb3J0ZWQuCiAKICAgICAgIFlvdSBjYW4gc2VsZWN0ICJnbGliYyIsICJtdXNsIiwgIm5ld2xpYiIsIG9yICJiYXJlbWV0YWwiCiAKLSAgIDp0ZXJtOmBUQ0xJQkNBUFBFTkRgCisgICBUQ0xJQkNBUFBFTkQKICAgICAgIFNwZWNpZmllcyBhIHN1ZmZpeCB0byBiZSBhcHBlbmRlZCBvbnRvIHRoZQogICAgICAgOnRlcm06YFRNUERJUmAgdmFsdWUuIFRoZSBzdWZmaXggaWRlbnRpZmllcyB0aGUKICAgICAgIGBgbGliY2BgIHZhcmlhbnQgZm9yIGJ1aWxkaW5nLiBXaGVuIHlvdSBhcmUgYnVpbGRpbmcgZm9yIG11bHRpcGxlCkBAIC03OTYzLDcgKzc5NjMsNyBAQAogICAgICAgYGBUQ0xJQkNBUFBFTkRgYCB0byAiIiBpbiB0aGVpciBkaXN0cm8gY29uZmlndXJhdGlvbiBmaWxlIHJlc3VsdGluZwogICAgICAgaW4gbm8gc3VmZml4IGJlaW5nIGFwcGxpZWQuCiAKLSAgIDp0ZXJtOmBUQ01PREVgCisgICBUQ01PREUKICAgICAgIFNwZWNpZmllcyB0aGUgdG9vbGNoYWluIHNlbGVjdG9yLiBgYFRDTU9ERWBgIGNvbnRyb2xzIHRoZQogICAgICAgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBnZW5lcmF0ZWQgcGFja2FnZXMgYW5kIGltYWdlcyBieSB0ZWxsaW5nIHRoZQogICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGljaCB0b29sY2hhaW4gcHJvZmlsZSB0byB1c2UuIEJ5IGRlZmF1bHQsCkBAIC04MDA3LDcgKzgwMDcsNyBAQAogICAgICAgdG9vbGNoYWluLiBZb3UgY2FuIHVzZSBgYG1ldGEtc291cmNlcnlgYCBhcyBhIHRlbXBsYXRlIGZvciBhZGRpbmcKICAgICAgIHN1cHBvcnQgZm9yIG90aGVyIGV4dGVybmFsIHRvb2xjaGFpbnMuCiAKLSAgIDp0ZXJtOmBURVNUX0VYUE9SVF9ESVJgCisgICBURVNUX0VYUE9SVF9ESVIKICAgICAgIFRoZSBsb2NhdGlvbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIGV4cG9ydCB0ZXN0cyB3aGVuCiAgICAgICB0aGUgOnRlcm06YFRFU1RfRVhQT1JUX09OTFlgIHZhcmlhYmxlIGlzIHNldAogICAgICAgdG8gIjEiLgpAQCAtODAxNSwxMiArODAxNSwxMiBAQAogICAgICAgVGhlIGBgVEVTVF9FWFBPUlRfRElSYGAgdmFyaWFibGUgZGVmYXVsdHMgdG8KICAgICAgIGBgIiR7VE1QRElSfS90ZXN0aW1hZ2UvJHtQTn0iYGAuCiAKLSAgIDp0ZXJtOmBURVNUX0VYUE9SVF9PTkxZYAorICAgVEVTVF9FWFBPUlRfT05MWQogICAgICAgU3BlY2lmaWVzIHRvIGV4cG9ydCB0aGUgdGVzdHMgb25seS4gU2V0IHRoaXMgdmFyaWFibGUgdG8gIjEiIGlmIHlvdQogICAgICAgZG8gbm90IHdhbnQgdG8gcnVuIHRoZSB0ZXN0cyBidXQgeW91IHdhbnQgdGhlbSB0byBiZSBleHBvcnRlZCBpbiBhCiAgICAgICBtYW5uZXIgdGhhdCB5b3UgdG8gcnVuIHRoZW0gb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLgogCi0gICA6dGVybTpgVEVTVF9MT0dfRElSYAorICAgVEVTVF9MT0dfRElSCiAgICAgICBIb2xkcyB0aGUgU1NIIGxvZyBhbmQgdGhlIGJvb3QgbG9nIGZvciBRRU1VIG1hY2hpbmVzLiBUaGUKICAgICAgIGBgVEVTVF9MT0dfRElSYGAgdmFyaWFibGUgZGVmYXVsdHMgdG8gYGAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiYGAuCiAKQEAgLTgwMzIsNyArODAzMiw3IEBACiAgICAgICAgICAke1dPUktESVJ9L3RlbXAvCiAgICAgICAgICBkaXJlY3RvcnkuCiAKLSAgIDp0ZXJtOmBURVNUX1BPV0VSQ09OVFJPTF9DTURgCisgICBURVNUX1BPV0VSQ09OVFJPTF9DTUQKICAgICAgIEZvciBhdXRvbWF0ZWQgaGFyZHdhcmUgdGVzdGluZywgc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIHVzZSB0bwogICAgICAgY29udHJvbCB0aGUgcG93ZXIgb2YgdGhlIHRhcmdldCBtYWNoaW5lIHVuZGVyIHRlc3QuIFR5cGljYWxseSwgdGhpcwogICAgICAgY29tbWFuZCB3b3VsZCBwb2ludCB0byBhIHNjcmlwdCB0aGF0IHBlcmZvcm1zIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24KQEAgLTgwNDEsNyArODA0MSw3IEBACiAgICAgICAiY3ljbGUiIHNwZWNpZnlpbmcgdG8gcG93ZXIgb2ZmLCBvbiwgb3IgY3ljbGUgKHBvd2VyIG9mZiBhbmQgdGhlbgogICAgICAgcG93ZXIgb24pIHRoZSBkZXZpY2UsIHJlc3BlY3RpdmVseS4KIAotICAgOnRlcm06YFRFU1RfUE9XRVJDT05UUk9MX0VYVFJBX0FSR1NgCisgICBURVNUX1BPV0VSQ09OVFJPTF9FWFRSQV9BUkdTCiAgICAgICBGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0bwogICAgICAgcGFzcyB0aHJvdWdoIHRvIHRoZSBjb21tYW5kIHNwZWNpZmllZCBpbgogICAgICAgOnRlcm06YFRFU1RfUE9XRVJDT05UUk9MX0NNRGAuIFNldHRpbmcKQEAgLTgwNDksNyArODA0OSw3IEBACiAgICAgICB3aXNoLCBmb3IgZXhhbXBsZSwgdG8gc2VwYXJhdGUgdGhlIG1hY2hpbmUtc3BlY2lmaWMgYW5kCiAgICAgICBub24tbWFjaGluZS1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgYXJndW1lbnRzLgogCi0gICA6dGVybTpgVEVTVF9RRU1VQk9PVF9USU1FT1VUYAorICAgVEVTVF9RRU1VQk9PVF9USU1FT1VUCiAgICAgICBUaGUgdGltZSBpbiBzZWNvbmRzIGFsbG93ZWQgZm9yIGFuIGltYWdlIHRvIGJvb3QgYmVmb3JlIGF1dG9tYXRlZAogICAgICAgcnVudGltZSB0ZXN0cyBiZWdpbiB0byBydW4gYWdhaW5zdCBhbiBpbWFnZS4gVGhlIGRlZmF1bHQgdGltZW91dAogICAgICAgcGVyaW9kIHRvIGFsbG93IHRoZSBib290IHByb2Nlc3MgdG8gcmVhY2ggdGhlIGxvZ2luIHByb21wdCBpcyA1MDAKQEAgLTgwNjAsNyArODA2MCw3IEBACiAgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpwZXJmb3JtaW5nIGF1dG9tYXRlZCBydW50aW1lIHRlc3RpbmdgIgogICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAKLSAgIDp0ZXJtOmBURVNUX1NFUklBTENPTlRST0xfQ01EYAorICAgVEVTVF9TRVJJQUxDT05UUk9MX0NNRAogICAgICAgRm9yIGF1dG9tYXRlZCBoYXJkd2FyZSB0ZXN0aW5nLCBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIHRvCiAgICAgICBjb25uZWN0IHRvIHRoZSBzZXJpYWwgY29uc29sZSBvZiB0aGUgdGFyZ2V0IG1hY2hpbmUgdW5kZXIgdGVzdC4gVGhpcwogICAgICAgY29tbWFuZCBzaW1wbHkgbmVlZHMgdG8gY29ubmVjdCB0byB0aGUgc2VyaWFsIGNvbnNvbGUgYW5kIGZvcndhcmQKQEAgLTgwNzMsNyArODA3Myw3IEBACiAKICAgICAgICAgIFRFU1RfU0VSSUFMQ09OVFJPTF9DTUQgPSAicGljb2NvbSAvZGV2L3R0eVVTQjAgLWIgMTE1MjAwIgogCi0gICA6dGVybTpgVEVTVF9TRVJJQUxDT05UUk9MX0VYVFJBX0FSR1NgCisgICBURVNUX1NFUklBTENPTlRST0xfRVhUUkFfQVJHUwogICAgICAgRm9yIGF1dG9tYXRlZCBoYXJkd2FyZSB0ZXN0aW5nLCBzcGVjaWZpZXMgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8KICAgICAgIHBhc3MgdGhyb3VnaCB0byB0aGUgY29tbWFuZCBzcGVjaWZpZWQgaW4KICAgICAgIDp0ZXJtOmBURVNUX1NFUklBTENPTlRST0xfQ01EYC4gU2V0dGluZwpAQCAtODA4MSw3ICs4MDgxLDcgQEAKICAgICAgIHdpc2gsIGZvciBleGFtcGxlLCB0byBzZXBhcmF0ZSB0aGUgbWFjaGluZS1zcGVjaWZpYyBhbmQKICAgICAgIG5vbi1tYWNoaW5lLXNwZWNpZmljIHBhcnRzIG9mIHRoZSBjb21tYW5kLgogCi0gICA6dGVybTpgVEVTVF9TRVJWRVJfSVBgCisgICBURVNUX1NFUlZFUl9JUAogICAgICAgVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGJ1aWxkIG1hY2hpbmUgKGhvc3QgbWFjaGluZSkuIFRoaXMgSVAgYWRkcmVzcwogICAgICAgaXMgdXN1YWxseSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkLiBIb3dldmVyLCBpZiBkZXRlY3Rpb24gZmFpbHMsIHRoaXMKICAgICAgIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgYnVpbGQgbWFjaGluZSAoaS5lLgpAQCAtODA5Niw3ICs4MDk2LDYxIEBACiAgICAgICAgICBXT1JLRElSL29lLXJvb3Rmcy1yZXBvCiAgICAgICAgICAuCiAKLSAgIDp0ZXJtOmBURVNUX1NVSVRFU2AKKyAgIFRFU1RfVEFSR0VUCisgICAgICBTcGVjaWZpZXMgdGhlIHRhcmdldCBjb250cm9sbGVyIHRvIHVzZSB3aGVuIHJ1bm5pbmcgdGVzdHMgYWdhaW5zdCBhCisgICAgICB0ZXN0IGltYWdlLiBUaGUgZGVmYXVsdCBjb250cm9sbGVyIHRvIHVzZSBpcyAicWVtdSI6CisgICAgICA6OgorCisgICAgICAgICBURVNUX1RBUkdFVCA9ICJxZW11IgorCisgICAgICBBIHRhcmdldCBjb250cm9sbGVyIGlzIGEgY2xhc3MgdGhhdCBkZWZpbmVzIGhvdyBhbiBpbWFnZSBnZXRzCisgICAgICBkZXBsb3llZCBvbiBhIHRhcmdldCBhbmQgaG93IGEgdGFyZ2V0IGlzIHN0YXJ0ZWQuIEEgbGF5ZXIgY2FuIGV4dGVuZAorICAgICAgdGhlIGNvbnRyb2xsZXJzIGJ5IGFkZGluZyBhIG1vZHVsZSBpbiB0aGUgbGF5ZXIncworICAgICAgYGAvbGliL29lcWEvY29udHJvbGxlcnNgYCBkaXJlY3RvcnkgYW5kIGJ5IGluaGVyaXRpbmcgdGhlCisgICAgICBgYEJhc2VUYXJnZXRgYCBjbGFzcywgd2hpY2ggaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBjYW5ub3QgYmUgdXNlZAorICAgICAgYXMgYSB2YWx1ZSBvZiBgYFRFU1RfVEFSR0VUYGAuCisKKyAgICAgIFlvdSBjYW4gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyB3aXRoIGBgVEVTVF9UQVJHRVRgYDoKKworICAgICAgLSAgKiJxZW11IjoqIEJvb3RzIGEgUUVNVSBpbWFnZSBhbmQgcnVucyB0aGUgdGVzdHMuIFNlZSB0aGUKKyAgICAgICAgICI6cmVmOmBxZW11LWltYWdlLWVuYWJsaW5nLXRlc3RzYCIgc2VjdGlvbgorICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICBpbmZvcm1hdGlvbi4KKworICAgICAgLSAgKiJzaW1wbGVyZW1vdGUiOiogUnVucyB0aGUgdGVzdHMgb24gdGFyZ2V0IGhhcmR3YXJlIHRoYXQgaXMKKyAgICAgICAgIGFscmVhZHkgdXAgYW5kIHJ1bm5pbmcuIFRoZSBoYXJkd2FyZSBjYW4gYmUgb24gdGhlIG5ldHdvcmsgb3IgaXQKKyAgICAgICAgIGNhbiBiZSBhIGRldmljZSBydW5uaW5nIGFuIGltYWdlIG9uIFFFTVUuIFlvdSBtdXN0IGFsc28gc2V0CisgICAgICAgICA6dGVybTpgVEVTVF9UQVJHRVRfSVBgIHdoZW4geW91IHVzZQorICAgICAgICAgInNpbXBsZXJlbW90ZSIuCisKKyAgICAgICAgIC4uIG5vdGU6OgorCisgICAgICAgICAgICBUaGlzIGFyZ3VtZW50IGlzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIG1ldGEvbGliL29lcWEvY29udHJvbGxlcnMvc2ltcGxlcmVtb3RlLnB5CisgICAgICAgICAgICAuCisKKyAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIHRlc3RzIG9uIGhhcmR3YXJlLCBzZWUgdGhlCisgICAgICAiOnJlZjpgaGFyZHdhcmUtaW1hZ2UtZW5hYmxpbmctdGVzdHNgIgorICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisKKyAgIFRFU1RfVEFSR0VUX0lQCisgICAgICBUaGUgSVAgYWRkcmVzcyBvZiB5b3VyIGhhcmR3YXJlIHVuZGVyIHRlc3QuIFRoZSBgYFRFU1RfVEFSR0VUX0lQYGAKKyAgICAgIHZhcmlhYmxlIGhhcyBubyBlZmZlY3Qgd2hlbiA6dGVybTpgVEVTVF9UQVJHRVRgIGlzCisgICAgICBzZXQgdG8gInFlbXUiLgorCisgICAgICBXaGVuIHlvdSBzcGVjaWZ5IHRoZSBJUCBhZGRyZXNzLCB5b3UgY2FuIGFsc28gaW5jbHVkZSBhIHBvcnQuIEhlcmUgaXMKKyAgICAgIGFuIGV4YW1wbGU6CisgICAgICA6OgorCisgICAgICAgICBURVNUX1RBUkdFVF9JUCA9ICIxOTIuMTY4LjEuNDoyMjAxIgorCisgICAgICBTcGVjaWZ5aW5nIGEgcG9ydCBpcworICAgICAgdXNlZnVsIHdoZW4gU1NIIGlzIHN0YXJ0ZWQgb24gYSBub24tc3RhbmRhcmQgcG9ydCBvciBpbiBjYXNlcyB3aGVuCisgICAgICB5b3VyIGhhcmR3YXJlIHVuZGVyIHRlc3QgaXMgYmVoaW5kIGEgZmlyZXdhbGwgb3IgbmV0d29yayB0aGF0IGlzIG5vdAorICAgICAgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIHlvdXIgaG9zdCBhbmQgeW91IG5lZWQgdG8gZG8gcG9ydCBhZGRyZXNzCisgICAgICB0cmFuc2xhdGlvbi4KKworICAgVEVTVF9TVUlURVMKICAgICAgIEFuIG9yZGVyZWQgbGlzdCBvZiB0ZXN0cyAobW9kdWxlcykgdG8gcnVuIGFnYWluc3QgYW4gaW1hZ2Ugd2hlbgogICAgICAgcGVyZm9ybWluZyBhdXRvbWF0ZWQgcnVudGltZSB0ZXN0aW5nLgogCkBAIC04MTM5LDYxICs4MTkzLDcgQEAKICAgICAgICI6cmVmOmBkZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzOnBlcmZvcm1pbmcgYXV0b21hdGVkIHJ1bnRpbWUgdGVzdGluZ2AiCiAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIAotICAgOnRlcm06YFRFU1RfVEFSR0VUYAotICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgY29udHJvbGxlciB0byB1c2Ugd2hlbiBydW5uaW5nIHRlc3RzIGFnYWluc3QgYQotICAgICAgdGVzdCBpbWFnZS4gVGhlIGRlZmF1bHQgY29udHJvbGxlciB0byB1c2UgaXMgInFlbXUiOgotICAgICAgOjoKLQotICAgICAgICAgVEVTVF9UQVJHRVQgPSAicWVtdSIKLQotICAgICAgQSB0YXJnZXQgY29udHJvbGxlciBpcyBhIGNsYXNzIHRoYXQgZGVmaW5lcyBob3cgYW4gaW1hZ2UgZ2V0cwotICAgICAgZGVwbG95ZWQgb24gYSB0YXJnZXQgYW5kIGhvdyBhIHRhcmdldCBpcyBzdGFydGVkLiBBIGxheWVyIGNhbiBleHRlbmQKLSAgICAgIHRoZSBjb250cm9sbGVycyBieSBhZGRpbmcgYSBtb2R1bGUgaW4gdGhlIGxheWVyJ3MKLSAgICAgIGBgL2xpYi9vZXFhL2NvbnRyb2xsZXJzYGAgZGlyZWN0b3J5IGFuZCBieSBpbmhlcml0aW5nIHRoZQotICAgICAgYGBCYXNlVGFyZ2V0YGAgY2xhc3MsIHdoaWNoIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgY2Fubm90IGJlIHVzZWQKLSAgICAgIGFzIGEgdmFsdWUgb2YgYGBURVNUX1RBUkdFVGBgLgotCi0gICAgICBZb3UgY2FuIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhcmd1bWVudHMgd2l0aCBgYFRFU1RfVEFSR0VUYGA6Ci0KLSAgICAgIC0gICoicWVtdSI6KiBCb290cyBhIFFFTVUgaW1hZ2UgYW5kIHJ1bnMgdGhlIHRlc3RzLiBTZWUgdGhlCi0gICAgICAgICAiOnJlZjpgcWVtdS1pbWFnZS1lbmFibGluZy10ZXN0c2AiIHNlY3Rpb24KLSAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQotICAgICAgICAgaW5mb3JtYXRpb24uCi0KLSAgICAgIC0gICoic2ltcGxlcmVtb3RlIjoqIFJ1bnMgdGhlIHRlc3RzIG9uIHRhcmdldCBoYXJkd2FyZSB0aGF0IGlzCi0gICAgICAgICBhbHJlYWR5IHVwIGFuZCBydW5uaW5nLiBUaGUgaGFyZHdhcmUgY2FuIGJlIG9uIHRoZSBuZXR3b3JrIG9yIGl0Ci0gICAgICAgICBjYW4gYmUgYSBkZXZpY2UgcnVubmluZyBhbiBpbWFnZSBvbiBRRU1VLiBZb3UgbXVzdCBhbHNvIHNldAotICAgICAgICAgOnRlcm06YFRFU1RfVEFSR0VUX0lQYCB3aGVuIHlvdSB1c2UKLSAgICAgICAgICJzaW1wbGVyZW1vdGUiLgotCi0gICAgICAgICAuLiBub3RlOjoKLQotICAgICAgICAgICAgVGhpcyBhcmd1bWVudCBpcyBkZWZpbmVkIGluCi0gICAgICAgICAgICBtZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL3NpbXBsZXJlbW90ZS5weQotICAgICAgICAgICAgLgotCi0gICAgICBGb3IgaW5mb3JtYXRpb24gb24gcnVubmluZyB0ZXN0cyBvbiBoYXJkd2FyZSwgc2VlIHRoZQotICAgICAgIjpyZWY6YGhhcmR3YXJlLWltYWdlLWVuYWJsaW5nLXRlc3RzYCIKLSAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotCi0gICA6dGVybTpgVEVTVF9UQVJHRVRfSVBgCi0gICAgICBUaGUgSVAgYWRkcmVzcyBvZiB5b3VyIGhhcmR3YXJlIHVuZGVyIHRlc3QuIFRoZSBgYFRFU1RfVEFSR0VUX0lQYGAKLSAgICAgIHZhcmlhYmxlIGhhcyBubyBlZmZlY3Qgd2hlbiA6dGVybTpgVEVTVF9UQVJHRVRgIGlzCi0gICAgICBzZXQgdG8gInFlbXUiLgotCi0gICAgICBXaGVuIHlvdSBzcGVjaWZ5IHRoZSBJUCBhZGRyZXNzLCB5b3UgY2FuIGFsc28gaW5jbHVkZSBhIHBvcnQuIEhlcmUgaXMKLSAgICAgIGFuIGV4YW1wbGU6Ci0gICAgICA6OgotCi0gICAgICAgICBURVNUX1RBUkdFVF9JUCA9ICIxOTIuMTY4LjEuNDoyMjAxIgotCi0gICAgICBTcGVjaWZ5aW5nIGEgcG9ydCBpcwotICAgICAgdXNlZnVsIHdoZW4gU1NIIGlzIHN0YXJ0ZWQgb24gYSBub24tc3RhbmRhcmQgcG9ydCBvciBpbiBjYXNlcyB3aGVuCi0gICAgICB5b3VyIGhhcmR3YXJlIHVuZGVyIHRlc3QgaXMgYmVoaW5kIGEgZmlyZXdhbGwgb3IgbmV0d29yayB0aGF0IGlzIG5vdAotICAgICAgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIHlvdXIgaG9zdCBhbmQgeW91IG5lZWQgdG8gZG8gcG9ydCBhZGRyZXNzCi0gICAgICB0cmFuc2xhdGlvbi4KLQotICAgOnRlcm06YFRFU1RJTUFHRV9BVVRPYAorICAgVEVTVElNQUdFX0FVVE8KICAgICAgIEF1dG9tYXRpY2FsbHkgcnVucyB0aGUgc2VyaWVzIG9mIGF1dG9tYXRlZCB0ZXN0cyBmb3IgaW1hZ2VzIHdoZW4gYW4KICAgICAgIGltYWdlIGlzIHN1Y2Nlc3NmdWxseSBidWlsdC4gU2V0dGluZyBgYFRFU1RJTUFHRV9BVVRPYGAgdG8gIjEiIGNhdXNlcwogICAgICAgYW55IGltYWdlIHRoYXQgc3VjY2Vzc2Z1bGx5IGJ1aWxkcyB0byBhdXRvbWF0aWNhbGx5IGJvb3QgdW5kZXIgUUVNVS4KQEAgLTgyMTUsMTYgKzgyMTUsMTYgQEAKICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGFuZCB0aGUKICAgICAgICI6cmVmOmB0ZXN0aW1hZ2UqLmJiY2xhc3MgPHJlZi1jbGFzc2VzLXRlc3RpbWFnZSo+YCIgc2VjdGlvbi4KIAotICAgOnRlcm06YFRISVNESVJgCisgICBUSElTRElSCiAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBmaWxlIEJpdEJha2UgaXMgY3VycmVudGx5IHBhcnNpbmcgaXMKICAgICAgIGxvY2F0ZWQuIERvIG5vdCBtYW51YWxseSBzZXQgdGhpcyB2YXJpYWJsZS4KIAotICAgOnRlcm06YFRJTUVgCisgICBUSU1FCiAgICAgICBUaGUgdGltZSB0aGUgYnVpbGQgd2FzIHN0YXJ0ZWQuIFRpbWVzIGFwcGVhciB1c2luZyB0aGUgaG91ciwgbWludXRlLAogICAgICAgYW5kIHNlY29uZCAoSE1TKSBmb3JtYXQgKGUuZy4gIjE0MDE1OSIgZm9yIG9uZSBtaW51dGUgYW5kIGZpZnR5LW5pbmUKICAgICAgIHNlY29uZHMgcGFzdCAxNDAwIGhvdXJzKS4KIAotICAgOnRlcm06YFRNUERJUmAKKyAgIFRNUERJUgogICAgICAgVGhpcyB2YXJpYWJsZSBpcyB0aGUgYmFzZSBkaXJlY3RvcnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KICAgICAgIHVzZXMgZm9yIGFsbCBidWlsZCBvdXRwdXQgYW5kIGludGVybWVkaWF0ZSBmaWxlcyAob3RoZXIgdGhhbiB0aGUKICAgICAgIHNoYXJlZCBzdGF0ZSBjYWNoZSkuIEJ5IGRlZmF1bHQsIHRoZSBgYFRNUERJUmBgIHZhcmlhYmxlIHBvaW50cyB0bwpAQCAtODI0Niw3ICs4MjQ2LDcgQEAKICAgICAgIGltcGxlbWVudGF0aW9ucywgTkZTIGRvZXMgbm90IG1lZXQgdGhpcyBtaW5pbXVtIHJlcXVpcmVtZW50LgogICAgICAgQ29uc2VxdWVudGx5LCBgYFRNUERJUmBgIGNhbm5vdCBiZSBvbiBORlMuCiAKLSAgIDp0ZXJtOmBUT09MQ0hBSU5fSE9TVF9UQVNLYAorICAgVE9PTENIQUlOX0hPU1RfVEFTSwogICAgICAgVGhpcyB2YXJpYWJsZSBsaXN0cyBwYWNrYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHdoZW4KICAgICAgIGJ1aWxkaW5nIGFuIFNESywgd2hpY2ggY29udGFpbnMgYSBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gVGhlCiAgICAgICBwYWNrYWdlcyBzcGVjaWZpZWQgYnkgdGhpcyB2YXJpYWJsZSBhcmUgcGFydCBvZiB0aGUgdG9vbGNoYWluIHNldApAQCAtODI3MSw3ICs4MjcxLDcgQEAKICAgICAgIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgYSBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQogICAgICAgOmRvYzpgLi4vc2RrLW1hbnVhbC9zZGstbWFudWFsYCBtYW51YWwuCiAKLSAgIDp0ZXJtOmBUT09MQ0hBSU5fT1VUUFVUTkFNRWAKKyAgIFRPT0xDSEFJTl9PVVRQVVROQU1FCiAgICAgICBUaGlzIHZhcmlhYmxlIGRlZmluZXMgdGhlIG5hbWUgdXNlZCBmb3IgdGhlIHRvb2xjaGFpbiBvdXRwdXQuIFRoZQogICAgICAgOnJlZjpgcG9wdWxhdGVfc2RrX2Jhc2UgPHJlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qPmAgY2xhc3Mgc2V0cwogICAgICAgdGhlIGBgVE9PTENIQUlOX09VVFBVVE5BTUVgYCB2YXJpYWJsZSBhcyBmb2xsb3dzOgpAQCAtODI4NCw3ICs4Mjg0LDcgQEAKICAgICAgIDp0ZXJtOmBTREtfVkVSU0lPTmAgdmFyaWFibGVzIGZvciBhZGRpdGlvbmFsCiAgICAgICBpbmZvcm1hdGlvbi4KIAotICAgOnRlcm06YFRPT0xDSEFJTl9UQVJHRVRfVEFTS2AKKyAgIFRPT0xDSEFJTl9UQVJHRVRfVEFTSwogICAgICAgVGhpcyB2YXJpYWJsZSBsaXN0cyBwYWNrYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHdoZW4KICAgICAgIGl0IGNyZWF0ZXMgdGhlIHRhcmdldCBwYXJ0IG9mIGFuIFNESyAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlCiAgICAgICB0YXJnZXQgaGFyZHdhcmUpLCB3aGljaCBpbmNsdWRlcyBsaWJyYXJpZXMgYW5kIGhlYWRlcnMuIFVzZSB0aGlzCkBAIC04MzAxLDEyICs4MzAxLDEyIEBACiAgICAgICBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHNlZSB0aGUKICAgICAgIDpkb2M6YC4uL3Nkay1tYW51YWwvc2RrLW1hbnVhbGAgbWFudWFsLgogCi0gICA6dGVybTpgVE9QRElSYAorICAgVE9QRElSCiAgICAgICBUaGUgdG9wLWxldmVsIDp0ZXJtOmBCdWlsZCBEaXJlY3RvcnlgLiBCaXRCYWtlCiAgICAgICBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyB2YXJpYWJsZSB3aGVuIHlvdSBpbml0aWFsaXplIHlvdXIgYnVpbGQKICAgICAgIGVudmlyb25tZW50IHVzaW5nIGBgYGBgIDwjc3RydWN0dXJlLWNvcmUtc2NyaXB0PmBfXy4KIAotICAgOnRlcm06YFRSQU5TTEFURURfVEFSR0VUX0FSQ0hgCisgICBUUkFOU0xBVEVEX1RBUkdFVF9BUkNICiAgICAgICBBIHNhbml0aXplZCB2ZXJzaW9uIG9mIDp0ZXJtOmBUQVJHRVRfQVJDSGAuIFRoaXMKICAgICAgIHZhcmlhYmxlIGlzIHVzZWQgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZSBpcyBuZWVkZWQgaW4gYSB2YWx1ZSB3aGVyZQogICAgICAgdW5kZXJzY29yZXMgYXJlIG5vdCBhbGxvd2VkLCBmb3IgZXhhbXBsZSB3aXRoaW4gcGFja2FnZSBmaWxlbmFtZXMuIEluCkBAIC04MzE1LDcgKzgzMTUsNyBAQAogCiAgICAgICBEbyBub3QgZWRpdCB0aGlzIHZhcmlhYmxlLgogCi0gICA6dGVybTpgVFVORV9BUkNIYAorICAgVFVORV9BUkNICiAgICAgICBUaGUgR05VIGNhbm9uaWNhbCBhcmNoaXRlY3R1cmUgZm9yIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIChpLmUuCiAgICAgICBgYGFybWBgLCBgYGFybWViYGAsIGBgbWlwc2BgLCBgYG1pcHM2NGBgLCBhbmQgc28gZm9ydGgpLiBCaXRCYWtlIHVzZXMKICAgICAgIHRoaXMgdmFsdWUgdG8gc2V0dXAgY29uZmlndXJhdGlvbi4KQEAgLTgzNDcsNyArODM0Nyw3IEBACiAgICAgICAtIG1pcHMKICAgICAgIC0gbWlwc2VsCiAKLSAgIDp0ZXJtOmBUVU5FX0FTQVJHU2AKKyAgIFRVTkVfQVNBUkdTCiAgICAgICBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFzc2VtYmxlciBmbGFncyBmb3IgdGhlIHRhcmdldAogICAgICAgc3lzdGVtLiBUaGUgc2V0IG9mIGZsYWdzIGlzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCB0dW5lIGZlYXR1cmVzLgogICAgICAgYGBUVU5FX0FTQVJHU2BgIGlzIHNldCB1c2luZyB0aGUgdHVuZSBpbmNsdWRlIGZpbGVzLCB3aGljaCBhcmUKQEAgLTgzNjUsNyArODM2NSw3IEBACiAgICAgICAgICBpbiB0dXJuLCBhZmZlY3RzIHRoZSB0dW5lIHZhcmlhYmxlcyB0aGVtc2VsdmVzIChpLmUuIHRoZSB0dW5lIGNhbgogICAgICAgICAgc3VwcGx5IGl0cyBvd24gc2V0IG9mIGZsYWdzKS4KIAotICAgOnRlcm06YFRVTkVfQ0NBUkdTYAorICAgVFVORV9DQ0FSR1MKICAgICAgIFNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQyBjb21waWxlciBmbGFncyBmb3IgdGhlIHRhcmdldAogICAgICAgc3lzdGVtLiBUaGUgc2V0IG9mIGZsYWdzIGlzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCB0dW5lIGZlYXR1cmVzLgogICAgICAgYGBUVU5FX0NDQVJHU2BgIGlzIHNldCB1c2luZyB0aGUgdHVuZSBpbmNsdWRlIGZpbGVzLCB3aGljaCBhcmUKQEAgLTgzNzgsMjQgKzgzNzgsNyBAQAogICAgICAgICAgaW4gdHVybiwgYWZmZWN0cyB0aGUgdHVuZSB2YXJpYWJsZXMgdGhlbXNlbHZlcyAoaS5lLiB0aGUgdHVuZSBjYW4KICAgICAgICAgIHN1cHBseSBpdHMgb3duIHNldCBvZiBmbGFncykuCiAKLSAgIDp0ZXJtOmBUVU5FX0ZFQVRVUkVTYAotICAgICAgRmVhdHVyZXMgdXNlZCB0byAidHVuZSIgYSBjb21waWxlciBmb3Igb3B0aW1hbCB1c2UgZ2l2ZW4gYSBzcGVjaWZpYwotICAgICAgcHJvY2Vzc29yLiBUaGUgZmVhdHVyZXMgYXJlIGRlZmluZWQgd2l0aGluIHRoZSB0dW5lIGZpbGVzIGFuZCBhbGxvdwotICAgICAgYXJndW1lbnRzIChpLmUuIGBgVFVORV8qQVJHU2BgKSB0byBiZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgYmFzZWQgb24KLSAgICAgIHRoZSBmZWF0dXJlcy4KLQotICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdmVyaWZpZXMgdGhlIGZlYXR1cmVzIHRvIGJlIHN1cmUgdGhleQotICAgICAgYXJlIG5vdCBjb25mbGljdGluZyBhbmQgdGhhdCB0aGV5IGFyZSBzdXBwb3J0ZWQuCi0KLSAgICAgIFRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSAoYGBtZXRhL2NvbmYvYml0YmFrZS5jb25mYGApIGRlZmluZXMKLSAgICAgIGBgVFVORV9GRUFUVVJFU2BgIGFzIGZvbGxvd3M6Ci0gICAgICA6OgotCi0gICAgICAgICBUVU5FX0ZFQVRVUkVTID8/PSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtJHtERUZBVUxUVFVORX19IgotCi0gICAgICBTZWUgdGhlIDp0ZXJtOmBERUZBVUxUVFVORWAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLSAgIDp0ZXJtOmBUVU5FX0xEQVJHU2AKKyAgIFRVTkVfTERBUkdTCiAgICAgICBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGxpbmtlciBmbGFncyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0uCiAgICAgICBUaGUgc2V0IG9mIGZsYWdzIGlzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCB0dW5lIGZlYXR1cmVzLgogICAgICAgYGBUVU5FX0xEQVJHU2BgIGlzIHNldCB1c2luZyB0aGUgdHVuZSBpbmNsdWRlIGZpbGVzLCB3aGljaCBhcmUKQEAgLTg0MTMsNyArODM5NiwyNCBAQAogICAgICAgICAgaW4gdHVybiwgYWZmZWN0cyB0aGUgdHVuZSB2YXJpYWJsZXMgdGhlbXNlbHZlcyAoaS5lLiB0aGUgdHVuZSBjYW4KICAgICAgICAgIHN1cHBseSBpdHMgb3duIHNldCBvZiBmbGFncykuCiAKLSAgIDp0ZXJtOmBUVU5FX1BLR0FSQ0hgCisgICBUVU5FX0ZFQVRVUkVTCisgICAgICBGZWF0dXJlcyB1c2VkIHRvICJ0dW5lIiBhIGNvbXBpbGVyIGZvciBvcHRpbWFsIHVzZSBnaXZlbiBhIHNwZWNpZmljCisgICAgICBwcm9jZXNzb3IuIFRoZSBmZWF0dXJlcyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIHR1bmUgZmlsZXMgYW5kIGFsbG93CisgICAgICBhcmd1bWVudHMgKGkuZS4gYGBUVU5FXypBUkdTYGApIHRvIGJlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBiYXNlZCBvbgorICAgICAgdGhlIGZlYXR1cmVzLgorCisgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB2ZXJpZmllcyB0aGUgZmVhdHVyZXMgdG8gYmUgc3VyZSB0aGV5CisgICAgICBhcmUgbm90IGNvbmZsaWN0aW5nIGFuZCB0aGF0IHRoZXkgYXJlIHN1cHBvcnRlZC4KKworICAgICAgVGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlIChgYG1ldGEvY29uZi9iaXRiYWtlLmNvbmZgYCkgZGVmaW5lcworICAgICAgYGBUVU5FX0ZFQVRVUkVTYGAgYXMgZm9sbG93czoKKyAgICAgIDo6CisKKyAgICAgICAgIFRVTkVfRkVBVFVSRVMgPz89ICIke1RVTkVfRkVBVFVSRVNfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCisKKyAgICAgIFNlZSB0aGUgOnRlcm06YERFRkFVTFRUVU5FYCB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgVFVORV9QS0dBUkNICiAgICAgICBUaGUgcGFja2FnZSBhcmNoaXRlY3R1cmUgdW5kZXJzdG9vZCBieSB0aGUgcGFja2FnaW5nIHN5c3RlbSB0byBkZWZpbmUKICAgICAgIHRoZSBhcmNoaXRlY3R1cmUsIEFCSSwgYW5kIHR1bmluZyBvZiBvdXRwdXQgcGFja2FnZXMuIFRoZSBzcGVjaWZpYwogICAgICAgdHVuZSBpcyBkZWZpbmVkIHVzaW5nIHRoZSAiX3R1bmUiIG92ZXJyaWRlIGFzIGZvbGxvd3M6CkBAIC04NDI4LDcgKzg0MjgsNyBAQAogCiAgICAgICAgICBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi0zMiA9ICJjb3JlMi0zMiIKIAotICAgOnRlcm06YFRVTkVBQklgCisgICBUVU5FQUJJCiAgICAgICBBbiB1bmRlcmx5aW5nIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkgdXNlZCBieSBhIHBhcnRpY3VsYXIKICAgICAgIHR1bmluZyBpbiBhIGdpdmVuIHRvb2xjaGFpbiBsYXllci4gUHJvdmlkZXJzIHRoYXQgdXNlIHByZWJ1aWx0CiAgICAgICBsaWJyYXJpZXMgY2FuIHVzZSB0aGUgYGBUVU5FQUJJYGAsCkBAIC04NDQwLDcgKzg0NDAsNyBAQAogICAgICAgOnJlZjpgc2FuaXR5IDxyZWYtY2xhc3Nlcy1zYW5pdHk+YCBjbGFzcyB0byBzZWUgaG93IHRoZSB2YXJpYWJsZSBpcwogICAgICAgdXNlZC4KIAotICAgOnRlcm06YFRVTkVBQklfT1ZFUlJJREVgCisgICBUVU5FQUJJX09WRVJSSURFCiAgICAgICBJZiBzZXQsIHRoZSBPcGVuRW1iZWRkZWQgc3lzdGVtIGlnbm9yZXMgdGhlCiAgICAgICA6dGVybTpgVFVORUFCSV9XSElURUxJU1RgIHZhcmlhYmxlLgogICAgICAgUHJvdmlkZXJzIHRoYXQgdXNlIHByZWJ1aWx0IGxpYnJhcmllcyBjYW4gdXNlIHRoZQpAQCAtODQ1MSw3ICs4NDUxLDcgQEAKICAgICAgIFNlZSB0aGUgOnJlZjpgc2FuaXR5IDxyZWYtY2xhc3Nlcy1zYW5pdHk+YCBjbGFzcyB0byBzZWUgaG93IHRoZQogICAgICAgdmFyaWFibGUgaXMgdXNlZC4KIAotICAgOnRlcm06YFRVTkVBQklfV0hJVEVMSVNUYAorICAgVFVORUFCSV9XSElURUxJU1QKICAgICAgIEEgd2hpdGVsaXN0IG9mIHBlcm1pc3NpYmxlIDp0ZXJtOmBUVU5FQUJJYCB2YWx1ZXMuIElmCiAgICAgICBgYFRVTkVBQklfV0hJVEVMSVNUYGAgaXMgbm90IHNldCwgYWxsIHR1bmVzIGFyZSBhbGxvd2VkLiBQcm92aWRlcnMKICAgICAgIHRoYXQgdXNlIHByZWJ1aWx0IGxpYnJhcmllcyBjYW4gdXNlIHRoZSBgYFRVTkVBQklfV0hJVEVMSVNUYGAsCkBAIC04NDYyLDcgKzg0NjIsNyBAQAogICAgICAgU2VlIHRoZSA6cmVmOmBzYW5pdHkgPHJlZi1jbGFzc2VzLXNhbml0eT5gIGNsYXNzIHRvIHNlZSBob3cgdGhlCiAgICAgICB2YXJpYWJsZSBpcyB1c2VkLgogCi0gICA6dGVybTpgVFVORUNPTkZMSUNUU1tmZWF0dXJlXWAKKyAgIFRVTkVDT05GTElDVFNbZmVhdHVyZV0KICAgICAgIFNwZWNpZmllcyBDUFUgb3IgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5pbmcgZmVhdHVyZXMKICAgICAgIHRoYXQgY29uZmxpY3Qgd2l0aCBmZWF0dXJlLgogCkBAIC04NDc1LDcgKzg0NzUsNyBAQAogCiAgICAgICAgICBUVU5FQ09ORkxJQ1RTW24zMl0gPSAibzMyIG42NCIKIAotICAgOnRlcm06YFRVTkVWQUxJRFtmZWF0dXJlXWAKKyAgIFRVTkVWQUxJRFtmZWF0dXJlXQogICAgICAgU3BlY2lmaWVzIGEgdmFsaWQgQ1BVIG9yIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkgdHVuaW5nCiAgICAgICBmZWF0dXJlLiBUaGUgc3BlY2lmaWVkIGZlYXR1cmUgaXMgc3RvcmVkIGFzIGEgZmxhZy4gVmFsaWQgZmVhdHVyZXMKICAgICAgIGFyZSBzcGVjaWZpZWQgaW4gdGhlIG1hY2hpbmUgaW5jbHVkZSBmaWxlcyAoZS5nLgpAQCAtODQ4OCw3ICs4NDg4LDcgQEAKICAgICAgIFNlZSB0aGUgbWFjaGluZSBpbmNsdWRlIGZpbGVzIGluIHRoZSA6dGVybTpgU291cmNlIERpcmVjdG9yeWAKICAgICAgIGZvciB0aGVzZSBmZWF0dXJlcy4KIAotICAgOnRlcm06YFVCT09UX0NPTkZJR2AKKyAgIFVCT09UX0NPTkZJRwogICAgICAgQ29uZmlndXJlcyB0aGUgOnRlcm06YFVCT09UX01BQ0hJTkVgIGFuZCBjYW4KICAgICAgIGFsc28gZGVmaW5lIDp0ZXJtOmBJTUFHRV9GU1RZUEVTYCBmb3IgaW5kaXZpZHVhbAogICAgICAgY2FzZXMuCkBAIC04NTEwLDMwICs4NTEwLDMwIEBACiAgICAgICA6cmVmOmB1Ym9vdC1jb25maWcgPHJlZi1jbGFzc2VzLXVib290LWNvbmZpZz5gCiAgICAgICBjbGFzcy4KIAotICAgOnRlcm06YFVCT09UX0RUQl9MT0FEQUREUkVTU2AKKyAgIFVCT09UX0RUQl9MT0FEQUREUkVTUwogICAgICAgU3BlY2lmaWVzIHRoZSBsb2FkIGFkZHJlc3MgZm9yIHRoZSBkdGIgaW1hZ2UgdXNlZCBieSBVLWJvb3QuIER1cmluZyBGSVQKICAgICAgIGltYWdlIGNyZWF0aW9uLCB0aGUgYGBVQk9PVF9EVEJfTE9BREFERFJFU1NgYCB2YXJpYWJsZSBpcyB1c2VkIGluCiAgICAgICA6cmVmOmBrZXJuZWwtZml0aW1hZ2UgPHJlZi1jbGFzc2VzLWtlcm5lbC1maXRpbWFnZT5gIGNsYXNzIHRvIHNwZWNpZnkKICAgICAgIHRoZSBsb2FkIGFkZHJlc3MgdG8gYmUgdXNlZCBpbgogICAgICAgY3JlYXRpbmcgdGhlIGR0YiBzZWN0aW9ucyBvZiBJbWFnZSBUcmVlIFNvdXJjZSBmb3IgdGhlIEZJVCBpbWFnZS4KIAotICAgOnRlcm06YFVCT09UX0RUQk9fTE9BREFERFJFU1NgCisgICBVQk9PVF9EVEJPX0xPQURBRERSRVNTCiAgICAgICBTcGVjaWZpZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IgdGhlIGR0Ym8gaW1hZ2UgdXNlZCBieSBVLWJvb3QuICBEdXJpbmcgRklUCiAgICAgICBpbWFnZSBjcmVhdGlvbiwgdGhlIGBgVUJPT1RfRFRCT19MT0FEQUREUkVTU2BgIHZhcmlhYmxlIGlzIHVzZWQgaW4KICAgICAgIDpyZWY6YGtlcm5lbC1maXRpbWFnZSA8cmVmLWNsYXNzZXMta2VybmVsLWZpdGltYWdlPmAgY2xhc3MgdG8gc3BlY2lmeSB0aGUgbG9hZCBhZGRyZXNzIHRvIGJlIHVzZWQgaW4KICAgICAgIGNyZWF0aW5nIHRoZSBkdGJvIHNlY3Rpb25zIG9mIEltYWdlIFRyZWUgU291cmNlIGZvciB0aGUgRklUIGltYWdlLgogCi0gICA6dGVybTpgVUJPT1RfRU5UUllQT0lOVGAKKyAgIFVCT09UX0VOVFJZUE9JTlQKICAgICAgIFNwZWNpZmllcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBVLUJvb3QgaW1hZ2UuIER1cmluZyBVLUJvb3QgaW1hZ2UKICAgICAgIGNyZWF0aW9uLCB0aGUgYGBVQk9PVF9FTlRSWVBPSU5UYGAgdmFyaWFibGUgaXMgcGFzc2VkIGFzIGEKICAgICAgIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgdG8gdGhlIGBgdWJvb3QtbWtpbWFnZWBgIHV0aWxpdHkuCiAKLSAgIDp0ZXJtOmBVQk9PVF9MT0FEQUREUkVTU2AKKyAgIFVCT09UX0xPQURBRERSRVNTCiAgICAgICBTcGVjaWZpZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IgdGhlIFUtQm9vdCBpbWFnZS4gRHVyaW5nIFUtQm9vdCBpbWFnZQogICAgICAgY3JlYXRpb24sIHRoZSBgYFVCT09UX0xPQURBRERSRVNTYGAgdmFyaWFibGUgaXMgcGFzc2VkIGFzIGEKICAgICAgIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgdG8gdGhlIGBgdWJvb3QtbWtpbWFnZWBgIHV0aWxpdHkuCiAKLSAgIDp0ZXJtOmBVQk9PVF9MT0NBTFZFUlNJT05gCisgICBVQk9PVF9MT0NBTFZFUlNJT04KICAgICAgIEFwcGVuZHMgYSBzdHJpbmcgdG8gdGhlIG5hbWUgb2YgdGhlIGxvY2FsIHZlcnNpb24gb2YgdGhlIFUtQm9vdAogICAgICAgaW1hZ2UuIEZvciBleGFtcGxlLCBhc3N1bWluZyB0aGUgdmVyc2lvbiBvZiB0aGUgVS1Cb290IGltYWdlIGJ1aWx0CiAgICAgICB3YXMgIjIwMTMuMTAiLCB0aGUgZnVsbCB2ZXJzaW9uIHN0cmluZyByZXBvcnRlZCBieSBVLUJvb3Qgd291bGQgYmUKQEAgLTg1NDIsNyArODU0Miw3IEBACiAKICAgICAgICAgIFVCT09UX0xPQ0FMVkVSU0lPTiA9ICIteW9jdG8iCiAKLSAgIDp0ZXJtOmBVQk9PVF9NQUNISU5FYAorICAgVUJPT1RfTUFDSElORQogICAgICAgU3BlY2lmaWVzIHRoZSB2YWx1ZSBwYXNzZWQgb24gdGhlIGBgbWFrZWBgIGNvbW1hbmQgbGluZSB3aGVuIGJ1aWxkaW5nCiAgICAgICBhIFUtQm9vdCBpbWFnZS4gVGhlIHZhbHVlIGluZGljYXRlcyB0aGUgdGFyZ2V0IHBsYXRmb3JtCiAgICAgICBjb25maWd1cmF0aW9uLiBZb3UgdHlwaWNhbGx5IHNldCB0aGlzIHZhcmlhYmxlIGZyb20gdGhlIG1hY2hpbmUKQEAgLTg1NTEsMjMgKzg1NTEsMTUgQEAKICAgICAgIFBsZWFzZSBzZWUgdGhlICJTZWxlY3Rpb24gb2YgUHJvY2Vzc29yIEFyY2hpdGVjdHVyZSBhbmQgQm9hcmQgVHlwZSIKICAgICAgIHNlY3Rpb24gaW4gdGhlIFUtQm9vdCBSRUFETUUgZm9yIHZhbGlkIHZhbHVlcyBmb3IgdGhpcyB2YXJpYWJsZS4KIAotICAgOnRlcm06YFVCT09UX01BS0VfVEFSR0VUYAorICAgVUJPT1RfTUFLRV9UQVJHRVQKICAgICAgIFNwZWNpZmllcyB0aGUgdGFyZ2V0IGNhbGxlZCBpbiB0aGUgYGBNYWtlZmlsZWBgLiBUaGUgZGVmYXVsdCB0YXJnZXQKICAgICAgIGlzICJhbGwiLgogCi0gICA6dGVybTpgVUJPT1RfTUtJTUFHRV9EVENPUFRTYAorICAgVUJPT1RfTUtJTUFHRV9EVENPUFRTCiAgICAgICBPcHRpb25zIGZvciB0aGUgZGV2aWNlIHRyZWUgY29tcGlsZXIgcGFzc2VkIHRvIG1raW1hZ2UgJy1EJwogICAgICAgZmVhdHVyZSB3aGlsZSBjcmVhdGluZyBGSVQgaW1hZ2UgaW4gOnJlZjpga2VybmVsLWZpdGltYWdlIDxyZWYtY2xhc3Nlcy1rZXJuZWwtZml0aW1hZ2U+YCBjbGFzcy4KIAotICAgOnRlcm06YFVCT09UX1JEX0VOVFJZUE9JTlRgCi0gICAgICBTcGVjaWZpZXMgdGhlIGVudHJ5cG9pbnQgZm9yIHRoZSBSQU0gZGlzayBpbWFnZS4KLSAgICAgIER1cmluZyBGSVQgaW1hZ2UgY3JlYXRpb24sIHRoZQotICAgICAgYGBVQk9PVF9SRF9FTlRSWVBPSU5UYGAgdmFyaWFibGUgaXMgdXNlZAotICAgICAgaW4gOnJlZjpga2VybmVsLWZpdGltYWdlIDxyZWYtY2xhc3Nlcy1rZXJuZWwtZml0aW1hZ2U+YCBjbGFzcyB0byBzcGVjaWZ5IHRoZQotICAgICAgZW50cnlwb2ludCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIHRoZSBJbWFnZSBUcmVlIFNvdXJjZSBmb3IKLSAgICAgIHRoZSBGSVQgaW1hZ2UuCi0KLSAgIDp0ZXJtOmBVQk9PVF9SRF9MT0FEQUREUkVTU2AKKyAgIFVCT09UX1JEX0xPQURBRERSRVNTCiAgICAgICBTcGVjaWZpZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IgdGhlIFJBTSBkaXNrIGltYWdlLgogICAgICAgRHVyaW5nIEZJVCBpbWFnZSBjcmVhdGlvbiwgdGhlCiAgICAgICBgYFVCT09UX1JEX0xPQURBRERSRVNTYGAgdmFyaWFibGUgaXMgdXNlZApAQCAtODU3NSwzMyArODU2Nyw0MSBAQAogICAgICAgbG9hZCBhZGRyZXNzIHRvIGJlIHVzZWQgaW4gY3JlYXRpbmcgdGhlIEltYWdlIFRyZWUgU291cmNlIGZvcgogICAgICAgdGhlIEZJVCBpbWFnZS4KIAotICAgOnRlcm06YFVCT09UX1NJR05fRU5BQkxFYAorICAgVUJPT1RfUkRfRU5UUllQT0lOVAorICAgICAgU3BlY2lmaWVzIHRoZSBlbnRyeXBvaW50IGZvciB0aGUgUkFNIGRpc2sgaW1hZ2UuCisgICAgICBEdXJpbmcgRklUIGltYWdlIGNyZWF0aW9uLCB0aGUKKyAgICAgIGBgVUJPT1RfUkRfRU5UUllQT0lOVGBgIHZhcmlhYmxlIGlzIHVzZWQKKyAgICAgIGluIDpyZWY6YGtlcm5lbC1maXRpbWFnZSA8cmVmLWNsYXNzZXMta2VybmVsLWZpdGltYWdlPmAgY2xhc3MgdG8gc3BlY2lmeSB0aGUKKyAgICAgIGVudHJ5cG9pbnQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyB0aGUgSW1hZ2UgVHJlZSBTb3VyY2UgZm9yCisgICAgICB0aGUgRklUIGltYWdlLgorCisgICBVQk9PVF9TSUdOX0VOQUJMRQogICAgICAgRW5hYmxlIHNpZ25pbmcgb2YgRklUIGltYWdlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiMCIuCiAKLSAgIDp0ZXJtOmBVQk9PVF9TSUdOX0tFWURJUmAKKyAgIFVCT09UX1NJR05fS0VZRElSCiAgICAgICBMb2NhdGlvbiBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIFJTQSBrZXkgYW5kCiAgICAgICBjZXJ0aWZpY2F0ZSB1c2VkIGZvciBzaWduaW5nIEZJVCBpbWFnZS4KIAotICAgOnRlcm06YFVCT09UX1NJR05fS0VZTkFNRWAKKyAgIFVCT09UX1NJR05fS0VZTkFNRQogICAgICAgVGhlIG5hbWUgb2Yga2V5cyB1c2VkIGZvciBzaWduaW5nIFUtYm9vdCBGSVQgaW1hZ2Ugc3RvcmVkIGluCiAgICAgICA6dGVybTpgVUJPT1RfU0lHTl9LRVlESVJgIGRpcmVjdG9yeS4gRm9yIGUuZy4gZGV2LmtleSBrZXkgYW5kIGRldi5jcnQKICAgICAgIGNlcnRpZmljYXRlIHN0b3JlZCBpbiA6dGVybTpgVUJPT1RfU0lHTl9LRVlESVJgIGRpcmVjdG9yeSB3aWxsIGhhdmUKICAgICAgIDp0ZXJtOmBVQk9PVF9TSUdOX0tFWU5BTUVgIHNldCB0byAiZGV2Ii4KIAotICAgOnRlcm06YFVCT09UX1NVRkZJWGAKKyAgIFVCT09UX1NVRkZJWAogICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmF0ZWQgVS1Cb290IGV4dGVuc2lvbi4gRm9yIGV4YW1wbGUsIGBgdS1ib290LnNiYGAKICAgICAgIGhhcyBhIGBgLnNiYGAgZXh0ZW5zaW9uLgogCiAgICAgICBUaGUgZGVmYXVsdCBVLUJvb3QgZXh0ZW5zaW9uIGlzIGBgLmJpbmBgCiAKLSAgIDp0ZXJtOmBVQk9PVF9UQVJHRVRgCisgICBVQk9PVF9UQVJHRVQKICAgICAgIFNwZWNpZmllcyB0aGUgdGFyZ2V0IHVzZWQgZm9yIGJ1aWxkaW5nIFUtQm9vdC4gVGhlIHRhcmdldCBpcyBwYXNzZWQKICAgICAgIGRpcmVjdGx5IGFzIHBhcnQgb2YgdGhlICJtYWtlIiBjb21tYW5kIChlLmcuIFNQTCBhbmQgQUlTKS4gSWYgeW91IGRvCiAgICAgICBub3Qgc3BlY2lmaWNhbGx5IHNldCB0aGlzIHZhcmlhYmxlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHByb2Nlc3MKICAgICAgIHBhc3NlcyBhbmQgdXNlcyAiYWxsIiBmb3IgdGhlIHRhcmdldCBkdXJpbmcgdGhlIFUtQm9vdCBidWlsZGluZwogICAgICAgcHJvY2Vzcy4KIAotICAgOnRlcm06YFVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVGAKKyAgIFVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVAogICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBvcHRpb25zIHRoYXQsIGlmIHJlcG9ydGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0CiAgICAgICBhcyBiZWluZyBpbnZhbGlkLCBzaG91bGQgbm90IGdlbmVyYXRlIGEgd2FybmluZyBkdXJpbmcgdGhlCiAgICAgICA6cmVmOmByZWYtdGFza3MtY29uZmlndXJlYCB0YXNrLiBOb3JtYWxseSwgaW52YWxpZApAQCAtODYxOSw3ICs4NjE5LDcgQEAKICAgICAgIDpyZWY6YGluc2FuZSA8cmVmLWNsYXNzZXMtaW5zYW5lPmAgY2xhc3MgYW5kIGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUKICAgICAgIHJlY2lwZSBpbmhlcml0cyB0aGUgOnJlZjpgYXV0b3Rvb2xzIDxyZWYtY2xhc3Nlcy1hdXRvdG9vbHM+YCBjbGFzcy4KIAotICAgOnRlcm06YFVQREFURVJDUE5gCisgICBVUERBVEVSQ1BOCiAgICAgICBGb3IgcmVjaXBlcyBpbmhlcml0aW5nIHRoZQogICAgICAgOnJlZjpgdXBkYXRlLXJjLmQgPHJlZi1jbGFzc2VzLXVwZGF0ZS1yYy5kPmAgY2xhc3MsIGBgVVBEQVRFUkNQTmBgCiAgICAgICBzcGVjaWZpZXMgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgaW5pdHNjcmlwdCB0aGF0IGlzIGVuYWJsZWQuCkBAIC04NjI4LDcgKzg2MjgsNyBAQAogICAgICAgaW5zdGFsbCBpbml0c2NyaXB0cyBwYWNrYWdlIHRoZW0gaW4gdGhlIG1haW4gcGFja2FnZSBmb3IgdGhlIHJlY2lwZSwKICAgICAgIHlvdSByYXJlbHkgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZSBpbiBpbmRpdmlkdWFsIHJlY2lwZXMuCiAKLSAgIDp0ZXJtOmBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWGAKKyAgIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYCiAgICAgICBZb3UgY2FuIHBlcmZvcm0gYSBwZXItcmVjaXBlIGNoZWNrIGZvciB3aGF0IHRoZSBsYXRlc3QgdXBzdHJlYW0KICAgICAgIHNvdXJjZSBjb2RlIHZlcnNpb24gaXMgYnkgY2FsbGluZyBgYGJpdGJha2UgLWMgY2hlY2twa2dgYCByZWNpcGUuIElmCiAgICAgICB0aGUgcmVjaXBlIHNvdXJjZSBjb2RlIGlzIHByb3ZpZGVkIGZyb20gR2l0IHJlcG9zaXRvcmllcywgdGhlCkBAIC04NjQyLDcgKzg2NDIsNyBAQAogCiAgICAgICAgICBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJnaXRfdGFnX3JlZ2V4IgogCi0gICA6dGVybTpgVVBTVFJFQU1fQ0hFQ0tfUkVHRVhgCisgICBVUFNUUkVBTV9DSEVDS19SRUdFWAogICAgICAgVXNlIHRoZSBgYFVQU1RSRUFNX0NIRUNLX1JFR0VYYGAgdmFyaWFibGUgdG8gc3BlY2lmeSBhIGRpZmZlcmVudAogICAgICAgcmVndWxhciBleHByZXNzaW9uIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb25lIHdoZW4gdGhlIHBhY2thZ2UKICAgICAgIGNoZWNraW5nIHN5c3RlbSBpcyBwYXJzaW5nIHRoZSBwYWdlIGZvdW5kIHVzaW5nCkBAIC04NjUxLDcgKzg2NTEsNyBAQAogCiAgICAgICAgICBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwYWNrYWdlX3JlZ2V4IgogCi0gICA6dGVybTpgVVBTVFJFQU1fQ0hFQ0tfVVJJYAorICAgVVBTVFJFQU1fQ0hFQ0tfVVJJCiAgICAgICBZb3UgY2FuIHBlcmZvcm0gYSBwZXItcmVjaXBlIGNoZWNrIGZvciB3aGF0IHRoZSBsYXRlc3QgdXBzdHJlYW0KICAgICAgIHNvdXJjZSBjb2RlIHZlcnNpb24gaXMgYnkgY2FsbGluZyBgYGJpdGJha2UgLWMgY2hlY2twa2dgYCByZWNpcGUuIElmCiAgICAgICB0aGUgc291cmNlIGNvZGUgaXMgcHJvdmlkZWQgZnJvbSB0YXJiYWxscywgdGhlIGxhdGVzdCB2ZXJzaW9uIGlzCkBAIC04NjYzLDcgKzg2NjMsNyBAQAogCiAgICAgICAgICBVUFNUUkVBTV9DSEVDS19VUkkgPSAicmVjaXBlX3VybCIKIAotICAgOnRlcm06YFVTRV9ERVZGU2AKKyAgIFVTRV9ERVZGUwogICAgICAgRGV0ZXJtaW5lcyBpZiBgYGRldnRtcGZzYGAgaXMgdXNlZCBmb3IgYGAvZGV2YGAgcG9wdWxhdGlvbi4gVGhlCiAgICAgICBkZWZhdWx0IHZhbHVlIHVzZWQgZm9yIGBgVVNFX0RFVkZTYGAgaXMgIjEiIHdoZW4gbm8gdmFsdWUgaXMKICAgICAgIHNwZWNpZmljYWxseSBzZXQuIFR5cGljYWxseSwgeW91IHdvdWxkIHNldCBgYFVTRV9ERVZGU2BgIHRvICIwIiBmb3IgYQpAQCAtODY3Myw3ICs4NjczLDcgQEAKICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvCiAgICAgICB1c2UgdGhpcyB2YXJpYWJsZS4KIAotICAgOnRlcm06YFVTRV9WVGAKKyAgIFVTRV9WVAogICAgICAgV2hlbiB1c2luZwogICAgICAgOnJlZjpgU3lzVmluaXQgPG5ldy1yZWNpcGUtZW5hYmxpbmctc3lzdGVtLXNlcnZpY2VzPmAsCiAgICAgICBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRvIHJ1biBhCkBAIC04Njg3LDcgKzg2ODcsNyBAQAogICAgICAgZGlzcGxheSBhdHRhY2hlZCBhbmQgdGhlcmVmb3JlIGRvIG5vdCBuZWVkIHZpcnR1YWwgdGVybWluYWwKICAgICAgIGZ1bmN0aW9uYWxpdHkuCiAKLSAgIDp0ZXJtOmBVU0VSX0NMQVNTRVNgCisgICBVU0VSX0NMQVNTRVMKICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIHRvIGdsb2JhbGx5IGluaGVyaXQuIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgYnkgdGhlCiAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGVuYWJsZSBleHRyYSBmZWF0dXJlcyAoZS5nLgogICAgICAgYGBidWlsZHN0YXRzYGAsIGBgaW1hZ2UtbWtsaWJzYGAsIGFuZCBzbyBmb3J0aCkuCkBAIC04NzAwLDcgKzg3MDAsNyBAQAogICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAgICAgYGBtZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZWBgIGluIHRoZSA6dGVybTpgU291cmNlIERpcmVjdG9yeWAuCiAKLSAgIDp0ZXJtOmBVU0VSQUREX0VSUk9SX0RZTkFNSUNgCisgICBVU0VSQUREX0VSUk9SX0RZTkFNSUMKICAgICAgIElmIHNldCB0byBgYGVycm9yYGAsIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBwcm9kdWNlCiAgICAgICBhbiBlcnJvciBpZiB0aGUgdXNlciBpZGVudGlmaWNhdGlvbiAoYGB1aWRgYCkgYW5kIGdyb3VwCiAgICAgICBpZGVudGlmaWNhdGlvbiAoYGBnaWRgYCkgdmFsdWVzIGFyZSBub3QgZGVmaW5lZCBpbiBhbnkgb2YgdGhlIGZpbGVzCkBAIC04NzQ1LDcgKzg3NDUsNyBAQAogICAgICAgICAgVGhpcyBzYXZlcyB5b3UgZnJvbSBoYXZpbmcgdG8gYWRkIHN0YXRpYyBJRHMgZm9yIHJlY2lwZXMgdGhhdCB5b3UKICAgICAgICAgIGtub3cgd2lsbCBuZXZlciBiZSBidWlsdC4KIAotICAgOnRlcm06YFVTRVJBRERfR0lEX1RBQkxFU2AKKyAgIFVTRVJBRERfR0lEX1RBQkxFUwogICAgICAgU3BlY2lmaWVzIGEgcGFzc3dvcmQgZmlsZSB0byB1c2UgZm9yIG9idGFpbmluZyBzdGF0aWMgZ3JvdXAKICAgICAgIGlkZW50aWZpY2F0aW9uIChgYGdpZGBgKSB2YWx1ZXMgd2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgYWRkcyBhIGdyb3VwIHRvIHRoZSBzeXN0ZW0gZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uLgpAQCAtODc2OCw3ICs4NzY4LDcgQEAKICAgICAgICAgIGdpZAogICAgICAgICAgdmFsdWVzLgogCi0gICA6dGVybTpgVVNFUkFERF9QQUNLQUdFU2AKKyAgIFVTRVJBRERfUEFDS0FHRVMKICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgdXNlcmFkZCA8cmVmLWNsYXNzZXMtdXNlcmFkZD5gIGNsYXNzLAogICAgICAgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIGluZGl2aWR1YWwgcGFja2FnZXMgd2l0aGluIHRoZSByZWNpcGUKICAgICAgIHRoYXQgcmVxdWlyZSB1c2VycyBhbmQvb3IgZ3JvdXBzIHRvIGJlIGFkZGVkLgpAQCAtODc5Miw3ICs4NzkyLDcgQEAKICAgICAgICAgIEdST1VQTUVNU19QQVJBTQogICAgICAgICAgdmFyaWFibGVzLgogCi0gICA6dGVybTpgVVNFUkFERF9QQVJBTWAKKyAgIFVTRVJBRERfUEFSQU0KICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUgOnJlZjpgdXNlcmFkZCA8cmVmLWNsYXNzZXMtdXNlcmFkZD5gIGNsYXNzLAogICAgICAgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgZm9yIGEgcGFja2FnZSB3aGF0IHBhcmFtZXRlcnMgc2hvdWxkIHBhc3MgdG8KICAgICAgIHRoZSBgYHVzZXJhZGRgYCBjb21tYW5kIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUKQEAgLTg4MDksNyArODgwOSw3IEBACiAgICAgICBzdGFuZGFyZCBMaW51eCBzaGVsbCBjb21tYW5kIGBgdXNlcmFkZGBgLCBzZWUKICAgICAgIGh0dHA6Ly9saW51eC5kaWUubmV0L21hbi84L3VzZXJhZGQuCiAKLSAgIDp0ZXJtOmBVU0VSQUREX1VJRF9UQUJMRVNgCisgICBVU0VSQUREX1VJRF9UQUJMRVMKICAgICAgIFNwZWNpZmllcyBhIHBhc3N3b3JkIGZpbGUgdG8gdXNlIGZvciBvYnRhaW5pbmcgc3RhdGljIHVzZXIKICAgICAgIGlkZW50aWZpY2F0aW9uIChgYHVpZGBgKSB2YWx1ZXMgd2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgYWRkcyBhIHVzZXIgdG8gdGhlIHN5c3RlbSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24uCkBAIC04ODMxLDcgKzg4MzEsNyBAQAogICAgICAgICAgdWlkCiAgICAgICAgICB2YWx1ZXMuCiAKLSAgIDp0ZXJtOmBVU0VSQURERVhURU5TSU9OYAorICAgVVNFUkFEREVYVEVOU0lPTgogICAgICAgV2hlbiBzZXQgdG8gInVzZXJhZGQtc3RhdGljaWRzIiwgY2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCiAgICAgICB0byBiYXNlIGFsbCB1c2VyIGFuZCBncm91cCBhZGRpdGlvbnMgb24gYSBzdGF0aWMgYGBwYXNzd2RgYCBhbmQKICAgICAgIGBgZ3JvdXBgYCBmaWxlcyBmb3VuZCBpbiA6dGVybTpgQkJQQVRIYC4KQEAgLTg4NTcsNyArODg1Nyw3IEBACiAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBzaG91bGQgYWxzbyBzZXQgdGhlCiAgICAgICA6dGVybTpgVVNFUkFERF9FUlJPUl9EWU5BTUlDYCB2YXJpYWJsZS4KIAotICAgOnRlcm06YFZPTEFUSUxFX0xPR19ESVJgCisgICBWT0xBVElMRV9MT0dfRElSCiAgICAgICBTcGVjaWZpZXMgdGhlIHBlcnNpc3RlbmNlIG9mIHRoZSB0YXJnZXQncyBgYC92YXIvbG9nYGAgZGlyZWN0b3J5LAogICAgICAgd2hpY2ggaXMgdXNlZCB0byBob3VzZSBwb3N0aW5zdGFsbCB0YXJnZXQgbG9nIGZpbGVzLgogCkBAIC04ODY1LDIzICs4ODY1LDE0IEBACiAgICAgICBmaWxlIGlzIG5vdCBwZXJzaXN0ZW50LiBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgc2V0dGluZyBieSBzZXR0aW5nIHRoZQogICAgICAgdmFyaWFibGUgdG8gIm5vIiB0byBtYWtlIHRoZSBsb2cgZGlyZWN0b3J5IHBlcnNpc3RlbnQuCiAKLSAgIDp0ZXJtOmBXQVJOX1FBYAorICAgV0FSTl9RQQogICAgICAgU3BlY2lmaWVzIHRoZSBxdWFsaXR5IGFzc3VyYW5jZSBjaGVja3Mgd2hvc2UgZmFpbHVyZXMgYXJlIHJlcG9ydGVkIGFzCiAgICAgICB3YXJuaW5ncyBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4gWW91IHNldCB0aGlzIHZhcmlhYmxlIGluCiAgICAgICB5b3VyIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUuIEZvciBhIGxpc3Qgb2YgdGhlIGNoZWNrcyB5b3UKICAgICAgIGNhbiBjb250cm9sIHdpdGggdGhpcyB2YXJpYWJsZSwgc2VlIHRoZQogICAgICAgIjpyZWY6YGluc2FuZS5iYmNsYXNzIDxyZWYtY2xhc3Nlcy1pbnNhbmU+YCIgc2VjdGlvbi4KIAotICAgOnRlcm06YFdLU19GSUxFYAotICAgICAgU3BlY2lmaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgV2ljIGtpY2tzdGFydCBmaWxlIHRoYXQgaXMgdXNlZCBieSB0aGUKLSAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgcGFydGl0aW9uZWQgaW1hZ2UKLSAgICAgIChpbWFnZVwgYGAud2ljYGApLiBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIHBhcnRpdGlvbmVkCi0gICAgICBpbWFnZSwgc2VlIHRoZQotICAgICAgIjpyZWY6YGRldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3M6Y3JlYXRpbmcgcGFydGl0aW9uZWQgaW1hZ2VzIHVzaW5nIHdpY2AiCi0gICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4gRm9yIGRldGFpbHMgb24KLSAgICAgIHRoZSBraWNrc3RhcnQgZmlsZSBmb3JtYXQsIHNlZSB0aGUgIjpkb2M6YC4uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydGAiIENoYXB0ZXIuCi0KLSAgIDp0ZXJtOmBXS1NfRklMRV9ERVBFTkRTYAorICAgV0tTX0ZJTEVfREVQRU5EUwogICAgICAgV2hlbiBwbGFjZWQgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB5b3VyIGltYWdlLCB0aGlzIHZhcmlhYmxlIGxpc3RzCiAgICAgICBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4gVGhlIGBgV0tTX0ZJTEVfREVQRU5EU2BgIHZhcmlhYmxlIGlzIG9ubHkKICAgICAgIGFwcGxpY2FibGUgd2hlbiBXaWMgaW1hZ2VzIGFyZSBhY3RpdmUgKGkuZS4gd2hlbgpAQCAtODkwNiw3ICs4ODk3LDE2IEBACiAgICAgICBwcmV2aW91cyBleGFtcGxlLCBzb21lLW5hdGl2ZS10b29sIHdvdWxkIGJlIHJlcGxhY2VkIHdpdGggYW4gYWN0dWFsCiAgICAgICBuYXRpdmUgdG9vbCBvbiB3aGljaCB0aGUgYnVpbGQgd291bGQgZGVwZW5kLgogCi0gICA6dGVybTpgV09SS0RJUmAKKyAgIFdLU19GSUxFCisgICAgICBTcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBXaWMga2lja3N0YXJ0IGZpbGUgdGhhdCBpcyB1c2VkIGJ5IHRoZQorICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSBwYXJ0aXRpb25lZCBpbWFnZQorICAgICAgKGltYWdlXCBgYC53aWNgYCkuIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGEgcGFydGl0aW9uZWQKKyAgICAgIGltYWdlLCBzZWUgdGhlCisgICAgICAiOnJlZjpgZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrczpjcmVhdGluZyBwYXJ0aXRpb25lZCBpbWFnZXMgdXNpbmcgd2ljYCIKKyAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLiBGb3IgZGV0YWlscyBvbgorICAgICAgdGhlIGtpY2tzdGFydCBmaWxlIGZvcm1hdCwgc2VlIHRoZSAiOmRvYzpgLi4vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0YCIgQ2hhcHRlci4KKworICAgV09SS0RJUgogICAgICAgVGhlIHBhdGhuYW1lIG9mIHRoZSB3b3JrIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICBzeXN0ZW0gYnVpbGRzIGEgcmVjaXBlLiBUaGlzIGRpcmVjdG9yeSBpcyBsb2NhdGVkIHdpdGhpbiB0aGUKICAgICAgIDp0ZXJtOmBUTVBESVJgIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYW5kIGlzIHNwZWNpZmljIHRvCkBAIC04OTQ2LDcgKzg5NDYsNyBAQAogCiAgICAgICAgICBwb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9mb28vMS4zLjAtcjAKIAotICAgOnRlcm06YFhTRVJWRVJgCisgICBYU0VSVkVSCiAgICAgICBTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB0byBwcm92aWRlIGFuIFgKICAgICAgIHNlcnZlciBhbmQgZHJpdmVycyBmb3IgdGhlIGN1cnJlbnQgbWFjaGluZSwgYXNzdW1pbmcgeW91ciBpbWFnZQogICAgICAgZGlyZWN0bHkgaW5jbHVkZXMgYGBwYWNrYWdlZ3JvdXAtY29yZS14MTEteHNlcnZlcmBgIG9yLCBwZXJoYXBzCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MDY0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbApAQCAtMCwwICsxLDE2ODc3IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPCEtLSBEdW1teSBjaGFwdGVyIC0tPgorPGNoYXB0ZXIgaWQ9J3JlZi12YXJpYWJsZXMtZ2xvcyc+CisKKzx0aXRsZT5WYXJpYWJsZXMgR2xvc3Nhcnk8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGlzIGNoYXB0ZXIgbGlzdHMgY29tbW9uIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCBnaXZlcyBhbiBvdmVydmlldworICAgIG9mIHRoZWlyIGZ1bmN0aW9uIGFuZCBjb250ZW50cy4KKzwvcGFyYT4KKworPGdsb3NzYXJ5IGlkPSdyZWYtdmFyaWFibGVzLWdsb3NzYXJ5Jz4KKworCisgICAgPHBhcmE+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFCSUVYVEVOU0lPTic+QTwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQic+QjwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ0FDSEUnPkM8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPkQ8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVGSV9QUk9WSURFUic+RTwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRkVBVFVSRV9QQUNLQUdFUyc+RjwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItR0NDUElFJz5HPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1IT01FUEFHRSc+SDwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSUNFQ0NfRElTQUJMRUQnPkk8L2xpbms+Cis8IS0tICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWdsb3NzYXJ5LWonPko8L2xpbms+IC0tPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LQVJDSCc+SzwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTEFCRUxTJz5MPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NPC9saW5rPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OQVRJVkVMU0JTVFJJTkcnPk48L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU9CSkNPUFknPk88L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVAnPlA8L2xpbms+Cis8IS0tICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWdsb3NzYXJ5LXEnPlE8L2xpbms+IC0tPgorICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SQU5MSUInPlI8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPlM8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVQnPlQ8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVCT09UX0NPTkZJRyc+VTwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVk9MQVRJTEVfTE9HX0RJUic+VjwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV0FSTl9RQSc+VzwvbGluaz4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItWFNFUlZFUic+WDwvbGluaz4KKzwhLS0gICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItZ2xvc3NhcnkteSc+WTwvbGluaz4gLS0+Cis8IS0tICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWdsb3NzYXJ5LXonPlo8L2xpbms+LS0+CisgICAgPC9wYXJhPgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktYSc+PHRpdGxlPkE8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQUJJRVhURU5TSU9OJz48Z2xvc3N0ZXJtPkFCSUVYVEVOU0lPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQUJJRVhURU5TSU9OW2RvY10gPSAiRXh0ZW5zaW9uIHRvIHRoZSBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIGZpZWxkIG9mIHRoZSBHTlUgY2Fub25pY2FsIGFyY2hpdGVjdHVyZSBuYW1lIChlLmcuICJlYWJpIikuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24gdG8gdGhlIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkKKyAgICAgICAgICAgICAgICAgICAgZmllbGQgb2YgdGhlIEdOVSBjYW5vbmljYWwgYXJjaGl0ZWN0dXJlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gImVhYmkiKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBBQkkgZXh0ZW5zaW9ucyBhcmUgc2V0IGluIHRoZSBtYWNoaW5lIGluY2x1ZGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybS5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgIGZpbGUgc2V0cyB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbjoKKyAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFCSUVYVEVOU0lPTiA9ICJlYWJpIgorICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BTExPV19FTVBUWSc+PGdsb3NzdGVybT5BTExPV19FTVBUWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQUxMT1dfRU1QVFlbZG9jXSA9ICJTcGVjaWZpZXMgd2hldGhlciB0byBwcm9kdWNlIGFuIG91dHB1dCBwYWNrYWdlIGV2ZW4gaWYgaXQgaXMgZW1wdHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHByb2R1Y2UgYW4gb3V0cHV0IHBhY2thZ2UgZXZlbiBpZiBpdCBpcworICAgICAgICAgICAgICAgICAgIGVtcHR5LgorICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIEJpdEJha2UgZG9lcyBub3QgcHJvZHVjZSBlbXB0eSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGNhdXNlIGlzc3VlcyB3aGVuIHRoZXJlIGlzIGFuCisgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4gb3IKKyAgICAgICAgICAgICAgICAgICBzb21lIG90aGVyIGhhcmQgcnVudGltZSByZXF1aXJlbWVudCBvbiB0aGUgZXhpc3RlbmNlIG9mIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgIExpa2UgYWxsIHBhY2thZ2UtY29udHJvbGxpbmcgdmFyaWFibGVzLCB5b3UgbXVzdCBhbHdheXMgdXNlIHRoZW0gaW4KKyAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIGEgcGFja2FnZSBuYW1lIG92ZXJyaWRlLCBhcyBpbjoKKyAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisgICAgIEFMTE9XX0VNUFRZXyR7UE59LWRldiA9ICIxIgorICAgICBBTExPV19FTVBUWV8ke1BOfS1zdGF0aWNkZXYgPSAiMSIKKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQUxURVJOQVRJVkUnPjxnbG9zc3Rlcm0+QUxURVJOQVRJVkU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFMVEVSTkFUSVZFW2RvY10gPSAiTGlzdHMgY29tbWFuZHMgaW4gYSBwYWNrYWdlIHRoYXQgbmVlZCBhbiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtaW5nIHNjaGVtZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIGNvbW1hbmRzIGluIGEgcGFja2FnZSB0aGF0IG5lZWQgYW4gYWx0ZXJuYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgYmluYXJ5IG5hbWluZyBzY2hlbWUuCisgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB0aGUgc2FtZSBjb21tYW5kIGlzIHByb3ZpZGVkIGluIG11bHRpcGxlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHRoaXMgb2NjdXJzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0gdG8gY3JlYXRlIGEgZGlmZmVyZW50IGJpbmFyeQorICAgICAgICAgICAgICAgICAgICBuYW1pbmcgc2NoZW1lIHNvIHRoZSBjb21tYW5kcyBjYW4gY28tZXhpc3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgdmFyaWFibGUsIGxpc3Qgb3V0IHRoZSBwYWNrYWdlJ3MgY29tbWFuZHMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbHNvIGV4aXN0IGFzIHBhcnQgb2YgYW5vdGhlciBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIDxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT4gcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBoYXMgZm91ciBjb21tYW5kcyB0aGF0IGFsc28gZXhpc3QgYXMgcGFydCBvZiBhbm90aGVyCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UsIHlvdSBpZGVudGlmeSB0aGVtIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQUxURVJOQVRJVkVfYnVzeWJveCA9ICJzaCBzZWQgdGVzdCBicmFja2V0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy11cGRhdGUtYWx0ZXJuYXRpdmVzJz48ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFMVEVSTkFUSVZFX0xJTktfTkFNRSc+PGdsb3NzdGVybT5BTFRFUk5BVElWRV9MSU5LX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtkb2NdID0gIlVzZWQgYnkgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0gdG8gbWFwIGR1cGxpY2F0ZWQgY29tbWFuZHMgdG8gYWN0dWFsIGxvY2F0aW9ucy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgYnkgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0gdG8gbWFwIGR1cGxpY2F0ZWQgY29tbWFuZHMKKyAgICAgICAgICAgICAgICAgICAgdG8gYWN0dWFsIGxvY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSA8ZmlsZW5hbWU+YnJhY2tldDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgdGhlIDxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT4gcGFja2FnZSBpcworICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIHRocm91Z2ggYW5vdGhlciBwYWNrYWdlLCB5b3UgbXVzdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BTFRFUk5BVElWRV9MSU5LX05BTUU8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoZSBhY3R1YWwgbG9jYXRpb246CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQUxURVJOQVRJVkVfTElOS19OQU1FW2JyYWNrZXRdID0gIi91c3IvYmluL1siCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgYmluYXJ5IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJyYWNrZXQ8L2ZpbGVuYW1lPiBjb21tYW5kIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT4pIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT4gcGFja2FnZSByZXNpZGVzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2Jpbi88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+QUxURVJOQVRJVkVfTElOS19OQU1FPC9maWxlbmFtZT4gaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkLCBpdCBkZWZhdWx0cyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7YmluZGlyfS88cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVwZGF0ZS1hbHRlcm5hdGl2ZXMnPjxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQUxURVJOQVRJVkVfUFJJT1JJVFknPjxnbG9zc3Rlcm0+QUxURVJOQVRJVkVfUFJJT1JJVFk8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFMVEVSTkFUSVZFX1BSSU9SSVRZW2RvY10gPSAiVXNlZCBieSB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSB0byBjcmVhdGUgZGVmYXVsdCBwcmlvcml0aWVzIGZvciBkdXBsaWNhdGVkIGNvbW1hbmRzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVXNlZCBieSB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSB0byBjcmVhdGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBwcmlvcml0aWVzIGZvciBkdXBsaWNhdGVkIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgdmFyaWFibGUgdG8gY3JlYXRlIGEgc2luZ2xlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgY29tbWFuZCBuYW1lIG9yIHBhY2thZ2UsIGEgZGVmYXVsdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZHVwbGljYXRlZCBjb21tYW5kcyByZWdhcmRsZXNzIG9mIHRoZSBwYWNrYWdlLCBvcgorICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZm9yIHNwZWNpZmljIGNvbW1hbmRzIHRpZWQgdG8gcGFydGljdWxhciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIGF2YWlsYWJsZSBzeW50YXggZm9ybXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiPHJlcGxhY2VhYmxlPnByaW9yaXR5PC9yZXBsYWNlYWJsZT4iCisgICAgIEFMVEVSTkFUSVZFX1BSSU9SSVRZWzxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT5dID0gIjxyZXBsYWNlYWJsZT5wcmlvcml0eTwvcmVwbGFjZWFibGU+IgorICAgICBBTFRFUk5BVElWRV9QUklPUklUWV88cmVwbGFjZWFibGU+cGtnPC9yZXBsYWNlYWJsZT5bPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPl0gPSAiPHJlcGxhY2VhYmxlPnByaW9yaXR5PC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVwZGF0ZS1hbHRlcm5hdGl2ZXMnPjxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQUxURVJOQVRJVkVfVEFSR0VUJz48Z2xvc3N0ZXJtPkFMVEVSTkFUSVZFX1RBUkdFVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQUxURVJOQVRJVkVfVEFSR0VUW2RvY10gPSAiVXNlZCBieSB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSB0byBjcmVhdGUgZGVmYXVsdCBsaW5rIGxvY2F0aW9ucyBmb3IgZHVwbGljYXRlZCBjb21tYW5kcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgYnkgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0gdG8gY3JlYXRlIGRlZmF1bHQgbGluaworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMgZm9yIGR1cGxpY2F0ZWQgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSB2YXJpYWJsZSB0byBjcmVhdGUgYSBzaW5nbGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiBmb3IgYWxsIGR1cGxpY2F0ZWQgY29tbWFuZHMgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBuYW1lIG9yIHBhY2thZ2UsIGEgZGVmYXVsdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZHVwbGljYXRlZCBjb21tYW5kcyByZWdhcmRsZXNzIG9mIHRoZSBwYWNrYWdlLCBvcgorICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZm9yIHNwZWNpZmljIGNvbW1hbmRzIHRpZWQgdG8gcGFydGljdWxhciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIGF2YWlsYWJsZSBzeW50YXggZm9ybXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQUxURVJOQVRJVkVfVEFSR0VUID0gIjxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiIKKyAgICAgQUxURVJOQVRJVkVfVEFSR0VUWzxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT5dID0gIjxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiIKKyAgICAgQUxURVJOQVRJVkVfVEFSR0VUXzxyZXBsYWNlYWJsZT5wa2c8L3JlcGxhY2VhYmxlPls8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+XSA9ICI8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+QUxURVJOQVRJVkVfVEFSR0VUPC9maWxlbmFtZT4gaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCwgaXQgaW5oZXJpdHMgdGhlIHZhbHVlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFMVEVSTkFUSVZFX0xJTktfTkFNRSc+PGZpbGVuYW1lPkFMVEVSTkFUSVZFX0xJTktfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+QUxURVJOQVRJVkVfTElOS19OQU1FPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkFMVEVSTkFUSVZFX1RBUkdFVDwvZmlsZW5hbWU+IGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1lLCB0aGUgdGFyZ2V0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BTFRFUk5BVElWRV9UQVJHRVQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyAiPGZpbGVuYW1lPi57QlBOfTwvZmlsZW5hbWU+IiBhcHBlbmRlZCB0byBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgaWYgdGhlIGZpbGUgcmVmZXJlbmNlZCBoYXMgbm90IGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkLCB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSB3aWxsIHJlbmFtZSBpdCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2b2lkIHRoZSBuZWVkIHRvIHJlbmFtZSBhbHRlcm5hdGl2ZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIHdoaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluaW5nIHN1cHBvcnQgZm9yIHRoZSBjb21tYW5kIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXBkYXRlLWFsdGVybmF0aXZlcyc+PGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BUFBFTkQnPjxnbG9zc3Rlcm0+QVBQRU5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBUFBFTkRbZG9jXSA9ICJBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciB0YXJnZXQgc3BlY2lmaWVkIHVzaW5nIExBQkVMUy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFuIG92ZXJyaWRlIGxpc3Qgb2YgYXBwZW5kIHN0cmluZ3MgZm9yIGVhY2ggdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MQUJFTFMnPjxmaWxlbmFtZT5MQUJFTFM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZ3J1Yi1lZmknPjxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSBpcyB1c2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFSJz48Z2xvc3N0ZXJtPkFSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBUltkb2NdID0gIk1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnYXInLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHVzZWQgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFSQ0hJVkVSX01PREUnPjxnbG9zc3Rlcm0+QVJDSElWRVJfTU9ERTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQVJDSElWRVJfTU9ERVtkb2NdID0gIkNvbnRyb2xzIGFyY2hpdmUgY3JlYXRpb24gdXNlZCB3aGVuIHJlbGVhc2luZyBzb3VyY2UgZmlsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXJjaGl2ZXInPjxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB1c2VkIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICBhIHJlbGVhc2VkIGFyY2hpdmUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgdG8gY3JlYXRlIGFyY2hpdmVzIG9mIHBhdGNoZWQKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLCBvcmlnaW5hbCBzb3VyY2UsIGNvbmZpZ3VyZWQgc291cmNlLCBhbmQgc28gZm9ydGgKKyAgICAgICAgICAgICAgICAgICAgYnkgZW1wbG95aW5nIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgZmxhZ3MgKHZhcmZsYWdzKToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiICAgICAgICAgICAgICAgICAjIFVzZXMgb3JpZ2luYWwgKHVucGFja2VkKSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaWxlcy4KKworICAgICBBUkNISVZFUl9NT0RFW3NyY10gPSAicGF0Y2hlZCIgICAgICAgICAgICAgICAgICAjIFVzZXMgcGF0Y2hlZCBzb3VyY2UgZmlsZXMuIFRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZGVmYXVsdC4KKworICAgICBBUkNISVZFUl9NT0RFW3NyY10gPSAiY29uZmlndXJlZCIgICAgICAgICAgICAgICAjIFVzZXMgY29uZmlndXJlZCBzb3VyY2UgZmlsZXMuCisKKyAgICAgQVJDSElWRVJfTU9ERVtkaWZmXSA9ICIxIiAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VzIHBhdGNoZXMgYmV0d2VlbiBkb191bnBhY2sgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9fcGF0Y2guCisKKyAgICAgQVJDSElWRVJfTU9ERVtkaWZmLWV4Y2x1ZGVdID89ICI8cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT4gLi4uIiAgIyBMaXN0cyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBleGNsdWRlIGZyb20gZGlmZi4KKworICAgICBBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA9ICIxIiAgICAgICAgICAgICAgICAgICAjIFVzZXMgZW52aXJvbm1lbnQgZGF0YS4KKworICAgICBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSIgICAgICAgICAgICAgICAgICAgICAjIFVzZXMgcmVjaXBlIGFuZCBpbmNsdWRlIGZpbGVzLgorCisgICAgIEFSQ0hJVkVSX01PREVbc3JwbV0gPSAiMSIgICAgICAgICAgICAgICAgICAgICAgICMgVXNlcyBSUE0gcGFja2FnZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoZSB2YXJpYWJsZSB3b3Jrcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BUyc+PGdsb3NzdGVybT5BUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQVNbZG9jXSA9ICJNaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIGFzc2VtYmxlci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIE1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIG5lZWRlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BU1NVTUVfUFJPVklERUQnPjxnbG9zc3Rlcm0+QVNTVU1FX1BST1ZJREVEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBU1NVTUVfUFJPVklERURbZG9jXSA9ICJMaXN0cyByZWNpcGUgbmFtZXMgKFBOIHZhbHVlcykgQml0QmFrZSBkb2VzIG5vdCBhdHRlbXB0IHRvIGJ1aWxkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgcmVjaXBlIG5hbWVzCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMpIEJpdEJha2UgZG9lcyBub3QgYXR0ZW1wdCB0byBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGVhZCwgQml0QmFrZSBhc3N1bWVzIHRoZXNlIHJlY2lwZXMgaGF2ZSBhbHJlYWR5IGJlZW4KKyAgICAgICAgICAgICAgICAgICAgYnVpbHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIE9wZW5FbWJlZGRlZC1Db3JlLCA8ZmlsZW5hbWU+QVNTVU1FX1BST1ZJREVEPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbW9zdGx5IHNwZWNpZmllcyBuYXRpdmUgdG9vbHMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIDxmaWxlbmFtZT5naXQtbmF0aXZlPC9maWxlbmFtZT4sIHdoaWNoIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLCBhbGxvd3MgZm9yIHRoZSBHaXQgYmluYXJ5IGZyb20gdGhlIGhvc3QgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgdXNlZCByYXRoZXIgdGhhbiBidWlsZGluZyA8ZmlsZW5hbWU+Z2l0LW5hdGl2ZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFTU1VNRV9TSExJQlMnPjxnbG9zc3Rlcm0+QVNTVU1FX1NITElCUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQVNTVU1FX1NITElCU1tkb2NdID0gIlByb3ZpZGVzIGFkZGl0aW9uYWwgc2hsaWJzIHByb3ZpZGVyIG1hcHBpbmcgaW5mb3JtYXRpb24sIHdoaWNoIGFkZHMgdG8gb3Igb3ZlcndyaXRlcyB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYXV0b21hdGljYWxseSBieSB0aGUgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgYWRkaXRpb25hbCA8ZmlsZW5hbWU+c2hsaWJzPC9maWxlbmFtZT4gcHJvdmlkZXIKKyAgICAgICAgICAgICAgICAgICAgbWFwcGluZyBpbmZvcm1hdGlvbiwgd2hpY2ggYWRkcyB0byBvciBvdmVyd3JpdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBwcm92aWRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIG11bHRpcGxlIGVudHJpZXMgdXNpbmcgc3BhY2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB1c2UgdGhlIGZvbGxvd2luZyBmb3JtIHRvIGFkZCBhbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2hsaWI8L2ZpbGVuYW1lPiBwcm92aWRlciBvZgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c2hsaWJuYW1lPC9yZXBsYWNlYWJsZT4gaW4KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT4gd2l0aCB0aGUgb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+c2hsaWJuYW1lOnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT5bXzxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT5dCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYWRkcyBhIHNoYXJlZCBsaWJyYXJ5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJFR0wuc28uMTwvZmlsZW5hbWU+IGFzIGJlaW5nIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bGliZWdsLWltcGxlbWVudGF0aW9uPC9maWxlbmFtZT4gcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBBU1NVTUVfU0hMSUJTID0gImxpYkVHTC5zby4xOmxpYmVnbC1pbXBsZW1lbnRhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFVVEhPUic+PGdsb3NzdGVybT5BVVRIT1I8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFVVEhPUltkb2NdID0gIkVtYWlsIGFkZHJlc3MgdXNlZCB0byBjb250YWN0IHRoZSBvcmlnaW5hbCBhdXRob3Igb3IgYXV0aG9ycyBpbiBvcmRlciB0byBzZW5kIHBhdGNoZXMgYW5kIGZvcndhcmQgYnVncy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBlbWFpbCBhZGRyZXNzIHVzZWQgdG8gY29udGFjdCB0aGUgb3JpZ2luYWwgYXV0aG9yCisgICAgICAgICAgICAgICAgICAgIG9yIGF1dGhvcnMgaW4gb3JkZXIgdG8gc2VuZCBwYXRjaGVzIGFuZCBmb3J3YXJkIGJ1Z3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQVVUT19MSUJOQU1FX1BLR1MnPjxnbG9zc3Rlcm0+QVVUT19MSUJOQU1FX1BLR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFVVE9fTElCTkFNRV9QS0dTW2RvY10gPSAiU3BlY2lmaWVzIHdoaWNoIHBhY2thZ2VzIHNob3VsZCBiZSBjaGVja2VkIGZvciBsaWJyYXJpZXMgYW5kIHJlbmFtZWQgYWNjb3JkaW5nIHRvIERlYmlhbiBsaWJyYXJ5IHBhY2thZ2UgbmFtaW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGlzIGluaGVyaXRlZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BVVRPX0xJQk5BTUVfUEtHUzwvZmlsZW5hbWU+IHNwZWNpZmllcyB3aGljaAorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBzaG91bGQgYmUgY2hlY2tlZCBmb3IgbGlicmFyaWVzIGFuZCByZW5hbWVkCisgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byBEZWJpYW4gbGlicmFyeSBwYWNrYWdlIG5hbWluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIiR7UEFDS0FHRVN9Iiwgd2hpY2ggY2F1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICBkZWJpYW4gY2xhc3MgdG8gYWN0IG9uIGFsbCBwYWNrYWdlcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICBleHBsaWNpdGx5IGdlbmVyYXRlZCBieSB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFVVE9fU1lTTElOVVhNRU5VJz48Z2xvc3N0ZXJtPkFVVE9fU1lTTElOVVhNRU5VPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBVVRPX1NZU0xJTlVYTUVOVVtkb2NdID0gIkVuYWJsZXMgY3JlYXRpbmcgYW4gYXV0b21hdGljIG1lbnUgZm9yIHRoZSBzeXNsaW51eCBib290bG9hZGVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBjcmVhdGluZyBhbiBhdXRvbWF0aWMgbWVudSBmb3IgdGhlIHN5c2xpbnV4CisgICAgICAgICAgICAgICAgICAgIGJvb3Rsb2FkZXIuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3lzbGludXgnPjxmaWxlbmFtZT5zeXNsaW51eDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBjaGVja3MgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BVVRPUkVWJz48Z2xvc3N0ZXJtPkFVVE9SRVY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFVVE9SRVZbZG9jXSA9ICJXaGVuIFNSQ1JFViBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUsIGl0IHNwZWNpZmllcyB0byB1c2UgdGhlIGxhdGVzdCBzb3VyY2UgcmV2aXNpb24gaW4gdGhlIHJlcG9zaXRvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz5TUkNSRVY8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlLCBpdCBzcGVjaWZpZXMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXRlc3Qgc291cmNlIHJldmlzaW9uIGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDUkVWID0gIiR7QVVUT1JFVn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHVzZSB0aGUgcHJldmlvdXMgc3RhdGVtZW50IHRvIHJldHJpZXZlIHRoZSBsYXRlc3QKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiBzb2Z0d2FyZSwgeW91IG5lZWQgdG8gYmUgc3VyZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNQVic+PGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYSBrZXJuZWwgcmVjaXBlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbCc+a2VybmVsPC9saW5rPiBjbGFzcworICAgICAgICAgICAgICAgICAgICBhbmQgeW91IHVzZSB0aGUgcHJldmlvdXMgc3RhdGVtZW50LgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT4ke1NSQ1BWfTwvZmlsZW5hbWU+IGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZ2V0IGludG8gPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG5lZWQgdG8gY2hhbmdlIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgcmVjaXBlIHNvIHRoYXQgaXQgZG9lcyBjb250YWluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1NSQ1BWfTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhdXRvbWF0aWNhbGx5LWluY3JlbWVudGluZy1hLWJpbmFyeS1wYWNrYWdlLXJldmlzaW9uLW51bWJlcic+QXV0b21hdGljYWxseSBJbmNyZW1lbnRpbmcgYSBCaW5hcnkgUGFja2FnZSBSZXZpc2lvbiBOdW1iZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFWQUlMQUJMRV9MSUNFTlNFUyc+PGdsb3NzdGVybT5BVkFJTEFCTEVfTElDRU5TRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFWQUlMQUJMRV9MSUNFTlNFU1tkb2NdID0gIkxpc3Qgb2YgbGljZW5zZXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSBDT01NT05fTElDRU5TRV9ESVIgYW5kIExJQ0VOU0VfUEFUSC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisKKyAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBsaWNlbnNlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGJ5IDxsaW5rIGxpbmtlbmQ9J3Zhci1DT01NT05fTElDRU5TRV9ESVInPjxmaWxlbmFtZT5DT01NT05fTElDRU5TRV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFX1BBVEgnPjxmaWxlbmFtZT5MSUNFTlNFX1BBVEg8L2ZpbGVuYW1lPjwvbGluaz4uCisKKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgYWxsIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5DT01NT05fTElDRU5TRV9ESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5MSUNFTlNFX1BBVEg8L2ZpbGVuYW1lPiBoYXZlIGJlZW4gZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIDxmaWxlbmFtZT5BVkFJTEFCTEVfTElDRU5TRVM8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgKGluIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWxpY2Vuc2UnPmxpY2Vuc2UuYmJjbGFzczwvbGluaz4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQVZBSUxUVU5FUyc+PGdsb3NzdGVybT5BVkFJTFRVTkVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBVkFJTFRVTkVTW2RvY10gPSAiVGhlIGxpc3Qgb2YgZGVmaW5lZCBDUFUgYW5kIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkgdHVuaW5ncyAoaS5lLiAgInR1bmVzIikgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBkZWZpbmVkIENQVSBhbmQgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgICAoQUJJKSB0dW5pbmdzIChpLmUuICAidHVuZXMiKSBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpc3Qgc2ltcGx5IHByZXNlbnRzIHRoZSB0dW5lcyB0aGF0IGFyZSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgdHVuZXMgbWF5IGJlIGNvbXBhdGlibGUgd2l0aCBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uLCBvciB3aXRoIGVhY2ggb3RoZXIgaW4gYQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjb21iaW5pbmctbXVsdGlwbGUtdmVyc2lvbnMtbGlicmFyeS1maWxlcy1pbnRvLW9uZS1pbWFnZSc+TXVsdGlsaWI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBhZGQgYSB0dW5lIHRvIHRoZSBsaXN0LCBiZSBzdXJlIHRvIGFwcGVuZCBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgIHNwYWNlcyB1c2luZyB0aGUgIis9IiBCaXRCYWtlIG9wZXJhdG9yLgorICAgICAgICAgICAgICAgICAgICBEbyBub3Qgc2ltcGx5IHJlcGxhY2UgdGhlIGxpc3QgYnkgdXNpbmcgdGhlICI9IiBvcGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYXNpYy1zeW50YXgnPkJhc2ljIFN5bnRheDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS1iJz48dGl0bGU+QjwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CJz48Z2xvc3N0ZXJtPkI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJbZG9jXSA9ICJUaGUgQnVpbGQgRGlyZWN0b3J5LiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwbGFjZXMgZ2VuZXJhdGVkIG9iamVjdHMgaW50byB0aGUgQnVpbGQgRGlyZWN0b3J5IGR1cmluZyBhIHJlY2lwZSdzIGJ1aWxkIHByb2Nlc3MuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBsYWNlcyBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyBkdXJpbmcgYSByZWNpcGUncyBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSBpcyB0aGUgc2FtZSBhcyB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgd2hpY2ggaXMgZGVmaW5lZCBhczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTID0gIiR7V09SS0RJUn0vJHtCUH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXBhcmF0ZSB0aGUgKDxmaWxlbmFtZT5TPC9maWxlbmFtZT4pIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IHRoZSA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBNb3N0IEF1dG90b29scy1iYXNlZCByZWNpcGVzIHN1cHBvcnQgc2VwYXJhdGluZyB0aGVzZQorICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBkZWZhdWx0cyB0byB1c2luZyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+IGFuZCBzb21lIGtlcm5lbCByZWNpcGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJBRF9SRUNPTU1FTkRBVElPTlMnPjxnbG9zc3Rlcm0+QkFEX1JFQ09NTUVOREFUSU9OUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkFEX1JFQ09NTUVOREFUSU9OU1tkb2NdID0gIkEgbGlzdCBvZiBwYWNrYWdlcyBub3QgdG8gaW5zdGFsbCBkZXNwaXRlIGJlaW5nIHJlY29tbWVuZGVkIGJ5IGEgcmVjaXBlLiBTdXBwb3J0IGZvciB0aGlzIHZhcmlhYmxlIGV4aXN0cyBvbmx5IHdoZW4gdXNpbmcgdGhlIElQSyBwYWNrYWdpbmcgYmFja2VuZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzICJyZWNvbW1lbmRlZC1vbmx5IiBwYWNrYWdlcyB0byBub3QgaW5zdGFsbC4KKyAgICAgICAgICAgICAgICAgICAgUmVjb21tZW5kZWQtb25seSBwYWNrYWdlcyBhcmUgcGFja2FnZXMgaW5zdGFsbGVkIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcHJldmVudCBhbnkgb2YgdGhlc2UgInJlY29tbWVuZGVkIiBwYWNrYWdlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGluc3RhbGxlZCBieSBsaXN0aW5nIHRoZW0gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJBRF9SRUNPTU1FTkRBVElPTlM8L2ZpbGVuYW1lPiB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQURfUkVDT01NRU5EQVRJT05TID0gIjxyZXBsYWNlYWJsZT5wYWNrYWdlX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+cGFja2FnZV9uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnBhY2thZ2VfbmFtZTwvcmVwbGFjZWFibGU+IC4uLiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNldCB0aGlzIHZhcmlhYmxlIGdsb2JhbGx5IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIHlvdSBjYW4gYXR0YWNoIGl0IHRvCisgICAgICAgICAgICAgICAgICAgIGEgc3BlY2lmaWMgaW1hZ2UgcmVjaXBlIGJ5IHVzaW5nIHRoZSByZWNpcGUgbmFtZSBvdmVycmlkZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQURfUkVDT01NRU5EQVRJT05TX3BuLTxyZXBsYWNlYWJsZT50YXJnZXRfaW1hZ2U8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGFja2FnZV9uYW1lPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCBpZiB5b3UgY2hvb3NlIHRvIG5vdCBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHVzaW5nIHRoaXMgdmFyaWFibGUgYW5kIHNvbWUgb3RoZXIgcGFja2FnZXMgYXJlCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBvbiB0aGVtIChpLmUuIGxpc3RlZCBpbiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlKSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaWdub3JlcyB5b3VyCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgYW5kIHdpbGwgaW5zdGFsbCB0aGUgcGFja2FnZXMgdG8gYXZvaWQgZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHRoaXMgdmFyaWFibGUgZXhpc3RzIG9ubHkgd2hlbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgSVBLIGFuZCBSUE0gcGFja2FnaW5nIGJhY2tlbmQuCisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZG9lcyBub3QgZXhpc3QgZm9yIERFQi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTk9fUkVDT01NRU5EQVRJT05TJz48ZmlsZW5hbWU+Tk9fUkVDT01NRU5EQVRJT05TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHJlbGF0ZWQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkFTRV9MSUInPjxnbG9zc3Rlcm0+QkFTRV9MSUI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJBU0VfTElCW2RvY10gPSAiVGhlIGxpYnJhcnkgZGlyZWN0b3J5IG5hbWUgZm9yIHRoZSBDUFUgb3IgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5lLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpYnJhcnkgZGlyZWN0b3J5IG5hbWUgZm9yIHRoZSBDUFUgb3IgQXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5lLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkJBU0VfTElCPC9maWxlbmFtZT4gYXBwbGllcyBvbmx5IGluIHRoZQorICAgICAgICAgICAgICAgICAgICBNdWx0aWxpYiBjb250ZXh0LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjb21iaW5pbmctbXVsdGlwbGUtdmVyc2lvbnMtbGlicmFyeS1maWxlcy1pbnRvLW9uZS1pbWFnZSc+Q29tYmluaW5nIE11bHRpcGxlIFZlcnNpb25zIG9mIExpYnJhcnkgRmlsZXMgaW50byBPbmUgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIE11bHRpbGliLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkJBU0VfTElCPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSBpbmNsdWRlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgTXVsdGlsaWIgaXMgbm90IGJlaW5nIHVzZWQsIHRoZSB2YWx1ZSBkZWZhdWx0cyB0byAibGliIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQVNFX1dPUktESVInPjxnbG9zc3Rlcm0+QkFTRV9XT1JLRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQVNFX1dPUktESVJbZG9jXSA9ICJQb2ludHMgdG8gdGhlIGJhc2Ugb2YgdGhlIHdvcmsgZGlyZWN0b3J5IGZvciBhbGwgcmVjaXBlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgYmFzZSBvZiB0aGUgd29yayBkaXJlY3RvcnkgZm9yIGFsbCByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiJHtUTVBESVJ9L3dvcmsiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCX0FMTE9XRURfTkVUV09SS1MnPjxnbG9zc3Rlcm0+QkJfQUxMT1dFRF9ORVRXT1JLUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJfQUxMT1dFRF9ORVRXT1JLU1tkb2NdID0gIkEgbGlzdCBvZiBob3N0cyB0aGF0IHRoZSBmZXRjaGVyIGlzIGFsbG93ZWQgdG8gdXNlIHRvIG9idGFpbiB0aGUgcmVxdWlyZWQgc291cmNlIGNvZGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBzcGFjZS1kZWxpbWl0ZWQgbGlzdCBvZiBob3N0cyB0aGF0IHRoZSBmZXRjaGVyCisgICAgICAgICAgICAgICAgICAgIGlzIGFsbG93ZWQgdG8gdXNlIHRvIG9idGFpbiB0aGUgcmVxdWlyZWQgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgY29uc2lkZXJhdGlvbnMgc3Vycm91bmRpbmcgdGhpcyB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGhvc3QgbGlzdCBpcyBvbmx5IHVzZWQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJfTk9fTkVUV09SSzwvZmlsZW5hbWU+IGlzIGVpdGhlciBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb3Igc2V0IHRvICIwIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW1pdGVkIHN1cHBvcnQgZm9yIHdpbGRjYXJkIG1hdGNoaW5nIGFnYWluc3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5uaW5nIG9mIGhvc3QgbmFtZXMgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHNldHRpbmcgbWF0Y2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQuZ251Lm9yZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mdHAuZ251Lm9yZzwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vLmdpdC5nbnUub3JnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9BTExPV0VEX05FVFdPUktTID0gIiouZ251Lm9yZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+KjwvZmlsZW5hbWU+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgb25seSB3b3JrcyBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgaG9zdCBuYW1lIGFuZCBpdCBtdXN0IGJlIGlzb2xhdGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgaG9zdCBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIGluIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciBsb2NhdGlvbiBvZiB0aGUgbmFtZSBvciBjb21iaW5lZCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcm9udCBwYXJ0IG9mIHRoZSBuYW1lLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgZXhhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouZm9vLmJhcjwvZmlsZW5hbWU+IGlzIHN1cHBvcnRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgPGZpbGVuYW1lPiphYS5mb28uYmFyPC9maWxlbmFtZT4gaXMgbm90LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pcnJvcnMgbm90IGluIHRoZSBob3N0IGxpc3QgYXJlIHNraXBwZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VkIGluIGRlYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dGVtcHRzIHRvIGFjY2VzcyBuZXR3b3JrcyBub3QgaW4gdGhlIGhvc3QgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlIGEgZmFpbHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5CQl9BTExPV0VEX05FVFdPUktTPC9maWxlbmFtZT4gaW4KKyAgICAgICAgICAgICAgICAgICAgY29uanVuY3Rpb24gd2l0aAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgdmVyeSB1c2VmdWwuCisgICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGUgaG9zdCB5b3Ugd2FudCB0byB1c2UgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPiByZXN1bHRzIGluIHRoZSBzb3VyY2UgY29kZQorICAgICAgICAgICAgICAgICAgICBiZWluZyBmZXRjaGVkIGZyb20gYW4gYWxsb3dlZCBsb2NhdGlvbiBhbmQgYXZvaWRzIHJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgYW4gZXJyb3Igd2hlbiBhIGhvc3QgdGhhdCBpcyBub3QgYWxsb3dlZCBpcyBpbiBhCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgZmV0Y2hlciBkb2VzIG5vdCBhdHRlbXB0IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaG9zdCBsaXN0ZWQgaW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBhZnRlciBhCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWwgZmV0Y2ggZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPiBvY2N1cnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZJz48Z2xvc3N0ZXJtPkJCX0RBTkdMSU5HQVBQRU5EU19XQVJOT05MWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZW2RvY10gPSAiRGVmaW5lcyBob3cgQml0QmFrZSBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgYW4gYXBwZW5kIGZpbGUgKC5iYmFwcGVuZCkgaGFzIG5vIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUgKC5iYikuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGhvdyBCaXRCYWtlIGhhbmRsZXMgc2l0dWF0aW9ucyB3aGVyZSBhbiBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgZmlsZSAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBoYXMgbm8KKyAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25kaXRpb24gb2Z0ZW4gb2NjdXJzIHdoZW4gbGF5ZXJzIGdldCBvdXQgb2Ygc3luYworICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+b2UtY29yZTwvZmlsZW5hbWU+IGJ1bXBzIGEKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHZlcnNpb24gYW5kIHRoZSBvbGQgcmVjaXBlIG5vIGxvbmdlciBleGlzdHMgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICBvdGhlciBsYXllciBoYXMgbm90IGJlZW4gdXBkYXRlZCB0byB0aGUgbmV3IHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSB5ZXQpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBmYXRhbCBiZWhhdmlvciBpcyBzYWZlc3QgYmVjYXVzZSBpdCBpcworICAgICAgICAgICAgICAgICAgICB0aGUgc2FuZSByZWFjdGlvbiBnaXZlbiBzb21ldGhpbmcgaXMgb3V0IG9mIHN5bmMuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHdoZW4geW91ciBjaGFuZ2VzIGFyZSBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgYmVpbmcgYXBwbGllZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaGFuZ2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYnkgc2V0dGluZyB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIiwgInllcyIsIG9yICJ0cnVlIgorICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfREFOR0xJTkdBUFBFTkRTX1dBUk5PTkxZID0gIjEiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQl9ESVNLTU9OX0RJUlMnPjxnbG9zc3Rlcm0+QkJfRElTS01PTl9ESVJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQl9ESVNLTU9OX0RJUlNbZG9jXSA9ICJNb25pdG9ycyBkaXNrIHNwYWNlIGFuZCBhdmFpbGFibGUgaW5vZGVzIGR1cmluZyB0aGUgYnVpbGQgYW5kIGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgYnVpbGQgYmFzZWQgb24gdGhlc2UgcGFyYW1ldGVycy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIE1vbml0b3JzIGRpc2sgc3BhY2UgYW5kIGF2YWlsYWJsZSBpbm9kZXMgZHVyaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBhbmQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSBidWlsZCBiYXNlZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXNrIHNwYWNlIG1vbml0b3JpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgVG8gZW5hYmxlIG1vbml0b3JpbmcsIGFkZCB0aGUgPGZpbGVuYW1lPkJCX0RJU0tNT05fRElSUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9ESVNLTU9OX0RJUlMgPSAiPHJlcGxhY2VhYmxlPmFjdGlvbjwvcmVwbGFjZWFibGU+LDxyZXBsYWNlYWJsZT5kaXI8L3JlcGxhY2VhYmxlPiw8cmVwbGFjZWFibGU+dGhyZXNob2xkPC9yZXBsYWNlYWJsZT4gWy4uLl0iCisKKyAgICAgd2hlcmU6CisKKyAgICAgICAgPHJlcGxhY2VhYmxlPmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzOgorICAgICAgICAgICBBQk9SVDogICAgIEltbWVkaWF0ZWx5IGFib3J0IHRoZSBidWlsZCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgYSB0aHJlc2hvbGQgaXMgYnJva2VuLgorICAgICAgICAgICBTVE9QVEFTS1M6IFN0b3AgdGhlIGJ1aWxkIGFmdGVyIHRoZSBjdXJyZW50bHkKKyAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpbmcgdGFza3MgaGF2ZSBmaW5pc2hlZCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgYSB0aHJlc2hvbGQgaXMgYnJva2VuLgorICAgICAgICAgICBXQVJOOiAgICAgIElzc3VlIGEgd2FybmluZyBidXQgY29udGludWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgd2hlbiBhIHRocmVzaG9sZCBpcyBicm9rZW4uCisgICAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCB3YXJuaW5ncyBhcmUgaXNzdWVkIGFzCisgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieSB0aGUgQkJfRElTS01PTl9XQVJOSU5URVJWQUwKKyAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggbXVzdCBiZSBkZWZpbmVkIGluCisgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmYvbG9jYWwuY29uZiBmaWxlLgorCisgICAgICAgIDxyZXBsYWNlYWJsZT5kaXI8L3JlcGxhY2VhYmxlPiBpczoKKyAgICAgICAgICAgQW55IGRpcmVjdG9yeSB5b3UgY2hvb3NlLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9yCisgICAgICAgICAgIG1vcmUgZGlyZWN0b3JpZXMgdG8gbW9uaXRvciBieSBzZXBhcmF0aW5nIHRoZQorICAgICAgICAgICBncm91cGluZ3Mgd2l0aCBhIHNwYWNlLiAgSWYgdHdvIGRpcmVjdG9yaWVzIGFyZQorICAgICAgICAgICBvbiB0aGUgc2FtZSBkZXZpY2UsIG9ubHkgdGhlIGZpcnN0IGRpcmVjdG9yeQorICAgICAgICAgICBpcyBtb25pdG9yZWQuCisKKyAgICAgICAgPHJlcGxhY2VhYmxlPnRocmVzaG9sZDwvcmVwbGFjZWFibGU+IGlzOgorICAgICAgICAgICBFaXRoZXIgdGhlIG1pbmltdW0gYXZhaWxhYmxlIGRpc2sgc3BhY2UsCisgICAgICAgICAgIHRoZSBtaW5pbXVtIG51bWJlciBvZiBmcmVlIGlub2Rlcywgb3IKKyAgICAgICAgICAgYm90aC4gIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lLiAgVG8KKyAgICAgICAgICAgb21pdCBvbmUgb3IgdGhlIG90aGVyLCBzaW1wbHkgb21pdCB0aGUgdmFsdWUuCisgICAgICAgICAgIFNwZWNpZnkgdGhlIHRocmVzaG9sZCB1c2luZyBHLCBNLCBLIGZvciBHYnl0ZXMsCisgICAgICAgICAgIE1ieXRlcywgYW5kIEtieXRlcywgcmVzcGVjdGl2ZWx5LiBJZiB5b3UgZG8KKyAgICAgICAgICAgbm90IHNwZWNpZnkgRywgTSwgb3IgSywgS2J5dGVzIGlzIGFzc3VtZWQgYnkKKyAgICAgICAgICAgZGVmYXVsdC4gIERvIG5vdCB1c2UgR0IsIE1CLCBvciBLQi4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX0RJU0tNT05fRElSUyA9ICJBQk9SVCwke1RNUERJUn0sMUcsMTAwSyBXQVJOLCR7U1NUQVRFX0RJUn0sMUcsMTAwSyIKKyAgICAgQkJfRElTS01PTl9ESVJTID0gIlNUT1BUQVNLUywke1RNUERJUn0sMUciCisgICAgIEJCX0RJU0tNT05fRElSUyA9ICJBQk9SVCwke1RNUERJUn0sLDEwMEsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGV4YW1wbGUgd29ya3Mgb25seSBpZiB5b3UgYWxzbyBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItQkJfRElTS01PTl9XQVJOSU5URVJWQUwnPjxmaWxlbmFtZT5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gaW1tZWRpYXRlbHkKKyAgICAgICAgICAgICAgICAgICAgYWJvcnQgd2hlbiBlaXRoZXIgdGhlIGRpc2sgc3BhY2UgaW4gPGZpbGVuYW1lPiR7VE1QRElSfTwvZmlsZW5hbWU+IGRyb3BzCisgICAgICAgICAgICAgICAgICAgIGJlbG93IDEgR2J5dGUgb3IgdGhlIGF2YWlsYWJsZSBmcmVlIGlub2RlcyBkcm9wcyBiZWxvdworICAgICAgICAgICAgICAgICAgICAxMDAgS2J5dGVzLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHR3byBkaXJlY3RvcmllcyBhcmUgcHJvdmlkZWQgd2l0aCB0aGUgdmFyaWFibGUsIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gYWxzbyBpc3N1ZSBhCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgd2hlbiB0aGUgZGlzayBzcGFjZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7U1NUQVRFX0RJUn08L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZHJvcHMKKyAgICAgICAgICAgICAgICAgICAgYmVsb3cgMSBHYnl0ZSBvciB0aGUgbnVtYmVyIG9mIGZyZWUgaW5vZGVzIGRyb3BzCisgICAgICAgICAgICAgICAgICAgIGJlbG93IDEwMCBLYnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgd2FybmluZ3MgYXJlIGlzc3VlZCBkdXJpbmcgaW50ZXJ2YWxzIGFzCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlIDxmaWxlbmFtZT5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgc2Vjb25kIGV4YW1wbGUgc3RvcHMgdGhlIGJ1aWxkIGFmdGVyIGFsbCBjdXJyZW50bHkKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW5nIHRhc2tzIGNvbXBsZXRlIHdoZW4gdGhlIG1pbmltdW0gZGlzayBzcGFjZQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPiR7PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+VE1QRElSPC9saW5rPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgZHJvcHMgYmVsb3cgMSBHYnl0ZS4KKyAgICAgICAgICAgICAgICAgICAgTm8gZGlzayBtb25pdG9yaW5nIG9jY3VycyBmb3IgdGhlIGZyZWUgaW5vZGVzIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGV4YW1wbGUgaW1tZWRpYXRlbHkgYWJvcnRzIHRoZSBidWlsZCB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgZnJlZSBpbm9kZXMgaW4gdGhlIDxmaWxlbmFtZT4ke1RNUERJUn08L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgZHJvcHMgYmVsb3cgMTAwIEtieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgTm8gZGlzayBzcGFjZSBtb25pdG9yaW5nIGZvciB0aGUgZGlyZWN0b3J5IGl0c2VsZiBvY2N1cnMKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCX0RJU0tNT05fV0FSTklOVEVSVkFMJz48Z2xvc3N0ZXJtPkJCX0RJU0tNT05fV0FSTklOVEVSVkFMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQl9ESVNLTU9OX1dBUk5JTlRFUlZBTFtkb2NdID0gIkRlZmluZXMgdGhlIGRpc2sgc3BhY2UgYW5kIGZyZWUgaW5vZGUgd2FybmluZyBpbnRlcnZhbHMuIFRvIHNldCB0aGVzZSBpbnRlcnZhbHMsIGRlZmluZSB0aGUgdmFyaWFibGUgaW4gdGhlIGNvbmYvbG9jYWwuY29uZiBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBkaXNrIHNwYWNlIGFuZCBmcmVlIGlub2RlIHdhcm5pbmcgaW50ZXJ2YWxzLgorICAgICAgICAgICAgICAgICAgICBUbyBzZXQgdGhlc2UgaW50ZXJ2YWxzLCBkZWZpbmUgdGhlIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvZmlsZW5hbWU+IHZhcmlhYmxlLCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICBhbHNvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0RJU0tNT05fRElSUyc+PGZpbGVuYW1lPkJCX0RJU0tNT05fRElSUzwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBhbmQgZGVmaW5lIGl0cyBhY3Rpb24gYXMgIldBUk4iLgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCBzdWJzZXF1ZW50IHdhcm5pbmdzIGFyZSBpc3N1ZWQgZWFjaCB0aW1lCisgICAgICAgICAgICAgICAgICAgIGRpc2sgc3BhY2Ugb3IgbnVtYmVyIG9mIGZyZWUgaW5vZGVzIGZ1cnRoZXIgcmVkdWNlcyBieQorICAgICAgICAgICAgICAgICAgICB0aGUgcmVzcGVjdGl2ZSBpbnRlcnZhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBwcm92aWRlIGEgPGZpbGVuYW1lPkJCX0RJU0tNT05fV0FSTklOVEVSVkFMPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHlvdSBkbyB1c2UgPGZpbGVuYW1lPkJCX0RJU0tNT05fRElSUzwvZmlsZW5hbWU+IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlICJXQVJOIiBhY3Rpb24sIHRoZSBkaXNrIG1vbml0b3JpbmcgaW50ZXJ2YWwgZGVmYXVsdHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9ESVNLTU9OX1dBUk5JTlRFUlZBTCA9ICI1ME0sNUsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIHRoZSB2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9ESVNLTU9OX1dBUk5JTlRFUlZBTCA9ICI8cmVwbGFjZWFibGU+ZGlza19zcGFjZV9pbnRlcnZhbDwvcmVwbGFjZWFibGU+LDxyZXBsYWNlYWJsZT5kaXNrX2lub2RlX2ludGVydmFsPC9yZXBsYWNlYWJsZT4iCisKKyAgICAgd2hlcmU6CisKKyAgICAgICAgPHJlcGxhY2VhYmxlPmRpc2tfc3BhY2VfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBpczoKKyAgICAgICAgICAgQW4gaW50ZXJ2YWwgb2YgbWVtb3J5IGV4cHJlc3NlZCBpbiBlaXRoZXIKKyAgICAgICAgICAgRywgTSwgb3IgSyBmb3IgR2J5dGVzLCBNYnl0ZXMsIG9yIEtieXRlcywKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LiBZb3UgY2Fubm90IHVzZSBHQiwgTUIsIG9yIEtCLgorCisgICAgICAgIDxyZXBsYWNlYWJsZT5kaXNrX2lub2RlX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gaXM6CisgICAgICAgICAgIEFuIGludGVydmFsIG9mIGZyZWUgaW5vZGVzIGV4cHJlc3NlZCBpbiBlaXRoZXIKKyAgICAgICAgICAgRywgTSwgb3IgSyBmb3IgR2J5dGVzLCBNYnl0ZXMsIG9yIEtieXRlcywKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LiBZb3UgY2Fubm90IHVzZSBHQiwgTUIsIG9yIEtCLgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9ESVNLTU9OX0RJUlMgPSAiV0FSTiwke1NTVEFURV9ESVJ9LDFHLDEwMEsiCisgICAgIEJCX0RJU0tNT05fV0FSTklOVEVSVkFMID0gIjUwTSw1SyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGVzZSB2YXJpYWJsZXMgY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8KKyAgICAgICAgICAgICAgICAgICAgaXNzdWUgc3Vic2VxdWVudCB3YXJuaW5ncyBlYWNoIHRpbWUgdGhlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICBkaXNrIHNwYWNlIGZ1cnRoZXIgcmVkdWNlcyBieSA1MCBNYnl0ZXMgb3IgdGhlIG51bWJlcgorICAgICAgICAgICAgICAgICAgICBvZiBmcmVlIGlub2RlcyBmdXJ0aGVyIHJlZHVjZXMgYnkgNSBLYnl0ZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1NTVEFURV9ESVJ9PC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBTdWJzZXF1ZW50IHdhcm5pbmdzIGJhc2VkIG9uIHRoZSBpbnRlcnZhbCBvY2N1ciBlYWNoIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgYSByZXNwZWN0aXZlIGludGVydmFsIGlzIHJlYWNoZWQgYmV5b25kIHRoZSBpbml0aWFsIHdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gMSBHYnl0ZXMgYW5kIDEwMCBLYnl0ZXMpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGdsb3NzdGVybT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMU1tkb2NdID0gIkNhdXNlcyB0YXJiYWxscyBvZiB0aGUgc291cmNlIGNvbnRyb2wgcmVwb3NpdG9yaWVzIHRvIGJlIHBsYWNlZCBpbiB0aGUgRExfRElSIGRpcmVjdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIENhdXNlcyB0YXJiYWxscyBvZiB0aGUgc291cmNlIGNvbnRyb2wgcmVwb3NpdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIChlLmcuIEdpdCByZXBvc2l0b3JpZXMpLCBpbmNsdWRpbmcgbWV0YWRhdGEsIHRvIGJlIHBsYWNlZAorICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBjcmVhdGluZyBhbmQgcGxhY2luZyB0YXJiYWxscyBvZgorICAgICAgICAgICAgICAgICAgICB0aGVzZSByZXBvc2l0b3JpZXMgaXMgbm90IHRoZSBkZWZhdWx0IGFjdGlvbiBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSB0YXJiYWxscyBjb250YWluaW5nIHlvdXIgc291cmNlIGZpbGVzLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNsZWFuIHVwIHlvdXIgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBieSBkZWxldGluZyBhbnkgR2l0IG9yIG90aGVyIHNvdXJjZSBjb250cm9sCisgICAgICAgICAgICAgICAgICAgIHdvcmsgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxnbG9zc3Rlcm0+QkJfTlVNQkVSX1RIUkVBRFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCX05VTUJFUl9USFJFQURTW2RvY10gPSAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIEJpdEJha2Ugc2hvdWxkIHJ1biBpbiBwYXJhbGxlbCBhdCBhbnkgb25lIHRpbWUuIFRoaXMgdmFyaWFibGUgaXMgYXV0b21hdGljYWxseSBjb25maWd1cmVkIHRvIGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgYnVpbGQgc3lzdGVtIGNvcmVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIEJpdEJha2Ugc2hvdWxkIHJ1biBpbiBwYXJhbGxlbAorICAgICAgICAgICAgICAgICAgICBhdCBhbnkgb25lIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlcworICAgICAgICAgICAgICAgICAgICB0aGlzIHZhcmlhYmxlIHRvIGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY29yZXMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgc3lzdGVtIHdpdGggYSBkdWFsIGNvcmUgcHJvY2Vzc29yIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgYWxzbyB1c2VzIGh5cGVyLXRocmVhZGluZyBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgdG8gIjQiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3Igc2luZ2xlIHNvY2tldCBzeXN0ZW1zIChpLmUuIG9uZSBDUFUpLCB5b3Ugc2hvdWxkIG5vdAorICAgICAgICAgICAgICAgICAgICBoYXZlIHRvIG92ZXJyaWRlIHRoaXMgdmFyaWFibGUgdG8gZ2FpbiBvcHRpbWFsIHBhcmFsbGVsaXNtCisgICAgICAgICAgICAgICAgICAgIGR1cmluZyBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIHZlcnkgbGFyZ2Ugc3lzdGVtcyB0aGF0IGVtcGxveQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBwaHlzaWNhbCBDUFVzLCB5b3UgbWlnaHQgd2FudCB0byBtYWtlIHN1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICBzZXQgaGlnaGVyIHRoYW4gIjIwIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3BlZWRpbmcgdXAgYnVpbGRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzcGVlZGluZy11cC1hLWJ1aWxkJz5TcGVlZGluZyBVcCBhIEJ1aWxkPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCX1NFUlZFUl9USU1FT1VUJz48Z2xvc3N0ZXJtPkJCX1NFUlZFUl9USU1FT1VUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQl9TRVJWRVJfVElNRU9VVCBbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHRpbWUgKGluIHNlY29uZHMpIGFmdGVyIHdoaWNoIHRvIHVubG9hZCB0aGUgQml0QmFrZSBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRpbWUgKGluIHNlY29uZHMpIGFmdGVyIHdoaWNoIHRvIHVubG9hZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIFNldCA8ZmlsZW5hbWU+QkJfU0VSVkVSX1RJTUVPVVQ8L2ZpbGVuYW1lPiB0byBkZXRlcm1pbmUgaG93CisgICAgICAgICAgICAgICAgICAgIGxvbmcgdGhlIEJpdEJha2Ugc2VydmVyIHN0YXlzIHJlc2lkZW50IGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbnN0cnVjdHMgdGhlIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICB0byBiZSB1bmxvYWRlZCBhZnRlciAyMCBzZWNvbmRzIG9mIGluYWN0aXZpdHk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfU0VSVkVSX1RJTUVPVVQgPSAiMjAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIHNlcnZlciB0byBuZXZlciBiZSB1bmxvYWRlZCwgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9TRVJWRVJfVElNRU9VVDwvZmlsZW5hbWU+IHRvICItMSIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJDTEFTU0VYVEVORCc+PGdsb3NzdGVybT5CQkNMQVNTRVhURU5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQkNMQVNTRVhURU5EW2RvY10gPSAiQWxsb3dzIHlvdSB0byBleHRlbmQgYSByZWNpcGUgc28gdGhhdCBpdCBidWlsZHMgdmFyaWFudHMgb2YgdGhlIHNvZnR3YXJlLiBDb21tb24gdmFyaWFudHMgZm9yIHJlY2lwZXMgYXJlICduYXRpdmUnLCAnY3Jvc3MnLCAnbmF0aXZlc2RrJywgYW5kIG11bHRpbGlicy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFsbG93cyB5b3UgdG8gZXh0ZW5kIGEgcmVjaXBlIHNvIHRoYXQgaXQgYnVpbGRzIHZhcmlhbnRzIG9mIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgQ29tbW9uIHZhcmlhbnRzIGZvciByZWNpcGVzIGV4aXN0IHN1Y2ggYXMgIm5hdGl2ZXMiIGxpa2UgPGZpbGVuYW1lPnF1aWx0LW5hdGl2ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIGNvcHkgb2YgUXVpbHQgYnVpbHQgdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW07CisgICAgICAgICAgICAgICAgICAgICJjcm9zc2VzIiBzdWNoIGFzIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBjb21waWxlciBidWlsdCB0byBydW4gb24gdGhlIGJ1aWxkIG1hY2hpbmUgYnV0IHByb2R1Y2VzIGJpbmFyaWVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgcnVuIG9uIHRoZSB0YXJnZXQgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+OworICAgICAgICAgICAgICAgICAgICAibmF0aXZlc2RrIiwgd2hpY2ggdGFyZ2V0cyB0aGUgU0RLIG1hY2hpbmUgaW5zdGVhZCBvZiA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+OworICAgICAgICAgICAgICAgICAgICBhbmQgIm11bGl0bGlicyIgaW4gdGhlIGZvcm0gIjxmaWxlbmFtZT5tdWx0aWxpYjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tdWx0aWxpYl9uYW1lPC9yZXBsYWNlYWJsZT4iLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBidWlsZCBhIGRpZmZlcmVudCB2YXJpYW50IG9mIHRoZSByZWNpcGUgd2l0aCBhIG1pbmltYWwgYW1vdW50IG9mIGNvZGUsIGl0IHVzdWFsbHkKKyAgICAgICAgICAgICAgICAgICAgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCQ0xBU1NFWFRFTkQgPSsgIm5hdGl2ZSBuYXRpdmVzZGsiCisgICAgIEJCQ0xBU1NFWFRFTkQgPSsgIm11bHRpbGliOjxyZXBsYWNlYWJsZT5tdWx0aWxpYl9uYW1lPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsbHksIHRoZSA8ZmlsZW5hbWU+QkJDTEFTU0VYVEVORDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20gZ2VuZXJhdGVzIHJlY2lwZSB2YXJpYW50cyBieSByZXdyaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHZhbHVlcyBhbmQgYXBwbHlpbmcgb3ZlcnJpZGVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fY2xhc3MtbmF0aXZlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gZ2VuZXJhdGUgYSBuYXRpdmUgdmVyc2lvbiBvZiBhIHJlY2lwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb24gImZvbyIgaXMgcmV3cml0dGVuIHRvIGEgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgb24gImZvby1uYXRpdmUiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW4gd2hlbiB1c2luZyA8ZmlsZW5hbWU+QkJDTEFTU0VYVEVORDwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpcyBvbmx5IHBhcnNlZCBvbmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2luZyBvbmNlIGFkZHMgc29tZSBsaW1pdGF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpdCBpcyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSBkaWZmZXJlbnQgZmlsZSBkZXBlbmRpbmcgb24gdGhlIHZhcmlhbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5jZSA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IHN0YXRlbWVudHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgd2hlbiB0aGUgcmVjaXBlIGlzIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQkZJTEVfQ09MTEVDVElPTlMnPjxnbG9zc3Rlcm0+QkJGSUxFX0NPTExFQ1RJT05TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQkZJTEVfQ09MTEVDVElPTlNbZG9jXSA9ICJMaXN0cyB0aGUgbmFtZXMgb2YgY29uZmlndXJlZCBsYXllcnMuIFRoZXNlIG5hbWVzIGFyZSB1c2VkIHRvIGZpbmQgdGhlIG90aGVyIEJCRklMRV8qIHZhcmlhYmxlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiBjb25maWd1cmVkIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgbmFtZXMgYXJlIHVzZWQgdG8gZmluZCB0aGUgb3RoZXIgPGZpbGVuYW1lPkJCRklMRV8qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIGVhY2ggbGF5ZXIgd2lsbCBhcHBlbmQgaXRzIG5hbWUgdG8gdGhpcyB2YXJpYWJsZSBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJGSUxFX1BBVFRFUk4nPjxnbG9zc3Rlcm0+QkJGSUxFX1BBVFRFUk48L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCRklMRV9QQVRURVJOW2RvY10gPSAiVmFyaWFibGUgdGhhdCBleHBhbmRzIHRvIG1hdGNoIGZpbGVzIGZyb20gQkJGSUxFUyBpbiBhIHBhcnRpY3VsYXIgbGF5ZXIuIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBpbiB0aGUgbGF5ZXIuY29uZiBmaWxlIGFuZCBtdXN0IGJlIHN1ZmZpeGVkIHdpdGggdGhlIG5hbWUgb2YgYSBsYXllci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlIHRoYXQgZXhwYW5kcyB0byBtYXRjaCBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQkZJTEVTJz48ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbiBhIHBhcnRpY3VsYXIgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kIG11c3QKKyAgICAgICAgICAgICAgICAgICAgYmUgc3VmZml4ZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMgbGF5ZXIgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCRklMRV9QQVRURVJOX2VtZW5sb3c8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJGSUxFX1BSSU9SSVRZJz48Z2xvc3N0ZXJtPkJCRklMRV9QUklPUklUWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJGSUxFX1BSSU9SSVRZW2RvY10gPSAiQXNzaWducyB0aGUgcHJpb3JpdHkgZm9yIHJlY2lwZSBmaWxlcyBpbiBlYWNoIGxheWVyLiBTZXR0aW5nIHRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBwcmlvcml0aXplIGEgbGF5ZXIgYWdhaW5zdCBvdGhlciBsYXllcnMgdGhhdCBjb250YWluIHRoZSBzYW1lIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFzc2lnbnMgdGhlIHByaW9yaXR5IGZvciByZWNpcGUgZmlsZXMgaW4gZWFjaCBsYXllci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2FtZSByZWNpcGUgYXBwZWFycyBpbgorICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25lIGxheWVyLgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBwcmlvcml0aXplIGEKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgYWdhaW5zdCBvdGhlciBsYXllcnMgdGhhdCBjb250YWluIHRoZSBzYW1lIHJlY2lwZSAtIGVmZmVjdGl2ZWx5CisgICAgICAgICAgICAgICAgICAgIGxldHRpbmcgeW91IGNvbnRyb2wgdGhlIHByZWNlZGVuY2UgZm9yIHRoZSBtdWx0aXBsZSBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmVjZWRlbmNlIGVzdGFibGlzaGVkIHRocm91Z2ggdGhpcyB2YXJpYWJsZSBzdGFuZHMgcmVnYXJkbGVzcyBvZiBhCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSdzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlKS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgbGF5ZXIgdGhhdCBoYXMgYSByZWNpcGUgd2l0aCBhIGhpZ2hlciA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiB2YWx1ZSBidXQgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRoZSA8ZmlsZW5hbWU+QkJGSUxFX1BSSU9SSVRZPC9maWxlbmFtZT4gaXMgc2V0IHRvIGhhdmUgYSBsb3dlciBwcmVjZWRlbmNlIHN0aWxsIGhhcyBhCisgICAgICAgICAgICAgICAgICAgIGxvd2VyIHByZWNlZGVuY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgbGFyZ2VyIHZhbHVlIGZvciB0aGUgPGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+IHZhcmlhYmxlIHJlc3VsdHMgaW4gYSBoaWdoZXIKKyAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSB2YWx1ZSA2IGhhcyBhIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gdGhlIHZhbHVlIDUuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSA8ZmlsZW5hbWU+QkJGSUxFX1BSSU9SSVRZPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgc2V0IGJhc2VkIG9uIGxheWVyCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyAoc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUxBWUVSREVQRU5EUyc+TEFZRVJERVBFTkRTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBwcmlvcml0eSwgaWYgdW5zcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGF5ZXIgd2l0aCBubyBkZXBlbmRlbmNpZXMsIGlzIHRoZSBsb3dlc3QgZGVmaW5lZCBwcmlvcml0eSArIDEKKyAgICAgICAgICAgICAgICAgICAgKG9yIDEgaWYgbm8gcHJpb3JpdGllcyBhcmUgZGVmaW5lZCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDx0aXA+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjb21tYW5kIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBzaG93LWxheWVyczwvZmlsZW5hbWU+IHRvIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgYWxsIGNvbmZpZ3VyZWQgbGF5ZXJzIGFsb25nIHdpdGggdGhlaXIgcHJpb3JpdGllcy4KKyAgICAgICAgICAgICAgICA8L3RpcD4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCRklMRVMnPjxnbG9zc3Rlcm0+QkJGSUxFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJGSUxFU1tkb2NdID0gIkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgcmVjaXBlIGZpbGVzIEJpdEJha2UgdXNlcyB0byBidWlsZCBzb2Z0d2FyZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgcmVjaXBlIGZpbGVzIEJpdEJha2UgdXNlcyB0bworICAgICAgICAgICAgICAgICAgICBidWlsZCBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIHJlY2lwZSBmaWxlcywgeW91IGNhbiBwYXR0ZXJuIG1hdGNoIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIFB5dGhvbidzCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9nbG9iLmh0bWwnPjxmaWxlbmFtZT5nbG9iPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzeW50YXguCisgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXgsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBieQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlIHByZXZpb3VzIGxpbmsuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJGSUxFU19EWU5BTUlDJz48Z2xvc3N0ZXJtPkJCRklMRVNfRFlOQU1JQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJGSUxFU19EWU5BTUlDW2RvY10gPSAiQWN0aXZhdGVzIGNvbnRlbnQgd2hlbiBpZGVudGlmaWVkIGxheWVycyBhcmUgcHJlc2VudC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFjdGl2YXRlcyBjb250ZW50IHdoZW4gaWRlbnRpZmllZCBsYXllcnMgYXJlIHByZXNlbnQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBpZGVudGlmeSB0aGUgbGF5ZXJzIGJ5IHRoZSBjb2xsZWN0aW9ucyB0aGF0IHRoZSBsYXllcnMKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5CQkZJTEVTX0RZTkFNSUM8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICBhdm9pZCA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMgd2hvc2UKKyAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBpcyBpbiBhIGxheWVyCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYXR0ZW1wdHMgdG8gbW9kaWZ5IG90aGVyIGxheWVycyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBidXQgZG9lcyBub3Qgd2FudCB0bworICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2UgYSBoYXJkIGRlcGVuZGVuY3kgb24gdGhvc2Ugb3RoZXIgbGF5ZXJzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBmb3JtIGZvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJGSUxFU19EWU5BTUlDPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPmNvbGxlY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT5maWxlbmFtZV9wYXR0ZXJuPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgaWRlbnRpZmllcyB0d28gY29sbGVjdGlvbiBuYW1lcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgdHdvIGZpbGVuYW1lIHBhdHRlcm5zOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCRklMRVNfRFlOQU1JQyArPSAiIFwKKyAgICAgICAgIGNsYW5nLWxheWVyOiR7TEFZRVJESVJ9L2JiYXBwZW5kcy9tZXRhLWNsYW5nLyovKi8qLmJiYXBwZW5kIFwKKyAgICAgICAgIGNvcmU6JHtMQVlFUkRJUn0vYmJhcHBlbmRzL29wZW5lbWJlZGRlZC1jb3JlL21ldGEvKi8qLyouYmJhcHBlbmQgXAorICAgICAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgc2hvd3MgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IG9jY3VycworICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGludmFsaWQgZW50cmllcyBhcmUgZm91bmQsIHdoaWNoIGNhdXNlIHBhcnNpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgYWJvcnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRVJST1I6IEJCRklMRVNfRFlOQU1JQyBlbnRyaWVzIG11c3QgYmUgb2YgdGhlIGZvcm0gJmx0O2NvbGxlY3Rpb24gbmFtZSZndDs6Jmx0O2ZpbGVuYW1lIHBhdHRlcm4mZ3Q7LCBub3Q6CisgICAgICAgICAvd29yay9teS1sYXllci9iYmFwcGVuZHMvbWV0YS1zZWN1cml0eS1pc2Fmdy8qLyovKi5iYmFwcGVuZAorICAgICAgICAgL3dvcmsvbXktbGF5ZXIvYmJhcHBlbmRzL29wZW5lbWJlZGRlZC1jb3JlL21ldGEvKi8qLyouYmJhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCSU5DTFVERUxPR1MnPjxnbG9zc3Rlcm0+QkJJTkNMVURFTE9HUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJJTkNMVURFTE9HU1tkb2NdID0gIlZhcmlhYmxlIHRoYXQgY29udHJvbHMgaG93IEJpdEJha2UgZGlzcGxheXMgbG9ncyBvbiBidWlsZCBmYWlsdXJlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGUgdGhhdCBjb250cm9scyBob3cgQml0QmFrZSBkaXNwbGF5cyBsb2dzIG9uIGJ1aWxkIGZhaWx1cmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJJTkNMVURFTE9HU19MSU5FUyc+PGdsb3NzdGVybT5CQklOQ0xVREVMT0dTX0xJTkVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQklOQ0xVREVMT0dTX0xJTkVTW2RvY10gPSAiQW1vdW50IG9mIGxvZyBsaW5lcyBwcmludGVkIG9uIGZhaWx1cmUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBJZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJJTkNMVURFTE9HUyc+PGZpbGVuYW1lPkJCSU5DTFVERUxPR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0LCBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIHRhc2sgbG9nIGZpbGUgdG8gcHJpbnQgd2hlbiByZXBvcnRpbmcgYSBmYWlsZWQgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzZXQgPGZpbGVuYW1lPkJCSU5DTFVERUxPR1NfTElORVM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGVudGlyZSBsb2cgaXMgcHJpbnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQkxBWUVSUyc+PGdsb3NzdGVybT5CQkxBWUVSUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJMQVlFUlNbZG9jXSA9ICJMaXN0cyB0aGUgbGF5ZXJzIHRvIGVuYWJsZSBkdXJpbmcgdGhlIGJ1aWxkLiBUaGlzIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gdGhlIGJibGF5ZXJzLmNvbmYgY29uZmlndXJhdGlvbiBmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGxheWVycyB0byBlbmFibGUgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJMQVlFUlMgPSAiIFwKKyAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEgXAorICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS1wb2t5IFwKKyAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEteW9jdG8tYnNwIFwKKyAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L21ldGEtbXlrZXJuZWwgXAorICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgZW5hYmxlcyBmb3VyIGxheWVycywgb25lIG9mIHdoaWNoIGlzIGEgY3VzdG9tLCB1c2VyLWRlZmluZWQgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPm1ldGEtbXlrZXJuZWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQk1BU0snPjxnbG9zc3Rlcm0+QkJNQVNLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQk1BU0tbZG9jXSA9ICJQcmV2ZW50cyBCaXRCYWtlIGZyb20gcHJvY2Vzc2luZyBzcGVjaWZpYyByZWNpcGVzIG9yIHJlY2lwZSBhcHBlbmQgZmlsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQcmV2ZW50cyBCaXRCYWtlIGZyb20gcHJvY2Vzc2luZyByZWNpcGVzIGFuZCByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPkJCTUFTSzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHRvICJoaWRlIiB0aGVzZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpZ25vcmVzIGFueSByZWNpcGUgb3IgcmVjaXBlIGFwcGVuZCBmaWxlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFueSBvZiB0aGUgZXhwcmVzc2lvbnMuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFzIGlmIEJpdEJha2UgZG9lcyBub3Qgc2VlIHRoZW0gYXQgYWxsLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIG1hdGNoaW5nIGZpbGVzIGFyZSBub3QgcGFyc2VkIG9yIG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IEJpdEJha2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZXMgeW91IHByb3ZpZGUgYXJlIHBhc3NlZCB0byBQeXRob24ncyByZWd1bGFyCisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIHN5bnRheCBmb2xsb3dzIFB5dGhvbidzIFJlZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgRXhwcmVzc2lvbiAocmUpIHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGV4cHJlc3Npb25zIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBmdWxsIHBhdGhzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNvbXBsZXRlIHN5bnRheCBpbmZvcm1hdGlvbiwgc2VlIFB5dGhvbidzCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvcmUuaHRtbCNyZSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB1c2VzIGEgY29tcGxldGUgcmVndWxhciBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHRvIHRlbGwgQml0QmFrZSB0byBpZ25vcmUgYWxsIHJlY2lwZSBhbmQgcmVjaXBlIGFwcGVuZAorICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtdGkvcmVjaXBlcy1taXNjLzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQk1BU0sgPSAibWV0YS10aS9yZWNpcGVzLW1pc2MvIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIG1hc2sgb3V0IG11bHRpcGxlIGRpcmVjdG9yaWVzIG9yIHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSByZWd1bGFyIGV4cHJlc3Npb24gZnJhZ21lbnRzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBtYXNrcyBvdXQgbXVsdGlwbGUgZGlyZWN0b3JpZXMgYW5kCisgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgcmVjaXBlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQk1BU0sgKz0gIi9tZXRhLXRpL3JlY2lwZXMtbWlzYy8gbWV0YS10aS9yZWNpcGVzLXRpL3BhY2thZ2Vncm91cC8iCisgICAgIEJCTUFTSyArPSAiL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0LyIKKyAgICAgQkJNQVNLICs9ICIvbWV0YS1mb28vLiovb3BlbmxkYXAiCisgICAgIEJCTUFTSyArPSAib3BlbmN2LipcLmJiYXBwZW5kIgorICAgICBCQk1BU0sgKz0gImx6bWEiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgYSBkaXJlY3RvcnkgbmFtZSwgdXNlIHRoZSB0cmFpbGluZworICAgICAgICAgICAgICAgICAgICAgICAgc2xhc2ggY2hhcmFjdGVyIHRvIGVuc3VyZSB5b3UgbWF0Y2gganVzdCB0aGF0IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCTVVMVElDT05GSUcnPjxnbG9zc3Rlcm0+QkJNVUxUSUNPTkZJRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJNVUxUSUNPTkZJR1tkb2NdID0gIlNwZWNpZmllcyBlYWNoIGFkZGl0aW9uYWwgc2VwYXJhdGUgY29uZmlndXJhdGlvbiB3aGVuIHlvdSBhcmUgYnVpbGRpbmcgdGFyZ2V0cyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGVhY2ggYWRkaXRpb25hbCBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIHdoZW4geW91CisgICAgICAgICAgICAgICAgICAgIGFyZSBidWlsZGluZyB0YXJnZXRzIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmeSBhIDxyZXBsYWNlYWJsZT5tdWx0aWNvbmZpZ25hbWU8L3JlcGxhY2VhYmxlPiBmb3IKKyAgICAgICAgICAgICAgICAgICAgZWFjaCBjb25maWd1cmF0aW9uIGZpbGUgeW91IGFyZSB1c2luZy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgbGluZSBzcGVjaWZpZXMgdGhyZWUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQk1VTFRJQ09ORklHID0gImNvbmZpZ0EgY29uZmlnQiBjb25maWdDIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEVhY2ggY29uZmlndXJhdGlvbiBmaWxlIHlvdSB1c2UgbXVzdCByZXNpZGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tdWx0aWNvbmZpZzwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVpbGRfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbXVsdGljb25maWcvY29uZmlnQS5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJNVUxUSUNPTkZJRzwvZmlsZW5hbWU+IGluIGFuIGVudmlyb25tZW50IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcgdGFyZ2V0cyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtYnVpbGRpbmctaW1hZ2VzLWZvci1tdWx0aXBsZS10YXJnZXRzLXVzaW5nLW11bHRpcGxlLWNvbmZpZ3VyYXRpb25zJz5CdWlsZGluZyBJbWFnZXMgZm9yIE11bHRpcGxlIFRhcmdldHMgVXNpbmcgTXVsdGlwbGUgQ29uZmlndXJhdGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJQQVRIJz48Z2xvc3N0ZXJtPkJCUEFUSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQkJQQVRIW2RvY10gPSAiVXNlZCBieSBCaXRCYWtlIHRvIGxvY2F0ZSAuYmJjbGFzcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhpcyB2YXJpYWJsZSBpcyBhbmFsb2dvdXMgdG8gdGhlIFBBVEggdmFyaWFibGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBVc2VkIGJ5IEJpdEJha2UgdG8gbG9jYXRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGFuYWxvZ291cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcnVuIEJpdEJha2UgZnJvbSBhIGRpcmVjdG9yeSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgYmUgc3VyZSB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB0byBwb2ludCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgYXMgeW91IHdvdWxkIGFueSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZW4gcnVuIEJpdEJha2U6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgQkJQQVRIID0gIjxyZXBsYWNlYWJsZT5idWlsZF9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPiIKKyAgICAgJCBleHBvcnQgQkJQQVRICisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCU0VSVkVSJz48Z2xvc3N0ZXJtPkJCU0VSVkVSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCQlNFUlZFUltkb2NdID0gIlBvaW50cyB0byB0aGUgQml0QmFrZSByZW1vdGUgc2VydmVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSWYgZGVmaW5lZCBpbiB0aGUgQml0QmFrZSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCU0VSVkVSPC9maWxlbmFtZT4gcG9pbnRzIHRvIHRoZSBCaXRCYWtlCisgICAgICAgICAgICAgICAgICAgIHJlbW90ZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdCB0byBleHBvcnQgdGhlIHZhcmlhYmxlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGVudmlyb25tZW50OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBCQlNFUlZFUj1sb2NhbGhvc3Q6JHBvcnQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+QkJTRVJWRVI8L2ZpbGVuYW1lPiBhbHNvIGFwcGVhcnMgaW4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSEJBU0VfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfSEFTSEJBU0VfV0hJVEVMSVNUPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCA8ZmlsZW5hbWU+QkJTRVJWRVI8L2ZpbGVuYW1lPiBpcyBleGNsdWRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIGNoZWNrc3VtIGFuZCBkZXBlbmRlbmN5IGRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQklOQ09ORklHJz48Z2xvc3N0ZXJtPkJJTkNPTkZJRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQklOQ09ORklHW2RvY10gPSAiV2hlbiBpbmhlcml0aW5nIHRoZSBiaW5jb25maWctZGlzYWJsZWQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGJpbmFyeSBjb25maWd1cmF0aW9uIHNjcmlwdHMgdG8gZGlzYWJsZSBpbiBmYXZvciBvZiB1c2luZyBwa2ctY29uZmlnIHRvIHF1ZXJ5IHRoZSBpbmZvcm1hdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmluY29uZmlnLWRpc2FibGVkJz48ZmlsZW5hbWU+YmluY29uZmlnLWRpc2FibGVkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBiaW5hcnkgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIHRvIGRpc2FibGUgaW4gZmF2b3Igb2YgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPiB0byBxdWVyeSB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YmluY29uZmlnLWRpc2FibGVkPC9maWxlbmFtZT4gY2xhc3Mgd2lsbAorICAgICAgICAgICAgICAgICAgICBtb2RpZnkgdGhlIHNwZWNpZmllZCBzY3JpcHRzIHRvIHJldHVybiBhbiBlcnJvciBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIGNhbGxzIHRvIHRoZW0gY2FuIGJlIGVhc2lseSBmb3VuZCBhbmQgcmVwbGFjZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGFkZCBtdWx0aXBsZSBzY3JpcHRzLCBzZXBhcmF0ZSB0aGVtIGJ5IHNwYWNlcy4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gdGhlIDxmaWxlbmFtZT5saWJwbmc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CSU5DT05GSUdfR0xPQic+PGdsb3NzdGVybT5CSU5DT05GSUdfR0xPQjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQklOQ09ORklHX0dMT0JbZG9jXSA9ICJXaGVuIGluaGVyaXRpbmcgYmluY29uZmlnLmJiY2xhc3MgZnJvbSBhIHJlY2lwZSwgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSB3aWxkY2FyZCBmb3IgY29uZmlndXJhdGlvbiBzY3JpcHRzIHRoYXQgbmVlZCBlZGl0aW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPjxmaWxlbmFtZT5iaW5jb25maWc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGEgd2lsZGNhcmQgZm9yCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gc2NyaXB0cyB0aGF0IG5lZWQgZWRpdGluZy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdHMgYXJlIGVkaXRlZCB0byBjb3JyZWN0IGFueSBwYXRocyB0aGF0IGhhdmUgYmVlbgorICAgICAgICAgICAgICAgICAgICBzZXQgdXAgZHVyaW5nIGNvbXBpbGF0aW9uIHNvIHRoYXQgdGhleSBhcmUgY29ycmVjdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgdXNlIHdoZW4gaW5zdGFsbGVkIGludG8gdGhlIHN5c3Jvb3QgYW5kIGNhbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgcHJvY2Vzc2VzIG9mIG90aGVyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5CSU5DT05GSUdfR0xPQjwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdGxkcC5vcmcvTERQL2Ficy9odG1sL2dsb2JiaW5ncmVmLmh0bWwnPnNoZWxsIGdsb2JiaW5nPC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyByZWNvZ25pdGlvbiBhbmQgZXhwYW5zaW9uIG9mIHdpbGRjYXJkcyBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gbWF0Y2hpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBTaGVsbCBnbG9iYmluZyBpcyB2ZXJ5IHNpbWlsYXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFyeS9mbm1hdGNoLmh0bWwjbW9kdWxlLWZubWF0Y2gnPjxmaWxlbmFtZT5mbm1hdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZ2xvYi5odG1sJz48ZmlsZW5hbWU+Z2xvYjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgd29ya3MsIHNlZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2JpbmNvbmZpZy5iYmNsYXNzPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHRoZSBjbGFzcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJpbmNvbmZpZyc+PGZpbGVuYW1lPmJpbmNvbmZpZy5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJQJz48Z2xvc3N0ZXJtPkJQPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCUFtkb2NdID0gIlRoZSBiYXNlIHJlY2lwZSBuYW1lIGFuZCB2ZXJzaW9uIGJ1dCB3aXRob3V0IGFueSBzcGVjaWFsIHJlY2lwZSBuYW1lIHN1ZmZpeCAoaS5lLiAtbmF0aXZlLCBsaWI2NC0sIGFuZCBzbyBmb3J0aCkuIEJQIGlzIGNvbXByaXNlZCBvZiAke0JQTn0tJHtQVn0iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIHJlY2lwZSBuYW1lIGFuZCB2ZXJzaW9uIGJ1dCB3aXRob3V0IGFueSBzcGVjaWFsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIHN1ZmZpeCAoaS5lLiA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+bGliNjQtPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CUDwvZmlsZW5hbWU+IGlzIGNvbXByaXNlZCBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICR7QlBOfS0ke1BWfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlBOJz48Z2xvc3N0ZXJtPkJQTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlBOW2RvY10gPSAiVGhpcyB2YXJpYWJsZSBpcyBhIHZlcnNpb24gb2YgdGhlIFBOIHZhcmlhYmxlIGJ1dCByZW1vdmVzIGNvbW1vbiBzdWZmaXhlcyBhbmQgcHJlZml4ZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGEgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aCBjb21tb24gcHJlZml4ZXMgYW5kIHN1ZmZpeGVzCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQsIHN1Y2ggYXMgPGZpbGVuYW1lPm5hdGl2ZXNkay08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1jcm9zczwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+LCBhbmQgbXVsdGlsaWIncworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliNjQtPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWIzMi08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGV4YWN0IGxpc3RzIG9mIHByZWZpeGVzIGFuZCBzdWZmaXhlcyByZW1vdmVkIGFyZQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NTFBSRUZJWCc+PGZpbGVuYW1lPk1MUFJFRklYPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1BFQ0lBTF9QS0dTVUZGSVgnPjxmaWxlbmFtZT5TUEVDSUFMX1BLR1NVRkZJWDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUdUUkFDS0VSJz48Z2xvc3N0ZXJtPkJVR1RSQUNLRVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVR1RSQUNLRVJbZG9jXSA9ICJTcGVjaWZpZXMgYSBVUkwgZm9yIGFuIHVwc3RyZWFtIGJ1ZyB0cmFja2luZyB3ZWJzaXRlIGZvciBhIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIFVSTCBmb3IgYW4gdXBzdHJlYW0gYnVnIHRyYWNraW5nIHdlYnNpdGUgZm9yCisgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCB1c2UgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCB0aGUgdmFyaWFibGUgaXMgYSB1c2VmdWwgcG9pbnRlciBpbiBjYXNlIGEgYnVnCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdCBuZWVkcyB0byBiZSBtYW51YWxseSByZXBvcnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9BUkNIJz48Z2xvc3N0ZXJtPkJVSUxEX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0FSQ0hbZG9jXSA9ICJUaGUgbmFtZSBvZiB0aGUgYnVpbGRpbmcgYXJjaGl0ZWN0dXJlIChlLmcuIGk2ODYpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGJ1aWxkIGhvc3QKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmk2ODY8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNldHMgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9BUkNIPC9maWxlbmFtZT4gZnJvbSB0aGUgbWFjaGluZSBuYW1lCisgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVkIGJ5IHRoZSA8ZmlsZW5hbWU+dW5hbWU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0FTX0FSQ0gnPjxnbG9zc3Rlcm0+QlVJTERfQVNfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfQVNfQVJDSFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFzc2VtYmxlciBmbGFncyBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhc3NlbWJsZXIgZmxhZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0LiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0FTX0FSQ0g8L2ZpbGVuYW1lPiBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9DQ19BUkNIJz48Z2xvc3N0ZXJtPkJVSUxEX0NDX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0NDX0FSQ0hbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBDIGNvbXBpbGVyIGZsYWdzIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEMgY29tcGlsZXIgZmxhZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0LiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0NDX0FSQ0g8L2ZpbGVuYW1lPiBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9DQ0xEJz48Z2xvc3N0ZXJtPkJVSUxEX0NDTEQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0NDTERbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxpbmtlciBjb21tYW5kIHRvIGJlIHVzZWQgZm9yIHRoZSBidWlsZCBob3N0IHdoZW4gdGhlIEMgY29tcGlsZXIgaXMgYmVpbmcgdXNlZCBhcyB0aGUgbGlua2VyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCB0byBiZSB1c2VkIGZvciB0aGUgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBDIGNvbXBpbGVyIGlzIGJlaW5nIHVzZWQgYXMgdGhlIGxpbmtlci4gQnkgZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0NDTEQ8L2ZpbGVuYW1lPiBwb2ludHMgdG8gR0NDIGFuZCBwYXNzZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfQ0NfQVJDSCc+PGZpbGVuYW1lPkJVSUxEX0NDX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFzc3VtaW5nIDxmaWxlbmFtZT5CVUlMRF9DQ19BUkNIPC9maWxlbmFtZT4gaXMgc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0NGTEFHUyc+PGdsb3NzdGVybT5CVUlMRF9DRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0NGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBjb21waWxlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBjb21waWxlciB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ0ZMQUdTJz48ZmlsZW5hbWU+Q0ZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0NQUEZMQUdTJz48Z2xvc3N0ZXJtPkJVSUxEX0NQUEZMQUdTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9DUFBGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmVwcm9jZXNzb3IgKGkuZS4gdG8gYm90aCB0aGUgQyBhbmQgdGhlIEMrKyBjb21waWxlcnMpIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIHByZXByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgICAoaS5lLiB0byBib3RoIHRoZSBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgaW4gdGhlIDxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNQUEZMQUdTJz48ZmlsZW5hbWU+Q1BQRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfQ1hYRkxBR1MnPjxnbG9zc3Rlcm0+QlVJTERfQ1hYRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0NYWEZMQUdTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIgd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMrKyBjb21waWxlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ1hYRkxBR1MnPjxmaWxlbmFtZT5DWFhGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9GQyc+PGdsb3NzdGVybT5CVUlMRF9GQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfRkNbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIEZvcnRyYW4gY29tcGlsZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIEZvcnRyYW4gY29tcGlsZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5CVUlMRF9GQzwvZmlsZW5hbWU+IHBvaW50cyB0bworICAgICAgICAgICAgICAgICAgICBHZm9ydHJhbiBhbmQgcGFzc2VzIGFzIGFyZ3VtZW50cyB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX0NDX0FSQ0gnPjxmaWxlbmFtZT5CVUlMRF9DQ19BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhc3N1bWluZyA8ZmlsZW5hbWU+QlVJTERfQ0NfQVJDSDwvZmlsZW5hbWU+IGlzIHNldC4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0xEJz48Z2xvc3N0ZXJtPkJVSUxEX0xEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9MRFtkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlua2VyIGNvbW1hbmQgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIEJ5IGRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9MRDwvZmlsZW5hbWU+IHBvaW50cyB0byB0aGUgR05VIGxpbmtlciAobGQpCisgICAgICAgICAgICAgICAgICAgIGFuZCBwYXNzZXMgYXMgYXJndW1lbnRzIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfTERfQVJDSCc+PGZpbGVuYW1lPkJVSUxEX0xEX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFzc3VtaW5nIDxmaWxlbmFtZT5CVUlMRF9MRF9BUkNIPC9maWxlbmFtZT4gaXMgc2V0LgorICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfTERfQVJDSCc+PGdsb3NzdGVybT5CVUlMRF9MRF9BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9MRF9BUkNIW2RvY10gPSAiU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yIHRoZSBidWlsZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbGlua2VyIGZsYWdzIGZvciB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgaG9zdC4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9MRF9BUkNIPC9maWxlbmFtZT4gaXMgZW1wdHkuCisgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9MREZMQUdTJz48Z2xvc3N0ZXJtPkJVSUxEX0xERkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX0xERkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGluIHRoZSA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MREZMQUdTJz48ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9PUFRJTUlaQVRJT04nPjxnbG9zc3Rlcm0+QlVJTERfT1BUSU1JWkFUSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9PUFRJTUlaQVRJT05bZG9jXSA9ICJTcGVjaWZpZXMgdGhlIG9wdGltaXphdGlvbiBmbGFncyBwYXNzZWQgdG8gdGhlIEMgY29tcGlsZXIgd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3Qgb3IgdGhlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgb3B0aW1pemF0aW9uIGZsYWdzIHBhc3NlZCB0byB0aGUgQyBjb21waWxlcgorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdCBvciB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmxhZ3MgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfQ0ZMQUdTJz48ZmlsZW5hbWU+QlVJTERfQ0ZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERTREtfQ0ZMQUdTJz48ZmlsZW5hbWU+QlVJTERTREtfQ0ZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX09QVElNSVpBVElPTjwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgICItTzIgLXBpcGUiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX09TJz48Z2xvc3N0ZXJtPkJVSUxEX09TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9PU1tkb2NdID0gIlRoZSBvcGVyYXRpbmcgc3lzdGVtIChpbiBsb3dlciBjYXNlKSBvZiB0aGUgYnVpbGRpbmcgYXJjaGl0ZWN0dXJlIChlLmcuIExpbnV4KS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbiB1c2Ugb24gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3QgKGUuZy4gImxpbnV4IikuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNldHMgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9PUzwvZmlsZW5hbWU+IGZyb20gdGhlIE9TIHJlcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+dW5hbWU8L2ZpbGVuYW1lPiBjb21tYW5kIC0gdGhlIGZpcnN0IHdvcmQsCisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCB0byBsb3dlci1jYXNlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfUFJFRklYJz48Z2xvc3N0ZXJtPkJVSUxEX1BSRUZJWDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfUFJFRklYW2RvY10gPSAiVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IHVzZWQgZm9yIG5hdGl2ZSByZWNpcGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IHVzZWQgZm9yIG5hdGl2ZSByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfUFJFRklYPC9maWxlbmFtZT4gdmFsdWUgdG8gc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX1BSRUZJWCc+PGZpbGVuYW1lPlRBUkdFVF9QUkVGSVg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+IHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfU1RSSVAnPjxnbG9zc3Rlcm0+QlVJTERfU1RSSVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX1NUUklQW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIGJlIHVzZWQgdG8gc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMgZnJvbSBiaW5hcmllcyBwcm9kdWNlZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gYmUgdXNlZCB0byBzdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scworICAgICAgICAgICAgICAgICAgICBmcm9tIGJpbmFyaWVzIHByb2R1Y2VkIGZvciB0aGUgYnVpbGQgaG9zdC4gQnkgZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX1NUUklQPC9maWxlbmFtZT4gcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX1BSRUZJWCc+PGZpbGVuYW1lPkJVSUxEX1BSRUZJWDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59c3RyaXA8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRF9TWVMnPjxnbG9zc3Rlcm0+QlVJTERfU1lTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9TWVNbZG9jXSA9ICJUaGUgdG9vbGNoYWluIGJpbmFyeSBwcmVmaXggdXNlZCBmb3IgbmF0aXZlIHJlY2lwZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSBhcmNoaXRlY3R1cmUgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCB0byB1c2Ugd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3QgKGkuZS4gd2hlbiBidWlsZGluZyA8ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcykuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9BUkNIJz48ZmlsZW5hbWU+QlVJTERfQVJDSDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX1ZFTkRPUic+PGZpbGVuYW1lPkJVSUxEX1ZFTkRPUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9PUyc+PGZpbGVuYW1lPkJVSUxEX09TPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSA8ZmlsZW5hbWU+QlVJTERfU1lTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgeW91cnNlbGYuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfVkVORE9SJz48Z2xvc3N0ZXJtPkJVSUxEX1ZFTkRPUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICBCVUlMRF9WRU5ET1JbZG9jXSA9ICJUaGUgdmVuZG9yIG5hbWUgdG8gdXNlIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB2ZW5kb3IgbmFtZSB0byB1c2Ugd2hlbiBidWlsZGluZyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGFuIGVtcHR5IHN0cmluZyAoIiIpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxERElSJz48Z2xvc3N0ZXJtPkJVSUxERElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRERJUltkb2NdID0gIlBvaW50cyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIEJ1aWxkIERpcmVjdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgbG9jYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZWZpbmUgdGhpcyBkaXJlY3RvcnkgaW5kaXJlY3RseSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYnkgcGFzc2luZyBpbiBhIEJ1aWxkIERpcmVjdG9yeSBwYXRoIHdoZW4geW91IHJ1bgorICAgICAgICAgICAgICAgICAgICB0aGUgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcnVuIHRoZSBzY3JpcHQgYW5kIGRvIG5vdCBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIHBhdGgsIHRoZSA8ZmlsZW5hbWU+QlVJTERESVI8L2ZpbGVuYW1lPiBkZWZhdWx0cyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGdsb3NzdGVybT5CVUlMREhJU1RPUllfQ09NTUlUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMREhJU1RPUllfQ09NTUlUW2RvY10gPSAiV2hlbiBpbmhlcml0aW5nIHRoZSBidWlsZGhpc3RvcnkgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRvIGNvbW1pdCB0aGUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgaW4gYSBsb2NhbCBHaXQgcmVwb3NpdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0byBjb21taXQgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhpc3Rvcnkgb3V0cHV0IGluIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byAiMSIsIHRoaXMgbG9jYWwgcmVwb3NpdG9yeSB3aWxsIGJlIG1haW50YWluZWQKKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCBhIGNvbW1pdCB3aWxsIGJlIGNyZWF0ZWQgb24gZXZlcnkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgZm9yIGNoYW5nZXMgdG8gZWFjaCB0b3AtbGV2ZWwgc3ViZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBoaXN0b3J5IG91dHB1dCAoaW1hZ2VzLCBwYWNrYWdlcywgYW5kIHNkaykuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHRyYWNrIGNoYW5nZXMgdG8gYnVpbGQgaGlzdG9yeSBvdmVyCisgICAgICAgICAgICAgICAgICAgIHRpbWUsIHlvdSBzaG91bGQgc2V0IHRoaXMgdmFsdWUgdG8gIjEiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGNsYXNzCisgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IGNvbW1pdCB0aGUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgaW4gYSBsb2NhbAorICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCVUlMREhJU1RPUllfQ09NTUlUID89ICIwIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1InPjxnbG9zc3Rlcm0+QlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1I8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SW2RvY10gPSAiV2hlbiBpbmhlcml0aW5nIHRoZSBidWlsZGhpc3RvcnkgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBhdXRob3IgdG8gdXNlIGZvciBlYWNoIEdpdCBjb21taXQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJ1aWxkaGlzdG9yeSc+PGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIGF1dGhvciB0byB1c2UgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgR2l0IGNvbW1pdC4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHRoZSA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1I8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB3b3JrLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9DT01NSVQnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG11c3QgYmUgc2V0IHRvICIxIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcXVpcmVzIHRoYXQgdGhlIHZhbHVlIHlvdSBwcm92aWRlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgdGFrZXMgdGhlIGZvcm0gb2YgIm5hbWUgPHJlcGxhY2VhYmxlPmVtYWlsQGhvc3Q8L3JlcGxhY2VhYmxlPiIuCisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyBhbiBlbWFpbCBhZGRyZXNzIG9yIGhvc3QgdGhhdCBpcyBub3QgdmFsaWQgZG9lcworICAgICAgICAgICAgICAgICAgICBub3QgcHJvZHVjZSBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgICAgICBzZXRzIHRoZSB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SID89ICJidWlsZGhpc3RvcnkgJmx0O2J1aWxkaGlzdG9yeUAke0RJU1RST30mZ3Q7IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERISVNUT1JZX0RJUic+PGdsb3NzdGVybT5CVUlMREhJU1RPUllfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMREhJU1RPUllfRElSW2RvY10gPSAiV2hlbiBpbmhlcml0aW5nIHRoZSBidWlsZGhpc3RvcnkgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYnVpbGQgaGlzdG9yeSBpbmZvcm1hdGlvbiBpcyBrZXB0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPjxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaGlzdG9yeSBpbmZvcm1hdGlvbiBpcyBrZXB0LgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHZhcmlhYmxlIHdvcmtzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkuY2xhc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgICAgICBzZXRzIHRoZSBkaXJlY3RvcnkgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCVUlMREhJU1RPUllfRElSID89ICIke1RPUERJUn0vYnVpbGRoaXN0b3J5IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERISVNUT1JZX0ZFQVRVUkVTJz48Z2xvc3N0ZXJtPkJVSUxESElTVE9SWV9GRUFUVVJFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERISVNUT1JZX0ZFQVRVUkVTW2RvY10gPSAiV2hlbiBpbmhlcml0aW5nIHRoZSBidWlsZGhpc3RvcnkgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBidWlsZCBoaXN0b3J5IGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJ1aWxkaGlzdG9yeSc+PGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGJ1aWxkIGhpc3Rvcnkgd29ya3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IHRoZXNlIGZlYXR1cmVzIGluIHRoZSBmb3JtIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgc3BhY2Utc2VwYXJhdGVkIGxpc3Q6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHlzaXMgb2YgdGhlIGNvbnRlbnRzIG9mIGltYWdlcywgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgYW1vbmcgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnBhY2thZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXNpcyBvZiB0aGUgY29udGVudHMgb2YgaW5kaXZpZHVhbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c2RrOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHlzaXMgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGtpdCAoU0RLKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dGFzazo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmUgb3V0cHV0IGZpbGUgc2lnbmF0dXJlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkIHN0YXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3N0YXRlKSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNhdmVzIG9uZSBmaWxlIHBlciB0YXNrIGFuZCBsaXN0cyB0aGUgU0hBLTI1NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtcyBmb3IgZWFjaCBmaWxlIHN0YWdlZCAoaS5lLiB0aGUgb3V0cHV0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2spLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgICAgICBlbmFibGVzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQlVJTERISVNUT1JZX0ZFQVRVUkVTID89ICJpbWFnZSBwYWNrYWdlIHNkayIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxESElTVE9SWV9JTUFHRV9GSUxFUyc+PGdsb3NzdGVybT5CVUlMREhJU1RPUllfSU1BR0VfRklMRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxESElTVE9SWV9JTUFHRV9GSUxFU1tkb2NdID0gIldoZW4gaW5oZXJpdGluZyB0aGUgYnVpbGRoaXN0b3J5IGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgcGF0aHMgdG8gZmlsZXMgY29waWVkIGZyb20gdGhlIGltYWdlIGNvbnRlbnRzIGludG8gdGhlIGJ1aWxkIGhpc3RvcnkgZGlyZWN0b3J5IHVuZGVyIGFuICJpbWFnZS1maWxlcyIgZGlyZWN0b3J5IGluIHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBpbWFnZSwgc28gdGhhdCB5b3UgY2FuIHRyYWNrIHRoZSBjb250ZW50cyBvZiBlYWNoIGZpbGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJ1aWxkaGlzdG9yeSc+PGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHBhdGhzIHRvIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGNvcGllZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBpbWFnZSBjb250ZW50cyBpbnRvIHRoZSBidWlsZCBoaXN0b3J5IGRpcmVjdG9yeSB1bmRlcgorICAgICAgICAgICAgICAgICAgICBhbiAiaW1hZ2UtZmlsZXMiIGRpcmVjdG9yeSBpbiB0aGUgZGlyZWN0b3J5IGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UsIHNvIHRoYXQgeW91IGNhbiB0cmFjayB0aGUgY29udGVudHMgb2YgZWFjaCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyB0byBjb3B5IDxmaWxlbmFtZT4vZXRjL3Bhc3N3ZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+L2V0Yy9ncm91cDwvZmlsZW5hbWU+LCB3aGljaCBhbGxvd3MgeW91IHRvCisgICAgICAgICAgICAgICAgICAgIG1vbml0b3IgZm9yIGNoYW5nZXMgaW4gdXNlciBhbmQgZ3JvdXAgZW50cmllcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBtb2RpZnkgdGhlIGxpc3QgdG8gaW5jbHVkZSBhbnkgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmeWluZyBhbiBpbnZhbGlkIHBhdGggZG9lcyBub3QgcHJvZHVjZSBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgY2FuIGluY2x1ZGUgZmlsZXMgdGhhdCBtaWdodAorICAgICAgICAgICAgICAgICAgICBub3QgYWx3YXlzIGJlIHByZXNlbnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgcGF0aHMgdG8gdGhlIGZvbGxvd2luZyBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCVUlMREhJU1RPUllfSU1BR0VfRklMRVMgPz0gIi9ldGMvcGFzc3dkIC9ldGMvZ3JvdXAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMREhJU1RPUllfUFVTSF9SRVBPJz48Z2xvc3N0ZXJtPkJVSUxESElTVE9SWV9QVVNIX1JFUE88L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxESElTVE9SWV9QVVNIX1JFUE9bZG9jXSA9ICJXaGVuIGluaGVyaXRpbmcgdGhlIGJ1aWxkaGlzdG9yeSBjbGFzcywgdGhpcyB2YXJpYWJsZSBvcHRpb25hbGx5IHNwZWNpZmllcyBhIHJlbW90ZSByZXBvc2l0b3J5IHRvIHdoaWNoIGJ1aWxkIGhpc3RvcnkgcHVzaGVzIEdpdCBjaGFuZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPjxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgb3B0aW9uYWxseSBzcGVjaWZpZXMgYSByZW1vdGUKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB0byB3aGljaCBidWlsZCBoaXN0b3J5IHB1c2hlcyBHaXQgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIDxmaWxlbmFtZT5CVUlMREhJU1RPUllfUFVTSF9SRVBPPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gd29yaywKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9DT01NSVQnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgc2V0IHRvICIxIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgc2hvdWxkIGNvcnJlc3BvbmQgdG8gYSByZW1vdGUKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyB0aGF0IHNwZWNpZmllcyBhIHJlcG9zaXRvcnkgYXMgdW5kZXJzdG9vZCBieQorICAgICAgICAgICAgICAgICAgICBHaXQsIG9yIGFsdGVybmF0aXZlbHkgdG8gYSByZW1vdGUgbmFtZSB0aGF0IHlvdSBoYXZlCisgICAgICAgICAgICAgICAgICAgIHNldCB1cCBtYW51YWxseSB1c2luZyA8ZmlsZW5hbWU+Z2l0IHJlbW90ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgICAgICBzZXRzIHRoZSB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJVSUxESElTVE9SWV9QVVNIX1JFUE8gPz0gIiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEU0RLX0NGTEFHUyc+PGdsb3NzdGVybT5CVUlMRFNES19DRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEU0RLX0NGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBjb21waWxlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgU0RLLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIGNvbXBpbGVyIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgaW4gdGhlIDxmaWxlbmFtZT5uYXRpdmVzZGstPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNGTEFHUyc+PGZpbGVuYW1lPkNGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRFNES19DUFBGTEFHUyc+PGdsb3NzdGVybT5CVUlMRFNES19DUFBGTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERTREtfQ1BQRkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvciAoaS5lLiB0byBib3RoIHRoZSBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykgd2hlbiBidWlsZGluZyBmb3IgdGhlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmUtcHJvY2Vzc29yCisgICAgICAgICAgICAgICAgICAgIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGluIHRoZSA8ZmlsZW5hbWU+bmF0aXZlc2RrLTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DUFBGTEFHUyc+PGZpbGVuYW1lPkNQUEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEU0RLX0NYWEZMQUdTJz48Z2xvc3N0ZXJtPkJVSUxEU0RLX0NYWEZMQUdTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRFNES19DWFhGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQysrIGNvbXBpbGVyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMrKyBjb21waWxlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGluIHRoZSA8ZmlsZW5hbWU+bmF0aXZlc2RrLTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DWFhGTEFHUyc+PGZpbGVuYW1lPkNYWEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEU0RLX0xERkxBR1MnPjxnbG9zc3Rlcm0+QlVJTERTREtfTERGTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERTREtfTERGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGluIHRoZSA8ZmlsZW5hbWU+bmF0aXZlc2RrLTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MREZMQUdTJz48ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CVUlMRFNUQVRTX0JBU0UnPjxnbG9zc3Rlcm0+QlVJTERTVEFUU19CQVNFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRFNUQVRTX0JBU0VbZG9jXSA9ICJQb2ludHMgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBob2xkcyBidWlsZCBzdGF0aXN0aWNzIHdoZW4geW91IHVzZSBhbmQgZW5hYmxlIHRoZSBidWlsZHN0YXRzIGNsYXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcyB3aGVuIHlvdSB1c2UgYW5kIGVuYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYnVpbGRzdGF0cyc+PGZpbGVuYW1lPmJ1aWxkc3RhdHM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+QlVJTERTVEFUU19CQVNFPC9maWxlbmFtZT4gZGlyZWN0b3J5IGRlZmF1bHRzCisgICAgICAgICAgICAgICAgICAgIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L2J1aWxkc3RhdHMvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVTWUJPWF9TUExJVF9TVUlEJz48Z2xvc3N0ZXJtPkJVU1lCT1hfU1BMSVRfU1VJRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVTWUJPWF9TUExJVF9TVUlEW2RvY10gPSAiRm9yIHRoZSBCdXN5Qm94IHJlY2lwZSwgc3BlY2lmaWVzIHdoZXRoZXIgdG8gc3BsaXQgdGhlIG91dHB1dCBleGVjdXRhYmxlIGZpbGUgaW50byB0d28gcGFydHM6IG9uZSBmb3IgZmVhdHVyZXMgdGhhdCByZXF1aXJlIHNldHVpZCByb290LCBhbmQgb25lIGZvciB0aGUgcmVtYWluaW5nIGZlYXR1cmVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBCdXN5Qm94IHJlY2lwZSwgc3BlY2lmaWVzIHdoZXRoZXIgdG8gc3BsaXQgdGhlCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCBleGVjdXRhYmxlIGZpbGUgaW50byB0d28gcGFydHM6IG9uZSBmb3IgZmVhdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCByZXF1aXJlIDxmaWxlbmFtZT5zZXR1aWQgcm9vdDwvZmlsZW5hbWU+LCBhbmQgb25lIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgcmVtYWluaW5nIGZlYXR1cmVzIChpLmUuIHRob3NlIHRoYXQgZG8gbm90IHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNldHVpZCByb290PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkJVU1lCT1hfU1BMSVRfU1VJRDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzIHRvICIxIiwgd2hpY2ggcmVzdWx0cyBpbiBzcGxpdHRpbmcgdGhlIG91dHB1dAorICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgdG8gIjAiIHRvIGdldCBhIHNpbmdsZSBvdXRwdXQgZXhlY3V0YWJsZQorICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS1jJz48dGl0bGU+QzwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DQUNIRSc+PGdsb3NzdGVybT5DQUNIRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ0FDSEVbZG9jXSAgPSAiVGhlIGRpcmVjdG9yeSBCaXRCYWtlIHVzZXMgdG8gc3RvcmUgYSBjYWNoZSBvZiB0aGUgbWV0YWRhdGEuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBCaXRCYWtlIHVzZXMgdG8gc3RvcmUgYSBjYWNoZQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHBhcnNlZCBldmVyeSB0aW1lIEJpdEJha2UgaXMKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DQyc+PGdsb3NzdGVybT5DQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ0NbZG9jXSA9ICJNaW5pbXVtIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEMgY29tcGlsZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdXNlZCB0byBydW4gdGhlIEMKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ0ZMQUdTJz48Z2xvc3N0ZXJtPkNGTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ0ZMQUdTW2RvY10gPSAiRmxhZ3MgcGFzc2VkIHRvIHRoZSBDIGNvbXBpbGVyIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4gVGhpcyB2YXJpYWJsZSBldmFsdWF0ZXMgdG8gdGhlIHNhbWUgYXMgVEFSR0VUX0NGTEFHUy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBleHBvcnRlZCB0byBhbiBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGh1cyBtYWRlIHZpc2libGUgdG8gdGhlIHNvZnR3YXJlIGJlaW5nCisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGR1cmluZyB0aGUgY29tcGlsYXRpb24gc3RlcC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpbml0aWFsaXphdGlvbiBmb3IgPGZpbGVuYW1lPkNGTEFHUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmllcyBkZXBlbmRpbmcgb24gd2hhdCBpcyBiZWluZyBidWlsdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0NGTEFHUyc+PGZpbGVuYW1lPlRBUkdFVF9DRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX0NGTEFHUyc+PGZpbGVuYW1lPkJVSUxEX0NGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERTREtfQ0ZMQUdTJz48ZmlsZW5hbWU+QlVJTERTREtfQ0ZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgYW4gU0RLIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay08L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ0xBU1NPVkVSUklERSc+PGdsb3NzdGVybT5DTEFTU09WRVJSSURFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDTEFTU09WRVJSSURFW2RvY10gPSAiQW4gaW50ZXJuYWwgdmFyaWFibGUgc3BlY2lmeWluZyB0aGUgc3BlY2lhbCBjbGFzcyBvdmVycmlkZSB0aGF0IHNob3VsZCBjdXJyZW50bHkgYXBwbHkgKGUuZy4gImNsYXNzLXRhcmdldCIsICJjbGFzcy1uYXRpdmUiLCBhbmQgc28gZm9ydGgpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQW4gaW50ZXJuYWwgdmFyaWFibGUgc3BlY2lmeWluZyB0aGUgc3BlY2lhbCBjbGFzcyBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBjdXJyZW50bHkgYXBwbHkgKGUuZy4gImNsYXNzLXRhcmdldCIsCisgICAgICAgICAgICAgICAgICAgICJjbGFzcy1uYXRpdmUiLCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICBUaGUgY2xhc3NlcyB0aGF0IHVzZSB0aGlzIHZhcmlhYmxlIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLW5hdGl2ZSc+PGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbmF0aXZlc2RrJz48ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIHNldCB0aGUgdmFyaWFibGUgdG8gYXBwcm9wcmlhdGUgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DTEFTU09WRVJSSURFPC9maWxlbmFtZT4gZ2V0cyBpdHMgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzLXRhcmdldCIgdmFsdWUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgb3ZlcnJpZGUgYWxsb3dzIHlvdSB0byBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgIGV4dHJhIGZpbGVzLCBidXQgb25seSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIGluc3RhbGwgbXktZXh0cmEtZmlsZSAke0R9JHtzeXNjb25mZGlyfQorICAgICB9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIDxmaWxlbmFtZT5GT088L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gIm5hdGl2ZSIgd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QsIGFuZAorICAgICAgICAgICAgICAgICAgICB0byAib3RoZXIiIHdoZW4gbm90IGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGT09fY2xhc3MtbmF0aXZlID0gIm5hdGl2ZSIKKyAgICAgRk9PID0gIm90aGVyIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSBiZWhpbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNMQVNTT1ZFUlJJREU8L2ZpbGVuYW1lPiBpcyBzaW1wbHkgdGhhdCBpdCBpcworICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItT1ZFUlJJREVTJz48ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNMRUFOQlJPS0VOJz48Z2xvc3N0ZXJtPkNMRUFOQlJPS0VOPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDTEVBTkJST0tFTltkb2NdID0gIlByZXZlbnRzIHRoZSBidWlsZCBzeXN0ZW0gZnJvbSBydW5uaW5nICdtYWtlIGNsZWFuJyBkdXJpbmcgdGhlIGRvX2NvbmZpZ3VyZSB0YXNrLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICIxIiB3aXRoaW4gYSByZWNpcGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DTEVBTkJST0tFTjwvZmlsZW5hbWU+IHNwZWNpZmllcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWFrZSBjbGVhbjwvZmlsZW5hbWU+IGNvbW1hbmQgZG9lcworICAgICAgICAgICAgICAgICAgICBub3Qgd29yayBmb3IgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdpbGwgbm90IHRyeQorICAgICAgICAgICAgICAgICAgICB0byBydW4gPGZpbGVuYW1lPm1ha2UgY2xlYW48L2ZpbGVuYW1lPiBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzaywgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09NQklORURfRkVBVFVSRVMnPjxnbG9zc3Rlcm0+Q09NQklORURfRkVBVFVSRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPTUJJTkVEX0ZFQVRVUkVTW2RvY10gPSAiQSBzZXQgb2YgZmVhdHVyZXMgY29tbW9uIGJldHdlZW4gTUFDSElORV9GRUFUVVJFUyBhbmQgRElTVFJPX0ZFQVRVUkVTLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgYSBsaXN0IG9mIGhhcmR3YXJlIGZlYXR1cmVzIHRoYXQgYXJlIGVuYWJsZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgYm90aAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0IGxpc3Qgb2YgZmVhdHVyZXMgY29udGFpbnMgZmVhdHVyZXMgdGhhdCBtYWtlCisgICAgICAgICAgICAgICAgICAgIHNlbnNlIHRvIGJlIGNvbnRyb2xsZWQgYm90aCBhdCB0aGUgbWFjaGluZSBhbmQgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgImJsdWV0b290aCIgZmVhdHVyZSByZXF1aXJlcyBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IGJ1dCBzaG91bGQgYWxzbyBiZSBvcHRpb25hbCBhdCB0aGUgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGxldmVsLCBpbiBjYXNlIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyBCbHVldG9vdGggYnV0IHlvdQorICAgICAgICAgICAgICAgICAgICBkbyBub3QgZXZlciBpbnRlbmQgdG8gdXNlIGl0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTU1PTl9MSUNFTlNFX0RJUic+PGdsb3NzdGVybT5DT01NT05fTElDRU5TRV9ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPTU1PTl9MSUNFTlNFX0RJUltkb2NdID0gIlBvaW50cyB0byBtZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcyBpbiB0aGUgU291cmNlIERpcmVjdG9yeSwgd2hpY2ggaXMgd2hlcmUgZ2VuZXJpYyBsaWNlbnNlIGZpbGVzIHJlc2lkZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHdoZXJlIGdlbmVyaWMgbGljZW5zZSBmaWxlcyByZXNpZGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09NUEFUSUJMRV9IT1NUJz48Z2xvc3N0ZXJtPkNPTVBBVElCTEVfSE9TVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ09NUEFUSUJMRV9IT1NUW2RvY10gPSAiQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCByZXNvbHZlcyB0byBvbmUgb3IgbW9yZSBob3N0cyAod2hlbiB0aGUgcmVjaXBlIGlzIG5hdGl2ZSkgb3Igb25lIG9yIG1vcmUgdGFyZ2V0cyAod2hlbiB0aGUgcmVjaXBlIGlzIG5vbi1uYXRpdmUpIHdpdGggd2hpY2ggYSByZWNpcGUgaXMgY29tcGF0aWJsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgcmVzb2x2ZXMgdG8gb25lIG9yIG1vcmUgaG9zdHMKKyAgICAgICAgICAgICAgICAgICAgKHdoZW4gdGhlIHJlY2lwZSBpcyBuYXRpdmUpIG9yIG9uZSBvciBtb3JlIHRhcmdldHMgKHdoZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBpcyBub24tbmF0aXZlKSB3aXRoIHdoaWNoIGEgcmVjaXBlIGlzIGNvbXBhdGlibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gaXMgbWF0Y2hlZCBhZ2FpbnN0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InZhci1IT1NUX1NZUyI+PGZpbGVuYW1lPkhPU1RfU1lTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgdmFyaWFibGUgdG8gc3RvcCByZWNpcGVzIGZyb20gYmVpbmcgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzZXMgb2Ygc3lzdGVtcyB3aXRoIHdoaWNoIHRoZSByZWNpcGVzIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgU3RvcHBpbmcgdGhlc2UgYnVpbGRzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBrZXJuZWxzLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgYWxzbyBoZWxwcyB0byBpbmNyZWFzZSBwYXJzaW5nIHNwZWVkCisgICAgICAgICAgICAgICAgICAgIHNpbmNlIHRoZSBidWlsZCBzeXN0ZW0gc2tpcHMgcGFyc2luZyByZWNpcGVzIG5vdAorICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgc3lzdGVtLgorICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09NUEFUSUJMRV9NQUNISU5FJz48Z2xvc3N0ZXJtPkNPTVBBVElCTEVfTUFDSElORTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ09NUEFUSUJMRV9NQUNISU5FW2RvY10gPSAiQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCByZXNvbHZlcyB0byBvbmUgb3IgbW9yZSB0YXJnZXQgbWFjaGluZXMgd2l0aCB3aGljaCBhIHJlY2lwZSBpcyBjb21wYXRpYmxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCByZXNvbHZlcyB0byBvbmUgb3IgbW9yZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgbWFjaGluZXMgd2l0aCB3aGljaCBhIHJlY2lwZSBpcyBjb21wYXRpYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVndWxhciBleHByZXNzaW9uIGlzIG1hdGNoZWQgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJ2YXItTUFDSElORU9WRVJSSURFUyI+PGZpbGVuYW1lPk1BQ0hJTkVPVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSB2YXJpYWJsZSB0byBzdG9wIHJlY2lwZXMgZnJvbSBiZWluZyBidWlsdAorICAgICAgICAgICAgICAgICAgICBmb3IgbWFjaGluZXMgd2l0aCB3aGljaCB0aGUgcmVjaXBlcyBhcmUgbm90IGNvbXBhdGlibGUuCisgICAgICAgICAgICAgICAgICAgIFN0b3BwaW5nIHRoZXNlIGJ1aWxkcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGgga2VybmVscy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGFsc28gaGVscHMgdG8gaW5jcmVhc2UgcGFyc2luZyBzcGVlZAorICAgICAgICAgICAgICAgICAgICBzaW5jZSB0aGUgYnVpbGQgc3lzdGVtIHNraXBzIHBhcnNpbmcgcmVjaXBlcyBub3QKKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09NUExFTUVOVEFSWV9HTE9CJz48Z2xvc3N0ZXJtPkNPTVBMRU1FTlRBUllfR0xPQjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ09NUExFTUVOVEFSWV9HTE9CW2RvY10gPSAiRGVmaW5lcyB3aWxkY2FyZHMgdG8gbWF0Y2ggd2hlbiBpbnN0YWxsaW5nIGEgbGlzdCBvZiBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGZvciBhbGwgdGhlIHBhY2thZ2VzIGluc3RhbGxlZCBpbiBhbiBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgd2lsZGNhcmRzIHRvIG1hdGNoIHdoZW4gaW5zdGFsbGluZyBhIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBmb3IgYWxsIHRoZSBwYWNrYWdlcyBleHBsaWNpdGx5CisgICAgICAgICAgICAgICAgICAgIChvciBpbXBsaWNpdGx5KSBpbnN0YWxsZWQgaW4gYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5DT01QTEVNRU5UQVJZX0dMT0I8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyBVbml4IGZpbGVuYW1lIHBhdHRlcm4gbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZm5tYXRjaC5odG1sI21vZHVsZS1mbm1hdGNoJz48ZmlsZW5hbWU+Zm5tYXRjaDwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgc2ltaWxhciB0byB0aGUgVW5peCBzdHlsZSBwYXRobmFtZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICBleHBhbnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZ2xvYi5odG1sJz48ZmlsZW5hbWU+Z2xvYjwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgbGlzdCBvZiBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGlzIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBpdGVtIHRoYXQgY2FuIGJlIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBBbiBleGFtcGxlIHVzYWdlIG9mIHRoaXMgaXMgdGhlICJkZXYtcGtncyIgaXRlbSB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gd2lsbAorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kZXYgcGFja2FnZXMgKGNvbnRhaW5pbmcgaGVhZGVycyBhbmQgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZmlsZXMpIGZvciBldmVyeSBwYWNrYWdlIGluIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gYWRkIGEgbmV3IGZlYXR1cmUgaXRlbSBwb2ludGluZyB0byBhIHdpbGRjYXJkLCB1c2UgYQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmbGFnIHRvIHNwZWNpZnkgdGhlIGZlYXR1cmUgaXRlbSBuYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIHZhbHVlIHRvIHNwZWNpZnkgdGhlIHdpbGRjYXJkLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ09NUExFTUVOVEFSWV9HTE9CW2Rldi1wa2dzXSA9ICcqLWRldicKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTVBPTkVOVFNfRElSJz48Z2xvc3N0ZXJtPkNPTVBPTkVOVFNfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT01QT05FTlRTX0RJUltkb2NdID0gIlN0b3JlcyBzeXNyb290IGNvbXBvbmVudHMgZm9yIGVhY2ggcmVjaXBlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3RvcmVzIHN5c3Jvb3QgY29tcG9uZW50cyBmb3IgZWFjaCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTVBPTkVOVFNfRElSPC9maWxlbmFtZT4gd2hlbiBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLXNwZWNpZmljIHN5c3Jvb3RzIGZvciBvdGhlciByZWNpcGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcworICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1RBR0lOR19ESVInPjxmaWxlbmFtZT5TVEFHSU5HX0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59LWNvbXBvbmVudHM8L2ZpbGVuYW1lPi4iCisgICAgICAgICAgICAgICAgICAgIChpLmUuICI8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9zeXNyb290cy1jb21wb25lbnRzPC9maWxlbmFtZT4iKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DT05GX1ZFUlNJT04nPjxnbG9zc3Rlcm0+Q09ORl9WRVJTSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT05GX1ZFUlNJT05bZG9jXSA9ICJUcmFja3MgdGhlIHZlcnNpb24gb2YgbG9jYWwuY29uZi4gIEluY3JlYXNlZCBlYWNoIHRpbWUgYnVpbGQvY29uZi8gY2hhbmdlcyBpbmNvbXBhdGlibHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUcmFja3MgdGhlIHZlcnNpb24gb2YgdGhlIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGZvciA8ZmlsZW5hbWU+Q09ORl9WRVJTSU9OPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50cyBlYWNoIHRpbWUgPGZpbGVuYW1lPmJ1aWxkL2NvbmYvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTkZGSUxFUyc+PGdsb3NzdGVybT5DT05GRklMRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPTkZGSUxFU1tkb2NdID0gIklkZW50aWZpZXMgZWRpdGFibGUgb3IgY29uZmlndXJhYmxlIGZpbGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwYWNrYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllcyBlZGl0YWJsZSBvciBjb25maWd1cmFibGUgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBhIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBQYWNrYWdlIE1hbmFnZW1lbnQgU3lzdGVtIChQTVMpIGlzIGJlaW5nIHVzZWQgdG8gdXBkYXRlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIG9uIHRoZSB0YXJnZXQgc3lzdGVtLCBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgeW91IGhhdmUgY2hhbmdlZCBhZnRlciB0aGUgb3JpZ2luYWwgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGF0IHlvdSBub3cgd2FudCB0byByZW1haW4gdW5jaGFuZ2VkIGFyZSBvdmVyd3JpdHRlbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIGVkaXRhYmxlIGZpbGVzIG1pZ2h0IGV4aXN0IGluIHRoZSBwYWNrYWdlIHRoYXQgeW91IGRvIG5vdAorICAgICAgICAgICAgICAgICAgICB3YW50IHJlc2V0IGFzIHBhcnQgb2YgdGhlIHBhY2thZ2UgdXBkYXRlIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+Q09ORkZJTEVTPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gbGlzdCB0aGUgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgdGhhdCB5b3Ugd2lzaCB0byBwcmV2ZW50IHRoZSBQTVMgZnJvbSBvdmVyd3JpdGluZyBkdXJpbmcgdGhpcyB1cGRhdGUgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSA8ZmlsZW5hbWU+Q09ORkZJTEVTPC9maWxlbmFtZT4gdmFyaWFibGUsIHByb3ZpZGUgYSBwYWNrYWdlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgdGhhdCBpZGVudGlmaWVzIHRoZSByZXN1bHRpbmcgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlbiwgcHJvdmlkZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2ZpbGUxIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9maWxlMiAke3N5c2NvbmZkaXJ9L2ZpbGUzIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgcmVsYXRpb25zaGlwIGV4aXN0cyBiZXR3ZWVuIHRoZSA8ZmlsZW5hbWU+Q09ORkZJTEVTPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRklMRVMnPkZJTEVTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIGxpc3RlZCB3aXRoaW4gPGZpbGVuYW1lPkNPTkZGSUxFUzwvZmlsZW5hbWU+IG11c3QgYmUgYSBzdWJzZXQgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVzIGxpc3RlZCB3aXRoaW4gPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgeW91IHByb3ZpZGUgd2l0aCA8ZmlsZW5hbWU+Q09ORkZJTEVTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYXJlIHNpbXBseSBiZWluZyBpZGVudGlmaWVkIHNvIHRoYXQgdGhlIFBNUyB3aWxsIG5vdCBvdmVyd3JpdGUgdGhlbSwKKyAgICAgICAgICAgICAgICAgICAgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMgbXVzdCBhbHJlYWR5IGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIHBhY2thZ2UgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gc3BlY2lmeWluZyBwYXRocyBhcyBwYXJ0IG9mIHRoZSA8ZmlsZW5hbWU+Q09ORkZJTEVTPC9maWxlbmFtZT4gdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gdXNlIGFwcHJvcHJpYXRlIHBhdGggdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPiR7c3lzY29uZmRpcn08L2ZpbGVuYW1lPiByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0YzwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4ke2JpbmRpcn08L2ZpbGVuYW1lPiByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhbiA8ZmlsZW5hbWU+L3Vzci9iaW48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiB0aGVzZSB2YXJpYWJsZXMgYXQgdGhlIHRvcCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRSc+PGdsb3NzdGVybT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ09ORklHX0lOSVRSQU1GU19TT1VSQ0VbZG9jXSA9ICJJZGVudGlmaWVzIHRoZSBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpIHNvdXJjZSBmaWxlcy4gVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcmVjZWl2ZXMgYW5kIHVzZXMgdGhpcyBrZXJuZWwgS2NvbmZpZyB2YXJpYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXMgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcykgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZWNlaXZlcyBhbmQgdXNlcworICAgICAgICAgICAgICAgICAgICB0aGlzIGtlcm5lbCBLY29uZmlnIHZhcmlhYmxlIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgdmFyaWFibGUgaXMgc2V0IHRvIG51bGwgKCIiKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZmlsZW5hbWU+IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgYSBzaW5nbGUgY3BpbyBhcmNoaXZlIHdpdGggYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNwaW88L2ZpbGVuYW1lPiBzdWZmaXggb3IgYQorICAgICAgICAgICAgICAgICAgICBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyBhbmQgZmlsZXMgZm9yIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbml0cmFtZnMgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEEgY3BpbyBhcmNoaXZlIHNob3VsZCBjb250YWluIGEgZmlsZXN5c3RlbSBhcmNoaXZlCisgICAgICAgICAgICAgICAgICAgIHRvIGJlIHVzZWQgYXMgYW4gaW5pdHJhbWZzIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyBzaG91bGQgY29udGFpbiBhIGZpbGVzeXN0ZW0gbGF5b3V0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBpbml0cmFtZnMgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEZpbGVzIHNob3VsZCBjb250YWluIGVudHJpZXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXNyL2dlbl9pbml0X2NwaW88L2ZpbGVuYW1lPiBwcm9ncmFtIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgdHJlZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIGltYWdlIHdpbGwgYmUgdGhlIGFnZ3JlZ2F0ZSBvZiBhbGwgb2YgdGhlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTkZJR19TSVRFJz48Z2xvc3N0ZXJtPkNPTkZJR19TSVRFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT05GSUdfU0lURVtkb2NdID0gIkEgbGlzdCBvZiBmaWxlcyB0aGF0IGNvbnRhaW5zIGF1dG9jb25mIHRlc3QgcmVzdWx0cyByZWxldmFudCB0byB0aGUgY3VycmVudCBidWlsZC4gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5IHRoZSBBdXRvdG9vbHMgdXRpbGl0aWVzIHdoZW4gcnVubmluZyBjb25maWd1cmUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgZmlsZXMgdGhhdCBjb250YWlucyA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiB0ZXN0IHJlc3VsdHMgcmVsZXZhbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGN1cnJlbnQgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBieSB0aGUgQXV0b3Rvb2xzIHV0aWxpdGllcyB3aGVuIHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTkZJR1VSRV9GTEFHUyc+PGdsb3NzdGVybT5DT05GSUdVUkVfRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPTkZJR1VSRV9GTEFHU1tkb2NdID0gIlRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IgR05VIGNvbmZpZ3VyZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IgR05VIGNvbmZpZ3VyZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DT05GTElDVF9ESVNUUk9fRkVBVFVSRVMnPjxnbG9zc3Rlcm0+Q09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT05GTElDVF9ESVNUUk9fRkVBVFVSRVNbZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgY2xhc3MsIHRoaXMgdmFyaWFibGUgaWRlbnRpZmllcyBkaXN0cmlidXRpb24gZmVhdHVyZXMgdGhhdCB3b3VsZCBiZSBpbiBjb25mbGljdCBzaG91bGQgdGhlIHJlY2lwZSBiZSBidWlsdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGlzdHJvX2ZlYXR1cmVzX2NoZWNrJz48ZmlsZW5hbWU+ZGlzdHJvX2ZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlkZW50aWZpZXMgZGlzdHJpYnV0aW9uIGZlYXR1cmVzIHRoYXQgd291bGQKKyAgICAgICAgICAgICAgICAgICAgYmUgaW4gY29uZmxpY3Qgc2hvdWxkIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTkZMSUNUX0RJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGxpc3RzIGEgZmVhdHVyZSB0aGF0IGFsc28gYXBwZWFycyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGFuIGVycm9yIG9jY3VycyBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN0b3BzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSc+PGdsb3NzdGVybT5DT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERVtkb2NdID0gIkxpY2Vuc2VzIHRvIGV4Y2x1ZGUgaW4gdGhlIHNvdXJjZSBhcmNoaXZlZCBieSB0aGUgYXJjaGl2ZXIgY2xhc3MuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGxpY2Vuc2VzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGFyY2hpdmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hcmNoaXZlcic+PGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgaWYgYSBsaWNlbnNlIGluIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIGluIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09QWUxFRlRfTElDRU5TRV9FWENMVURFPC9maWxlbmFtZT4sIHRoZW4gaXRzCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBpcyBub3QgYXJjaGl2ZWQgYnkgdGhlIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Q09QWUxFRlRfTElDRU5TRV9FWENMVURFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUnPjxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlLCB3aGljaCBpcyAiQ0xPU0VEIFByb3ByaWV0YXJ5IiwgZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREU8L2ZpbGVuYW1lPiBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNvcHlsZWZ0X2ZpbHRlcic+PGZpbGVuYW1lPmNvcHlsZWZ0X2ZpbHRlcjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggaXMgaW5oZXJpdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUnPjxnbG9zc3Rlcm0+Q09QWUxFRlRfTElDRU5TRV9JTkNMVURFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREVbZG9jXSA9ICJMaWNlbnNlcyB0byBpbmNsdWRlIGluIHRoZSBzb3VyY2UgYXJjaGl2ZWQgYnkgdGhlIGFyY2hpdmVyIGNsYXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBsaWNlbnNlcyB0byBpbmNsdWRlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgYXJjaGl2ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWFyY2hpdmVyJz48ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBpZiBhIGxpY2Vuc2UgaW4gYSByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgaW4gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREU8L2ZpbGVuYW1lPiwgdGhlbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGlzIGFyY2hpdmVkIGJ5IHRoZSBjbGFzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXInPjxmaWxlbmFtZT5jb3B5bGVmdF9maWx0ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGluY2x1ZGVzICJHUEwqIiwgIkxHUEwqIiwgYW5kICJBR1BMKiIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09QWUxFRlRfUE5fRVhDTFVERSc+PGdsb3NzdGVybT5DT1BZTEVGVF9QTl9FWENMVURFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT1BZTEVGVF9QTl9FWENMVURFW2RvY10gPSAiUmVjaXBlcyB0byBleGNsdWRlIGluIHRoZSBzb3VyY2UgYXJjaGl2ZWQgYnkgdGhlIGFyY2hpdmVyIGNsYXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlY2lwZXMgdG8gZXhjbHVkZSBpbiB0aGUgc291cmNlIGFyY2hpdmVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hcmNoaXZlcic+PGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkNPUFlMRUZUX1BOX0VYQ0xVREU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXMgdGhlIGxpY2Vuc2UgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24gY2F1c2VkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUnPjxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUnPjxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlLCB3aGljaCBpcyAiIiBpbmRpY2F0aW5nIHRvIG5vdCBleHBsaWNpdGx5CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGUgYW55IHJlY2lwZXMgYnkgbmFtZSwgZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZTEVGVF9QTl9FWENMVURFPC9maWxlbmFtZT4gaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXInPjxmaWxlbmFtZT5jb3B5bGVmdF9maWx0ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09QWUxFRlRfUE5fSU5DTFVERSc+PGdsb3NzdGVybT5DT1BZTEVGVF9QTl9JTkNMVURFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT1BZTEVGVF9QTl9JTkNMVURFW2RvY10gPSAiUmVjaXBlcyB0byBpbmNsdWRlIGluIHRoZSBzb3VyY2UgYXJjaGl2ZWQgYnkgdGhlIGFyY2hpdmVyIGNsYXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlY2lwZXMgdG8gaW5jbHVkZSBpbiB0aGUgc291cmNlIGFyY2hpdmVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1hcmNoaXZlcic+PGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkNPUFlMRUZUX1BOX0lOQ0xVREU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXMgdGhlIGxpY2Vuc2UgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24gY2F1c2VkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUnPjxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUnPjxmaWxlbmFtZT5DT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlLCB3aGljaCBpcyAiIiBpbmRpY2F0aW5nIHRvIG5vdCBleHBsaWNpdGx5CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYW55IHJlY2lwZXMgYnkgbmFtZSwgZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZTEVGVF9QTl9JTkNMVURFPC9maWxlbmFtZT4gaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXInPjxmaWxlbmFtZT5jb3B5bGVmdF9maWx0ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09QWUxFRlRfUkVDSVBFX1RZUEVTJz48Z2xvc3N0ZXJtPkNPUFlMRUZUX1JFQ0lQRV9UWVBFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ09QWUxFRlRfUkVDSVBFX1RZUEVTW2RvY10gPSAiUmVjaXBlIHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIHNvdXJjZSBhcmNoaXZlZCBieSB0aGUgYXJjaGl2ZXIgY2xhc3MuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJlY2lwZSB0eXBlcyB0byBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBzb3VyY2UgYXJjaGl2ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWFyY2hpdmVyJz48ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZSB0eXBlcyBhcmUgPGZpbGVuYW1lPnRhcmdldDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcm9zc3NkazwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlLCB3aGljaCBpcyAidGFyZ2V0KiIsIGZvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09QWUxFRlRfUkVDSVBFX1RZUEVTPC9maWxlbmFtZT4gaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1jb3B5bGVmdF9maWx0ZXInPjxmaWxlbmFtZT5jb3B5bGVmdF9maWx0ZXI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09QWV9MSUNfRElSUyc+PGdsb3NzdGVybT5DT1BZX0xJQ19ESVJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT1BZX0xJQ19ESVJTW2RvY10gPSAiSWYgc2V0IHRvICIxIiBhbG9uZyB3aXRoIHRoZSBDT1BZX0xJQ19NQU5JRkVTVCB2YXJpYWJsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY29waWVzIGludG8gdGhlIGltYWdlIHRoZSBsaWNlbnNlIGZpbGVzLCB3aGljaCBhcmUgbG9jYXRlZCBpbiAvdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNlcywgZm9yIGVhY2ggcGFja2FnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byAiMSIgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPUFlfTElDX01BTklGRVNUJz48ZmlsZW5hbWU+Q09QWV9MSUNfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNvcGllcworICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBpbWFnZSB0aGUgbGljZW5zZSBmaWxlcywgd2hpY2ggYXJlIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsaWNlbnNlIGZpbGVzIGFyZSBwbGFjZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gZGlyZWN0b3JpZXMgd2l0aGluIHRoZSBpbWFnZSBpdHNlbGYgZHVyaW5nIGJ1aWxkIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5DT1BZX0xJQ19ESVJTPC9maWxlbmFtZT4gZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyIGEgcGF0aCBmb3IgYWRkaW5nIGxpY2Vuc2VzIGZvciBuZXdseSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGFuIGltYWdlLCB3aGljaCBtaWdodCBiZSBtb3N0IHN1aXRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcmVhZC1vbmx5IGZpbGVzeXN0ZW1zIHRoYXQgY2Fubm90IGJlIHVwZ3JhZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0UnPjxmaWxlbmFtZT5MSUNFTlNFX0NSRUFURV9QQUNLQUdFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcHJvdmlkaW5nLWxpY2Vuc2UtdGV4dCc+UHJvdmlkaW5nIExpY2Vuc2UgVGV4dDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBwcm92aWRpbmcgbGljZW5zZSB0ZXh0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09QWV9MSUNfTUFOSUZFU1QnPjxnbG9zc3Rlcm0+Q09QWV9MSUNfTUFOSUZFU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPUFlfTElDX01BTklGRVNUW2RvY10gPSAiSWYgc2V0IHRvICIxIiwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY29waWVzIHRoZSBsaWNlbnNlIG1hbmlmZXN0IGZvciB0aGUgaW1hZ2UgdG8gL3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXMvbGljZW5zZS5tYW5pZmVzdCB3aXRoaW4gdGhlIGltYWdlIGl0c2VsZi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byAiMSIsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNvcGllcworICAgICAgICAgICAgICAgICAgICB0aGUgbGljZW5zZSBtYW5pZmVzdCBmb3IgdGhlIGltYWdlIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNlcy9saWNlbnNlLm1hbmlmZXN0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBpbWFnZSBpdHNlbGYgZHVyaW5nIGJ1aWxkIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5DT1BZX0xJQ19NQU5JRkVTVDwvZmlsZW5hbWU+IGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZlciBhIHBhdGggZm9yIGFkZGluZyBsaWNlbnNlcyBmb3IgbmV3bHkgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0byBhbiBpbWFnZSwgd2hpY2ggbWlnaHQgYmUgbW9zdCBzdWl0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlYWQtb25seSBmaWxlc3lzdGVtcyB0aGF0IGNhbm5vdCBiZSB1cGdyYWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFX0NSRUFURV9QQUNLQUdFJz48ZmlsZW5hbWU+TElDRU5TRV9DUkVBVEVfUEFDS0FHRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Byb3ZpZGluZy1saWNlbnNlLXRleHQnPlByb3ZpZGluZyBMaWNlbnNlIFRleHQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gcHJvdmlkaW5nIGxpY2Vuc2UgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCc+PGdsb3NzdGVybT5DT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTFtkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlzdCBvZiBwYWNrYWdlcyB0byBiZSBhZGRlZCB0byB0aGUgaW1hZ2UuIFlvdSBzaG91bGQgb25seSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgY29uZi9sb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGlzdCBvZiBwYWNrYWdlcyB0byBiZSBhZGRlZCB0byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgb25seSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgZm91bmQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSByZXBsYWNlcyA8ZmlsZW5hbWU+UE9LWV9FWFRSQV9JTlNUQUxMPC9maWxlbmFtZT4sIHdoaWNoIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ09SRUJBU0UnPjxnbG9zc3Rlcm0+Q09SRUJBU0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENPUkVCQVNFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBNZXRhZGF0YSBsYXllciAoaS5lLiBtZXRhKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgT3BlbkVtYmVkZGVkLUNvcmUKKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgbGF5ZXIgKGkuZS4gPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1JFQkFTRTwvZmlsZW5hbWU+IHBvaW50cyB0byB0aGUgcGFyZW50IG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgYW5kIG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICBDb25zaWRlciBhbiBleGFtcGxlIHdoZXJlIHlvdSBoYXZlIGNsb25lZCB0aGUgUG9reSBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgcmV0YWluZWQgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbmFtZSBmb3IgeW91ciBsb2NhbCBjb3B5IG9mIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIDxmaWxlbmFtZT5DT1JFQkFTRTwvZmlsZW5hbWU+IHBvaW50cyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBmb2xkZXIgYmVjYXVzZSBpdCBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgPGZpbGVuYW1lPnBva3kvbWV0YTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGxheWVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPUkVCQVNFX0ZJTEVTJz48Z2xvc3N0ZXJtPkNPUkVCQVNFX0ZJTEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDT1JFQkFTRV9GSUxFU1tkb2NdID0gIkxpc3RzIGZpbGVzIGZyb20gdGhlIENPUkVCQVNFIGRpcmVjdG9yeSB0aGF0IHNob3VsZCBiZSBjb3BpZWQgb3RoZXIgdGhhbiB0aGUgbGF5ZXJzIGxpc3RlZCBpbiB0aGUgYmJsYXllcnMuY29uZiBmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgZmlsZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPUkVCQVNFJz48ZmlsZW5hbWU+Q09SRUJBU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHRoYXQgc2hvdWxkIGJlIGNvcGllZCBvdGhlciB0aGFuIHRoZSBsYXllcnMKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGluIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Q09SRUJBU0VfRklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwdXJwb3NlIG9mIGNvcHlpbmcgbWV0YWRhdGEgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbnRvIHRoZSBleHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgIFNESy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXhwbGljaXRseSBsaXN0aW5nIGZpbGVzIGluIDxmaWxlbmFtZT5DT1JFQkFTRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzIG5lZWRlZCBiZWNhdXNlIGl0IHR5cGljYWxseSBjb250YWlucyBidWlsZAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBhbmQgb3RoZXIgZmlsZXMgdGhhdCBzaG91bGQgbm90IG5vcm1hbGx5CisgICAgICAgICAgICAgICAgICAgIGJlIGNvcGllZCBpbnRvIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPUkVCQVNFX0ZJTEVTPC9maWxlbmFtZT4gaXMgdXNlZCBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICBvbmx5IGNvcHkgdGhlIGZpbGVzIHRoYXQgYXJlIGFjdHVhbGx5IG5lZWRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DUFAnPjxnbG9zc3Rlcm0+Q1BQPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDUFBbZG9jXSA9ICJNaW5pbXVtIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHVzZWQgdG8gcnVuIHRoZSBDCisgICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3Nvci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DUFBGTEFHUyc+PGdsb3NzdGVybT5DUFBGTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ1BQRkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvciAoaS5lLiB0byBib3RoIHRoZSBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgICAoaS5lLiB0byBib3RoIHRoZSBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgZXhwb3J0ZWQgdG8gYW4gZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRodXMgbWFkZSB2aXNpYmxlIHRvIHRoZSBzb2Z0d2FyZSBiZWluZworICAgICAgICAgICAgICAgICAgICBidWlsdCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIHN0ZXAuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgaW5pdGlhbGl6YXRpb24gZm9yIDxmaWxlbmFtZT5DUFBGTEFHUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmllcyBkZXBlbmRpbmcgb24gd2hhdCBpcyBiZWluZyBidWlsdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0NQUEZMQUdTJz48ZmlsZW5hbWU+VEFSR0VUX0NQUEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9DUFBGTEFHUyc+PGZpbGVuYW1lPkJVSUxEX0NQUEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRFNES19DUFBGTEFHUyc+PGZpbGVuYW1lPkJVSUxEU0RLX0NQUEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgYW4gU0RLIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay08L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ1JPU1NfQ09NUElMRSc+PGdsb3NzdGVybT5DUk9TU19DT01QSUxFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBDUk9TU19DT01QSUxFW2RvY10gPSAiVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IGZvciB0aGUgdGFyZ2V0IHRvb2xzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbGNoYWluIGJpbmFyeSBwcmVmaXggZm9yIHRoZSB0YXJnZXQgdG9vbHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Q1JPU1NfQ09NUElMRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICBzYW1lIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX1BSRUZJWCc+PGZpbGVuYW1lPlRBUkdFVF9QUkVGSVg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2V0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DUk9TU19DT01QSUxFPC9maWxlbmFtZT4gdmFyaWFibGUgb25seSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgY2VydGFpbiBjb250ZXh0cyAoZS5nLiB3aGVuIGJ1aWxkaW5nIGZvciBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBrZXJuZWwgbW9kdWxlIHJlY2lwZXMpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ1ZTRElSJz48Z2xvc3N0ZXJtPkNWU0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ1ZTRElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSB3aGVyZSBjdnMgY2hlY2tvdXRzIHdpbGwgYmUgc3RvcmVkIGluLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBmaWxlcyBjaGVja2VkIG91dCB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgQ1ZTIHN5c3RlbSBhcmUgc3RvcmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNYWCc+PGdsb3NzdGVybT5DWFg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENYWFtkb2NdID0gIk1pbmltdW0gY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgQysrIGNvbXBpbGVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHVzZWQgdG8gcnVuIHRoZSBDKysKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQ1hYRkxBR1MnPjxnbG9zc3Rlcm0+Q1hYRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIENYWEZMQUdTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMrKyBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBleHBvcnRlZCB0byBhbiBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGh1cyBtYWRlIHZpc2libGUgdG8gdGhlIHNvZnR3YXJlIGJlaW5nCisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGR1cmluZyB0aGUgY29tcGlsYXRpb24gc3RlcC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpbml0aWFsaXphdGlvbiBmb3IgPGZpbGVuYW1lPkNYWEZMQUdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGF0IGlzIGJlaW5nIGJ1aWx0OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfQ1hYRkxBR1MnPjxmaWxlbmFtZT5UQVJHRVRfQ1hYRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX0NYWEZMQUdTJz48ZmlsZW5hbWU+QlVJTERfQ1hYRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEU0RLX0NYWEZMQUdTJz48ZmlsZW5hbWU+QlVJTERTREtfQ1hYRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciBhbiBTREsgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrLTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktZCc+PHRpdGxlPkQ8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRCc+PGdsb3NzdGVybT5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBEW2RvY10gPSAiVGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdoZXJlIGNvbXBvbmVudHMgYXJlIGluc3RhbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbG9jYXRpb24gZGVmYXVsdHMgdG86CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJHtXT1JLRElSfS9pbWFnZQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tzIHRoYXQgcmVhZCBmcm9tIG9yIHdyaXRlIHRvIHRoaXMgZGlyZWN0b3J5IHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHVuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Zha2Vyb290LWFuZC1wc2V1ZG8nPmZha2Vyb290PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1EQVRFJz48Z2xvc3N0ZXJtPkRBVEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERBVEVbZG9jXSA9ICJUaGUgZGF0ZSB0aGUgYnVpbGQgd2FzIHN0YXJ0ZWQgdXNpbmcgWU1EIGZvcm1hdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkYXRlIHRoZSBidWlsZCB3YXMgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgRGF0ZXMgYXBwZWFyIHVzaW5nIHRoZSB5ZWFyLCBtb250aCwgYW5kIGRheSAoWU1EKSBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gIjIwMTUwMjA5IiBmb3IgRmVicnVhcnkgOXRoLCAyMDE1KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1EQVRFVElNRSc+PGdsb3NzdGVybT5EQVRFVElNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREFURVRJTUVbZG9jXSA9ICJUaGUgZGF0ZSBhbmQgdGltZSB0aGUgYnVpbGQgd2FzIHN0YXJ0ZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGF0ZSBhbmQgdGltZSBvbiB3aGljaCB0aGUgY3VycmVudCBidWlsZCBzdGFydGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9ybWF0IGlzIHN1aXRhYmxlIGZvciB0aW1lc3RhbXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFQklBTl9OT0FVVE9OQU1FJz48Z2xvc3N0ZXJtPkRFQklBTl9OT0FVVE9OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBERUJJQU5fTk9BVVRPTkFNRVtkb2NdID0gIlByZXZlbnRzIGEgcGFydGljdWxhciBwYWNrYWdlIGZyb20gYmVpbmcgcmVuYW1lZCBhY2NvcmRpbmcgdG8gRGViaWFuIHBhY2thZ2UgbmFtaW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGlzIGluaGVyaXRlZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERUJJQU5fTk9BVVRPTkFNRTwvZmlsZW5hbWU+IHNwZWNpZmllcyBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgcGFja2FnZSBzaG91bGQgbm90IGJlIHJlbmFtZWQgYWNjb3JkaW5nIHRvCisgICAgICAgICAgICAgICAgICAgIERlYmlhbiBsaWJyYXJ5IHBhY2thZ2UgbmFtaW5nLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCB1c2UgdGhlIHBhY2thZ2UgbmFtZSBhcyBhbiBvdmVycmlkZSB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICBzZXQgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gdGhlIDxmaWxlbmFtZT5mb250Y29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFQklBTl9OT0FVVE9OQU1FX2ZvbnRjb25maWctdXRpbHMgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFQklBTk5BTUUnPjxnbG9zc3Rlcm0+REVCSUFOTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVCSUFOTkFNRVtkb2NdID0gIkFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhlIGxpYnJhcnkgbmFtZSBmb3IgYW4gaW5kaXZpZHVhbCBwYWNrYWdlIGZvciBEZWJpYW4gbGlicmFyeSBwYWNrYWdlIHJlbmFtaW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGlzIGluaGVyaXRlZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERUJJQU5OQU1FPC9maWxlbmFtZT4gYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBuYW1lIGZvciBhbiBpbmRpdmlkdWFsIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRpbmcgdGhlIGxpYnJhcnkgbmFtZSBpbiB0aGVzZSBjYXNlcyBpcyByYXJlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCB1c2UgdGhlIHBhY2thZ2UgbmFtZSBhcyBhbiBvdmVycmlkZSB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICBzZXQgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gdGhlIDxmaWxlbmFtZT5kYnVzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFQklBTk5BTUVfJHtQTn0gPSAiZGJ1cy0xIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItREVCVUdfQlVJTEQnPjxnbG9zc3Rlcm0+REVCVUdfQlVJTEQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERFQlVHX0JVSUxEW2RvY10gPSAiU3BlY2lmaWVzIHRvIGJ1aWxkIHBhY2thZ2VzIHdpdGggZGVidWdnaW5nIGluZm9ybWF0aW9uLiBUaGlzIGluZmx1ZW5jZXMgdGhlIHZhbHVlIG9mIHRoZSBTRUxFQ1RFRF9PUFRJTUlaQVRJT04gdmFyaWFibGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdG8gYnVpbGQgcGFja2FnZXMgd2l0aCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaW5mbHVlbmNlcyB0aGUgdmFsdWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU0VMRUNURURfT1BUSU1JWkFUSU9OJz5TRUxFQ1RFRF9PUFRJTUlaQVRJT048L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItREVCVUdfT1BUSU1JWkFUSU9OJz48Z2xvc3N0ZXJtPkRFQlVHX09QVElNSVpBVElPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVCVUdfT1BUSU1JWkFUSU9OW2RvY10gPSAiVGhlIG9wdGlvbnMgdG8gcGFzcyBpbiBUQVJHRVRfQ0ZMQUdTIGFuZCBDRkxBR1Mgd2hlbiBjb21waWxpbmcgYSBzeXN0ZW0gZm9yIGRlYnVnZ2luZy4gVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byAnLU8gLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWcnLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG9wdGlvbnMgdG8gcGFzcyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9DRkxBR1MnPlRBUkdFVF9DRkxBR1M8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQ0ZMQUdTJz5DRkxBR1M8L2xpbms+PC9maWxlbmFtZT4gd2hlbiBjb21waWxpbmcKKyAgICAgICAgICAgICAgICAgICAgYSBzeXN0ZW0gZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byAiLU8gLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgJHtERUJVR19GTEFHU30gLXBpcGUiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFRkFVTFRfUFJFRkVSRU5DRSc+PGdsb3NzdGVybT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERFRkFVTFRfUFJFRkVSRU5DRVtkb2NdID0gIlNwZWNpZmllcyBhIHdlYWsgYmlhcyBmb3IgcmVjaXBlIHNlbGVjdGlvbiBwcmlvcml0eS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIHdlYWsgYmlhcyBmb3IgcmVjaXBlIHNlbGVjdGlvbiBwcmlvcml0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIG9mIHRoaXMgaXMgdmFyaWFibGUgaXMgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgIGl0IHRvICItMSIgd2l0aGluIGEgcmVjaXBlIGZvciBhIGRldmVsb3BtZW50IHZlcnNpb24gb2YgYQorICAgICAgICAgICAgICAgICAgICBwaWVjZSBvZiBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIHZhcmlhYmxlIGluIHRoaXMgd2F5IGNhdXNlcyB0aGUgc3RhYmxlIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSB0byBidWlsZCBieSBkZWZhdWx0IGluIHRoZSBhYnNlbmNlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUFJFRkVSUkVEX1ZFUlNJT04nPlBSRUZFUlJFRF9WRVJTSU9OPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gYnVpbGQgdGhlIGRldmVsb3BtZW50IHZlcnNpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiaWFzIHByb3ZpZGVkIGJ5IDxmaWxlbmFtZT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyB3ZWFrIGFuZCBpcyBvdmVycmlkZGVuIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQkJGSUxFX1BSSU9SSVRZJz5CQkZJTEVfUFJJT1JJVFk8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCB2YXJpYWJsZSBpcyBkaWZmZXJlbnQgYmV0d2VlbiB0d28gbGF5ZXJzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFRkFVTFRUVU5FJz48Z2xvc3N0ZXJtPkRFRkFVTFRUVU5FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBERUZBVUxUVFVORVtkb2NdID0gIlRoZSBkZWZhdWx0IENQVSBhbmQgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5pbmdzIChpLmUuICB0aGUgInR1bmUiKSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgQ1BVIGFuZCBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpCisgICAgICAgICAgICAgICAgICAgIHR1bmluZ3MgKGkuZS4gIHRoZSAidHVuZSIpIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+REVGQVVMVFRVTkU8L2ZpbGVuYW1lPiBoZWxwcyBkZWZpbmUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRVTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5UVU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB0dW5lIGlzIGVpdGhlciBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgc2V0CisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzZXR0aW5nIHVzaW5nIGF2YWlsYWJsZSB0dW5lcworICAgICAgICAgICAgICAgICAgICBhcyBkZWZpbmVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFWQUlMVFVORVMnPjxmaWxlbmFtZT5BVkFJTFRVTkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUEVORFMnPjxnbG9zc3Rlcm0+REVQRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVQRU5EU1tkb2NdID0gIkxpc3RzIGEgcmVjaXBlJ3MgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgKGkuZS4gb3RoZXIgcmVjaXBlIGZpbGVzKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIGEgcmVjaXBlJ3MgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGFyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgcmVjaXBlcyB3aG9zZQorICAgICAgICAgICAgICAgICAgICBjb250ZW50cyAoZS5nLiBoZWFkZXJzIGFuZCBzaGFyZWQgbGlicmFyaWVzKSBhcmUgbmVlZGVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSByZWNpcGUgYXQgYnVpbGQgdGltZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSByZWNpcGUgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBhc3NpZ25tZW50OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUEVORFMgPSAiYmFyIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmFjdGljYWwgZWZmZWN0IG9mIHRoZSBwcmV2aW91cyBhc3NpZ25tZW50IGlzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgYWxsIGZpbGVzIGluc3RhbGxlZCBieSBiYXIgd2lsbCBiZSBhdmFpbGFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHN0YWdpbmcgc3lzcm9vdCwgZ2l2ZW4gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUic+PGZpbGVuYW1lPlNUQUdJTkdfRElSKjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMsIGJ5IHRoZSB0aW1lIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgZm9yIDxmaWxlbmFtZT5mb288L2ZpbGVuYW1lPiBydW5zLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1lY2hhbmlzbSBpcyBpbXBsZW1lbnRlZCBieSBoYXZpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+IGRlcGVuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgb2YgZWFjaCByZWNpcGUgbGlzdGVkIGluIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WzwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPmRlcHRhc2s8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPl08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgc2VsZG9tIGlzIG5lY2Vzc2FyeSB0byByZWZlcmVuY2UsIGZvciBleGFtcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSX0hPU1Q8L2ZpbGVuYW1lPiBleHBsaWNpdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN0YW5kYXJkIGNsYXNzZXMgYW5kIGJ1aWxkLXJlbGF0ZWQgdmFyaWFibGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCB0byBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgYXBwcm9wcmlhdGUgc3RhZ2luZworICAgICAgICAgICAgICAgICAgICAgICAgc3lzcm9vdHMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW5vdGhlciBleGFtcGxlLCA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGNhbiBhbHNvCisgICAgICAgICAgICAgICAgICAgIGJlIHVzZWQgdG8gYWRkIHV0aWxpdGllcyB0aGF0IHJ1biBvbiB0aGUgYnVpbGQgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYSByZWNpcGUgdGhhdCBtYWtlcyB1c2Ugb2YgYSBjb2RlIGdlbmVyYXRvcgorICAgICAgICAgICAgICAgICAgICBidWlsdCBieSB0aGUgcmVjaXBlIDxmaWxlbmFtZT5jb2RlZ2VuPC9maWxlbmFtZT4gbWlnaHQgaGF2ZQorICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUEVORFMgPSAiY29kZWdlbi1uYXRpdmUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbmF0aXZlJz48ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBTkFUSVZFUEFUSCc+PGZpbGVuYW1lPkVYVFJBTkFUSVZFUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gaXMgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIHRvIGJlIG1vcmUgcHJlY2lzZSwgaXQgaXMgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLCB3aGljaCB1c3VhbGx5IG1hdGNoIHJlY2lwZSBuYW1lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHV0dGluZyBhIHBhY2thZ2UgbmFtZSBzdWNoIGFzICJmb28tZGV2IiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGRvZXMgbm90IG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSAiZm9vIiBpbnN0ZWFkLCBhcyB0aGlzIHdpbGwgcHV0IGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYWxsIHRoZSBwYWNrYWdlcyB0aGF0IG1ha2UgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+LCB3aGljaCBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aG9zZSBmcm9tIDxmaWxlbmFtZT5mb28tZGV2PC9maWxlbmFtZT4sIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lIHJlY2lwZSBoYXZpbmcgYW5vdGhlciByZWNpcGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiBkb2VzIG5vdCBieSBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGFueSBydW50aW1lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBwcm9kdWNlZCBieSB0aGUgdHdvIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGFzIGV4cGxhaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jZXB0cyBNYW51YWwsIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Z0ZW4gYmUgYWRkZWQgYXV0b21hdGljYWxseSwgbWVhbmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGFsb25lIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpY2llbnQgZm9yIG1vc3QgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyaW50dWl0aXZlbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gaXMgb2Z0ZW4gbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW4gZm9yIHJlY2lwZXMgdGhhdCBpbnN0YWxsIHByZWNvbXBpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiA8ZmlsZW5hbWU+bGliZm9vPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBwcmVjb21waWxlZCBsaWJyYXJ5IHRoYXQgbGlua3MgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliYmFyPC9maWxlbmFtZT4sIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2luZyBhZ2FpbnN0IDxmaWxlbmFtZT5saWJmb288L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcyBib3RoIDxmaWxlbmFtZT5saWJmb288L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmxpYmJhcjwvZmlsZW5hbWU+IHRvIGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aG91dCBhIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRoYXQgaW5zdGFsbHMgPGZpbGVuYW1lPmxpYmZvbzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSByZWNpcGUgdGhhdCBpbnN0YWxscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliYmFyPC9maWxlbmFtZT4sIG90aGVyIHJlY2lwZXMgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCB0byBsaW5rIGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmZvbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBydW50aW1lIGRlcGVuZGVuY2llcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdGFza3MnPlRhc2tzPC91bGluaz4iIGFuZAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNkZXBlbmRlbmNpZXMnPkRlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCBmb3IgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0YXNrcyBhbmQgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWV9ESVInPjxnbG9zc3Rlcm0+REVQTE9ZX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUltkb2NdID0gIlBvaW50cyB0byB0aGUgZ2VuZXJhbCBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzLCBhbmQgb3RoZXIgb3V0cHV0IGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmFsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IHJlc2lkZXMgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPiR7VE1QRElSfS9kZXBsb3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LCBzZWUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1idWlsZCc+VGhlIEJ1aWxkIERpcmVjdG9yeSAtIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbCBvbiB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iLAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBhbGwgaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzCisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVBMT1lfRElSX0RFQic+PGdsb3NzdGVybT5ERVBMT1lfRElSX0RFQjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9ERUJbZG9jXSA9ICJQb2ludHMgdG8gYSBEZWJpYW4tc3BlY2lmaWMgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gcGxhY2UgaW1hZ2VzLCBwYWNrYWdlcywgU0RLcywgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gcGxhY2UgRGViaWFuIHBhY2thZ2VzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgInBhY2thZ2VfZGViIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlIGluaXRpYWxseSBkZWZpbmVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcyBhCisgICAgICAgICAgICAgICAgICAgIHN1Yi1mb2xkZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUExPWV9ESVJfREVCID0gIiR7REVQTE9ZX0RJUn0vZGViIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX2RlYic+PGZpbGVuYW1lPnBhY2thZ2VfZGViPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBMT1lfRElSX0RFQjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIG1ha2Ugc3VyZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfZGViJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9kZWI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB3cml0ZXMgRGViaWFuIHBhY2thZ2VzIGludG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHBhY2thZ2luZyB3b3Jrcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItREVQTE9ZX0RJUl9JTUFHRSc+PGdsb3NzdGVybT5ERVBMT1lfRElSX0lNQUdFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBERVBMT1lfRElSX0lNQUdFW2RvY10gPSAiUG9pbnRzIHRvIHRoZSBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMgYW5kIG90aGVyIGFzc29jaWF0ZWQgb3V0cHV0IGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIGRlcGxveWVkIG9udG8gdGhlIHRhcmdldCBtYWNoaW5lLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgICAgICB0byBwbGFjZSBpbWFnZXMgYW5kIG90aGVyIGFzc29jaWF0ZWQgb3V0cHV0IGZpbGVzIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgIHJlYWR5IHRvIGJlIGRlcGxveWVkIG9udG8gdGhlIHRhcmdldCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGlzIG1hY2hpbmUtc3BlY2lmaWMgYXMgaXQgY29udGFpbnMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke01BQ0hJTkV9PC9maWxlbmFtZT4gbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBkaXJlY3RvcnkgcmVzaWRlcyB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhcyA8ZmlsZW5hbWU+JHtERVBMT1lfRElSfS9pbWFnZXMvJHtNQUNISU5FfS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LCBzZWUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1idWlsZCc+VGhlIEJ1aWxkIERpcmVjdG9yeSAtIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbCBvbiB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgYm90aCBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWV9ESVJfSVBLJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVJfSVBLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBERVBMT1lfRElSX0lQS1tkb2NdID0gIlBvaW50cyB0byBhIElQSy1zcGVjaWZpYyBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzLCBhbmQgb3RoZXIgb3V0cHV0IGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgICAgICB0byBwbGFjZSBJUEsgcGFja2FnZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYXBwbGllcyBvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyAicGFja2FnZV9pcGsiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBjb25maWd1cmF0aW9uIGZpbGUgaW5pdGlhbGx5IGRlZmluZXMgdGhpcworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBhIHN1Yi1mb2xkZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUExPWV9ESVJfSVBLID0gIiR7REVQTE9ZX0RJUn0vaXBrIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wYWNrYWdlX2lwayc+PGZpbGVuYW1lPnBhY2thZ2VfaXBrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIG1ha2Ugc3VyZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB3cml0ZXMgSVBLIHBhY2thZ2VzIGludG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHBhY2thZ2luZyB3b3Jrcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItREVQTE9ZX0RJUl9SUE0nPjxnbG9zc3Rlcm0+REVQTE9ZX0RJUl9SUE08L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERFUExPWV9ESVJfUlBNW2RvY10gPSAiUG9pbnRzIHRvIGEgUlBNLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRvIHBsYWNlIFJQTSBwYWNrYWdlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhcHBsaWVzIG9ubHkgd2hlbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zICJwYWNrYWdlX3JwbSIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSBpbml0aWFsbHkgZGVmaW5lcyB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFzIGEgc3ViLWZvbGRlciBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgREVQTE9ZX0RJUl9SUE0gPSAiJHtERVBMT1lfRElSfS9ycG0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2VfcnBtJz48ZmlsZW5hbWU+cGFja2FnZV9ycG08L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gbWFrZSBzdXJlCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9ycG0nPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIHdyaXRlcyBSUE0gcGFja2FnZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgcGFja2FnaW5nIHdvcmtzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGdsb3NzdGVybT5ERVBMT1lfRElSX1RBUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9UQVJbZG9jXSA9ICJQb2ludHMgdG8gYSB0YXJiYWxsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRvIHBsYWNlIHRhcmJhbGxzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgInBhY2thZ2VfdGFyIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlIGluaXRpYWxseSBkZWZpbmVzIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYXMgYSBzdWItZm9sZGVyIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBMT1lfRElSX1RBUiA9ICIke0RFUExPWV9ESVJ9L3RhciIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV90YXInPjxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byBtYWtlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfdGFyPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgd3JpdGVzIFRBUiBwYWNrYWdlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBmb2xkZXIuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBwYWNrYWdpbmcgd29ya3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWURJUic+PGdsb3NzdGVybT5ERVBMT1lESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERFUExPWURJUltkb2NdID0gIkZvciByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgZGVwbG95IGNsYXNzLCB0aGUgREVQTE9ZRElSIHBvaW50cyB0byBhIHRlbXBvcmFyeSB3b3JrIGFyZWEgZm9yIGRlcGxveWVkIGZpbGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kZXBsb3knPjxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoZSA8ZmlsZW5hbWU+REVQTE9ZRElSPC9maWxlbmFtZT4gcG9pbnRzIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5IHdvcmsgYXJlYSBmb3IgZGVwbG95ZWQgZmlsZXMgdGhhdCBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBjbGFzcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUExPWURJUiA9ICIke1dPUktESVJ9L2RlcGxveS0kezxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+fSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGluaGVyaXRpbmcgdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgICAgICBzaG91bGQgY29weSBmaWxlcyB0byBiZSBkZXBsb3llZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBMT1lESVI8L2ZpbGVuYW1lPiwgYW5kIHRoZSBjbGFzcyB3aWxsIHRha2UKKyAgICAgICAgICAgICAgICAgICAgY2FyZSBvZiBjb3B5aW5nIHRoZW0gaW50bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JTUFHRSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfSU1BR0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXJ3YXJkcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVNDUklQVElPTic+PGdsb3NzdGVybT5ERVNDUklQVElPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgREVTQ1JJUFRJT05bZG9jXSA9ICJUaGUgcGFja2FnZSBkZXNjcmlwdGlvbiB1c2VkIGJ5IHBhY2thZ2UgbWFuYWdlcnMuIElmIG5vdCBzZXQsIERFU0NSSVBUSU9OIHRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgU1VNTUFSWSB2YXJpYWJsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlIGRlc2NyaXB0aW9uIHVzZWQgYnkgcGFja2FnZSBtYW5hZ2Vycy4KKyAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNldCwgPGZpbGVuYW1lPkRFU0NSSVBUSU9OPC9maWxlbmFtZT4gdGFrZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1VNTUFSWSc+PGZpbGVuYW1lPlNVTU1BUlk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPJz48Z2xvc3N0ZXJtPkRJU1RSTzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPW2RvY10gPSAiVGhlIHNob3J0IG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gSWYgdGhlIHZhcmlhYmxlIGlzIGJsYW5rLCBtZXRhL2NvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mIHdpbGwgYmUgdXNlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzaG9ydCBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgbG9uZyBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24sIHNlZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19OQU1FJz48ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT4gdmFyaWFibGUgY29ycmVzcG9uZHMgdG8gYQorICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlIHdob3NlIHJvb3QgbmFtZSBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2FtZSBhcyB0aGUgdmFyaWFibGUncyBhcmd1bWVudCBhbmQgd2hvc2UgZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIGlzIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBQb2t5IGRpc3RyaWJ1dGlvbiBpcyBuYW1lZCA8ZmlsZW5hbWU+cG9reS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHJlc2lkZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9kaXN0cm88L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhhdCA8ZmlsZW5hbWU+cG9reS5jb25mPC9maWxlbmFtZT4gZmlsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzZXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk8gPSAicG9reSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgbG9jYXRlZCBpbiBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3RybzwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBmb3IgPGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+IG11c3Qgbm90IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgc3BhY2VzLCBhbmQgaXMgdHlwaWNhbGx5IGFsbCBsb3dlci1jYXNlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSA8ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgYmxhbmssCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNldCBvZiBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGFyZSB1c2VkLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ESVNUUk9fQ09ERU5BTUUnPjxnbG9zc3Rlcm0+RElTVFJPX0NPREVOQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBESVNUUk9fQ09ERU5BTUVbZG9jXSA9ICJTcGVjaWZpZXMgYSBjb2RlbmFtZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBiZWluZyBidWlsdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGNvZGVuYW1lIGZvciB0aGUgZGlzdHJpYnV0aW9uIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURJU1RST19FWFRSQV9SREVQRU5EUyc+PGdsb3NzdGVybT5ESVNUUk9fRVhUUkFfUkRFUEVORFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERJU1RST19FWFRSQV9SREVQRU5EU1tkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZGlzdHJvLXNwZWNpZmljIHBhY2thZ2VzIHRvIGFkZCB0byBhbGwgaW1hZ2VzLiBUaGUgdmFyaWFibGUgb25seSBhcHBsaWVzIHRvIHRoZSBpbWFnZXMgdGhhdCBpbmNsdWRlIHBhY2thZ2Vncm91cC1iYXNlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBkaXN0cm8tc3BlY2lmaWMgcGFja2FnZXMgdG8gYWRkIHRvIGFsbCBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgdGFrZXMgYWZmZWN0IHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1iYXNlPC9maWxlbmFtZT4gc28gdGhlCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG9ubHkgcmVhbGx5IGFwcGxpZXMgdG8gdGhlIG1vcmUgZnVsbC1mZWF0dXJlZAorICAgICAgICAgICAgICAgICAgICBpbWFnZXMgdGhhdCBpbmNsdWRlIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtYmFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIHRvIGtlZXAgZGlzdHJvIHBvbGljeSBvdXQgb2YKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJpYyBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIG90aGVyIGRpc3RybyB2YXJpYWJsZXMsIHlvdSBzZXQgdGhpcyB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGlzdHJvIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPX0VYVFJBX1JSRUNPTU1FTkRTJz48Z2xvc3N0ZXJtPkRJU1RST19FWFRSQV9SUkVDT01NRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX0VYVFJBX1JSRUNPTU1FTkRTW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBkaXN0cm8tc3BlY2lmaWMgcGFja2FnZXMgdG8gYWRkIHRvIGFsbCBpbWFnZXMgaWYgdGhlIHBhY2thZ2VzIGV4aXN0LiBUaGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgYnV0IHlvdSBjYW4gcmVtb3ZlIHRoZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGRpc3Ryby1zcGVjaWZpYyBwYWNrYWdlcyB0byBhZGQgdG8gYWxsIGltYWdlcworICAgICAgICAgICAgICAgICAgICBpZiB0aGUgcGFja2FnZXMgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlcyBtaWdodCBub3QgZXhpc3Qgb3IgYmUgZW1wdHkgKGUuZy4ga2VybmVsIG1vZHVsZXMpLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgYnV0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48Z2xvc3N0ZXJtPkRJU1RST19GRUFUVVJFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX0ZFQVRVUkVTW2RvY10gPSAiVGhlIGZlYXR1cmVzIGVuYWJsZWQgZm9yIHRoZSBkaXN0cmlidXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgc29mdHdhcmUgc3VwcG9ydCB5b3Ugd2FudCBpbiB5b3VyIGRpc3RyaWJ1dGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgdmFyaW91cyBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRlZmluZSB5b3VyIGRpc3RyaWJ1dGlvbiBmZWF0dXJlcyBpbiB0aGUgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgYSBmZWF0dXJlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPiBpcyB0cmFuc2xhdGVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBvcHRpb24gc3VwcGxpZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgZm9yIHJlY2lwZXMgdGhhdCBvcHRpb25hbGx5IHN1cHBvcnQgdGhlIGZlYXR1cmUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzcGVjaWZ5aW5nICJ4MTEiIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPiwgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgIGV2ZXJ5IHBpZWNlIG9mIHNvZnR3YXJlIGJ1aWx0IGZvciB0aGUgdGFyZ2V0IHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsbHkgc3VwcG9ydCBYMTEgdG8gaGF2ZSBpdHMgWDExIHN1cHBvcnQgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVHdvIG1vcmUgZXhhbXBsZXMgYXJlIEJsdWV0b290aCBhbmQgTkZTIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgIEZvciBhIG1vcmUgY29tcGxldGUgbGlzdCBvZiBmZWF0dXJlcyB0aGF0IHNoaXBzIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYW5kIHRoYXQgeW91IGNhbiBwcm92aWRlIHdpdGggdGhpcyB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWRpc3Rybyc+RGlzdHJvIEZlYXR1cmVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTEwnPjxnbG9zc3Rlcm0+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExbZG9jXSA9ICJGZWF0dXJlcyB0byBiZSBhZGRlZCB0byBESVNUUk9fRkVBVFVSRVMgaWYgbm90IGFsc28gcHJlc2VudCBpbiBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRC4gVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIG1ldGEvY29uZi9iaXRiYWtlLmNvbmYgZmlsZSBhbmQgaXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPkRJU1RST19GRUFUVVJFUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYWxzbyBwcmVzZW50IGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQnPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9saW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlci1jb25maWd1cmFibGUuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGJlc3QgdG8ganVzdCByZWZlcmVuY2UgdGhlIHZhcmlhYmxlIHRvIHNlZSB3aGljaCBkaXN0cm8gZmVhdHVyZXMgYXJlCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJhY2tmaWxsZWQgZm9yIGFsbCBkaXN0cm8gY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQnPjxnbG9zc3Rlcm0+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEW2RvY10gPSAiRmVhdHVyZXMgZnJvbSBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTEwgdGhhdCBzaG91bGQgbm90IGJlIGJhY2tmaWxsZWQgKGkuZS4gYWRkZWQgdG8gRElTVFJPX0ZFQVRVUkVTKSBkdXJpbmcgdGhlIGJ1aWxkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFU19CQUNLRklMTCc+RElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIG5vdCBiZSBiYWNrZmlsbGVkIChpLmUuIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz5ESVNUUk9fRkVBVFVSRVM8L2xpbms+PC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPX0ZFQVRVUkVTX0RFRkFVTFQnPjxnbG9zc3Rlcm0+RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERJU1RST19GRUFUVVJFU19ERUZBVUxUW2RvY10gPSAiUHJvdmlkZXMgdGhlIGRlZmF1bHQgbGlzdCBvZiBkaXN0cm8gZmVhdHVyZXMgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFueSBsaWJjLXNwZWNpZmljIGZlYXR1cmVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBjb252ZW5pZW5jZSB2YXJpYWJsZSB0aGF0IGdpdmVzIHlvdSB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBsaXN0IG9mIGRpc3RybyBmZWF0dXJlcyB3aXRoIHRoZSBleGNlcHRpb24gb2YgYW55CisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHNwZWNpZmljIHRvIHRoZSBDIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIGEgY3VzdG9tIGRpc3RyaWJ1dGlvbiwgeW91IG1pZ2h0IGZpbmQgaXQKKyAgICAgICAgICAgICAgICAgICAgdXNlZnVsIHRvIGJlIGFibGUgdG8gcmV1c2UgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHdpdGhvdXQgdGhlIG5lZWQgdG8gd3JpdGUgb3V0IHRoZSBmdWxsIHNldC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFQ8L2ZpbGVuYW1lPiBmcm9tIGEKKyAgICAgICAgICAgICAgICAgICAgY3VzdG9tIGRpc3RybyBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSBteWZlYXR1cmUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRSc+PGdsb3NzdGVybT5ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZlYXR1cmVzIHRoYXQgaWYgcHJlc2VudCBpbiB0aGUgdGFyZ2V0IERJU1RST19GRUFUVVJFUyB2YWx1ZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gRElTVFJPX0ZFQVRVUkVTIHdoZW4gYnVpbGRpbmcgbmF0aXZlIHJlY2lwZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZlYXR1cmVzIHRoYXQgaWYgcHJlc2VudCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPiB3aGVuIGJ1aWxkaW5nIG5hdGl2ZQorICAgICAgICAgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gYWRkaXRpb24gdG8gdGhlIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX05BVElWRSc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19OQVRJVkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNESyc+PGdsb3NzdGVybT5ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNESzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVTREtbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZlYXR1cmVzIHRoYXQgaWYgcHJlc2VudCBpbiB0aGUgdGFyZ2V0IERJU1RST19GRUFUVVJFUyB2YWx1ZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gRElTVFJPX0ZFQVRVUkVTIHdoZW4gYnVpbGRpbmcgbmF0aXZlc2RrIHJlY2lwZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZlYXR1cmVzIHRoYXQgaWYgcHJlc2VudCBpbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPiB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkayByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gYWRkaXRpb24gdG8gdGhlIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX05BVElWRVNESyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19OQVRJVkVTREs8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKzwhLS0KKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfTElCQyc+PGdsb3NzdGVybT5ESVNUUk9fRkVBVFVSRVNfTElCQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX0ZFQVRVUkVTX0xJQkNbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgZGlzdHJvIGZlYXR1cmVzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBDIGxpYnJhcnkgKGxpYmMpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBjb252ZW5pZW5jZSB2YXJpYWJsZSB0aGF0IHNwZWNpZmllcyB0aGUgbGlzdCBvZiBkaXN0cm8KKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIEMgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhlc2UgZmVhdHVyZXMgYXJlIHByZWZpeGVkIHdpdGggImxpYmMtIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgY29udHJvbCB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhdCBkdXJpbmcgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgQyBsaWJyYXJ5IGl0c2VsZi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CistLT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURJU1RST19GRUFUVVJFU19OQVRJVkUnPjxnbG9zc3Rlcm0+RElTVFJPX0ZFQVRVUkVTX05BVElWRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX0ZFQVRVUkVTX05BVElWRVtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZmVhdHVyZXMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gRElTVFJPX0ZFQVRVUkVTIHdoZW4gYnVpbGRpbmcgbmF0aXZlIHJlY2lwZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZlYXR1cmVzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBuYXRpdmUgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIGFkZGl0aW9uIHRvIHRoZSBmZWF0dXJlcworICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPX0ZFQVRVUkVTX05BVElWRVNESyc+PGdsb3NzdGVybT5ESVNUUk9fRkVBVFVSRVNfTkFUSVZFU0RLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBESVNUUk9fRkVBVFVSRVNfTkFUSVZFU0RLW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmZWF0dXJlcyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBESVNUUk9fRkVBVFVSRVMgd2hlbiBidWlsZGluZyBuYXRpdmVzZGsgcmVjaXBlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZmVhdHVyZXMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIG5hdGl2ZXNkayByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gYWRkaXRpb24gdG8gdGhlIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVTREsnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNESzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ESVNUUk9fTkFNRSc+PGdsb3NzdGVybT5ESVNUUk9fTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPX05BTUVbZG9jXSA9ICJUaGUgbG9uZyBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9uZyBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgc2hvcnQgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBjb3JyZXNwb25kcworICAgICAgICAgICAgICAgICAgICB0byBhIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUgd2hvc2Ugcm9vdCBuYW1lIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICBzYW1lIGFzIHRoZSB2YXJpYWJsZSdzIGFyZ3VtZW50IGFuZCB3aG9zZSBmaWxlbmFtZQorICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24gaXMgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIFBva3kgZGlzdHJpYnV0aW9uIGlzIG5hbWVkIDxmaWxlbmFtZT5wb2t5LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgcmVzaWRlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2Rpc3RybzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdpdGhpbiB0aGF0IDxmaWxlbmFtZT5wb2t5LmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19OQU1FPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgc2V0IGFzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX05BTUUgPSAiUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgbG9jYXRlZCBpbiBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3RybzwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5ESVNUUk9fTkFNRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBibGFuaywgYSBzZXQgb2YgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBhcmUgdXNlZCwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzcGVjaWZpZWQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPX1ZFUlNJT04nPjxnbG9zc3Rlcm0+RElTVFJPX1ZFUlNJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERJU1RST19WRVJTSU9OW2RvY10gPSAiVGhlIHZlcnNpb24gb2YgdGhlIGRpc3RyaWJ1dGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRElTVFJPT1ZFUlJJREVTJz48Z2xvc3N0ZXJtPkRJU1RST09WRVJSSURFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRElTVFJPT1ZFUlJJREVTW2RvY10gPSAiQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvdmVycmlkZXMgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgZGlzdHJpYnV0aW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvdmVycmlkZXMgc3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGxpc3QgaW5jbHVkZXMgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZXh0ZW5kIDxmaWxlbmFtZT5ESVNUUk9PVkVSUklERVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBhZGQgZXh0cmEgb3ZlcnJpZGVzIHRoYXQgc2hvdWxkIGFwcGx5IHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSBiZWhpbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST09WRVJSSURFUzwvZmlsZW5hbWU+IGlzIHNpbXBseSB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgIGlzIGluY2x1ZGVkIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRExfRElSJz48Z2xvc3N0ZXJtPkRMX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRExfRElSW2RvY10gPSAiVGhlIGNlbnRyYWwgZG93bmxvYWQgZGlyZWN0b3J5IHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc3RvcmUgZG93bmxvYWRzLiBCeSBkZWZhdWx0LCB0aGUgZGlyZWN0b3J5IGlzICdkb3dubG9hZHMnIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgY2VudHJhbCBkb3dubG9hZCBkaXJlY3RvcnkgdXNlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyB0bworICAgICAgICAgICAgICAgICAgICBzdG9yZSBkb3dubG9hZHMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBnZXRzIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGZvciBtaXJyb3JpbmcgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IEdpdAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRhcmJhbGxzIG9mIEdpdCByZXBvc2l0b3JpZXMsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGZpbGVuYW1lPkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyBkaXJlY3RvcnkgYnkgZGVmaW5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHNlbGYtbWFpbnRhaW5pbmcgYW5kIHlvdSBzaG91bGQgbm90IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdG8gdG91Y2ggaXQuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBkaXJlY3RvcnkgaXMgPGZpbGVuYW1lPmRvd25sb2FkczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgI0RMX0RJUiA/PSAiJHtUT1BESVJ9L2Rvd25sb2FkcyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IGEgZGlmZmVyZW50IGRvd25sb2FkIGRpcmVjdG9yeSwgc2ltcGx5IHJlbW92ZQorICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWVudCBmcm9tIHRoZSBsaW5lIGFuZCBwcm92aWRlIHlvdXIgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgYSBmaXJzdCBidWlsZCwgdGhlIHN5c3RlbSBkb3dubG9hZHMgbWFueSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUgdGFyYmFsbHMgZnJvbSB2YXJpb3VzIHVwc3RyZWFtIHByb2plY3RzLgorICAgICAgICAgICAgICAgICAgICBEb3dubG9hZGluZyBjYW4gdGFrZSBhIHdoaWxlLCBwYXJ0aWN1bGFybHkgaWYgeW91ciBuZXR3b3JrCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gaXMgc2xvdy4KKyAgICAgICAgICAgICAgICAgICAgVGFyYmFsbHMgYXJlIGFsbCBzdG9yZWQgaW4gdGhlIGRpcmVjdG9yeSBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBhbmQgdGhlIGJ1aWxkIHN5c3RlbSBsb29rcyB0aGVyZQorICAgICAgICAgICAgICAgICAgICBmaXJzdCB0byBmaW5kIHNvdXJjZSB0YXJiYWxscy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHdpcGluZyBhbmQgcmVidWlsZGluZywgeW91IGNhbiBwcmVzZXJ2ZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdG8gc3BlZWQgdXAgdGhpcyBwYXJ0IG9mIHN1YnNlcXVlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNhZmVseSBzaGFyZSB0aGlzIGRpcmVjdG9yeSBiZXR3ZWVuIG11bHRpcGxlIGJ1aWxkcworICAgICAgICAgICAgICAgICAgICBvbiB0aGUgc2FtZSBkZXZlbG9wbWVudCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGJ1aWxkIHByb2Nlc3MgZ2V0cworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMgd2hlbiB3b3JraW5nIGJlaGluZCBhIGZpcmV3YWxsIG9yIHByb3h5IHNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoaXMgc3BlY2lmaWMgcXVlc3Rpb24gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctZG9lcy10aGUteW9jdG8tcHJvamVjdC1vYnRhaW4tc291cmNlLWNvZGUtYW5kLXdpbGwtaXQtd29yay1iZWhpbmQtbXktZmlyZXdhbGwtb3ItcHJveHktc2VydmVyJz5GQVE8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvV29ya2luZ19CZWhpbmRfYV9OZXR3b3JrX1Byb3h5Jz5Xb3JraW5nIEJlaGluZCBhIE5ldHdvcmsgUHJveHk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgV2lraSBwYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURPQ19DT01QUkVTUyc+PGdsb3NzdGVybT5ET0NfQ09NUFJFU1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIERPQ19DT01QUkVTU1tkb2NdID0gIldoZW4gaW5oZXJpdGluZyB0aGUgY29tcHJlc3NfZG9jIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNldHMgdGhlIGNvbXByZXNzaW9uIHBvbGljeSB1c2VkIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY29tcHJlc3NlcyBtYW4gcGFnZXMgYW5kIGluZm8gcGFnZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNvbXByZXNzX2RvYyc+PGZpbGVuYW1lPmNvbXByZXNzX2RvYzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzZXRzIHRoZSBjb21wcmVzc2lvbiBwb2xpY3kgdXNlZCB3aGVuCisgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNvbXByZXNzZXMgbWFuIHBhZ2VzIGFuZCBpbmZvCisgICAgICAgICAgICAgICAgICAgIHBhZ2VzLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgY29tcHJlc3Npb24gbWV0aG9kIHVzZWQgaXMgZ3ogKGd6aXApLgorICAgICAgICAgICAgICAgICAgICBPdGhlciBwb2xpY2llcyBhdmFpbGFibGUgYXJlIHh6IGFuZCBiejIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBwb2xpY2llcyBhbmQgb24gaG93IHRvIHVzZSB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBzZWUgdGhlIGNvbW1lbnRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2NvbXByZXNzX2RvYy5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktZSc+PHRpdGxlPkU8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRUZJX1BST1ZJREVSJz48Z2xvc3N0ZXJtPkVGSV9QUk9WSURFUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRUZJX1BST1ZJREVSW2RvY10gPSAiV2hlbiBidWlsZGluZyBib290YWJsZSBpbWFnZXMgKGkuZS4gd2hlcmUgaGRkaW1nLCBpc28sIG9yIHdpYy52bWRrIGlzIGluIElNQUdFX0ZTVFlQRVMpLCB0aGUgRUZJX1BST1ZJREVSIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgRUZJIGJvb3Rsb2FkZXIgdG8gdXNlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBib290YWJsZSBpbWFnZXMgKGkuZS4gd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhkZGltZzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+aXNvPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT53aWMudm1kazwvZmlsZW5hbWU+IGlzIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPiksCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+RUZJX1BST1ZJREVSPC9maWxlbmFtZT4gdmFyaWFibGUgc3BlY2lmaWVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBFRkkgYm9vdGxvYWRlciB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzICJncnViLWVmaSIsIGJ1dCAic3lzdGVtZC1ib290IiBjYW4gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN5c3RlbWQtYm9vdCc+PGZpbGVuYW1lPnN5c3RlbWQtYm9vdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UtbGl2ZSc+PGZpbGVuYW1lPmltYWdlLWxpdmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3NlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FTkFCTEVfQklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OJz48Z2xvc3N0ZXJtPkVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT05bZG9jXSA9ICJDb250cm9scyB3aGljaCBsb2NhbGVzIGZvciBnbGliYyBhcmUgZ2VuZXJhdGVkIGR1cmluZyB0aGUgYnVpbGQuIFRoZSB2YXJpYWJsZSBpcyB1c2VmdWwgaWYgdGhlIHRhcmdldCBkZXZpY2UgaGFzIDY0TWJ5dGVzIG9mIFJBTSBvciBsZXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGUgdGhhdCBjb250cm9scyB3aGljaCBsb2NhbGVzIGZvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBhcmUgZ2VuZXJhdGVkIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgKHVzZWZ1bCBpZiB0aGUgdGFyZ2V0IGRldmljZSBoYXMgNjRNYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgb2YgUkFNIG9yIGxlc3MpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVSUl9SRVBPUlRfRElSJz48Z2xvc3N0ZXJtPkVSUl9SRVBPUlRfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFUlJfUkVQT1JUX0RJUltkb2NdID0gIldoZW4gdXNlZCB3aXRoIHRoZSByZXBvcnQtZXJyb3IgY2xhc3MsIHNwZWNpZmllcyB0aGUgcGF0aCB1c2VkIGZvciBzdG9yaW5nIHRoZSBkZWJ1ZyBmaWxlcyBjcmVhdGVkIGJ5IHRoZSBlcnJvciByZXBvcnRpbmcgdG9vbCwgd2hpY2ggYWxsb3dzIHlvdSB0byBzdWJtaXQgYnVpbGQgZXJyb3JzIHlvdSBlbmNvdW50ZXIgdG8gYSBjZW50cmFsIGRhdGFiYXNlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2VkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXJlcG9ydC1lcnJvcic+PGZpbGVuYW1lPnJlcG9ydC1lcnJvcjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgc3BlY2lmaWVzIHRoZSBwYXRoIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGRlYnVnIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLXRoZS1lcnJvci1yZXBvcnRpbmctdG9vbCc+ZXJyb3IgcmVwb3J0aW5nIHRvb2w8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggYWxsb3dzIHlvdSB0byBzdWJtaXQgYnVpbGQgZXJyb3JzIHlvdSBlbmNvdW50ZXIgdG8gYQorICAgICAgICAgICAgICAgICAgICBjZW50cmFsIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1MT0dfRElSJz48ZmlsZW5hbWU+TE9HX0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L2Vycm9yLXJlcG9ydDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNldCA8ZmlsZW5hbWU+RVJSX1JFUE9SVF9ESVI8L2ZpbGVuYW1lPiB0byB0aGUgcGF0aAorICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCB0aGUgZXJyb3IgcmVwb3J0aW5nIHRvb2wgdG8gc3RvcmUgdGhlIGRlYnVnIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3MgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRVJSX1JFUE9SVF9ESVIgPSAiPHJlcGxhY2VhYmxlPnBhdGg8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVSUk9SX1FBJz48Z2xvc3N0ZXJtPkVSUk9SX1FBPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFUlJPUl9RQVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcXVhbGl0eSBhc3N1cmFuY2UgY2hlY2tzIHdob3NlIGZhaWx1cmVzIGFyZSByZXBvcnRlZCBhcyBlcnJvcnMgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHF1YWxpdHkgYXNzdXJhbmNlIGNoZWNrcyB3aG9zZSBmYWlsdXJlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZWQgYXMgZXJyb3JzIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2V0IHRoaXMgdmFyaWFibGUgaW4geW91ciBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICBGb3IgYSBsaXN0IG9mIHRoZSBjaGVja3MgeW91IGNhbiBjb250cm9sIHdpdGggdGhpcyB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRVhDTFVERV9GUk9NX1NITElCUyc+PGdsb3NzdGVybT5FWENMVURFX0ZST01fU0hMSUJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fU0hMSUJTW2RvY10gPSAiQ2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtJ3Mgc2hhcmVkIGxpYnJhcmllcyByZXNvbHZlciB0byBleGNsdWRlIGFuIGVudGlyZSBwYWNrYWdlIHdoZW4gc2Nhbm5pbmcgZm9yIHNoYXJlZCBsaWJyYXJpZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUcmlnZ2VycyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSdzIHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIgdG8gZXhjbHVkZSBhbiBlbnRpcmUgcGFja2FnZSB3aGVuIHNjYW5uaW5nIGZvcgorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgbGlicmFyaWVzIHJlc29sdmVyJ3MgZnVuY3Rpb25hbGl0eSByZXN1bHRzCisgICAgICAgICAgICAgICAgICAgICAgICBpbiBwYXJ0IGZyb20gdGhlIGludGVybmFsIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZV9kb19zaGxpYnM8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgcGFydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgdGhlIHNoYXJlZCBsaWJyYXJpZXMgcmVzb2x2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGltcGxpY2l0bHkgZGVmaW5lIHNvbWUgZGVwZW5kZW5jaWVzIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RVhDTFVERV9GUk9NX1NITElCUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgIHNpbWlsYXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUklWQVRFX0xJQlMnPjxmaWxlbmFtZT5QUklWQVRFX0xJQlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGV4Y2x1ZGVzIGEgcGFja2FnZSdzIHBhcnRpY3VsYXIgbGlicmFyaWVzCisgICAgICAgICAgICAgICAgICAgIG9ubHkgYW5kIG5vdCB0aGUgd2hvbGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhDTFVERV9GUk9NX1NITElCUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGJ5CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgaXQgdG8gIjEiIGZvciBhIHBhcnRpY3VsYXIgcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWENMVURFX0ZST01fU0hMSUJTID0gIjEiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWENMVURFX0ZST01fV09STEQnPjxnbG9zc3Rlcm0+RVhDTFVERV9GUk9NX1dPUkxEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fV09STERbZG9jXSA9ICJEaXJlY3RzIEJpdEJha2UgdG8gZXhjbHVkZSBhIHJlY2lwZSBmcm9tIHdvcmxkIGJ1aWxkcyAoaS5lLiBiaXRiYWtlIHdvcmxkKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERpcmVjdHMgQml0QmFrZSB0byBleGNsdWRlIGEgcmVjaXBlIGZyb20gd29ybGQgYnVpbGRzIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIHdvcmxkPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgd29ybGQgYnVpbGRzLCBCaXRCYWtlIGxvY2F0ZXMsIHBhcnNlcyBhbmQgYnVpbGRzIGFsbAorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGZvdW5kIGluIGV2ZXJ5IGxheWVyIGV4cG9zZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBleGNsdWRlIGEgcmVjaXBlIGZyb20gYSB3b3JsZCBidWlsZCB1c2luZyB0aGlzIHZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICBzZXQgdGhlIHZhcmlhYmxlIHRvICIxIiBpbiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGFkZGVkIHRvIDxmaWxlbmFtZT5FWENMVURFX0ZST01fV09STEQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBtYXkgc3RpbGwgYmUgYnVpbHQgZHVyaW5nIGEgd29ybGQgYnVpbGQgaW4gb3JkZXIgdG8gc2F0aXNmeQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgQWRkaW5nIGEgcmVjaXBlIHRvIDxmaWxlbmFtZT5FWENMVURFX0ZST01fV09STEQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvbmx5IGVuc3VyZXMgdGhhdCB0aGUgcmVjaXBlIGlzIG5vdCBleHBsaWNpdGx5IGFkZGVkCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBsaXN0IG9mIGJ1aWxkIHRhcmdldHMgaW4gYSB3b3JsZCBidWlsZC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRFTkRQRSc+PGdsb3NzdGVybT5FWFRFTkRQRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhURU5EUEVbZG9jXSA9ICJVc2VkIHdpdGggZmlsZSBhbmQgcGF0aG5hbWVzIHRvIGNyZWF0ZSBhIHByZWZpeCBmb3IgYSByZWNpcGUncyB2ZXJzaW9uIGJhc2VkIG9uIHRoZSByZWNpcGUncyBQRSB2YWx1ZS4gSWYgUEUgaXMgc2V0IGFuZCBncmVhdGVyIHRoYW4gemVybyBmb3IgYSByZWNpcGUsIEVYVEVORFBFIGJlY29tZXMgdGhhdCB2YWx1ZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgd2l0aCBmaWxlIGFuZCBwYXRobmFtZXMgdG8gY3JlYXRlIGEgcHJlZml4IGZvciBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gYmFzZWQgb24gdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L2xpbms+IHZhbHVlLgorICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPiBpcyBzZXQgYW5kIGdyZWF0ZXIgdGhhbiB6ZXJvIGZvciBhIHJlY2lwZSwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT4gYmVjb21lcyB0aGF0IHZhbHVlIChlLmcgaWYKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBFPC9maWxlbmFtZT4gaXMgZXF1YWwgdG8gIjEiIHRoZW4gPGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYmVjb21lcyAiMV8iKS4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUncyA8ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPiBpcyBub3Qgc2V0ICh0aGUgZGVmYXVsdCkgb3IgaXMgZXF1YWwgdG8KKyAgICAgICAgICAgICAgICAgICAgemVybywgPGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT4gYmVjb21lcyAiIi48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNlZSB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QJz48ZmlsZW5hbWU+U1RBTVA8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFuIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRVhURU5EUEtHVic+PGdsb3NzdGVybT5FWFRFTkRQS0dWPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWFRFTkRQS0dWW2RvY10gPSAiVGhlIGZ1bGwgcGFja2FnZSB2ZXJzaW9uIHNwZWNpZmljYXRpb24gYXMgaXQgYXBwZWFycyBvbiB0aGUgZmluYWwgcGFja2FnZXMgcHJvZHVjZWQgYnkgYSByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZnVsbCBwYWNrYWdlIHZlcnNpb24gc3BlY2lmaWNhdGlvbiBhcyBpdCBhcHBlYXJzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBwYWNrYWdlcyBwcm9kdWNlZCBieSBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgbm9ybWFsbHkgdXNlZCB0byBmaXggYSBydW50aW1lCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgdG8gdGhlIGV4YWN0IHNhbWUgdmVyc2lvbiBvZiBhbm90aGVyIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJERVBFTkRTXyR7UE59LWFkZGl0aW9uYWwtbW9kdWxlID0gIiR7UE59ICg9ICR7RVhURU5EUEtHVn0pIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgYXJlIGludGVuZGVkIHRvIGZvcmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIgdG8gdXBncmFkZSB0aGVzZSB0eXBlcyBvZiBwYWNrYWdlcyBpbgorICAgICAgICAgICAgICAgICAgICBsb2NrLXN0ZXAuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRVhURVJOQUxfS0VSTkVMX1RPT0xTJz48Z2xvc3N0ZXJtPkVYVEVSTkFMX0tFUk5FTF9UT09MUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhURVJOQUxfS0VSTkVMX1RPT0xTW2RvY10gPSAiSW5kaWNhdGVzIGtlcm5lbCB0b29scyBhcmUgZXh0ZXJuYWwgdG8gdGhlIHNvdXJjZSB0cmVlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzZXQsIHRoZSA8ZmlsZW5hbWU+RVhURVJOQUxfS0VSTkVMX1RPT0xTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW5kaWNhdGVzIHRoYXQgdGhlc2UgdG9vbHMgYXJlIG5vdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIHRyZWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4ga2VybmVsIHRvb2xzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHRyZWUsIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZCBvdmVyIGFueSBleHRlcm5hbGx5IGluc3RhbGxlZCB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPkVYVEVSTkFMX0tFUk5FTF9UT09MUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRlbGxzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByZWZlcgorICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFsbGVkIGV4dGVybmFsIHRvb2xzLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbC15b2N0byc+PGZpbGVuYW1lPmtlcm5lbC15b2N0bzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBpbiA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4gdG8gc2VlIGhvdworICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGUgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRFUk5BTFNSQyc+PGdsb3NzdGVybT5FWFRFUk5BTFNSQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhURVJOQUxTUkNbZG9jXSA9ICJJZiBleHRlcm5hbHNyYy5iYmNsYXNzIGlzIGluaGVyaXRlZCwgdGhpcyB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIHNvdXJjZSB0cmVlLCB3aGljaCBpcyBvdXRzaWRlIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgc291cmNlIHRyZWUsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIG91dHNpZGUgb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0LCB0aGlzIHZhcmlhYmxlIHNldHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgd2hhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRvIGxvY2F0ZSB1bnBhY2tlZCByZWNpcGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz48ZmlsZW5hbWU+ZXh0ZXJuYWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UnPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVYVEVSTkFMU1JDX0JVSUxEJz48Z2xvc3N0ZXJtPkVYVEVSTkFMU1JDX0JVSUxEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWFRFUk5BTFNSQ19CVUlMRFtkb2NdID0gIklmIGV4dGVybmFsc3JjLmJiY2xhc3MgaXMgaW5oZXJpdGVkLCB0aGlzIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSByZWNpcGUncyBzb3VyY2UgY29kZSBpcyBidWlsdCwgd2hpY2ggaXMgb3V0c2lkZSBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3Mgc291cmNlIGNvZGUgaXMgYnVpbHQsIHdoaWNoIGlzIG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0LCB0aGlzIHZhcmlhYmxlIHNldHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgd2hhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRvIGxvY2F0ZSB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhpcyB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLXNvZnR3YXJlLWZyb20tYW4tZXh0ZXJuYWwtc291cmNlJz5CdWlsZGluZyBTb2Z0d2FyZSBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRSQV9BVVRPUkVDT05GJz48Z2xvc3N0ZXJtPkVYVFJBX0FVVE9SRUNPTkY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEVYVFJBX0FVVE9SRUNPTkZbZG9jXSA9ICJFeHRyYSBvcHRpb25zIHBhc3NlZCB0byB0aGUgYXV0b3JlY29uZiBjb21tYW5kLCB3aGljaCBpcyBleGVjdXRlZCBkdXJpbmcgZG9fY29uZmlndXJlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHJlY2lwZXMgaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+RVhUUkFfQVVUT1JFQ09ORjwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgZXh0cmEgb3B0aW9ucyB0byBwYXNzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b3JlY29uZjwvZmlsZW5hbWU+IGNvbW1hbmQgdGhhdCBpcworICAgICAgICAgICAgICAgICAgICBleGVjdXRlZCBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIi0tZXhjbHVkZT1hdXRvcG9pbnQiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVYVFJBX0lNQUdFX0ZFQVRVUkVTJz48Z2xvc3N0ZXJtPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWFRSQV9JTUFHRV9GRUFUVVJFU1tkb2NdID0gIlRoZSBsaXN0IG9mIGFkZGl0aW9uYWwgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiBhbiBpbWFnZS4gQ29uZmlndXJlIHRoaXMgdmFyaWFibGUgaW4gdGhlIGNvbmYvbG9jYWwuY29uZiBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgYWRkaXRpb25hbCBmZWF0dXJlcyB0byBpbmNsdWRlIGluIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBXaGVuIGxpc3RpbmcgbW9yZSB0aGFuIG9uZSBmZWF0dXJlLCBzZXBhcmF0ZSB0aGVtIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgYSBzcGFjZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3UgY29uZmlndXJlIHRoaXMgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIEFsdGhvdWdoIHlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgZnJvbSB3aXRoaW4gYSByZWNpcGUsCisgICAgICAgICAgICAgICAgICAgIGJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgZG8gbm90LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGVuYWJsZSBwcmltYXJ5IGZlYXR1cmVzIGZyb20gd2l0aGluIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiBmZWF0dXJlcyB5b3UgY2FuIGFkZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorImRiZy1wa2dzIiAtIEFkZHMgLWRiZyBwYWNrYWdlcyBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcworICAgICAgICAgICAgIGluY2x1ZGluZyBzeW1ib2wgaW5mb3JtYXRpb24gZm9yIGRlYnVnZ2luZyBhbmQKKyAgICAgICAgICAgICBwcm9maWxpbmcuCisKKyJkZWJ1Zy10d2Vha3MiIC0gTWFrZXMgYW4gaW1hZ2Ugc3VpdGFibGUgZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFsbG93cyByb290IGxvZ2lucyB3aXRob3V0CisgICAgICAgICAgICAgICAgIHBhc3N3b3JkcyBhbmQgZW5hYmxlcyBwb3N0LWluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICBsb2dnaW5nLiBTZWUgdGhlICdhbGxvdy1lbXB0eS1wYXNzd29yZCcKKyAgICAgICAgICAgICAgICAgYW5kICdwb3N0LWluc3RhbGwtbG9nZ2luZycgZmVhdHVyZXMgaW4KKyAgICAgICAgICAgICAgICAgdGhlICI8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMtaW1hZ2UnPkltYWdlIEZlYXR1cmVzPC9saW5rPiIgc2VjdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KKworImRldi1wa2dzIiAtIEFkZHMgLWRldiBwYWNrYWdlcyBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcy4KKyAgICAgICAgICAgICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBkZXZlbG9wIGFnYWluc3QKKyAgICAgICAgICAgICB0aGUgbGlicmFyaWVzIGluIHRoZSBpbWFnZS4KKworInJlYWQtb25seS1yb290ZnMiIC0gQ3JlYXRlcyBhbiBpbWFnZSB3aG9zZSByb290CisgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGlzIHJlYWQtb25seS4gU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+Q3JlYXRpbmcgYSBSZWFkLU9ubHkgUm9vdCBGaWxlc3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uCisKKyJ0b29scy1kZWJ1ZyIgLSBBZGRzIGRlYnVnZ2luZyB0b29scyBzdWNoIGFzIGdkYiBhbmQKKyAgICAgICAgICAgICAgICBzdHJhY2UuCisKKyJ0b29scy1zZGsiIC0gQWRkcyBkZXZlbG9wbWVudCB0b29scyBzdWNoIGFzIGdjYywgbWFrZSwKKyAgICAgICAgICAgICAgcGtnY29uZmlnIGFuZCBzbyBmb3J0aC4KKworInRvb2xzLXRlc3RhcHBzIiAtIEFkZHMgdXNlZnVsIHRlc3RpbmcgdG9vbHMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgIHRzX3ByaW50LCBhcGxheSwgYXJlY29yZCBhbmQgc28KKyAgICAgICAgICAgICAgICAgICBmb3J0aC4KKworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgaW1hZ2UgZmVhdHVyZXMgdGhhdCBzaGlwcyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSJyZWYtZmVhdHVyZXMtaW1hZ2UiPkltYWdlIEZlYXR1cmVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gY3VzdG9taXplIHlvdXIgaW1hZ2UgYnkKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhpcyB2YXJpYWJsZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmdwb2t5LWV4dGVuZC1jdXN0b21pbWFnZS1pbWFnZWZlYXR1cmVzJz5DdXN0b21pemluZyBJbWFnZXMgVXNpbmcgQ3VzdG9tIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+RVhUUkFfSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRSQV9JTUFHRUNNRCc+PGdsb3NzdGVybT5FWFRSQV9JTUFHRUNNRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhUUkFfSU1BR0VDTURbZG9jXSA9ICJTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiBJTUFHRV9DTUQuIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB5b3Ugc2hvdWxkIHVzZSBhbiBvdmVycmlkZSBmb3IgdGhlIGFzc29jaWF0ZWQgaW1hZ2UgdHlwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiBjb21tYW5kIHRoYXQgaGFzIGJlZW4gc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9DTUQnPjxmaWxlbmFtZT5JTUFHRV9DTUQ8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB1c2UgYW4gb3ZlcnJpZGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIGltYWdlIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRSQV9JTUFHRUNNRF9leHQzID89ICItaSA0MDk2IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRVhUUkFfSU1BR0VERVBFTkRTJz48Z2xvc3N0ZXJtPkVYVFJBX0lNQUdFREVQRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhUUkFfSU1BR0VERVBFTkRTW2RvY10gPSAiQSBsaXN0IG9mIHJlY2lwZXMgdG8gYnVpbGQgdGhhdCBkbyBub3QgcHJvdmlkZSBwYWNrYWdlcyBmb3IgaW5zdGFsbGluZyBpbnRvIHRoZSByb290IGZpbGVzeXN0ZW0uIFVzZSB0aGlzIHZhcmlhYmxlIHRvIGxpc3QgcmVjaXBlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgaW1hZ2UsIGJ1dCBub3QgbmVlZGVkIGluIHRoZSByb290IGZpbGVzeXN0ZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgcmVjaXBlcyB0byBidWlsZCB0aGF0IGRvIG5vdCBwcm92aWRlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIGZvciBpbnN0YWxsaW5nIGludG8gdGhlIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGEgcmVjaXBlIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSBmaW5hbCBpbWFnZSBidXQgaXMgbm90CisgICAgICAgICAgICAgICAgICAgIG5lZWRlZCBpbiB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPkVYVFJBX0lNQUdFREVQRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGxpc3QgdGhlc2UgcmVjaXBlcyBhbmQgdGh1cyBzcGVjaWZ5IHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCBleGFtcGxlIGlzIGEgcmVxdWlyZWQgYm9vdGxvYWRlciBpbiBhIG1hY2hpbmUgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gYWRkIHBhY2thZ2VzIHRvIHRoZSByb290IGZpbGVzeXN0ZW0sIHNlZSB0aGUgdmFyaW91cworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+KjxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+UkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT4qPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz5SUkVDT01NRU5EUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRVhUUkFOQVRJVkVQQVRIJz48Z2xvc3N0ZXJtPkVYVFJBTkFUSVZFUEFUSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhUUkFOQVRJVkVQQVRIW2RvY10gPSAiQSBsaXN0IG9mIHN1YmRpcmVjdG9yaWVzIG9mICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSBhZGRlZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQQVRILiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHN1YmRpcmVjdG9yaWVzIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfQklORElSX05BVElWRSc+PGZpbGVuYW1lPlNUQUdJTkdfQklORElSX05BVElWRTwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBwcmVwZW5kcworICAgICAgICAgICAgICAgICAgICAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2Zvbzoke1NUQUdJTkdfQklORElSX05BVElWRX0vYmFyOiIKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRSQU5BVElWRVBBVEggPSAiZm9vIGJhciIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVYVFJBX09FQ01BS0UnPjxnbG9zc3Rlcm0+RVhUUkFfT0VDTUFLRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhUUkFfT0VDTUFLRVtkb2NdID0gIkFkZGl0aW9uYWwgY21ha2Ugb3B0aW9ucy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9jbWFrZS5vcmcvb3ZlcnZpZXcvJz5DTWFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY21ha2UnPjxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRSQV9PRUNPTkYnPjxnbG9zc3Rlcm0+RVhUUkFfT0VDT05GPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWFRSQV9PRUNPTkZbZG9jXSA9ICJBZGRpdGlvbmFsIGNvbmZpZ3VyZSBzY3JpcHQgb3B0aW9ucy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IHNjcmlwdCBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUdfQ09ORkFSR1MnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHBhc3NpbmcgY29uZmlndXJlIHNjcmlwdAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVYVFJBX09FTUFLRSc+PGdsb3NzdGVybT5FWFRSQV9PRU1BS0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEVYVFJBX09FTUFLRVtkb2NdID0gIkFkZGl0aW9uYWwgR05VIG1ha2Ugb3B0aW9ucy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgR05VIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgPGZpbGVuYW1lPkVYVFJBX09FTUFLRTwvZmlsZW5hbWU+IGRlZmF1bHRzIHRvCisgICAgICAgICAgICAgICAgICAgICIiLCB5b3UgbmVlZCB0byBzZXQgdGhlIHZhcmlhYmxlIHRvIHNwZWNpZnkgYW55IHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgIEdOVSBvcHRpb25zLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQVJBTExFTF9NQUtFSU5TVCc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0VJTlNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFsc28gbWFrZSB1c2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkVYVFJBX09FTUFLRTwvZmlsZW5hbWU+IHRvIHBhc3MgdGhlIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgIGZsYWdzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVYVFJBX09FU0NPTlMnPjxnbG9zc3Rlcm0+RVhUUkFfT0VTQ09OUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRVhUUkFfT0VTQ09OU1tkb2NdID0gIldoZW4gYSByZWNpcGUgaW5oZXJpdHMgdGhlIHNjb25zIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB5b3Ugd2FudCB0byBwYXNzIHRvIHRoZSBzY29ucyBjb21tYW5kIGxpbmUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXNjb25zJz48ZmlsZW5hbWU+c2NvbnM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHlvdSB3YW50IHRvIHBhc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY29uczwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRSQV9VU0VSU19QQVJBTVMnPjxnbG9zc3Rlcm0+RVhUUkFfVVNFUlNfUEFSQU1TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBFWFRSQV9VU0VSU19QQVJBTVNbZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSBleHRyYXVzZXJzIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHByb3ZpZGVzIGltYWdlIGxldmVsIHVzZXIgYW5kIGdyb3VwIG9wZXJhdGlvbnMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWV4dHJhdXNlcnMnPjxmaWxlbmFtZT5leHRyYXVzZXJzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHByb3ZpZGVzIGltYWdlIGxldmVsIHVzZXIgYW5kIGdyb3VwCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBtb3JlIGdsb2JhbCBtZXRob2Qgb2YgcHJvdmlkaW5nIHVzZXIgYW5kIGdyb3VwCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYXMgY29tcGFyZWQgdG8gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB3aGljaCB0aWVzIHVzZXIgYW5kIGdyb3VwIGNvbmZpZ3VyYXRpb25zIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgc2V0IGxpc3Qgb2YgY29tbWFuZHMgeW91IGNhbiBjb25maWd1cmUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRSQV9VU0VSU19QQVJBTVM8L2ZpbGVuYW1lPiBpcyBzaG93biBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dHJhdXNlcnM8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgY29tbWFuZHMgbWFwIHRvIHRoZSBub3JtYWwgVW5peCBjb21tYW5kcyBvZiB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICBuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIEVYVFJBX1VTRVJTX1BBUkFNUyA9ICJcCisgICAgICMgdXNlcmFkZCAtcCAnJyB0ZXN0ZXI7IFwKKyAgICAgIyBncm91cGFkZCBkZXZlbG9wZXJzOyBcCisgICAgICMgdXNlcmRlbCBub2JvZHk7IFwKKyAgICAgIyBncm91cGRlbCAtZyB2aWRlbzsgXAorICAgICAjIGdyb3VwbW9kIC1nIDEwMjAgZGV2ZWxvcGVyczsgXAorICAgICAjIHVzZXJtb2QgLXMgL2Jpbi9zaCB0ZXN0ZXI7IFwKKyAgICAgIyAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktZic+PHRpdGxlPkY8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRkVBVFVSRV9QQUNLQUdFUyc+PGdsb3NzdGVybT5GRUFUVVJFX1BBQ0tBR0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBGRUFUVVJFX1BBQ0tBR0VTW2RvY10gPSAiRGVmaW5lcyBvbmUgb3IgbW9yZSBwYWNrYWdlcyB0byBpbmNsdWRlIGluIGFuIGltYWdlIHdoZW4gYSBzcGVjaWZpYyBpdGVtIGlzIGluY2x1ZGVkIGluIElNQUdFX0ZFQVRVUkVTLiBXaGVuIHNldHRpbmcgdGhlIHZhbHVlLCBGRUFUVVJFX1BBQ0tBR0VTIHNob3VsZCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBmZWF0dXJlIGl0ZW0gYXMgYW4gb3ZlcnJpZGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIG9uZSBvciBtb3JlIHBhY2thZ2VzIHRvIGluY2x1ZGUgaW4gYW4gaW1hZ2Ugd2hlbgorICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGl0ZW0gaXMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0dGluZyB0aGUgdmFsdWUsIDxmaWxlbmFtZT5GRUFUVVJFX1BBQ0tBR0VTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGhhdmUgdGhlIG5hbWUgb2YgdGhlIGZlYXR1cmUgaXRlbSBhcyBhbiBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZFQVRVUkVfUEFDS0FHRVNfd2lkZ2V0ID0gIjxyZXBsYWNlYWJsZT5wYWNrYWdlMTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5wYWNrYWdlMjwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgaWYgIndpZGdldCIgd2VyZSBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPHJlcGxhY2VhYmxlPnBhY2thZ2UxPC9yZXBsYWNlYWJsZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5wYWNrYWdlMjwvcmVwbGFjZWFibGU+IHdvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBpbnN0YWxsZWQgYnkgZmVhdHVyZXMgZGVmaW5lZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RkVBVFVSRV9QQUNLQUdFUzwvZmlsZW5hbWU+IGFyZSBvZnRlbiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBzaW1pbGFybHkgbmFtZWQsIHlvdSBzaG91bGQgbm90IGNvbmZ1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RkVBVFVSRV9QQUNLQUdFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZ3JvdXBzLCB3aGljaCBhcmUgZGlzY3Vzc2VkIGVsc2V3aGVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1GRUVEX0RFUExPWURJUl9CQVNFX1VSSSc+PGdsb3NzdGVybT5GRUVEX0RFUExPWURJUl9CQVNFX1VSSTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRkVFRF9ERVBMT1lESVJfQkFTRV9VUklbZG9jXSA9ICJBbGxvdyB0byBzZXJ2ZSBpcGsgZGVwbG95IGRpcmVjdG9yeSBhcyBhbiBhZCBob2MgZmVlZCAoYm9nb2ZlZWQpLiBTZXQgdG8gYmFzZSBVUkwgb2YgdGhlIGRpcmVjdG9yeSBhcyBleHBvcnRlZCBieSBIVFRQLiBTZXQgb2YgYWQgaG9jIGZlZWQgY29uZmlncyB3aWxsIGJlIGdlbmVyYXRlZCBpbiB0aGUgaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIGJhc2UgVVJMIG9mIHRoZSBzZXJ2ZXIgYW5kIGxvY2F0aW9uIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnQtcm9vdCB0aGF0IHByb3ZpZGVzIHRoZSBtZXRhZGF0YSBhbmQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgcmVxdWlyZWQgYnkgT1BLRyB0byBzdXBwb3J0IHJ1bnRpbWUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IG9mIElQSyBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRkVFRF9ERVBMT1lESVJfQkFTRV9VUkkgPSAiaHR0cDovLzE5Mi4xNjguNy4xL0JPQVJELWRpciIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgYXNzdW1lcyB5b3UgYXJlIHNlcnZpbmcgeW91ciBwYWNrYWdlcyBvdmVyCisgICAgICAgICAgICAgICAgICAgIEhUVFAgYW5kIHlvdXIgZGF0YWJhc2VzIGFyZSBsb2NhdGVkIGluIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5CT0FSRC1kaXI8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdW5kZXJuZWF0aAorICAgICAgICAgICAgICAgICAgICB5b3VyIEhUVFAgc2VydmVyJ3MgZG9jdW1lbnQtcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgYSBzZXQKKyAgICAgICAgICAgICAgICAgICAgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgeW91IGluIHlvdXIgdGFyZ2V0IHRoYXQgd29yaworICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBmZWVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUZJTEVTJz48Z2xvc3N0ZXJtPkZJTEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBGSUxFU1tkb2NdID0gIlRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIG9yIGZpbGVzIHRoYXQgYXJlIHBsYWNlZCBpbiBhIHBhY2thZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCBhcmUgcGxhY2VkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGxpc3RzIHRoZSBwYWNrYWdlcyBnZW5lcmF0ZWQgYnkgYSByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4gdmFyaWFibGUsIHByb3ZpZGUgYQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG5hbWUgb3ZlcnJpZGUgdGhhdCBpZGVudGlmaWVzIHRoZSByZXN1bHRpbmcgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlbiwgcHJvdmlkZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIG9yIHBhdGhzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgaWRlbnRpZnkgdGhlIGZpbGVzIHlvdSB3YW50IGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfS9teWRpcjEgJHtiaW5kaXJ9L215ZGlyMi9teWZpbGUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgZmlsZXMgb3IgcGF0aHMsIHlvdSBjYW4gcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB1c2luZyBQeXRob24ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZ2xvYi5odG1sJz48ZmlsZW5hbWU+Z2xvYjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgc3ludGF4LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gYnkgZm9sbG93aW5nIHRoZSBwcmV2aW91cyBsaW5rLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gc3BlY2lmeWluZyBwYXRocyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZCBwcmFjdGljZSB0byB1c2UgYXBwcm9wcmlhdGUgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2UgPGZpbGVuYW1lPiR7c3lzY29uZmRpcn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiA8ZmlsZW5hbWU+L2V0YzwvZmlsZW5hbWU+LCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiaW5kaXJ9PC9maWxlbmFtZT4gcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlc2UgdmFyaWFibGVzIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Agb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gZmluZCB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgPGZpbGVuYW1lPkZJTEVTXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHNvbWUgb2YgdGhlIGZpbGVzIHlvdSBwcm92aWRlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGFyZSBlZGl0YWJsZSBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgIGtub3cgdGhleSBzaG91bGQgbm90IGJlIG92ZXJ3cml0dGVuIGR1cmluZyB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICB1cGRhdGUgcHJvY2VzcyBieSB0aGUgUGFja2FnZSBNYW5hZ2VtZW50IFN5c3RlbSAoUE1TKSwgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiBpZGVudGlmeSB0aGVzZSBmaWxlcyBzbyB0aGF0IHRoZSBQTVMgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlIHRoZW0uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPTkZGSUxFUyc+PGZpbGVuYW1lPkNPTkZGSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHRoZXNlIGZpbGVzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBQTVMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRklMRVNfU09MSUJTREVWJz48Z2xvc3N0ZXJtPkZJTEVTX1NPTElCU0RFVjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRklMRVNfU09MSUJTREVWW2RvY10gPSAiRGVmaW5lcyB0aGUgZnVsbCBwYXRoIG5hbWUgb2YgdGhlIGRldmVsb3BtZW50IHN5bWJvbGljIGxpbmsgKHN5bWxpbmspIGZvciBzaGFyZWQgbGlicmFyaWVzIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBmaWxlIHNwZWNpZmljYXRpb24gdG8gbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNPTElCU0RFVic+PGZpbGVuYW1lPlNPTElCU0RFVjwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIDxmaWxlbmFtZT5GSUxFU19TT0xJQlNERVY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkZWZpbmVzIHRoZSBmdWxsIHBhdGggbmFtZSBvZiB0aGUgZGV2ZWxvcG1lbnQgc3ltYm9saWMgbGluaworICAgICAgICAgICAgICAgICAgICAoc3ltbGluaykgZm9yIHNoYXJlZCBsaWJyYXJpZXMgb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IHNob3dzIGhvdyBpdCBpcyBzZXQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNfU09MSUJTREVWID89ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRklMRVNFWFRSQVBBVEhTJz48Z2xvc3N0ZXJtPkZJTEVTRVhUUkFQQVRIUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRklMRVNFWFRSQVBBVEhTW2RvY10gPSAiRXh0ZW5kcyB0aGUgc2VhcmNoIHBhdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB3aGVuIGxvb2tpbmcgZm9yIGZpbGVzIGFuZCBwYXRjaGVzIGFzIGl0IHByb2Nlc3NlcyByZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBFeHRlbmRzIHRoZSBzZWFyY2ggcGF0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgIHdoZW4gbG9va2luZyBmb3IgZmlsZXMgYW5kIHBhdGNoZXMgYXMgaXQgcHJvY2Vzc2VzIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgYW5kIGFwcGVuZCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgZGlyZWN0b3JpZXMgQml0QmFrZSB1c2VzIHdoZW4gaXQgcHJvY2Vzc2VzCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgYXJlIGluaXRpYWxseSBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGV4dGVuZCA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYnkgdXNpbmcgPGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IGFjY29tcGxpc2ggdGhpcyBieSB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT4gZnJvbSB3aXRoaW4gYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBhbmQgdGhhdCB5b3UgcHJlcGVuZAorICAgICAgICAgICAgICAgICAgICBwYXRocyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIGJ1aWxkIHN5c3RlbSBmaXJzdCBsb29rcyBmb3IgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgaW4gYSBkaXJlY3RvcnkgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIGV4dGVuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgYmUgc3VyZSB0byB1c2UgdGhlIGltbWVkaWF0ZSBleHBhbnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Oj08L2ZpbGVuYW1lPikgb3BlcmF0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBJbW1lZGlhdGUgZXhwYW5zaW9uIG1ha2VzIHN1cmUgdGhhdCBCaXRCYWtlIGV2YWx1YXRlcworICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRISVNESVInPjxmaWxlbmFtZT5USElTRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgdGltZSB0aGUgZGlyZWN0aXZlIGlzIGVuY291bnRlcmVkIHJhdGhlciB0aGFuIGF0CisgICAgICAgICAgICAgICAgICAgICAgICBzb21lIGxhdGVyIHRpbWUgd2hlbiBleHBhbnNpb24gbWlnaHQgcmVzdWx0IGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGZpbGVzIHlvdSBuZWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHNvLCBpbmNsdWRlIHRoZSB0cmFpbGluZyBzZXBhcmF0aW5nIGNvbG9uCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgaWYgeW91IGFyZSBwcmVwZW5kaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRyYWlsaW5nIGNvbG9uIGNoYXJhY3RlciBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBkaXJlY3RpbmcgQml0QmFrZSB0byBleHRlbmQgdGhlIHBhdGggYnkgcHJlcGVuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgdG8gdGhlIHNlYXJjaCBwYXRoLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFub3RoZXIgY29tbW9uIHVzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgYnVpbGQgc3lzdGVtIGV4dGVuZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byBpbmNsdWRlIGEKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWVkIDxmaWxlbmFtZT5maWxlczwvZmlsZW5hbWU+IHRoYXQgaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBjb3JyZXNwb25kaW5nIGFwcGVuZCBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBzcGVjaWZpY2FsbHkgYWRkcyB0aHJlZSBwYXRoczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAicGF0aF8xOnBhdGhfMjpwYXRoXzM6IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgZmluYWwgZXhhbXBsZSBzaG93cyBob3cgeW91IGNhbiBleHRlbmQgdGhlIHNlYXJjaCBwYXRoCisgICAgICAgICAgICAgICAgICAgIGFuZCBpbmNsdWRlIGEKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+LXNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLCB3aGljaCBpcyB1c2VmdWwgaW4gYSBCU1AgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmRfaW50ZWwteDg2LWNvbW1vbiA6PSAiJHtUSElTRElSfS8ke1BOfToiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHN0YXRlbWVudCBhcHBlYXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgZm91bmQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWwvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEhlcmUsIHRoZSBtYWNoaW5lIG92ZXJyaWRlIGlzIGEgc3BlY2lhbAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24gZm9yIG11bHRpcGxlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGF5ZXIgdGhhdCBzdXBwb3J0cyBhIHNpbmdsZSBCU1AsIHRoZSBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgY291bGQganVzdCBiZSB0aGUgdmFsdWUgb2YgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBwcmVwZW5kaW5nIHBhdGhzIGluIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlcywgeW91IGFsbG93IG11bHRpcGxlIGFwcGVuZCBmaWxlcyB0aGF0IHJlc2lkZSBpbgorICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgbGF5ZXJzIGJ1dCBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgcmVjaXBlIHRvCisgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RseSBleHRlbmQgdGhlIHBhdGguCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRklMRVNPVkVSUklERVMnPjxnbG9zc3Rlcm0+RklMRVNPVkVSUklERVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEZJTEVTT1ZFUlJJREVTW2RvY10gPSAiQSBzdWJzZXQgb2YgT1ZFUlJJREVTIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZm9yIGNyZWF0aW5nIEZJTEVTUEFUSC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgc3Vic2V0IG9mIDxsaW5rIGxpbmtlbmQ9J3Zhci1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBmb3IgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5GSUxFU09WRVJSSURFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzIHRvIGF1dG9tYXRpY2FsbHkgZXh0ZW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhhdCB3b3Jrcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IG92ZXJyaWRlcworICAgICAgICAgICAgICAgICAgICBhcmUgaGFuZGxlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY29uZGl0aW9uYWwtc3ludGF4LW92ZXJyaWRlcyc+Q29uZGl0aW9uYWwgU3ludGF4IChPdmVycmlkZXMpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+RklMRVNPVkVSUklERVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBkZWZpbmVkIGFzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEZJTEVTT1ZFUlJJREVTID0gIiR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH06JHtNQUNISU5FT1ZFUlJJREVTfToke0RJU1RST09WRVJSSURFU30iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKworICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCBoYW5kLWVkaXQgdGhlIDxmaWxlbmFtZT5GSUxFU09WRVJSSURFUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZXMgbWF0Y2ggdXAgd2l0aCBleHBlY3RlZCBvdmVycmlkZXMgYW5kIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiBhbiBleHBlY3RlZCBtYW5uZXIgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUZJTEVTUEFUSCc+PGdsb3NzdGVybT5GSUxFU1BBVEg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEZJTEVTUEFUSFtkb2NdID0gIlRoZSBkZWZhdWx0IHNldCBvZiBkaXJlY3RvcmllcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHdoZW4gc2VhcmNoaW5nIGZvciBwYXRjaGVzIGFuZCBmaWxlcy4gSXQgaXMgZGVmaW5lZCBpbiB0aGUgYmFzZS5iYmNsYXNzIGNsYXNzIGZvdW5kIGluIG1ldGEvY2xhc3NlcyBpbiB0aGUgU291cmNlIERpcmVjdG9yeS4gRG8gbm90IGhhbmQtZWRpdCB0aGUgRklMRVNQQVRIIHZhcmlhYmxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgc2V0IG9mIGRpcmVjdG9yaWVzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHVzZXMgd2hlbiBzZWFyY2hpbmcgZm9yIHBhdGNoZXMgYW5kIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MsIEJpdEJha2Ugc2VhcmNoZXMgZWFjaCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+IGluIHRoZSBzcGVjaWZpZWQgb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBsb29raW5nIGZvciBmaWxlcyBhbmQgcGF0Y2hlcyBzcGVjaWZpZWQgYnkgZWFjaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+IFVSSSBpbiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+YmFzZS5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZm91bmQgaW4gPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU1BBVEggPSAiJHtAYmFzZV9zZXRfZmlsZXNwYXRoKFsiJHtGSUxFX0RJUk5BTUV9LyR7QlB9IiwgXAorICAgICAgICAiJHtGSUxFX0RJUk5BTUV9LyR7QlBOfSIsICIke0ZJTEVfRElSTkFNRX0vZmlsZXMiXSwgZCl9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICBleHRlbmRlZCB1c2luZyB0aGUgb3ZlcnJpZGVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFU09WRVJSSURFUyc+PGZpbGVuYW1lPkZJTEVTT1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCBoYW5kLWVkaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGJ1aWxkIHN5c3RlbSB0byBsb29rIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIG90aGVyIHRoYW4gdGhlIGRlZmF1bHRzLCBleHRlbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBkbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgbWFwIHRvIGRpcmVjdG9yaWVzIGluIGN1c3RvbSBsYXllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgYXBwZW5kIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIGFyZSB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgYnVpbGQgc3lzdGVtIHRvIGZpbmQgcGF0Y2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBmaWxlcyB0aGF0IHJlc2lkZSB3aXRoIHlvdXIgYXBwZW5kIGZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBleHRlbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBzZWFyY2hpbmcgYmVoYXZpb3IgaW4KKyAgICAgICAgICAgICAgICAgICAgdXNlZnVsIHdheXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciBhIGNhc2Ugd2hlcmUgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgc3RydWN0dXJlIGV4aXN0cyBmb3IgZ2VuZXJhbCBhbmQgbWFjaGluZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBmaWxlcy9kZWZjb25maWcKKyAgICAgZmlsZXMvTUFDSElORUEvZGVmY29uZmlnCisgICAgIGZpbGVzL01BQ0hJTkVCL2RlZmNvbmZpZworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFsc28gaW4gdGhlIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBjb250YWlucyAiZmlsZTovL2RlZmNvbmZpZyIuCisgICAgICAgICAgICAgICAgICAgIEdpdmVuIHRoaXMgc2NlbmFyaW8sIHlvdSBjYW4gc2V0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byAiTUFDSElORUEiIGFuZCBjYXVzZSB0aGUgYnVpbGQgc3lzdGVtIHRvIHVzZSBmaWxlcworICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5maWxlcy9NQUNISU5FQTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBTZXQgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB0byAiTUFDSElORUIiIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHVzZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZXMvTUFDSElORUI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgZm9yIGFueSBtYWNoaW5lIG90aGVyIHRoYW4gIk1BQ0hJTkVBIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgIk1BQ0hJTkVCIiwgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzL2RlZmNvbmZpZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIHBhdGNoaW5nIHByb2Nlc3MgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+UGF0Y2hpbmc8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I25ldy1yZWNpcGUtcGF0Y2hpbmctY29kZSc+UGF0Y2hpbmcgQ29kZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRklMRVNZU1RFTV9QRVJNU19UQUJMRVMnPjxnbG9zc3Rlcm0+RklMRVNZU1RFTV9QRVJNU19UQUJMRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEZJTEVTWVNURU1fUEVSTVNfVEFCTEVTW2RvY10gPSAiQWxsb3dzIHlvdSB0byBkZWZpbmUgeW91ciBvd24gZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5ncyB0YWJsZSBhcyBwYXJ0IG9mIHlvdXIgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBhY2thZ2luZyBwcm9jZXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHlvdSB0byBkZWZpbmUgeW91ciBvd24gZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5ncyB0YWJsZSBhcyBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgIHlvdXIgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBhY2thZ2luZyBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgbmVlZCBhIGNvbnNpc3RlbnQgc2V0IG9mIGN1c3RvbSBwZXJtaXNzaW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgYSBzZXQgb2YgZ3JvdXBzIGFuZCB1c2VycyBhY3Jvc3MgYW4gZW50aXJlIHdvcmsgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYmVzdCB0byBkbyB0aGlzIGluIHRoZSBwYWNrYWdlcyB0aGVtc2VsdmVzIGJ1dCB0aGlzIGlzIG5vdCBhbHdheXMKKyAgICAgICAgICAgICAgICAgICAgcG9zc2libGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIDxmaWxlbmFtZT5mcy1wZXJtcy50eHQ8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvZmlsZXM8L2ZpbGVuYW1lPiBmb2xkZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY3JlYXRlIHlvdXIgb3duIGZpbGUgcGVybWlzc2lvbnMgc2V0dGluZyB0YWJsZSwgeW91IHNob3VsZCBwbGFjZSBpdCBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxheWVyIG9yIHRoZSBkaXN0cm8ncyBsYXllci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRlZmluZSB0aGUgPGZpbGVuYW1lPkZJTEVTWVNURU1fUEVSTVNfVEFCTEVTPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LCB0bworICAgICAgICAgICAgICAgICAgICBwb2ludCB0byB5b3VyIGN1c3RvbSA8ZmlsZW5hbWU+ZnMtcGVybXMudHh0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBtb3JlIHRoYW4gYSBzaW5nbGUgZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5nIHRhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aHMgeW91IHNwZWNpZnkgdG8gdGhlc2UgZmlsZXMgbXVzdCBiZSBkZWZpbmVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGd1aWRhbmNlIG9uIGhvdyB0byBjcmVhdGUgeW91ciBvd24gZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5ncyB0YWJsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICBleGFtaW5lIHRoZSBleGlzdGluZyA8ZmlsZW5hbWU+ZnMtcGVybXMudHh0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRklUX0hBU0hfQUxHJz48Z2xvc3N0ZXJtPkZJVF9IQVNIX0FMRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBGSVRfSEFTSF9BTEdbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGhhc2ggYWxnb3JpdGhtIHVzZWQgaW4gY3JlYXRpbmcgdGhlIEZJVCBJbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgaGFzaCBhbGdvcml0aG0gdXNlZCBpbiBjcmVhdGluZyB0aGUgRklUIEltYWdlLgorICAgICAgICAgICAgICAgICAgICBGb3IgZS5nLiBzaGEyNTYuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRklUX1NJR05fQUxHJz48Z2xvc3N0ZXJtPkZJVF9TSUdOX0FMRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBGSVRfU0lHTl9BTEdbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gdXNlZCBpbiBjcmVhdGluZyB0aGUgRklUIEltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtIHVzZWQgaW4gY3JlYXRpbmcgdGhlIEZJVCBJbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGUuZy4gcnNhMjA0OC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1GT05UX0VYVFJBX1JERVBFTkRTJz48Z2xvc3N0ZXJtPkZPTlRfRVhUUkFfUkRFUEVORFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEZPTlRfRVhUUkFfUkRFUEVORFNbZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSBmb250Y2FjaGUgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGZvciBmb250IHBhY2thZ2VzLiBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvICdmb250Y29uZmlnLXV0aWxzJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZm9udGNhY2hlJz48ZmlsZW5hbWU+Zm9udGNhY2hlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgcnVudGltZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGZvbnQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+Rk9OVF9FWFRSQV9SREVQRU5EUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byAiZm9udGNvbmZpZy11dGlscyIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRk9OVF9QQUNLQUdFUyc+PGdsb3NzdGVybT5GT05UX1BBQ0tBR0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBGT05UX1BBQ0tBR0VTW2RvY10gPSAiV2hlbiBhIHJlY2lwZSBpbmhlcml0cyB0aGUgZm9udGNhY2hlIGNsYXNzLCB0aGlzIHZhcmlhYmxlIGlkZW50aWZpZXMgcGFja2FnZXMgY29udGFpbmluZyBmb250IGZpbGVzIHRoYXQgbmVlZCB0byBiZSBjYWNoZWQgYnkgRm9udGNvbmZpZy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZm9udGNhY2hlJz48ZmlsZW5hbWU+Zm9udGNhY2hlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIGlkZW50aWZpZXMgcGFja2FnZXMgY29udGFpbmluZyBmb250CisgICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoYXQgbmVlZCB0byBiZSBjYWNoZWQgYnkgRm9udGNvbmZpZy4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5mb250Y2FjaGU8L2ZpbGVuYW1lPiBjbGFzcyBhc3N1bWVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZm9udHMgYXJlIGluIHRoZSByZWNpcGUncyBtYWluIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyB2YXJpYWJsZSBpZiBmb250cyB5b3UgbmVlZCBhcmUgaW4gYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG90aGVyIHRoYW4gdGhhdCBtYWluIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItRk9SQ0VfUk9fUkVNT1ZFJz48Z2xvc3N0ZXJtPkZPUkNFX1JPX1JFTU9WRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRk9SQ0VfUk9fUkVNT1ZFW2RvY10gPSAiRm9yY2VzIHRoZSByZW1vdmFsIG9mIHRoZSBwYWNrYWdlcyBsaXN0ZWQgaW4gUk9PVEZTX1JPX1VOTkVFREVEIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRm9yY2VzIHRoZSByZW1vdmFsIG9mIHRoZSBwYWNrYWdlcyBsaXN0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJPT1RGU19ST19VTk5FRURFRDwvZmlsZW5hbWU+IGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbiBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIHZhcmlhYmxlIHRvICIxIiB0byBmb3JjZSB0aGUgcmVtb3ZhbCBvZiB0aGVzZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1GVUxMX09QVElNSVpBVElPTic+PGdsb3NzdGVybT5GVUxMX09QVElNSVpBVElPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgRlVMTF9PUFRJTUlaQVRJT05bZG9jXT0gIlRoZSBvcHRpb25zIHRvIHBhc3MgaW4gVEFSR0VUX0NGTEFHUyBhbmQgQ0ZMQUdTIHdoZW4gY29tcGlsaW5nIGFuIG9wdGltaXplZCBzeXN0ZW0uIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gJy1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZyZW5hbWUtcmVnaXN0ZXJzIC1PMicuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgb3B0aW9ucyB0byBwYXNzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0NGTEFHUyc+VEFSR0VUX0NGTEFHUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1DRkxBR1MnPkNGTEFHUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB3aGVuIGNvbXBpbGluZyBhbiBvcHRpbWl6ZWQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvCisgICAgICAgICAgICAgICAgICAgICItTzIgLXBpcGUgJHtERUJVR19GTEFHU30iLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktZyc+PHRpdGxlPkc8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR0NDUElFJz48Z2xvc3N0ZXJtPkdDQ1BJRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgR0NDUElFW2RvY10gPSAiRW5hYmxlcyBQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcyAoUElFKSB3aXRoaW4gdGhlIEdOVSBDIENvbXBpbGVyIChHQ0MpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcyAoUElFKSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIEdOVSBDIENvbXBpbGVyIChHQ0MpLgorICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBQSUUgaW4gdGhlIEdDQyBtYWtlcyBSZXR1cm4gT3JpZW50ZWQgUHJvZ3JhbW1pbmcKKyAgICAgICAgICAgICAgICAgICAgKFJPUCkgYXR0YWNrcyBtdWNoIG1vcmUgZGlmZmljdWx0IHRvCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQgdGhlIDxmaWxlbmFtZT5zZWN1cml0eV9mbGFncy5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGVuYWJsZXMgUElFIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgR0NDUElFID89ICItLWVuYWJsZS1kZWZhdWx0LXBpZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdDQ1ZFUlNJT04nPjxnbG9zc3Rlcm0+R0NDVkVSU0lPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgR0NDVkVSU0lPTltkb2NdID0gIlNwZWNpZmllcyB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoZSBHTlUgQyBDb21waWxlciAoR0NDKSB0byB1c2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgR05VIEMgQ29tcGlsZXIgKEdDQykKKyAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgY29tcGlsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5HQ0NWRVJTSU9OPC9maWxlbmFtZT4gaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICI4LngiIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBHQ0NWRVJTSU9OID89ICI4LiUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSB0aGlzIHZhbHVlIGJ5IHNldHRpbmcgaXQgaW4gYSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZpbGUgc3VjaCBhcyB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1HREInPjxnbG9zc3Rlcm0+R0RCPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBHREJbZG9jXSA9ICJUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBHTlUgRGVidWdnZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBHTlUgRGVidWdnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR0lURElSJz48Z2xvc3N0ZXJtPkdJVERJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgR0lURElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSB3aGVyZSBHaXQgY2xvbmVzIHdpbGwgYmUgc3RvcmVkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBpcyBzdG9yZWQgd2hlbiBpdCBpcyBjbG9uZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR0xJQkNfR0VORVJBVEVfTE9DQUxFUyc+PGdsb3NzdGVybT5HTElCQ19HRU5FUkFURV9MT0NBTEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBHTElCQ19HRU5FUkFURV9MT0NBTEVTW2RvY109ICJTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgR0xJQkMgbG9jYWxlcyB0byBnZW5lcmF0ZSBzaG91bGQgeW91IG5vdCB3aXNoIHRvIGdlbmVyYXRlIGFsbCBMSUJDIGxvY2Fscywgd2hpY2ggY2FuIGJlIHRpbWUgY29uc3VtaW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIEdMSUJDIGxvY2FsZXMgdG8gZ2VuZXJhdGUgc2hvdWxkIHlvdQorICAgICAgICAgICAgICAgICAgICBub3Qgd2lzaCB0byBnZW5lcmF0ZSBhbGwgTElCQyBsb2NhbHMsIHdoaWNoIGNhbiBiZSB0aW1lCisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWluZy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3BlY2lmaWNhbGx5IHJlbW92ZSB0aGUgbG9jYWxlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZW5fVVMuVVRGLTg8L2ZpbGVuYW1lPiwgeW91IG11c3Qgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTElOR1VBUyc+PGZpbGVuYW1lPklNQUdFX0xJTkdVQVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgPGZpbGVuYW1lPkdMSUJDX0dFTkVSQVRFX0xPQ0FMRVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYWxsIGxvY2FsZXMgYXJlIGdlbmVyYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgR0xJQkNfR0VORVJBVEVfTE9DQUxFUyA9ICJlbl9HQi5VVEYtOCBlbl9VUy5VVEYtOCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdST1VQQUREX1BBUkFNJz48Z2xvc3N0ZXJtPkdST1VQQUREX1BBUkFNPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBHUk9VUEFERF9QQVJBTVtkb2NdID0gIldoZW4gYSByZWNpcGUgaW5oZXJpdHMgdGhlIHVzZXJhZGQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGZvciBhIHBhY2thZ2Ugd2hhdCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIGdyb3VwYWRkIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gYWRkIGEgZ3JvdXAgdG8gdGhlIHN5c3RlbSB3aGVuIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXNlcmFkZCc+PGZpbGVuYW1lPnVzZXJhZGQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGZvciBhIHBhY2thZ2Ugd2hhdCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5ncm91cGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdpc2ggdG8gYWRkIGEgZ3JvdXAgdG8gdGhlIHN5c3RlbSB3aGVuIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGlzIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gdGhlIDxmaWxlbmFtZT5kYnVzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHN0YW5kYXJkIExpbnV4IHNoZWxsIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdyb3VwYWRkPC9maWxlbmFtZT4sIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGludXguZGllLm5ldC9tYW4vOC9ncm91cGFkZCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR1JPVVBNRU1TX1BBUkFNJz48Z2xvc3N0ZXJtPkdST1VQTUVNU19QQVJBTTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgR1JPVVBNRU1TX1BBUkFNW2RvY10gPSAiV2hlbiBhIHJlY2lwZSBpbmhlcml0cyB0aGUgdXNlcmFkZCBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgZm9yIGEgcGFja2FnZSB3aGF0IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgZ3JvdXBtZW1zIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBtZW1iZXJzIG9mIGEgZ3JvdXAgd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+Z3JvdXBtZW1zPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBpZiB5b3Ugd2lzaCB0byBtb2RpZnkgdGhlIG1lbWJlcnMgb2YgYSBncm91cCB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGlzIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFuZGFyZCBMaW51eCBzaGVsbCBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ncm91cG1lbXM8L2ZpbGVuYW1lPiwgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saW51eC5kaWUubmV0L21hbi84L2dyb3VwbWVtcyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR1JVQl9HRlhTRVJJQUwnPjxnbG9zc3Rlcm0+R1JVQl9HRlhTRVJJQUw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEdSVUJfR0ZYU0VSSUFMW2RvY10gPSAiQ29uZmlndXJlcyB0aGUgR05VIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlciAoR1JVQikgdG8gaGF2ZSBncmFwaGljcyBhbmQgc2VyaWFsIGluIHRoZSBib290IG1lbnUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBDb25maWd1cmVzIHRoZSBHTlUgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyIChHUlVCKSB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzIGFuZCBzZXJpYWwgaW4gdGhlIGJvb3QgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgU2V0IHRoaXMgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBvciBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRvIGVuYWJsZSBncmFwaGljcyBhbmQgc2VyaWFsCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBtZW51LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWdydWItZWZpJz48ZmlsZW5hbWU+Z3J1Yi1lZmk8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1HUlVCX09QVFMnPjxnbG9zc3Rlcm0+R1JVQl9PUFRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBHUlVCX09QVFNbZG9jXSA9ICJBZGRpdGlvbmFsIG9wdGlvbnMgdG8gYWRkIHRvIHRoZSBHTlUgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyIChHUlVCKSBjb25maWd1cmF0aW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBvcHRpb25zIHRvIGFkZCB0byB0aGUgR05VIEdSYW5kIFVuaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgQm9vdGxvYWRlciAoR1JVQikgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVXNlIGEgc2VtaS1jb2xvbiBjaGFyYWN0ZXIgKDxmaWxlbmFtZT47PC9maWxlbmFtZT4pIHRvCisgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlIG11bHRpcGxlIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+R1JVQl9PUFRTPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgb3B0aW9uYWwuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZ3J1Yi1lZmknPjxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSBpcyB1c2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdSVUJfVElNRU9VVCc+PGdsb3NzdGVybT5HUlVCX1RJTUVPVVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEdSVUJfVElNRU9VVFtkb2NdID0gIlNwZWNpZmllcyB0aGUgdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWZhdWx0IExBQkVMIGluIHRoZSBHTlUgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyIChHUlVCKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MQUJFTDwvZmlsZW5hbWU+IGluIHRoZSBHTlUgR1JhbmQgVW5pZmllZAorICAgICAgICAgICAgICAgICAgICBCb290bG9hZGVyIChHUlVCKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5HUlVCX1RJTUVPVVQ8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBvcHRpb25hbC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1ncnViLWVmaSc+PGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR1RLSU1NT0RVTEVTX1BBQ0tBR0VTJz48Z2xvc3N0ZXJtPkdUS0lNTU9EVUxFU19QQUNLQUdFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgR1RLSU1NT0RVTEVTX1BBQ0tBR0VTW2RvY10gPSAiRm9yIHJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSBndGstaW1tb2R1bGVzLWNhY2hlIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBHVEsrIGlucHV0IG1ldGhvZCBtb2R1bGVzIGJlaW5nIGluc3RhbGxlZCB3aGVuIHRoZSBtb2R1bGVzIGFyZSBpbiBwYWNrYWdlcyBvdGhlciB0aGFuIHRoZSBtYWluIHBhY2thZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWd0ay1pbW1vZHVsZXMtY2FjaGUnPjxmaWxlbmFtZT5ndGstaW1tb2R1bGVzLWNhY2hlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZQorICAgICAgICAgICAgICAgICAgICBHVEsrIGlucHV0IG1ldGhvZCBtb2R1bGVzIGJlaW5nIGluc3RhbGxlZCB3aGVuIHRoZSBtb2R1bGVzCisgICAgICAgICAgICAgICAgICAgIGFyZSBpbiBwYWNrYWdlcyBvdGhlciB0aGFuIHRoZSBtYWluIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LWgnPjx0aXRsZT5IPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUhPTUVQQUdFJz48Z2xvc3N0ZXJtPkhPTUVQQUdFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBIT01FUEFHRVtkb2NdID0gIldlYnNpdGUgd2hlcmUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc29mdHdhcmUgdGhlIHJlY2lwZSBpcyBidWlsZGluZyBjYW4gYmUgZm91bmQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXZWJzaXRlIHdoZXJlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvZnR3YXJlIHRoZSByZWNpcGUgaXMgYnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGZvdW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUhPU1RfQVJDSCc+PGdsb3NzdGVybT5IT1NUX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEhPU1RfQVJDSFtkb2NdID0gIlRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBOb3JtYWxseSBzYW1lIGFzIHRoZSBUQVJHRVRfQVJDSC4iCisKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIG5vcm1hbGx5CisgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfQVJDSCc+PGZpbGVuYW1lPlRBUkdFVF9BUkNIPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBtYW55CisgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3QgaXMgYnkgbm8gbWVhbnMgY29tcGxldGUgYXMgdGhlIGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgICAgICAgICBpcyBjb25maWd1cmFibGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYXJtCisgICAgIGk1ODYKKyAgICAgeDg2XzY0CisgICAgIHBvd2VycGMKKyAgICAgcG93ZXJwYzY0CisgICAgIG1pcHMKKyAgICAgbWlwc2VsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1IT1NUX0NDX0FSQ0gnPjxnbG9zc3Rlcm0+SE9TVF9DQ19BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBIT1NUX0NDX0FSQ0hbZG9jXSA9ICJUaGUgbmFtZSBvZiB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuIE5vcm1hbGx5IHNhbWUgYXMgdGhlIFRBUkdFVF9DQ19BUkNILiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb21waWxlciBmbGFncyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICBwYXNzZWQgdG8gdGhlIEMgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgaW5pdGlhbGl6YXRpb24gZm9yIDxmaWxlbmFtZT5IT1NUX0NDX0FSQ0g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoYXQgaXMgYmVpbmcgYnVpbHQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9DQ19BUkNIJz48ZmlsZW5hbWU+VEFSR0VUX0NDX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0NDX0FSQ0g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERTREtfQ0NfQVJDSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgYW4gU0RLIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay08L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSE9TVF9PUyc+PGdsb3NzdGVybT5IT1NUX09TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBIT1NUX09TW2RvY10gPSAiVGhlIG5hbWUgb2YgdGhlIHRhcmdldCBvcGVyYXRpbmcgc3lzdGVtLiBOb3JtYWxseSB0aGUgc2FtZSBhcyB0aGUgVEFSR0VUX09TLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgbm9ybWFsbHkgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfT1MnPjxmaWxlbmFtZT5UQVJHRVRfT1M8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvICJsaW51eCIgZm9yIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+LWJhc2VkIHN5c3RlbXMgYW5kCisgICAgICAgICAgICAgICAgICAgIHRvICJsaW51eC1tdXNsIiBmb3IgPGZpbGVuYW1lPm11c2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEFSTS9FQUJJIHRhcmdldHMsIHRoZXJlIGFyZSBhbHNvICJsaW51eC1nbnVlYWJpIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgImxpbnV4LW11c2xlYWJpIiB2YWx1ZXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSE9TVF9QUkVGSVgnPjxnbG9zc3Rlcm0+SE9TVF9QUkVGSVg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEhPU1RfUFJFRklYW2RvY10gPSAiVGhlIHByZWZpeCBmb3IgdGhlIGNyb3NzIGNvbXBpbGUgdG9vbGNoYWluLiBOb3JtYWxseSBzYW1lIGFzIHRoZSBUQVJHRVRfUFJFRklYLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwcmVmaXggZm9yIHRoZSBjcm9zcy1jb21waWxlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkhPU1RfUFJFRklYPC9maWxlbmFtZT4gaXMgbm9ybWFsbHkgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9QUkVGSVgnPjxmaWxlbmFtZT5UQVJHRVRfUFJFRklYPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUhPU1RfU1lTJz48Z2xvc3N0ZXJtPkhPU1RfU1lTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBIT1NUX1NZU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aGljaCB0aGUgYnVpbGQgaXMgb2NjdXJyaW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aGljaCB0aGUgYnVpbGQgaXMgb2NjdXJyaW5nCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXV0b21hdGljYWxseSBzZXRzIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUhPU1RfQVJDSCc+PGZpbGVuYW1lPkhPU1RfQVJDSDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUhPU1RfVkVORE9SJz48ZmlsZW5hbWU+SE9TVF9WRU5ET1I8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSE9TVF9PUyc+PGZpbGVuYW1lPkhPU1RfT1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIHZhcmlhYmxlIHlvdXJzZWxmLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZXNlIHR3byBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5HaXZlbiBhIG5hdGl2ZSByZWNpcGUgb24gYSAzMi1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ODYgbWFjaGluZSBydW5uaW5nIExpbnV4LCB0aGUgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaTY4Ni1saW51eCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+R2l2ZW4gYSByZWNpcGUgYmVpbmcgYnVpbHQgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXR0bGUtZW5kaWFuIE1JUFMgdGFyZ2V0IHJ1bm5pbmcgTGludXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhbHVlIG1pZ2h0IGJlICJtaXBzZWwtbGludXgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1IT1NUVE9PTFMnPjxnbG9zc3Rlcm0+SE9TVFRPT0xTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBIT1NUVE9PTFNbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IChmaWx0ZXIpIG9mIHRvb2xzIG9uIHRoZSBidWlsZCBob3N0IHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGJ1aWxkIHRhc2tzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCAoZmlsdGVyKSBvZiB0b29scyBvbiB0aGUgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBhbGxvd2VkIHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBidWlsZCB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBmaWx0ZXIgaGVscHMgcmVkdWNlIHRoZSBwb3NzaWJpbGl0eSBvZiBob3N0CisgICAgICAgICAgICAgICAgICAgIGNvbnRhbWluYXRpb24uCisgICAgICAgICAgICAgICAgICAgIElmIGEgdG9vbCBzcGVjaWZpZWQgaW4gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5IT1NUVE9PTFM8L2ZpbGVuYW1lPiBpcyBub3QgZm91bmQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHByb2R1Y2VzCisgICAgICAgICAgICAgICAgICAgIGFuIGVycm9yIGFuZCB0aGUgYnVpbGQgaXMgbm90IHN0YXJ0ZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUhPU1RUT09MU19OT05GQVRBTCc+PGZpbGVuYW1lPkhPU1RUT09MU19OT05GQVRBTDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1IT1NUVE9PTFNfTk9ORkFUQUwnPjxnbG9zc3Rlcm0+SE9TVFRPT0xTX05PTkZBVEFMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBIT1NUVE9PTFNfTk9ORkFUQUxbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IChmaWx0ZXIpIG9mIHRvb2xzIG9uIHRoZSBidWlsZCBob3N0IHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGJ1aWxkIHRhc2tzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCAoZmlsdGVyKSBvZiB0b29scyBvbiB0aGUgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBhbGxvd2VkIHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBidWlsZCB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBmaWx0ZXIgaGVscHMgcmVkdWNlIHRoZSBwb3NzaWJpbGl0eSBvZiBob3N0CisgICAgICAgICAgICAgICAgICAgIGNvbnRhbWluYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFVubGlrZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSE9TVFRPT0xTJz48ZmlsZW5hbWU+SE9TVFRPT0xTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBwcm9kdWNlIGFuIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIGEgdG9vbCBzcGVjaWZpZWQgaW4gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5IT1NUVE9PTFNfTk9ORkFUQUw8L2ZpbGVuYW1lPiBpcyBub3QgZm91bmQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHlvdSBjYW4gdXNlIDxmaWxlbmFtZT5IT1NUVE9PTFNfTk9ORkFUQUw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgb3B0aW9uYWwgaG9zdCB0b29scy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1IT1NUX1ZFTkRPUic+PGdsb3NzdGVybT5IT1NUX1ZFTkRPUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSE9TVF9WRU5ET1JbZG9jXSA9ICJUaGUgbmFtZSBvZiB0aGUgdmVuZG9yLiBOb3JtYWxseSBzYW1lIGFzIHRoZSBUQVJHRVRfVkVORE9SLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSB2ZW5kb3IuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5IT1NUX1ZFTkRPUjwvZmlsZW5hbWU+IGlzIG5vcm1hbGx5IHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfVkVORE9SJz48ZmlsZW5hbWU+VEFSR0VUX1ZFTkRPUjwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktaSc+PHRpdGxlPkk8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSUNFQ0NfRElTQUJMRUQnPjxnbG9zc3Rlcm0+SUNFQ0NfRElTQUJMRUQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElDRUNDX0RJU0FCTEVEW2RvY10gPSAiRGlzYWJsZXMgb3IgZW5hYmxlcyB0aGUgaWNlY2MgKEljZWNyZWFtKSBmdW5jdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERpc2FibGVzIG9yIGVuYWJsZXMgdGhlIDxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIChJY2VjcmVhbSkgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZnVuY3Rpb24gYW5kIGJlc3QgcHJhY3RpY2VzCisgICAgICAgICAgICAgICAgICAgIGZvciB1c2luZyB0aGlzIHZhcmlhYmxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pY2VjYyc+PGZpbGVuYW1lPmljZWNjLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byAiMSIgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGRpc2FibGVzIHRoZSBmdW5jdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJQ0VDQ19ESVNBQkxFRCA/Pz0gIjEiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVG8gZW5hYmxlIHRoZSBmdW5jdGlvbiwgc2V0IHRoZSB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElDRUNDX0RJU0FCTEVEID0gIiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlDRUNDX0VOVl9FWEVDJz48Z2xvc3N0ZXJtPklDRUNDX0VOVl9FWEVDPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJQ0VDQ19FTlZfRVhFQ1tkb2NdID0gIlBvaW50cyB0byB0aGUgaWNlY2MtY3JlYXRlLWVudiBzY3JpcHQgdGhhdCB5b3UgcHJvdmlkZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmljZWNjLWNyZWF0ZS1lbnY8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgcHJvdmlkZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pY2VjYyc+PGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2V0IHRoaXMgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcG9pbnQgdG8gYSBzY3JpcHQgdGhhdCB5b3UgcHJvdmlkZSwgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgZGVmYXVsdCBzY3JpcHQgcHJvdmlkZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlIDxmaWxlbmFtZT5pY2VjYy1jcmVhdGUtZW52LmJiPC9maWxlbmFtZT4gcmVjaXBlLAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIG1vZGlmaWVkIHZlcnNpb24gYW5kIG5vdCB0aGUgb25lIHRoYXQgY29tZXMgd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWNlY2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JQ0VDQ19QQVJBTExFTF9NQUtFJz48Z2xvc3N0ZXJtPklDRUNDX1BBUkFMTEVMX01BS0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElDRUNDX1BBUkFMTEVMX01BS0VbZG9jXSA9ICJFeHRyYSBvcHRpb25zIHBhc3NlZCB0byB0aGUgbWFrZSBjb21tYW5kIGR1cmluZyB0aGUgZG9fY29tcGlsZSB0YXNrIHRoYXQgc3BlY2lmeSBwYXJhbGxlbCBjb21waWxhdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB0aGF0IHNwZWNpZnkgcGFyYWxsZWwgY29tcGlsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgdXN1YWxseSB0YWtlcyB0aGUgZm9ybSBvZgorICAgICAgICAgICAgICAgICAgICAiLWogPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPiIsIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT54PC9yZXBsYWNlYWJsZT4gcmVwcmVzZW50cyB0aGUgbWF4aW11bQorICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgcGFyYWxsZWwgdGhyZWFkcyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNhbgorICAgICAgICAgICAgICAgICAgICBydW4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG9wdGlvbnMgcGFzc2VkIGFmZmVjdCBidWlsZHMgb24gYWxsIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzIG9uIHRoZSBuZXR3b3JrLCB3aGljaCBhcmUgbWFjaGluZXMgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pY2VjY2Q8L2ZpbGVuYW1lPiBkYWVtb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBlbmFibGVkIG1hY2hpbmVzIHN1cHBvcnQgbXVsdGlwbGUgY29yZXMsCisgICAgICAgICAgICAgICAgICAgIGNvbWluZyB1cCB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZ2l2ZXMgeW91IHRoZSBiZXN0IHBlcmZvcm1hbmNlIGNvdWxkIHRha2Ugc29tZQorICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YXRpb24gc2luY2UgbWFjaGluZSBzcGVlZCwgbmV0d29yayBsYWcsCisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBtZW1vcnksIGFuZCBleGlzdGluZyBtYWNoaW5lIGxvYWRzIGNhbiBhbGwKKyAgICAgICAgICAgICAgICAgICAgYWZmZWN0IGJ1aWxkIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdW5saWtlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHRoZXJlIGlzIG5vIHJ1bGUtb2YtdGh1bWIgZm9yIHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklDRUNDX1BBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPiB0byBhY2hpZXZlCisgICAgICAgICAgICAgICAgICAgIG9wdGltYWwgcGVyZm9ybWFuY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qgc2V0IDxmaWxlbmFtZT5JQ0VDQ19QQVJBTExFTF9NQUtFPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gZG9lcyBub3QgdXNlIGl0IChpLmUuIHRoZSBzeXN0ZW0gZG9lcworICAgICAgICAgICAgICAgICAgICBub3QgZGV0ZWN0IGFuZCBhc3NpZ24gdGhlIG51bWJlciBvZiBjb3JlcyBhcyBpcyBkb25lIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSUNFQ0NfUEFUSCc+PGdsb3NzdGVybT5JQ0VDQ19QQVRIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJQ0VDQ19QQVRIW2RvY10gPSAiVGhlIGxvY2F0aW9uIG9mIHRoZSBpY2VjYyBiaW5hcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gb2YgdGhlIDxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+IGJpbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZG9lcyBub3QgZGVmaW5lCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFyaWFibGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pY2VjYyc+PGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGF0dGVtcHRzIHRvIGRlZmluZSBpdCBieSBsb2NhdGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWNlY2M8L2ZpbGVuYW1lPiB1c2luZyA8ZmlsZW5hbWU+d2hpY2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JQ0VDQ19VU0VSX0NMQVNTX0JMJz48Z2xvc3N0ZXJtPklDRUNDX1VTRVJfQ0xBU1NfQkw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElDRUNDX1VTRVJfQ0xBU1NfQkxbZG9jXSA9ICJJZGVudGlmaWVzIHVzZXIgY2xhc3NlcyB0aGF0IHlvdSBkbyBub3Qgd2FudCB0aGUgSWNlY3JlYW0gZGlzdHJpYnV0ZWQgY29tcGlsZSBzdXBwb3J0IHRvIGNvbnNpZGVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB1c2VyIGNsYXNzZXMgdGhhdCB5b3UgZG8gbm90IHdhbnQgdGhlCisgICAgICAgICAgICAgICAgICAgIEljZWNyZWFtIGRpc3RyaWJ1dGVkIGNvbXBpbGUgc3VwcG9ydCB0byBjb25zaWRlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pY2VjYyc+PGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2V0IHRoaXMgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGxpc3QgY2xhc3NlcyB1c2luZyB0aGlzIHZhcmlhYmxlLCB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICJibGFja2xpc3RpbmciIHRoZW0gZnJvbSBkaXN0cmlidXRlZCBjb21waWxhdGlvbiBhY3Jvc3MKKyAgICAgICAgICAgICAgICAgICAgcmVtb3RlIGhvc3RzLgorICAgICAgICAgICAgICAgICAgICBBbnkgY2xhc3NlcyB5b3UgbGlzdCB3aWxsIGJlIGRpc3RyaWJ1dGVkIGFuZCBjb21waWxlZAorICAgICAgICAgICAgICAgICAgICBsb2NhbGx5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlDRUNDX1VTRVJfUEFDS0FHRV9CTCc+PGdsb3NzdGVybT5JQ0VDQ19VU0VSX1BBQ0tBR0VfQkw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElDRUNDX1VTRVJfUEFDS0FHRV9CTFtkb2NdID0gIklkZW50aWZpZXMgdXNlciByZWNpcGVzIHRoYXQgeW91IGRvIG5vdCB3YW50IHRoZSBJY2VjcmVhbSBkaXN0cmlidXRlZCBjb21waWxlIHN1cHBvcnQgdG8gY29uc2lkZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVzIHVzZXIgcmVjaXBlcyB0aGF0IHlvdSBkbyBub3Qgd2FudCB0aGUKKyAgICAgICAgICAgICAgICAgICAgSWNlY3JlYW0gZGlzdHJpYnV0ZWQgY29tcGlsZSBzdXBwb3J0IHRvIGNvbnNpZGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWljZWNjJz48ZmlsZW5hbWU+aWNlY2M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgbGlzdCBwYWNrYWdlcyB1c2luZyB0aGlzIHZhcmlhYmxlLCB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICJibGFja2xpc3RpbmciIHRoZW0gZnJvbSBkaXN0cmlidXRlZCBjb21waWxhdGlvbiBhY3Jvc3MKKyAgICAgICAgICAgICAgICAgICAgcmVtb3RlIGhvc3RzLgorICAgICAgICAgICAgICAgICAgICBBbnkgcGFja2FnZXMgeW91IGxpc3Qgd2lsbCBiZSBkaXN0cmlidXRlZCBhbmQgY29tcGlsZWQKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JQ0VDQ19VU0VSX1BBQ0tBR0VfV0wnPjxnbG9zc3Rlcm0+SUNFQ0NfVVNFUl9QQUNLQUdFX1dMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJQ0VDQ19VU0VSX1BBQ0tBR0VfV0xbZG9jXSA9ICJJZGVudGlmaWVzIHVzZXIgcmVjaXBlcyB0aGF0IHVzZSBhbiBlbXB0eSBQQVJBTExFTF9NQUtFIHZhcmlhYmxlIHRoYXQgeW91IHdhbnQgdG8gZm9yY2UgcmVtb3RlIGRpc3RyaWJ1dGVkIGNvbXBpbGF0aW9uIG9uIHVzaW5nIHRoZSBJY2VjcmVhbSBkaXN0cmlidXRlZCBjb21waWxlIHN1cHBvcnQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVzIHVzZXIgcmVjaXBlcyB0aGF0IHVzZSBhbiBlbXB0eQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdGhhdCB5b3Ugd2FudCB0byBmb3JjZSByZW1vdGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gb24gdXNpbmcgdGhlIEljZWNyZWFtIGRpc3RyaWJ1dGVkIGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pY2VjYyc+PGZpbGVuYW1lPmljZWNjPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2V0IHRoaXMgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfQkFTRU5BTUUnPjxnbG9zc3Rlcm0+SU1BR0VfQkFTRU5BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX0JBU0VOQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiBpbWFnZSBvdXRwdXQgZmlsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBuYW1lIG9mIGltYWdlIG91dHB1dCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byB0aGUgcmVjaXBlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9CT09UX0ZJTEVTJz48Z2xvc3N0ZXJtPklNQUdFX0JPT1RfRklMRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX0JPT1RfRklMRVNbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGZyb20gJHtERVBMT1lfRElSX0lNQUdFfSB0byBwbGFjZSBpbiBib290IHBhcnRpdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZXMgaW5zdGFsbGVkIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGJvb3QgcGFydGl0aW9uIHdoZW4gcHJlcGFyaW5nIGFuIGltYWdlIHVzaW5nIHRoZSBXaWMgdG9vbAorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+Ym9vdGltZy1wYXJ0aXRpb248L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+Ym9vdGltZy1lZmk8L2ZpbGVuYW1lPiBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2luLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZmlsZXMgYXJlIGluc3RhbGxlZCB1bmRlciB0aGUgc2FtZSBuYW1lIGFzCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFRvIGNoYW5nZSB0aGUgaW5zdGFsbGVkIG5hbWUsIHNlcGFyYXRlIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIG5hbWUgd2l0aCBhIHNlbWktY29sb24gKDspLgorICAgICAgICAgICAgICAgICAgICBTb3VyY2UgZmlsZXMgbmVlZCB0byBiZSBsb2NhdGVkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX0lNQUdFJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JTUFHRTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdHdvIGV4YW1wbGVzOgorCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgSU1BR0VfQk9PVF9GSUxFUyA9ICJ1LWJvb3QuaW1nIHVJbWFnZTtrZXJuZWwiCisgICAgIElNQUdFX0JPT1RfRklMRVMgPSAidS1ib290LiR7VUJPT1RfU1VGRklYfSAke0tFUk5FTF9JTUFHRVRZUEV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHNvdXJjZSBmaWxlcyBjYW4gYmUgcGlja2VkIHVwIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIGEgZ2xvYiBwYXR0ZXJuLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG11c3QgaGF2ZSB0aGUgc2FtZSBuYW1lCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBiYXNlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHBhdGguCisgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgZmlsZXMgaW50byBhIGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCBsb2NhdGlvbiwgcGFzcyBpdHMgbmFtZSBhZnRlciBhIHNlbWktY29sb24KKyAgICAgICAgICAgICAgICAgICAgKDspLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0d28gZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgSU1BR0VfQk9PVF9GSUxFUyA9ICJiY20yODM1LWJvb3RmaWxlcy8qIgorICAgICBJTUFHRV9CT09UX0ZJTEVTID0gImJjbTI4MzUtYm9vdGZpbGVzLyo7Ym9vdC8iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGV4YW1wbGUgaW5zdGFsbHMgYWxsIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7REVQTE9ZX0RJUl9JTUFHRX0vYmNtMjgzNS1ib290ZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSByb290IG9mIHRoZSB0YXJnZXQgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2Vjb25kIGV4YW1wbGUgaW5zdGFsbHMgdGhlIHNhbWUgZmlsZXMgaW50byBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ib290PC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIFdpYyB0b29sIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctcGFydGl0aW9uZWQtaW1hZ2VzLXVzaW5nLXdpYyc+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzIFVzaW5nIFdpYzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIG1hdGVyaWFsIGZvciBXaWMgaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1raWNrc3RhcnQnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKC53a3MpIFJlZmVyZW5jZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX0NMQVNTRVMnPjxnbG9zc3Rlcm0+SU1BR0VfQ0xBU1NFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU1BR0VfQ0xBU1NFU1tkb2NdID0gIkEgbGlzdCBvZiBjbGFzc2VzIHRoYXQgYWxsIGltYWdlcyBzaG91bGQgaW5oZXJpdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIHRoYXQgYWxsIGltYWdlcyBzaG91bGQgaW5oZXJpdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHR5cGljYWxseSB1c2UgdGhpcyB2YXJpYWJsZSB0byBzcGVjaWZ5IHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgdGhhdCByZWdpc3RlciB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGltYWdlcworICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgPGZpbGVuYW1lPklNQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW1hZ2VfdHlwZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgaW4gYSBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzczwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9DTUQnPjxnbG9zc3Rlcm0+SU1BR0VfQ01EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9DTURbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBpbWFnZSBmaWxlIGZvciBhIHNwZWNpZmljIGltYWdlIHR5cGUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBzZXQgc2V0IGluIElNQUdFX0ZTVFlQRVMsIChlLmcuIGV4dDMsIGJ0cmZzLCBhbmQgc28gZm9ydGgpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgaW1hZ2UgZmlsZSBmb3IgYQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBpbWFnZSB0eXBlLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgdmFsdWUgc2V0CisgICAgICAgICAgICAgICAgICAgIHNldCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5leHQzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idHJmczwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNldHRpbmcgdGhpcyB2YXJpYWJsZSwgeW91IHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgYW4gb3ZlcnJpZGUgZm9yIHRoZSBhc3NvY2lhdGVkIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9DTURfamZmczIgPSAibWtmcy5qZmZzMiAtLXJvb3Q9JHtJTUFHRV9ST09URlN9IFwKKyAgICAgICAgLS1mYWtldGltZSAtLW91dHB1dD0ke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLmpmZnMyIFwKKyAgICAgICAgJHtFWFRSQV9JTUFHRUNNRH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IHR5cGljYWxseSBkbyBub3QgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZSB1bmxlc3MKKyAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBhZGRpbmcgc3VwcG9ydCBmb3IgYSBuZXcgaW1hZ2UgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgZXhhbXBsZXMgb24gaG93IHRvIHNldCB0aGlzIHZhcmlhYmxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlX3R5cGVzJz48ZmlsZW5hbWU+aW1hZ2VfdHlwZXM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZmlsZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfREVWSUNFX1RBQkxFUyc+PGdsb3NzdGVybT5JTUFHRV9ERVZJQ0VfVEFCTEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9ERVZJQ0VfVEFCTEVTW2RvY10gPSAiU3BlY2lmaWVzIG9uZSBvciBtb3JlIGZpbGVzIHRoYXQgY29udGFpbiBjdXN0b20gZGV2aWNlIHRhYmxlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIG1ha2VkZXZzIGNvbW1hbmQgYXMgcGFydCBvZiBjcmVhdGluZyBhbiBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBvbmUgb3IgbW9yZSBmaWxlcyB0aGF0IGNvbnRhaW4gY3VzdG9tIGRldmljZQorICAgICAgICAgICAgICAgICAgICB0YWJsZXMgdGhhdCBhcmUgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZWRldnM8L2ZpbGVuYW1lPiBjb21tYW5kIGFzIHBhcnQgb2YgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGxpc3QgYmFzaWMgZGV2aWNlIG5vZGVzIHRoYXQgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgdW5kZXIgPGZpbGVuYW1lPi9kZXY8L2ZpbGVuYW1lPiB3aXRoaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+SU1BR0VfREVWSUNFX1RBQkxFUzwvZmlsZW5hbWU+IGlzIG5vdCBzZXQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy9kZXZpY2VfdGFibGUtbWluaW1hbC50eHQ8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICB1c2VkLCB3aGljaCBpcyBsb2NhdGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIGhvdyB5b3Ugc2hvdWxkIHdyaXRlIGRldmljZSB0YWJsZSBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgc2VlIDxmaWxlbmFtZT5tZXRhL2ZpbGVzL2RldmljZV90YWJsZS1taW5pbWFsLnR4dDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxnbG9zc3Rlcm0+SU1BR0VfRkVBVFVSRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX0ZFQVRVUkVTW2RvY10gPSAiVGhlIHByaW1hcnkgbGlzdCBvZiBmZWF0dXJlcyB0byBpbmNsdWRlIGluIGFuIGltYWdlLiBDb25maWd1cmUgdGhpcyB2YXJpYWJsZSBpbiBhbiBpbWFnZSByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJpbWFyeSBsaXN0IG9mIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IGNvbmZpZ3VyZSB0aGlzIHZhcmlhYmxlIGluIGFuIGltYWdlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggeW91IGNhbiB1c2UgdGhpcyB2YXJpYWJsZSBmcm9tIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBiZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IGRvIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgZXh0cmEgZmVhdHVyZXMgZnJvbSBvdXRzaWRlIHRoZSBpbWFnZSByZWNpcGUsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX0lNQUdFX0ZFQVRVUkVTJz5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYSBsaXN0IG9mIGltYWdlIGZlYXR1cmVzIHRoYXQgc2hpcHMgd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0icmVmLWZlYXR1cmVzLWltYWdlIj5JbWFnZSBGZWF0dXJlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGN1c3RvbWl6ZSB5b3VyIGltYWdlIGJ5CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoaXMgdmFyaWFibGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1leHRlbmQtY3VzdG9taW1hZ2UtaW1hZ2VmZWF0dXJlcyc+Q3VzdG9taXppbmcgSW1hZ2VzIFVzaW5nIEN1c3RvbSA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfRlNUWVBFUyc+PGdsb3NzdGVybT5JTUFHRV9GU1RZUEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9GU1RZUEVTW2RvY10gPSAiRm9ybWF0cyBvZiByb290IGZpbGVzeXN0ZW0gaW1hZ2VzIHRoYXQgeW91IHdhbnQgdG8gaGF2ZSBjcmVhdGVkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBmb3JtYXRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBidWlsZCB3aGVuIGNyZWF0aW5nIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZXR0aW5nIDxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93cyBjYXVzZXMgdGhlIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtcyB1c2luZyB0d28gZm9ybWF0czogPGZpbGVuYW1lPi5leHQzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT4udGFyLmJ6MjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZTVFlQRVMgPSAiZXh0MyB0YXIuYnoyIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cyBmcm9tIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gY2hvb3NlLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhbiBpbWFnZSByZWNpcGUgdXNlcyB0aGUgImluaGVyaXQgaW1hZ2UiIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IGFyZSBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiBpbnNpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB5b3UgbXVzdCBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHByaW9yIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlICJpbmhlcml0IGltYWdlIiBsaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1ZSB0byB0aGUgd2F5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzIHRoaXMgdmFyaWFibGUsIHlvdSBjYW5ub3QgdXBkYXRlIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGJ5IHVzaW5nIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCB1c2UgdGhlIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgdG8gYWRkIG9uZSBvciBtb3JlIG9wdGlvbnMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfSU5TVEFMTCc+PGdsb3NzdGVybT5JTUFHRV9JTlNUQUxMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9JTlNUQUxMW2RvY10gPSAiVXNlZCBieSByZWNpcGVzIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZSB0aHJvdWdoIGltYWdlLmJiY2xhc3MuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBVc2VkIGJ5IHJlY2lwZXMgdG8gc3BlY2lmeSB0aGUgcGFja2FnZXMgdG8gaW5zdGFsbCBpbnRvIGFuCisgICAgICAgICAgICAgICAgICAgIGltYWdlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB2YXJpYWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIGNhcmUgdG8gYXZvaWQgb3JkZXJpbmcgaXNzdWVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbWFnZSByZWNpcGVzIHNldCA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZSB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgImhlbHBlciIgY2xhc3NlcyBzdWNoIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1jb3JlLWltYWdlJz48ZmlsZW5hbWU+Y29yZS1pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBleGlzdCB0aGF0IGNhbiB0YWtlIGxpc3RzIHVzZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz5JTUFHRV9GRUFUVVJFUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgdHVybiB0aGVtIGludG8gYXV0by1nZW5lcmF0ZWQgZW50cmllcyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+IGluIGFkZGl0aW9uIHRvIGl0cworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGNvbnRlbnRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhpcyB2YXJpYWJsZSwgaXQgaXMgYmVzdCB0byB1c2UgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgPHJlcGxhY2VhYmxlPnBhY2thZ2UtbmFtZTwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHN0YXJ0IG9mIHRoZSBwYWNrYWdlIG5hbWUgb3IgbmFtZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHdvcmtpbmcgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzJz48ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSwgZG8gbm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHBhY2thZ2VzIGZvciBpbnN0YWxsYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggYWxsb3dzIHRoZSBpbml0aWFsIFJBTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIChpbml0cmFtZnMpIHJlY2lwZSB0byB1c2UgYSBmaXhlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb2YgcGFja2FnZXMgYW5kIG5vdCBiZSBhZmZlY3RlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2FwcGVuZGluZy1hbmQtcHJlcGVuZGluZyc+PGZpbGVuYW1lPis9PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIG9wZXJhdG9yIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2l0aGluIGFuIGltYWdlIHJlY2lwZSBpcyBub3QgcmVjb21tZW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBvZiB0aGlzIG9wZXJhdG9yIGluIHRoZXNlIHdheXMgY2FuIGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyaW5nIGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luY2UgPGZpbGVuYW1lPmNvcmUtaW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjc2V0dGluZy1hLWRlZmF1bHQtdmFsdWUnPjxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsIHVzaW5nIGEgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uIGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiByZXN1bHRzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiB1c2VkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgc2FtZSBvcGVyYXRpb24gZnJvbSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgcmVjaXBlIG1heSBvciBtYXkgbm90IHN1Y2NlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBzaXR1YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIGJvdGggdGhlc2UgY2FzZXMsIHRoZSBiZWhhdmlvciBpcyBjb250cmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBob3cgbW9zdCB1c2VycyBleHBlY3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9MSU5HVUFTJz48Z2xvc3N0ZXJtPklNQUdFX0xJTkdVQVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX0xJTkdVQVNbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgbG9jYWxlcyB0byBpbnN0YWxsIGludG8gdGhlIGltYWdlIGR1cmluZyB0aGUgcm9vdCBmaWxlc3lzdGVtIGNvbnN0cnVjdGlvbiBwcm9jZXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIGxvY2FsZXMgdG8gaW5zdGFsbCBpbnRvIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIHJvb3QgZmlsZXN5c3RlbSBjb25zdHJ1Y3Rpb24gcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXV0b21hdGljYWxseSBzcGxpdHMgbG9jYWxlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgdXNlZCBmb3IgbG9jYWxpemF0aW9uLCBpbnRvIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSA8ZmlsZW5hbWU+SU1BR0VfTElOR1VBUzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZXMgdGhhdCBhbnkgbG9jYWxlIHBhY2thZ2VzIHRoYXQgY29ycmVzcG9uZCB0byBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IHNlbGVjdGVkIGZvciBpbnN0YWxsYXRpb24gaW50byB0aGUgaW1hZ2UgYXJlIGFsc28KKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfTElOR1VBUyA9ICJwdC1iciBkZS1kZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBidWlsZCBzeXN0ZW0gZW5zdXJlcyBhbnkgQnJhemlsaWFuCisgICAgICAgICAgICAgICAgICAgIFBvcnR1Z3Vlc2UgYW5kIEdlcm1hbiBsb2NhbGUgZmlsZXMgdGhhdCBjb3JyZXNwb25kIHRvCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGluIHRoZSBpbWFnZSBhcmUgaW5zdGFsbGVkIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLWxvY2FsZS1wdC1icjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Ki1sb2NhbGUtZGUtZGU8L2ZpbGVuYW1lPiBhcyB3ZWxsIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLWxvY2FsZS1wdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Ki1sb2NhbGUtZGU8L2ZpbGVuYW1lPiwgc2luY2Ugc29tZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBvbmx5IHByb3ZpZGUgbG9jYWxlIGZpbGVzIGJ5IGxhbmd1YWdlIGFuZCBub3QgYnkKKyAgICAgICAgICAgICAgICAgICAgY291bnRyeS1zcGVjaWZpYyBsYW5ndWFnZSkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUdMSUJDX0dFTkVSQVRFX0xPQ0FMRVMnPjxmaWxlbmFtZT5HTElCQ19HRU5FUkFURV9MT0NBTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBpbmZvcm1hdGlvbiBvbiBnZW5lcmF0aW5nIEdMSUJDIGxvY2FsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfTUFOSUZFU1QnPjxnbG9zc3Rlcm0+SU1BR0VfTUFOSUZFU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX01BTklGRVNUW2RvY10gPSAiVGhlIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBpbWFnZS4gVGhpcyBmaWxlIGxpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgbGlzdHMgYWxsIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgdGhhdCBtYWtlIHVwCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgY29udGFpbnMgcGFja2FnZSBpbmZvcm1hdGlvbiBvbiBhIGxpbmUtcGVyLXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgYmFzaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+cGFja2FnZW5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+cGFja2FnZWFyY2g8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZGVmaW5lcyB0aGUgbWFuaWZlc3QgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX01BTklGRVNUID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfS5yb290ZnMubWFuaWZlc3QiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGlzIGRlcml2ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX0lNQUdFJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JTUFHRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX05BTUUnPjxmaWxlbmFtZT5JTUFHRV9OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgaXMgY3JlYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX05BTUUnPjxnbG9zc3Rlcm0+SU1BR0VfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU1BR0VfTkFNRVtkb2NdID0gIlRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgaW1hZ2UgZmlsZXMgbWludXMgdGhlIGV4dGVuc2lvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgaW1hZ2UgZmlsZXMgbWludXMgdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBkZXJpdmVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfQkFTRU5BTUUnPjxmaWxlbmFtZT5JTUFHRV9CQVNFTkFNRTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURBVEVUSU1FJz48ZmlsZW5hbWU+REFURVRJTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX05BTUUgPSAiJHtJTUFHRV9CQVNFTkFNRX0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX09WRVJIRUFEX0ZBQ1RPUic+PGdsb3NzdGVybT5JTUFHRV9PVkVSSEVBRF9GQUNUT1I8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX09WRVJIRUFEX0ZBQ1RPUltkb2NdID0gIkRlZmluZXMgYSBtdWx0aXBsaWVyIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRvIHRoZSBpbml0aWFsIGltYWdlIHNpemUgZm9yIGNhc2VzIHdoZW4gdGhlIG11bHRpcGxpZXIgdGltZXMgdGhlIHJldHVybmVkIGRpc2sgdXNhZ2UgdmFsdWUgZm9yIHRoZSBpbWFnZSBpcyBncmVhdGVyIHRoYW4gdGhlIHN1bSBvZiBJTUFHRV9ST09URlNfU0laRSBhbmQgSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBhIG11bHRpcGxpZXIgdGhhdCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdG8gdGhlIGluaXRpYWwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSBmb3IgY2FzZXMgd2hlbiB0aGUgbXVsdGlwbGllciB0aW1lcyB0aGUgcmV0dXJuZWQgZGlzayB1c2FnZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGltYWdlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3VtIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTX1NJWkUnPklNQUdFX1JPT1RGU19TSVpFPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSc+SU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFPC9saW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWVyIGFwcGxpZWQgdG8gdGhlIGluaXRpYWwgaW1hZ2Ugc2l6ZSBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgIGZyZWUgZGlzayBzcGFjZSBpbiB0aGUgaW1hZ2UgYXMgb3ZlcmhlYWQuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBidWlsZCBwcm9jZXNzIHVzZXMgYSBtdWx0aXBsaWVyIG9mIDEuMyBmb3IgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBkZWZhdWx0IHZhbHVlIHJlc3VsdHMgaW4gMzAlIGZyZWUgZGlzayBzcGFjZSBhZGRlZCB0byB0aGUgaW1hZ2Ugd2hlbiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZmluYWwgZ2VuZXJhdGVkIGltYWdlIHNpemUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBwb3N0IGluc3RhbGwgc2NyaXB0cyBhbmQgdGhlIHBhY2thZ2UgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdXNlcyBkaXNrIHNwYWNlIGluc2lkZSB0aGlzIG92ZXJoZWFkIGFyZWEuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIG11bHRpcGxpZXIgZG9lcyBub3QgcHJvZHVjZSBhbiBpbWFnZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgdGhlb3JldGljYWwgZnJlZSBkaXNrIHNwYWNlLgorICAgICAgICAgICAgICAgICAgICBTZWUgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlNfU0laRSc+SU1BR0VfUk9PVEZTX1NJWkU8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGRldGVybWluZXMgdGhlIG92ZXJhbGwgaW1hZ2Ugc2l6ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgMzAlIGZyZWUgZGlzayBzcGFjZSB0eXBpY2FsbHkgZ2l2ZXMgdGhlIGltYWdlIGVub3VnaCByb29tIHRvIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgYW5kIGFsbG93cyBmb3IgYmFzaWMgcG9zdCBpbnN0YWxscyB3aGlsZSBzdGlsbCBsZWF2aW5nIGEgc21hbGwgYW1vdW50IG9mCisgICAgICAgICAgICAgICAgICAgIGZyZWUgZGlzayBzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgMzAlIGZyZWUgc3BhY2UgaXMgaW5hZGVxdWF0ZSwgeW91IGNhbiBpbmNyZWFzZSB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2V0dGluZyBnaXZlcyB5b3UgNTAlIGZyZWUgc3BhY2UgYWRkZWQgdG8gdGhlIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX09WRVJIRUFEX0ZBQ1RPUiA9ICIxLjUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBlbnN1cmUgYSBzcGVjaWZpYyBhbW91bnQgb2YgZnJlZSBkaXNrIHNwYWNlIGlzIGFkZGVkCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBpbWFnZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UnPklNQUdFX1JPT1RGU19FWFRSQV9TUEFDRTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9QS0dUWVBFJz48Z2xvc3N0ZXJtPklNQUdFX1BLR1RZUEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX1BLR1RZUEVbZG9jXSA9ICJEZWZpbmVzIHRoZSBwYWNrYWdlIHR5cGUgKGkuZS4gREVCLCBSUE0sIElQSywgb3IgVEFSKSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgcGFja2FnZSB0eXBlIChpLmUuIERFQiwgUlBNLCBJUEssIG9yIFRBUikgdXNlZAorICAgICAgICAgICAgICAgICAgICBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGlzIGRlZmluZWQgYXBwcm9wcmlhdGVseSBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV9kZWInPjxmaWxlbmFtZT5wYWNrYWdlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV9ycG0nPjxmaWxlbmFtZT5wYWNrYWdlX3JwbTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV9pcGsnPjxmaWxlbmFtZT5wYWNrYWdlX2lwazwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV90YXInPjxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+IGNsYXNzIGlzIGJyb2tlbgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkbyBub3QgdXNlIGl0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wb3B1bGF0ZS1zZGstKic+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka18qPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZSc+PGZpbGVuYW1lPmltYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgdXNlIHRoZSA8ZmlsZW5hbWU+SU1BR0VfUEtHVFlQRTwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdpbmcgdXAgaW1hZ2VzIGFuZCBTREtzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG5vdCBzZXQgdGhlIDxmaWxlbmFtZT5JTUFHRV9QS0dUWVBFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbWFudWFsbHkuCisgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlIHZhcmlhYmxlIGlzIHNldCBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlXyo8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIGZpcnN0IHBhY2thZ2UgdHlwZQorICAgICAgICAgICAgICAgICAgICAoZS5nLiBERUIsIFJQTSwgb3IgSVBLKSB0aGF0IGFwcGVhcnMgd2l0aCB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGaWxlcyB1c2luZyB0aGUgPGZpbGVuYW1lPi50YXI8L2ZpbGVuYW1lPiBmb3JtYXQgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXZlciB1c2VkIGFzIGEgc3Vic3RpdHV0ZSBwYWNrYWdpbmcgZm9ybWF0IGZvciBERUIsCisgICAgICAgICAgICAgICAgICAgICAgICBSUE0sIGFuZCBJUEsgZm9ybWF0dGVkIGZpbGVzIGZvciB5b3VyIGltYWdlIG9yIFNESy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxnbG9zc3Rlcm0+SU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQgZmlsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gIjxyZXBsYWNlYWJsZT5mdW5jdGlvbjwvcmVwbGFjZWFibGU+OyAuLi4gIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIHBhc3MgdGhlIHJvb3QgZmlsZXN5c3RlbSBwYXRoIHRvIGEgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIGZ1bmN0aW9uLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtJTUFHRV9ST09URlN9PC9maWxlbmFtZT4sIHdoaWNoIHBvaW50cyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZGlyZWN0b3J5IHRoYXQgYmVjb21lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlMnPjxmaWxlbmFtZT5JTUFHRV9ST09URlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EJz48Z2xvc3N0ZXJtPklNQUdFX1BSRVBST0NFU1NfQ09NTUFORDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX1BSRVBST0NFU1NfQ09NTUFORCArPSAiPHJlcGxhY2VhYmxlPmZ1bmN0aW9uPC9yZXBsYWNlYWJsZT47IC4uLiAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gcGFzcyB0aGUgcm9vdCBmaWxlc3lzdGVtIHBhdGggdG8gYSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgZnVuY3Rpb24sIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0lNQUdFX1JPT1RGU308L2ZpbGVuYW1lPiwgd2hpY2ggcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBiZWNvbWVzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGUyc+PGZpbGVuYW1lPklNQUdFX1JPT1RGUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9ST09URlMnPjxnbG9zc3Rlcm0+SU1BR0VfUk9PVEZTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9ST09URlNbZG9jXSA9ICJUaGUgbG9jYXRpb24gb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSB3aGlsZSBpdCBpcyB1bmRlciBjb25zdHJ1Y3Rpb24gKGkuZS4gZHVyaW5nIGRvX3Jvb3RmcykuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSB3aGlsZSBpdCBpcyB1bmRlcgorICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rpb24gKGkuZS4gZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2spLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIG5vdCBjb25maWd1cmFibGUuCisgICAgICAgICAgICAgICAgICAgIERvIG5vdCBjaGFuZ2UgaXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU1BR0VfUk9PVEZTX0FMSUdOTUVOVCc+PGdsb3NzdGVybT5JTUFHRV9ST09URlNfQUxJR05NRU5UPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9ST09URlNfQUxJR05NRU5UW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBhbGlnbm1lbnQgZm9yIHRoZSBvdXRwdXQgaW1hZ2UgZmlsZSBpbiBLYnl0ZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGFsaWdubWVudCBmb3IgdGhlIG91dHB1dCBpbWFnZSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIEtieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGlzIG5vdCBhIG11bHRpcGxlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFsdWUsIHRoZW4gdGhlIHNpemUgaXMgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdAorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBvZiB0aGUgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICIxIi4KKyAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlNfU0laRSc+PGZpbGVuYW1lPklNQUdFX1JPT1RGU19TSVpFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSc+PGdsb3NzdGVybT5JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRVtkb2NdID0gIkRlZmluZXMgYWRkaXRpb25hbCBmcmVlIGRpc2sgc3BhY2UgY3JlYXRlZCBpbiB0aGUgaW1hZ2UgaW4gS2J5dGVzLiBCeSBkZWZhdWx0LCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAnMCcuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGFkZGl0aW9uYWwgZnJlZSBkaXNrIHNwYWNlIGNyZWF0ZWQgaW4gdGhlIGltYWdlIGluIEtieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gIjAiLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZyZWUgZGlzayBzcGFjZSBpcyBhZGRlZCB0byB0aGUgaW1hZ2UgYWZ0ZXIgdGhlIGJ1aWxkIHN5c3RlbSBkZXRlcm1pbmVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBzaXplIGFzIGRlc2NyaWJlZCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGU19TSVpFJz5JTUFHRV9ST09URlNfU0laRTwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgYQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBhbW91bnQgb2YgZnJlZSBkaXNrIHNwYWNlIGlzIGF2YWlsYWJsZSBvbiBhIGRldmljZSBhZnRlciBhbiBpbWFnZQorICAgICAgICAgICAgICAgICAgICBpcyBpbnN0YWxsZWQgYW5kIHJ1bm5pbmcuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBiZSBzdXJlIDUgR2J5dGVzIG9mIGZyZWUgZGlzayBzcGFjZSBpcyBhdmFpbGFibGUsIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiNTI0Mjg4MCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFlvY3RvIFByb2plY3QgQnVpbGQgQXBwbGlhbmNlIHNwZWNpZmljYWxseSByZXF1ZXN0cyA0MCBHYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgb2YgZXh0cmEgc3BhY2Ugd2l0aCB0aGUgbGluZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiNDE5NDMwNDAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9ST09URlNfU0laRSc+PGdsb3NzdGVybT5JTUFHRV9ST09URlNfU0laRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU1BR0VfUk9PVEZTX1NJWkVbZG9jXSA9ICJEZWZpbmVzIHRoZSBzaXplIGluIEtieXRlcyBmb3IgdGhlIGdlbmVyYXRlZCBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHNpemUgaW4gS2J5dGVzIGZvciB0aGUgZ2VuZXJhdGVkIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkZXRlcm1pbmVzIHRoZSBmaW5hbCBzaXplIGZvciB0aGUgZ2VuZXJhdGVkCisgICAgICAgICAgICAgICAgICAgIGltYWdlIHVzaW5nIGFuIGFsZ29yaXRobSB0aGF0IHRha2VzIGludG8gYWNjb3VudCB0aGUgaW5pdGlhbCBkaXNrIHNwYWNlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBnZW5lcmF0ZWQgaW1hZ2UsIGEgcmVxdWVzdGVkIHNpemUgZm9yIHRoZSBpbWFnZSwgYW5kIHJlcXVlc3RlZAorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGZyZWUgZGlzayBzcGFjZSB0byBiZSBhZGRlZCB0byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFByb2dyYW1hdGljYWxseSwgdGhlIGJ1aWxkIHN5c3RlbSBkZXRlcm1pbmVzIHRoZSBmaW5hbCBzaXplIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgaW1hZ2UgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIGlmIChpbWFnZS1kdSAqIG92ZXJoZWFkKSAmbHQ7IHJvb3Rmcy1zaXplOgorCWludGVybmFsLXJvb3Rmcy1zaXplID0gcm9vdGZzLXNpemUgKyB4c3BhY2UKKyAgICBlbHNlOgorCWludGVybmFsLXJvb3Rmcy1zaXplID0gKGltYWdlLWR1ICogb3ZlcmhlYWQpICsgeHNwYWNlCisKKyAgICB3aGVyZToKKworICAgICAgaW1hZ2UtZHUgPSBSZXR1cm5lZCB2YWx1ZSBvZiB0aGUgZHUgY29tbWFuZCBvbgorICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UuCisKKyAgICAgIG92ZXJoZWFkID0gSU1BR0VfT1ZFUkhFQURfRkFDVE9SCisKKyAgICAgIHJvb3Rmcy1zaXplID0gSU1BR0VfUk9PVEZTX1NJWkUKKworICAgICAgaW50ZXJuYWwtcm9vdGZzLXNpemUgPSBJbml0aWFsIHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplIGJlZm9yZSBhbnkgbW9kaWZpY2F0aW9ucy4KKworICAgICAgeHNwYWNlID0gSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfT1ZFUkhFQURfRkFDVE9SJz48ZmlsZW5hbWU+SU1BR0VfT1ZFUkhFQURfRkFDVE9SPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBmb3IgcmVsYXRlZCBpbmZvcm1hdGlvbi4KKzwhLS0gICAgICAgICAgICAgICAgICAgIEluIHRoZSBhYm92ZSBleGFtcGxlLCA8ZmlsZW5hbWU+b3ZlcmhlYWQ8L2ZpbGVuYW1lPiBpcyBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX09WRVJIRUFEX0ZBQ1RPUic+SU1BR0VfT1ZFUkhFQURfRkFDVE9SPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCA8ZmlsZW5hbWU+eHNwYWNlPC9maWxlbmFtZT4gaXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UnPklNQUdFX1JPT1RGU19FWFRSQV9TUEFDRTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYW5kIDxmaWxlbmFtZT5kdTwvZmlsZW5hbWU+IGlzIHRoZSByZXN1bHRzIG9mIHRoZSBkaXNrIHVzYWdlIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIGluaXRpYWxseSBnZW5lcmF0ZWQgaW1hZ2UuIC0tPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX1RZUEVERVAnPjxnbG9zc3Rlcm0+SU1BR0VfVFlQRURFUDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU1BR0VfVFlQRURFUFtkb2NdID0gIlNwZWNpZmllcyBhIGRlcGVuZGVuY3kgZnJvbSBvbmUgaW1hZ2UgdHlwZSBvbiBhbm90aGVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZGVwZW5kZW5jeSBmcm9tIG9uZSBpbWFnZSB0eXBlIG9uIGFub3RoZXIuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9UWVBFREVQX2xpdmUgPSAiZXh0MyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgdGhlIHZhcmlhYmxlIGVuc3VyZXMgdGhhdCB3aGVuCisgICAgICAgICAgICAgICAgICAgICJsaXZlIiBpcyBsaXN0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwcm9kdWNlcyBhbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+IGltYWdlIGZpcnN0IHNpbmNlIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyBvZiB0aGUgbGl2ZQorICAgICAgICAgICAgICAgICAgICBpbWFnZSBpcyBhbiA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCBwYXJ0aXRpb24gY29udGFpbmluZyB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX1RZUEVTJz48Z2xvc3N0ZXJtPklNQUdFX1RZUEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTUFHRV9UWVBFU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgdHlwZXMgYnkgZGVmYXVsdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgdHlwZXMKKyAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBidHJmcworICAgICBjb250YWluZXIKKyAgICAgY3BpbworICAgICBjcGlvLmd6CisgICAgIGNwaW8ubHo0CisgICAgIGNwaW8ubHptYQorICAgICBjcGlvLnh6CisgICAgIGNyYW1mcworICAgICBleHQyCisgICAgIGV4dDIuYnoyCisgICAgIGV4dDIuZ3oKKyAgICAgZXh0Mi5sem1hCisgICAgIGV4dDMKKyAgICAgZXh0My5negorICAgICBleHQ0CisgICAgIGV4dDQuZ3oKKyAgICAgZjJmcworICAgICBoZGRpbWcKKyAgICAgaXNvCisgICAgIGpmZnMyCisgICAgIGpmZnMyLnN1bQorICAgICBtdWx0aXViaQorICAgICBzcXVhc2hmcworICAgICBzcXVhc2hmcy1sejQKKyAgICAgc3F1YXNoZnMtbHpvCisgICAgIHNxdWFzaGZzLXh6CisgICAgIHRhcgorICAgICB0YXIuYnoyCisgICAgIHRhci5negorICAgICB0YXIubHo0CisgICAgIHRhci54egorICAgICB0YXIuenN0CisgICAgIHViaQorICAgICB1YmlmcworICAgICB3aWMKKyAgICAgd2ljLmJ6MgorICAgICB3aWMuZ3oKKyAgICAgd2ljLmx6bWEKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSB0eXBlcyBvZiBpbWFnZXMsIHNlZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzKi5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOQ19QUic+PGdsb3NzdGVybT5JTkNfUFI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOQ19QUltkb2NdID0gIkhlbHBzIGRlZmluZSB0aGUgcmVjaXBlIHJldmlzaW9uIGZvciByZWNpcGVzIHRoYXQgc2hhcmUgYSBjb21tb24gaW5jbHVkZSBmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSGVscHMgZGVmaW5lIHRoZSByZWNpcGUgcmV2aXNpb24gZm9yIHJlY2lwZXMgdGhhdCBzaGFyZQorICAgICAgICAgICAgICAgICAgICBhIGNvbW1vbiA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhpcyB2YXJpYWJsZSBhcyBwYXJ0IG9mIHRoZSByZWNpcGUgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAgICAgYXMgc2V0IGZyb20gd2l0aGluIGFuIGluY2x1ZGUgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9zZSwgZm9yIGV4YW1wbGUsIHlvdSBoYXZlIGEgc2V0IG9mIHJlY2lwZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICBhcmUgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCB3aXRoaW4gZWFjaCBvZiB0aG9zZSByZWNpcGVzIHRoZSByZXZpc2lvbgorICAgICAgICAgICAgICAgICAgICAoaXRzIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSBpcyBzZXQgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgd2hlbiB0aGUgcmV2aXNpb24gb2YgdGhvc2UgcmVjaXBlcyBjaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICB0aGUgYnVyZGVuIGlzIG9uIHlvdSB0byBmaW5kIGFsbCB0aG9zZSByZWNpcGVzIGFuZAorICAgICAgICAgICAgICAgICAgICBiZSBzdXJlIHRoYXQgdGhleSBnZXQgY2hhbmdlZCB0byByZWZsZWN0IHRoZSB1cGRhdGVkCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzY2VuYXJpbywgaXQgY2FuIGdldCBjb21wbGljYXRlZCB3aGVuIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgdXNlZCBpbiBtYW55IHBsYWNlcyBhbmQgcHJvdmlkZSBjb21tb24gZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgICAgICAgICBhcmUgdXBncmFkZWQgdG8gYSBuZXcgcmV2aXNpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgbW9yZSBlZmZpY2llbnQgd2F5IG9mIGRlYWxpbmcgd2l0aCB0aGlzIHNpdHVhdGlvbiBpcworICAgICAgICAgICAgICAgICAgICB0byBzZXQgdGhlIDxmaWxlbmFtZT5JTkNfUFI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbnNpZGUKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gZmlsZXMgdGhhdCB0aGUgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICBzaGFyZSBhbmQgdGhlbiBleHBhbmQgdGhlIDxmaWxlbmFtZT5JTkNfUFI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB3aXRoaW4gdGhlIHJlY2lwZXMgdG8gaGVscAorICAgICAgICAgICAgICAgICAgICBkZWZpbmUgdGhlIHJlY2lwZSByZXZpc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwcm92aWRlcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIHVzZQorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPklOQ19QUjwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGdpdmVuIGEgY29tbW9uIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gZmlsZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGRlZmluZXMgdGhlIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGZpbGUsIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBzZXQgdGhlIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IHZhbHVlcyBpbgorICAgICAgICAgICAgICAgICAgICBlYWNoIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgbm90aWNlIHRoYXQgd2hlbiB5b3Ugc2V0IGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4geW91IGNhbiBwcm92aWRlIG1vcmUgZ3JhbnVsYXIKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25pbmcgYnkgYXBwZW5kaW5nIHZhbHVlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOQ19QUjwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L3hvcmctZm9udC1jb21tb24uaW5jOklOQ19QUiA9ICJyMiIKKyAgICAgcmVjaXBlcy1ncmFwaGljcy94b3JnLWZvbnQvZW5jb2RpbmdzXzEuMC40LmJiOlBSID0gIiR7SU5DX1BSfS4xIgorICAgICByZWNpcGVzLWdyYXBoaWNzL3hvcmctZm9udC9mb250LXV0aWxfMS4zLjAuYmI6UFIgPSAiJHtJTkNfUFJ9LjAiCisgICAgIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L2ZvbnQtYWxpYXNfMS4wLjMuYmI6UFIgPSAiJHtJTkNfUFJ9LjMiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGV4YW1wbGUgZXN0YWJsaXNoZXMgdGhlIGJhc2VsaW5lCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uIHRvIGJlIHVzZWQgZm9yIGFsbCByZWNpcGVzIHRoYXQgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZW1haW5pbmcgbGluZXMgaW4gdGhlIGV4YW1wbGUgYXJlIGZyb20gaW5kaXZpZHVhbAorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGFuZCBzaG93IGhvdyB0aGUgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOQ09NUEFUSUJMRV9MSUNFTlNFJz48Z2xvc3N0ZXJtPklOQ09NUEFUSUJMRV9MSUNFTlNFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTkNPTVBBVElCTEVfTElDRU5TRVtkb2NdID0gIlNwZWNpZmllcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGxpY2Vuc2UgbmFtZXMgKGFzIHRoZXkgd291bGQgYXBwZWFyIGluIExJQ0VOU0UpIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGJ1aWxkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbGljZW5zZSBuYW1lcworICAgICAgICAgICAgICAgICAgICAoYXMgdGhleSB3b3VsZCBhcHBlYXIgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyB0aGF0IHByb3ZpZGUgbm8gYWx0ZXJuYXRpdmVzIHRvIGxpc3RlZCBpbmNvbXBhdGlibGUKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgYXJlIG5vdCBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgdGhhdCBhcmUgaW5kaXZpZHVhbGx5IGxpY2Vuc2VkIHdpdGggdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgbGljZW5zZXMgd2lsbCBiZSBkZWxldGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSByZWd1bGFybHkgdGVzdGVkIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgc2V0dGluZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSA9ICJHUEwtMy4wIExHUEwtMy4wIEFHUEwtMy4wIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFsdGhvdWdoIHlvdSBjYW4gdXNlIG90aGVyIHNldHRpbmdzLCB5b3UgbWlnaHQgYmUgcmVxdWlyZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gcmVtb3ZlIGRlcGVuZGVuY2llcyBvbiBvciBwcm92aWRlIGFsdGVybmF0aXZlcyB0bworICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHByb2R1Y2UgYSBmdW5jdGlvbmFsIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisKKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIGxpc3Qgb2YgbGljZW5zZXMgdGhhdCBhcmUgYWxsb3dlZAorICAgICAgICAgICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGxpY2Vuc2VzIHRoYXQgYXJlIGV4Y2x1ZGVkLiBUbyBkbworICAgICAgICAgICAgICAgICAgICB0aGlzLCBkZWZpbmUgYQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSA8ZmlsZW5hbWU+Q09NUEFUSUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIG5hbWVzIG9mIHRoZSBsaWNlbmNlcyB0aGF0IGFyZSBhbGxvd2VkLiBUaGVuCisgICAgICAgICAgICAgICAgICAgIGRlZmluZSA8ZmlsZW5hbWU+SU5DT01QQVRJQkxFX0xJQ0VOU0U8L2ZpbGVuYW1lPiBhczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSA9ICIke0AnICcuam9pbihzb3J0ZWQoc2V0KGQuZ2V0VmFyKCdBVkFJTEFCTEVfTElDRU5TRVMnKS5zcGxpdCgpKSAtIHNldChkLmdldFZhcignQ09NUEFUSUJMRV9MSUNFTlNFUycpLnNwbGl0KCkpKSl9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgd2lsbCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPklOQ09NUEFUSUJMRV9MSUNFTlNFPC9maWxlbmFtZT4gY29udGFpbmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgb2YgYWxsIGxpY2VuY2VzCisgICAgICAgICAgICAgICAgICAgIGZyb20gPGxpbmsgbGlua2VuZD0ndmFyLUFWQUlMQUJMRV9MSUNFTlNFUyc+PGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgdGhlIG9uZXMgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5DT01QQVRJQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4sIHRodXMgb25seQorICAgICAgICAgICAgICAgICAgICBhbGxvd2luZyB0aGUgbGF0dGVyIGxpY2VuY2VzIHRvIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU5IRVJJVCc+PGdsb3NzdGVybT5JTkhFUklUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTkhFUklUW2RvY10gPSAiQ2F1c2VzIHRoZSBuYW1lZCBjbGFzcyBvciBjbGFzc2VzIHRvIGJlIGluaGVyaXRlZCBnbG9iYWxseS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIENhdXNlcyB0aGUgbmFtZWQgY2xhc3Mgb3IgY2xhc3NlcyB0byBiZSBpbmhlcml0ZWQgZ2xvYmFsbHkuCisgICAgICAgICAgICAgICAgICAgIEFub255bW91cyBmdW5jdGlvbnMgaW4gdGhlIGNsYXNzIG9yIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCBleGVjdXRlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGJhc2UgY29uZmlndXJhdGlvbiBhbmQgaW4gZWFjaCBpbmRpdmlkdWFsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaWdub3JlcyBjaGFuZ2VzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gaW4gaW5kaXZpZHVhbCByZWNpcGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+LCBzZWUKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19CQl9VUkw7I2luaGVyaXQtY29uZmlndXJhdGlvbi1kaXJlY3RpdmUiPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBEaXJlY3RpdmU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0YmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTkhFUklUX0RJU1RSTyc+PGdsb3NzdGVybT5JTkhFUklUX0RJU1RSTzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU5IRVJJVF9ESVNUUk9bZG9jXSA9ICJMaXN0cyBjbGFzc2VzIHRoYXQgd2lsbCBiZSBpbmhlcml0ZWQgYXQgdGhlIGRpc3RyaWJ1dGlvbiBsZXZlbC4gSXQgaXMgdW5saWtlbHkgdGhhdCB5b3Ugd2FudCB0byBlZGl0IHRoaXMgdmFyaWFibGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyBjbGFzc2VzIHRoYXQgd2lsbCBiZSBpbmhlcml0ZWQgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBsZXZlbC4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgdW5saWtlbHkgdGhhdCB5b3Ugd2FudCB0byBlZGl0IHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBpcyBzZXQgYXMgZm9sbG93cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vZGVmYXVsdHNldHVwLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVRfRElTVFJPID89ICJkZWJpYW4gZGV2c2hlbGwgc3N0YXRlIGxpY2Vuc2UiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTkhJQklUX0RFRkFVTFRfREVQUyc+PGdsb3NzdGVybT5JTkhJQklUX0RFRkFVTFRfREVQUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU5ISUJJVF9ERUZBVUxUX0RFUFNbZG9jXSA9ICJQcmV2ZW50cyB0aGUgZGVmYXVsdCBkZXBlbmRlbmNpZXMsIG5hbWVseSB0aGUgQyBjb21waWxlciBhbmQgc3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjKSwgZnJvbSBiZWluZyBhZGRlZCB0byBERVBFTkRTLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUHJldmVudHMgdGhlIGRlZmF1bHQgZGVwZW5kZW5jaWVzLCBuYW1lbHkgdGhlIEMgY29tcGlsZXIKKyAgICAgICAgICAgICAgICAgICAgYW5kIHN0YW5kYXJkIEMgbGlicmFyeSAobGliYyksIGZyb20gYmVpbmcgYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzdWFsbHkgdXNlZCB3aXRoaW4gcmVjaXBlcyB0aGF0IGRvIG5vdAorICAgICAgICAgICAgICAgICAgICByZXF1aXJlIGFueSBjb21waWxhdGlvbiB1c2luZyB0aGUgQyBjb21waWxlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2V0IHRoZSB2YXJpYWJsZSB0byAiMSIgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBiZWluZyBhZGRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnPjxnbG9zc3Rlcm0+SU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVRbZG9jXSA9ICJJZiBzZXQgdG8gIjEiLCBwcmV2ZW50cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBmcm9tIHNwbGl0dGluZyBvdXQgZGVidWcgaW5mb3JtYXRpb24gZHVyaW5nIHBhY2thZ2luZyIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUHJldmVudHMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZnJvbSBzcGxpdHRpbmcKKyAgICAgICAgICAgICAgICAgICAgb3V0IGRlYnVnIGluZm9ybWF0aW9uIGR1cmluZyBwYWNrYWdpbmcuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBidWlsZCBzeXN0ZW0gc3BsaXRzIG91dCBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGRlYnVnIGluZm9ybWF0aW9uIGlzIHNwbGl0IG91dCwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRSc+PGZpbGVuYW1lPlBBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHByZXZlbnQgdGhlIGJ1aWxkIHN5c3RlbSBmcm9tIHNwbGl0dGluZyBvdXQKKyAgICAgICAgICAgICAgICAgICAgZGVidWcgaW5mb3JtYXRpb24gZHVyaW5nIHBhY2thZ2luZywgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSElCSVRfUEFDS0FHRV9TVFJJUCc+PGdsb3NzdGVybT5JTkhJQklUX1BBQ0tBR0VfU1RSSVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOSElCSVRfUEFDS0FHRV9TVFJJUFtkb2NdID0gIklmIHNldCB0byAiMSIsIGNhdXNlcyB0aGUgYnVpbGQgdG8gbm90IHN0cmlwIGJpbmFyaWVzIGluIHJlc3VsdGluZyBwYWNrYWdlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byAiMSIsIGNhdXNlcyB0aGUgYnVpbGQgdG8gbm90IHN0cmlwIGJpbmFyaWVzIGluCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyBwYWNrYWdlcyBhbmQgcHJldmVudHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4gcGFja2FnZSBmcm9tIGNvbnRhaW5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN0cmlwcworICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMgYW5kIHB1dHMgdGhlIGRlYnVnZ2luZyBzeW1ib2xzIGludG8KKyAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS1kYmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBub3Qgc2V0CisgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5ISUJJVF9QQUNLQUdFX1NUUklQPC9maWxlbmFtZT4gd2hlbiB5b3UgcGxhbgorICAgICAgICAgICAgICAgICAgICAgdG8gZGVidWcgaW4gZ2VuZXJhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTkhJQklUX1NZU1JPT1RfU1RSSVAnPjxnbG9zc3Rlcm0+SU5ISUJJVF9TWVNST09UX1NUUklQPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTkhJQklUX1NZU1JPT1RfU1RSSVBbZG9jXSA9ICJJZiBzZXQgdG8gIjEiLCBjYXVzZXMgdGhlIGJ1aWxkIHRvIG5vdCBzdHJpcCBiaW5hcmllcyBpbiB0aGUgcmVzdWx0aW5nIHN5c3Jvb3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gIjEiLCBjYXVzZXMgdGhlIGJ1aWxkIHRvIG5vdCBzdHJpcCBiaW5hcmllcyBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0aW5nIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN0cmlwcworICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyBpbiB0aGUgcmVzdWx0aW5nIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNwZWNpZmljYWxseSBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTkhJQklUX1NZU1JPT1RfU1RSSVA8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICAiMSIgaW4geW91ciByZWNpcGUsIHlvdSBpbmhpYml0IHRoaXMgc3RyaXBwaW5nLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhpcyB2YXJpYWJsZSwgaW5jbHVkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3RhZ2luZyc+PGZpbGVuYW1lPnN0YWdpbmc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgdXNlcyBhIDxmaWxlbmFtZT5zeXNfc3RyaXAoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIHRlc3QgZm9yIHRoZSB2YXJpYWJsZSBhbmQgYWN0cyBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2Ugb2YgdGhlIDxmaWxlbmFtZT5JTkhJQklUX1NZU1JPT1RfU1RSSVA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgb2NjdXJzIGluIHJhcmUgYW5kIHNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYnVpbGRpbmcgYmFyZS1tZXRhbAorICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmUgYnkgdXNpbmcgYW4gZXh0ZXJuYWwgR0NDIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCBldmVuIGlmIHRoZSB0b29sY2hhaW4ncyBiaW5hcmllcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwcGFibGUsIG90aGVyIGZpbGVzIGV4aXN0IHRoYXQgYXJlIG5lZWRlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCB0aGF0IGFyZSBub3Qgc3RyaXBwYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSVRSQU1GU19GU1RZUEVTJz48Z2xvc3N0ZXJtPklOSVRSQU1GU19GU1RZUEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTklUUkFNRlNfRlNUWVBFU1tkb2NdID0gIkRlZmluZXMgdGhlIGZvcm1hdCBmb3IgdGhlIG91dHB1dCBpbWFnZSBvZiBhbiBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpLCB3aGljaCBpcyB1c2VkIGR1cmluZyBib290LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgZm9ybWF0IGZvciB0aGUgb3V0cHV0IGltYWdlIG9mIGFuIGluaXRpYWwKKyAgICAgICAgICAgICAgICAgICAgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcyksIHdoaWNoIGlzIHVzZWQgZHVyaW5nIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnRlZCBmb3JtYXRzIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGlzICJjcGlvLmd6Ii4KKyAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IGtlcm5lbCdzIGluaXRyYW1mcyBtZWNoYW5pc20sIGFzIG9wcG9zZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5pdHJkJz5pbml0cmQ8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20sIGV4cGVjdHMgYW4gb3B0aW9uYWxseSBjb21wcmVzc2VkIGNwaW8KKyAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTklUUkFNRlNfSU1BR0UnPjxnbG9zc3Rlcm0+SU5JVFJBTUZTX0lNQUdFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTklUUkFNRlNfSU1BR0VbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIFBST1ZJREVTIG5hbWUgb2YgYW4gaW1hZ2UgcmVjaXBlIHRoYXQgaXMgdXNlZCB0byBidWlsZCBhbiBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJPVklERVMnPjxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBuYW1lIG9mIGFuIGltYWdlIHJlY2lwZSB0aGF0IGlzIHVzZWQgdG8gYnVpbGQgYW4gaW5pdGlhbAorICAgICAgICAgICAgICAgICAgICBSQU0gZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgY2F1c2VzIGFuIGFkZGl0aW9uYWwgcmVjaXBlIHRvIGJlIGJ1aWx0IGFzCisgICAgICAgICAgICAgICAgICAgIGEgZGVwZW5kZW5jeSB0byB3aGF0ZXZlciByb290IGZpbGVzeXN0ZW0gcmVjaXBlIHlvdQorICAgICAgICAgICAgICAgICAgICBtaWdodCBiZSB1c2luZyAoZS5nLiA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBUaGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSB5b3UgcHJvdmlkZSBzaG91bGQgc2V0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTklUUkFNRlNfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW4gaW5pdHJhbWZzIGltYWdlIHByb3ZpZGVzIGEgdGVtcG9yYXJ5IHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4gbG9hZGluZyBvZgorICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIG5lZWRlZCB0byBsb2NhdGUgYW5kIG1vdW50IHRoZSAicmVhbCIgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtKS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIGV4YW1wbGUgaW5pdHJhbWZzIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHNlbGVjdCB0aGlzIHNhbXBsZSByZWNpcGUgYXMgdGhlIG9uZSBidWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgaW5pdHJhbWZzIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICAgICAgImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYnkgcmVmZXJlbmNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgU291cmNlIERpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMta2VybmVsJz48ZmlsZW5hbWU+a2VybmVsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHNlZSBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPiBpcyBlbXB0eSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQsIHRoZW4gbm8gaW5pdHJhbWZzIGltYWdlIGlzIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgeW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBhbGxvd3MgdGhlIGdlbmVyYXRlZCBpbWFnZSB0byBiZSBidW5kbGVkCisgICAgICAgICAgICAgICAgICAgIGluc2lkZSB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhbiBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+QnVpbGRpbmcgYW4gSW5pdGlhbCBSQU0gRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBJbWFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTklUUkFNRlNfSU1BR0VfQlVORExFJz48Z2xvc3N0ZXJtPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOSVRSQU1GU19JTUFHRV9CVU5ETEVbZG9jXSA9ICJDb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgaW1hZ2UgcmVjaXBlIHNwZWNpZmllZCBieSBJTklUUkFNRlNfSU1BR0UgaXMgcnVuIHRocm91Z2ggYW4gZXh0cmEgcGFzcyAoZG9fYnVuZGxlX2luaXRyYW1mcykgZHVyaW5nIGtlcm5lbCBjb21waWxhdGlvbiBpbiBvcmRlciB0byBidWlsZCBhIHNpbmdsZSBiaW5hcnkgdGhhdCBjb250YWlucyBib3RoIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIHRoZSBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGltYWdlIHJlY2lwZSBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSVRSQU1GU19JTUFHRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBydW4gdGhyb3VnaCBhbiBleHRyYSBwYXNzCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtYnVuZGxlX2luaXRyYW1mcyc+PGZpbGVuYW1lPmRvX2J1bmRsZV9pbml0cmFtZnM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgIGR1cmluZyBrZXJuZWwgY29tcGlsYXRpb24gaW4gb3JkZXIgdG8gYnVpbGQgYSBzaW5nbGUgYmluYXJ5CisgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgYm90aCB0aGUga2VybmVsIGltYWdlIGFuZCB0aGUgaW5pdGlhbCBSQU0KKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtYWtlcyB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRSc+PGZpbGVuYW1lPkNPTkZJR19JTklUUkFNRlNfU09VUkNFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIGFuIGV4dHJhIGNvbXBpbGF0aW9uIHBhc3MgdG8gYnVuZGxlIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2b2lkcyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUga2VybmVsIHJlY2lwZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbml0cmFtZnMgcmVjaXBlIHNob3VsZCB0aGUgaW5pdHJhbWZzIGluY2x1ZGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIHRoYXQgYmUgdGhlIGNhc2UsIHRoZSBpbml0cmFtZnMgcmVjaXBlIGRlcGVuZHMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgZm9yIHRoZSBrZXJuZWwgbW9kdWxlcywgYW5kIHRoZSBrZXJuZWwgZGVwZW5kcworICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIGluaXRyYW1mcyByZWNpcGUgc2luY2UgdGhlIGluaXRyYW1mcyBpcyBidW5kbGVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgY29tYmluZWQgYmluYXJ5IGlzIGRlcG9zaXRlZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggaXMgcGFydAorICAgICAgICAgICAgICAgICAgICBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSB2YXJpYWJsZSB0byAiMSIgaW4gYSBjb25maWd1cmF0aW9uIGZpbGUgY2F1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGdlbmVyYXRlIGEga2VybmVsIGltYWdlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcyBzcGVjaWZpZWQgaW4gPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aGluOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMta2VybmVsJz48ZmlsZW5hbWU+a2VybmVsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHNldHMgdGhpcyB2YXJpYWJsZSB0byBhIG51bGwgc3RyaW5nIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSA/PSAiIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgYSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHNldCB0aGUgdmFyaWFibGUgaW4gYSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZCc+PGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBBbHNvLCBmb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU5JVFJBTUZTX0xJTktfTkFNRSc+PGdsb3NzdGVybT5JTklUUkFNRlNfTElOS19OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTklUUkFNRlNfTElOS19OQU1FW2RvY10gPSAiVGhlIGxpbmsgbmFtZSBvZiB0aGUgaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaW5rIG5hbWUgb2YgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSVRSQU1GU19MSU5LX05BTUUgPz0gImluaXRyYW1mcy0ke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgPGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU5JVFJBTUZTX05BTUUnPjxnbG9zc3Rlcm0+SU5JVFJBTUZTX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOSVRSQU1GU19OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUgaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSVRSQU1GU19OQU1FID89ICJpbml0cmFtZnMtJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0FSVElGQUNUX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTklUUkQnPjxnbG9zc3Rlcm0+SU5JVFJEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTklUUkRbZG9jXSA9ICJJbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJkKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEluZGljYXRlcyBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgYXMgYW4gaW5pdGlhbCBSQU0gZGlzayAoPGZpbGVuYW1lPmluaXRyZDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5JTklUUkQ8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBhbiBvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB1c2VkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlLWxpdmUnPjxmaWxlbmFtZT5pbWFnZS1saXZlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSVRSRF9JTUFHRSc+PGdsb3NzdGVybT5JTklUUkRfSU1BR0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOSVRSRF9JTUFHRVtkb2NdID0gIldoZW4gYnVpbGRpbmcgYSAibGl2ZSIgYm9vdGFibGUgaW1hZ2UgKGkuZS4gd2hlbiBJTUFHRV9GU1RZUEVTIGNvbnRhaW5zICJsaXZlIiksIElOSVRSRF9JTUFHRSBzcGVjaWZpZXMgdGhlIGltYWdlIHJlY2lwZSB0aGF0IHNob3VsZCBiZSBidWlsdCB0byBwcm92aWRlIHRoZSBpbml0aWFsIFJBTSBkaXNrIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBhICJsaXZlIiBib290YWJsZSBpbWFnZSAoaS5lLiB3aGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyAibGl2ZSIpLCA8ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBpbWFnZSByZWNpcGUgdGhhdCBzaG91bGQgYmUgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgaW5pdGlhbCBSQU0gZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlLWxpdmUnPjxmaWxlbmFtZT5pbWFnZS1saXZlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSVRTQ1JJUFRfTkFNRSc+PGdsb3NzdGVybT5JTklUU0NSSVBUX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOSVRTQ1JJUFRfTkFNRVtkb2NdID0gIlRoZSBmaWxlbmFtZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2NyaXB0IGFzIGluc3RhbGxlZCB0byAke3N5c2NvbmZkaXJ9L2luaXQuZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2NyaXB0IGFzIGluc3RhbGxlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtzeXNjb25mZGlyfS9pbml0LmQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHJlY2lwZXMgd2hlbiB1c2luZyA8ZmlsZW5hbWU+dXBkYXRlLXJjLmQuYmJjbGFzczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgaXMgbWFuZGF0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSVRTQ1JJUFRfUEFDS0FHRVMnPjxnbG9zc3Rlcm0+SU5JVFNDUklQVF9QQUNLQUdFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU5JVFNDUklQVF9QQUNLQUdFU1tkb2NdID0gIkEgbGlzdCBvZiB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIGluaXRzY3JpcHRzLiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gcmVjaXBlcyB3aGVuIHVzaW5nIHVwZGF0ZS1yYy5kLmJiY2xhc3MuIFRoZSB2YXJpYWJsZSBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gdGhlIFBOIHZhcmlhYmxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHRoZSBwYWNrYWdlcyB0aGF0IGNvbnRhaW4gaW5pdHNjcmlwdHMuCisgICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHBhY2thZ2VzIGFyZSBzcGVjaWZpZWQsIHlvdSBuZWVkIHRvIGFwcGVuZCB0aGUgcGFja2FnZSBuYW1lCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBvdGhlciA8ZmlsZW5hbWU+SU5JVFNDUklQVF8qPC9maWxlbmFtZT4gYXMgYW4gb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHJlY2lwZXMgd2hlbiB1c2luZyA8ZmlsZW5hbWU+dXBkYXRlLXJjLmQuYmJjbGFzczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSVRTQ1JJUFRfUEFSQU1TJz48Z2xvc3N0ZXJtPklOSVRTQ1JJUFRfUEFSQU1TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTklUU0NSSVBUX1BBUkFNU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgb3B0aW9ucyB0byBwYXNzIHRvIHVwZGF0ZS1yYy5kLiBUaGUgdmFyaWFibGUgaXMgbWFuZGF0b3J5IGFuZCBpcyB1c2VkIGluIHJlY2lwZXMgd2hlbiB1c2luZyB1cGRhdGUtcmMuZC5iYmNsYXNzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBvcHRpb25zIHRvIHBhc3MgdG8gPGZpbGVuYW1lPnVwZGF0ZS1yYy5kPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSA1IDIgLiBzdG9wIDIwIDAgMSA2IC4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgc2NyaXB0IGhhcyBhIHJ1bmxldmVsIG9mIDk5LAorICAgICAgICAgICAgICAgICAgICBzdGFydHMgdGhlIHNjcmlwdCBpbiBpbml0bGV2ZWxzIDIgYW5kIDUsIGFuZAorICAgICAgICAgICAgICAgICAgICBzdG9wcyB0aGUgc2NyaXB0IGluIGxldmVscyAwLCAxIGFuZCA2LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUncyBkZWZhdWx0IHZhbHVlIGlzICJkZWZhdWx0cyIsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXBkYXRlLXJjLmQnPjxmaWxlbmFtZT51cGRhdGUtcmMuZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUU0NSSVBUX1BBUkFNUzwvZmlsZW5hbWU+IGlzIHBhc3NlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+dXBkYXRlLXJjLmQ8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2YWxpZCBwYXJhbWV0ZXJzLCBwbGVhc2Ugc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXBkYXRlLXJjLmQ8L2ZpbGVuYW1lPiBtYW51YWwgcGFnZSBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnRpbi5vcmcvYmluL21hbi5jZ2k/c2VjdGlvbj04JmFtcDt0b3BpYz11cGRhdGUtcmMuZCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU5TQU5FX1NLSVAnPjxnbG9zc3Rlcm0+SU5TQU5FX1NLSVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIElOU0FORV9TS0lQW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBRQSBjaGVja3MgdG8gc2tpcCBmb3IgYSBzcGVjaWZpYyBwYWNrYWdlIHdpdGhpbiBhIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgUUEgY2hlY2tzIHRvIHNraXAgZm9yIGEgc3BlY2lmaWMgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBza2lwIHRoZSBjaGVjayBmb3Igc3ltYm9saWMgbGluaworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4gZmlsZXMgaW4gdGhlIG1haW4gcGFja2FnZSBvZiBhCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgYWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhY2thZ2UgbmFtZSBvdmVycmlkZSBtdXN0IGJlIHVzZWQsIHdoaWNoIGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSBpcyA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWluc2FuZSc+PGZpbGVuYW1lPmluc2FuZS5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBhIGxpc3Qgb2YgdGhlIHZhbGlkIFFBIGNoZWNrcyB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdXNpbmcgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTlNUQUxMX1RJTUVaT05FX0ZJTEUnPjxnbG9zc3Rlcm0+SU5TVEFMTF9USU1FWk9ORV9GSUxFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBJTlNUQUxMX1RJTUVaT05FX0ZJTEVbZG9jXSA9ICJFbmFibGVzIGluc3RhbGxhdGlvbiBvZiB0aGUgL2V0Yy90aW1lem9uZSBmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT50emRhdGE8L2ZpbGVuYW1lPiByZWNpcGUgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgYW4gPGZpbGVuYW1lPi9ldGMvdGltZXpvbmU8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIDxmaWxlbmFtZT5JTlNUQUxMX1RJTUVaT05FX0ZJTEU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMCIgYXQgdGhlIGNvbmZpZ3VyYXRpb24gbGV2ZWwgdG8gZGlzYWJsZSB0aGlzCisgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlQS19GRUVEX1VSSVMnPjxnbG9zc3Rlcm0+SVBLX0ZFRURfVVJJUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSVBLX0ZFRURfVVJJU1tkb2NdID0gIkxpc3Qgb2YgaXBrZyBmZWVkIHJlY29yZHMgdG8gcHV0IGludG8gZ2VuZXJhdGVkIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgSVBLIGJhY2tlbmQgaXMgaW4gdXNlIGFuZCBwYWNrYWdlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgaXMgZW5hYmxlZCBvbiB0aGUgdGFyZ2V0LCB5b3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIHNldCB1cCA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+IGluIHRoZSB0YXJnZXQgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gcGFja2FnZSBmZWVkcyBvbiBhIG5vbWluYXRlZCBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGZlZWQgaXMgZXN0YWJsaXNoZWQsIHlvdSBjYW4gcGVyZm9ybQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb25zIG9yIHVwZ3JhZGVzIHVzaW5nIHRoZSBwYWNrYWdlIG1hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgYXQgcnVudGltZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKzwhLS0KKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTlRFUkNFUFRfRElSJz48Z2xvc3N0ZXJtPklOVEVSQ0VQVF9ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBkZWZpbmVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgcG9zdCBpbnN0YWxsYXRpb24gaG9va3MgYXJlIGluc3RhbGxlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIHBvc3QgaW5zdGFsbCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBmaXhlZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7V09SS0RJUn0vaW50ZXJjZXB0X3NjcmlwdHMKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBpbnN0YWxsYXRpb24gb2YgYSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0sCisgICAgICAgICAgICAgICAgICAgIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMsIHdoaWNoIGFyZSBlc3NlbnRpYWxseSBiYXNoIHNjcmlwdHMsCisgICAgICAgICAgICAgICAgICAgIGFyZSBhbGwgZXhlY3V0ZWQganVzdCBhIHNpbmdsZSB0aW1lLgorICAgICAgICAgICAgICAgICAgICBMaW1pdGluZyBleGVjdXRpb24gb2YgdGhlc2Ugc2NyaXB0cyBtaW5pbWl6ZXMgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgIHRpbWUgdGhhdCB3b3VsZCBiZSBsZW5ndGhlbmVkIGR1ZSB0byAgY2VydGFpbiBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyaW5nIHJlZHVuZGFudCBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGluc3RhbGxhdGlvbiBvZiBmb250IHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIGFzIGEgY29tbW9uIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgIFdpdGhvdXQgbGltaXRpbmcgdGhlIGV4ZWN1dGlvbiBvZiBwb3N0IGluc3RhbGxhdGlvbiBzY3JpcHRzLAorICAgICAgICAgICAgICAgICAgICBhbGwgZm9udCBkaXJlY3RvcmllcyB3b3VsZCBiZSByZXNjYW5uZWQgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBjYWNoZSBhZnRlciBlYWNoIGluZGl2aWR1YWwgZm9udCBwYWNrYWdlIHdhcyBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERvIG5vdCBlZGl0IHRoZSA8ZmlsZW5hbWU+SU5URVJDRVBUX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKy0tPgorCisgICAgPC9nbG9zc2Rpdj4KKworPCEtLSAgICAgICAgICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LWonPjx0aXRsZT5KPC90aXRsZT4tLT4KKzwhLS0gICAgICAgICAgICA8L2dsb3NzZGl2Pi0tPgorCisgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS1rJz48dGl0bGU+SzwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LQVJDSCc+PGdsb3NzdGVybT5LQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0FSQ0hbZG9jXSA9ICJEZWZpbmVzIHRoZSBrZXJuZWwgYXJjaGl0ZWN0dXJlIHVzZWQgd2hlbiBhc3NlbWJsaW5nIHRoZSBjb25maWd1cmF0aW9uLiBZb3UgZGVmaW5lIHRoZSBLQVJDSCB2YXJpYWJsZSBpbiB0aGUgQlNQIERlc2NyaXB0aW9ucy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGtlcm5lbCBhcmNoaXRlY3R1cmUgdXNlZCB3aGVuIGFzc2VtYmxpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIEFyY2hpdGVjdHVyZXMgc3VwcG9ydGVkIGZvciB0aGlzIHJlbGVhc2UgYXJlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBvd2VycGMKKyAgICAgaTM4NgorICAgICB4ODZfNjQKKyAgICAgYXJtCisgICAgIHFlbXUKKyAgICAgbWlwcworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBkZWZpbmUgdGhlIDxmaWxlbmFtZT5LQVJDSDwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjYnNwLWRlc2NyaXB0aW9ucyc+QlNQIERlc2NyaXB0aW9uczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtCUkFOQ0gnPjxnbG9zc3Rlcm0+S0JSQU5DSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0JSQU5DSFtkb2NdID0gIkEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gZXhwbGljaXRseSBpZGVudGlmeSB0aGUga2VybmVsIGJyYW5jaCB0aGF0IGlzIHZhbGlkYXRlZCwgcGF0Y2hlZCwgYW5kIGNvbmZpZ3VyZWQgZHVyaW5nIGEgYnVpbGQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGV4cGxpY2l0bHkKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsIHBhdGNoZWQsCisgICAgICAgICAgICAgICAgICAgIGFuZCBjb25maWd1cmVkIGR1cmluZyBhIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzZXQgdGhpcyB2YXJpYWJsZSB0byBlbnN1cmUgdGhlIGV4YWN0IGtlcm5lbAorICAgICAgICAgICAgICAgICAgICBicmFuY2ggeW91IHdhbnQgaXMgYmVpbmcgdXNlZCBieSB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVmFsdWVzIGZvciB0aGlzIHZhcmlhYmxlIGFyZSBzZXQgaW4gdGhlIGtlcm5lbCdzIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCB0aGUga2VybmVsJ3MgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCwgdGhlIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICByZWNpcGUgZmlsZSBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gaXMgc2V0IGFzIGZvbGxvd3MgaW4gdGhhdAorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgcmVjaXBlIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGFsc28gdXNlZCBmcm9tIHRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZQorICAgICAgICAgICAgICAgICAgICB0byBpZGVudGlmeSB0aGUga2VybmVsIGJyYW5jaCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBvciB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgcHJldmlvdXMga2VybmVsIGV4YW1wbGUsIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBpcyBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBCU1AgbGF5ZXIgZm9yIGEgZ2l2ZW4gbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBhcHBlbmQgZmlsZSBmb3IgdGhlIEJlYWdsZWJvbmUsCisgICAgICAgICAgICAgICAgICAgIEVkZ2VSb3V0ZXIsIGFuZCBnZW5lcmljIHZlcnNpb25zIG9mIGJvdGggMzIgYW5kIDY0LWJpdCBJQQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcyAoPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4pIGlzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSByZWxhdGVkIHN0YXRlbWVudHMgZnJvbSB0aGF0IGFwcGVuZCBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAic3RhbmRhcmQvZWRnZXJvdXRlciIKKyAgICAgS0JSQU5DSF9iZWFnbGVib25lID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+IHN0YXRlbWVudHMgaWRlbnRpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYnJhbmNoIHRvIHVzZSB3aGVuIGJ1aWxkaW5nIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgQlNQLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtCVUlMRF9ERUZDT05GSUcnPjxnbG9zc3Rlcm0+S0JVSUxEX0RFRkNPTkZJRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0JVSUxEX0RFRkNPTkZJR1tkb2NdID0gIlNwZWNpZmllcyBhbiAiaW4tdHJlZSIga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdXNlIGR1cmluZyBhIGtlcm5lbCBidWlsZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwteW9jdG8nPjxmaWxlbmFtZT5rZXJuZWwteW9jdG88L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHNwZWNpZmllcyBhbiAiaW4tdHJlZSIga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICBmb3IgdXNlIGR1cmluZyBhIGtlcm5lbCBidWlsZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB3aGVuIHVzaW5nIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBhIGtlcm5lbCBkdXJpbmcgYSBidWlsZCwgeW91IHBsYWNlIHRoZQorICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHlvdXIgbGF5ZXIgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHlvdSB3b3VsZAorICAgICAgICAgICAgICAgICAgICBwbGFjZSBwYXRjaCBmaWxlcyBhbmQgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyAoaS5lLgorICAgICAgICAgICAgICAgICAgICAib3V0LW9mLXRyZWUiKS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gdXNlIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgdGhhdCBpcyBwYXJ0IG9mIHRoZSBrZXJuZWwgdHJlZSAoaS5lLiAiaW4tdHJlZSIpLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhbmQgYXBwZW5kCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB0aGUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgdmFyaWFibGUsIHNldCBpdCBpbiB0aGUgYXBwZW5kIGZpbGUgZm9yIHlvdXIKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JVSUxEX0RFRkNPTkZJR188cmVwbGFjZWFibGU+S01BQ0hJTkU8L3JlcGxhY2VhYmxlPiA/PSA8cmVwbGFjZWFibGU+ZGVmY29uZmlnX2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIGEgInJhc3BiZXJyeXBpMiIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT4gYnVpbGQgdGhhdCB1c2VzIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgImJjbTI3MDlfZGVmY29uZmlnIjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLQlVJTERfREVGQ09ORklHX3Jhc3BiZXJyeXBpMiA9ICJiY20yNzA5X2RlZmNvbmZpZyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBhbHRlcm5hdGl2ZSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB3aXRoaW4geW91cgorICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLQlVJTERfREVGQ09ORklHX3BuLWxpbnV4LXlvY3RvID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3VzaW5nLWFuLWluLXRyZWUtZGVmY29uZmlnLWZpbGUnPlVzaW5nIGFuICJJbi1UcmVlIiA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gRmlsZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0FMVF9JTUFHRVRZUEUnPjxnbG9zc3Rlcm0+S0VSTkVMX0FMVF9JTUFHRVRZUEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9BTFRfSU1BR0VUWVBFW2RvY10gPSAiU3BlY2lmaWVzIGFuIGFsdGVybmF0ZSBrZXJuZWwgaW1hZ2UgdHlwZSBmb3IgY3JlYXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYW4gYWx0ZXJuYXRlIGtlcm5lbCBpbWFnZSB0eXBlIGZvciBjcmVhdGlvbiBpbgorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbiB0byB0aGUga2VybmVsIGltYWdlIHR5cGUgc3BlY2lmaWVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0lNQUdFVFlQRSc+PGZpbGVuYW1lPktFUk5FTF9JTUFHRVRZUEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0FSVElGQUNUX05BTUUnPjxnbG9zc3Rlcm0+S0VSTkVMX0FSVElGQUNUX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIGFsbCBvZiB0aGUgYnVpbGQgYXJ0aWZhY3RzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIGFsbCBvZiB0aGUgYnVpbGQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgYXJ0aWZhY3RzIGJ5IGNoYW5naW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX05BTUU8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIDxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTkFNRTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4gbWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgaGFzIHRoZSBmb2xsb3dpbmcgZGVmYXVsdCB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0UnPjxmaWxlbmFtZT5QS0dFPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHVic+PGZpbGVuYW1lPlBLR1Y8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dSJz48ZmlsZW5hbWU+UEtHUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5JTUFHRV9WRVJTSU9OX1NVRkZJWDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EQVRFVElNRSc+PGZpbGVuYW1lPkRBVEVUSU1FPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0NMQVNTRVMnPjxnbG9zc3Rlcm0+S0VSTkVMX0NMQVNTRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9DTEFTU0VTW2RvY10gPSAiQSBsaXN0IG9mIGNsYXNzZXMgZGVmaW5pbmcga2VybmVsIGltYWdlIHR5cGVzIHRoYXQga2VybmVsIGNsYXNzIHNob3VsZCBpbmhlcml0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNsYXNzZXMgZGVmaW5pbmcga2VybmVsIGltYWdlIHR5cGVzIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbCc+PGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBzaG91bGQgaW5oZXJpdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHR5cGljYWxseSBhcHBlbmQgdGhpcyB2YXJpYWJsZSB0byBlbmFibGUgZXh0ZW5kZWQgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgaXMgdGhlICJrZXJuZWwtZml0aW1hZ2UiLCB3aGljaCBlbmFibGVzCisgICAgICAgICAgICAgICAgICAgIGZpdEltYWdlIHN1cHBvcnQgYW5kIHJlc2lkZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHJlZ2lzdGVyIGN1c3RvbSBrZXJuZWwgaW1hZ2UgdHlwZXMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+IGNsYXNzIHVzaW5nIHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0RFVklDRVRSRUUnPjxnbG9zc3Rlcm0+S0VSTkVMX0RFVklDRVRSRUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9ERVZJQ0VUUkVFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgTGludXgga2VybmVsIGRldmljZSB0cmVlIChpLmUuIHRoZSAuZHRiKSBmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgTGludXgga2VybmVsIGRldmljZSB0cmVlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIHRoZSA8ZmlsZW5hbWU+LmR0YjwvZmlsZW5hbWU+KSBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExlZ2FjeSBzdXBwb3J0IGV4aXN0cyBmb3Igc3BlY2lmeWluZyB0aGUgZnVsbCBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZGV2aWNlIHRyZWUuCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBwcm92aWRpbmcganVzdCB0aGUgPGZpbGVuYW1lPi5kdGI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyBwcmVmZXJyZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgdmFyaWFibGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwtZGV2aWNldHJlZSc+PGZpbGVuYW1lPmtlcm5lbC1kZXZpY2V0cmVlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIG11c3QgYmUgaW5oZXJpdGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtFUk5FTF9EVEJfTElOS19OQU1FJz48Z2xvc3N0ZXJtPktFUk5FTF9EVEJfTElOS19OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBLRVJORUxfRFRCX0xJTktfTkFNRVtkb2NdID0gIlRoZSBsaW5rIG5hbWUgb2YgdGhlIGtlcm5lbCBkZXZpY2UgdHJlZSBiaW5hcnkgKERUQikuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbGluayBuYW1lIG9mIHRoZSBrZXJuZWwgZGV2aWNlIHRyZWUgYmluYXJ5IChEVEIpLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfRFRCX0xJTktfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIDxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FID89ICIke01BQ0hJTkV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtFUk5FTF9EVEJfTkFNRSc+PGdsb3NzdGVybT5LRVJORUxfRFRCX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9EVEJfTkFNRVtkb2NdID0gIlRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBkZXZpY2UgdHJlZSBiaW5hcnkgKERUQikuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBuYW1lIG9mIHRoZSBrZXJuZWwgZGV2aWNlIHRyZWUgYmluYXJ5IChEVEIpLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfRFRCX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9BUlRJRkFDVF9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0VYVFJBX0FSR1MnPjxnbG9zc3Rlcm0+S0VSTkVMX0VYVFJBX0FSR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9FWFRSQV9BUkdTW2RvY10gPSAiU3BlY2lmaWVzIGFkZGl0aW9uYWwgbWFrZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBhc3NlcyBvbiB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHBhc3NlcyBvbiB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtFUk5FTF9GRUFUVVJFUyc+PGdsb3NzdGVybT5LRVJORUxfRkVBVFVSRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9GRUFUVVJFU1tkb2NdID0gIkluY2x1ZGVzIGFkZGl0aW9uYWwga2VybmVsIG1ldGFkYXRhLiBUaGUgbWV0YWRhdGEgeW91IGFkZCB0aHJvdWdoIHRoaXMgdmFyaWFibGUgaW5jbHVkZXMgY29uZmlnIGZyYWdtZW50cyBhbmQgZmVhdHVyZXMgZGVzY3JpcHRpb25zLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkZXMgYWRkaXRpb25hbCBrZXJuZWwgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aGUgZGVmYXVsdCBCb2FyZCBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIChCU1BzKQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHByb3ZpZGVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZyb20gd2l0aGluIHRoZSBrZXJuZWwgcmVjaXBlIG9yIGtlcm5lbCBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgZmlsZSB0byBmdXJ0aGVyIGFkZCBtZXRhZGF0YSBmb3IgYWxsIEJTUHMgb3Igc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgQlNQcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1ldGFkYXRhIHlvdSBhZGQgdGhyb3VnaCB0aGlzIHZhcmlhYmxlIGluY2x1ZGVzIGNvbmZpZworICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIGZlYXR1cmVzIGRlc2NyaXB0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggdXN1YWxseSBpbmNsdWRlcyBwYXRjaGVzIGFzIHdlbGwgYXMgY29uZmlnIGZyYWdtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgWW91IHR5cGljYWxseSBvdmVycmlkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGZvciBhCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgd2F5LCB5b3UgY2FuIHByb3ZpZGUgdmFsaWRhdGVkLCBidXQgb3B0aW9uYWwsCisgICAgICAgICAgICAgICAgICAgIHNldHMgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tcnRfNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgYWRkcyAibmV0ZmlsdGVyIiBhbmQgInRhc2tzdGF0cyIgZmVhdHVyZXMgdG8gYWxsIEJTUHMKKyAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyAidmlydGlvIiBjb25maWd1cmF0aW9ucyB0byBhbGwgUUVNVSBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxhc3QgdHdvIHN0YXRlbWVudHMgYWRkIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRvCisgICAgICAgICAgICAgICAgICAgIHRhcmdldGVkIG1hY2hpbmUgdHlwZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKKyAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGwgPSAiIGNmZy92aXJ0aW8uc2NjIgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYgPSAiIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02NCA9ICIgY2ZnL3NvdW5kLnNjYyIgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfRklUX0xJTktfTkFNRSc+PGdsb3NzdGVybT5LRVJORUxfRklUX0xJTktfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0ZJVF9MSU5LX05BTUVbZG9jXSA9ICJUaGUgbGluayBuYW1lIG9mIHRoZSBrZXJuZWwgZmxhdHRlbmVkIGltYWdlIHRyZWUgKEZJVCkgaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbGluayBuYW1lIG9mIHRoZSBrZXJuZWwgZmxhdHRlbmVkIGltYWdlIHRyZWUgKEZJVCkgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9GSVRfTElOS19OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgPGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0ZJVF9OQU1FJz48Z2xvc3N0ZXJtPktFUk5FTF9GSVRfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0ZJVF9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGZsYXR0ZW5lZCBpbWFnZSB0cmVlIChGSVQpIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGZsYXR0ZW5lZCBpbWFnZSB0cmVlIChGSVQpIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfRklUX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9BUlRJRkFDVF9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0lNQUdFX0xJTktfTkFNRSc+PGdsb3NzdGVybT5LRVJORUxfSU1BR0VfTElOS19OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBLRVJORUxfSU1BR0VfTElOS19OQU1FW2RvY10gPSAiVGhlIGxpbmsgbmFtZSBmb3IgdGhlIGtlcm5lbCBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaW5rIG5hbWUgZm9yIHRoZSBrZXJuZWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9JTUFHRV9MSU5LX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSA8ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlIHNhbWUgZmlsZSwgaGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRSA/PSAiJHtNQUNISU5FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfSU1BR0VfTUFYU0laRSc+PGdsb3NzdGVybT5LRVJORUxfSU1BR0VfTUFYU0laRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0lNQUdFX01BWFNJWkVbZG9jXSA9ICJUaGUgbWF4aW11bSBhbGxvd2FibGUgc2l6ZSBpbiBraWxvYnl0ZXMgb2YgdGhlIGtlcm5lbCBpbWFnZSBmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGtlcm5lbCBpbWFnZSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIGtpbG9ieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgSWYgPGZpbGVuYW1lPktFUk5FTF9JTUFHRV9NQVhTSVpFPC9maWxlbmFtZT4gaXMgc2V0LAorICAgICAgICAgICAgICAgICAgICB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlIGZpbGUgaXMgY2hlY2tlZCBhZ2FpbnN0CisgICAgICAgICAgICAgICAgICAgIHRoZSBzZXQgdmFsdWUgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtc2l6ZWNoZWNrJz48ZmlsZW5hbWU+ZG9fc2l6ZWNoZWNrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIGZhaWxzIGlmIHRoZSBrZXJuZWwgaW1hZ2UgZmlsZSBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICB0aGUgc2V0dGluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9JTUFHRV9NQVhTSVpFPC9maWxlbmFtZT4gaXMgdXNlZnVsIGZvcgorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZGV2aWNlcyB0aGF0IGhhdmUgYSBsaW1pdGVkIGFtb3VudCBvZiBzcGFjZSBpbgorICAgICAgICAgICAgICAgICAgICB3aGljaCB0aGUga2VybmVsIGltYWdlIG11c3QgYmUgc3RvcmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHdoaWNoIG1lYW5zIHRoZQorICAgICAgICAgICAgICAgICAgICBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UgaXMgbm90IGNoZWNrZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0lNQUdFX05BTUUnPjxnbG9zc3Rlcm0+S0VSTkVMX0lNQUdFX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9JTUFHRV9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfSU1BR0VfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0FSVElGQUNUX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfSU1BR0VUWVBFJz48Z2xvc3N0ZXJtPktFUk5FTF9JTUFHRVRZUEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9JTUFHRVRZUEVbZG9jXSA9ICJUaGUgdHlwZSBvZiBrZXJuZWwgdG8gYnVpbGQgZm9yIGEgZGV2aWNlLCB1c3VhbGx5IHNldCBieSB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBkZWZhdWx0cyB0byAnekltYWdlJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0eXBlIG9mIGtlcm5lbCB0byBidWlsZCBmb3IgYSBkZXZpY2UsIHVzdWFsbHkgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGRlZmF1bHRzIHRvICJ6SW1hZ2UiLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUga2VybmVsIGFuZCBpcyBwYXNzZWQgdG8gPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBhcyB0aGUgdGFyZ2V0IHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBidWlsZCBhbiBhbHRlcm5hdGUga2VybmVsIGltYWdlIHR5cGUsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9BTFRfSU1BR0VUWVBFJz48ZmlsZW5hbWU+S0VSTkVMX0FMVF9JTUFHRVRZUEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX01PRFVMRV9BVVRPTE9BRCc+PGdsb3NzdGVybT5LRVJORUxfTU9EVUxFX0FVVE9MT0FEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBLRVJORUxfTU9EVUxFX0FVVE9MT0FEW2RvY10gPSAiTGlzdHMga2VybmVsIG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlIGF1dG8tbG9hZGVkIGR1cmluZyBib290IgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyBrZXJuZWwgbW9kdWxlcyB0aGF0IG5lZWQgdG8gYmUgYXV0by1sb2FkZWQgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSByZXBsYWNlcyB0aGUgZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLW1vZHVsZV9hdXRvbG9hZCc+PGZpbGVuYW1lPm1vZHVsZV9hdXRvbG9hZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5LRVJORUxfTU9EVUxFX0FVVE9MT0FEPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW55d2hlcmUgdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplZCBieSB0aGUga2VybmVsIHJlY2lwZSBvciBieSBhbiBvdXQtb2YtdHJlZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHJlY2lwZSAoZS5nLiBhIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlLCBhCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUsIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCBvciB0aGUgcmVjaXBlIGl0c2VsZikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICI8cmVwbGFjZWFibGU+bW9kdWxlX25hbWUxPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPm1vZHVsZV9uYW1lMjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5tb2R1bGVfbmFtZTM8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRpbmcgPGZpbGVuYW1lPktFUk5FTF9NT0RVTEVfQVVUT0xPQUQ8L2ZpbGVuYW1lPiBjYXVzZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcG9wdWxhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL21vZHVsZXMtbG9hZC5kL21vZG5hbWUuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgd2l0aCB0aGUgbGlzdCBvZiBtb2R1bGVzIHRvIGJlIGF1dG8tbG9hZGVkIG9uIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtb2R1bGVzIGFwcGVhciBvbmUtcGVyLWxpbmUgaW4gdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAiPHJlcGxhY2VhYmxlPm1vZHVsZV9uYW1lPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBwb3B1bGF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1vZG5hbWUuY29uZjwvZmlsZW5hbWU+IGZpbGUgd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bW9kcHJvYmUuZDwvZmlsZW5hbWU+IHN5bnRheCBsaW5lcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYnPjxmaWxlbmFtZT5LRVJORUxfTU9EVUxFX1BST0JFQ09ORjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfTU9EVUxFX1BST0JFQ09ORic+PGdsb3NzdGVybT5LRVJORUxfTU9EVUxFX1BST0JFQ09ORjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX01PRFVMRV9QUk9CRUNPTkZbZG9jXSA9ICJMaXN0cyBrZXJuZWwgbW9kdWxlcyBmb3Igd2hpY2ggdGhlIGJ1aWxkIHN5c3RlbSBleHBlY3RzIHRvIGZpbmQgbW9kdWxlX2NvbmZfKiB2YWx1ZXMgdGhhdCBzcGVjaWZ5IGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggb2YgdGhlIG1vZHVsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyBhIGxpc3Qgb2YgbW9kdWxlcyBmb3Igd2hpY2ggdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gZXhwZWN0cyB0byBmaW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tb2R1bGVfY29uZl88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tb2RuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzIHRoYXQgc3BlY2lmeSBjb25maWd1cmF0aW9uIGZvciBlYWNoIG9mIHRoZSBtb2R1bGVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHByb3ZpZGUgdGhvc2UgbW9kdWxlCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1tb2R1bGVfY29uZic+PGZpbGVuYW1lPm1vZHVsZV9jb25mXyo8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX1BBVEgnPjxnbG9zc3Rlcm0+S0VSTkVMX1BBVEg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9QQVRIW2RvY10gPSAiVGhlIGxvY2F0aW9uIG9mIHRoZSBrZXJuZWwgc291cmNlcy4gVGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoZSBTVEFHSU5HX0tFUk5FTF9ESVIgd2l0aGluIHRoZSBtb2R1bGUgY2xhc3MgKG1vZHVsZS5iYmNsYXNzKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfS0VSTkVMX0RJUic+PGZpbGVuYW1lPlNUQUdJTkdfS0VSTkVMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLW1vZHVsZSc+PGZpbGVuYW1lPm1vZHVsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNpbmNvcnBvcmF0aW5nLW91dC1vZi10cmVlLW1vZHVsZXMnPkluY29ycG9yYXRpbmcgT3V0LW9mLVRyZWUgTW9kdWxlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhlbHAgbWF4aW1pemUgY29tcGF0aWJpbGl0eSB3aXRoIG91dC1vZi10cmVlIGRyaXZlcnMKKyAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBidWlsZCBtb2R1bGVzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhbHNvCisgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZXMgYW5kIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfU1JDJz48ZmlsZW5hbWU+S0VSTkVMX1NSQzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX1BBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgQm90aCB2YXJpYWJsZXMgYXJlIGNvbW1vbiB2YXJpYWJsZXMgdXNlZCBieSBleHRlcm5hbAorICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZXMgdG8gcG9pbnQgdG8gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtFUk5FTF9TUkMnPjxnbG9zc3Rlcm0+S0VSTkVMX1NSQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX1NSQ1tkb2NdID0gIlRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZXMuIFRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgU1RBR0lOR19LRVJORUxfRElSIHdpdGhpbiB0aGUgbW9kdWxlIGNsYXNzIChtb2R1bGUuYmJjbGFzcykuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2VzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0tFUk5FTF9ESVInPjxmaWxlbmFtZT5TVEFHSU5HX0tFUk5FTF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1tb2R1bGUnPjxmaWxlbmFtZT5tb2R1bGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSBpcyB1c2VkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjaW5jb3Jwb3JhdGluZy1vdXQtb2YtdHJlZS1tb2R1bGVzJz5JbmNvcnBvcmF0aW5nIE91dC1vZi1UcmVlIE1vZHVsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBoZWxwIG1heGltaXplIGNvbXBhdGliaWxpdHkgd2l0aCBvdXQtb2YtdHJlZSBkcml2ZXJzCisgICAgICAgICAgICAgICAgICAgIHVzZWQgdG8gYnVpbGQgbW9kdWxlcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYWxzbworICAgICAgICAgICAgICAgICAgICByZWNvZ25pemVzIGFuZCB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX1BBVEgnPjxmaWxlbmFtZT5LRVJORUxfUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX1NSQzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBCb3RoIHZhcmlhYmxlcyBhcmUgY29tbW9uIHZhcmlhYmxlcyB1c2VkIGJ5IGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgIE1ha2VmaWxlcyB0byBwb2ludCB0byB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX1ZFUlNJT04nPjxnbG9zc3Rlcm0+S0VSTkVMX1ZFUlNJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9WRVJTSU9OW2RvY10gPSAiU3BlY2lmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwgYXMgZXh0cmFjdGVkIGZyb20gdmVyc2lvbi5oIG9yIHV0c3JlbGVhc2UuaCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwgYXMgZXh0cmFjdGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZlcnNpb24uaDwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51dHNyZWxlYXNlLmg8L2ZpbGVuYW1lPiB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2VzLgorICAgICAgICAgICAgICAgICAgICBFZmZlY3RzIG9mIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkbyBub3QgdGFrZSBhZmZlY3QgdW50aWwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBoYXMgYmVlbiBjb25maWd1cmVkLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGF0dGVtcHRpbmcgdG8gcmVmZXIgdG8gdGhpcyB2YXJpYWJsZSBpbgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0cyBwcmlvciB0byBjb25maWd1cmF0aW9uIHdpbGwgbm90IHdvcmsuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMREVQTU9EREVQRU5EJz48Z2xvc3N0ZXJtPktFUk5FTERFUE1PRERFUEVORDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMREVQTU9EREVQRU5EW2RvY10gPSAiU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgZGF0YSByZWZlcmVuY2VkIHRocm91Z2ggdGhlIFBLR0RBVEFfRElSIGRpcmVjdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHJlZmVyZW5jZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBuZWVkZWQgb3Igbm90LgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPktFUk5FTERFUE1PRERFUEVORDwvZmlsZW5hbWU+IGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgd2hldGhlciBvciBub3QgdGhhdCBkYXRhIGV4aXN0cywKKyAgICAgICAgICAgICAgICAgICAgYnV0IHNpbXBseSB3aGV0aGVyIG9yIG5vdCBpdCBpcyB1c2VkLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IG5lZWQgdG8gdXNlIHRoZSBkYXRhLCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxERVBNT0RERVBFTkQ8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRoZXJlIHdoZW4gdGhlIGRhdGEgaXMgbm90IG5lZWRlZAorICAgICAgICAgICAgICAgICAgICBhdm9pZHMgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeSBsb29wLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtGRUFUVVJFX0RFU0NSSVBUSU9OJz48Z2xvc3N0ZXJtPktGRUFUVVJFX0RFU0NSSVBUSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBLRkVBVFVSRV9ERVNDUklQVElPTltkb2NdID0gIlByb3ZpZGVzIGEgc2hvcnQgZGVzY3JpcHRpb24gb2YgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LiBZb3UgdXNlIHRoaXMgdmFyaWFibGUgaW4gdGhlIC5zY2MgZmlsZSB0aGF0IGRlc2NyaWJlcyBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIGEgc2hvcnQgZGVzY3JpcHRpb24gb2YgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgorICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoaXMgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSB0aGF0IGRlc2NyaWJlcyBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgdmFyaWFibGUgdXNlZCBpbiBhIGZpbGUgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNtcC5zY2M8L2ZpbGVuYW1lPiB0byBkZXNjcmliZSBTTVAgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gIkVuYWJsZSBTTVAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LTUFDSElORSc+PGdsb3NzdGVybT5LTUFDSElORTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS01BQ0hJTkVbZG9jXSA9ICJUaGUgbWFjaGluZSBhcyBrbm93biBieSB0aGUga2VybmVsLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1hY2hpbmUgYXMga25vd24gYnkgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIHRoZSBtYWNoaW5lIG5hbWUgdXNlZCBieSB0aGUga2VybmVsIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRoZSBtYWNoaW5lIG5hbWUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBtYWNoaW5lIG5hbWUgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB1bmRlcnN0YW5kcyBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZTItMzItaW50ZWwtY29tbW9uPC9maWxlbmFtZT4gZ29lcyBieSBhCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBuYW1lIGluIHRoZSBMaW51eCBZb2N0byBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIFRoZSBrZXJuZWwgdW5kZXJzdGFuZHMgdGhhdCBtYWNoaW5lIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlMi0zMjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBGb3IgY2FzZXMgbGlrZSB0aGVzZSwgdGhlIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG1hcHMgdGhlIGtlcm5lbCBtYWNoaW5lIG5hbWUgdG8gdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gbWFjaGluZSBuYW1lLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBtYXBwaW5ncyBiZXR3ZWVuIGRpZmZlcmVudCBuYW1lcyBvY2N1ciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gTGludXggS2VybmVsJ3MgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUgdGFrZSBhIGxvb2sgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fMy4xOS5iYmFwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElOVVhfVkVSU0lPTl9jb3JlMi0zMi1pbnRlbC1jb21tb24gPSAiMy4xOS4wIgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfY29yZTItMzItaW50ZWwtY29tbW9uID0gIiR7TUFDSElORX0iCisgICAgIFNSQ1JFVl9tZXRhX2NvcmUyLTMyLWludGVsLWNvbW1vbiA9ICI4ODk3ZWY2OGIzMGU3NDI2YmMxZDM5ODk1ZTcxZmIxNTVkNjk0OTc0IgorICAgICBTUkNSRVZfbWFjaGluZV9jb3JlMi0zMi1pbnRlbC1jb21tb24gPSAiNDNiOWVjZWQ5YmE4YTU3YWRkMzZhZjA3NzM2MzQ0ZGNjMzgzZjcxMSIKKyAgICAgS01BQ0hJTkVfY29yZTItMzItaW50ZWwtY29tbW9uID0gImludGVsLWNvcmUyLTMyIgorICAgICBLQlJBTkNIX2NvcmUyLTMyLWludGVsLWNvbW1vbiA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX2NvcmUyLTMyLWludGVsLWNvbW1vbiA9ICIke0tFUk5FTF9GRUFUVVJFU19JTlRFTF9DT01NT059IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgc2F5cyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgdW5kZXJzdGFuZHMgdGhlIG1hY2hpbmUgbmFtZSBhcworICAgICAgICAgICAgICAgICAgICAiaW50ZWwtY29yZTItMzIiLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1bmRlcnN0YW5kcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBhcyAiY29yZTItMzItaW50ZWwtY29tbW9uIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtUWVBFJz48Z2xvc3N0ZXJtPktUWVBFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBLVFlQRVtkb2NdID0gIkRlZmluZXMgdGhlIGtlcm5lbCB0eXBlIHRvIGJlIHVzZWQgaW4gYXNzZW1ibGluZyB0aGUgY29uZmlndXJhdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGtlcm5lbCB0eXBlIHRvIGJlIHVzZWQgaW4gYXNzZW1ibGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpbnV4LXlvY3RvIHJlY2lwZXMgZGVmaW5lICJzdGFuZGFyZCIsICJ0aW55IiwKKyAgICAgICAgICAgICAgICAgICAgYW5kICJwcmVlbXB0LXJ0IiBrZXJuZWwgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNrZXJuZWwtdHlwZXMnPktlcm5lbCBUeXBlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIHR5cGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgZGVmaW5lIHRoZSA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2JzcC1kZXNjcmlwdGlvbnMnPkJTUCBEZXNjcmlwdGlvbnM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIHlvdSB1c2UgbXVzdCBtYXRjaCB0aGUgdmFsdWUgdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSU5VWF9LRVJORUxfVFlQRSc+PGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlIHVzZWQgYnkgdGhlIGtlcm5lbCByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LWwnPjx0aXRsZT5MPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUxBQkVMUyc+PGdsb3NzdGVybT5MQUJFTFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExBQkVMU1tkb2NdID0gIlByb3ZpZGVzIGEgbGlzdCBvZiB0YXJnZXRzIGZvciBhdXRvbWF0aWMgY29uZmlndXJhdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIGEgbGlzdCBvZiB0YXJnZXRzIGZvciBhdXRvbWF0aWMgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1ncnViLWVmaSc+PGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEFZRVJERVBFTkRTJz48Z2xvc3N0ZXJtPkxBWUVSREVQRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTEFZRVJERVBFTkRTW2RvY10gPSAiTGlzdHMgdGhlIGxheWVycywgc2VwYXJhdGVkIGJ5IHNwYWNlcywgb24gd2hpY2ggdGhpcyByZWNpcGUgZGVwZW5kcy4gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHRoZSBjb25mL2xheWVyLmNvbmYgZmlsZSBhbmQgbXVzdCBiZSBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBsYXllcnMsIHNlcGFyYXRlZCBieSBzcGFjZXMsIG9uIHdoaWNoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSBhIHNwZWNpZmljIGxheWVyIHZlcnNpb24gZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBieSBhZGRpbmcgaXQgdG8gdGhlIGVuZCBvZiB0aGUgbGF5ZXIgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExBWUVSREVQRU5EU19teWxheWVyID0gImFub3RoZXJsYXllciAoPTMpIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgcHJldmlvdXMgZXhhbXBsZSwgdmVyc2lvbiAzIG9mICJhbm90aGVybGF5ZXIiCisgICAgICAgICAgICAgICAgICAgIGlzIGNvbXBhcmVkIGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxBWUVSVkVSU0lPTic+PGZpbGVuYW1lPkxBWUVSVkVSU0lPTjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT5fYW5vdGhlcmxheWVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIGlzIHByb2R1Y2VkIGlmIGFueSBkZXBlbmRlbmN5IGlzIG1pc3Npbmcgb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIHZlcnNpb24gbnVtYmVycyAoaWYgc3BlY2lmaWVkKSBkbyBub3QgbWF0Y2ggZXhhY3RseS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZSBhbmQgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllciAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TEFZRVJERVBFTkRTX215bGF5ZXI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEFZRVJESVInPjxnbG9zc3Rlcm0+TEFZRVJESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExBWUVSRElSW2RvY10gPSAiV2hlbiB1c2VkIGluc2lkZSB0aGUgbGF5ZXIuY29uZiBjb25maWd1cmF0aW9uIGZpbGUsIHRoaXMgdmFyaWFibGUgcHJvdmlkZXMgdGhlIHBhdGggb2YgdGhlIGN1cnJlbnQgbGF5ZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQgaW5zaWRlIHRoZSA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgdGhpcyB2YXJpYWJsZSBwcm92aWRlcyB0aGUgcGF0aCBvZiB0aGUgY3VycmVudCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBub3QgYXZhaWxhYmxlIG91dHNpZGUgb2YgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgcmVmZXJlbmNlcyBhcmUgZXhwYW5kZWQgaW1tZWRpYXRlbHkgd2hlbiBwYXJzaW5nIG9mIHRoZSBmaWxlIGNvbXBsZXRlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MQVlFUlJFQ09NTUVORFMnPjxnbG9zc3Rlcm0+TEFZRVJSRUNPTU1FTkRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBMQVlFUlJFQ09NTUVORFNbZG9jXSA9ICJMaXN0cyB0aGUgbGF5ZXJzLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCByZWNvbW1lbmRlZCBmb3IgdXNlIHdpdGggdGhpcyBsYXllci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBsYXllcnMsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHJlY29tbWVuZGVkIGZvcgorICAgICAgICAgICAgICAgICAgICB1c2Ugd2l0aCB0aGlzIGxheWVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIHNwZWNpZnkgYSBzcGVjaWZpYyBsYXllciB2ZXJzaW9uIGZvciBhCisgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGF0aW9uIGJ5IGFkZGluZyB0aGUgdmVyc2lvbiB0byB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBsYXllciBuYW1lLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTEFZRVJSRUNPTU1FTkRTX215bGF5ZXIgPSAiYW5vdGhlcmxheWVyICg9MykiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBwcmV2aW91cyBleGFtcGxlLCB2ZXJzaW9uIDMgb2YgImFub3RoZXJsYXllciIgaXMKKyAgICAgICAgICAgICAgICAgICAgY29tcGFyZWQgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TEFZRVJWRVJTSU9OX2Fub3RoZXJsYXllcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZCBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIHN1ZmZpeGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIHNwZWNpZmljIGxheWVyIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MQVlFUlJFQ09NTUVORFNfbXlsYXllcjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MQVlFUlNFUklFU19DT01QQVQnPjxnbG9zc3Rlcm0+TEFZRVJTRVJJRVNfQ09NUEFUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBMQVlFUlNFUklFU19DT01QQVRbZG9jXSA9ICJMaXN0cyB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgdmVyc2lvbnMgZm9yIHdoaWNoIGEgbGF5ZXIgaXMgY29tcGF0aWJsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSB2ZXJzaW9ucyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T3BlbkVtYmVkZGVkLUNvcmU8L2xpbms+IGZvciB3aGljaAorICAgICAgICAgICAgICAgICAgICBhIGxheWVyIGlzIGNvbXBhdGlibGUuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHRoZSBsYXllciBtYWludGFpbmVyIHRvIGluZGljYXRlIHdoaWNoIGNvbWJpbmF0aW9ucworICAgICAgICAgICAgICAgICAgICBvZiB0aGUgbGF5ZXIgYW5kIE9FLUNvcmUgY2FuIGJlIGV4cGVjdGVkIHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBnaXZlcyB0aGUgc3lzdGVtIGEgd2F5IHRvIGRldGVjdCB3aGVuIGEgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgaGFzIG5vdCBiZWVuIHRlc3RlZCB3aXRoIG5ldyByZWxlYXNlcyBvZiBPRS1Db3JlIChlLmcuCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciBpcyBub3QgbWFpbnRhaW5lZCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHNwZWNpZnkgdGhlIE9FLUNvcmUgdmVyc2lvbnMgZm9yIHdoaWNoIGEgbGF5ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSwgdXNlIHRoaXMgdmFyaWFibGUgaW4geW91ciBsYXllcidzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbGlzdCwgdXNlIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvUmVsZWFzZXMnPlJlbGVhc2UgTmFtZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIChlLmcuICZESVNUUk9fTkFNRV9OT19DQVA7KS4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBtdWx0aXBsZSBPRS1Db3JlIHZlcnNpb25zIGZvciB0aGUgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgIHVzZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExBWUVSU0VSSUVTX0NPTVBBVF88cmVwbGFjZWFibGU+bGF5ZXJfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4gPSAiJkRJU1RST19OQU1FX05PX0NBUDsgJkRJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkU7IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGlibGUgdmVyc2lvbiAyCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHByb2R1Y2VzIGEgd2FybmluZyBpZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGlzIG5vdCBzZXQgZm9yIGFueSBnaXZlbiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy15b3VyLW93bi1sYXllcic+Q3JlYXRpbmcgWW91ciBPd24gTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEFZRVJWRVJTSU9OJz48Z2xvc3N0ZXJtPkxBWUVSVkVSU0lPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTEFZRVJWRVJTSU9OW2RvY10gPSAiT3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgYSBsYXllciBhcyBhIHNpbmdsZSBudW1iZXIuIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBpbiB0aGUgY29uZi9sYXllci5jb25mIGZpbGUgYW5kIG11c3QgYmUgc3VmZml4ZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMgbGF5ZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBPcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiBhIGxheWVyIGFzIGEgc2luZ2xlIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxBWUVSREVQRU5EUyc+PGZpbGVuYW1lPkxBWUVSREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgYW5vdGhlciBsYXllciBpbiBvcmRlciB0byBkZXBlbmQgb24gYSBzcGVjaWZpYyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICBhbmQgbXVzdCBiZSBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllciAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TEFZRVJWRVJTSU9OX215bGF5ZXI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEQnPjxnbG9zc3Rlcm0+TEQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExEW2RvY10gPSAiTWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBsaW5rZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdXNlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGxpbmtlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MREZMQUdTJz48Z2xvc3N0ZXJtPkxERkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExERkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIGxpbmtlci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgbGlua2VyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGV4cG9ydGVkIHRvIGFuIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCB0aHVzIG1hZGUgdmlzaWJsZSB0byB0aGUgc29mdHdhcmUgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQgZHVyaW5nIHRoZSBjb21waWxhdGlvbiBzdGVwLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGluaXRpYWxpemF0aW9uIGZvciA8ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmllcyBkZXBlbmRpbmcgb24gd2hhdCBpcyBiZWluZyBidWlsdDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0xERkxBR1MnPjxmaWxlbmFtZT5UQVJHRVRfTERGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfTERGTEFHUyc+PGZpbGVuYW1lPkJVSUxEX0xERkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEU0RLX0xERkxBR1MnPjxmaWxlbmFtZT5CVUlMRFNES19MREZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgYW4gU0RLIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay08L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEVBRF9TT05BTUUnPjxnbG9zc3Rlcm0+TEVBRF9TT05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExFQURfU09OQU1FW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBsZWFkIChvciBwcmltYXJ5KSBjb21waWxlZCBsaWJyYXJ5IGZpbGUgKGkuZS4gLnNvKSB0aGF0IHRoZSBkZWJpYW4gY2xhc3MgYXBwbGllcyBpdHMgbmFtaW5nIHBvbGljeSB0byBnaXZlbiBhIHJlY2lwZSB0aGF0IHBhY2thZ2VzIG11bHRpcGxlIGxpYnJhcmllcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGVhZCAob3IgcHJpbWFyeSkgY29tcGlsZWQgbGlicmFyeSBmaWxlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPikgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFwcGxpZXMgaXRzIG5hbWluZyBwb2xpY3kgdG8gZ2l2ZW4gYSByZWNpcGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBtdWx0aXBsZSBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlYmlhbjwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUxJQ19GSUxFU19DSEtTVU0nPjxnbG9zc3Rlcm0+TElDX0ZJTEVTX0NIS1NVTTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTElDX0ZJTEVTX0NIS1NVTVtkb2NdID0gIkNoZWNrc3VtcyBvZiB0aGUgbGljZW5zZSB0ZXh0IGluIHRoZSByZWNpcGUgc291cmNlIGNvZGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBDaGVja3N1bXMgb2YgdGhlIGxpY2Vuc2UgdGV4dCBpbiB0aGUgcmVjaXBlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHRyYWNrcyBjaGFuZ2VzIGluIGxpY2Vuc2UgdGV4dCBvZiB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGNvZGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBsaWNlbnNlIHRleHQgaXMgY2hhbmdlZCwgaXQgd2lsbCB0cmlnZ2VyIGEgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSwgd2hpY2ggZ2l2ZXMgdGhlIGRldmVsb3BlciBhbiBvcHBvcnR1bml0eSB0byByZXZpZXcgYW55CisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgY2hhbmdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIG11c3QgYmUgZGVmaW5lZCBmb3IgYWxsIHJlY2lwZXMgKHVubGVzcworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvICJDTE9TRUQiKS48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTElDRU5TRSc+PGdsb3NzdGVybT5MSUNFTlNFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBMSUNFTlNFW2RvY10gPSAiVGhlIGxpc3Qgb2Ygc291cmNlIGxpY2Vuc2VzIGZvciB0aGUgcmVjaXBlLiBUaGUgbG9naWNhbCBvcGVyYXRvcnMgJmFtcDssICd8JywgYW5kIHBhcmVudGhlc2VzIGNhbiBiZSB1c2VkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpc3Qgb2Ygc291cmNlIGxpY2Vuc2VzIGZvciB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2UgcnVsZXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RG8gbm90IHVzZSBzcGFjZXMgd2l0aGluIGluZGl2aWR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIG5hbWVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlcGFyYXRlIGxpY2Vuc2UgbmFtZXMgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwaXBlKSB3aGVuIHRoZXJlIGlzIGEgY2hvaWNlIGJldHdlZW4gbGljZW5zZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VwYXJhdGUgbGljZW5zZSBuYW1lcyB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhbXA7IChhbXBlcnNhbmQpIHdoZW4gbXVsdGlwbGUgbGljZW5zZXMgZXhpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNvdmVyIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgc291cmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBjYW4gdXNlIHNwYWNlcyBiZXR3ZWVuIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Gb3Igc3RhbmRhcmQgbGljZW5zZXMsIHVzZSB0aGUgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZmlsZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1BEWExJQ0VOU0VNQVAnPjxmaWxlbmFtZT5TUERYTElDRU5TRU1BUDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgbmFtZXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbGljZW5zZXMuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNFTlNFID0gIkxHUEx2Mi4xIHwgR1BMdjMiCisgICAgIExJQ0VOU0UgPSAiTVBMLTEgJmFtcDsgTEdQTHYyLjEiCisgICAgIExJQ0VOU0UgPSAiR1BMdjIrIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBleGFtcGxlIGlzIGZyb20gdGhlIHJlY2lwZXMgZm9yIFF0LCB3aGljaCB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdW5kZXIgZWl0aGVyIHRoZSBMR1BMIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgMi4xIG9yIEdQTCB2ZXJzaW9uIDMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgZXhhbXBsZSBpcyBmcm9tIENhaXJvIHdoZXJlIHR3byBsaWNlbnNlcyBjb3ZlcgorICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgZXhhbXBsZSBpcyBmcm9tIDxmaWxlbmFtZT5zeXNzdGF0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHByZXNlbnRzIGEgc2luZ2xlIGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGxpY2Vuc2VzIG9uIGEgcGVyLXBhY2thZ2UgYmFzaXMgdG8KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgY29tcG9uZW50cyBvZiB0aGUgb3V0cHV0IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGxpY2Vuc2VzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYSBwaWVjZSBvZiBzb2Z0d2FyZSB3aG9zZSBjb2RlIGlzCisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VkIHVuZGVyIEdQTHYyIGJ1dCBoYXMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSAxLjIgY291bGQKKyAgICAgICAgICAgICAgICAgICAgYmUgc3BlY2lmaWVkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRSA9ICJHRkRMLTEuMiAmYW1wOyBHUEx2MiIKKyAgICAgTElDRU5TRV8ke1BOfSA9ICJHUEx2MiIKKyAgICAgTElDRU5TRV8ke1BOfS1kb2MgPSAiR0ZETC0xLjIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MSUNFTlNFX0NSRUFURV9QQUNLQUdFJz48Z2xvc3N0ZXJtPkxJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0VbZG9jXSA9ICJDcmVhdGVzIGFuIGV4dHJhIHBhY2thZ2UgKGkuZS4gJHtQTn0tbGljKSBmb3IgZWFjaCByZWNpcGUgYW5kIGFkZHMgdGhhdCBwYWNrYWdlIHRvIHRoZSBSUkVDT01NRU5EUyske1BOfS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIDxmaWxlbmFtZT5MSUNFTlNFX0NSRUFURV9QQUNLQUdFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICIxIiBjYXVzZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBhbiBleHRyYSBwYWNrYWdlIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0tbGljPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCByZWNpcGUgYW5kIHRvIGFkZCB0aG9zZSBwYWNrYWdlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPl8ke1BOfTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPiR7UE59LWxpYzwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbHMgYQorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gPGZpbGVuYW1lPi91c3Ivc2hhcmUvbGljZW5zZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIGJhc2UgbmFtZSwgYW5kIGluc3RhbGxzIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbiBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gKGkuZS4gY29waWVzIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBhcHByb3ByaWF0ZSBsaWNlbnNlIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gdGhhdCBtYXRjaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgc3BlY2lmaWVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgb2YgdGhlIHJlY2lwZSBtZXRhZGF0YSBhbmQgY29waWVzIG9mIGZpbGVzIG1hcmtlZAorICAgICAgICAgICAgICAgICAgICBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDX0ZJTEVTX0NIS1NVTSc+PGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXMgY29udGFpbmluZyBsaWNlbnNlIHRleHQpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgcmVsYXRlZCBpbmZvcm1hdGlvbiBvbiBwcm92aWRpbmcgbGljZW5zZSB0ZXh0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZX0xJQ19ESVJTJz48ZmlsZW5hbWU+Q09QWV9MSUNfRElSUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZX0xJQ19NQU5JRkVTVCc+PGZpbGVuYW1lPkNPUFlfTElDX01BTklGRVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwcm92aWRpbmctbGljZW5zZS10ZXh0Jz5Qcm92aWRpbmcgTGljZW5zZSBUZXh0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUxJQ0VOU0VfRkxBR1MnPjxnbG9zc3Rlcm0+TElDRU5TRV9GTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTElDRU5TRV9GTEFHU1tkb2NdID0gIlNwZWNpZmllcyBhZGRpdGlvbmFsIGZsYWdzIGZvciBhIHJlY2lwZSB5b3UgbXVzdCB3aGl0ZWxpc3QgdGhyb3VnaCBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCBpbiBvcmRlciB0byBhbGxvdyB0aGUgcmVjaXBlIHRvIGJlIGJ1aWx0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgZmxhZ3MgZm9yIGEgcmVjaXBlIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFX0ZMQUdTX1dISVRFTElTVCc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGFsbG93IHRoZSByZWNpcGUgdG8gYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gcHJvdmlkaW5nIG11bHRpcGxlIGZsYWdzLCBzZXBhcmF0ZSB0aGVtIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgc3BhY2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhbHVlIGlzIGluZGVwZW5kZW50IG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgaXMgdHlwaWNhbGx5IHVzZWQgdG8gbWFyayByZWNpcGVzIHRoYXQgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSBhZGRpdGlvbmFsIGxpY2Vuc2VzIGluIG9yZGVyIHRvIGJlIHVzZWQgaW4gYQorICAgICAgICAgICAgICAgICAgICBjb21tZXJjaWFsIHByb2R1Y3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxnbG9zc3Rlcm0+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUW2RvY10gPSAiTGlzdHMgbGljZW5zZSBmbGFncyB0aGF0IHdoZW4gc3BlY2lmaWVkIGluIExJQ0VOU0VfRkxBR1Mgd2l0aGluIGEgcmVjaXBlIHNob3VsZCBub3QgcHJldmVudCB0aGF0IHJlY2lwZSBmcm9tIGJlaW5nIGJ1aWx0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgbGljZW5zZSBmbGFncyB0aGF0IHdoZW4gc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFX0ZMQUdTJz48ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSByZWNpcGUgc2hvdWxkIG5vdCBwcmV2ZW50IHRoYXQgcmVjaXBlIGZyb20gYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJhY3RpY2UgaXMgb3RoZXJ3aXNlIGtub3duIGFzICJ3aGl0ZWxpc3RpbmciCisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgZmxhZ3MuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTElDRU5TRV9QQVRIJz48Z2xvc3N0ZXJtPkxJQ0VOU0VfUEFUSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTElDRU5TRV9QQVRIW2RvY10gPSAiUGF0aCB0byBhZGRpdGlvbmFsIGxpY2Vuc2VzIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBhdGggdG8gYWRkaXRpb25hbCBsaWNlbnNlcyB1c2VkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgPGZpbGVuYW1lPkNPTU1PTl9MSUNFTlNFX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIGRlZmluZSB0aGUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgY29tbW9uIGxpY2Vuc2UgdGV4dCB1c2VkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TElDRU5TRV9QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgYWxsb3dzIHlvdSB0byBleHRlbmQgdGhhdAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiB0byBvdGhlciBhcmVhcyB0aGF0IGhhdmUgYWRkaXRpb25hbCBsaWNlbnNlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNFTlNFX1BBVEggKz0gIjxyZXBsYWNlYWJsZT5wYXRoLXRvLWFkZGl0aW9uYWwtY29tbW9uLWxpY2Vuc2VzPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MSU5VWF9LRVJORUxfVFlQRSc+PGdsb3NzdGVybT5MSU5VWF9LRVJORUxfVFlQRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTElOVVhfS0VSTkVMX1RZUEVbZG9jXSA9ICJEZWZpbmVzIHRoZSBrZXJuZWwgdHlwZSB0byBiZSB1c2VkIGluIGFzc2VtYmxpbmcgdGhlIGNvbmZpZ3VyYXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBrZXJuZWwgdHlwZSB0byBiZSB1c2VkIGluIGFzc2VtYmxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBsaW51eC15b2N0byByZWNpcGVzIGRlZmluZSAic3RhbmRhcmQiLCAidGlueSIsIGFuZAorICAgICAgICAgICAgICAgICAgICAicHJlZW1wdC1ydCIga2VybmVsIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsja2VybmVsLXR5cGVzJz5LZXJuZWwgVHlwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGtlcm5lbCB0eXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4sIGl0IGRlZmF1bHRzIHRvCisgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCIuCisgICAgICAgICAgICAgICAgICAgIFRvZ2V0aGVyIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBkZWZpbmVzIHRoZSBzZWFyY2gKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIHVzZWQgYnkgdGhlIGtlcm5lbCB0b29scyB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiB3aXRoaW4gdGhlIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdpdGggd2hpY2ggdG8gYnVpbGQgb3V0IHRoZSBzb3VyY2VzIGFuZCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MSU5VWF9WRVJTSU9OJz48Z2xvc3N0ZXJtPkxJTlVYX1ZFUlNJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExJTlVYX1ZFUlNJT05bZG9jXSA9ICJUaGUgTGludXggdmVyc2lvbiBmcm9tIGtlcm5lbC5vcmcgb24gd2hpY2ggdGhlIExpbnV4IGtlcm5lbCBpbWFnZSBiZWluZyBidWlsdCB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBiYXNlZC4gWW91IGRlZmluZSB0aGlzIHZhcmlhYmxlIGluIHRoZSBrZXJuZWwgcmVjaXBlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IHZlcnNpb24gZnJvbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBMaW51eCBrZXJuZWwgaW1hZ2UgYmVpbmcgYnVpbHQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBkZWZpbmUgdGhpcyB2YXJpYWJsZSBpbiB0aGUga2VybmVsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy40LmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSBmb3VuZCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRlZmluZXMgdGhlIHZhcmlhYmxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJTlVYX1ZFUlNJT04gPz0gIjMuNC4yNCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkxJTlVYX1ZFUlNJT048L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIGRlZmluZSA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTElOVVhfVkVSU0lPTl9FWFRFTlNJT04nPjxnbG9zc3Rlcm0+TElOVVhfVkVSU0lPTl9FWFRFTlNJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OW2RvY10gPSAiQSBzdHJpbmcgZXh0ZW5zaW9uIGNvbXBpbGVkIGludG8gdGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSBMaW51eCBrZXJuZWwgYnVpbHQgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4gWW91IGRlZmluZSB0aGlzIHZhcmlhYmxlIGluIHRoZSBrZXJuZWwgcmVjaXBlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBzdHJpbmcgZXh0ZW5zaW9uIGNvbXBpbGVkIGludG8gdGhlIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG9mIHRoZSBMaW51eCBrZXJuZWwgYnVpbHQgd2l0aCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRlZmluZSB0aGlzIHZhcmlhYmxlIGluIHRoZSBrZXJuZWwgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbCByZWNpcGVzIGFsbCBkZWZpbmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0by0kezxsaW5rIGxpbmtlbmQ9J3Zhci1MSU5VWF9LRVJORUxfVFlQRSc+TElOVVhfS0VSTkVMX1RZUEU8L2xpbms+fSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmluZyB0aGlzIHZhcmlhYmxlIGVzc2VudGlhbGx5IHNldHMgdGhlCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGtlcm5lbCBjb25maWd1cmF0aW9uIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTkZJR19MT0NBTFZFUlNJT048L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdmlzaWJsZQorICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSA8ZmlsZW5hbWU+dW5hbWU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyB0aGUgZXh0ZW5zaW9uIGFzc3VtaW5nIGl0CisgICAgICAgICAgICAgICAgICAgIHdhcyBzZXQgYXMgcHJldmlvdXNseSBzaG93bjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVuYW1lIC1yCisgICAgIDMuNy4wLXJjOC1jdXN0b20KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUxPR19ESVInPjxnbG9zc3Rlcm0+TE9HX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTE9HX0RJUltkb2NdID0gIlNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHRvIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdyaXRlcyBvdmVyYWxsIGxvZyBmaWxlcy4gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzICR7VE1QRElSfS9sb2ciCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHRvIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHdyaXRlcyBvdmVyYWxsIGxvZyBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzIDxmaWxlbmFtZT4ke1RNUERJUn0vbG9nPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbG9ncyBzcGVjaWZpYyB0byBlYWNoIHRhc2ssCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVQnPjxmaWxlbmFtZT5UPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS1tJz48dGl0bGU+TTwvdGl0bGU+CisKKyAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUFDSElORSc+PGdsb3NzdGVybT5NQUNISU5FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNQUNISU5FW2RvY10gPSAiU3BlY2lmaWVzIHRoZSB0YXJnZXQgZGV2aWNlIGZvciB3aGljaCB0aGUgaW1hZ2UgaXMgYnVpbHQuIFlvdSBkZWZpbmUgTUFDSElORSBpbiB0aGUgY29uZi9sb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgdGFyZ2V0IGRldmljZSBmb3Igd2hpY2ggdGhlIGltYWdlIGlzIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBZb3UgZGVmaW5lIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAicWVtdXg4NiIsIHdoaWNoIGlzIGFuIHg4Ni1iYXNlZCBhcmNoaXRlY3R1cmUgbWFjaGluZSB0bworICAgICAgICAgICAgICAgICAgICBiZSBlbXVsYXRlZCB1c2luZyBRRU1VOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkUgPz0gInFlbXV4ODYiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGNvcnJlc3BvbmRzIHRvIGEgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHNhbWUgbmFtZSwgdGhyb3VnaCB3aGljaCBtYWNoaW5lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHdoZW4gPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gInFlbXV4ODYiIHRoZXJlCisgICAgICAgICAgICAgICAgICAgIGV4aXN0cyB0aGUgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+cWVtdXg4Ni5jb25mPC9maWxlbmFtZT4gbWFjaGluZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUsIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IG9mIG1hY2hpbmVzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhcworICAgICAgICAgICAgICAgICAgICBzaGlwcGVkIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID89ICJxZW11YXJtIgorICAgICBNQUNISU5FID89ICJxZW11YXJtNjQiCisgICAgIE1BQ0hJTkUgPz0gInFlbXVtaXBzIgorICAgICBNQUNISU5FID89ICJxZW11bWlwczY0IgorICAgICBNQUNISU5FID89ICJxZW11cHBjIgorICAgICBNQUNISU5FID89ICJxZW11eDg2IgorICAgICBNQUNISU5FID89ICJxZW11eDg2LTY0IgorICAgICBNQUNISU5FID89ICJnZW5lcmljeDg2IgorICAgICBNQUNISU5FID89ICJnZW5lcmljeDg2LTY0IgorICAgICBNQUNISU5FID89ICJiZWFnbGVib25lIgorICAgICBNQUNISU5FID89ICJlZGdlcm91dGVyIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXN0IGZpdmUgYXJlIFlvY3RvIFByb2plY3QgcmVmZXJlbmNlIGhhcmR3YXJlIGJvYXJkcywgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgYXJlIHByb3ZpZGVkIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+QWRkaW5nIGFkZGl0aW9uYWwgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGxheWVycworICAgICAgICAgICAgICAgICAgICAgICAgdG8geW91ciBjb25maWd1cmF0aW9uIGFkZHMgbmV3IHBvc3NpYmxlIHNldHRpbmdzIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUFDSElORV9BUkNIJz48Z2xvc3N0ZXJtPk1BQ0hJTkVfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTUFDSElORV9BUkNIW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBtYWNoaW5lLXNwZWNpZmljIGFyY2hpdGVjdHVyZS4gVGhpcyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBmcm9tIE1BQ0hJTkUgb3IgVFVORV9QS0dBUkNILiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBtYWNoaW5lLXNwZWNpZmljIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9QS0dBUkNIJz48ZmlsZW5hbWU+VFVORV9QS0dBUkNIPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG5vdCBoYW5kLWVkaXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FX0FSQ0g8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTJz48Z2xvc3N0ZXJtPk1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EU1tkb2NdID0gIkEgbGlzdCBvZiByZXF1aXJlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZiB0aGUgaW1hZ2UgYmVpbmcgYnVpbHQuIEJlY2F1c2UgdGhpcyBpcyBhICdtYWNoaW5lLWVzc2VudGlhbCcgdmFyaWFibGUsIHRoZSBsaXN0IG9mIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgcmVxdWlyZWQgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBkZXBlbmRzIG9uIHRoZXNlIHBhY2thZ2VzIGJlaW5nIHByZXNlbnQuCisgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCBiZWNhdXNlIHRoaXMgaXMgYSAibWFjaGluZS1lc3NlbnRpYWwiIHZhcmlhYmxlLCB0aGUgbGlzdCBvZgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LgorICAgICAgICAgICAgICAgICAgICBUaGUgaW1wYWN0IG9mIHRoaXMgdmFyaWFibGUgYWZmZWN0cyBpbWFnZXMgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJvb3Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2ltaWxhciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+TUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlIGltYWdlIGJlaW5nIGJ1aWx0IGhhcyBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgb24gdGhlIHZhcmlhYmxlJ3MgbGlzdCBvZiBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbWFnZSB3aWxsIG5vdCBidWlsZCBpZiBhIGZpbGUgaW4gdGhpcyBsaXN0IGlzIG5vdCBmb3VuZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB0aGUgbWFjaGluZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyByZXF1aXJlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXhhbXBsZS1pbml0PC9maWxlbmFtZT4gdG8gYmUgcnVuIGR1cmluZyBib290IHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3b3VsZCB1c2UgdGhlIGZvbGxvd2luZyBpbiB0aGUgbWFjaGluZSdzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyArPSAiZXhhbXBsZS1pbml0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGdsb3NzdGVybT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgcmVjb21tZW5kZWQgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBCZWNhdXNlIHRoaXMgaXMgYSAnbWFjaGluZS1lc3NlbnRpYWwnIHZhcmlhYmxlLCB0aGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlY29tbWVuZGVkIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgZG9lcyBub3QgZGVwZW5kIG9uIHRoZXNlIHBhY2thZ2VzIGJlaW5nIHByZXNlbnQuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lLWVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBpbXBhY3Qgb2YgdGhpcyB2YXJpYWJsZSBhZmZlY3RzIGltYWdlcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYm9vdDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzaW1pbGFyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTJz5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgaW1hZ2UgYmVpbmcgYnVpbHQgZG9lcyBub3QgaGF2ZSBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgb24gdGhlIHZhcmlhYmxlJ3MgbGlzdCBvZiBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbWFnZSB3aWxsIHN0aWxsIGJ1aWxkIGlmIGEgcGFja2FnZSBpbiB0aGlzIGxpc3QgaXMgbm90IGZvdW5kLgorICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB0byBoYW5kbGUgZXNzZW50aWFsIGtlcm5lbCBtb2R1bGVzLCB3aG9zZQorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IG1heSBiZSBzZWxlY3RlZCB0byBiZSBidWlsdCBpbnRvIHRoZSBrZXJuZWwgcmF0aGVyIHRoYW4gYXMgYSBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIGNhc2UgYSBwYWNrYWdlIHdpbGwgbm90IGJlIHByb2R1Y2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb25zaWRlciBhbiBleGFtcGxlIHdoZXJlIHlvdSBoYXZlIGEgY3VzdG9tIGtlcm5lbCB3aGVyZSBhIHNwZWNpZmljIHRvdWNoc2NyZWVuCisgICAgICAgICAgICAgICAgICAgIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgdGhlIG1hY2hpbmUgdG8gYmUgdXNhYmxlLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZHJpdmVyIGNhbiBiZSBidWlsdCBhcyBhIG1vZHVsZSBvcgorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBrZXJuZWwgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGRyaXZlciBpcyBidWlsdCBhcyBhIG1vZHVsZSwgeW91IHdhbnQgaXQgdG8gYmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBCdXQsIHdoZW4gdGhlIGRyaXZlciBpcyBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIHlvdSBzdGlsbCB3YW50IHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCB0byBzdWNjZWVkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHNldHMgdXAgYSAicmVjb21tZW5kcyIgcmVsYXRpb25zaGlwIHNvIHRoYXQgaW4gdGhlIGxhdHRlciBjYXNlLAorICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgd2lsbCBub3QgZmFpbCBkdWUgdG8gdGhlIG1pc3NpbmcgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVG8gYWNjb21wbGlzaCB0aGlzLCBhc3N1bWluZyB0aGUgcGFja2FnZSBmb3IgdGhlIG1vZHVsZSB3YXMgY2FsbGVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtbW9kdWxlLWFiMTIzPC9maWxlbmFtZT4sIHlvdSB3b3VsZCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBpbiB0aGUgbWFjaGluZSdzIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZS1hYjEyMyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLW1vZHVsZS1hYjEyMzwvZmlsZW5hbWU+IHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gZXhwbGljaXRseSBzZXQgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZW5zdXJlIHRoYXQgQml0QmFrZSBkb2VzIG5vdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFU19EWU5BTUlDJz48ZmlsZW5hbWU+UEFDS0FHRVNfRFlOQU1JQzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gc2F0aXNmeSB0aGUgZGVwZW5kZW5jeS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTb21lIGV4YW1wbGVzIG9mIHRoZXNlIG1hY2hpbmUgZXNzZW50aWFscyBhcmUgZmxhc2gsIHNjcmVlbiwga2V5Ym9hcmQsIG1vdXNlLAorICAgICAgICAgICAgICAgICAgICBvciB0b3VjaHNjcmVlbiBkcml2ZXJzIChkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VYVFJBX1JERVBFTkRTJz48Z2xvc3N0ZXJtPk1BQ0hJTkVfRVhUUkFfUkRFUEVORFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE1BQ0hJTkVfRVhUUkFfUkRFUEVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0IHRoYXQgYXJlIG5vdCBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuIEhvd2V2ZXIsIHRoZSBidWlsZCBwcm9jZXNzIGZvciBtb3JlIGZ1bGx5LWZlYXR1cmVkIGltYWdlcyBkZXBlbmRzIG9uIHRoZSBwYWNrYWdlcyBiZWluZyBwcmVzZW50LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBpbWFnZSBiZWluZyBidWlsdCB0aGF0IGFyZSBub3QgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgbW9yZSBmdWxseS1mZWF0dXJlZCBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgcGFja2FnZXMgYmVpbmcgcHJlc2VudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhZmZlY3RzIGFsbCBpbWFnZXMgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1iYXNlPC9maWxlbmFtZT4sIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbWFnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyBzaW1pbGFyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMnPk1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlIGltYWdlIGJlaW5nIGJ1aWx0IGhhcyBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgb24gdGhlIHZhcmlhYmxlJ3MgbGlzdCBvZiBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbWFnZSB3aWxsIG5vdCBidWlsZCBpZiBhIGZpbGUgaW4gdGhpcyBsaXN0IGlzIG5vdCBmb3VuZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSBpcyBhIG1hY2hpbmUgdGhhdCBoYXMgV2lGaSBjYXBhYmlsaXR5IGJ1dCBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290IHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBidWlsZGluZyBhIG1vcmUgZnVsbHktZmVhdHVyZWQgaW1hZ2UsIHlvdSB3YW50IHRvIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICB0aGUgV2lGaS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgZmlybXdhcmUgZm9yIHRoZSBXaUZpIGhhcmR3YXJlIGlzIGFsd2F5cworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCB0byBleGlzdCwgc28gaXQgaXMgYWNjZXB0YWJsZSBmb3IgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gZGVwZW5kIHVwb24KKyAgICAgICAgICAgICAgICAgICAgZmluZGluZyB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhc3N1bWluZyB0aGUgcGFja2FnZSBmb3IgdGhlIGZpcm13YXJlIHdhcyBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpZmlkcml2ZXItZmlybXdhcmU8L2ZpbGVuYW1lPiwgeW91IHdvdWxkIHVzZSB0aGUgZm9sbG93aW5nIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvciB0aGUgbWFjaGluZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FX0VYVFJBX1JERVBFTkRTICs9ICJ3aWZpZHJpdmVyLWZpcm13YXJlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTJz48Z2xvc3N0ZXJtPk1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0IHRoYXQgYXJlIG5vdCBlc3NlbnRpYWwgZm9yIGJvb3RpbmcgdGhlIG1hY2hpbmUuIFRoZSBpbWFnZSBiZWluZyBidWlsdCBoYXMgbm8gYnVpbGQgZGVwZW5kZW5jaWVzIG9uIHRoZSBwYWNrYWdlcyBpbiB0aGlzIGxpc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGltYWdlIGJlaW5nIGJ1aWx0IHRoYXQgYXJlIG5vdCBlc3NlbnRpYWwgZm9yIGJvb3RpbmcgdGhlIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBpbWFnZSBiZWluZyBidWlsdCBoYXMgbm8gYnVpbGQgZGVwZW5kZW5jeSBvbiB0aGlzIGxpc3Qgb2YgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWZmZWN0cyBvbmx5IGltYWdlcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWJhc2U8L2ZpbGVuYW1lPiwgd2hpY2ggZG9lcyBub3QgaW5jbHVkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5jb3JlLWltYWdlLWZ1bGwtY21kbGluZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGltYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzaW1pbGFyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRVhUUkFfUkRFUEVORFMnPk1BQ0hJTkVfRVhUUkFfUkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlIGltYWdlIGJlaW5nIGJ1aWx0IGRvZXMgbm90IGhhdmUgYSBidWlsZAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IG9uIHRoZSB2YXJpYWJsZSdzIGxpc3Qgb2YgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgaW1hZ2Ugd2lsbCBidWlsZCBpZiBhIGZpbGUgaW4gdGhpcyBsaXN0IGlzIG5vdCBmb3VuZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSBpcyBhIG1hY2hpbmUgdGhhdCBoYXMgV2lGaSBjYXBhYmlsaXR5IGJ1dCBpcyBub3QgZXNzZW50aWFsCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgbWFjaGluZSB0byBib290IHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBidWlsZGluZyBhIG1vcmUgZnVsbHktZmVhdHVyZWQgaW1hZ2UsIHlvdSB3YW50IHRvIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICBXaUZpLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIFdpRmkga2VybmVsIG1vZHVsZSB3aWxsIG5vdCBiZSBwcm9kdWNlZAorICAgICAgICAgICAgICAgICAgICBpZiB0aGUgV2lGaSBkcml2ZXIgaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCBpbiB3aGljaCBjYXNlIHlvdSBzdGlsbCB3YW50IHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCB0byBzdWNjZWVkIGluc3RlYWQgb2YgZmFpbGluZyBhcyBhIHJlc3VsdCBvZiB0aGUgcGFja2FnZSBub3QgYmVpbmcgZm91bmQuCisgICAgICAgICAgICAgICAgICAgIFRvIGFjY29tcGxpc2ggdGhpcywgYXNzdW1pbmcgdGhlIHBhY2thZ2UgZm9yIHRoZSBtb2R1bGUgd2FzIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLW1vZHVsZS1leGFtcGxld2lmaTwvZmlsZW5hbWU+LCB5b3Ugd291bGQgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaW4gdGhlIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGZpbGUgZm9yIHRoZSBtYWNoaW5lOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGUtZXhhbXBsZXdpZmkiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxnbG9zc3Rlcm0+TUFDSElORV9GRUFUVVJFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTUFDSElORV9GRUFUVVJFU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlzdCBvZiBoYXJkd2FyZSBmZWF0dXJlcyB0aGUgTUFDSElORSBzdXBwb3J0cy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGlzdCBvZiBoYXJkd2FyZSBmZWF0dXJlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+IGlzIGNhcGFibGUKKyAgICAgICAgICAgICAgICAgICAgb2Ygc3VwcG9ydGluZy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHJlbGF0ZWQgaW5mb3JtYXRpb24gb24gZW5hYmxpbmcgZmVhdHVyZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPTUJJTkVEX0ZFQVRVUkVTJz48ZmlsZW5hbWU+Q09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgaGFyZHdhcmUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IGFzIHNoaXBwZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1tYWNoaW5lJz5NYWNoaW5lIEZlYXR1cmVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUFDSElORV9GRUFUVVJFU19CQUNLRklMTCc+PGdsb3NzdGVybT5NQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMW2RvY10gPSAiRmVhdHVyZXMgdG8gYmUgYWRkZWQgdG8gTUFDSElORV9GRUFUVVJFUyBpZiBub3QgYWxzbyBwcmVzZW50IGluIE1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRC4gVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIG1ldGEvY29uZi9iaXRiYWtlLmNvbmYgZmlsZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMgdG8gYmUgYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0ZFQVRVUkVTJz5NQUNISU5FX0ZFQVRVUkVTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhbHNvIHByZXNlbnQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQnPk1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRDwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGp1c3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSB0byBzZWUgd2hpY2ggbWFjaGluZSBmZWF0dXJlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgYmVpbmcgYmFja2ZpbGxlZCBmb3IgYWxsIG1hY2hpbmUgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEJz48Z2xvc3N0ZXJtPk1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEW2RvY10gPSAiRmVhdHVyZXMgZnJvbSBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMIHRoYXQgc2hvdWxkIG5vdCBiZSBiYWNrZmlsbGVkIChpLmUuIGFkZGVkIHRvIE1BQ0hJTkVfRkVBVFVSRVMpIGR1cmluZyB0aGUgYnVpbGQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBGZWF0dXJlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFU19CQUNLRklMTCc+TUFDSElORV9GRUFUVVJFU19CQUNLRklMTDwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBub3QgYmUgYmFja2ZpbGxlZCAoaS5lLiBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVMnPk1BQ0hJTkVfRkVBVFVSRVM8L2xpbms+PC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUFDSElORU9WRVJSSURFUyc+PGdsb3NzdGVybT5NQUNISU5FT1ZFUlJJREVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNQUNISU5FT1ZFUlJJREVTW2RvY10gPSAiQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvdmVycmlkZXMgdGhhdCBhcHBseSB0byB0aGUgY3VycmVudCBtYWNoaW5lLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvdmVycmlkZXMgdGhhdCBhcHBseSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGxpc3QgaW5jbHVkZXMgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBleHRlbmQgPGZpbGVuYW1lPk1BQ0hJTkVPVkVSUklERVM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBhZGQgZXh0cmEgb3ZlcnJpZGVzIHRoYXQgc2hvdWxkIGFwcGx5IHRvIGEgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFsbCBtYWNoaW5lcyBlbXVsYXRlZCBpbiBRRU1VIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkgaW5jbHVkZSBhIGZpbGUgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0aGF0IHByZXBlbmRzIHRoZSBmb2xsb3dpbmcgb3ZlcnJpZGUgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkVPVkVSUklERVM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FT1ZFUlJJREVTID0uICJxZW11YWxsOiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIG92ZXJyaWRlIGFsbG93cyB2YXJpYWJsZXMgdG8gYmUgb3ZlcnJpZGVuIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMgZW11bGF0ZWQgaW4gUUVNVSwgbGlrZSBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgPGZpbGVuYW1lPmNvbm5tYW4tY29uZjwvZmlsZW5hbWU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gImZpbGU6Ly93aXJlZC5jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXJlZC1zZXR1cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVuZGVybHlpbmcgbWVjaGFuaXNtIGJlaGluZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORU9WRVJSSURFUzwvZmlsZW5hbWU+IGlzIHNpbXBseSB0aGF0IGl0IGlzCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUFJTlRBSU5FUic+PGdsb3NzdGVybT5NQUlOVEFJTkVSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNQUlOVEFJTkVSW2RvY10gPSAiVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGRpc3RyaWJ1dGlvbiBtYWludGFpbmVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGRpc3RyaWJ1dGlvbiBtYWludGFpbmVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU1JUlJPUlMnPjxnbG9zc3Rlcm0+TUlSUk9SUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTUlSUk9SU1tkb2NdID0gIlNwZWNpZmllcyBhZGRpdGlvbmFsIHBhdGhzIGZyb20gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZ2V0cyBzb3VyY2UgY29kZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIHBhdGhzIGZyb20gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gZ2V0cyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgYnVpbGQgc3lzdGVtIHNlYXJjaGVzIGZvciBzb3VyY2UgY29kZSwgaXQgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgdHJpZXMgdGhlIGxvY2FsIGRvd25sb2FkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhhdCBsb2NhdGlvbiBmYWlscywgdGhlIGJ1aWxkIHN5c3RlbSB0cmllcyBsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSBzb3VyY2UsIGFuZCB0aGVuIGxvY2F0aW9ucyBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1JUlJPUlM8L2ZpbGVuYW1lPiBpbiB0aGF0IG9yZGVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3VyIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgaXMgInBva3kiLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1JUlJPUlM8L2ZpbGVuYW1lPiBpcyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vcG9reS5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU1MUFJFRklYJz48Z2xvc3N0ZXJtPk1MUFJFRklYPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNTFBSRUZJWFtkb2NdID0gIlNwZWNpZmllcyBhIHByZWZpeCBoYXMgYmVlbiBhZGRlZCB0byBQTiB0byBjcmVhdGUgYSBzcGVjaWFsIHZlcnNpb24gb2YgYSByZWNpcGUgb3IgcGFja2FnZSAoaS5lLiBhIE11bHRpbGliIHZlcnNpb24pLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgcHJlZml4IGhhcyBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+IHRvIGNyZWF0ZSBhIHNwZWNpYWwgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBvZiBhIHJlY2lwZSBvciBwYWNrYWdlIChpLmUuIGEgTXVsdGlsaWIgdmVyc2lvbikuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyB1c2VkIGluIHBsYWNlcyB3aGVyZSB0aGUgcHJlZml4IG5lZWRzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSBhIHRoZSBuYW1lIChlLmcuIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlKS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1MUFJFRklYPC9maWxlbmFtZT4gZ2V0cyBzZXQgd2hlbiBhIHByZWZpeCBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIk1MIiBpbiA8ZmlsZW5hbWU+TUxQUkVGSVg8L2ZpbGVuYW1lPiBzdGFuZHMgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAiTXVsdGlMaWIiLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiBpcyBoaXN0b3JpY2FsIGFuZCBjb21lcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICBhIHRpbWUgd2hlbiA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gd2FzIGEgc3VmZml4CisgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIHByZWZpeCBvbiB0aGUgcmVjaXBlIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiB3YXMgdHVybmVkIGludG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBpdCBtYWRlIHNlbnNlIHRvIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1MUFJFRklYPC9maWxlbmFtZT4gZm9yIGl0IGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaGVscCB1bmRlcnN0YW5kIHdoZW4gPGZpbGVuYW1lPk1MUFJFRklYPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgbWlnaHQgYmUgbmVlZGVkLCBjb25zaWRlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQkNMQVNTRVhURU5EJz48ZmlsZW5hbWU+QkJDTEFTU0VYVEVORDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIHByb3ZpZGUgYSA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBvZiBhIHJlY2lwZSBpbiBhZGRpdGlvbiB0byB0aGUgdGFyZ2V0IHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIElmIHRoYXQgcmVjaXBlIGRlY2xhcmVzIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIG9uIHRhc2tzIGluCisgICAgICAgICAgICAgICAgICAgIG90aGVyIHJlY2lwZXMgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICB0aGVuIGEgZGVwZW5kZW5jeSBvbiAiZm9vIiB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IHJld3JpdHRlbgorICAgICAgICAgICAgICAgICAgICB0byBhIGRlcGVuZGVuY3kgb24gIm5hdGl2ZXNkay1mb28iLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBkZXBlbmRlbmNpZXMgbGlrZSB0aGUgZm9sbG93aW5nIHdpbGwgbm90IGdldAorICAgICAgICAgICAgICAgICAgICByZXdyaXR0ZW4gYXV0b21hdGljYWxseToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19mb29bZGVwZW5kc10gKz0gIjxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPjpkb19mb28iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgc3VjaCBhIGRlcGVuZGVuY3kgdG8gYWxzbyBnZXQgdHJhbnNmb3JtZWQsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19mb29bZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9PHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+OmRvX2ZvbyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLW1vZHVsZV9hdXRvbG9hZCc+PGdsb3NzdGVybT5tb2R1bGVfYXV0b2xvYWQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIG1vZHVsZV9hdXRvbG9hZFtkb2NdID0gIlRoaXMgdmFyaWFibGUgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIEtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgdmFyaWFibGUuIFlvdSBzaG91bGQgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgbW9kdWxlX2F1dG9sb2FkIHdpdGggYWRkaXRpb25zIHRvIEtFUk5FTF9NT0RVTEVfQVVUT0xPQUQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9BVVRPTE9BRDwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tb2R1bGVfYXV0b2xvYWQ8L2ZpbGVuYW1lPiB3aXRoIGFkZGl0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9BVVRPTE9BRDwvZmlsZW5hbWU+LCBmb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtb2R1bGVfYXV0b2xvYWRfcmZjb21tID0gInJmY29tbSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBzaG91bGQgbm93IGJlIHJlcGxhY2VkIHdpdGg6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAicmZjb21tIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQnPjxmaWxlbmFtZT5LRVJORUxfTU9EVUxFX0FVVE9MT0FEPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLW1vZHVsZV9jb25mJz48Z2xvc3N0ZXJtPm1vZHVsZV9jb25mPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBtb2R1bGVfY29uZltkb2NdID0gIlNwZWNpZmllcyBtb2Rwcm9iZS5kIHN5bnRheCBsaW5lcyBmb3IgaW5jbHVzaW9uIGluIHRoZSAvZXRjL21vZHByb2JlLmQvbW9kbmFtZS5jb25mIGZpbGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzUvbW9kcHJvYmUuZCc+PGZpbGVuYW1lPm1vZHByb2JlLmQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN5bnRheCBsaW5lcyBmb3IgaW5jbHVzaW9uIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9tb2Rwcm9iZS5kL21vZG5hbWUuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgYW55d2hlcmUgdGhhdCBpdCBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplZCBieSB0aGUga2VybmVsIHJlY2lwZSBvciBvdXQtb2YtdHJlZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHJlY2lwZSAoZS5nLiBhIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlLCBhCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUsIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCBvciB0aGUgcmVjaXBlIGl0c2VsZikuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgdGhpcyB2YXJpYWJsZSwgeW91IG11c3QgYWxzbyBiZSBzdXJlIHRvIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgdGhlIG1vZHVsZSBuYW1lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX01PRFVMRV9BVVRPTE9BRCc+PGZpbGVuYW1lPktFUk5FTF9NT0RVTEVfQVVUT0xPQUQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGdlbmVyYWwgc3ludGF4OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1vZHVsZV9jb25mXzxyZXBsYWNlYWJsZT5tb2R1bGVfbmFtZTwvcmVwbGFjZWFibGU+ID0gIjxyZXBsYWNlYWJsZT5tb2Rwcm9iZS5kLXN5bnRheDwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHVzZSB0aGUga2VybmVsIG1vZHVsZSBuYW1lIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gPGZpbGVuYW1lPm1hbiBtb2Rwcm9iZS5kPC9maWxlbmFtZT4gaW4gdGhlIHNoZWxsIHRvCisgICAgICAgICAgICAgICAgICAgIGZpbmQgb3V0IG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGV4YWN0IHN5bnRheAorICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCB0byBwcm92aWRlIHdpdGggPGZpbGVuYW1lPm1vZHVsZV9jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluY2x1ZGluZyA8ZmlsZW5hbWU+bW9kdWxlX2NvbmY8L2ZpbGVuYW1lPiBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcG9wdWxhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL21vZHByb2JlLmQvbW9kbmFtZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSB3aXRoIDxmaWxlbmFtZT5tb2Rwcm9iZS5kPC9maWxlbmFtZT4gc3ludGF4IGxpbmVzLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhZGRzIHRoZSBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcmcxPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5hcmcyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gYSBtb2R1bGUgbmFtZWQgPGZpbGVuYW1lPm15bW9kdWxlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbW9kdWxlX2NvbmZfbXltb2R1bGUgPSAib3B0aW9ucyBteW1vZHVsZSBhcmcxPXZhbDEgYXJnMj12YWwyIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3BlY2lmeSBrZXJuZWwgbW9kdWxlcyB0bworICAgICAgICAgICAgICAgICAgICBhdXRvLWxvYWQgb24gYm9vdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX01PRFVMRV9BVVRPTE9BRCc+PGZpbGVuYW1lPktFUk5FTF9NT0RVTEVfQVVUT0xPQUQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTU9EVUxFX1RBUkJBTExfREVQTE9ZJz48Z2xvc3N0ZXJtPk1PRFVMRV9UQVJCQUxMX0RFUExPWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTU9EVUxFX1RBUkJBTExfREVQTE9ZW2RvY10gPSAiQ29udHJvbHMgY3JlYXRpb24gb2YgdGhlIG1vZHVsZXMtKi50Z3ogZmlsZS4gU2V0IHRoaXMgdmFyaWFibGUgdG8gIjAiIHRvIGRpc2FibGUgY3JlYXRpb24gb2YgdGhpcyBmaWxlLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGtlcm5lbCBtb2R1bGVzIHJlc3VsdGluZyBmcm9tIGEga2VybmVsIGJ1aWxkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgY3JlYXRpb24gb2YgdGhlIDxmaWxlbmFtZT5tb2R1bGVzLSoudGd6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgU2V0IHRoaXMgdmFyaWFibGUgdG8gIjAiIHRvIGRpc2FibGUgY3JlYXRpb24gb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGtlcm5lbCBtb2R1bGVzIHJlc3VsdGluZworICAgICAgICAgICAgICAgICAgICBmcm9tIGEga2VybmVsIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU1PRFVMRV9UQVJCQUxMX0xJTktfTkFNRSc+PGdsb3NzdGVybT5NT0RVTEVfVEFSQkFMTF9MSU5LX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE1PRFVMRV9UQVJCQUxMX0xJTktfTkFNRVtkb2NdID0gIlRoZSBsaW5rIG5hbWUgb2YgdGhlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaW5rIG5hbWUgb2YgdGhlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTU9EVUxFX1RBUkJBTExfTElOS19OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgPGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTU9EVUxFX1RBUkJBTExfTkFNRSc+PGdsb3NzdGVybT5NT0RVTEVfVEFSQkFMTF9OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNT0RVTEVfVEFSQkFMTF9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIG1vZHVsZSB0YXJiYWxsLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIG1vZHVsZSB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNT0RVTEVfVEFSQkFMTF9OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9OQU1FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfQVJUSUZBQ1RfTkFNRSc+PGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlIHNhbWUgZmlsZSwgaGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0FSVElGQUNUX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0ke0lNQUdFX1ZFUlNJT05fU1VGRklYfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworPCEtLQorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU1VTFRJTUFDSF9IT1NUX1NZUyc+PGdsb3NzdGVybT5NVUxUSU1BQ0hfSE9TVF9TWVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE1VTFRJTUFDSF9IT1NUX1NZU1tkb2NdID0gIlNlcGFyYXRlcyBmaWxlcyBmb3IgZGlmZmVyZW50IG1hY2hpbmVzIHN1Y2ggdGhhdCB5b3UgY2FuIGJ1aWxkIGZvciBtdWx0aXBsZSBob3N0IG1hY2hpbmVzIHVzaW5nIHRoZSBzYW1lIG91dHB1dCBkaXJlY3Rvcmllcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CistLT4KKzwhLS0KKyAgICAgICAgICAgICAgICAgICAgU2VydmVzIHRoZSBzYW1lIHB1cnBvc2UgYXMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1VTFRJTUFDSF9UQVJHRVRfU1lTJz48ZmlsZW5hbWU+TVVMVElNQUNIX1RBUkdFVF9TWVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3IgdGhlICJIT1NUIiBzeXN0ZW0sIGluIHNpdHVhdGlvbnMgdGhhdCBpbnZvbHZlIGEKKyAgICAgICAgICAgICAgICAgICAgIkhPU1QiIGFuZCBhICJUQVJHRVQiIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBR0lOR19ESVJfVEFSR0VUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfVEFSR0VUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGlzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7UEFDS0FHRV9BUkNIfSR7SE9TVF9WRU5ET1J9LSR7SE9TVF9PU30KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKy0tPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTVVMVElNQUNIX1RBUkdFVF9TWVMnPjxnbG9zc3Rlcm0+TVVMVElNQUNIX1RBUkdFVF9TWVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE1VTFRJTUFDSF9UQVJHRVRfU1lTW2RvY10gPSAiU2VwYXJhdGVzIGZpbGVzIGZvciBkaWZmZXJlbnQgbWFjaGluZXMgc3VjaCB0aGF0IHlvdSBjYW4gYnVpbGQgZm9yIG11bHRpcGxlIHRhcmdldCBtYWNoaW5lcyB1c2luZyB0aGUgc2FtZSBvdXRwdXQgZGlyZWN0b3JpZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgc3lzdGVtIGZvcgorICAgICAgICAgICAgICAgICAgICB3aGljaCBwYWNrYWdlcyBhcmUgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxsb3dzIG91dHB1dCBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zIHRvIGJlIHB1dCBpbnRvIGRpZmZlcmVudCBzdWJkaXJlY3RvcmllcyBvZiB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGlzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7UEFDS0FHRV9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBjbGFzc2VzIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNyb3NzLWNhbmFkaWFuJz48ZmlsZW5hbWU+Y3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgIG1vZGlmeSB0aGUgPGZpbGVuYW1lPk1VTFRJTUFDSF9UQVJHRVRfU1lTPC9maWxlbmFtZT4gdmFsdWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QJz48ZmlsZW5hbWU+U1RBTVA8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFuIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfRElSX1RBUkdFVCc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX1RBUkdFVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnktbic+PHRpdGxlPk48L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTkFUSVZFTFNCU1RSSU5HJz48Z2xvc3N0ZXJtPk5BVElWRUxTQlNUUklORzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTkFUSVZFTFNCU1RSSU5HW2RvY10gPSAiQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGhvc3QgZGlzdHJpYnV0aW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGhvc3QgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICBTdHJpbmdzIGNvbnNpc3Qgb2YgdGhlIGhvc3QgZGlzdHJpYnV0b3IgSUQKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgdGhlIHJlbGVhc2UsIGFzIHJlcG9ydGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bHNiX3JlbGVhc2U8L2ZpbGVuYW1lPiB0b29sCisgICAgICAgICAgICAgICAgICAgIG9yIGFzIHJlYWQgZnJvbSA8ZmlsZW5hbWU+L2V0Yy9sc2ItcmVsZWFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgd2hlbiBydW5uaW5nIGEgYnVpbGQgb24gVWJ1bnR1IDEyLjEwLCB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgaXMgIlVidW50dS0xMi4xMCIuCisgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgaW5mb3JtYXRpb24gaXMgdW5hYmxlIHRvIGJlIGRldGVybWluZWQsIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICByZXNvbHZlcyB0byAiVW5rbm93biIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBieSBkZWZhdWx0IHRvIGlzb2xhdGUgbmF0aXZlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSBwYWNrYWdlcyBmb3IgZGlmZmVyZW50IGRpc3RyaWJ1dGlvbnMgKGUuZy4gdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgd2l0aCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJpbGl0aWVzKS4KKyAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgdmFyaWFibGUgaXMgY2hlY2tlZCBhZ2FpbnN0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TQU5JVFlfVEVTVEVEX0RJU1RST1MnPjxmaWxlbmFtZT5TQU5JVFlfVEVTVEVEX0RJU1RST1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCB2YXJpYWJsZSBpcyBzZXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk0nPjxnbG9zc3Rlcm0+Tk08L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE5NW2RvY10gPSAiTWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdubScuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ubTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU5PX0dFTkVSSUNfTElDRU5TRSc+PGdsb3NzdGVybT5OT19HRU5FUklDX0xJQ0VOU0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE5PX0dFTkVSSUNfTElDRU5TRVtkb2NdID0gIlVzZWQgdG8gYWxsb3cgY29weWluZyBhIGxpY2Vuc2UgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb21tb24gbGljZW5zZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBdm9pZHMgUUEgZXJyb3JzIHdoZW4geW91IHVzZSBhIG5vbi1jb21tb24sIG5vbi1DTE9TRUQKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZSBpbiBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgZXhpc3QsIHN1Y2ggYXMgdGhlIGxpbnV4LWZpcm13YXJlIHBhY2thZ2UsIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgbWFueSBsaWNlbnNlcyB0aGF0IGFyZSBub3QgaW4gYW55IHdheSBjb21tb24uCisgICAgICAgICAgICAgICAgICAgIEFsc28sIG5ldyBsaWNlbnNlcyBhcmUgYWRkZWQgb2NjYXNpb25hbGx5IHRvIGF2b2lkCisgICAgICAgICAgICAgICAgICAgIGludHJvZHVjaW5nIGEgbG90IG9mIGNvbW1vbiBsaWNlbnNlIGZpbGVzLCB3aGljaCBhcmUgb25seQorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIHRvIGEgc3BlY2lmaWMgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk5PX0dFTkVSSUNfTElDRU5TRTwvZmlsZW5hbWU+IGlzIHVzZWQgdG8gYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgY29weWluZyBhIGxpY2Vuc2UgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb21tb24gbGljZW5zZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gYWRkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5OT19HRU5FUklDX0xJQ0VOU0U8L2ZpbGVuYW1lPiB0byBhIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBOT19HRU5FUklDX0xJQ0VOU0VbPHJlcGxhY2VhYmxlPmxpY2Vuc2VfbmFtZTwvcmVwbGFjZWFibGU+XSA9ICI8cmVwbGFjZWFibGU+bGljZW5zZV9maWxlX2luX2ZldGNoZWRfc291cmNlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0UuQWJpbGlzLnR4dDwvZmlsZW5hbWU+IGZpbGUgYXMgdGhlIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgZmV0Y2hlZCBzb3VyY2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5TRS5BYmlsaXMudHh0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk9fUkVDT01NRU5EQVRJT05TJz48Z2xvc3N0ZXJtPk5PX1JFQ09NTUVOREFUSU9OUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTk9fUkVDT01NRU5EQVRJT05TW2RvY10gPSAiV2hlbiBzZXQgdG8gJzEnLCBubyByZWNvbW1lbmRlZCBwYWNrYWdlcyB3aWxsIGJlIGluc3RhbGxlZC4gU29tZSByZWNvbW1lbmRlZCBwYWNrYWdlcyBtaWdodCBiZSByZXF1aXJlZCBmb3IgY2VydGFpbiBzeXN0ZW0gZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBrZXJuZWwtbW9kdWxlcy4gSXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gYWRkIHBhY2thZ2VzIHRvIElNQUdFX0lOU1RBTEwgYXMgbmVlZGVkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUHJldmVudHMgaW5zdGFsbGF0aW9uIG9mIGFsbCAicmVjb21tZW5kZWQtb25seSIgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFJlY29tbWVuZGVkLW9ubHkgcGFja2FnZXMgYXJlIHBhY2thZ2VzIGluc3RhbGxlZCBvbmx5CisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlKS4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPk5PX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHRvICIxIiB0dXJucyB0aGlzIGZlYXR1cmUgb246CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9fUkVDT01NRU5EQVRJT05TID0gIjEiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBnbG9iYWxseSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciB5b3UgY2FuIGF0dGFjaCBpdCB0bworICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGltYWdlIHJlY2lwZSBieSB1c2luZyB0aGUgcmVjaXBlIG5hbWUgb3ZlcnJpZGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9fUkVDT01NRU5EQVRJT05TX3BuLTxyZXBsYWNlYWJsZT50YXJnZXRfaW1hZ2U8L3JlcGxhY2VhYmxlPiA9ICIxIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHRoYXQgaWYgeW91IGNob29zZSB0byBub3QgaW5zdGFsbAorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB1c2luZyB0aGlzIHZhcmlhYmxlIGFuZCBzb21lIG90aGVyIHBhY2thZ2VzIGFyZQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgb24gdGhlbSAoaS5lLiBsaXN0ZWQgaW4gYSByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSksIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlnbm9yZXMgeW91cgorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGFuZCB3aWxsIGluc3RhbGwgdGhlIHBhY2thZ2VzIHRvIGF2b2lkIGRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcmVjb21tZW5kZWQgcGFja2FnZXMgbWlnaHQgYmUgcmVxdWlyZWQgZm9yIGNlcnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzIGtlcm5lbCBtb2R1bGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdXAgdG8geW91IHRvIGFkZCBwYWNrYWdlcyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGlzIHZhcmlhYmxlIGV4aXN0cyBvbmx5IHdoZW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIElQSyBhbmQgUlBNIHBhY2thZ2luZyBiYWNrZW5kLgorICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGRvZXMgbm90IGV4aXN0IGZvciBERUIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJBRF9SRUNPTU1FTkRBVElPTlMnPjxmaWxlbmFtZT5CQURfUkVDT01NRU5EQVRJT05TPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHJlbGF0ZWQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk9BVVRPUEFDS0FHRURFQlVHJz48Z2xvc3N0ZXJtPk5PQVVUT1BBQ0tBR0VERUJVRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTk9BVVRPUEFDS0FHRURFQlVHW2RvY10gPSAiRGlzYWJsZXMgYXV0byBwYWNrYWdlIGZyb20gc3BsaXR0aW5nIC5kZWJ1ZyBmaWxlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERpc2FibGVzIGF1dG8gcGFja2FnZSBmcm9tIHNwbGl0dGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmRlYnVnPC9maWxlbmFtZT4gZmlsZXMuIElmIGEgcmVjaXBlIHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18ke1BOfS1kYmc8L2ZpbGVuYW1lPiB0byBiZSBzZXQgbWFudWFsbHksCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Tk9BVVRPUEFDS0FHRURFQlVHPC9maWxlbmFtZT4gY2FuIGJlIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgeW91IHRvIGRlZmluZSB0aGUgY29udGVudCBvZiB0aGUgZGVidWcgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCisgICAgIEZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9LyR7UVRfRElSX05BTUV9L1F0LyoiCisgICAgIEZJTEVTXyR7UE59LWRiZyA9ICIvdXNyL3NyYy9kZWJ1Zy8iCisgICAgIEZJTEVTXyR7UVRfQkFTRV9OQU1FfS1kZW1vcy1kb2MgPSAiJHtkb2NkaXJ9LyR7UVRfRElSX05BTUV9L3FjaC9xdC5xY2giCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LW8nPjx0aXRsZT5PPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU9CSkNPUFknPjxnbG9zc3Rlcm0+T0JKQ09QWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgT0JKQ09QWVtkb2NdID0gIk1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnb2JqY29weScuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vYmpjb3B5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItT0JKRFVNUCc+PGdsb3NzdGVybT5PQkpEVU1QPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBPQkpEVU1QW2RvY10gPSAiTWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdvYmpkdW1wJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9iamR1bXA8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFJz48Z2xvc3N0ZXJtPk9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEVbZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSBiaW5jb25maWcuYmJjbGFzcyBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSAic2VkIiBjb21tYW5kLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPjxmaWxlbmFtZT5iaW5jb25maWc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgInNlZCIgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNlZCBjb21tYW5kIGFsdGVycyBhbnkgcGF0aHMgaW4gY29uZmlndXJhdGlvbiBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgaGF2ZSBiZWVuIHNldCB1cCBkdXJpbmcgY29tcGlsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyByZXN1bHRzIGluIGFsbCBwYXRocyBpbiB0aGVzZSBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGNoYW5nZWQgdG8gcG9pbnQgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3Jvb3RzLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBzbyB0aGF0IGFsbCBidWlsZHMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2UgdGhlIHNjcmlwdCB3aWxsIHVzZSB0aGUgY29ycmVjdCBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGNyb3NzIGNvbXBpbGluZyBsYXlvdXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9iaW5jb25maWcuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgZGV0YWlscyBvbiBob3cgdGhpcyBjbGFzcyBhcHBsaWVzIHRoZXNlIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgc2VkIGNvbW1hbmQgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmNvbmZpZzwvZmlsZW5hbWU+IGNsYXNzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPjxmaWxlbmFtZT5iaW5jb25maWcuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1PRV9JTVBPUlRTJz48Z2xvc3N0ZXJtPk9FX0lNUE9SVFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE9FX0lNUE9SVFNbZG9jXSA9ICJBbiBpbnRlcm5hbCB2YXJpYWJsZSB1c2VkIHRvIHRlbGwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hhdCBQeXRob24gbW9kdWxlcyB0byBpbXBvcnQgZm9yIGV2ZXJ5IFB5dGhvbiBmdW5jdGlvbiBydW4gYnkgdGhlIHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFuIGludGVybmFsIHZhcmlhYmxlIHVzZWQgdG8gdGVsbCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB3aGF0IFB5dGhvbiBtb2R1bGVzIHRvIGltcG9ydCBmb3IgZXZlcnkgUHl0aG9uCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1biBieSB0aGUgc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBEbyBub3Qgc2V0IHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1PRV9JTklUX0VOVl9TQ1JJUFQnPjxnbG9zc3Rlcm0+T0VfSU5JVF9FTlZfU0NSSVBUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBPRV9JTklUX0VOVl9TQ1JJUFRbZG9jXSA9ICJUaGUgbmFtZSBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGZvciB0aGUgcHVycG9zZXMgb2Ygc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBwdXJwb3NlcyBvZiBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAib2UtaW5pdC1idWlsZC1lbnYiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgY3VzdG9tIHNjcmlwdCB0byBzZXQgdXAgeW91ciBidWlsZAorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T0VfSU5JVF9FTlZfU0NSSVBUPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gaXRzCisgICAgICAgICAgICAgICAgICAgIG5hbWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItT0VfVEVSTUlOQUwnPjxnbG9zc3Rlcm0+T0VfVEVSTUlOQUw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE9FX1RFUk1JTkFMW2RvY10gPSAiQ29udHJvbHMgaG93IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNwYXducyBpbnRlcmFjdGl2ZSB0ZXJtaW5hbHMgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgaG93IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNwYXducworICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSB0ZXJtaW5hbHMgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIChlLmcuIHVzaW5nIHRoZSBCaXRCYWtlIGNvbW1hbmQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1jIGRldnNoZWxsPC9maWxlbmFtZT4gY29tbWFuZC1saW5lIG9wdGlvbikuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1kZXZzaGVsbCc+VXNpbmcgYSBEZXZlbG9wbWVudCBTaGVsbDwvdWxpbms+IiBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHZhbHVlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRV9URVJNSU5BTDwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGF1dG8KKyAgICAgZ25vbWUKKyAgICAgeGZjZQorICAgICByeHZ0CisgICAgIHNjcmVlbgorICAgICBrb25zb2xlCisgICAgIG5vbmUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU9FUk9PVCc+PGdsb3NzdGVybT5PRVJPT1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIE9FUk9PVFtkb2NdID0gIlRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBzb3VyY2VkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGlzIHNvdXJjZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGEgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGlzIHNjcmlwdCwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRVJPT1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSByZXNvbHZlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIHNjcmlwdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZCwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItT0xERVNUX0tFUk5FTCc+PGdsb3NzdGVybT5PTERFU1RfS0VSTkVMPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBPTERFU1RfS0VSTkVMW2RvY10gPSAiRGVjbGFyZXMgdGhlIG9sZGVzdCB2ZXJzaW9uIG9mIHRoZSBMaW51eCBrZXJuZWwgdGhhdCB0aGUgcHJvZHVjZWQgYmluYXJpZXMgbXVzdCBzdXBwb3J0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRGVjbGFyZXMgdGhlIG9sZGVzdCB2ZXJzaW9uIG9mIHRoZSBMaW51eCBrZXJuZWwgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvZHVjZWQgYmluYXJpZXMgbXVzdCBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHBhc3NlZCBpbnRvIHRoZSBidWlsZCBvZiB0aGUgRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgR05VIEMgTGlicmFyeSAoPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBmb3IgdGhpcyB2YXJpYWJsZSBjb21lcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSB0aGlzIGRlZmF1bHQgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgaW4gYSBjdXN0b20gZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1PVkVSUklERVMnPjxnbG9zc3Rlcm0+T1ZFUlJJREVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBPVkVSUklERVNbZG9jXSA9ICJBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIG92ZXJyaWRlcyB0aGF0IGN1cnJlbnRseSBhcHBseS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2Ygb3ZlcnJpZGVzIHRoYXQgY3VycmVudGx5IGFwcGx5LgorICAgICAgICAgICAgICAgICAgICBPdmVycmlkZXMgYXJlIGEgQml0QmFrZSBtZWNoYW5pc20gdGhhdCBhbGxvd3MgdmFyaWFibGVzIHRvCisgICAgICAgICAgICAgICAgICAgIGJlIHNlbGVjdGl2ZWx5IG92ZXJyaWRkZW4gYXQgdGhlIGVuZCBvZiBwYXJzaW5nLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2V0IG9mIG92ZXJyaWRlcyBpbiA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50cyB0aGUgInN0YXRlIiBkdXJpbmcgYnVpbGRpbmcsIHdoaWNoIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHJlY2lwZSBiZWluZyBidWlsdCwgdGhlIG1hY2hpbmUgZm9yIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGJlaW5nIGJ1aWx0LCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcgImFuLW92ZXJyaWRlIiBhcHBlYXJzIGFzIGFuCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgaW4gdGhlIGNvbG9uLXNlcGFyYXRlZCBsaXN0IGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPiwgdGhlbiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgd2lsbCBvdmVycmlkZSA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgIm92ZXJyaWRkZW4iIGF0IHRoZSBlbmQgb2YgcGFyc2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGT09fYW4tb3ZlcnJpZGUgPSAib3ZlcnJpZGRlbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2NvbmRpdGlvbmFsLXN5bnRheC1vdmVycmlkZXMnPkNvbmRpdGlvbmFsIFN5bnRheCAoT3ZlcnJpZGVzKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBvdmVycmlkZXMgbWVjaGFuaXNtLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgdGhlIHZhbHVlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNMQVNTT1ZFUlJJREUnPjxmaWxlbmFtZT5DTEFTU09WRVJSSURFPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORU9WRVJSSURFUyc+PGZpbGVuYW1lPk1BQ0hJTkVPVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPT1ZFUlJJREVTJz48ZmlsZW5hbWU+RElTVFJPT1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBpbXBvcnRhbnQgb3ZlcnJpZGUgaW5jbHVkZWQgYnkgZGVmYXVsdCBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG4tJHtQTn08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvdmVycmlkZSBhbGxvd3MgdmFyaWFibGVzIHRvIGJlIHNldCBmb3IgYSBzaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHdpdGhpbiBjb25maWd1cmF0aW9uICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGT09fcG4tbXlyZWNpcGUgPSAibXlyZWNpcGUtc3BlY2lmaWMgdmFsdWUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBBbiBlYXN5IHdheSB0byBzZWUgd2hhdCBvdmVycmlkZXMgYXBwbHkgaXMgdG8gc2VhcmNoIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk9WRVJSSURFUzwvZmlsZW5hbWU+IGluIHRoZSBvdXRwdXQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LWRlYnVnZ2luZy12aWV3aW5nLXZhcmlhYmxlLXZhbHVlcyc+Vmlld2luZyBWYXJpYWJsZSBWYWx1ZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktcCc+PHRpdGxlPlA8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUCc+PGdsb3NzdGVybT5QPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQW2RvY10gPSAiVGhlIHJlY2lwZSBuYW1lIGFuZCB2ZXJzaW9uLiBQIGlzIGNvbXByaXNlZCBvZiAke1BOfS0ke1BWfS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgbmFtZSBhbmQgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlA8L2ZpbGVuYW1lPiBpcyBjb21wcmlzZWQgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke1BOfS0ke1BWfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9BRERfTUVUQURBVEEnPjxnbG9zc3Rlcm0+UEFDS0FHRV9BRERfTUVUQURBVEE8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VfQUREX01FVEFEQVRBW2RvY10gPSAiVGhpcyB2YXJpYWJsZSBkZWZpbmVzIGFkZGl0aW9uYWwgbWV0YWRhdGEgdG8gYWRkIHRvIHBhY2thZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgZGVmaW5lcyBhZGRpdGlvbmFsIG1ldGRhdGEgdG8gYWRkIHRvIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgbWF5IGZpbmQgeW91IG5lZWQgdG8gaW5qZWN0IGFkZGl0aW9uYWwgbWV0YWRhdGEgaW50bworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4gVGhpcyB2YXJpYWJsZSBhbGxvd3MgeW91IHRvIGRvIHRoYXQgYnkgc2V0dGluZworICAgICAgICAgICAgICAgICAgICB0aGUgaW5qZWN0ZWQgZGF0YSBhcyB0aGUgdmFsdWUuIE11bHRpcGxlIGZpZWxkcyBjYW4gYmUKKyAgICAgICAgICAgICAgICAgICAgYWRkZWQgYnkgc3BsaXR0aW5nIHRoZSBjb250ZW50IHdpdGggdGhlIGxpdGVyYWwgc2VwYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICJcbiIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzdWZmaXhlcyAnX0lQSycsICdfREVCJywgb3IgJ19SUE0nIGNhbiBiZSBhcHBsaWVkIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZSB0byBkbyBwYWNrYWdlIHR5cGUgc3BlY2lmaWMgc2V0dGluZ3MuIEl0IGNhbgorICAgICAgICAgICAgICAgICAgICBhbHNvIGJlIG1hZGUgcGFja2FnZSBzcGVjaWZpYyBieSB1c2luZyB0aGUgcGFja2FnZSBuYW1lIGFzCisgICAgICAgICAgICAgICAgICAgIGEgc3VmZml4LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgYXBwbHlpbmcgdGhpcyB2YXJpYWJsZSBpbgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2FkZGluZy1jdXN0b20tbWV0YWRhdGEtdG8tcGFja2FnZXMnPkFkZGluZyBjdXN0b20gbWV0YWRhdGEgdG8gcGFja2FnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9BUkNIJz48Z2xvc3N0ZXJtPlBBQ0tBR0VfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9BUkNIW2RvY10gPSAiVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgcmVzdWx0aW5nIHBhY2thZ2Ugb3IgcGFja2FnZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSByZXN1bHRpbmcgcGFja2FnZSBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UVU5FX1BLR0FSQ0gnPjxmaWxlbmFtZT5UVU5FX1BLR0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgdGhlIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX0FSQ0gnPjxmaWxlbmFtZT5CVUlMRF9BUkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0LCBhbmQgIiR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfSIgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3VyIHJlY2lwZSdzIG91dHB1dCBwYWNrYWdlcyBhcmUgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHRhcmdldCBtYWNoaW5lIHJhdGhlciB0aGFuIGdlbmVyYWxseSBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgbWFjaGluZSwgeW91IHNob3VsZCBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+IHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9BUkNIJz48ZmlsZW5hbWU+TUFDSElORV9BUkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9BUkNIUyc+PGdsb3NzdGVybT5QQUNLQUdFX0FSQ0hTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQUNLQUdFX0FSQ0hTW2RvY10gPSAiQSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgaW4gb3JkZXIgb2YgcHJpb3JpdHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBhbmQgc2hvdWxkIG5vdAorICAgICAgICAgICAgICAgICAgICBub3JtYWxseSBiZSBoYW5kLWVkaXRlZC4KKyAgICAgICAgICAgICAgICAgICAgRW50cmllcyBhcmUgc2VwYXJhdGVkIHVzaW5nIHNwYWNlcyBhbmQgbGlzdGVkIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIG9mIHByaW9yaXR5LgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPiBpcyAiYWxsIGFueSBub2FyY2gKKyAgICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFX0VYVFJBX0FSQ0hTfSAke01BQ0hJTkVfQVJDSH0iLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VfQkVGT1JFX1BOJz48Z2xvc3N0ZXJtPlBBQ0tBR0VfQkVGT1JFX1BOPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQUNLQUdFX0JFRk9SRV9QTltkb2NdID0gIkVuYWJsZXMgZWFzaWx5IGFkZGluZyBwYWNrYWdlcyB0byBQQUNLQUdFUyBiZWZvcmUgJHtQTn0gc28gdGhhdCB0aGUgcGFja2FnZXMgY2FuIHBpY2sgdXAgZmlsZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCBwYWNrYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBlYXNpbHkgYWRkaW5nIHBhY2thZ2VzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPlBBQ0tBR0VTPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJlZm9yZSA8ZmlsZW5hbWU+JHs8bGluayBsaW5rZW5kPSd2YXItUE4nPlBOPC9saW5rPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzbyB0aGF0IHRob3NlIGFkZGVkIHBhY2thZ2VzIGNhbiBwaWNrIHVwIGZpbGVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWQgaW4gdGhlIGRlZmF1bHQgcGFja2FnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxnbG9zc3Rlcm0+UEFDS0FHRV9DTEFTU0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQUNLQUdFX0NMQVNTRVNbZG9jXSA9ICJUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgcGFja2FnZSBtYW5hZ2VyIHRvIHVzZSB3aGVuIHBhY2thZ2luZyBkYXRhLiBJdCBpcyBzZXQgaW4gdGhlIGNvbmYvbG9jYWwuY29uZiBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGZvdW5kIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGZvbGRlciBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhY2thZ2UgbWFuYWdlciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1c2VzIHdoZW4gcGFja2FnaW5nIGRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcHJvdmlkZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQ0xBU1NFUyA/PSAicGFja2FnZV9ycG0gcGFja2FnZV9kZWIgcGFja2FnZV9pcGsgcGFja2FnZV90YXIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgaXQgaXMgYSBsZWdhbCBvcHRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VfdGFyPC9maWxlbmFtZT4gY2xhc3MgaGFzIGxpbWl0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgZHVlIHRvIG5vIHN1cHBvcnQgZm9yIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBieSB0aGF0IGJhY2tlbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZWZvcmUsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIG5vdCB1c2UgaXQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIG9ubHkgdGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBsaXN0CisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBwYWNrYWdlIG1hbmFnZXIgd2hlbiBjcmVhdGluZyB5b3VyIGltYWdlIG9yIFNESy4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgcGFja2FnZXMgd2lsbCBiZSBjcmVhdGVkIHVzaW5nIGFueSBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2luZyBjbGFzc2VzIHlvdSBzcGVjaWZ5LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHVzZSB0aGUgZm9sbG93aW5nIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQ0xBU1NFUyA/PSAicGFja2FnZV9pcGsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgSVBLIHBhY2thZ2UgbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICB0byBjcmVhdGUgeW91ciBpbWFnZSBvciBTREsuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBwYWNrYWdpbmcgYW5kIGJ1aWxkIHBlcmZvcm1hbmNlIGVmZmVjdHMKKyAgICAgICAgICAgICAgICAgICAgYXMgYSByZXN1bHQgb2YgdGhlIHBhY2thZ2UgbWFuYWdlciBpbiB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRSc+PGdsb3NzdGVybT5QQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFW2RvY10gPSAiRGV0ZXJtaW5lcyBob3cgdG8gc3BsaXQgdXAgdGhlIGJpbmFyeSBhbmQgZGVidWcgaW5mb3JtYXRpb24gd2hlbiBjcmVhdGluZyAqLWRiZyBwYWNrYWdlcyB0byBiZSB1c2VkIHdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyBob3cgdG8gc3BsaXQgdXAgdGhlIGJpbmFyeSBhbmQgZGVidWcgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgd2hlbiBjcmVhdGluZyA8ZmlsZW5hbWU+Ki1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcyB0byBiZQorICAgICAgICAgICAgICAgICAgICB1c2VkIHdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRTwvZmlsZW5hbWU+IHZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNvbnRyb2wgd2hlcmUgZGVidWcgaW5mb3JtYXRpb24sIHdoaWNoIGNhbiBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIG9yIGV4Y2x1ZGUgc291cmNlIGZpbGVzLCBpcyBzdG9yZWQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5kZWJ1ZyI6IERlYnVnIHN5bWJvbCBmaWxlcyBhcmUgcGxhY2VkIG5leHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgYmluYXJ5IGluIGEgPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9uIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGEgYmluYXJ5IGlzIGluc3RhbGxlZCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9iaW48L2ZpbGVuYW1lPiwgdGhlIGNvcnJlc3BvbmRpbmcgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgZmlsZXMgYXJlIGluc3RhbGxlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vYmluLy5kZWJ1ZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBmaWxlcyBhcmUgcGxhY2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc3JjL2RlYnVnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYnVnLWZpbGUtZGlyZWN0b3J5IjogRGVidWcgc3ltYm9sIGZpbGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlZCB1bmRlciA8ZmlsZW5hbWU+L3Vzci9saWIvZGVidWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQsIGFuZCBzZXBhcmF0ZWQgYnkgdGhlIHBhdGggZnJvbSB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBiaW5hcnkgaXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBhIGJpbmFyeSBpcyBpbnN0YWxsZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2JpbjwvZmlsZW5hbWU+LCB0aGUgY29ycmVzcG9uZGluZyBkZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHMgYXJlIGluc3RhbGxlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYi9kZWJ1Zy9iaW48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgZmlsZXMgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL3NyYy9kZWJ1ZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Zy13aXRob3V0LXNyYyI6IFRoZSBzYW1lIGJlaGF2aW9yIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5kZWJ1ZyIgcHJldmlvdXNseSBkZXNjcmliZWQgd2l0aCB0aGUgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBubyBzb3VyY2UgZmlsZXMgYXJlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYnVnLXdpdGgtc3JjcGtnIjogVGhlIHNhbWUgYmVoYXZpb3IgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLmRlYnVnIiBwcmV2aW91c2x5IGRlc2NyaWJlZCB3aXRoIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFsbCBzb3VyY2UgZmlsZXMgYXJlIHBsYWNlZCBpbiBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiotc3JjPC9maWxlbmFtZT4gcGtnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgZGVidWdnaW5nIHVzaW5nIEdEQiBieSByZWFkaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1nZGItcmVtb3RlZGVidWcnPkRlYnVnZ2luZyBXaXRoIHRoZSBHTlUgUHJvamVjdCBEZWJ1Z2dlciAoR0RCKSBSZW1vdGVseTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWSc+PGdsb3NzdGVybT5QQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9FWENMVURFX0NPTVBMRU1FTlRBUllbZG9jXSA9ICJQcmV2ZW50cyBzcGVjaWZpYyBwYWNrYWdlcyBmcm9tIGJlaW5nIGluc3RhbGxlZCB3aGVuIHlvdSBhcmUgaW5zdGFsbGluZyBjb21wbGVtZW50YXJ5IHBhY2thZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUHJldmVudHMgc3BlY2lmaWMgcGFja2FnZXMgZnJvbSBiZWluZyBpbnN0YWxsZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGluc3RhbGxpbmcgY29tcGxlbWVudGFyeSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgdGhhdCB5b3Ugd2FudCB0byBwcmV2ZW50IGluc3RhbGxpbmcgY2VydGFpbgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB3aGVuIHlvdSBhcmUgaW5zdGFsbGluZyBjb21wbGVtZW50YXJ5IHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byBpbnN0YWxsIDxmaWxlbmFtZT5kZXYtcGtnczwvZmlsZW5hbWU+LCB5b3UgbWlnaHQgbm90IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gaW5zdGFsbCBhbGwgcGFja2FnZXMgZnJvbSBhIHBhcnRpY3VsYXIgbXVsdGlsaWIuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBmaW5kIHlvdXJzZWxmIGluIHRoaXMgc2l0dWF0aW9uLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIG1hdGNoIHRoZSBwYWNrYWdlcyB5b3UKKyAgICAgICAgICAgICAgICAgICAgd2FudCB0byBleGNsdWRlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VfRVhDTFVERSc+PGdsb3NzdGVybT5QQUNLQUdFX0VYQ0xVREU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VfRVhDTFVERVtkb2NdID0gIlBhY2thZ2VzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgaW5zdGFsbGF0aW9uLiBJZiBhIGxpc3RlZCBwYWNrYWdlIGlzIHJlcXVpcmVkLCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyBwYWNrYWdlcyB0aGF0IHNob3VsZCBub3QgYmUgaW5zdGFsbGVkIGludG8gYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfRVhDTFVERSA9ICI8cmVwbGFjZWFibGU+cGFja2FnZV9uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnBhY2thZ2VfbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5wYWNrYWdlX25hbWU8L3JlcGxhY2VhYmxlPiAuLi4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSBnbG9iYWxseSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciB5b3UgY2FuIGF0dGFjaCBpdCB0bworICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGltYWdlIHJlY2lwZSBieSB1c2luZyB0aGUgcmVjaXBlIG5hbWUgb3ZlcnJpZGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9FWENMVURFX3BuLTxyZXBsYWNlYWJsZT50YXJnZXRfaW1hZ2U8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGFja2FnZV9uYW1lPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBub3QgaW5zdGFsbAorICAgICAgICAgICAgICAgICAgICBhIHBhY2thZ2UgdXNpbmcgdGhpcyB2YXJpYWJsZSBhbmQgc29tZSBvdGhlciBwYWNrYWdlIGlzCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBvbiBpdCAoaS5lLiBsaXN0ZWQgaW4gYSByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSksIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBhIGZhdGFsCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgYnVpbGQgc3lzdGVtIGhhbHRzIHRoZSBwcm9jZXNzIHdpdGggYSBmYXRhbAorICAgICAgICAgICAgICAgICAgICBlcnJvciwgeW91IGNhbiB1c2UgdGhlIHZhcmlhYmxlIHdpdGggYW4gaXRlcmF0aXZlCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHByb2Nlc3MgdG8gcmVtb3ZlIHNwZWNpZmljIGNvbXBvbmVudHMgZnJvbSBhCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgdGhpcyB2YXJpYWJsZSBleGlzdHMgb25seSB3aGVuIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBJUEsgYW5kIFJQTSBwYWNrYWdpbmcgYmFja2VuZC4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBkb2VzIG5vdCBleGlzdCBmb3IgREVCLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OT19SRUNPTU1FTkRBVElPTlMnPjxmaWxlbmFtZT5OT19SRUNPTU1FTkRBVElPTlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkFEX1JFQ09NTUVOREFUSU9OUyc+PGZpbGVuYW1lPkJBRF9SRUNPTU1FTkRBVElPTlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGZvciByZWxhdGVkIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VfRVhUUkFfQVJDSFMnPjxnbG9zc3Rlcm0+UEFDS0FHRV9FWFRSQV9BUkNIUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9FWFRSQV9BUkNIU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlzdCBvZiBhcmNoaXRlY3R1cmVzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGV2aWNlIENQVS4gVGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwgd2hlbiB5b3UgYnVpbGQgZm9yIHNldmVyYWwgZGlmZmVyZW50IGRldmljZXMgdGhhdCB1c2UgbWlzY2VsbGFuZW91cyBwcm9jZXNzb3JzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXZpY2UgQ1BVLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHVzZWZ1bCB3aGVuIHlvdSBidWlsZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgZGV2aWNlcyB0aGF0IHVzZQorICAgICAgICAgICAgICAgICAgICBtaXNjZWxsYW5lb3VzIHByb2Nlc3NvcnMgc3VjaCBhcyBYU2NhbGUgYW5kIEFSTTkyNi1FSlMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9GRUVEX0FSQ0hTJz48Z2xvc3N0ZXJtPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9GRUVEX0FSQ0hTW2RvY10gPSAiT3B0aW9uYWxseSBzcGVjaWZpZXMgdXNlci1kZWZpbmVkIHBhY2thZ2UgYXJjaGl0ZWN0dXJlcyB3aGVuIGNvbnN0cnVjdGluZyBwYWNrYWdlIGZlZWQgVVJJcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHkgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIGFyY2hpdGVjdHVyZXMgdXNlZCBhcworICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBwYWNrYWdlIGZlZWQgVVJJcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQsIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0FSQ0hTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgYXBwZW5kZWQgdG8gdGhlIGZpbmFsIHBhY2thZ2UgZmVlZCBVUkksIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGNvbnN0cnVjdGVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9GRUVEX1VSSVMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfVVJJUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEU19BUkNIUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB3aGl0ZWxpc3Qgc3BlY2lmaWMgcGFja2FnZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBuZWVkIHRvIHdoaXRlbGlzdCBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBjb21tb24gY2FzZSwgeW91IGNhbiBvbWl0IHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBPbWl0dGluZyB0aGUgdmFyaWFibGUgcmVzdWx0cyBpbiBhbGwgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lIGJlaW5nIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHJlbW90ZSBwYWNrYWdlIGZlZWRzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUzwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+IHZhcmlhYmxlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFX0ZFRURfVVJJUyA9ICJodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy9yZWxlYXNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcyIKKyAgICAgUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFMgPSAicnBtIHJwbS1kZXYiCisgICAgIFBBQ0tBR0VfRkVFRF9BUkNIUyA9ICJhbGwgY29yZTItNjQiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgR2l2ZW4gdGhlc2Ugc2V0dGluZ3MsIHRoZSByZXN1bHRpbmcgcGFja2FnZSBmZWVkcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy9yZWxlYXNlL3JwbS9hbGwKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvcmVsZWFzZS9ycG0vY29yZTItNjQKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvcmVsZWFzZS9ycG0tZGV2L2FsbAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy9yZWxlYXNlL3JwbS1kZXYvY29yZTItNjQKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0vYWxsCisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3VwZGF0ZXMvcnBtL2NvcmUyLTY0CisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3VwZGF0ZXMvcnBtLWRldi9hbGwKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0tZGV2L2NvcmUyLTY0CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUyc+PGdsb3NzdGVybT5QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFNbZG9jXSA9ICJTcGVjaWZpZXMgYmFzZSBwYXRoIHVzZWQgd2hlbiBjb25zdHJ1Y3RpbmcgcGFja2FnZSBmZWVkIFVSSXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHdoZW4gY29uc3RydWN0aW5nIHBhY2thZ2UgZmVlZAorICAgICAgICAgICAgICAgICAgICBVUklzLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgbWFrZXMgdXAgdGhlIG1pZGRsZSBwb3J0aW9uIG9mIGEgcGFja2FnZSBmZWVkIFVSSSB1c2VkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBwYXRoIGxpZXMgYmV0d2VlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRkVFRF9VUklTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX1VSSVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0ZFRURfQVJDSFMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQVJDSFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGUgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfVVJJUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQVJDSFM8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgYXJlCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9GRUVEX1VSSVMgPSAiaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvcmVsZWFzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3VwZGF0ZXMiCisgICAgIFBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTID0gInJwbSBycG0tZGV2IgorICAgICBQQUNLQUdFX0ZFRURfQVJDSFMgPSAiYWxsIGNvcmUyLTY0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEdpdmVuIHRoZXNlIHNldHRpbmdzLCB0aGUgcmVzdWx0aW5nIHBhY2thZ2UgZmVlZHMgYXJlCisgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvcmVsZWFzZS9ycG0vYWxsCisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3JlbGVhc2UvcnBtL2NvcmUyLTY0CisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3JlbGVhc2UvcnBtLWRldi9hbGwKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvcmVsZWFzZS9ycG0tZGV2L2NvcmUyLTY0CisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3VwZGF0ZXMvcnBtL2FsbAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzL3JwbS9jb3JlMi02NAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzL3JwbS1kZXYvYWxsCisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3VwZGF0ZXMvcnBtLWRldi9jb3JlMi02NAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9GRUVEX1VSSVMnPjxnbG9zc3Rlcm0+UEFDS0FHRV9GRUVEX1VSSVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VfRkVFRF9VUklTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBmcm9udCBwb3J0aW9uIG9mIHRoZSBwYWNrYWdlIGZlZWQgVVJJIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZyb250IHBvcnRpb24gb2YgdGhlIHBhY2thZ2UgZmVlZCBVUkkKKyAgICAgICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgRWFjaCBmaW5hbCBwYWNrYWdlIGZlZWQgVVJJIGlzIGNvbXByaXNlZCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX1VSSVM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9GRUVEX0FSQ0hTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0FSQ0hTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIHdoZXJlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX1VSSVM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0FSQ0hTPC9maWxlbmFtZT4gdmFyaWFibGVzIGFyZQorICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfRkVFRF9VUklTID0gImh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3JlbGVhc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzIgorICAgICBQQUNLQUdFX0ZFRURfQkFTRV9QQVRIUyA9ICJycG0gcnBtLWRldiIKKyAgICAgUEFDS0FHRV9GRUVEX0FSQ0hTID0gImFsbCBjb3JlMi02NCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBHaXZlbiB0aGVzZSBzZXR0aW5ncywgdGhlIHJlc3VsdGluZyBwYWNrYWdlIGZlZWRzIGFyZQorICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3JlbGVhc2UvcnBtL2FsbAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy9yZWxlYXNlL3JwbS9jb3JlMi02NAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy9yZWxlYXNlL3JwbS1kZXYvYWxsCisgICAgIGh0dHBzOi8vZXhhbXBsZS5jb20vcGFja2FnZXJlcG9zL3JlbGVhc2UvcnBtLWRldi9jb3JlMi02NAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzL3JwbS9hbGwKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0vY29yZTItNjQKKyAgICAgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYWNrYWdlcmVwb3MvdXBkYXRlcy9ycG0tZGV2L2FsbAorICAgICBodHRwczovL2V4YW1wbGUuY29tL3BhY2thZ2VyZXBvcy91cGRhdGVzL3JwbS1kZXYvY29yZTItNjQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGdsb3NzdGVybT5QQUNLQUdFX0lOU1RBTEw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VfSU5TVEFMTFtkb2NdID0gIkxpc3Qgb2YgdGhlIHBhY2thZ2VzIHRvIGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4gVGhlIHZhcmlhYmxlIGlzIGdlbmVyYWxseSBub3QgdXNlci1kZWZpbmVkIGFuZCB1c2VzIElNQUdFX0lOU1RBTEwgYXMgcGFydCBvZiB0aGUgbGlzdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHBhc3NlZCB0byB0aGUgcGFja2FnZSBtYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgIGZvciBpbnN0YWxsYXRpb24gaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIHBhY2thZ2UgbWFuYWdlciBjb250cm9scyBhY3R1YWwgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgIG9mIGFsbCBwYWNrYWdlcywgdGhlIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiBpcyBub3QgdGhlIGZpbmFsIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZXMgdGhhdCBhcmUgYWN0dWFsbHkgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGludGVybmFsIHRvIHRoZSBpbWFnZSBjb25zdHJ1Y3Rpb24KKyAgICAgICAgICAgICAgICAgICAgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpbiBnZW5lcmFsLCB5b3Ugc2hvdWxkIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHNwZWNpZnkgcGFja2FnZXMgZm9yIGluc3RhbGxhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGV4Y2VwdGlvbiB0byB0aGlzIGlzIHdoZW4gd29ya2luZyB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbWFnZXMtY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyc+PGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gd29ya2luZyB3aXRoIGFuIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcykKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHVzZSB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZJz48Z2xvc3N0ZXJtPlBBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZW2RvY10gPSAiTGlzdCBvZiBwYWNrYWdlcyBhdHRlbXB0ZWQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gY3JlYXRpbmcgYW4gaW1hZ2UuIElmIGEgbGlzdGVkIHBhY2thZ2UgZmFpbHMgdG8gaW5zdGFsbCwgdGhlIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBlcnJvci4gVGhpcyB2YXJpYWJsZSBpcyBnZW5lcmFsbHkgbm90IHVzZXItZGVmaW5lZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgcGFja2FnZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gYXR0ZW1wdHMgdG8gaW5zdGFsbCB3aGVuIGNyZWF0aW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJZiBhIGxpc3RlZCBwYWNrYWdlIGZhaWxzIHRvIGluc3RhbGwsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgZ2VuZXJhbGx5IG5vdCB1c2VyLWRlZmluZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTJz48Z2xvc3N0ZXJtPlBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgcnVuIHRvIHByZS1wcm9jZXNzIHRoZSBQS0dEIGRpcmVjdG9yeSBwcmlvciB0byBzcGxpdHRpbmcgdGhlIGZpbGVzIG91dCB0byBpbmRpdmlkdWFsIHBhY2thZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgcnVuIHRvIHByZS1wcm9jZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHRCc+PGZpbGVuYW1lPlBLR0Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHByaW9yIHRvIHNwbGl0dGluZyB0aGUgZmlsZXMgb3V0IHRvIGluZGl2aWR1YWwKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRV9XUklURV9ERVBTJz48Z2xvc3N0ZXJtPlBBQ0tBR0VfV1JJVEVfREVQUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRV9XUklURV9ERVBTW2RvY10gPSAiU3BlY2lmaWVzIHBvc3QtaW5zdGFsbGF0aW9uIGFuZCBwcmUtaW5zdGFsbGF0aW9uIHNjcmlwdCBkZXBlbmRlbmNpZXMgb24gbmF0aXZlL2Nyb3NzIHRvb2xzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgZm9yIHBvc3QtaW5zdGFsbGF0aW9uIGFuZAorICAgICAgICAgICAgICAgICAgICBwcmUtaW5zdGFsbGF0aW9uIHNjcmlwdHMgb24gbmF0aXZlL2Nyb3NzIHRvb2xzLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHBvc3QtaW5zdGFsbGF0aW9uIG9yIHByZS1pbnN0YWxsYXRpb24gc2NyaXB0IGNhbgorICAgICAgICAgICAgICAgICAgICBleGVjdXRlIGF0IHJvb3RmcyBjcmVhdGlvbiB0aW1lIHJhdGhlciB0aGFuIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYnV0IGRlcGVuZHMgb24gYSBuYXRpdmUgdG9vbCBpbiBvcmRlciB0byBleGVjdXRlLAorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBsaXN0IHRoZSB0b29scyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9XUklURV9ERVBTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdHMsIHNlZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I25ldy1yZWNpcGUtcG9zdC1pbnN0YWxsYXRpb24tc2NyaXB0cyc+UG9zdC1JbnN0YWxsYXRpb24gU2NyaXB0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQUNLQUdFQ09ORklHJz48Z2xvc3N0ZXJtPlBBQ0tBR0VDT05GSUc8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VDT05GSUdbZG9jXSA9ICJUaGlzIHZhcmlhYmxlIHByb3ZpZGVzIGEgbWVhbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGZlYXR1cmVzIG9mIGEgcmVjaXBlIG9uIGEgcGVyLXJlY2lwZSBiYXNpcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgcHJvdmlkZXMgYSBtZWFucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgb2YgYSByZWNpcGUgb24gYSBwZXItcmVjaXBlIGJhc2lzLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+IGJsb2NrcyBhcmUgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICBpbiByZWNpcGVzIHdoZW4geW91IHNwZWNpZnkgZmVhdHVyZXMgYW5kIHRoZW4gYXJndW1lbnRzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVmaW5lIGZlYXR1cmUgYmVoYXZpb3JzLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBiYXNpYyBibG9jayBzdHJ1Y3R1cmUgKGJyb2tlbiBvdmVyIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgIGxpbmVzIGZvciByZWFkYWJpbGl0eSk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gImYxIGYyIGYzIC4uLiIKKyAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLWRlcHMtZm9yLWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUtZGVwcy1mb3ItZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZS1yZWNvbW1lbmRzLWZvci1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlY29uZmlnLWNvbmZsaWN0cy1mb3ItZjEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgIFBBQ0tBR0VDT05GSUdbZjJdID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gYW5kIHNvIG9uIGFuZCBzbyBvbiAuLi4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpdHNlbGYgc3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHRvIGVuYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoZSBmZWF0dXJlcywgeW91IGNhbiBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mCisgICAgICAgICAgICAgICAgICAgIGVhY2ggZmVhdHVyZSBieSBwcm92aWRpbmcgdXAgdG8gc2l4IG9yZGVyLWRlcGVuZGVudAorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMsIHdoaWNoIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG9taXQgYW55IGFyZ3VtZW50IHlvdSBsaWtlIGJ1dCBtdXN0IHJldGFpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGluZyBjb21tYXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBvcmRlciBpcyBpbXBvcnRhbnQgYW5kIHNwZWNpZmllcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0cmEgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRUNPTkYnPjxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4dHJhIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIDxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGRpdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgYWRkZWQgaWYgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGRpdGlvbmFsIHJ1bnRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIGJlIGFkZGVkIGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkaXRpb25hbCBydW50aW1lIHJlY29tbWVuZGF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBhZGRlZCBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFueSBjb25mbGljdGluZyAodGhhdCBpcywgbXV0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdXNpdmUpIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBmb3IgdGhpcyBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gYmxvY2sgdGFrZW4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnJzdmc8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSB0aGUgZmVhdHVyZSBpcyA8ZmlsZW5hbWU+Z3RrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGhhcyB0aHJlZSBhcmd1bWVudHMgdGhhdCBkZXRlcm1pbmUgdGhlIGZlYXR1cmUncworICAgICAgICAgICAgICAgICAgICBiZWhhdmlvci4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tLXdpdGgtZ3RrMzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3RrKzM8L2ZpbGVuYW1lPiBhcmd1bWVudHMgYXBwbHkgb25seSBpZgorICAgICAgICAgICAgICAgICAgICB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIDxmaWxlbmFtZT4tLXdpdGgtZ3RrMzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGFyZ3VtZW50IGxpc3QgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ndGsrMzwvZmlsZW5hbWU+IGlzIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZCBzYXkgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGluIGFub3RoZXIgbGF5ZXIsIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHNlY29uZCBhcmd1bWVudCA8ZmlsZW5hbWU+LS13aXRob3V0LWd0azM8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzaWMgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBkZXNjcmliZWQgaG9sZHMgdHJ1ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91CisgICAgICAgICAgICAgICAgICAgIGFyZSBjcmVhdGluZyBhIGJsb2NrIG9yIGNoYW5naW5nIGEgYmxvY2suCisgICAgICAgICAgICAgICAgICAgIFdoZW4gY3JlYXRpbmcgYSBibG9jaywgdXNlIHRoZSBzdHJ1Y3R1cmUgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBjaGFuZ2UgYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBibG9jaywgeW91IGNhbiBkbyBzbworICAgICAgICAgICAgICAgICAgICBvbmUgb2YgdHdvIHdheXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFwcGVuZCBmaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGFuIGFwcGVuZCBmaWxlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgbGF5ZXIgYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBlaXRoZXIgY29tcGxldGVseSBvdmVycmlkZSB0aGUgdmFyaWFibGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgUEFDS0FHRUNPTkZJRyA9ICJmNCBmNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIHlvdSBjYW4ganVzdCBhcHBlbmQgdGhlIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiIGY0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBmaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgaWRlbnRpY2FsIHRvIGNoYW5naW5nIHRoZSBibG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggYW4gYXBwZW5kIGZpbGUgZXhjZXB0IHlvdSBlZGl0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5teWRpc3RybzwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIHdpdGggYXBwZW5kIGZpbGVzIHByZXZpb3VzbHkgZGVzY3JpYmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gZWl0aGVyIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRUNPTkZJR19wbi08cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+ID0gImY0IGY1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPciwgeW91IGNhbiBqdXN0IGFtZW5kIHRoZSB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLTxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4gPSAiIGY0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGdsb3NzdGVybT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQUNLQUdFQ09ORklHX0NPTkZBUkdTW2RvY10gPSAiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ2VuZXJhdGVkIGZyb20gdGhlIFBBQ0tBR0VDT05GSUcgc2V0dGluZy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGdlbmVyYXRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ2xhc3NlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY21ha2UnPjxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB1c2UgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPiB0byBwYXNzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gb3B0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBidXQgbm90IGEgY2xhc3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBoYW5kbGVzIHRoZSA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4gdGFzaywgdGhlbgorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPiBhcHByb3ByaWF0ZWx5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VHUk9VUF9ESVNBQkxFX0NPTVBMRU1FTlRBUlknPjxnbG9zc3Rlcm0+UEFDS0FHRUdST1VQX0RJU0FCTEVfQ09NUExFTUVOVEFSWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRUdST1VQX0RJU0FCTEVfQ09NUExFTUVOVEFSWVtkb2NdID0gIlByZXZlbnRzIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiB0aGUgbm9ybWFsIGNvbXBsZW1lbnRhcnkgcGFja2FnZXMgc3VjaCBhcyAtZGV2IGFuZCAtZGJnIGluIGEgcGFja2FnZWdyb3VwIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEZvciByZWNpcGVzIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2Vncm91cCc+PGZpbGVuYW1lPnBhY2thZ2Vncm91cDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgc2V0dGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUdST1VQX0RJU0FCTEVfQ09NUExFTUVOVEFSWTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICIxIiBzcGVjaWZpZXMgdGhhdCB0aGUgbm9ybWFsIGNvbXBsZW1lbnRhcnkgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKSBzaG91bGQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cDwvZmlsZW5hbWU+IHJlY2lwZSwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRVMnPjxnbG9zc3Rlcm0+UEFDS0FHRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VTW2RvY10gPSAiVGhlIGxpc3Qgb2YgcGFja2FnZXMgdGhlIHJlY2lwZSBjcmVhdGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpc3Qgb2YgcGFja2FnZXMgdGhlIHJlY2lwZSBjcmVhdGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7UE59LWRiZyAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZGV2ICR7UE59LWRvYyAke1BOfS1sb2NhbGUgJHtQQUNLQUdFX0JFRk9SRV9QTn0gJHtQTn0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgcGFja2FnaW5nLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgZ29lcyB0aHJvdWdoIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+IGFuZCB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggcGFja2FnZSB0byBhc3NpZ24gZmlsZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIElmIGEgZmlsZSBtYXRjaGVzIHRoZSA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSB0aGFuIG9uZSBwYWNrYWdlIGluIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBpdCB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBlYXJsaWVzdCAobGVmdG1vc3QpIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIGluIHRoZSB2YXJpYWJsZSdzIGxpc3QgdGhhdCBhcmUgZW1wdHkgKGkuZS4gd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgbm9uZSBvZiB0aGUgcGF0dGVybnMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBrZzwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFueSBmaWxlcyBpbnN0YWxsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrKSBhcmUgbm90IGdlbmVyYXRlZCwgdW5sZXNzIGdlbmVyYXRpb24gaXMgZm9yY2VkIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1BTExPV19FTVBUWSc+PGZpbGVuYW1lPkFMTE9XX0VNUFRZPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VTX0RZTkFNSUMnPjxnbG9zc3Rlcm0+UEFDS0FHRVNfRFlOQU1JQzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEFDS0FHRVNfRFlOQU1JQ1tkb2NdID0gIkEgcHJvbWlzZSB0aGF0IHlvdXIgcmVjaXBlIHNhdGlzZmllcyBydW50aW1lIGRlcGVuZGVuY2llcyBmb3Igb3B0aW9uYWwgbW9kdWxlcyB0aGF0IGFyZSBmb3VuZCBpbiBvdGhlciByZWNpcGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBwcm9taXNlIHRoYXQgeW91ciByZWNpcGUgc2F0aXNmaWVzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIGZvciBvcHRpb25hbCBtb2R1bGVzIHRoYXQgYXJlIGZvdW5kIGluIG90aGVyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgYWN0dWFsbHkgc2F0aXNmeSB0aGUgZGVwZW5kZW5jaWVzLCBpdCBvbmx5IHN0YXRlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hvdWxkIGJlIHNhdGlzZmllZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGEgaGFyZCwgcnVudGltZSBkZXBlbmRlbmN5CisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgb2YgYW5vdGhlciBwYWNrYWdlIGlzIHNhdGlzZmllZAorICAgICAgICAgICAgICAgICAgICBhdCBidWlsZCB0aW1lIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGJ1dCBhIHBhY2thZ2Ugd2l0aCB0aGUgbW9kdWxlIG5hbWUgaXMgbmV2ZXIgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgcHJvZHVjZWQsIHRoZW4gdGhlIG90aGVyIHBhY2thZ2Ugd2lsbCBiZSBicm9rZW4uCisgICAgICAgICAgICAgICAgICAgIFRodXMsIGlmIHlvdSBhdHRlbXB0IHRvIGluY2x1ZGUgdGhhdCBwYWNrYWdlIGluIGFuIGltYWdlLAorICAgICAgICAgICAgICAgICAgICB5b3Ugd2lsbCBnZXQgYSBkZXBlbmRlbmN5IGZhaWx1cmUgZnJvbSB0aGUgcGFja2FnaW5nIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCBpZiB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHN1Y2ggYSBzaXR1YXRpb24gY2FuCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGFuZCB0aGUgcGFja2FnZSB0aGF0IGlzIG5vdCBjcmVhdGVkIGlzIHZhbGlkCisgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgdGhlIGRlcGVuZGVuY3kgYmVpbmcgc2F0aXNmaWVkLCB0aGVuIHlvdSBzaG91bGQgdXNlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIChhIHNvZnQgcnVudGltZSBkZXBlbmRlbmN5KSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBob3cgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVNfRFlOQU1JQzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdoZW4geW91IGFyZSBzcGxpdHRpbmcgcGFja2FnZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hhbmRsaW5nLW9wdGlvbmFsLW1vZHVsZS1wYWNrYWdpbmcnPkhhbmRsaW5nIE9wdGlvbmFsIE1vZHVsZSBQYWNrYWdpbmc8L3VsaW5rPiIgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRVNQTElURlVOQ1MnPjxnbG9zc3Rlcm0+UEFDS0FHRVNQTElURlVOQ1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBQ0tBR0VTUExJVEZVTkNTW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgcnVuIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBzcGxpdHRpbmcgb2YgZmlsZXMgaW50byBpbmRpdmlkdWFsIHBhY2thZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgcnVuIHRvIHBlcmZvcm0gYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBzcGxpdHRpbmcgb2YgZmlsZXMgaW50byBpbmRpdmlkdWFsIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGNhbiBlaXRoZXIgcHJlcGVuZCB0byB0aGlzIHZhcmlhYmxlIG9yIHByZXBlbmQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5wb3B1bGF0ZV9wYWNrYWdlczwvZmlsZW5hbWU+IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBwYWNrYWdlIHNwbGl0dGluZy4KKyAgICAgICAgICAgICAgICAgICAgSW4gZWl0aGVyIGNhc2UsIHRoZSBmdW5jdGlvbiBzaG91bGQgc2V0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+PGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIG90aGVyIHBhY2thZ2luZyB2YXJpYWJsZXMgYXBwcm9wcmlhdGVseSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICBwZXJmb3JtIHRoZSBkZXNpcmVkIHNwbGl0dGluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQVJBTExFTF9NQUtFJz48Z2xvc3N0ZXJtPlBBUkFMTEVMX01BS0U8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBUkFMTEVMX01BS0VbZG9jXSA9ICJTcGVjaWZpZXMgZXh0cmEgb3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIG1ha2UgY29tbWFuZCBkdXJpbmcgdGhlIGNvbXBpbGUgdGFza3MuIFRoaXMgdmFyaWFibGUgaXMgdXN1YWxseSBpbiB0aGUgZm9ybSAtaiB4LCB3aGVyZSB4IHJlcHJlc2VudHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHRocmVhZHMgbWFrZSBjYW4gcnVuLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRXh0cmEgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGluIG9yZGVyIHRvIHNwZWNpZnkgcGFyYWxsZWwgY29tcGlsYXRpb24gb24gdGhlIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXN1YWxseSBpbiB0aGUgZm9ybSAiLWogPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPiIsCisgICAgICAgICAgICAgICAgICAgIHdoZXJlIDxyZXBsYWNlYWJsZT54PC9yZXBsYWNlYWJsZT4gcmVwcmVzZW50cyB0aGUgbWF4aW11bQorICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgcGFyYWxsZWwgdGhyZWFkcyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNhbgorICAgICAgICAgICAgICAgICAgICBydW4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciA8ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmUsIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gbXVzdCBiZSBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FTUFLRSc+PGZpbGVuYW1lPkVYVFJBX09FTUFLRTwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBBbiBlYXN5IHdheSB0byBlbnN1cmUgdGhpcyBpcyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2VfcnVubWFrZTwvZmlsZW5hbWU+IGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgc2V0cyB0aGlzIHZhcmlhYmxlIHRvIGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY29yZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB1c2VzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdCBleHBlcmllbmNlcyBkZXBlbmRlbmN5CisgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXMgZHVyaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIHRoYXQgcmVzdWx0IGluIHJhY2UgY29uZGl0aW9ucywgeW91IGNhbiBjbGVhcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGFzIGEgd29ya2Fyb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZGRyZXNzaW5nIHJhY2UgY29uZGl0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz5EZWJ1Z2dpbmcgUGFyYWxsZWwgTWFrZSBSYWNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHNpbmdsZSBzb2NrZXQgc3lzdGVtcyAoaS5lLiBvbmUgQ1BVKSwgeW91IHNob3VsZCBub3QKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSB0byBvdmVycmlkZSB0aGlzIHZhcmlhYmxlIHRvIGdhaW4gb3B0aW1hbCBwYXJhbGxlbGlzbQorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgaGF2ZSB2ZXJ5IGxhcmdlIHN5c3RlbXMgdGhhdCBlbXBsb3kKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgcGh5c2ljYWwgQ1BVcywgeW91IG1pZ2h0IHdhbnQgdG8gbWFrZSBzdXJlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICBzZXQgaGlnaGVyIHRoYW4gIi1qIDIwIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3BlZWRpbmcgdXAgYnVpbGRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzcGVlZGluZy11cC1hLWJ1aWxkJz5TcGVlZGluZyBVcCBhIEJ1aWxkPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBUkFMTEVMX01BS0VJTlNUJz48Z2xvc3N0ZXJtPlBBUkFMTEVMX01BS0VJTlNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQVJBTExFTF9NQUtFSU5TVFtkb2NdID0gIkV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBtYWtlIGluc3RhbGwgY29tbWFuZCBkdXJpbmcgdGhlIGRvX2luc3RhbGwgdGFzayBpbiBvcmRlciB0byBzcGVjaWZ5IHBhcmFsbGVsIGluc3RhbGxhdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZSBpbnN0YWxsPC9maWxlbmFtZT4gY29tbWFuZCBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGluIG9yZGVyIHRvIHNwZWNpZnkgcGFyYWxsZWwgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlcyBhbmQgQ2F1dGlvbnM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gb3JkZXIgZm9yIDxmaWxlbmFtZT5QQVJBTExFTF9NQUtFSU5TVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0aXZlLCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IG11c3QgYmUgY2FsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRU1BS0UnPjxmaWxlbmFtZT5FWFRSQV9PRU1BS0U8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgQW4gZWFzeSB3YXkgdG8gZW5zdXJlIHRoaXMgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lX3J1bm1ha2U8L2ZpbGVuYW1lPiBmdW5jdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdCBleHBlcmllbmNlcworICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBpc3N1ZXMgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiB0YXNrIHRoYXQgcmVzdWx0IGluCisgICAgICAgICAgICAgICAgICAgICAgICByYWNlIGNvbmRpdGlvbnMsIHlvdSBjYW4gY2xlYXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRUlOU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgYXMgYSB3b3JrYXJvdW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGFkZHJlc3NpbmcgcmFjZSBjb25kaXRpb25zLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGVidWdnaW5nLXBhcmFsbGVsLW1ha2UtcmFjZXMnPkRlYnVnZ2luZyBQYXJhbGxlbCBNYWtlIFJhY2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBVENIUkVTT0xWRSc+PGdsb3NzdGVybT5QQVRDSFJFU09MVkU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBBVENIUkVTT0xWRVtkb2NdID0gIkVuYWJsZSBvciBkaXNhYmxlIGludGVyYWN0aXZlIHBhdGNoIHJlc29sdXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIHRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIGEgcGF0Y2ggZmFpbHMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoaXMgdmFyaWFibGUgdG8gb25lIG9mIHR3byB2YWx1ZXM6ICJub29wIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgInVzZXIiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAibm9vcCIgY2F1c2VzIHRoZSBidWlsZCB0byBzaW1wbHkgZmFpbAorICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbm5vdCBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgICAgICAgICAgYXBwbHkgYSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgdmFsdWUgdG8gInVzZXIiIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvCisgICAgICAgICAgICAgICAgICAgIGxhdW5jaCBhIHNoZWxsIGFuZCBwbGFjZXMgeW91IGluIHRoZSByaWdodCBsb2NhdGlvbiBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFudWFsbHkgcmVzb2x2ZSB0aGUgY29uZmxpY3RzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQVRDSFRPT0wnPjxnbG9zc3Rlcm0+UEFUQ0hUT09MPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQQVRDSFRPT0xbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHV0aWxpdHkgdXNlZCB0byBhcHBseSBwYXRjaGVzIGZvciBhIHJlY2lwZSBkdXJpbmcgZG9fcGF0Y2guIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHV0aWxpdHkgdXNlZCB0byBhcHBseSBwYXRjaGVzIGZvciBhIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBvbmUgb2YgdGhyZWUgdXRpbGl0aWVzOiAicGF0Y2giLCAicXVpbHQiLCBvcgorICAgICAgICAgICAgICAgICAgICAiZ2l0Ii4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdXRpbGl0eSB1c2VkIGlzICJxdWlsdCIgZXhjZXB0IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgcXVpbHQtbmF0aXZlIHJlY2lwZSBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIHF1aWx0IHRvb2wgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGltZSBxdWlsdC1uYXRpdmUgaXMgYmVpbmcgcGF0Y2hlZCwgaXQgdXNlcyAicGF0Y2giLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2lzaCB0byB1c2UgYW4gYWx0ZXJuYXRpdmUgcGF0Y2hpbmcgdG9vbCwgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgcmVjaXBlIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBVENIVE9PTCA9ICJwYXRjaCIKKyAgICAgUEFUQ0hUT09MID0gInF1aWx0IgorICAgICBQQVRDSFRPT0wgPSAiZ2l0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEUnPjxnbG9zc3Rlcm0+UEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBFW2RvY10gPSAiVGhlIGVwb2NoIG9mIHRoZSByZWNpcGUuIFRoZSBkZWZhdWx0IHZhbHVlIGlzICcwJy4gVGhlIGZpZWxkIGlzIHVzZWQgdG8gbWFrZSB1cGdyYWRlcyBwb3NzaWJsZSB3aGVuIHRoZSB2ZXJzaW9uaW5nIHNjaGVtZSBjaGFuZ2VzIGluIHNvbWUgYmFja3dhcmRzIGluY29tcGF0aWJsZSB3YXkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZXBvY2ggb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB2YXJpYWJsZSBpcyB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGlzIHVzZWQgdG8gbWFrZSB1cGdyYWRlcyBwb3NzaWJsZSB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uaW5nIHNjaGVtZSBjaGFuZ2VzIGluIHNvbWUgYmFja3dhcmRzIGluY29tcGF0aWJsZQorICAgICAgICAgICAgICAgICAgICB3YXkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+IGlzIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHRSc+PGZpbGVuYW1lPlBLR0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEYnPjxnbG9zc3Rlcm0+UEY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBGW2RvY10gPSAiU3BlY2lmaWVzIHRoZSByZWNpcGUgb3IgcGFja2FnZSBuYW1lIGFuZCBpbmNsdWRlcyBhbGwgdmVyc2lvbiBhbmQgcmV2aXNpb24gbnVtYmVycy4gVGhpcyB2YXJpYWJsZSBpcyBjb21wcmlzZWQgb2YgJHtQTn0tJHtFWFRFTkRQRX0ke1BWfS0ke1BSfS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcmVjaXBlIG9yIHBhY2thZ2UgbmFtZSBhbmQgaW5jbHVkZXMgYWxsIHZlcnNpb24gYW5kIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgIG51bWJlcnMgKGkuZS4gPGZpbGVuYW1lPmdsaWJjLTIuMTMtcjIwK3N2bnIxNTUwOC88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtNC4yLXIxLzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBjb21wcmlzZWQgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkezxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+UE48L2xpbms+fS0kezxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRFTkRQRSc+RVhURU5EUEU8L2xpbms+fSR7PGxpbmsgbGlua2VuZD0ndmFyLVBWJz5QVjwvbGluaz59LSR7PGxpbmsgbGlua2VuZD0ndmFyLVBSJz5QUjwvbGluaz59CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QSVhCVUZfUEFDS0FHRVMnPjxnbG9zc3Rlcm0+UElYQlVGX1BBQ0tBR0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQSVhCVUZfUEFDS0FHRVNbZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSBwaXhidWZjYWNoZSBjbGFzcywgdGhpcyB2YXJpYWJsZSBpZGVudGlmaWVzIHBhY2thZ2VzIHRoYXQgY29udGFpbiB0aGUgcGl4YnVmIGxvYWRlcnMgdXNlZCB3aXRoIGdkay1waXhidWYuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBpeGJ1ZmNhY2hlJz48ZmlsZW5hbWU+cGl4YnVmY2FjaGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgaWRlbnRpZmllcyBwYWNrYWdlcyB0aGF0IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHBpeGJ1ZiBsb2FkZXJzIHVzZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2RrLXBpeGJ1ZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPnBpeGJ1ZmNhY2hlPC9maWxlbmFtZT4gY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgYXNzdW1lcyB0aGF0IHRoZSBsb2FkZXJzIGFyZSBpbiB0aGUgcmVjaXBlJ3MgbWFpbiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgdmFyaWFibGUgaWYgdGhlIGxvYWRlcnMgeW91IG5lZWQgYXJlIGluIGEgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBvdGhlciB0aGFuIHRoYXQgbWFpbiBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBLRyc+PGdsb3NzdGVybT5QS0c8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBLR1tkb2NdID0gIlRoZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgcGFja2FnZSBjcmVhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiBXaGVuIHlvdSB1c2UgdGhpcyB2YXJpYWJsZSwgeW91IG11c3QgdXNlIGEgcGFja2FnZSBuYW1lIG92ZXJyaWRlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHJlc3VsdGluZyBwYWNrYWdlIGNyZWF0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyB0aGUgPGZpbGVuYW1lPlBLRzwvZmlsZW5hbWU+IHZhcmlhYmxlLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgdXNlIGEgcGFja2FnZSBuYW1lIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kZWJpYW4nPjxmaWxlbmFtZT5kZWJpYW48L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgcmVuYW1lcyB0aGUgb3V0cHV0IHBhY2thZ2UsIGl0IGRvZXMgc28gYnkgc2V0dGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHXzxyZXBsYWNlYWJsZT5wYWNrYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHX0NPTkZJR19QQVRIJz48Z2xvc3N0ZXJtPlBLR19DT05GSUdfUEFUSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEtHX0NPTkZJR19QQVRIW2RvY10gPSAiUGF0aCB0byBwa2ctY29uZmlnIGZpbGVzIGZvciB0aGUgY3VycmVudCBidWlsZCBjb250ZXh0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhdGggdG8gPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPiBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgYnVpbGQgY29udGV4dC4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPiByZWFkcyB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBLR0QnPjxnbG9zc3Rlcm0+UEtHRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUEtHRFtkb2NdID0gIlBvaW50cyB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGZvciBmaWxlcyB0byBiZSBwYWNrYWdlZCBiZWZvcmUgdGhleSBhcmUgc3BsaXQgaW50byBpbmRpdmlkdWFsIHBhY2thZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZm9yIGZpbGVzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VkIGJlZm9yZSB0aGV5IGFyZSBzcGxpdCBpbnRvIGluZGl2aWR1YWwgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGRlZmF1bHRzIHRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJHtXT1JLRElSfS9wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IGNoYW5nZSB0aGlzIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHREFUQV9ESVInPjxnbG9zc3Rlcm0+UEtHREFUQV9ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBLR0RBVEFfRElSW2RvY10gPSAiUG9pbnRzIHRvIGEgc2hhcmVkLCBnbG9iYWwtc3RhdGUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBwYWNrYWdpbmcgcHJvY2Vzcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byBhIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIGR1cmluZyB0aGUgcGFja2FnaW5nIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyB0aGUgcGFja2FnaW5nIHByb2Nlc3MsIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIHBhY2thZ2VzIGRhdGEgZm9yIGVhY2ggcmVjaXBlIGFuZCBpbnN0YWxscyBpdCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVtcG9yYXJ5LCBzaGFyZWQgYXJlYS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgZGVmYXVsdHMgdG8gdGhlIGZvbGxvd2luZywgd2hpY2ggeW91IHNob3VsZAorICAgICAgICAgICAgICAgICAgICBub3QgY2hhbmdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7U1RBR0lOR19ESVJfSE9TVH0vcGtnZGF0YQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlcyBvZiBob3cgdGhpcyBkYXRhIGlzIHVzZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBzaGFyZWQsIGdsb2JhbC1zdGF0ZSBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgIHNlZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBR0lOR19ESVJfSE9TVCc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX0hPU1Q8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHREVTVCc+PGdsb3NzdGVybT5QS0dERVNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQS0dERVNUW2RvY10gPSAiUG9pbnRzIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5IGZvciBmaWxlcyB0byBiZSBwYWNrYWdlZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBzcGxpdCBpbnRvIGluZGl2aWR1YWwgcGFja2FnZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIHBhcmVudCBkaXJlY3RvcnkgZm9yIGZpbGVzIHRvIGJlIHBhY2thZ2VkCisgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgZGVmYXVsdHMgdG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke1dPUktESVJ9L3BhY2thZ2VzLXNwbGl0CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVW5kZXIgdGhpcyBkaXJlY3RvcnksIHRoZSBidWlsZCBzeXN0ZW0gY3JlYXRlcworICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmb3IgZWFjaCBwYWNrYWdlIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IGNoYW5nZSB0aGlzIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHREVTVFdPUksnPjxnbG9zc3Rlcm0+UEtHREVTVFdPUks8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBLR0RFU1RXT1JLW2RvY10gPSAiUG9pbnRzIHRvIGEgdGVtcG9yYXJ5IHdvcmsgYXJlYSB3aGVyZSB0aGUgZG9fcGFja2FnZSB0YXNrIHNhdmVzIHBhY2thZ2UgbWV0YWRhdGEuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gYSB0ZW1wb3Jhcnkgd29yayBhcmVhIHdoZXJlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBzYXZlcyBwYWNrYWdlIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBLR0RFU1RXT1JLPC9maWxlbmFtZT4gbG9jYXRpb24gZGVmYXVsdHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke1dPUktESVJ9L3BrZ2RhdGEKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBEbyBub3QgY2hhbmdlIHRoaXMgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY29waWVzIHRoZSBwYWNrYWdlIG1ldGFkYXRhIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR0RFU1RXT1JLPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdG8gbWFrZSBpdCBhdmFpbGFibGUgZ2xvYmFsbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHRSc+PGdsb3NzdGVybT5QS0dFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQS0dFW2RvY10gPSAiVGhlIGVwb2NoIG9mIHRoZSBwYWNrYWdlKHMpIGJ1aWx0IGJ5IHRoZSByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZXBvY2ggb2YgdGhlIHBhY2thZ2UocykgYnVpbHQgYnkgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPlBLR0U8L2ZpbGVuYW1lPiBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHUic+PGdsb3NzdGVybT5QS0dSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQS0dSW2RvY10gPSAiVGhlIHJldmlzaW9uIG9mIHRoZSBwYWNrYWdlKHMpIGJ1aWx0IGJ5IHRoZSByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHBhY2thZ2UocykgYnVpbHQgYnkgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPlBLR1I8L2ZpbGVuYW1lPiBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEtHVic+PGdsb3NzdGVybT5QS0dWPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQS0dWW2RvY10gPSAiVGhlIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UocykgYnVpbHQgYnkgdGhlIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlKHMpIGJ1aWx0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5QS0dWPC9maWxlbmFtZT4gaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QTic+PGdsb3NzdGVybT5QTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUE5bZG9jXSA9ICJQTiByZWZlcnMgdG8gYSByZWNpcGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZiBhIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcyBpbnB1dCB0byBjcmVhdGUgYSBwYWNrYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gaGF2ZSB0d28gc2VwYXJhdGUgZnVuY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dDogYSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZSBvciBhIHJlc3VsdGluZyBwYWNrYWdlIG5hbWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+IHJlZmVycyB0byBhIHJlY2lwZSBuYW1lIGluIHRoZSBjb250ZXh0IG9mIGEgZmlsZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFzIGlucHV0IHRvIGNyZWF0ZSBhIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIGlzIG5vcm1hbGx5IGV4dHJhY3RlZCBmcm9tIHRoZSByZWNpcGUgZmlsZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHJlY2lwZSBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXhwYXRfMi4wLjEuYmI8L2ZpbGVuYW1lPiwgdGhlbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB3aWxsIGJlICJleHBhdCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSByZWZlcnMgdG8gYSBwYWNrYWdlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIGNyZWF0ZWQgb3IgcHJvZHVjZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIGFwcGxpY2FibGUsIHRoZSA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPiB2YXJpYWJsZSBhbHNvIGNvbnRhaW5zIGFueSBzcGVjaWFsCisgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCBvciBwcmVmaXguCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2luZyA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IHRvIGJ1aWxkIHBhY2thZ2VzIGZvciB0aGUgbmF0aXZlCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+IGlzIDxmaWxlbmFtZT5iYXNoLW5hdGl2ZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IHRvIGJ1aWxkIHBhY2thZ2VzIGZvciB0aGUgdGFyZ2V0IGFuZCBmb3IgTXVsdGlsaWIsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+IHdvdWxkIGJlIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWI2NC1iYXNoPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QTkJMQUNLTElTVCc+PGdsb3NzdGVybT5QTkJMQUNLTElTVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUE5CTEFDS0xJU1RbZG9jXSA9ICJMaXN0cyByZWNpcGVzIHlvdSBkbyBub3Qgd2FudCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBidWlsZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHJlY2lwZXMgeW91IGRvIG5vdCB3YW50IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJsYWNrbGlzdCc+PGZpbGVuYW1lPmJsYWNrbGlzdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggaXMgaW5oZXJpdGVkIGdsb2JhbGx5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBwcmV2ZW50IGEgcmVjaXBlIGZyb20gYmVpbmcgYnVpbHQsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBOQkxBQ0tMSVNUPC9maWxlbmFtZT4gdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHByZXZlbnRzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5teXJlY2lwZTwvZmlsZW5hbWU+IGZyb20gYmVpbmcgYnVpbHQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUE5CTEFDS0xJU1RbbXlyZWNpcGVdID0gIk5vdCBzdXBwb3J0ZWQgYnkgb3VyIG9yZ2FuaXphdGlvbi4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQnPjxnbG9zc3Rlcm0+UE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgaG9zdCBwYXJ0IG9mIHRoZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGhvc3QgcGFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCArPSAiPHJlcGxhY2VhYmxlPmZ1bmN0aW9uPC9yZXBsYWNlYWJsZT47IC4uLiAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gcGFzcyB0aGUgU0RLIHBhdGggdG8gYSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiBhIGZ1bmN0aW9uLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTREtfRElSfTwvZmlsZW5hbWU+LCB3aGljaCBwb2ludHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhcmVudCBkaXJlY3RvcnkgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB3aGVuIGNyZWF0aW5nIFNESyBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19ESVInPjxmaWxlbmFtZT5TREtfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EJz48Z2xvc3N0ZXJtPlBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0YXJnZXQgcGFydCBvZiB0aGUgU0RLLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBjcmVhdGVkIHRoZSB0YXJnZXQgcGFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EICs9ICI8cmVwbGFjZWFibGU+ZnVuY3Rpb248L3JlcGxhY2VhYmxlPjsgLi4uICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBwYXNzIHRoZSBTREsgcGF0aCB0byBhIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgZnVuY3Rpb24sIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1NES19ESVJ9PC9maWxlbmFtZT4sIHdoaWNoIHBvaW50cyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgcGFyZW50IGRpcmVjdG9yeSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHdoZW4gY3JlYXRpbmcgU0RLIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0RJUic+PGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUFInPjxnbG9zc3Rlcm0+UFI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBSW2RvY10gPSAiVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHZhcmlhYmxlIGlzICdyMCcuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHJlY2lwZS4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgInIwIi4KKyAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCByZXZpc2lvbnMgb2YgdGhlIHJlY2lwZSBjb252ZW50aW9uYWxseSBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgInIxIiwgInIyIiwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBXaGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluY3JlYXNlcywgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gaXMgY29udmVudGlvbmFsbHkgcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgdG8gInIwIi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBuZWVkIHRoZSBhaWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IHRvIGtub3cgd2hlbiB0byByZWJ1aWxkIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgdGFzaworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNvdmVydmlldy1jaGVja3N1bXMnPmlucHV0IGNoZWNrc3VtczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWJ1aWxkLXRtcC1zdGFtcHMnPnN0YW1wPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkIHN0YXRlIGNhY2hlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbXMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IHZhcmlhYmxlIHByaW1hcmlseSBiZWNvbWVzCisgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW50IHdoZW4gYSBwYWNrYWdlIG1hbmFnZXIgZHluYW1pY2FsbHkgaW5zdGFsbHMKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgb24gYW4gYWxyZWFkeSBidWlsdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR1InPjxmaWxlbmFtZT5QS0dSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBoZWxwcyB0aGUgcGFja2FnZSBtYW5hZ2VyIGRpc3Rpbmd1aXNoIHdoaWNoIHBhY2thZ2UgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIG1vc3QgcmVjZW50IG9uZSBpbiBjYXNlcyB3aGVyZSBtYW55IHBhY2thZ2VzIGhhdmUgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gKGkuZS4gPGZpbGVuYW1lPlBLR1Y8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIEEgY29tcG9uZW50IGhhdmluZyBtYW55IHBhY2thZ2VzIHdpdGggdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gdXN1YWxseSBtZWFucyB0aGF0IHRoZSBwYWNrYWdlcyBhbGwKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCB0aGUgc2FtZSB1cHN0cmVhbSB2ZXJzaW9uLCBidXQgd2l0aCBsYXRlcgorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4pIHZlcnNpb24gcGFja2FnZXMgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2luZyBmaXhlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBkb2VzIG5vdCBuZWVkIHRvIGJlIGluY3JlYXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNoYW5nZXMgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBwYWNrYWdlIGNvbnRlbnRzIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIG1hbnVhbGx5IG1hbmFnaW5nIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICBjdW1iZXJzb21lIGFuZCBlcnJvci1wcm9uZSwgYW4gYXV0b21hdGVkIHNvbHV0aW9uIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLWEtcHItc2VydmljZSc+V29ya2luZyBXaXRoIGEgUFIgU2VydmljZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxnbG9zc3Rlcm0+UFJFRkVSUkVEX1BST1ZJREVSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQUkVGRVJSRURfUFJPVklERVJbZG9jXSA9ICJJZiBtdWx0aXBsZSByZWNpcGVzIHByb3ZpZGUgYW4gaXRlbSwgdGhpcyB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLCB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hpY2ggcmVjaXBlIGlzIHByZWZlcnJlZCBhbmQgdGh1cyBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICB0aGUgaXRlbSAoaS5lLiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyKS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc3VmZml4IHRoaXMgdmFyaWFibGUgd2l0aCB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgaXRlbS4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCB5b3Ugc2hvdWxkIGRlZmluZSB0aGUgdmFyaWFibGUgdXNpbmcgdGhlIHByZWZlcnJlZAorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBuYW1lCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBjb21tb24gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBtdWx0aXBsZSByZWNpcGVzIGFyZSBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgInZpcnR1YWwva2VybmVsIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICBzZXQgd2l0aCB0aGUgbmFtZSAoPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4pIG9mIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgeW91IHByZWZlciB0byBwcm92aWRlICJ2aXJ0dWFsL2tlcm5lbCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgbW9yZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID0gInhzZXJ2ZXIteGY4NiIKKyAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2wgPz0gIm1lc2EiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhLXZpcnR1YWwtcHJvdmlkZXJzJz5Vc2luZyBWaXJ0dWFsIFByb3ZpZGVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+LCB0aGVuIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGl0ZW0gYnV0IGlzIG5vdCBzZWxlY3RlZCAoZGVmaW5lZCkgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiBpcyBwcmV2ZW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYnVpbGRpbmcsIHdoaWNoIGlzIHVzdWFsbHkgZGVzaXJhYmxlIHNpbmNlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbSBpcyBkZXNpZ25lZCB0byBzZWxlY3QgYmV0d2VlbiBtdXR1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVzaXZlIGFsdGVybmF0aXZlIHByb3ZpZGVycy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBSRUZFUlJFRF9WRVJTSU9OJz48Z2xvc3N0ZXJtPlBSRUZFUlJFRF9WRVJTSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQUkVGRVJSRURfVkVSU0lPTltkb2NdID0gIklmIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiByZWNpcGVzIGF2YWlsYWJsZSwgdGhpcyB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIHJlY2lwZSBzaG91bGQgYmUgZ2l2ZW4gcHJlZmVyZW5jZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHZlcnNpb25zIG9mIHJlY2lwZXMgZXhpc3QsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCB2ZXJzaW9uIGlzIGdpdmVuIHByZWZlcmVuY2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsd2F5cyBzdWZmaXggdGhlIHZhcmlhYmxlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHNlbGVjdCwgYW5kIHlvdSBzaG91bGQgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhY2NvcmRpbmdseSBmb3IgcHJlY2VkZW5jZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGxpbWl0ZWQgd2lsZGNhcmQgdXNlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjaGFyYWN0ZXIgdG8gbWF0Y2ggYW55IG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLCB3aGljaCBjYW4gYmUgdXNlZnVsIHdoZW4gc3BlY2lmeWluZyB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW4gbG9uZyByZXZpc2lvbiBudW1iZXJzIHRoYXQgcG90ZW50aWFsbHkgY2hhbmdlLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0d28gZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uID0gIjMuNC4wIgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA9ICI1LjAlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5JbXBvcnRhbnQ8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVzZSBvZiB0aGUgIjxmaWxlbmFtZT4lPC9maWxlbmFtZT4iIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgbGltaXRlZCBpbiB0aGF0IGl0IG9ubHkgd29ya3MgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgaW4gYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiBvZiB0aGUgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgdmVyc2lvbiBpcyBtYXRjaGVkIGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1hdGNoIHRoZSB2ZXJzaW9uIHBhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSdzIGZpbGVuYW1lLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdHdvIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjIuYmI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb19naXQuYmI8L2ZpbGVuYW1lPiB3aGVyZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vX2dpdC5iYjwvZmlsZW5hbWU+IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQViA9ICIxLjErZ2l0JHtTUkNQVn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29ycmVjdCB3YXkgdG8gc2VsZWN0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fZ2l0LmJiPC9maWxlbmFtZT4gaXMgYnkgdXNpbmcgYW4KKyAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudCBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJFRkVSUkVEX1ZFUlNJT05fZm9vID0gIjEuMStnaXQlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIENvbXBhcmUgdGhhdCBwcmV2aW91cyBleGFtcGxlIGFnYWluc3QgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBpbmNvcnJlY3QgZXhhbXBsZSwgd2hpY2ggZG9lcyBub3Qgd29yazoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9mb28gPSAiZ2l0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB0aGUgPGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgY2FuIGJlIHNldCBieSBjb25maWd1cmF0aW9uIGZpbGVzIGluIGEgd2F5IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgaXMgaGFyZCB0byBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdG8gc2V0IGEgbWFjaGluZS1zcGVjaWZpYyBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXV4ODYgPSAiNS4wJSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCBub3QgcmVjb21tZW5kZWQsIHdvcnN0IGNhc2UsIHlvdSBjYW4gYWxzbyB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICJmb3JjZXZhcmlhYmxlIiBvdmVycmlkZSwgd2hpY2ggaXMgdGhlIHN0cm9uZ2VzdCBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2ZvcmNldmFyaWFibGUgPSAiNS4wJSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+X2ZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBvdmVycmlkZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGhhbmRsZWQgc3BlY2lhbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvdmVycmlkZSBvbmx5IHdvcmtzIGJlY2F1c2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPiBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgImZvcmNldmFyaWFibGUiLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUFJFTUlSUk9SUyc+PGdsb3NzdGVybT5QUkVNSVJST1JTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQUkVNSVJST1JTW2RvY10gPSAiU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgZnJvbSB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZXRzIHNvdXJjZSBjb2RlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgZnJvbSB3aGljaCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBnZXRzIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBidWlsZCBzeXN0ZW0gc2VhcmNoZXMgZm9yIHNvdXJjZSBjb2RlLCBpdCBmaXJzdAorICAgICAgICAgICAgICAgICAgICB0cmllcyB0aGUgbG9jYWwgZG93bmxvYWQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBJZiB0aGF0IGxvY2F0aW9uIGZhaWxzLCB0aGUgYnVpbGQgc3lzdGVtIHRyaWVzIGxvY2F0aW9ucworICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGJ5IDxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT4sIHRoZSB1cHN0cmVhbQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGFuZCB0aGVuIGxvY2F0aW9ucyBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluIHRoYXQgb3JkZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIHlvdXIgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICBpcyAicG9reSIsIHRoZSBkZWZhdWx0IHZhbHVlIGZvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+IGlzIGRlZmluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3Ryby9wb2t5LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IGNvdWxkIGFkZCBhIHNwZWNpZmljIHNlcnZlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBhdHRlbXB0IGJlZm9yZSBhbnkgb3RoZXJzIGJ5IGFkZGluZworICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRU1JUlJPUlNfcHJlcGVuZCA9ICJcCisgICAgIGdpdDovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiBcCisgICAgIGZ0cDovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiBcCisgICAgIGh0dHA6Ly8uKi8uKiBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvc291cmNlcy8gXG4gXAorICAgICBodHRwczovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjaGFuZ2VzIGNhdXNlIHRoZSBidWlsZCBzeXN0ZW0gdG8gaW50ZXJjZXB0CisgICAgICAgICAgICAgICAgICAgIEdpdCwgRlRQLCBIVFRQLCBhbmQgSFRUUFMgcmVxdWVzdHMgYW5kIGRpcmVjdCB0aGVtIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aHR0cDovLzwvZmlsZW5hbWU+IHNvdXJjZXMgbWlycm9yLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+IFVSTHMgdG8gcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gbG9jYWwgZGlyZWN0b3JpZXMgb3IgbmV0d29yayBzaGFyZXMgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QUklPUklUWSc+PGdsb3NzdGVybT5QUklPUklUWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUFJJT1JJVFlbZG9jXSA9ICJJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ29wdGlvbmFsJy4gIE90aGVyIHN0YW5kYXJkIHZhbHVlcyBhcmUgJ3JlcXVpcmVkJywgJ3N0YW5kYXJkJywgYW5kICdleHRyYScuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJJT1JJVFk8L2ZpbGVuYW1lPiBpcyBjb25zaWRlcmVkIHRvIGJlIHBhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbiBwb2xpY3kgYmVjYXVzZSB0aGUgaW1wb3J0YW5jZSBvZiBhbnkgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGRlcGVuZHMgb24gdGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAgaXMgYmVpbmcgcHJvZHVjZWQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIDxmaWxlbmFtZT5QUklPUklUWTwvZmlsZW5hbWU+IGlzIG5vdCBub3JtYWxseSBzZXQKKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IDxmaWxlbmFtZT5QUklPUklUWTwvZmlsZW5hbWU+IHRvICJyZXF1aXJlZCIsCisgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCIsICJleHRyYSIsIGFuZCAib3B0aW9uYWwiLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QUklWQVRFX0xJQlMnPjxnbG9zc3Rlcm0+UFJJVkFURV9MSUJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQUklWQVRFX0xJQlNbZG9jXSA9ICJTcGVjaWZpZXMgbGlicmFyaWVzIGluc3RhbGxlZCB3aXRoaW4gYSByZWNpcGUgdGhhdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSdzIHNoYXJlZCBsaWJyYXJ5IHJlc29sdmVyLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGxpYnJhcmllcyBpbnN0YWxsZWQgd2l0aGluIGEgcmVjaXBlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0ncworICAgICAgICAgICAgICAgICAgICBzaGFyZWQgbGlicmFyeSByZXNvbHZlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIHNvZnR3YXJlIGJlaW5nCisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGJ5IGEgcmVjaXBlIGhhcyBpdHMgb3duIHByaXZhdGUgdmVyc2lvbnMgb2YgYQorICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IG5vcm1hbGx5IHByb3ZpZGVkIGJ5IGFub3RoZXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3b3VsZCBub3Qgd2FudCB0aGUgcGFja2FnZSBjb250YWluaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBwcml2YXRlIGxpYnJhcmllcyB0byBiZSBzZXQgYXMgYSBkZXBlbmRlbmN5IG9uIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHVucmVsYXRlZCBwYWNrYWdlcyB0aGF0IHNob3VsZCBpbnN0ZWFkIGRlcGVuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBwcm92aWRpbmcgdGhlIHN0YW5kYXJkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExpYnJhcmllcyBzcGVjaWZpZWQgaW4gdGhpcyB2YXJpYWJsZSBzaG91bGQgYmUgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZWlyIGZpbGUgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZyb20gdGhlIEZpcmVmb3ggcmVjaXBlIGluIG1ldGEtYnJvd3NlcjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUklWQVRFX0xJQlMgPSAibGlibW96anMuc28gXAorICAgICAgICAgICAgICAgICAgICAgbGlieHBjb20uc28gXAorICAgICAgICAgICAgICAgICAgICAgbGlibnNwcjQuc28gXAorICAgICAgICAgICAgICAgICAgICAgbGlieHVsLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgIGxpYm1vemFsbG9jLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgIGxpYnBsYzQuc28gXAorICAgICAgICAgICAgICAgICAgICAgbGlicGxkczQuc28iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUFJPVklERVMnPjxnbG9zc3Rlcm0+UFJPVklERVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBST1ZJREVTW2RvY10gPSAiQSBsaXN0IG9mIGFsaWFzZXMgdGhhdCBhIHJlY2lwZSBhbHNvIHByb3ZpZGVzLiBUaGVzZSBhbGlhc2VzIGFyZSB1c2VmdWwgZm9yIHNhdGlzZnlpbmcgZGVwZW5kZW5jaWVzIG9mIG90aGVyIHJlY2lwZXMgZHVyaW5nIHRoZSBidWlsZCBhcyBzcGVjaWZpZWQgYnkgREVQRU5EUy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGlhc2VzIGJ5IHdoaWNoIGEgcGFydGljdWxhciByZWNpcGUgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgIGtub3duLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIHJlY2lwZSdzIG93bgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz5QTjwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyBpbXBsaWNpdGx5IGFscmVhZHkgaW4gaXRzIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGxpc3QgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBuZWVkIHRvIG1lbnRpb24gdGhhdCBpdCBwcm92aWRlcyBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgIElmIGEgcmVjaXBlIHVzZXMgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4sIHRoZQorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGFsaWFzZXMgYXJlIHN5bm9ueW1zIGZvciB0aGUgcmVjaXBlIGFuZCBjYW4KKyAgICAgICAgICAgICAgICAgICAgYmUgdXNlZnVsIGZvciBzYXRpc2Z5aW5nIGRlcGVuZGVuY2llcyBvZiBvdGhlciByZWNpcGVzIGR1cmluZworICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+REVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IHN0YXRlbWVudCBmcm9tIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+ZXVkZXZfMy4yLjkuYmI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUk9WSURFUyA9ICJ1ZGV2IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgcmVzdWx0cyBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgImV1ZGV2IiByZWNpcGUgYWxzbyBiZWluZyBhdmFpbGFibGUgYXMgc2ltcGx5ICJ1ZGV2Ii4KKworICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdmVuIHRoYXQgYSByZWNpcGUncyBvd24gcmVjaXBlIG5hbWUgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRseSBpbiBpdHMgb3duIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB1bm5lY2Vzc2FyeSB0byBhZGQgYWxpYXNlcyB3aXRoIHRoZSAiKz0iIG9wZXJhdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSBzaW1wbGUgYXNzaWdubWVudCB3aWxsIGJlIHN1ZmZpY2llbnQuIEluIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkcywgd2hpbGUgeW91IGNvdWxkIHdyaXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUk9WSURFUyArPSAidWRldiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhYm92ZSwgdGhlICIrPSIgaXMgb3ZlcmtpbGwgYW5kIHVubmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHByb3ZpZGluZyByZWNpcGVzIHVuZGVyIGFsdGVybmF0ZSBuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IG1lY2hhbmlzbSBpcyBhbHNvIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gaW1wbGVtZW50IHZpcnR1YWwgdGFyZ2V0cy4KKyAgICAgICAgICAgICAgICAgICAgQSB2aXJ0dWFsIHRhcmdldCBpcyBhIG5hbWUgdGhhdCBjb3JyZXNwb25kcyB0byBzb21lCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSAoZS5nLiBhIExpbnV4IGtlcm5lbCkuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IGluIHF1ZXN0aW9uIGxpc3QgdGhlCisgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdGFyZ2V0IGluIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgZGVwZW5kIG9uIHRoZSBmdW5jdGlvbmFsaXR5IGluIHF1ZXN0aW9uIGNhbgorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHRoZSB2aXJ0dWFsIHRhcmdldCBpbiA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIGxlYXZlIHRoZSBjaG9pY2Ugb2YgcHJvdmlkZXIgb3Blbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29udmVudGlvbmFsbHksIHZpcnR1YWwgdGFyZ2V0cyBoYXZlIG5hbWVzIG9uIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsL2Z1bmN0aW9uIiAoZS5nLiAidmlydHVhbC9rZXJuZWwiKS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNsYXNoIGlzIHNpbXBseSBwYXJ0IG9mIHRoZSBuYW1lIGFuZCBoYXMgbm8KKyAgICAgICAgICAgICAgICAgICAgc3ludGFjdGljYWwgc2lnbmlmaWNhbmNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB1c2VkIHRvIHNlbGVjdCB3aGljaCBwYXJ0aWN1bGFyIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBhIHZpcnR1YWwgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgY29ycmVzcG9uZGluZyBtZWNoYW5pc20gZm9yIHZpcnR1YWwgcnVudGltZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIChwYWNrYWdlcykgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1lY2hhbmlzbSBkb2VzIG5vdCBkZXBlbmQgb24gYW55IHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgYmV5b25kIG9yZGluYXJ5IHZhcmlhYmxlIGFzc2lnbm1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVycyB0byB0aGUgcGFja2FnZSBvZiB0aGUgY29tcG9uZW50IHRoYXQgbWFuYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT4gZGlyZWN0b3J5LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2V0dGluZyB0aGUgInByZWZlcnJlZCBwcm92aWRlciIgZm9yIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpcyBhcyBzaW1wbGUgYXMgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudCBpbiBhIGNvbmZpZ3VyYXRpb24gZmlsZTo8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlciA9ICJ1ZGV2IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUFJTRVJWX0hPU1QnPjxnbG9zc3Rlcm0+UFJTRVJWX0hPU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBSU0VSVl9IT1NUW2RvY10gPSAiVGhlIG5ldHdvcmsgYmFzZWQgUFIgc2VydmljZSBob3N0IGFuZCBwb3J0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5ldHdvcmsgYmFzZWQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgc2VydmljZSBob3N0IGFuZCBwb3J0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHNob3dzIGhvdyB0aGUgPGZpbGVuYW1lPlBSU0VSVl9IT1NUPC9maWxlbmFtZT4gdmFyaWFibGUgaXMKKyAgICAgICAgICAgICAgICAgICAgc2V0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSU0VSVl9IT1NUID0gImxvY2FsaG9zdDowIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGUgdmFyaWFibGUgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICBzdGFydCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC1hLXByLXNlcnZpY2UnPlBSIHNlcnZpY2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgPGZpbGVuYW1lPlBSU0VSVl9IT1NUPC9maWxlbmFtZT4gdG8gb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzIHRvIHVzZSBhIHJlbW90ZSBQUiBzZXJ2aWNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBURVNUX0VOQUJMRUQnPjxnbG9zc3Rlcm0+UFRFU1RfRU5BQkxFRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUFJTRVJWX0hPU1RbZG9jXSA9ICJTcGVjaWZpZXMgd2hldGhlciBvciBub3QgUGFja2FnZSBUZXN0IChwdGVzdCkgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIHdoZW4gYnVpbGRpbmcgYSByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdGVzdGluZy1wYWNrYWdlcy13aXRoLXB0ZXN0Jz5QYWNrYWdlIFRlc3Q8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAocHRlc3QpIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCB3aGVuIGJ1aWxkaW5nIGEgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG5vdCBzZXQgdGhpcyB2YXJpYWJsZSBkaXJlY3RseS4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxpbmcgYW5kIGRpc2FibGluZyBidWlsZGluZyBQYWNrYWdlIFRlc3RzCisgICAgICAgICAgICAgICAgICAgIGF0IGJ1aWxkIHRpbWUgc2hvdWxkIGJlIGRvbmUgYnkgYWRkaW5nICJwdGVzdCIgdG8gKG9yCisgICAgICAgICAgICAgICAgICAgIHJlbW92aW5nIGl0IGZyb20pCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBWJz48Z2xvc3N0ZXJtPlBWPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBQVltkb2NdID0gIlRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUuIFRoZSB2ZXJzaW9uIGlzIG5vcm1hbGx5IGV4dHJhY3RlZCBmcm9tIHRoZSByZWNpcGUgZmlsZW5hbWUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiBpcyBub3JtYWxseSBleHRyYWN0ZWQgZnJvbSB0aGUgcmVjaXBlIGZpbGVuYW1lLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHJlY2lwZSBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXhwYXRfMi4wLjEuYmI8L2ZpbGVuYW1lPiwgdGhlbiB0aGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPiB3aWxsIGJlICIyLjAuMSIuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGlzIGdlbmVyYWxseSBub3Qgb3ZlcnJpZGRlbiB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgYSByZWNpcGUgdW5sZXNzIGl0IGlzIGJ1aWxkaW5nIGFuIHVuc3RhYmxlIChpLmUuCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50KSB2ZXJzaW9uIGZyb20gYSBzb3VyY2UgY29kZSByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIChlLmcuIEdpdCBvciBTdWJ2ZXJzaW9uKS4KKyAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gaXMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHVic+PGZpbGVuYW1lPlBLR1Y8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QWVRIT05fQUJJJz48Z2xvc3N0ZXJtPlBZVEhPTl9BQkk8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFBZVEhPTl9BQklbZG9jXSA9ICJXaGVuIHVzZWQgYnkgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIGRpc3R1dGlsczMsIHNldHVwdG9vbHMzLCBkaXN0dXRpbHMsIG9yIHNldHVwdG9vbHMgY2xhc3NlcywgZGVub3RlcyB0aGUgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSBjdXJyZW50bHkgaW4gdXNlIGZvciBQeXRob24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQgYnkgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWRpc3R1dGlsczMnPjxmaWxlbmFtZT5kaXN0dXRpbHMzPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zZXR1cHRvb2xzMyc+PGZpbGVuYW1lPnNldHVwdG9vbHMzPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kaXN0dXRpbHMnPjxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXNldHVwdG9vbHMnPjxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsIGRlbm90ZXMgdGhlIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGluIHVzZSBmb3IgUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgQUJJIGlzICJtIi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIHNldCB0aGlzIHZhcmlhYmxlIGFzIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHNldHMgaXQgZm9yIHlvdS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgQUJJIHRvIGNvbnN0cnVjdAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZXMgdXNlZCB3aGVuIGluc3RhbGxpbmcgdGhlIFB5dGhvbiBoZWFkZXJzCisgICAgICAgICAgICAgICAgICAgIGFuZCBsaWJyYXJpZXMgaW4gc3lzcm9vdAorICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Li4uL3B5dGhvbjMuM20vLi4uPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGR1cmluZyBjcm9zcy1idWlsZHMgYWxzbyB1c2UgdGhpcyB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICBsb2NhdGUgdGhlIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBvZiB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uCisgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIGV4dGVuc2lvbiBpcyB0YXJnZXRpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUFlUSE9OX1BOJz48Z2xvc3N0ZXJtPlBZVEhPTl9QTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUFlUSE9OX1BOW2RvY10gPSAiV2hlbiB1c2VkIGJ5IHJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSBkaXN0dXRpbHMzLCBzZXR1cHRvb2xzMywgZGlzdHV0aWxzLCBvciBzZXR1cHRvb2xzIGNsYXNzZXMsIHNwZWNpZmllcyB0aGUgbWFqb3IgUHl0aG9uIHZlcnNpb24gYmVpbmcgYnVpbHQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQgYnkgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWRpc3R1dGlsczMnPjxmaWxlbmFtZT5kaXN0dXRpbHMzPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zZXR1cHRvb2xzMyc+PGZpbGVuYW1lPnNldHVwdG9vbHMzPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kaXN0dXRpbHMnPjxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXNldHVwdG9vbHMnPjxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsIHNwZWNpZmllcyB0aGUgbWFqb3IgUHl0aG9uIHZlcnNpb24gYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIEZvciBQeXRob24gMy54LCA8ZmlsZW5hbWU+UFlUSE9OX1BOPC9maWxlbmFtZT4gd291bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgInB5dGhvbjMiLgorICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gc2V0IHRoaXMgdmFyaWFibGUgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXV0b21hdGljYWxseSBzZXRzIGl0IGZvciB5b3UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBhbGxvd3MgcmVjaXBlcyB0byB1c2UgY29tbW9uIGluZnJhc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tbmF0aXZlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB0aGUgdmVyc2lvbiBvZiB0aGUgZGVwZW5kZW5jeQorICAgICAgICAgICAgICAgICAgICBpcyA8ZmlsZW5hbWU+UFlUSE9OX1BOPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgPC9nbG9zc2Rpdj4KKworICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LXInPjx0aXRsZT5SPC90aXRsZT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJBTkxJQic+PGdsb3NzdGVybT5SQU5MSUI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFJBTkxJQltkb2NdID0gIk1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAncmFubGliJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJhbmxpYjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJDT05GTElDVFMnPjxnbG9zc3Rlcm0+UkNPTkZMSUNUUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUkNPTkZMSUNUU1tkb2NdID0gIlRoZSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgY29uZmxpY3Qgd2l0aCBhbm90aGVyIHBhY2thZ2UuIE5vdGUgdGhhdCB0aGUgcGFja2FnZSB3aWxsIG5vdCBiZSBpbnN0YWxsZWQgaWYgdGhlIGNvbmZsaWN0aW5nIHBhY2thZ2VzIGFyZSBub3QgZmlyc3QgcmVtb3ZlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgY29uZmxpY3Qgd2l0aCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IHBhY2thZ2VzIHdpbGwgbm90IGJlIGluc3RhbGxlZCBpZiBjb25mbGljdGluZworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgbm90IGZpcnN0IHJlbW92ZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgTGlrZSBhbGwgcGFja2FnZS1jb250cm9sbGluZyB2YXJpYWJsZXMsIHlvdSBtdXN0IGFsd2F5cyB1c2UKKyAgICAgICAgICAgICAgICAgICB0aGVtIGluIGNvbmp1bmN0aW9uIHdpdGggYSBwYWNrYWdlIG5hbWUgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkNPTkZMSUNUU18ke1BOfSA9ICI8cmVwbGFjZWFibGU+YW5vdGhlcl9jb25mbGljdGluZ19wYWNrYWdlX25hbWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UsIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMsIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdmVyc2lvbmVkIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHN5bnRheCB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBCaXRCYWtlIGhpZGVzIHRoZXNlIGRpZmZlcmVuY2VzIGZyb20geW91LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHN5bnRheCB0byBzcGVjaWZ5IHZlcnNpb25zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5SQ09ORkxJQ1RTPC9maWxlbmFtZT4gdmFyaWFibGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkNPTkZMSUNUU18ke1BOfSA9ICI8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+KSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgPGZpbGVuYW1lPm9wZXJhdG9yPC9maWxlbmFtZT4sIHlvdSBjYW4gc3BlY2lmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgID0KKyAgICAgJmx0OworICAgICAmZ3Q7CisgICAgICZsdDs9CisgICAgICZndDs9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2V0cyB1cCBhIGRlcGVuZGVuY3kgb24gdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAxLjIgb3IgZ3JlYXRlciBvZiB0aGUgcGFja2FnZSA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkNPTkZMSUNUU18ke1BOfSA9ICJmb28gKD49IDEuMikiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1SREVQRU5EUyc+PGdsb3NzdGVybT5SREVQRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUkRFUEVORFNbZG9jXSA9ICJMaXN0cyBydW50aW1lIGRlcGVuZGVuY2llcyBvZiBhIHBhY2thZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBMaXN0cyBydW50aW1lIGRlcGVuZGVuY2llcyBvZiBhIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgb3RoZXIgcGFja2FnZXMgdGhhdCBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBvcmRlciBmb3IgdGhlIHBhY2thZ2UgdG8gZnVuY3Rpb24gY29ycmVjdGx5LgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGFzc2lnbm1lbnQgZGVjbGFyZXMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT4gbmVlZHMgdGhlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmJhejwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIGJlIGluc3RhbGxlZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSREVQRU5EU19mb28gPSAiYmFyIGJheiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdHlwZXMgb2YgcGFja2FnZSBydW50aW1lIGRlcGVuZGVuY2llcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhbmQgYWRkZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZXJlZm9yZSwgbW9zdCByZWNpcGVzIGRvIG5vdCBuZWVkIHRvIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmFjdGljYWwgZWZmZWN0IG9mIHRoZSBhYm92ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiBhc3NpZ25tZW50IGlzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhcjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+YmF6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBkZWNsYXJlZCBhcyBkZXBlbmRlbmNpZXMgaW5zaWRlIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb288L2ZpbGVuYW1lPiB3aGVuIGl0IGlzIHdyaXR0ZW4gb3V0IGJ5IG9uZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfZGViJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICBFeGFjdGx5IGhvdyB0aGlzIGlzIGRvbmUgZGVwZW5kcyBvbiB3aGljaCBwYWNrYWdlIGZvcm1hdAorICAgICAgICAgICAgICAgICAgICBpcyB1c2VkLCB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgcGFja2FnZSBtYW5hZ2VyIGluc3RhbGxzIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLCBpdCB3aWxsIGtub3cgdG8gYWxzbyBpbnN0YWxsIHRoZSBwYWNrYWdlcyBvbgorICAgICAgICAgICAgICAgICAgICB3aGljaCBpdCBkZXBlbmRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBlbnN1cmUgdGhhdCB0aGUgcGFja2FnZXMgPGZpbGVuYW1lPmJhcjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmF6PC9maWxlbmFtZT4gZ2V0IGJ1aWx0LCB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4gYXNzaWdubWVudCBhbHNvIGNhdXNlcyBhIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSB0byBiZSBhZGRlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBkZXBlbmRlbmN5IGlzIGZyb20gdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1idWlsZCc+PGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIChub3QgdG8gYmUgY29uZnVzZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgIHRhc2sgdG8gdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSByZWNpcGVzIHRoYXQgYnVpbGQgPGZpbGVuYW1lPmJhcjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmF6PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgcGFja2FnZXMgeW91IGxpc3Qgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IG11c3QgYmUgdGhlIG5hbWVzIG9mIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIC0gdGhleSBjYW5ub3QgYmUgcmVjaXBlIG5hbWVzLgorICAgICAgICAgICAgICAgICAgICBBbHRob3VnaCBwYWNrYWdlIG5hbWVzIGFuZCByZWNpcGUgbmFtZXMgdXN1YWxseSBtYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltcG9ydGFudCBwb2ludCBoZXJlIGlzIHRoYXQgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICBwcm92aWRpbmcgcGFja2FnZSBuYW1lcyB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiB0aGUgZGVmYXVsdCBsaXN0IG9mIHBhY2thZ2VzIGNyZWF0ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICBhIHJlY2lwZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwbGllcworICAgICAgICAgICAgICAgICAgICB0byBwYWNrYWdlcyBiZWluZyBidWlsdCwgeW91IHNob3VsZCBhbHdheXMgdXNlIHRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBpbiBhIGZvcm0gd2l0aCBhbiBhdHRhY2hlZCBwYWNrYWdlIG5hbWUgKHJlbWVtYmVyIHRoYXQgYQorICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcmVjaXBlIGNhbiBidWlsZCBtdWx0aXBsZSBwYWNrYWdlcykuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYnVpbGRpbmcgYSBkZXZlbG9wbWVudCBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVwZW5kcyBvbiB0aGUgPGZpbGVuYW1lPnBlcmw8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3b3VsZCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBleGFtcGxlLCB0aGUgZGV2ZWxvcG1lbnQgcGFja2FnZSBkZXBlbmRzIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cGVybDwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1BOfS1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlIG5hbWUgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNhdXRpb248L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTXyR7UE59LWRldjwvZmlsZW5hbWU+IGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVmYXVsdCBpcyBzZXQgaW4gdGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBCZSBjYXJlZnVsIG5vdCB0byBhY2NpZGVudGFsbHkgcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiB3aGVuIG1vZGlmeWluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTXyR7UE59LWRldjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSAiKz0iIG9wZXJhdG9yIHJhdGhlciB0aGFuIHRoZSAiPSIgb3BlcmF0b3IuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhY2thZ2UgbmFtZXMgeW91IHVzZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IG11c3QgYXBwZWFyIGFzIHRoZXkgd291bGQgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLRyc+PGZpbGVuYW1lPlBLRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbGxvd3MgYSBkaWZmZXJlbnQgbmFtZSB0byBiZSB1c2VkIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgZmluYWwgcGFja2FnZSAoZS5nLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHVzZXMgdGhpcyB0byByZW5hbWUgcGFja2FnZXMpLCBidXQgdGhpcyBmaW5hbCBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG5hbWUgY2Fubm90IGJlIHVzZWQgd2l0aCA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4gaXMgbWVhbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgaW5kZXBlbmRlbnQgb2YgdGhlIHBhY2thZ2UgZm9ybWF0IHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UsIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMsIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdmVyc2lvbmVkIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHN5bnRheCB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBCaXRCYWtlIGhpZGVzIHRoZXNlIGRpZmZlcmVuY2VzIGZyb20geW91LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHN5bnRheCB0byBzcGVjaWZ5IHZlcnNpb25zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJERVBFTkRTXyR7UE59ID0gIjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZT5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4pIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciA8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiwgeW91IGNhbiBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPQorICAgICAmbHQ7CisgICAgICZndDsKKyAgICAgJmx0Oz0KKyAgICAgJmd0Oz0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPiwgcHJvdmlkZSB0aGUgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBudW1iZXIuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRFTkRQS0dWJz48ZmlsZW5hbWU+RVhURU5EUEtHVjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSBhIGZ1bGwgcGFja2FnZSB2ZXJzaW9uIHNwZWNpZmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2V0cyB1cCBhIGRlcGVuZGVuY3kgb24gdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAxLjIgb3IgZ3JlYXRlciBvZiB0aGUgcGFja2FnZSA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUkRFUEVORFNfJHtQTn0gPSAiZm9vICg+PSAxLjIpIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZC10aW1lIGRlcGVuZGVuY2llcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Rhc2tzJz5UYXNrczwvdWxpbms+IiBhbmQKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjZGVwZW5kZW5jaWVzJz5EZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwgZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gdGFza3MgYW5kIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMnPjxnbG9zc3Rlcm0+UkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNbZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgY2xhc3MsIHRoaXMgdmFyaWFibGUgaWRlbnRpZmllcyBkaXN0cmlidXRpb24gZmVhdHVyZXMgdGhhdCBtdXN0IGV4aXN0IGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGJ1aWxkIHRoZSByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWRpc3Ryb19mZWF0dXJlc19jaGVjayc+PGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpZGVudGlmaWVzIGRpc3RyaWJ1dGlvbiBmZWF0dXJlcyB0aGF0IG11c3QKKyAgICAgICAgICAgICAgICAgICAgZXhpc3QgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpbiBvcmRlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdHMgYSBmZWF0dXJlIHRoYXQgZG9lcyBub3QgYXBwZWFyIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPiB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgYW4gZXJyb3Igb2NjdXJzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3RvcHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUk1fV09SS19FWENMVURFJz48Z2xvc3N0ZXJtPlJNX1dPUktfRVhDTFVERTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUk1fV09SS19FWENMVURFW2RvY10gPSAiV2l0aCBybV93b3JrIGVuYWJsZWQsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBwYWNrYWdlcyB3aG9zZSB3b3JrIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgcmVtb3ZlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdpdGggPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPiBlbmFibGVkLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgcmVjaXBlcyB3aG9zZSB3b3JrIGRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcmsuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJPT1RfSE9NRSc+PGdsb3NzdGVybT5ST09UX0hPTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFJPT1RfSE9NRVtkb2NdID0gIkRlZmluZXMgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSByb290IGhvbWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSBpcyBzZXQgYXMgZm9sbG93cyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBjb25maWd1cmF0aW9uIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUk9PVF9IT01FID8/PSAiL2hvbWUvcm9vdCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVmYXVsdCB2YWx1ZSBpcyBsaWtlbHkgdXNlZCBiZWNhdXNlIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkIHNvbHV0aW9ucyBwcmVmZXIgdG8gaGF2ZSBhIHJlYWQtb25seSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGFuZCBwcmVmZXIgdG8ga2VlcCB3cml0ZWFibGUgZGF0YSBpbiBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgaW4gYW55IGxheWVyIG9yIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgaXMgc2V0IHVzaW5nIGEgIndlYWsiIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gIj8/PSIpLCB5b3UgY2FuIHVzZSBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBmb3JtcworICAgICAgICAgICAgICAgICAgICB0byBkZWZpbmUgeW91ciBvdmVycmlkZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBST09UX0hPTUUgPSAiL3Jvb3QiCisgICAgIFJPT1RfSE9NRSA/PSAiL3Jvb3QiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3ZlcnJpZGUgZXhhbXBsZXMgdXNlIDxmaWxlbmFtZT4vcm9vdDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBwcm9iYWJseSB0aGUgbW9zdCBjb21tb25seSB1c2VkIG92ZXJyaWRlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJPT1RGUyc+PGdsb3NzdGVybT5ST09URlM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFJPT1RGU1tkb2NdID0gIkluZGljYXRlcyBhIGZpbGVzeXN0ZW0gaW1hZ2UgdG8gaW5jbHVkZSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIGEgZmlsZXN5c3RlbSBpbWFnZSB0byBpbmNsdWRlIGFzIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Uk9PVEZTPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgYW4gb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ST09URlNfUE9TVElOU1RBTExfQ09NTUFORCc+PGdsb3NzdGVybT5ST09URlNfUE9TVElOU1RBTExfQ09NTUFORDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUk9PVEZTX1BPU1RJTlNUQUxMX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGFmdGVyIGluc3RhbGxpbmcgcGFja2FnZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGFmdGVyIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBpbnN0YWxsZWQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBmdW5jdGlvbnMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUk9PVEZTX1BPU1RJTlNUQUxMX0NPTU1BTkQgKz0gIjxyZXBsYWNlYWJsZT5mdW5jdGlvbjwvcmVwbGFjZWFibGU+OyAuLi4gIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIHBhc3MgdGhlIHJvb3QgZmlsZXN5c3RlbSBwYXRoIHRvIGEgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBmdW5jdGlvbiwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7SU1BR0VfUk9PVEZTfTwvZmlsZW5hbWU+LCB3aGljaCBwb2ludHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB0aGF0IGJlY29tZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48Z2xvc3N0ZXJtPlJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgcm9vdCBmaWxlc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBjcmVhdGVkIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBmdW5jdGlvbnMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gIjxyZXBsYWNlYWJsZT5mdW5jdGlvbjwvcmVwbGFjZWFibGU+OyAuLi4gIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIHBhc3MgdGhlIHJvb3QgZmlsZXN5c3RlbSBwYXRoIHRvIGEgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBmdW5jdGlvbiwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7SU1BR0VfUk9PVEZTfTwvZmlsZW5hbWU+LCB3aGljaCBwb2ludHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB0aGF0IGJlY29tZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJPT1RGU19QT1NUVU5JTlNUQUxMX0NPTU1BTkQnPjxnbG9zc3Rlcm0+Uk9PVEZTX1BPU1RVTklOU1RBTExfQ09NTUFORDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUk9PVEZTX1BPU1RVTklOU1RBTExfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYWZ0ZXIgcmVtb3ZhbCBvZiB1bm5lZWRlZCBwYWNrYWdlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIHJlbW92ZWQgdW5uZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgZGlzYWJsZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCBzZXZlcmFsIHBhY2thZ2VzIGFyZSByZW1vdmVkIGluY2x1ZGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1wYXNzd2Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYWRvdzwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IGZ1bmN0aW9ucyBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9uczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBST09URlNfUE9TVFVOSU5TVEFMTF9DT01NQU5EICs9ICI8cmVwbGFjZWFibGU+ZnVuY3Rpb248L3JlcGxhY2VhYmxlPjsgLi4uICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBwYXNzIHRoZSByb290IGZpbGVzeXN0ZW0gcGF0aCB0byBhIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgZnVuY3Rpb24sIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0lNQUdFX1JPT1RGU308L2ZpbGVuYW1lPiwgd2hpY2ggcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBiZWNvbWVzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGUyc+PGZpbGVuYW1lPklNQUdFX1JPT1RGUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ST09URlNfUFJFUFJPQ0VTU19DT01NQU5EJz48Z2xvc3N0ZXJtPlJPT1RGU19QUkVQUk9DRVNTX0NPTU1BTkQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFJPT1RGU19QUkVQUk9DRVNTX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgcm9vdCBmaWxlc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IGZ1bmN0aW9ucyBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9uczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBST09URlNfUFJFUFJPQ0VTU19DT01NQU5EICs9ICI8cmVwbGFjZWFibGU+ZnVuY3Rpb248L3JlcGxhY2VhYmxlPjsgLi4uICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBwYXNzIHRoZSByb290IGZpbGVzeXN0ZW0gcGF0aCB0byBhIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgZnVuY3Rpb24sIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0lNQUdFX1JPT1RGU308L2ZpbGVuYW1lPiwgd2hpY2ggcG9pbnRzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBiZWNvbWVzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1JPT1RGUyc+PGZpbGVuYW1lPklNQUdFX1JPT1RGUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1SUFJPVklERVMnPjxnbG9zc3Rlcm0+UlBST1ZJREVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBSUFJPVklERVNbZG9jXSA9ICJBIGxpc3Qgb2YgcGFja2FnZSBuYW1lIGFsaWFzZXMgdGhhdCBhIHBhY2thZ2UgYWxzbyBwcm92aWRlcy4gVGhlc2UgYWxpYXNlcyBhcmUgdXNlZnVsIGZvciBzYXRpc2Z5aW5nIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9mIG90aGVyIHBhY2thZ2VzIGJvdGggZHVyaW5nIHRoZSBidWlsZCBhbmQgb24gdGhlIHRhcmdldC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWUgYWxpYXNlcyB0aGF0IGEgcGFja2FnZSBhbHNvIHByb3ZpZGVzLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBhbGlhc2VzIGFyZSB1c2VmdWwgZm9yIHNhdGlzZnlpbmcgcnVudGltZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgb2Ygb3RoZXIgcGFja2FnZXMgYm90aCBkdXJpbmcgdGhlIGJ1aWxkIGFuZCBvbiB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIChhcyBzcGVjaWZpZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+UkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgcGFja2FnZSdzIG93biBuYW1lIGlzIGltcGxpY2l0bHkgYWxyZWFkeSBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SUFJPVklERVM8L2ZpbGVuYW1lPiBsaXN0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgQXMgd2l0aCBhbGwgcGFja2FnZS1jb250cm9sbGluZyB2YXJpYWJsZXMsIHlvdSBtdXN0IGFsd2F5cworICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgdmFyaWFibGUgaW4gY29uanVuY3Rpb24gd2l0aCBhIHBhY2thZ2UgbmFtZSBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSUFJPVklERVNfJHtQTn0gPSAid2lkZ2V0LWFiaS0yIgorICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1SUkVDT01NRU5EUyc+PGdsb3NzdGVybT5SUkVDT01NRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUlJFQ09NTUVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgcGFja2FnZXMgdGhhdCBleHRlbmRzIHRoZSB1c2FiaWxpdHkgb2YgYSBwYWNrYWdlIGJlaW5nIGJ1aWx0LiBUaGUgcGFja2FnZSBiZWluZyBidWlsdCBkb2VzIG5vdCBkZXBlbmQgb24gdGhpcyBsaXN0IG9mIHBhY2thZ2VzIGluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseSBidWlsZCwgYnV0IG5lZWRzIHRoZW0gZm9yIHRoZSBleHRlbmRlZCB1c2FiaWxpdHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgcGFja2FnZXMgdGhhdCBleHRlbmRzIHRoZSB1c2FiaWxpdHkgb2YgYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSBiZWluZyBidWlsdCBkb2VzIG5vdCBkZXBlbmQgb24gdGhpcyBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseSBidWlsZCwgYnV0IHJhdGhlcgorICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZW0gZm9yIGV4dGVuZGVkIHVzYWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBydW50aW1lIGRlcGVuZGVuY2llcyBmb3IgcGFja2FnZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+UkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlIG1hbmFnZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+IGxpc3Qgb2YgcGFja2FnZXMgd2hlbgorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHRoZSBidWlsdCBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHByZXZlbnQgbGlzdGVkIHBhY2thZ2VzIGZyb20gYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkFEX1JFQ09NTUVOREFUSU9OUyc+PGZpbGVuYW1lPkJBRF9SRUNPTU1FTkRBVElPTlM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OT19SRUNPTU1FTkRBVElPTlMnPjxmaWxlbmFtZT5OT19SRUNPTU1FTkRBVElPTlM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9FWENMVURFJz48ZmlsZW5hbWU+UEFDS0FHRV9FWENMVURFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+IG5lZWQgbm90IGFjdHVhbGx5IGJlCisgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VkLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBhIHJlY2lwZSBtdXN0IGV4aXN0IHRoYXQgcHJvdmlkZXMgZWFjaCBwYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTX0RZTkFNSUMnPjxmaWxlbmFtZT5QQUNLQUdFU19EWU5BTUlDPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJQUk9WSURFUyc+PGZpbGVuYW1lPlJQUk9WSURFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgb3IgYW4gZXJyb3Igd2lsbCBvY2N1ciBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgcmVjaXBlIGRvZXMgZXhpc3QgYW5kIHRoZSBwYWNrYWdlIGlzIG5vdCBwcm9kdWNlZCwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGNvbnRpbnVlcyB3aXRob3V0IGVycm9yLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSA8ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBhcHBsaWVzIHRvIHBhY2thZ2VzIGJlaW5nIGJ1aWx0LCB5b3Ugc2hvdWxkIGFsd2F5cyBhdHRhY2gKKyAgICAgICAgICAgICAgICAgICAgYW4gb3ZlcnJpZGUgdG8gdGhlIHZhcmlhYmxlIHRvIHNwZWNpZnkgdGhlIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSB3aG9zZSB1c2FiaWxpdHkgaXMgYmVpbmcgZXh0ZW5kZWQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYnVpbGRpbmcgYSBkZXZlbG9wbWVudCBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgZXh0ZW5kZWQgdG8gc3VwcG9ydCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3b3VsZCB1c2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIjxyZXBsYWNlYWJsZT53aXJlbGVzc19wYWNrYWdlX25hbWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSwgdGhlIHBhY2thZ2UgbmFtZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiR7PGxpbmsgbGlua2VuZD0ndmFyLVBOJz5QTjwvbGluaz59LWRldjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBtdXN0IGFwcGVhciBhcyBpdCB3b3VsZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gbmFtZXNwYWNlIGJlZm9yZSBhbnkgcmVuYW1pbmcKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG91dHB1dCBwYWNrYWdlIGJ5IGNsYXNzZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGViaWFuLmJiY2xhc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSwgd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcywgc3VwcG9ydHMKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmeWluZyB2ZXJzaW9uZWQgcmVjb21tZW5kcy4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHN5bnRheCB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBCaXRCYWtlIGhpZGVzIHRoZXNlIGRpZmZlcmVuY2VzIGZyb20geW91LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHN5bnRheCB0byBzcGVjaWZ5IHZlcnNpb25zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJSRUNPTU1FTkRTXyR7UE59ID0gIjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZT5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4pIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciA8ZmlsZW5hbWU+b3BlcmF0b3I8L2ZpbGVuYW1lPiwgeW91IGNhbiBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPQorICAgICAmbHQ7CisgICAgICZndDsKKyAgICAgJmx0Oz0KKyAgICAgJmd0Oz0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBzZXRzIHVwIGEgcmVjb21tZW5kIG9uIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgMS4yIG9yIGdyZWF0ZXIgb2YgdGhlIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJSRUNPTU1FTkRTXyR7UE59ID0gImZvbyAoPj0gMS4yKSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJSRVBMQUNFUyc+PGdsb3NzdGVybT5SUkVQTEFDRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFJSRVBMQUNFU1tkb2NdID0gIkEgbGlzdCBvZiBwYWNrYWdlcyByZXBsYWNlZCBieSBhIHBhY2thZ2UuIFRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlcyB0aGlzIHZhcmlhYmxlIHRvIGRldGVybWluZSB3aGljaCBwYWNrYWdlIHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gcmVwbGFjZSBvdGhlciBwYWNrYWdlKHMpIGR1cmluZyBhbiB1cGdyYWRlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHBhY2thZ2VzIHJlcGxhY2VkIGJ5IGEgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhY2thZ2UgbWFuYWdlciB1c2VzIHRoaXMgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugc2hvdWxkIGJlIGluc3RhbGxlZCB0byByZXBsYWNlIG90aGVyIHBhY2thZ2UocykKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGFuIHVwZ3JhZGUuCisgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIGFsc28gaGF2ZSB0aGUgb3RoZXIgcGFja2FnZShzKSByZW1vdmVkIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICBzYW1lIHRpbWUsIHlvdSBtdXN0IGFkZCB0aGUgbmFtZSBvZiB0aGUgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1SQ09ORkxJQ1RTJz5SQ09ORkxJQ1RTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHBhY2thZ2UtY29udHJvbGxpbmcgdmFyaWFibGVzLCB5b3UgbXVzdCB1c2UKKyAgICAgICAgICAgICAgICAgICB0aGlzIHZhcmlhYmxlIGluIGNvbmp1bmN0aW9uIHdpdGggYSBwYWNrYWdlIG5hbWUKKyAgICAgICAgICAgICAgICAgICBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSUkVQTEFDRVNfJHtQTn0gPSAiPHJlcGxhY2VhYmxlPm90aGVyX3BhY2thZ2VfYmVpbmdfcmVwbGFjZWQ8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UsIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMsIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdmVyc2lvbmVkIHJlcGxhY2VtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHN5bnRheCB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBCaXRCYWtlIGhpZGVzIHRoZXNlIGRpZmZlcmVuY2VzIGZyb20geW91LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBnZW5lcmFsIHN5bnRheCB0byBzcGVjaWZ5IHZlcnNpb25zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5SUkVQTEFDRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSUkVQTEFDRVNfJHtQTn0gPSAiPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPiAoPHJlcGxhY2VhYmxlPm9wZXJhdG9yPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPikiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIDxmaWxlbmFtZT5vcGVyYXRvcjwvZmlsZW5hbWU+LCB5b3UgY2FuIHNwZWNpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA9CisgICAgICZsdDsKKyAgICAgJmd0OworICAgICAmbHQ7PQorICAgICAmZ3Q7PQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHNldHMgdXAgYSByZXBsYWNlbWVudCB1c2luZworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMiBvciBncmVhdGVyIG9mIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb288L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSUkVQTEFDRVNfJHtQTn0gPSAiZm9vICg+PSAxLjIpIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUlNVR0dFU1RTJz48Z2xvc3N0ZXJtPlJTVUdHRVNUUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgUlNVR0dFU1RTW2RvY10gPSAiQSBsaXN0IG9mIGFkZGl0aW9uYWwgcGFja2FnZXMgdGhhdCB5b3UgY2FuIHN1Z2dlc3QgZm9yIGluc3RhbGxhdGlvbiBieSB0aGUgcGFja2FnZSBtYW5hZ2VyIGF0IHRoZSB0aW1lIGEgcGFja2FnZSBpcyBpbnN0YWxsZWQuIE5vdCBhbGwgcGFja2FnZSBtYW5hZ2VycyBzdXBwb3J0IHRoaXMgZnVuY3Rpb25hbGl0eS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzIHRoYXQgeW91IGNhbiBzdWdnZXN0IGZvcgorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gYnkgdGhlIHBhY2thZ2UgbWFuYWdlciBhdCB0aGUgdGltZSBhIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBOb3QgYWxsIHBhY2thZ2UgbWFuYWdlcnMgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgQXMgd2l0aCBhbGwgcGFja2FnZS1jb250cm9sbGluZyB2YXJpYWJsZXMsIHlvdSBtdXN0IGFsd2F5cworICAgICAgICAgICAgICAgICAgIHVzZSB0aGlzIHZhcmlhYmxlIGluIGNvbmp1bmN0aW9uIHdpdGggYSBwYWNrYWdlIG5hbWUKKyAgICAgICAgICAgICAgICAgICBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSU1VHR0VTVFNfJHtQTn0gPSAiPHJlcGxhY2VhYmxlPnVzZWZ1bF9wYWNrYWdlPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmFub3RoZXJfcGFja2FnZTwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnktcyc+PHRpdGxlPlM8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUyc+PGdsb3NzdGVybT5TPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTW2RvY10gPSAiVGhlIGxvY2F0aW9uIGluIHRoZSBCdWlsZCBEaXJlY3Rvcnkgd2hlcmUgdW5wYWNrZWQgcGFja2FnZSBzb3VyY2UgY29kZSByZXNpZGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgdW5wYWNrZWQgcmVjaXBlIHNvdXJjZSBjb2RlIHJlc2lkZXMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vJHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1CUE4nPjxmaWxlbmFtZT5CUE48L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS0kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGVyZSA8ZmlsZW5hbWU+JHtCUE59PC9maWxlbmFtZT4gaXMgdGhlIGJhc2UgcmVjaXBlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT4ke1BWfTwvZmlsZW5hbWU+IGlzIHRoZSByZWNpcGUgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvdXJjZSB0YXJiYWxsIGV4dHJhY3RzIHRoZSBjb2RlIHRvIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIG5hbWVkIGFueXRoaW5nIG90aGVyIHRoYW4gPGZpbGVuYW1lPiR7QlBOfS0ke1BWfTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBvciBpZiB0aGUgc291cmNlIGNvZGUgaXMgZmV0Y2hlZCBmcm9tIGFuIFNDTSBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIEdpdCBvciBTdWJ2ZXJzaW9uLCB0aGVuIHlvdSBtdXN0IHNldCA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgc28gdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBrbm93cyB3aGVyZSB0byBmaW5kIHRoZSB1bnBhY2tlZCBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGFzc3VtZSBhCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRvcC1sZXZlbCBmb2xkZXIgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhbmQgYQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IEJ1aWxkIERpcmVjdG9yeSBhdCA8ZmlsZW5hbWU+cG9reS9idWlsZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSB3b3JrIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgdG8ga2VlcCB0aGUgdW5wYWNrZWQgcmVjaXBlIGZvciA8ZmlsZW5hbWU+ZGI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2RiLzUuMS4xOS1yMy9kYi01LjEuMTkKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgdW5wYWNrZWQgc291cmNlIGNvZGUgcmVzaWRlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRiLTUuMS4xOTwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgYXNzdW1lcyBhIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBHaXQgcmVwb3NpdG9yaWVzIGFyZSBjbG9uZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7V09SS0RJUn0vZ2l0PC9maWxlbmFtZT4gZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBTaW5jZSB0aGlzIHBhdGggaXMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiwgeW91IG11c3Qgc2V0IGl0IHNwZWNpZmljYWxseQorICAgICAgICAgICAgICAgICAgICBzbyB0aGUgc291cmNlIGNhbiBiZSBsb2NhdGVkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiZ2l0Oi8vcGF0aC90by9yZXBvLmdpdCIKKyAgICAgUyA9ICIke1dPUktESVJ9L2dpdCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNBTklUWV9SRVFVSVJFRF9VVElMSVRJRVMnPjxnbG9zc3Rlcm0+U0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFU1tkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIHV0aWxpdGllcyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGZvciBkdXJpbmcgdGhlIGluaXRpYWwgc2FuaXR5IGNoZWNraW5nIHByb2Nlc3Mgd2hlbiBydW5uaW5nIEJpdEJha2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGNvbW1hbmQtbGluZSB1dGlsaXRpZXMgdGhhdCBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCBmb3IgZHVyaW5nIHRoZSBpbml0aWFsIHNhbml0eSBjaGVja2luZyBwcm9jZXNzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgcnVubmluZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICBJZiBhbnkgb2YgdGhlIHV0aWxpdGllcyBhcmUgbm90IGluc3RhbGxlZCBvbiB0aGUgYnVpbGQgaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgdGhlbiBCaXRCYWtlIGltbWVkaWF0ZWx5IGV4aXRzIHdpdGggYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0FOSVRZX1RFU1RFRF9ESVNUUk9TJz48Z2xvc3N0ZXJtPlNBTklUWV9URVNURURfRElTVFJPUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0FOSVRZX1RFU1RFRF9ESVNUUk9TW2RvY10gPSAiQSBsaXN0IG9mIHRoZSBob3N0IGRpc3RyaWJ1dGlvbiBpZGVudGlmaWVycyB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gaGFzIGJlZW4gdGVzdGVkIGFnYWluc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdGhlIGhvc3QgZGlzdHJpYnV0aW9uIGlkZW50aWZpZXJzIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBoYXMgYmVlbiB0ZXN0ZWQgYWdhaW5zdC4KKyAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllcnMgY29uc2lzdCBvZiB0aGUgaG9zdCBkaXN0cmlidXRvciBJRAorICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgcmVsZWFzZSwKKyAgICAgICAgICAgICAgICAgICAgYXMgcmVwb3J0ZWQgYnkgdGhlIDxmaWxlbmFtZT5sc2JfcmVsZWFzZTwvZmlsZW5hbWU+IHRvb2wKKyAgICAgICAgICAgICAgICAgICAgb3IgYXMgcmVhZCBmcm9tIDxmaWxlbmFtZT4vZXRjL2xzYi1yZWxlYXNlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIHRoZSBsaXN0IGl0ZW1zIHdpdGggZXhwbGljaXQgbmV3bGluZQorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzICg8ZmlsZW5hbWU+XG48L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5TQU5JVFlfVEVTVEVEX0RJU1RST1M8L2ZpbGVuYW1lPiBpcyBub3QgZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OQVRJVkVMU0JTVFJJTkcnPjxmaWxlbmFtZT5OQVRJVkVMU0JTVFJJTkc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBsaXN0LCB0aGVuIHRoZSBidWlsZCBzeXN0ZW0gcmVwb3J0cworICAgICAgICAgICAgICAgICAgICBhIHdhcm5pbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgaG9zdCBkaXN0cmlidXRpb24gaGFzCisgICAgICAgICAgICAgICAgICAgIG5vdCBiZWVuIHRlc3RlZCBhcyBhIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX0FSQ0gnPjxnbG9zc3Rlcm0+U0RLX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNES19BUkNIW2RvY10gPSAiVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgZm9yIHRoZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3UgZG8gbm90IGRpcmVjdGx5IHNldCB0aGlzIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkLCB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19ERVBMT1knPjxnbG9zc3Rlcm0+U0RLX0RFUExPWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX0RFUExPWVtkb2NdID0gIlRoZSBkaXJlY3Rvcnkgc2V0IHVwIGFuZCB1c2VkIGJ5IHRoZSBwb3B1bGF0ZV9zZGtfYmFzZSB0byB3aGljaCB0aGUgU0RLIGlzIGRlcGxveWVkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBzZXQgdXAgYW5kIHVzZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkayc+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHdoaWNoIHRoZSBTREsgaXMgZGVwbG95ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPiBjbGFzcyBkZWZpbmVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfREVQTE9ZPC9maWxlbmFtZT4gYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtfREVQTE9ZID0gIiR7VE1QRElSfS9kZXBsb3kvc2RrIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX0RJUic+PGdsb3NzdGVybT5TREtfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfRElSW2RvY10gPSAiVGhlIHBhcmVudCBkaXJlY3RvcnkgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGVuIGNyZWF0aW5nIFNESyBvdXRwdXQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgcGFyZW50IGRpcmVjdG9yeSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHdoZW4gY3JlYXRpbmcgU0RLIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZGVmaW5lcyB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtfRElSID0gIiR7V09SS0RJUn0vc2RrIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TREtfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnkgYXMgaXQgaXMgcGFydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBvdXRwdXQgZGlyZWN0b3J5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0RFUExPWSc+PGZpbGVuYW1lPlNES19ERVBMT1k8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtfRVhUX1RZUEUnPjxnbG9zc3Rlcm0+U0RLX0VYVF9UWVBFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfRVhUX1RZUEVbZG9jXSA9ICJDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQgaW50byB0aGUgZXh0ZW5zaWJsZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mICJmdWxsIiBjb3BpZXMgYWxsIG9mIHRoZSByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGludG8gdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgIm1pbmltYWwiIGxlYXZlcyB0aGVzZSBhcnRpZmFjdHMgb3V0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBTREsuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNldCB0aGUgdmFyaWFibGUgdG8gIm1pbmltYWwiLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgZW5zdXJlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX01JUlJPUlMnPjxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IGluIHRoZSBTREsncyBjb25maWd1cmF0aW9uIHRvIGVuYWJsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFydGlmYWN0cyB0byBiZSBmZXRjaGVkIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19IT1NUX01BTklGRVNUJz48Z2xvc3N0ZXJtPlNES19IT1NUX01BTklGRVNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfSE9TVF9NQU5JRkVTVFtkb2NdID0gIlRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgaG9zdCBwYXJ0IG9mIHRoZSBTREsuIFRoaXMgZmlsZSBsaXN0cyBhbGwgdGhlIGluc3RhbGxlZCBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIGhvc3QgcGFydCBvZiB0aGUgU0RLLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBob3N0IHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cAorICAgICAgICAgICAgICAgICAgICB0aGUgaG9zdCBwYXJ0IG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGNvbnRhaW5zIHBhY2thZ2UgaW5mb3JtYXRpb24gb24gYSBsaW5lLXBlci1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGJhc2lzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnBhY2thZ2VhcmNoPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wb3B1bGF0ZS1zZGstKic+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGRlZmluZXMgdGhlIG1hbmlmZXN0IGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtfSE9TVF9NQU5JRkVTVCA9ICIke1NES19ERVBMT1l9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9Lmhvc3QubWFuaWZlc3QiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGlzIGRlcml2ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfREVQTE9ZJz48ZmlsZW5hbWU+U0RLX0RFUExPWTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9PVVRQVVROQU1FJz48ZmlsZW5hbWU+VE9PTENIQUlOX09VVFBVVE5BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19JTkNMVURFX1BLR0RBVEEnPjxnbG9zc3Rlcm0+U0RLX0lOQ0xVREVfUEtHREFUQTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX0lOQ0xVREVfUEtHREFUQVtkb2NdID0gIldoZW4gc2V0IHRvICIxIiwgc3BlY2lmaWVzIHRvIGluY2x1ZGUgdGhlIHBhY2thZ2VkYXRhIGZvciBhbGwgcmVjaXBlcyBpbiB0aGUgIndvcmxkIiB0YXJnZXQgaW4gdGhlIGV4dGVuc2libGUgU0RLLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzZXQgdG8gIjEiLCBzcGVjaWZpZXMgdG8gaW5jbHVkZSB0aGUgcGFja2FnZWRhdGEgZm9yCisgICAgICAgICAgICAgICAgICAgIGFsbCByZWNpcGVzIGluIHRoZSAid29ybGQiIHRhcmdldCBpbiB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEluY2x1ZGluZyB0aGlzIGRhdGEgYWxsb3dzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBzZWFyY2g8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGZpbmQgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBpbiBzZWFyY2ggcmVzdWx0cywgYXMgd2VsbCBhcyBhbGxvd3MgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gbWFwCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBtb3JlIGVmZmVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsaW5nIHRoZSA8ZmlsZW5hbWU+U0RLX0lOQ0xVREVfUEtHREFUQTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzaWduaWZpY2FudGx5IGluY3JlYXNlcyBidWlsZCB0aW1lIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBvZiB3b3JsZCBuZWVkcyB0byBiZSBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsaW5nIHRoZSB2YXJpYWJsZSBhbHNvIHNsaWdodGx5IGluY3JlYXNlcyB0aGUgc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48Z2xvc3N0ZXJtPlNES19JTkNMVURFX1RPT0xDSEFJTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX0lOQ0xVREVfVE9PTENIQUlOW2RvY10gPSAiV2hlbiBzZXQgdG8gIjEiLCBzcGVjaWZpZXMgdG8gaW5jbHVkZSB0aGUgdG9vbGNoYWluIGluIHRoZSBleHRlbnNpYmxlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0IHRvICIxIiwgc3BlY2lmaWVzIHRvIGluY2x1ZGUgdGhlIHRvb2xjaGFpbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEluY2x1ZGluZyB0aGUgdG9vbGNoYWluIGlzIHVzZWZ1bCBwYXJ0aWN1bGFybHkgd2hlbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byAibWluaW1hbCIgdG8ga2VlcCB0aGUgU0RLIHJlYXNvbmFibHkgc21hbGwKKyAgICAgICAgICAgICAgICAgICAgYnV0IHlvdSBzdGlsbCB3YW50IHRvIHByb3ZpZGUgYSB1c2FibGUgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3Ugd2FudCB0byB1c2UgdGhlIHRvb2xjaGFpbiBmcm9tIGFuCisgICAgICAgICAgICAgICAgICAgIElERSBvciBmcm9tIG90aGVyIHRvb2xzIGFuZCB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0ZXBzIHRvIGluc3RhbGwgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cyB0byAiMCIgaWYgPGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byAibWluaW1hbCIsIGFuZCBkZWZhdWx0cyB0byAiMSIgaWYKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+IGlzIHNldCB0byAiZnVsbCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48Z2xvc3N0ZXJtPlNES19JTkhFUklUX0JMQUNLTElTVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX0lOSEVSSVRfQkxBQ0tMSVNUW2RvY10gPSAiQSBsaXN0IG9mIGNsYXNzZXMgdG8gcmVtb3ZlIGZyb20gdGhlIElOSEVSSVQgdmFsdWUgZ2xvYmFsbHkgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNsYXNzZXMgdG8gcmVtb3ZlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBnbG9iYWxseSB3aXRoaW4gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wb3B1bGF0ZS1zZGstKic+PGZpbGVuYW1lPnBvcHVsYXRlLXNkay1leHQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Mgc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtfSU5IRVJJVF9CTEFDS0xJU1QgPz0gImJ1aWxkaGlzdG9yeSBpY2VjYyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTb21lIGNsYXNzZXMgYXJlIG5vdCBnZW5lcmFsbHkgYXBwbGljYWJsZSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGV4dGVuc2libGUgU0RLIGNvbnRleHQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgdG8gZGlzYWJsZSB0aG9zZSBjbGFzc2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3VzdG9taXplIHRoZQorICAgICAgICAgICAgICAgICAgICBleHRlbnNpYmxlIFNESydzIGNvbmZpZ3VyYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1jb25maWd1cmluZy10aGUtZXh0ZW5zaWJsZS1zZGsnPkNvbmZpZ3VyaW5nIHRoZSBFeHRlbnNpYmxlIFNESzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QnPjxnbG9zc3Rlcm0+U0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfTE9DQUxfQ09ORl9CTEFDS0xJU1RbZG9jXSA9ICJBIGxpc3Qgb2YgdmFyaWFibGVzIG5vdCBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiB2YXJpYWJsZXMgbm90IGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZXh0ZW5zaWJsZQorICAgICAgICAgICAgICAgICAgICBTREsgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVXN1YWxseSwgdGhlc2UgYXJlIHZhcmlhYmxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBvbiB3aGljaCB0aGUgYnVpbGQgc3lzdGVtIGlzIHJ1bm5pbmcgYW5kIHRodXMKKyAgICAgICAgICAgICAgICAgICAgd291bGQgYmUgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJ5IGRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1Q8L2ZpbGVuYW1lPiBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGUtc2RrLWV4dDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgZXhjbHVkZXMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPTkZfVkVSU0lPTic+Q09ORl9WRVJTSU9OPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPkJCX05VTUJFUl9USFJFQURTPC9saW5rPgorICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9OVU1CRVJfUEFSU0VfVEhSRUFEUyc+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L3VsaW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFSQUxMRUxfTUFLRSc+UEFSQUxMRUxfTUFLRTwvbGluaz4KKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSU0VSVl9IT1NUJz5QUlNFUlZfSE9TVDwvbGluaz4KKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9NSVJST1JTJz5TU1RBVEVfTUlSUk9SUzwvbGluaz4KKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+RExfRElSPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+U1NUQVRFX0RJUjwvbGluaz4KKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+VE1QRElSPC9saW5rPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfU0VSVkVSX1RJTUVPVVQnPkJCX1NFUlZFUl9USU1FT1VUPC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjdXN0b21pemUgdGhlCisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLJ3MgY29uZmlndXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWNvbmZpZ3VyaW5nLXRoZS1leHRlbnNpYmxlLXNkayc+Q29uZmlndXJpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUJz48Z2xvc3N0ZXJtPlNES19MT0NBTF9DT05GX1dISVRFTElTVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUW2RvY10gPSAiQSBsaXN0IG9mIHZhcmlhYmxlcyBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiB2YXJpYWJsZXMgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESworICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMgaXMgZW1wdHkgYW5kIGlzIHNldCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZS1zZGstZXh0PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3Qgb3ZlcnJpZGVzIHRoZSB2YXJpYWJsZXMgc3BlY2lmaWVkIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFzIHdlbGwgYXMgYW55IHZhcmlhYmxlcyBpZGVudGlmaWVkIGJ5IGF1dG9tYXRpYworICAgICAgICAgICAgICAgICAgICBibGFja2xpc3RpbmcgZHVlIHRvIHRoZSAiLyIgY2hhcmFjdGVyIGJlaW5nIGZvdW5kIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICBzdGFydCBvZiB0aGUgdmFsdWUsIHdoaWNoIGlzIHVzdWFsbHkgaW5kaWNhdGl2ZSBvZiBiZWluZyBhCisgICAgICAgICAgICAgICAgICAgIHBhdGggYW5kIHRodXMgbWlnaHQgbm90IGJlIHZhbGlkIG9uIHRoZSBzeXN0ZW0gd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIFNESyBpcyBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjdXN0b21pemUgdGhlCisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLJ3MgY29uZmlndXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWNvbmZpZ3VyaW5nLXRoZS1leHRlbnNpYmxlLXNkayc+Q29uZmlndXJpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19OQU1FJz48Z2xvc3N0ZXJtPlNES19OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfTkFNRVtkb2NdID0gIlRoZSBiYXNlIG5hbWUgZm9yIFNESyBvdXRwdXQgZmlsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBuYW1lIGZvciBTREsgb3V0cHV0IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBpcyBkZXJpdmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQ0xJQkMnPjxmaWxlbmFtZT5UQ0xJQkM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfQkFTRU5BTUUnPjxmaWxlbmFtZT5JTUFHRV9CQVNFTkFNRTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UVU5FX1BLR0FSQ0gnPjxmaWxlbmFtZT5UVU5FX1BLR0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtfQVJDSH0tJHtJTUFHRV9CQVNFTkFNRX0tJHtUVU5FX1BLR0FSQ0h9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX09TJz48Z2xvc3N0ZXJtPlNES19PUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX09TW2RvY10gPSAiVGhlIG9wZXJhdGluZyBzeXN0ZW0gZm9yIHdoaWNoIHRoZSBTREsgd2lsbCBiZSBidWlsdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBmb3Igd2hpY2ggdGhlIFNESworICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX09TJz48ZmlsZW5hbWU+QlVJTERfT1M8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX09VVFBVVCc+PGdsb3NzdGVybT5TREtfT1VUUFVUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfT1VUUFVUW2RvY10gPSAiVGhlIGxvY2F0aW9uIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hlbiBjcmVhdGluZyBTREsgb3V0cHV0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hlbgorICAgICAgICAgICAgICAgICAgICBjcmVhdGluZyBTREsgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBkZWZpbmVzIHRoZSB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19ESVIgPSAiJHtXT1JLRElSfS9zZGsiCisgICAgIFNES19PVVRQVVQgPSAiJHtTREtfRElSfS9pbWFnZSIKKyAgICAgU0RLX0RFUExPWSA9ICIke0RFUExPWV9ESVJ9L3NkayIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U0RLX09VVFBVVDwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFzIGl0IGlzIHBhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYnkgd2F5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0RJUic+PGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgb3V0cHV0IGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19ERVBMT1knPjxmaWxlbmFtZT5TREtfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX1BBQ0tBR0VfQVJDSFMnPjxnbG9zc3Rlcm0+U0RLX1BBQ0tBR0VfQVJDSFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNES19QQUNLQUdFX0FSQ0hTW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBhcmNoaXRlY3R1cmVzIGNvbXBhdGlibGUgd2l0aCB0aGUgU0RLIG1hY2hpbmUuIFRoaXMgdmFyaWFibGUgaXMgc2V0IGF1dG9tYXRpY2FsbHkgYW5kIHNob3VsZCBub3Qgbm9ybWFsbHkgYmUgaGFuZC1lZGl0ZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSBTREsgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBhbmQgc2hvdWxkIG5vdAorICAgICAgICAgICAgICAgICAgICBub3JtYWxseSBiZSBoYW5kLWVkaXRlZC4KKyAgICAgICAgICAgICAgICAgICAgRW50cmllcyBhcmUgc2VwYXJhdGVkIHVzaW5nIHNwYWNlcyBhbmQgbGlzdGVkIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIG9mIHByaW9yaXR5LgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19QQUNLQUdFX0FSQ0hTPC9maWxlbmFtZT4gaXMgImFsbCBhbnkgbm9hcmNoCisgICAgICAgICAgICAgICAgICAgICR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfSIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxnbG9zc3Rlcm0+U0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNES19QT1NUUFJPQ0VTU19DT01NQU5EW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBmdW5jdGlvbnMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gIjxyZXBsYWNlYWJsZT5mdW5jdGlvbjwvcmVwbGFjZWFibGU+OyAuLi4gIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIHBhc3MgYW4gU0RLIHBhdGggdG8gYSBjb21tYW5kIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtTREtfRElSfTwvZmlsZW5hbWU+LCB3aGljaCBwb2ludHMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhcmVudCBkaXJlY3RvcnkgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB3aGVuIGNyZWF0aW5nIFNESyBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19ESVInPjxmaWxlbmFtZT5TREtfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19QUkVGSVgnPjxnbG9zc3Rlcm0+U0RLX1BSRUZJWDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX1BSRUZJWFtkb2NdID0gIlRoZSB0b29sY2hhaW4gYmluYXJ5IHByZWZpeCB1c2VkIGZvciBuYXRpdmVzZGsgcmVjaXBlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0b29sY2hhaW4gYmluYXJ5IHByZWZpeCB1c2VkIGZvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19QUkVGSVg8L2ZpbGVuYW1lPiB2YWx1ZSB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfUFJFRklYJz48ZmlsZW5hbWU+VEFSR0VUX1BSRUZJWDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiJHtTREtfU1lTfS0iLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19SRUNSREVQX1RBU0tTJz48Z2xvc3N0ZXJtPlNES19SRUNSREVQX1RBU0tTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfUkVDUkRFUF9UQVNLU1tkb2NdID0gIkEgbGlzdCBvZiBzaGFyZWQgc3RhdGUgdGFza3MgYWRkZWQgdG8gdGhlIGV4dGVuc2libGUgU0RLLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHNoYXJlZCBzdGF0ZSB0YXNrcyBhZGRlZCB0byB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmb2xsb3dpbmcgdGFza3MgYXJlIGFkZGVkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BvcHVsYXRlX2xpYworICAgICBkb19wYWNrYWdlX3FhCisgICAgIGRvX3BvcHVsYXRlX3N5c3Jvb3QKKyAgICAgZG9fZGVwbG95CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRGVzcGl0ZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAiIiBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfUkVDUkRFUF9UQVNLUzwvZmlsZW5hbWU+IHZhcmlhYmxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYWJvdmUgZm91ciB0YXNrcyBhcmUgYWx3YXlzIGFkZGVkIHRvIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFRvIHNwZWNpZnkgdGFza3MgYmV5b25kIHRoZXNlIGZvdXIsIHlvdSBuZWVkIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNES19SRUNSREVQX1RBU0tTPC9maWxlbmFtZT4gdmFyaWFibGUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBkZWZpbmluZyBhZGRpdGlvbmFsIHRhc2tzIHRoYXQgYXJlIG5lZWRlZCBpbgorICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX1RBUkdFVFMnPjxmaWxlbmFtZT5TREtfVEFSR0VUUzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX1NZUyc+PGdsb3NzdGVybT5TREtfU1lTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfU1lTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBzeXN0ZW0sIGluY2x1ZGluZyB0aGUgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSwgZm9yIHdoaWNoIHRoZSBTREsgd2lsbCBiZSBidWlsdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aGljaCB0aGUgU0RLIHdpbGwgYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX1ZFTkRPUic+PGZpbGVuYW1lPlNES19WRU5ET1I8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX09TJz48ZmlsZW5hbWU+U0RLX09TPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSA8ZmlsZW5hbWU+U0RLX1NZUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHlvdXJzZWxmLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19UQVJHRVRfTUFOSUZFU1QnPjxnbG9zc3Rlcm0+U0RLX1RBUkdFVF9NQU5JRkVTVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX1RBUkdFVF9NQU5JRkVTVFtkb2NdID0gIlRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4gVGhpcyBmaWxlIGxpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cAorICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgY29udGFpbnMgcGFja2FnZSBpbmZvcm1hdGlvbiBvbiBhIGxpbmUtcGVyLXBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgYmFzaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+cGFja2FnZW5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+cGFja2FnZWFyY2g8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZGVmaW5lcyB0aGUgbWFuaWZlc3QgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19UQVJHRVRfTUFOSUZFU1QgPSAiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXJnZXQubWFuaWZlc3QiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGlzIGRlcml2ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfREVQTE9ZJz48ZmlsZW5hbWU+U0RLX0RFUExPWTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9PVVRQVVROQU1FJz48ZmlsZW5hbWU+VE9PTENIQUlOX09VVFBVVE5BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19UQVJHRVRTJz48Z2xvc3N0ZXJtPlNES19UQVJHRVRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtfVEFSR0VUU1tkb2NdID0gIkEgbGlzdCBvZiB0YXJnZXRzIHRvIGluc3RhbGwgZnJvbSBzaGFyZWQgc3RhdGUgYXMgcGFydCBvZiB0aGUgc3RhbmRhcmQgb3IgZXh0ZW5zaWJsZSBTREsgaW5zdGFsbGF0aW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHRhcmdldHMgdG8gaW5zdGFsbCBmcm9tIHNoYXJlZCBzdGF0ZSBhcyBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBvciBleHRlbnNpYmxlIFNESyBpbnN0YWxsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICIke1BOfSIgKGkuZS4gdGhlIGltYWdlIGZyb20gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgdGhlIFNESyBpcyBidWlsdCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U0RLX1RBUkdFVFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBhbgorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCB2YXJpYWJsZSBhbmQgdHlwaWNhbGx5IHdvdWxkIG5vdCBiZSBjaGFuZ2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19USVRMRSc+PGdsb3NzdGVybT5TREtfVElUTEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNES19USVRMRVtkb2NdID0gIlRoZSB0aXRsZSB0byBiZSBwcmludGVkIHdoZW4gcnVubmluZyB0aGUgU0RLIGluc3RhbGxlci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0aXRsZSB0byBiZSBwcmludGVkIHdoZW4gcnVubmluZyB0aGUgU0RLIGluc3RhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB0aXRsZSBpcyBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19OQU1FJz48ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wb3B1bGF0ZS1zZGstKic+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU0RLX1RJVExFID8/PSAiJHtAZC5nZXRWYXIoJ0RJU1RST19OQU1FJykgb3IgZC5nZXRWYXIoJ0RJU1RSTycpfSBTREsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBkZWZhdWx0IGRpc3RyaWJ1dGlvbiAicG9reSIsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfVElUTEU8L2ZpbGVuYW1lPiBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgIlBva3kgKFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIERpc3RybykiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNoYW5nZSB0aGlzIGRlZmF1bHQgdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1jaGFuZ2luZy10aGUtc2RrLWluc3RhbGxlci10aXRsZSc+Q2hhbmdpbmcgdGhlIEV4dGVuc2libGUgU0RLIEluc3RhbGxlciBUaXRsZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtfVVBEQVRFX1VSTCc+PGdsb3NzdGVybT5TREtfVVBEQVRFX1VSTDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX1VQREFURV9VUkxbZG9jXSA9ICJBbiBvcHRpb25hbCBVUkwgZm9yIGFuIHVwZGF0ZSBzZXJ2ZXIgZm9yIHRoZSBleHRlbnNpYmxlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFuIG9wdGlvbmFsIFVSTCBmb3IgYW4gdXBkYXRlIHNlcnZlciBmb3IgdGhlIGV4dGVuc2libGUKKyAgICAgICAgICAgICAgICAgICAgU0RLLgorICAgICAgICAgICAgICAgICAgICBJZiBzZXQsIHRoZSB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHVwZGF0ZSBzZXJ2ZXIgd2hlbgorICAgICAgICAgICAgICAgICAgICBydW5uaW5nIDxmaWxlbmFtZT5kZXZ0b29sIHNkay11cGRhdGU8L2ZpbGVuYW1lPiB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19WRU5ET1InPjxnbG9zc3Rlcm0+U0RLX1ZFTkRPUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX1ZFTkRPUltkb2NdID0gIlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgU0RLIHZlbmRvci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgU0RLIHZlbmRvci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtfVkVSU0lPTic+PGdsb3NzdGVybT5TREtfVkVSU0lPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLX1ZFUlNJT05bZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHZlcnNpb24gZm9yIHRoZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIGRlZmluZXMgdGhlIDxmaWxlbmFtZT5TREtfVkVSU0lPTjwvZmlsZW5hbWU+IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU0RLX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoJ0RJU1RST19WRVJTSU9OJykucmVwbGFjZSgnc25hcHNob3QtJHtEQVRFfScsJ3NuYXBzaG90Jyl9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fVkVSU0lPTic+PGZpbGVuYW1lPkRJU1RST19WRVJTSU9OPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREFURSc+PGZpbGVuYW1lPkRBVEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES0VYVFBBVEgnPjxnbG9zc3Rlcm0+U0RLRVhUUEFUSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLRVhUUEFUSFtkb2NdID0gIlRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIHRoZSBleHRlbnNpYmxlIFNESy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIHRoZSBFeHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBkaXJlY3RvcnkgaXMgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES0VYVFBBVEggPz89ICJ+LyR7QGQuZ2V0VmFyKCdESVNUUk8nKX1fc2RrIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZGVmYXVsdCBkaXN0cmlidXRpb24gInBva3kiLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES0VYVFBBVEg8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gInBva3lfc2RrIi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjaGFuZ2UgdGhpcyBkZWZhdWx0IGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWNoYW5naW5nLXRoZS1kZWZhdWx0LXNkay1pbnN0YWxsYXRpb24tZGlyZWN0b3J5Jz5DaGFuZ2luZyB0aGUgRGVmYXVsdCBTREsgSW5zdGFsbGF0aW9uIERpcmVjdG9yeTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtJTUFHRV9GRUFUVVJFUyc+PGdsb3NzdGVybT5TREtJTUFHRV9GRUFUVVJFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0RLSU1BR0VfRkVBVFVSRVNbZG9jXSA9ICJFcXVpdmFsZW50IHRvIElNQUdFX0ZFQVRVUkVTLiBIb3dldmVyLCB0aGlzIHZhcmlhYmxlIGFwcGxpZXMgdG8gdGhlIFNESyBnZW5lcmF0ZWQgZnJvbSBhbiBpbWFnZSB1c2luZyB0aGUgY29tbWFuZCAnYml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgaW1hZ2VuYW1lJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+SU1BR0VfRkVBVFVSRVM8L2xpbms+PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgdmFyaWFibGUgYXBwbGllcyB0byB0aGUgU0RLIGdlbmVyYXRlZCBmcm9tIGFuCisgICAgICAgICAgICAgICAgICAgIGltYWdlIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLTUFDSElORSc+PGdsb3NzdGVybT5TREtNQUNISU5FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtNQUNISU5FW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUgKGkuZS4gaTY4NiBvciB4ODZfNjQpIGZvciB3aGljaCB0byBidWlsZCBTREsgaXRlbXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFjaGluZSBmb3Igd2hpY2ggdGhlIFNESyBpcyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBTREsgaXMgYnVpbHQgc3VjaCB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgIHJ1bnMgb24gdGhlIHRhcmdldCB5b3Ugc3BlY2lmeSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+IHZhbHVlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgcG9pbnRzIHRvIGEgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHVuZGVyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL21hY2hpbmUtc2RrLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgImk2ODYiIGFuZCAieDg2XzY0IiBhcyBwb3NzaWJsZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHZhcmlhYmxlLiBUaGUgdmFyaWFibGUgZGVmYXVsdHMgdG8gImk2ODYiCisgICAgICAgICAgICAgICAgICAgICBhbmQgaXMgc2V0IGluIHRoZSBsb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU0RLTUFDSElORSA/PSAiaTY4NiIKKyAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3Qgc2V0IHRoZSA8ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbywgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBub3QgdGFrZSBhZmZlY3QuCisgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLUEFUSCc+PGdsb3NzdGVybT5TREtQQVRIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTREtQQVRIW2RvY10gPSAiRGVmaW5lcyB0aGUgcGF0aCBvZmZlcmVkIHRvIHRoZSB1c2VyIGZvciBpbnN0YWxsYXRpb24gb2YgdGhlIFNESyB0aGF0IGlzIGdlbmVyYXRlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHBhdGggb2ZmZXJlZCB0byB0aGUgdXNlciBmb3IgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBTREsgdGhhdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGFwcGVhcnMgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIGluc3RhbGxpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIFNESyB3aGVuIHlvdSBydW4gdGhlIFNESydzIGluc3RhbGxhdGlvbiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIG9mZmVyZWQgcGF0aCB3aGVuIHlvdSBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHNjcmlwdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtUQVJHRVRTWVNST09UJz48Z2xvc3N0ZXJtPlNES1RBUkdFVFNZU1JPT1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNES1RBUkdFVFNZU1JPT1RbZG9jXSA9ICJGdWxsIHBhdGggdG8gdGhlIHN5c3Jvb3QgdXNlZCBmb3IgY3Jvc3MtY29tcGlsYXRpb24gd2l0aGluIGFuIFNESyBhcyBpdCB3aWxsIGJlIHdoZW4gaW5zdGFsbGVkIGludG8gdGhlIGRlZmF1bHQgU0RLUEFUSC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmdWxsIHBhdGggdG8gdGhlIHN5c3Jvb3QgdXNlZCBmb3IgY3Jvc3MtY29tcGlsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIGFuIFNESyBhcyBpdCB3aWxsIGJlIHdoZW4gaW5zdGFsbGVkIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES1BBVEgnPjxmaWxlbmFtZT5TREtQQVRIPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNFQ1RJT04nPjxnbG9zc3Rlcm0+U0VDVElPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0VDVElPTltkb2NdID0gIlRoZSBzZWN0aW9uIGluIHdoaWNoIHBhY2thZ2VzIHNob3VsZCBiZSBjYXRlZ29yaXplZC4gUGFja2FnZSBtYW5hZ2VtZW50IHV0aWxpdGllcyBjYW4gbWFrZSB1c2Ugb2YgdGhpcyB2YXJpYWJsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzZWN0aW9uIGluIHdoaWNoIHBhY2thZ2VzIHNob3VsZCBiZSBjYXRlZ29yaXplZC4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBtYW5hZ2VtZW50IHV0aWxpdGllcyBjYW4gbWFrZSB1c2Ugb2YgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TRUxFQ1RFRF9PUFRJTUlaQVRJT04nPjxnbG9zc3Rlcm0+U0VMRUNURURfT1BUSU1JWkFUSU9OPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTRUxFQ1RFRF9PUFRJTUlaQVRJT05bZG9jXSA9ICJUaGUgdmFyaWFibGUgdGFrZXMgdGhlIHZhbHVlIG9mIEZVTExfT1BUSU1JWkFUSU9OIHVubGVzcyBERUJVR19CVUlMRCA9ICcxJy4gSW4gdGhpcyBjYXNlLCB0aGUgdmFsdWUgb2YgREVCVUdfT1BUSU1JWkFUSU9OIGlzIHVzZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIG9wdGltaXphdGlvbiBmbGFncyBwYXNzZWQgdG8gdGhlIEMgY29tcGlsZXIKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZsYWdzIGFyZSBwYXNzZWQgdGhyb3VnaCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9DRkxBR1MnPjxmaWxlbmFtZT5UQVJHRVRfQ0ZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNFTEVDVEVEX09QVElNSVpBVElPTjwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHRha2VzIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUZVTExfT1BUSU1JWkFUSU9OJz5GVUxMX09QVElNSVpBVElPTjwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB1bmxlc3MgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERUJVR19CVUlMRCc+REVCVUdfQlVJTEQ8L2xpbms+PC9maWxlbmFtZT4gPSAiMSIuCisgICAgICAgICAgICAgICAgICAgIElmIHRoYXQgaXMgdGhlIGNhc2UsIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFQlVHX09QVElNSVpBVElPTic+REVCVUdfT1BUSU1JWkFUSU9OPC9saW5rPjwvZmlsZW5hbWU+IGlzIHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0VSSUFMX0NPTlNPTEUnPjxnbG9zc3Rlcm0+U0VSSUFMX0NPTlNPTEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNFUklBTF9DT05TT0xFW2RvY10gPSAiRGVmaW5lcyB0aGUgc2VyaWFsIGNvbnNvbGVzIChUVFlzKSB0byBlbmFibGUgdXNpbmcgZ2V0dHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dldHR5XyhVbml4KSc+Z2V0dHk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIFRUWSBkZXZpY2UgbmFtZSBzZXBhcmF0ZWQgYnkgYSBzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgVFRZIGRldmljZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGRlcHJlY2F0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNFUklBTF9DT05TT0xFUyc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TRVJJQUxfQ09OU09MRVMnPjxnbG9zc3Rlcm0+U0VSSUFMX0NPTlNPTEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTRVJJQUxfQ09OU09MRVNbZG9jXSA9ICJEZWZpbmVzIHRoZSBzZXJpYWwgY29uc29sZXMgKFRUWXMpIHRvIGVuYWJsZSB1c2luZyBnZXR0eS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgYSBzZXJpYWwgY29uc29sZSAoVFRZKSB0byBlbmFibGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2V0dHlfKFVuaXgpJz5nZXR0eTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIGJhdWQgcmF0ZSBmb2xsb3dlZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgVFRZIGRldmljZSBuYW1lIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbi4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHNwYWNlcyB0byBzZXBhcmF0ZSBtdWx0aXBsZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNFUklBTF9DT05TT0xFUyA9ICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0VSSUFMX0NPTlNPTEVTX0NIRUNLJz48Z2xvc3N0ZXJtPlNFUklBTF9DT05TT0xFU19DSEVDSzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0VSSUFMX0NPTlNPTEVTX0NIRUNLW2RvY10gPSAiU2VsZWN0ZWQgU0VSSUFMX0NPTlNPTEVTIHRvIGNoZWNrIGFnYWluc3QgL3Byb2MvY29uc29sZSBiZWZvcmUgZW5hYmxpbmcgdXNpbmcgZ2V0dHkuIFN1cHBvcnRlZCBvbmx5IGJ5IFN5c1Zpbml0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHNlcmlhbCBjb25zb2xlcywgd2hpY2ggbXVzdCBiZSBsaXN0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNFUklBTF9DT05TT0xFUyc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2sgYWdhaW5zdCA8ZmlsZW5hbWU+L3Byb2MvY29uc29sZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBlbmFibGluZyB0aGVtIHVzaW5nIGdldHR5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGFsbG93cyBhbGlhc2luZyBpbiB0aGUgZm9ybWF0OgorICAgICAgICAgICAgICAgICAgICAmbHQ7ZGV2aWNlJmd0OzombHQ7YWxpYXMmZ3Q7LgorICAgICAgICAgICAgICAgICAgICBJZiBhIGRldmljZSB3YXMgbGlzdGVkIGFzICJzY2xwX2xpbmUwIgorICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+L2Rldi88L2ZpbGVuYW1lPiBhbmQgInR0eVMwIiB3YXMgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT4vcHJvYy9jb25zb2xlPC9maWxlbmFtZT4sIHlvdSB3b3VsZCBkbyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNFUklBTF9DT05TT0xFU19DSEVDSyA9ICJzbGNwX2xpbmUwOnR0eVMwIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIHdpdGggU3lzVmluaXQKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gbm90IHdpdGggc3lzdGVtZCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyc+PGdsb3NzdGVybT5TSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTW2RvY10gPSAiQSBsaXN0IG9mIHJlY2lwZSBkZXBlbmRlbmNpZXMgdGhhdCBzaG91bGQgbm90IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHNpZ25hdHVyZXMgb2YgdGFza3MgZnJvbSBvbmUgcmVjaXBlIHdoZW4gdGhleSBkZXBlbmQgb24gdGFza3MgZnJvbSBhbm90aGVyIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiByZWNpcGUgZGVwZW5kZW5jaWVzIHRoYXQgc2hvdWxkIG5vdCBiZSB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZSBzaWduYXR1cmVzIG9mIHRhc2tzIGZyb20gb25lIHJlY2lwZSB3aGVuIHRoZXkKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIHRhc2tzIGZyb20gYW5vdGhlciByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiaW50b25lLT5tcGxheWVyMiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgPGZpbGVuYW1lPmludG9uZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgb24gPGZpbGVuYW1lPm1wbGF5ZXIyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBzcGVjaWFsIHRva2VuIDxmaWxlbmFtZT4iKiI8L2ZpbGVuYW1lPiBvbgorICAgICAgICAgICAgICAgICAgICB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgdGhlIGRlcGVuZGVuY3kgdG8gbWF0Y2ggYWxsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgZXhjZXB0IHRoZSBvbmUgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiKi0+cXVpbHQtbmF0aXZlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBhbGwgcmVjaXBlcyBleGNlcHQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnF1aWx0LW5hdGl2ZTwvZmlsZW5hbWU+IGlnbm9yZSB0YXNrCisgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMgZnJvbSB0aGUgPGZpbGVuYW1lPnF1aWx0LW5hdGl2ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB3aGVuIGRldGVybWluaW5nIHRoZWlyIHRhc2sgc2lnbmF0dXJlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIG9mIHRoaXMgdmFyaWFibGUgaXMgb25lIG1lY2hhbmlzbSB0byByZW1vdmUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYWZmZWN0IHRhc2sgc2lnbmF0dXJlcyBhbmQgdGh1cyBmb3JjZSByZWJ1aWxkcyB3aGVuIGEKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhZGQgYW4gaW5hcHByb3ByaWF0ZSBkZXBlbmRlbmN5IGZvciBhIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLCB0aGUgc29mdHdhcmUgbWlnaHQgYnJlYWsgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lIGlmIHRoZSBpbnRlcmZhY2Ugb2YgdGhlIHNlY29uZCByZWNpcGUgd2FzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIGFmdGVyIHRoZSBmaXJzdCByZWNpcGUgaGFkIGJlZW4gYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TSUdHRU5fRVhDTFVERVJFQ0lQRVNfQUJJU0FGRSc+PGdsb3NzdGVybT5TSUdHRU5fRVhDTFVERVJFQ0lQRVNfQUJJU0FGRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU0lHR0VOX0VYQ0xVREVSRUNJUEVTX0FCSVNBRkVbZG9jXSA9ICJBIGxpc3Qgb2YgcmVjaXBlcyB0aGF0IGFyZSBjb21wbGV0ZWx5IHN0YWJsZSBhbmQgd2lsbCBuZXZlciBjaGFuZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgcmVjaXBlcyB0aGF0IGFyZSBjb21wbGV0ZWx5IHN0YWJsZSBhbmQgd2lsbAorICAgICAgICAgICAgICAgICAgICBuZXZlciBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBBQkkgZm9yIHRoZSByZWNpcGVzIGluIHRoZSBsaXN0IGFyZSBwcmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZyb20gdGhlIHRhc2tzIHJ1biB0byBidWlsZCB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBVc2Ugb2YgdGhpcyB2YXJpYWJsZSBpcyBvbmUgd2F5IHRvIHJlbW92ZSBkZXBlbmRlbmNpZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICBvbmUgcmVjaXBlIG9uIGFub3RoZXIgdGhhdCBhZmZlY3QgdGFzayBzaWduYXR1cmVzIGFuZAorICAgICAgICAgICAgICAgICAgICB0aHVzIGZvcmNlIHJlYnVpbGRzIHdoZW4gdGhlIHJlY2lwZSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Q2F1dGlvbjwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYWRkIGFuIGluYXBwcm9wcmlhdGUgdmFyaWFibGUgdG8gdGhpcyBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvZnR3YXJlIG1pZ2h0IGJyZWFrIGF0IHJ1bnRpbWUgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2Ugb2YgdGhlIHJlY2lwZSB3YXMgY2hhbmdlZCBhZnRlciB0aGUgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhZCBiZWVuIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0lURUlORk9fQklUUyc+PGdsb3NzdGVybT5TSVRFSU5GT19CSVRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTSVRFSU5GT19CSVRTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYml0cyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0gQ1BVLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYml0cyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0gQ1BVLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgc2hvdWxkIGJlIGVpdGhlciAiMzIiIG9yICI2NCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0lURUlORk9fRU5ESUFOTkVTUyc+PGdsb3NzdGVybT5TSVRFSU5GT19FTkRJQU5ORVNTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTSVRFSU5GT19FTkRJQU5ORVNTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBlbmRpYW4gYnl0ZSBvcmRlciBvZiB0aGUgdGFyZ2V0IHN5c3RlbS4gVGhlIHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgJ2xlJyBmb3IgJ2xpdHRsZS1lbmRpYW4nIG9yICdiZScgZm9yICdiaWctZW5kaWFuJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZW5kaWFuIGJ5dGUgb3JkZXIgb2YgdGhlIHRhcmdldCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBzaG91bGQgYmUgZWl0aGVyICJsZSIgZm9yIGxpdHRsZS1lbmRpYW4gb3IgImJlIiBmb3IgYmlnLWVuZGlhbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TS0lQX0ZJTEVERVBTJz48Z2xvc3N0ZXJtPlNLSVBfRklMRURFUFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNLSVBfRklMRURFUFNbZG9jXSA9ICJFbmFibGVzIHlvdSB0byByZW1vdmUgYWxsIGZpbGVzIGZyb20gdGhlICdQcm92aWRlcycgc2VjdGlvbiBvZiBhbiBSUE0gcGFja2FnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgcmVtb3ZhbCBvZiBhbGwgZmlsZXMgZnJvbSB0aGUgIlByb3ZpZGVzIiBzZWN0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgIGFuIFJQTSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBSZW1vdmFsIG9mIHRoZXNlIGZpbGVzIGlzIHJlcXVpcmVkIGZvciBwYWNrYWdlcyBjb250YWluaW5nCisgICAgICAgICAgICAgICAgICAgIHByZWJ1aWx0IGJpbmFyaWVzIGFuZCBsaWJyYXJpZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlic3RkYysrPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgZmlsZSByZW1vdmFsLCBzZXQgdGhlIHZhcmlhYmxlIHRvICIxIiBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgaW4geW91cjoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNLSVBfRklMRURFUFMgPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNPQ19GQU1JTFknPjxnbG9zc3Rlcm0+U09DX0ZBTUlMWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU09DX0ZBTUlMWVtkb2NdID0gIkdyb3VwcyB0b2dldGhlciBtYWNoaW5lcyBiYXNlZCB1cG9uIHRoZSBzYW1lIGZhbWlseSBvZiBTT0MgKFN5c3RlbSBPbiBDaGlwKS4gWW91IHR5cGljYWxseSBzZXQgdGhpcyB2YXJpYWJsZSBpbiBhIGNvbW1vbiAuaW5jIGZpbGUgdGhhdCB5b3UgaW5jbHVkZSBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBvZiBhbGwgdGhlIG1hY2hpbmVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgR3JvdXBzIHRvZ2V0aGVyIG1hY2hpbmVzIGJhc2VkIHVwb24gdGhlIHNhbWUgZmFtaWx5CisgICAgICAgICAgICAgICAgICAgIG9mIFNPQyAoU3lzdGVtIE9uIENoaXApLgorICAgICAgICAgICAgICAgICAgICBZb3UgdHlwaWNhbGx5IHNldCB0aGlzIHZhcmlhYmxlIGluIGEgY29tbW9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4gZmlsZSB0aGF0IHlvdSBpbmNsdWRlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIG9mIGFsbCB0aGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS9pbmNsdWRlL3NvYy1mYW1pbHkuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHZhcmlhYmxlIHRvIGFwcGVhciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVPVkVSUklERVMnPjxmaWxlbmFtZT5NQUNISU5FT1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU09MSUJTJz48Z2xvc3N0ZXJtPlNPTElCUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU09MSUJTW2RvY10gPSAiRGVmaW5lcyB0aGUgc3VmZml4IGZvciBzaGFyZWQgbGlicmFyaWVzIHVzZWQgb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHN1ZmZpeCBmb3Igc2hhcmVkIGxpYnJhcmllcyB1c2VkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgcGxhdGZvcm0uCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgc3VmZml4IGlzICIuc28uKiIgZm9yIGFsbCBMaW51eC1iYXNlZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zIGFuZCBpcyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgc2VlIHRoaXMgdmFyaWFibGUgcmVmZXJlbmNlZCBpbiB0aGUgZGVmYXVsdCB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPkZJTEVTXyR7UE59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU09MSUJTREVWJz48Z2xvc3N0ZXJtPlNPTElCU0RFVjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU09MSUJTREVWW2RvY10gPSAiRGVmaW5lcyB0aGUgc3VmZml4IGZvciB0aGUgZGV2ZWxvcG1lbnQgc3ltYm9saWMgbGluayAoc3ltbGluaykgZm9yIHNoYXJlZCBsaWJyYXJpZXMgb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHN1ZmZpeCBmb3IgdGhlIGRldmVsb3BtZW50IHN5bWJvbGljIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgKHN5bWxpbmspIGZvciBzaGFyZWQgbGlicmFyaWVzIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0uCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgc3VmZml4IGlzICIuc28iIGZvciBMaW51eC1iYXNlZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zIGFuZCBpcyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgc2VlIHRoaXMgdmFyaWFibGUgcmVmZXJlbmNlZCBpbiB0aGUgZGVmYXVsdCB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPkZJTEVTXyR7UE59LWRldjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNPVVJDRV9NSVJST1JfRkVUQ0gnPjxnbG9zc3Rlcm0+U09VUkNFX01JUlJPUl9GRVRDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU09VUkNFX01JUlJPUl9GRVRDSFtkb2NdID0gIlNldCBhcyBwYXJ0IG9mIGEgc291cmNlIG1pcnJvciBnZW5lcmF0aW9uIHNjcmlwdCB0byBza2lwIENPTVBBVElCTEVfTUFDSElORSBhbmQgQ09NUEFUSUJMRV9IT1NUIGNoZWNrcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGFyZSBmZXRjaGluZyBmaWxlcyB0byBjcmVhdGUgYSBtaXJyb3Igb2Ygc291cmNlcworICAgICAgICAgICAgICAgICAgICAoaS5lLiBjcmVhdGluZyBhIHNvdXJjZSBtaXJyb3IpLCBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TT1VSQ0VfTUlSUk9SX0ZFVENIPC9maWxlbmFtZT4gdG8gIjEiIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgZW5zdXJlcworICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIGZvciBhbGwgcmVjaXBlcyBhcmUgZmV0Y2hlZCByZWdhcmRsZXNzIG9mCisgICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgb3Igbm90IGEgcmVjaXBlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgQSByZWNpcGUgaXMgY29uc2lkZXJlZCBpbmNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudGx5CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgbWFjaGluZSB3aGVuIGVpdGhlciBvciBib3RoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09NUEFUSUJMRV9NQUNISU5FJz48ZmlsZW5hbWU+Q09NUEFUSUJMRV9NQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09NUEFUSUJMRV9IT1NUJz48ZmlsZW5hbWU+Q09NUEFUSUJMRV9IT1NUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBzcGVjaWZ5IGNvbXBhdGliaWxpdHkgd2l0aCBhIG1hY2hpbmUgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhbiB0aGF0IG9mIHRoZSBjdXJyZW50IG1hY2hpbmUgb3IgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TT1VSQ0VfTUlSUk9SX0ZFVENIPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB5b3UgYXJlIGNyZWF0aW5nIGEgc291cmNlIG1pcnJvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3Qgc2V0IHRoZSB2YXJpYWJsZSBkdXJpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU09VUkNFX01JUlJPUl9VUkwnPjxnbG9zc3Rlcm0+U09VUkNFX01JUlJPUl9VUkw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNPVVJDRV9NSVJST1JfVVJMW2RvY10gPSAiVVJMIHRvIHNvdXJjZSBtaXJyb3IgdGhhdCB3aWxsIGJlIHVzZWQgYmVmb3JlIGZldGNoaW5nIGZyb20gb3JpZ2luYWwgU1JDX1VSSS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgeW91ciBvd24KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggdG8gZmlyc3QgZmV0Y2ggc291cmNlIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGZldGNoCisgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHVwc3RyZWFtIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHVzZSB0aGlzIHZhcmlhYmxlLCB5b3UgbXVzdCBnbG9iYWxseSBpbmhlcml0IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1vd24tbWlycm9ycyc+PGZpbGVuYW1lPm93bi1taXJyb3JzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGVuIHByb3ZpZGUgdGhlIFVSTCB0byB5b3VyIG1pcnJvcnMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGdlbmVyYWwgc3ludGF4OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVQgKz0gIm93bi1taXJyb3JzIgorICAgICBTT1VSQ0VfTUlSUk9SX1VSTCA9ICJodHRwOi8vPHJlcGxhY2VhYmxlPmV4YW1wbGU8L3JlcGxhY2VhYmxlPi5jb20vPHJlcGxhY2VhYmxlPm15X3NvdXJjZV9taXJyb3I8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBvbmx5IGEgc2luZ2xlIFVSTCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNPVVJDRV9NSVJST1JfVVJMPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TUERYTElDRU5TRU1BUCc+PGdsb3NzdGVybT5TUERYTElDRU5TRU1BUDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1BEWExJQ0VOU0VNQVBbZG9jXSA9ICJNYXBzIGNvbW1vbmx5IHVzZWQgbGljZW5zZSBuYW1lcyB0byB0aGVpciBTUERYIGNvdW50ZXJwYXJ0cyBmb3VuZCBpbiBtZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy8uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBNYXBzIGNvbW1vbmx5IHVzZWQgbGljZW5zZSBuYW1lcyB0byB0aGVpciBTUERYIGNvdW50ZXJwYXJ0cworICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZGVmYXVsdCA8ZmlsZW5hbWU+U1BEWExJQ0VOU0VNQVA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBtYXBwaW5ncywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2xpY2Vuc2VzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1BFQ0lBTF9QS0dTVUZGSVgnPjxnbG9zc3Rlcm0+U1BFQ0lBTF9QS0dTVUZGSVg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNQRUNJQUxfUEtHU1VGRklYW2RvY10gPSAiQSBsaXN0IG9mIHByZWZpeGVzIGZvciBQTiB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSB2YXJpYW50cyBvZiByZWNpcGVzIG9yIHBhY2thZ2VzLiBUaGUgbGlzdCBzcGVjaWZpZXMgdGhlIHByZWZpeGVzIHRvIHN0cmlwIG9mZiBkdXJpbmcgY2VydGFpbiBjaXJjdW1zdGFuY2VzIHN1Y2ggYXMgdGhlIGdlbmVyYXRpb24gb2YgdGhlIEJQTiB2YXJpYWJsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBwcmVmaXhlcyBmb3IgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4gdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgdmFyaWFudHMgb2YgcmVjaXBlcyBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpc3Qgc3BlY2lmaWVzIHRoZSBwcmVmaXhlcyB0byBzdHJpcCBvZmYgZHVyaW5nIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcworICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSA8bGluayBsaW5rZW5kPSd2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNQTF9CSU5BUlknPjxnbG9zc3Rlcm0+U1BMX0JJTkFSWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1BMX0JJTkFSWVtkb2NdID0gIlRoZSBmaWxlIHR5cGUgb2YgdGhlIFNlY29uZGFyeSBQcm9ncmFtIExvYWRlciAoU1BMKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHR5cGUgZm9yIHRoZSBTZWNvbmRhcnkgUHJvZ3JhbSBMb2FkZXIgKFNQTCkuCisgICAgICAgICAgICAgICAgICAgIFNvbWUgZGV2aWNlcyB1c2UgYW4gU1BMIGZyb20gd2hpY2ggdG8gYm9vdCAoZS5nLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgQmVhZ2xlQm9uZSBkZXZlbG9wbWVudCBib2FyZCkuCisgICAgICAgICAgICAgICAgICAgIEZvciBzdWNoIGNhc2VzLCB5b3UgY2FuIGRlY2xhcmUgdGhlIGZpbGUgdHlwZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgU1BMIGJpbmFyeSBpbiB0aGUgPGZpbGVuYW1lPnUtYm9vdC5pbmM8L2ZpbGVuYW1lPiBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIGZpbGUsIHdoaWNoIGlzIHVzZWQgaW4gdGhlIFUtQm9vdCByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBTUEwgZmlsZSB0eXBlIGlzIHNldCB0byAibnVsbCIgYnkgZGVmYXVsdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnUtYm9vdC5pbmM8L2ZpbGVuYW1lPiBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBTb21lIHZlcnNpb25zIG9mIHUtYm9vdCBidWlsZCBhbiBTUEwgKFNlY29uZCBQcm9ncmFtIExvYWRlcikgaW1hZ2UgdGhhdAorICAgICAjIHNob3VsZCBiZSBwYWNrYWdlZCBhbG9uZyB3aXRoIHRoZSB1LWJvb3QgYmluYXJ5IGFzIHdlbGwgYXMgcGxhY2VkIGluIHRoZQorICAgICAjIGRlcGxveSBkaXJlY3RvcnkuICBGb3IgdGhvc2UgdmVyc2lvbnMgdGhleSBjYW4gc2V0IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzCisgICAgICMgdG8gYWxsb3cgcGFja2FnaW5nIHRoZSBTUEwuCisgICAgIFNQTF9CSU5BUlkgPz0gIiIKKyAgICAgU1BMX0JJTkFSWU5BTUUgPz0gIiR7QG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoIlNQTF9CSU5BUlkiKSl9IgorICAgICBTUExfSU1BR0UgPz0gIiR7U1BMX0JJTkFSWU5BTUV9LSR7TUFDSElORX0tJHtQVn0tJHtQUn0iCisgICAgIFNQTF9TWU1MSU5LID89ICIke1NQTF9CSU5BUllOQU1FfS0ke01BQ0hJTkV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1BMX0JJTkFSWTwvZmlsZW5hbWU+IHZhcmlhYmxlIGhlbHBzIGZvcm0KKyAgICAgICAgICAgICAgICAgICAgdmFyaW91cyA8ZmlsZW5hbWU+U1BMXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBCZWFnbGVCb25lIG1hY2hpbmUgY29uZmlndXJhdGlvbiBleGFtcGxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgbmV3IEJTUCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNSQ19VUkknPjxnbG9zc3Rlcm0+U1JDX1VSSTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1JDX1VSSVtkb2NdID0gIlRoZSBsaXN0IG9mIHNvdXJjZSBmaWxlcyAtIGxvY2FsIG9yIHJlbW90ZS4gVGhpcyB2YXJpYWJsZSB0ZWxscyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3aGF0IGJpdHMgdG8gcHVsbCBpbiBmb3IgdGhlIGJ1aWxkIGFuZCBob3cgdG8gcHVsbCB0aGVtIGluLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIC0gbG9jYWwgb3IgcmVtb3RlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHRlbGxzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoaWNoIGJpdHMKKyAgICAgICAgICAgICAgICAgICAgdG8gcHVsbCBpbiBmb3IgdGhlIGJ1aWxkIGFuZCBob3cgdG8gcHVsbCB0aGVtIGluLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHJlY2lwZSBvciBhcHBlbmQgZmlsZSBvbmx5IG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgIGZldGNoIGEgdGFyYmFsbCBmcm9tIHRoZSBJbnRlcm5ldCwgdGhlIHJlY2lwZSBvcgorICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZSB1c2VzIGEgc2luZ2xlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZW50cnkuCisgICAgICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgcmVjaXBlIG9yIGFwcGVuZCBmaWxlIG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgIGZldGNoIGEgdGFyYmFsbCwgYXBwbHkgdHdvIHBhdGNoZXMsIGFuZCBpbmNsdWRlIGEgY3VzdG9tCisgICAgICAgICAgICAgICAgICAgIGZpbGUsIHRoZSByZWNpcGUgb3IgYXBwZW5kIGZpbGUgd291bGQgaW5jbHVkZSBmb3VyCisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcyBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBleHBsYWlucyB0aGUgYXZhaWxhYmxlIFVSSSBwcm90b2NvbHMuCisgICAgICAgICAgICAgICAgICAgIFVSSSBwcm90b2NvbHMgYXJlIGhpZ2hseSBkZXBlbmRlbnQgb24gcGFydGljdWxhciBCaXRCYWtlCisgICAgICAgICAgICAgICAgICAgIEZldGNoZXIgc3VibW9kdWxlcy4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBmZXRjaGVyIEJpdEJha2UgdXNlcywgdmFyaW91cyBVUkwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyBhcmUgZW1wbG95ZWQuCisgICAgICAgICAgICAgICAgICAgIEZvciBzcGVjaWZpY3Mgb24gdGhlIHN1cHBvcnRlZCBGZXRjaGVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYi1mZXRjaGVycyc+RmV0Y2hlcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZXRjaGVzIGZpbGVzLCB3aGljaCBhcmUgdXN1YWxseSBmaWxlcyBzaGlwcGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGxvY2FsIG1hY2hpbmUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+cGF0Y2g8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJ1aWxkIHN5c3RlbSBzZWFyY2hlcywgaW4gb3JkZXIsIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGRpcmVjdG9yaWVzLCB3aGljaCBhcmUgYXNzdW1lZCB0byBiZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZmlsZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT4ke0JQTn08L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIHJlY2lwZSBuYW1lIHdpdGhvdXQgYW55IHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCBvciB2ZXJzaW9uIG51bWJlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+JHtCUH08L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezxsaW5rIGxpbmtlbmQ9J3Zhci1CUE4nPkJQTjwvbGluaz59LSR7UFZ9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSByZWNpcGUgbmFtZSBhbmQgdmVyc2lvbiBidXQgd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IHNwZWNpYWwgcGFja2FnZSBuYW1lIHN1ZmZpeC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmZpbGVzIC08L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXMgd2l0aGluIGEgZGlyZWN0b3J5LCB3aGljaCBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4gYW5kIGlzIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nc2lkZSB0aGUgcmVjaXBlIG9yIGFwcGVuZCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBidWlsZCBzeXN0ZW0gdG8gcGljayB1cCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgdGhyb3VnaCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGZyb20geW91ciBhcHBlbmQgZmlsZSwgeW91IG5lZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byBleHRlbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBieSBhbHNvIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZyb20gd2l0aGluIHlvdXIgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+YnpyOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF6YWFyIHJldmlzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdDovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzIGZyb20gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXZpc2lvbiBjb250cm9sIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5vc2M6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gT1NDIChPcGVuU1VTRSBCdWlsZCBzZXJ2aWNlKSByZXZpc2lvbiBjb250cm9sIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5yZXBvOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVwbyAoR2l0KSByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Y2NyYzovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZldGNoZXMgZmlsZXMgZnJvbSBhIENsZWFyQ2FzZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+aHR0cDovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSW50ZXJuZXQgdXNpbmcgPGZpbGVuYW1lPmh0dHA8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmh0dHBzOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBJbnRlcm5ldCB1c2luZyA8ZmlsZW5hbWU+aHR0cHM8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmZ0cDovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgSW50ZXJuZXQgdXNpbmcgPGZpbGVuYW1lPmZ0cDwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Y3ZzOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgQ1ZTIHJldmlzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmhnOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgZmlsZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgTWVyY3VyaWFsICg8ZmlsZW5hbWU+aGc8L2ZpbGVuYW1lPikgcmV2aXNpb24gY29udHJvbCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cDQ6Ly88L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gRmV0Y2hlcyBmaWxlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBQZXJmb3JjZSAoPGZpbGVuYW1lPnA0PC9maWxlbmFtZT4pIHJldmlzaW9uIGNvbnRyb2wgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnNzaDovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHNlY3VyZSBzaGVsbC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN2bjovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBGZXRjaGVzIGZpbGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIFN1YnZlcnNpb24gKDxmaWxlbmFtZT5zdm48L2ZpbGVuYW1lPikgcmV2aXNpb24gY29udHJvbCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bnBtOi8vPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IEZldGNoZXMgSmF2YVNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMgZnJvbSBhIHJlZ2lzdHJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmQgYW5kIHJlY2lwZS1zcGVjaWZpYyBvcHRpb25zIGZvciA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSBzdGFuZGFyZCBvcHRpb25zOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+YXBwbHk8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gV2hldGhlciB0byBhcHBseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYXRjaCBvciBub3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGFwcGx5IHRoZSBwYXRjaC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN0cmlwbGV2ZWw8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gV2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGxldmVsIHRvIHVzZSB3aGVuIGFwcGx5aW5nIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBsZXZlbCBpcyAxLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cGF0Y2hkaXI8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gU3BlY2lmaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgcGF0Y2ggc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgb3B0aW9ucyBzcGVjaWZpYyB0byByZWNpcGVzIGJ1aWxkaW5nIGNvZGUgZnJvbSBhIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bWluZGF0ZTwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGx5IHRoZSBwYXRjaCBvbmx5IGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ0RBVEUnPjxmaWxlbmFtZT5TUkNEQVRFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDxmaWxlbmFtZT5taW5kYXRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5tYXhkYXRlPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHkgdGhlIHBhdGNoIG9ubHkgaWYgPGZpbGVuYW1lPlNSQ0RBVEU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBsYXRlciB0aGFuIDxmaWxlbmFtZT5tYXhkYXRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5taW5yZXY8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBseSB0aGUgcGF0Y2ggb25seSBpZiA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gPGZpbGVuYW1lPm1pbnJldjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bWF4cmV2PC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHkgdGhlIHBhdGNoIG9ubHkgaWYgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGxhdGVyIHRoYW4gPGZpbGVuYW1lPm1heHJldjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+cmV2PC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHkgdGhlIHBhdGNoIG9ubHkgaWYgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZXF1YWwgdG8gPGZpbGVuYW1lPnJldjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bm90cmV2PC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHkgdGhlIHBhdGNoIG9ubHkgaWYgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGVxdWFsIHRvIDxmaWxlbmFtZT5yZXY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCBvcHRpb25zIHdvcnRoIG1lbnRpb25pbmc6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT51bnBhY2s8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4gQ29udHJvbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGV0aGVyIG9yIG5vdCB0byB1bnBhY2sgdGhlIGZpbGUgaWYgaXQgaXMgYW4gYXJjaGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gdW5wYWNrIHRoZSBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGVzdHN1ZmZpeDwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgR2l0IGZldGNoZXIgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN1YmRpcjwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIGxvY2FsICg8ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoZXIgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmxvY2FsZGlyPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IFBsYWNlcyB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBleHRyYWN0cyBpdHMgY29udGVudHMpIGludG8gdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQ1ZTIGZldGNoZXIgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN1YnBhdGg8L2ZpbGVuYW1lPiAtPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW1pdHMgdGhlIGNoZWNrb3V0IHRvIGEgc3BlY2lmaWMgc3VicGF0aCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIHdoZW4gdXNpbmcgdGhlIEdpdCBmZXRjaGVyIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5uYW1lPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IFNwZWNpZmllcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSB0byBiZSB1c2VkIGZvciBhc3NvY2lhdGlvbiB3aXRoIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gY2hlY2tzdW1zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIGZpbGUgc3BlY2lmaWVkIGluIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kb3dubG9hZGZpbGVuYW1lPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+IFNwZWNpZmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlbmFtZSB1c2VkIHdoZW4gc3RvcmluZyB0aGUgZG93bmxvYWRlZCBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TUkNfVVJJX09WRVJSSURFU19QQUNLQUdFX0FSQ0gnPjxnbG9zc3Rlcm0+U1JDX1VSSV9PVkVSUklERVNfUEFDS0FHRV9BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTUkNfVVJJX09WRVJSSURFU19QQUNLQUdFX0FSQ0hbZG9jXSA9ICJCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgd2hldGhlciBTUkNfVVJJIGNvbnRhaW5zIGZpbGVzIHRoYXQgYXJlIG1hY2hpbmUtc3BlY2lmaWMuIElmIHNvLCB0aGUgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgY2hhbmdlcyBQQUNLQUdFX0FSQ0guIFNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byAnMCcgZGlzYWJsZXMgdGhpcyBiZWhhdmlvci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+U1JDX1VSSTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBmaWxlcyB0aGF0IGFyZSBtYWNoaW5lLXNwZWNpZmljLgorICAgICAgICAgICAgICAgICAgICBJZiBzbywgdGhlIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPlBBQ0tBR0VfQVJDSDwvbGluaz48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvICIwIiBkaXNhYmxlcyB0aGlzIGJlaGF2aW9yLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNSQ0RBVEUnPjxnbG9zc3Rlcm0+U1JDREFURTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1JDREFURVtkb2NdID0gIlRoZSBkYXRlIG9mIHRoZSBzb3VyY2UgY29kZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLiBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgb25seSBpZiB0aGUgc291cmNlIHdhcyBmZXRjaGVkIGZyb20gYSBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRhdGUgb2YgdGhlIHNvdXJjZSBjb2RlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYXBwbGllcyBvbmx5IGlmIHRoZSBzb3VyY2Ugd2FzIGZldGNoZWQgZnJvbSBhIFNvdXJjZSBDb2RlIE1hbmFnZXIgKFNDTSkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1JDUFYnPjxnbG9zc3Rlcm0+U1JDUFY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNSQ1BWW2RvY10gPSAiUmV0dXJucyB0aGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIGN1cnJlbnQgcGFja2FnZS4gVGhpcyBzdHJpbmcgaXMgdXNlZCB0byBoZWxwIGRlZmluZSB0aGUgdmFsdWUgb2YgUFYuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBSZXR1cm5zIHRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgY3VycmVudCBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0cmluZyBpcyB1c2VkIHRvIGhlbHAgZGVmaW5lIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TUkNQVjwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ1BWID0gIiR7QGJiLmZldGNoMi5nZXRfc3JjcmV2KGQpfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgbmVlZCB0byBkZWZpbmUgPGZpbGVuYW1lPlBWPC9maWxlbmFtZT4gZG8gc28KKyAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgaGVscCBvZiB0aGUgPGZpbGVuYW1lPlNSQ1BWPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPm9mb25vPC9maWxlbmFtZT4gcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b2Zvbm9fZ2l0LmJiPC9maWxlbmFtZT4pIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHk8L2ZpbGVuYW1lPiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBkZWZpbmVzIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGFzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFYgPSAiMC4xMi1naXQke1NSQ1BWfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNSQ1JFVic+PGdsb3NzdGVybT5TUkNSRVY8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNSQ1JFVltkb2NdID0gIlRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4gVGhpcyB2YXJpYWJsZSBhcHBsaWVzIHRvIFN1YnZlcnNpb24sIEdpdCwgTWVyY3VyaWFsLCBhbmQgQmF6YWFyIG9ubHkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHNvdXJjZSBjb2RlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYXBwbGllcyB0byBTdWJ2ZXJzaW9uLCBHaXQsIE1lcmN1cmlhbCwgYW5kCisgICAgICAgICAgICAgICAgICAgIEJhemFhciBvbmx5LgorICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gYnVpbGQgYSBmaXhlZCByZXZpc2lvbiBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gYXZvaWQgcGVyZm9ybWluZyBhIHF1ZXJ5IG9uIHRoZSByZW1vdGUgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBldmVyeSB0aW1lIEJpdEJha2UgcGFyc2VzIHlvdXIgcmVjaXBlLCB5b3Ugc2hvdWxkIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gdGhhdCBpcyBhCisgICAgICAgICAgICAgICAgICAgIGZ1bGwgcmV2aXNpb24gaWRlbnRpZmllciBhbmQgbm90IGp1c3QgYSB0YWcuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxpbWl0YXRpb25zIHdoZW4gaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdCByZXZpc2lvbiBvZiBzb2Z0d2FyZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQVVUT1JFVic+PGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlc2NyaXB0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhdXRvbWF0aWNhbGx5LWluY3JlbWVudGluZy1hLWJpbmFyeS1wYWNrYWdlLXJldmlzaW9uLW51bWJlcic+QXV0b21hdGljYWxseSBJbmNyZW1lbnRpbmcgYSBCaW5hcnkgUGFja2FnZSBSZXZpc2lvbiBOdW1iZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGlzIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNTVEFURV9ESVInPjxnbG9zc3Rlcm0+U1NUQVRFX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1NUQVRFX0RJUltkb2NdID0gIlRoZSBkaXJlY3RvcnkgZm9yIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGZvciB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNTVEFURV9NSVJST1JfQUxMT1dfTkVUV09SSyc+PGdsb3NzdGVybT5TU1RBVEVfTUlSUk9SX0FMTE9XX05FVFdPUks8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNTVEFURV9NSVJST1JfQUxMT1dfTkVUV09SS1tkb2NdID0gIklmIHNldCB0byAiMSIsIGFsbG93cyBmZXRjaGVzIGZyb20gbWlycm9ycyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gU1NUQVRFX01JUlJPUlMgdG8gd29yayBldmVuIHdoZW4gZmV0Y2hpbmcgZnJvbSB0aGUgbmV0d29yayBpcyBkaXNhYmxlZCBieSBzZXR0aW5nIEJCX05PX05FVFdPUksgdG8gIjEiLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICIxIiwgYWxsb3dzIGZldGNoZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICBtaXJyb3JzIHRoYXQgYXJlIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX01JUlJPUlMnPjxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byB3b3JrIGV2ZW4gd2hlbiBmZXRjaGluZyBmcm9tIHRoZSBuZXR3b3JrIGlzCisgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkIGJ5IHNldHRpbmcgPGZpbGVuYW1lPkJCX05PX05FVFdPUks8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byAiMSIuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1NUQVRFX01JUlJPUl9BTExPV19ORVRXT1JLPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPiB0byBwb2ludCB0byBhbgorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCBzZXJ2ZXIgZm9yIHlvdXIgc2hhcmVkIHN0YXRlIGNhY2hlLCBidXQKKyAgICAgICAgICAgICAgICAgICAgeW91IHdhbnQgdG8gZGlzYWJsZSBhbnkgb3RoZXIgZmV0Y2hpbmcgZnJvbSB0aGUgbmV0d29yay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGdsb3NzdGVybT5TU1RBVEVfTUlSUk9SUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1NUQVRFX01JUlJPUlNbZG9jXSA9ICJDb25maWd1cmVzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHNlYXJjaCBvdGhlciBtaXJyb3IgbG9jYXRpb25zIGZvciBwcmVidWlsdCBjYWNoZSBkYXRhIG9iamVjdHMgYmVmb3JlIGJ1aWxkaW5nIG91dCB0aGUgZGF0YS4gWW91IGNhbiBzcGVjaWZ5IGEgZmlsZXN5c3RlbSBkaXJlY3Rvcnkgb3IgYSByZW1vdGUgVVJMIHN1Y2ggYXMgSFRUUCBvciBGVFAuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBDb25maWd1cmVzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHNlYXJjaCBvdGhlcgorICAgICAgICAgICAgICAgICAgICBtaXJyb3IgbG9jYXRpb25zIGZvciBwcmVidWlsdCBjYWNoZSBkYXRhIG9iamVjdHMgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIG91dCB0aGUgZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSB3b3JrcyBsaWtlIGZldGNoZXIKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHBvaW50cyB0byB0aGUgY2FjaGUgbG9jYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIHN0YXRlIChzc3RhdGUpIG9iamVjdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBhIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IG9yIGEgcmVtb3RlIFVSTCBzdWNoCisgICAgICAgICAgICAgICAgICAgIGFzIEhUVFAgb3IgRlRQLgorICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb25zIHlvdSBzcGVjaWZ5IG5lZWQgdG8gY29udGFpbiB0aGUgc2hhcmVkIHN0YXRlCisgICAgICAgICAgICAgICAgICAgIGNhY2hlIChzc3RhdGUtY2FjaGUpIHJlc3VsdHMgZnJvbSBwcmV2aW91cyBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzc3RhdGUtY2FjaGUgeW91IHBvaW50IHRvIGNhbiBhbHNvIGJlIGZyb20gYnVpbGRzIG9uCisgICAgICAgICAgICAgICAgICAgIG90aGVyIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHBvaW50aW5nIHRvIHNzdGF0ZSBidWlsZCBhcnRpZmFjdHMgb24gYW5vdGhlciBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgIHRoYXQgdXNlcyBhIGRpZmZlcmVudCBHQ0MgdmVyc2lvbiBmb3IgbmF0aXZlIGJ1aWxkcywKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgY29uZmlndXJlIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHdpdGggYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXBzIGxvY2FsIHNlYXJjaCBwYXRocworICAgICAgICAgICAgICAgICAgICB0byBzZXJ2ZXIgcGF0aHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRocyBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1OQVRJVkVMU0JTVFJJTkcnPjxmaWxlbmFtZT5OQVRJVkVMU0JTVFJJTkc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy11bmluYXRpdmUnPjxmaWxlbmFtZT51bmluYXRpdmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIG1hcHMgdGhlIGxvY2FsIHNlYXJjaCBwYXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bml2ZXJzYWwtNC45PC9maWxlbmFtZT4gdG8gdGhlIHNlcnZlci1wcm92aWRlZAorICAgICAgICAgICAgICAgICAgICBwYXRoIDxyZXBsYWNlYWJsZT5zZXJ2ZXJfdXJsX3NzdGF0ZV9wYXRoPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1NUQVRFX01JUlJPUlMgPz0gZmlsZTovL3VuaXZlcnNhbC00LjkvKC4qKSBodHRwOi8vPHJlcGxhY2VhYmxlPnNlcnZlcl91cmxfc3N0YXRlX3BhdGg8L3JlcGxhY2VhYmxlPi91bml2ZXJzYWwtNC44L1wxIFxuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSBtaXJyb3IgdXNlcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBhZGQKKyAgICAgICAgICAgICAgICAgICAgIlBBVEgiIGF0IHRoZSBlbmQgYXMgc2hvd24gaW4gdGhlIGV4YW1wbGVzIGJlbG93LgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHN1YnN0aXR1dGVzIHRoZSBjb3JyZWN0IHBhdGggd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNTVEFURV9NSVJST1JTID89ICJcCisgICAgIGZpbGU6Ly8uKiBodHRwOi8vPHJlcGxhY2VhYmxlPnNvbWVzZXJ2ZXI8L3JlcGxhY2VhYmxlPi50bGQvc2hhcmUvc3N0YXRlL1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKKyAgICAgZmlsZTovLy4qIGZpbGU6Ly8vPHJlcGxhY2VhYmxlPnNvbWUtbG9jYWwtZGlyPC9yZXBsYWNlYWJsZT4vc3N0YXRlL1BBVEgiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TU1RBVEVfU0NBTl9GSUxFUyc+PGdsb3NzdGVybT5TU1RBVEVfU0NBTl9GSUxFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1NUQVRFX1NDQU5fRklMRVNbZG9jXSA9ICJDb250cm9scyB0aGUgbGlzdCBvZiBmaWxlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzY2FucyBmb3IgaGFyZGNvZGVkIGluc3RhbGxhdGlvbiBwYXRocy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xzIHRoZSBsaXN0IG9mIGZpbGVzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHNjYW5zIGZvciBoYXJkY29kZWQgaW5zdGFsbGF0aW9uIHBhdGhzLiBUaGUgdmFyaWFibGUgdXNlcyBhCisgICAgICAgICAgICAgICAgICAgIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVuYW1lcyAobm90IHBhdGhzKSB3aXRoIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkIGNoYXJhY3RlcnMgYWxsb3dlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGEgYnVpbGQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgb2JqZWN0IGR1cmluZyB0aGUgZmlyc3Qgc3RhZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgcHJlcGFyaW5nIHRoZSBzeXNyb290cy4gVGhhdCBvYmplY3QgaXMgc2Nhbm5lZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgaGFyZGNvZGVkIHBhdGhzIGZvciBvcmlnaW5hbCBpbnN0YWxsYXRpb24gbG9jYXRpb25zLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGFyZSBzY2FubmVkIGZvciBwYXRocyBpcyBjb250cm9sbGVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSA8ZmlsZW5hbWU+U1NUQVRFX1NDQU5fRklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCByZWNpcGVzIGFkZCBmaWxlcyB0aGV5IHdhbnQgdG8gYmUgc2Nhbm5lZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgPGZpbGVuYW1lPlNTVEFURV9TQ0FOX0ZJTEVTPC9maWxlbmFtZT4gcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGJlaW5nIGNvbXByZWhlbnNpdmVseSBzZXQuIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zc3RhdGUnPjxmaWxlbmFtZT5zc3RhdGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Mgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IGxpc3Qgb2YgZmlsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBwcm9jZXNzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN0YWdpbmcnPjxmaWxlbmFtZT5zdGFnaW5nPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFJz48Z2xvc3N0ZXJtPlNUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgL2xpYiBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi9saWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFHSU5HX0JBU0VMSUJESVInPjxnbG9zc3Rlcm0+U1RBR0lOR19CQVNFTElCRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0JBU0VMSUJESVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIC9saWIgc3ViZGlyZWN0b3J5IG9mIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0IChTVEFHSU5HX0RJUl9IT1NUKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi9saWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIGZvciB3aGljaCB0aGUgY3VycmVudCByZWNpcGUgaXMgYmVpbmcgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19CSU5ESVInPjxnbG9zc3Rlcm0+U1RBR0lOR19CSU5ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfQklORElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSAvdXNyL2JpbiBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0IGZvciB3aGljaCB0aGUgY3VycmVudCByZWNpcGUgaXMgYmVpbmcgYnVpbHQgKFNUQUdJTkdfRElSX0hPU1QpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9iaW48L2ZpbGVuYW1lPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0IGZvciB3aGljaCB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICByZWNpcGUgaXMgYmVpbmcgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19CSU5ESVJfQ1JPU1MnPjxnbG9zc3Rlcm0+U1RBR0lOR19CSU5ESVJfQ1JPU1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfQklORElSX0NST1NTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBiaW5hcnkgY29uZmlndXJhdGlvbiBzY3JpcHRzLiBUaGVzZSBzY3JpcHRzIHByb3ZpZGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgc29mdHdhcmUgdGhhdCB3YW50cyB0byBtYWtlIHVzZSBvZiBsaWJyYXJpZXMgb3IgaW5jbHVkZSBmaWxlcyBwcm92aWRlZCBieSB0aGUgc29mdHdhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY3JpcHQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGJpbmFyeQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHNjcmlwdHMuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwdHMgcHJvdmlkZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICBvdGhlciBzb2Z0d2FyZSB0aGF0IHdhbnRzIHRvIG1ha2UgdXNlIG9mIGxpYnJhcmllcyBvcgorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGVzIHByb3ZpZGVkIGJ5IHRoZSBzb2Z0d2FyZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0eWxlIG9mIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gbGFyZ2VseQorICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgPGZpbGVuYW1lPnBrZy1jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgc3VwcG9ydGVkIGJ5IHRoZSBsaWJyYXJ5IHRvIHdoaWNoIHlvdSBhcmUgbGlua2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIHJlY29tbWVuZGVkIHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2ctY29uZmlnPC9maWxlbmFtZT4gaW5zdGVhZCBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBjb25maWd1cmF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfQklORElSX05BVElWRSc+PGdsb3NzdGVybT5TVEFHSU5HX0JJTkRJUl9OQVRJVkU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfQklORElSX05BVElWRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgL3Vzci9iaW4gc3ViZGlyZWN0b3J5IG9mIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2JpbjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfREFUQURJUic+PGdsb3NzdGVybT5TVEFHSU5HX0RBVEFESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfREFUQURJUltkb2NdID0gIlNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgL3Vzci9zaGFyZSBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0IGZvciB3aGljaCB0aGUgY3VycmVudCByZWNpcGUgaXMgYmVpbmcgYnVpbHQgKFNUQUdJTkdfRElSX0hPU1QpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi91c3Ivc2hhcmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHJlY2lwZSBpcyBiZWluZyBidWlsdAorICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19EQVRBRElSX05BVElWRSc+PGdsb3NzdGVybT5TVEFHSU5HX0RBVEFESVJfTkFUSVZFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0RBVEFESVJfTkFUSVZFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSAvdXNyL3NoYXJlIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSA8ZmlsZW5hbWU+L3Vzci9zaGFyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfRElSJz48Z2xvc3N0ZXJtPlNUQUdJTkdfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0RJUltkb2NdID0gIkhlbHBzIGNvbnN0cnVjdCB0aGUgcmVjaXBlLXN5c3Jvb3RzIGRpcmVjdG9yeSwgd2hpY2ggaXMgdXNlZCBkdXJpbmcgcGFja2FnaW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSGVscHMgY29uc3RydWN0IHRoZSA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3RzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBpcyB1c2VkIGR1cmluZyBwYWNrYWdpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgc3RhZ2luZyBmb3IgcmVjaXBlLXNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIHN5c3Jvb3RzIG9jY3Vycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzaywgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctc2hhcmluZy1maWxlcy1iZXR3ZWVuLXJlY2lwZXMnPlNoYXJpbmcgRmlsZXMgQmV0d2VlbiBSZWNpcGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY29uZmlndXJhdGlvbi1jb21waWxhdGlvbi1hbmQtc3RhZ2luZy1kZXYtZW52aXJvbm1lbnQnPkNvbmZpZ3VyYXRpb24sIENvbXBpbGF0aW9uLCBhbmQgU3RhZ2luZzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwsCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSUyc+PGZpbGVuYW1lPlNZU1JPT1RfRElSUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHNob3VsZCBuZXZlciB3cml0ZSBmaWxlcyBkaXJlY3RseSB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TVEFHSU5HX0RJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlcyB0aGUgZGlyZWN0b3J5IGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkLCBmaWxlcyBzaG91bGQgYmUgaW5zdGFsbGVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB5b3VyIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYW5kIHRoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2UgYSBzdWJzZXQgb2YgdGhvc2UgZmlsZXMgaW50byB0aGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfRElSX0hPU1QnPjxnbG9zc3Rlcm0+U1RBR0lOR19ESVJfSE9TVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1RBR0lOR19ESVJfSE9TVFtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBzeXN0ZW0gdGhhdCB0aGUgY29tcG9uZW50IGlzIGJ1aWx0IHRvIHJ1biBvbi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgb24gd2hpY2ggdGhlIGNvbXBvbmVudCBpcyBidWlsdCB0byBydW4gKHRoZSBzeXN0ZW0gdGhhdAorICAgICAgICAgICAgICAgICAgICBob3N0cyB0aGUgY29tcG9uZW50KS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vc3QgcmVjaXBlcywgdGhpcyBzeXNyb290IGlzIHRoZSBvbmUgaW4gd2hpY2ggdGhhdAorICAgICAgICAgICAgICAgICAgICByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBjb3BpZXMgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbnMgaW5jbHVkZSA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+IHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+IHRhc2sKKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCB1c2VzCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9OQVRJVkUnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9OQVRJVkU8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiByZWNpcGUgYW5kIHRoZSBidWlsZCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0RJUl9IT1NUPC9maWxlbmFtZT4gY2FuIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHJlY2lwZXMgYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQgbWFjaGluZSwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHs8bGluayBsaW5rZW5kPSd2YXItU1RBR0lOR19ESVInPlNUQUdJTkdfRElSPC9saW5rPn0vJHs8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+TUFDSElORTwvbGluaz59Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbmF0aXZlIHJlY2lwZXMgYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBlbXB0eSBnaXZlbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QsIHRoZSBidWlsZCBob3N0J3Mgb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPjxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGluc3RhbGxlZCBpbnRvIGhvc3QgcGF0aHMgbGlrZSBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlc2UgcmVjaXBlcyBhcmUgaW5zdGFsbGVkIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSX05BVElWRTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGNvbXBpbGluZyA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMsIHN0YW5kYXJkIGJ1aWxkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DUFBGTEFHUyc+PGZpbGVuYW1lPkNQUEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ0ZMQUdTJz48ZmlsZW5hbWU+Q0ZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzZXQgdXAgc28gdGhhdCBib3RoIGhvc3QgcGF0aHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0RJUl9OQVRJVkU8L2ZpbGVuYW1lPiBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoZWQgZm9yIGxpYnJhcmllcyBhbmQgaGVhZGVycyB1c2luZywgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUsIEdDQydzIDxmaWxlbmFtZT4taXN5c3RlbTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGh1cywgdGhlIGVtcGhhc2lzIGlzIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0RJUio8L2ZpbGVuYW1lPiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHZpZXdlZCBhcyBpbnB1dCB2YXJpYWJsZXMgYnkgdGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhdmluZyB0aGUgcmVhbCBzeXN0ZW0gcm9vdCBjb3JyZXNwb25kIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0RJUl9IT1NUPC9maWxlbmFtZT4gbWFrZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2VwdHVhbCBzZW5zZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzLCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV5IG1ha2UgdXNlIG9mIGhvc3QgaGVhZGVycyBhbmQgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFHSU5HX0RJUl9OQVRJVkUnPjxnbG9zc3Rlcm0+U1RBR0lOR19ESVJfTkFUSVZFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0RJUl9OQVRJVkVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IHVzZWQgd2hlbiBidWlsZGluZyBjb21wb25lbnRzIHRoYXQgcnVuIG9uIHRoZSBidWlsZCBob3N0IGl0c2VsZi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgdXNlZCB3aGVuCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGNvbXBvbmVudHMgdGhhdCBydW4gb24gdGhlIGJ1aWxkIGhvc3QgaXRzZWxmLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfRElSX1RBUkdFVCc+PGdsb3NzdGVybT5TVEFHSU5HX0RJUl9UQVJHRVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfRElSX1RBUkdFVFtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgc3lzcm9vdCB1c2VkIGZvciB0aGUgc3lzdGVtIGZvciB3aGljaCB0aGUgY29tcG9uZW50IGdlbmVyYXRlcyBjb2RlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBzeXNyb290IHVzZWQgZm9yIHRoZSBzeXN0ZW0gZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRoZSBjb21wb25lbnQgZ2VuZXJhdGVzIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIEZvciBjb21wb25lbnRzIHRoYXQgZG8gbm90IGdlbmVyYXRlIGNvZGUsIHdoaWNoIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICBtYWpvcml0eSwgPGZpbGVuYW1lPlNUQUdJTkdfRElSX1RBUkdFVDwvZmlsZW5hbWU+IGlzIHNldAorICAgICAgICAgICAgICAgICAgICB0byBtYXRjaAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBR0lOR19ESVJfSE9TVCc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX0hPU1Q8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvbWUgcmVjaXBlcyBidWlsZCBiaW5hcmllcyB0aGF0IGNhbiBydW4gb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gYnV0IHRob3NlIGJpbmFyaWVzIGluIHR1cm4gZ2VuZXJhdGUgY29kZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBkaWZmZXJlbnQgc3lzdGVtIChlLmcuIGNyb3NzLWNhbmFkaWFuIHJlY2lwZXMpLgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0ZXJtaW5vbG9neSBmcm9tIEdOVSwgdGhlIHByaW1hcnkgc3lzdGVtIGlzIHJlZmVycmVkCisgICAgICAgICAgICAgICAgICAgIHRvIGFzIHRoZSAiSE9TVCIgYW5kIHRoZSBzZWNvbmRhcnksIG9yIGRpZmZlcmVudCwgc3lzdGVtIGlzCisgICAgICAgICAgICAgICAgICAgIHJlZmVycmVkIHRvIGFzIHRoZSAiVEFSR0VUIi4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJpbmFyaWVzIHJ1biBvbiB0aGUgIkhPU1QiIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgZ2VuZXJhdGUgYmluYXJpZXMgZm9yIHRoZSAiVEFSR0VUIiBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+IHZhcmlhYmxlIHBvaW50cworICAgICAgICAgICAgICAgICAgICB0byB0aGUgc3lzcm9vdCB1c2VkIGZvciB0aGUgIkhPU1QiIHN5c3RlbSwgd2hpbGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSX1RBUkdFVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBvaW50cyB0byB0aGUgc3lzcm9vdCB1c2VkIGZvciB0aGUgIlRBUkdFVCIgc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfRVRDRElSX05BVElWRSc+PGdsb3NzdGVybT5TVEFHSU5HX0VUQ0RJUl9OQVRJVkU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfRVRDRElSX05BVElWRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgL2V0YyBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi9ldGM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFHSU5HX0VYRUNQUkVGSVhESVInPjxnbG9zc3Rlcm0+U1RBR0lOR19FWEVDUFJFRklYRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0VYRUNQUkVGSVhESVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIC91c3Igc3ViZGlyZWN0b3J5IG9mIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0IChTVEFHSU5HX0RJUl9IT1NUKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi91c3I8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIGZvciB3aGljaCB0aGUgY3VycmVudCByZWNpcGUgaXMgYmVpbmcgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19JTkNESVInPjxnbG9zc3Rlcm0+U1RBR0lOR19JTkNESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNUQUdJTkdfSU5DRElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSAvdXNyL2luY2x1ZGUgc3ViZGlyZWN0b3J5IG9mIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjaXBlIGJlaW5nIGJ1aWx0IChTVEFHSU5HX0RJUl9IT1NUKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZTwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSB0YXJnZXQgZm9yIHdoaWNoIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBiZWluZyBidWlsdAorICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfRElSX0hPU1QnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9IT1NUPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFHSU5HX0lOQ0RJUl9OQVRJVkUnPjxnbG9zc3Rlcm0+U1RBR0lOR19JTkNESVJfTkFUSVZFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0lOQ0RJUl9OQVRJVkVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIC91c3IvaW5jbHVkZSBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi91c3IvaW5jbHVkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNUQUdJTkdfS0VSTkVMX0JVSUxERElSJz48Z2xvc3N0ZXJtPlNUQUdJTkdfS0VSTkVMX0JVSUxERElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0tFUk5FTF9CVUlMRERJUltkb2NdID0gIlBvaW50cyB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGtlcm5lbCBidWlsZCBhcnRpZmFjdHMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBrZXJuZWwgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGJ1aWxkaW5nIHNvZnR3YXJlIHRoYXQgbmVlZHMgdG8gYWNjZXNzIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICBidWlsZCBhcnRpZmFjdHMKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnN5c3RlbXRhcC11cHJvYmVzPC9maWxlbmFtZT4pIGNhbiBsb29rIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0tFUk5FTF9CVUlMRERJUjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGZpbmQgdGhlc2UgYXJ0aWZhY3RzIGFmdGVyIHRoZSBrZXJuZWwgaGFzIGJlZW4gYnVpbHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19LRVJORUxfRElSJz48Z2xvc3N0ZXJtPlNUQUdJTkdfS0VSTkVMX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1RBR0lOR19LRVJORUxfRElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSB3aXRoIGtlcm5lbCBoZWFkZXJzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGJ1aWxkIG91dC1vZi10cmVlIG1vZHVsZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IHdpdGgga2VybmVsIGhlYWRlcnMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gYnVpbGQgb3V0LW9mLXRyZWUKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFHSU5HX0xJQkRJUic+PGdsb3NzdGVybT5TVEFHSU5HX0xJQkRJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1RBR0lOR19MSUJESVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIC91c3IvbGliIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSB0YXJnZXQgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHJlY2lwZSBpcyBiZWluZyBidWlsdCAoU1RBR0lOR19ESVJfSE9TVCkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIDxmaWxlbmFtZT4vdXNyL2xpYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSB0YXJnZXQgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRoZSBjdXJyZW50IHJlY2lwZSBpcyBiZWluZyBidWlsdAorICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVNUQUdJTkdfRElSX0hPU1QnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9IT1NUPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFHSU5HX0xJQkRJUl9OQVRJVkUnPjxnbG9zc3Rlcm0+U1RBR0lOR19MSUJESVJfTkFUSVZFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFHSU5HX0xJQkRJUl9OQVRJVkVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIC91c3IvbGliIHN1YmRpcmVjdG9yeSBvZiB0aGUgc3lzcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSA8ZmlsZW5hbWU+L3Vzci9saWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIHN5c3Jvb3QgZGlyZWN0b3J5IGZvciB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVEFNUCc+PGdsb3NzdGVybT5TVEFNUDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1RBTVBbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHRvIGNyZWF0ZSByZWNpcGUgc3RhbXAgZmlsZXMuIFRoZSBwYXRoIHRvIGFuIGFjdHVhbCBzdGFtcCBmaWxlIGlzIGNvbnN0cnVjdGVkIGJ5IGV2YWx1YXRpbmcgdGhpcyBzdHJpbmcgYW5kIHRoZW4gYXBwZW5kaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHRvIGNyZWF0ZSByZWNpcGUgc3RhbXAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIHRvIGFuIGFjdHVhbCBzdGFtcCBmaWxlIGlzIGNvbnN0cnVjdGVkIGJ5IGV2YWx1YXRpbmcgdGhpcworICAgICAgICAgICAgICAgICAgICBzdHJpbmcgYW5kIHRoZW4gYXBwZW5kaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBmb3IgPGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYXMgc2V0IGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgaXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1RBTVAgPSAiJHtTVEFNUFNfRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgQml0QmFrZSB1c2VzIHN0YW1wIGZpbGVzIHRvIGRldGVybWluZQorICAgICAgICAgICAgICAgICAgICBpZiBhIHRhc2sgc2hvdWxkIGJlIHJlcnVuLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSA8bGluayBsaW5rZW5kPSd2YXItU1RBTVBTX0RJUic+PGZpbGVuYW1lPlNUQU1QU19ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NVUxUSU1BQ0hfVEFSR0VUX1NZUyc+PGZpbGVuYW1lPk1VTFRJTUFDSF9UQVJHRVRfU1lTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVYVEVORFBFJz48ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4gZm9yIHJlbGF0ZWQgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBTVBTX0RJUic+PGdsb3NzdGVybT5TVEFNUFNfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVEFNUFNfRElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBiYXNlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwbGFjZXMgc3RhbXBzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBiYXNlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBwbGFjZXMgc3RhbXBzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7VE1QRElSfS9zdGFtcHM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVFJJUCc+PGdsb3NzdGVybT5TVFJJUDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1RSSVBbZG9jXSA9ICJNaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ3N0cmlwJyAoc3RyaXAgc3ltYm9scykuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdHJpcDwvZmlsZW5hbWU+LCB3aGljaCBpcyB1c2VkIHRvIHN0cmlwCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1VNTUFSWSc+PGdsb3NzdGVybT5TVU1NQVJZPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTVU1NQVJZW2RvY10gPSAiVGhlIHNob3J0ICg4MCBjaGFyYWN0ZXJzIG9yIGxlc3MpIHN1bW1hcnkgb2YgdGhlIGJpbmFyeSBwYWNrYWdlIGZvciBwYWNrYWdpbmcgc3lzdGVtcyBzdWNoIGFzIG9wa2csIHJwbSwgb3IgZHBrZy4gQnkgZGVmYXVsdCwgU1VNTUFSWSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgREVTQ1JJUFRJT04gdmFyaWFibGUgaWYgREVTQ1JJUFRJT04gaXMgbm90IHNldCBpbiB0aGUgcmVjaXBlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNob3J0ICg3MiBjaGFyYWN0ZXJzIG9yIGxlc3MpIHN1bW1hcnkgb2YgdGhlIGJpbmFyeSBwYWNrYWdlIGZvciBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtcyBzdWNoIGFzIDxmaWxlbmFtZT5vcGtnPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5ycG08L2ZpbGVuYW1lPiwgb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRwa2c8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPlNVTU1BUlk8L2ZpbGVuYW1lPiBpcyB1c2VkIHRvIGRlZmluZQorICAgICAgICAgICAgICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLURFU0NSSVBUSU9OJz48ZmlsZW5hbWU+REVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaWYgPGZpbGVuYW1lPkRFU0NSSVBUSU9OPC9maWxlbmFtZT4gaXMgbm90IHNldAorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNWTkRJUic+PGdsb3NzdGVybT5TVk5ESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNWTkRJUltkb2NdID0gIlRoZSBkaXJlY3Rvcnkgd2hlcmUgU3VidmVyc2lvbiBjaGVja291dHMgYXJlIHN0b3JlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZmlsZXMgY2hlY2tlZCBvdXQgb2YgYSBTdWJ2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBhcmUgc3RvcmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU0xJTlVYX0RFRkFVTFRfQ09OU09MRSc+PGdsb3NzdGVybT5TWVNMSU5VWF9ERUZBVUxUX0NPTlNPTEU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNZU0xJTlVYX0RFRkFVTFRfQ09OU09MRVtkb2NdID0gIlNwZWNpZmllcyB0aGUga2VybmVsIGJvb3QgZGVmYXVsdCBjb25zb2xlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBrZXJuZWwgYm9vdCBkZWZhdWx0IGNvbnNvbGUuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSBhIGNvbnNvbGUgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgc2V0IHRoaXMgdmFyaWFibGUgaW4geW91ciByZWNpcGUgYXMgZm9sbG93cyB3aGVyZSAiWCIgaXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnNvbGUgbnVtYmVyIHlvdSB3YW50IHRvIHVzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTWVNMSU5VWF9ERUZBVUxUX0NPTlNPTEUgPSAiY29uc29sZT10dHlYIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXNsaW51eCc+PGZpbGVuYW1lPnN5c2xpbnV4PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGluaXRpYWxseSBzZXRzIHRoaXMgdmFyaWFibGUgdG8gbnVsbCBidXQgdGhlbiBjaGVja3MKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgdmFsdWUgbGF0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTTElOVVhfT1BUUyc+PGdsb3NzdGVybT5TWVNMSU5VWF9PUFRTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNMSU5VWF9PUFRTW2RvY10gPSAiTGlzdHMgYWRkaXRpb25hbCBvcHRpb25zIHRvIGFkZCB0byB0aGUgc3lzbGludXggZmlsZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExpc3RzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIHN5c2xpbnV4IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsaXN0IG11bHRpcGxlIG9wdGlvbnMsIHNlcGFyYXRlIHRoZSBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgIHdpdGggYSBzZW1pY29sb24gY2hhcmFjdGVyICg8ZmlsZW5hbWU+OzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN5c2xpbnV4Jz48ZmlsZW5hbWU+c3lzbGludXg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdXNlcyB0aGlzIHZhcmlhYmxlIHRvIGNyZWF0ZSBhIHNldCBvZiBvcHRpb25zLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU0xJTlVYX1NFUklBTCc+PGdsb3NzdGVybT5TWVNMSU5VWF9TRVJJQUw8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNZU0xJTlVYX1NFUklBTFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIHNlcmlhbCBwb3J0IG9yIHR1cm5zIGl0IG9mZi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIHNlcmlhbCBwb3J0IG9yIHR1cm5zIGl0IG9mZi4KKyAgICAgICAgICAgICAgICAgICAgVG8gdHVybiBvZmYgc2VyaWFsLCBzZXQgdGhpcyB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSdzIGRlZmF1bHQgdmFsdWUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXNsaW51eCc+PGZpbGVuYW1lPnN5c2xpbnV4PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTTElOVVhfU0VSSUFMID89ICIwIDExNTIwMCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgY2hlY2tzIGZvciBhbmQgdXNlcyB0aGUgdmFyaWFibGUgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU0xJTlVYX1NQTEFTSCc+PGdsb3NzdGVybT5TWVNMSU5VWF9TUExBU0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNZU0xJTlVYX1NQTEFTSFtkb2NdID0gIkFuIC5MU1MgZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuIHlvdSB1c2UgdGhlIGJvb3QgbWVudS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEFuIDxmaWxlbmFtZT4uTFNTPC9maWxlbmFtZT4gZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kCisgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuIHlvdSB1c2UgdGhlIGJvb3QgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gc2V0IHRoaXMgdmFyaWFibGUgaW4geW91ciByZWNpcGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXNsaW51eCc+PGZpbGVuYW1lPnN5c2xpbnV4PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGNoZWNrcyBmb3IgdGhpcyB2YXJpYWJsZSBhbmQgaWYgZm91bmQsIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluc3RhbGxzIHRoZSBzcGxhc2ggc2NyZWVuLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU0xJTlVYX1NFUklBTF9UVFknPjxnbG9zc3Rlcm0+U1lTTElOVVhfU0VSSUFMX1RUWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1lTTElOVVhfU0VSSUFMX1RUWVtkb2NdID0gIlNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIGNvbnNvbGU9dHR5Li4uIGtlcm5lbCBib290IGFyZ3VtZW50LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhbHRlcm5hdGUgY29uc29sZT10dHkuLi4ga2VybmVsIGJvb3QgYXJndW1lbnQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSdzIGRlZmF1bHQgdmFsdWUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXNsaW51eCc+PGZpbGVuYW1lPnN5c2xpbnV4PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTTElOVVhfU0VSSUFMX1RUWSA/PSAiY29uc29sZT10dHlTMCwxMTUyMDAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNsYXNzIGNoZWNrcyBmb3IgYW5kIHVzZXMgdGhlIHZhcmlhYmxlIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNST09UX0RFU1RESVInPjxnbG9zc3Rlcm0+U1lTUk9PVF9ERVNURElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNST09UX0RFU1RESVJbZG9jXSA9ICJQb2ludHMgdG8gdGhlIHRlbXBvcmFyeSB3b3JrIGRpcmVjdG9yeSAoZGVmYXVsdCAke1dPUktESVJ9L3N5c3Jvb3QtZGVzdGRpcikgd2hlcmUgdGhlIGZpbGVzIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQgZHVyaW5nIHRoZSBkb19wb3B1bGF0ZV9zeXNyb290IHRhc2suIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdW5kZXIgdGhlIHdvcmsgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3N5c3Jvb3QtZGVzdGRpcjwvZmlsZW5hbWU+IikKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIGZpbGVzIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNST09UX0RJUlMnPjxnbG9zc3Rlcm0+U1lTUk9PVF9ESVJTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNST09UX0RJUlNbZG9jXSA9ICJEaXJlY3RvcmllcyB0aGF0IGFyZSBzdGFnZWQgaW50byB0aGUgc3lzcm9vdCBieSB0aGUgZG9fcG9wdWxhdGVfc3lzcm9vdCB0YXNrLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3JpZXMgdGhhdCBhcmUgc3RhZ2VkIGludG8gdGhlIHN5c3Jvb3QgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzIGFyZSBzdGFnZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTUk9PVF9ESVJTID0gIiBcCisgICAgICAgICAke2luY2x1ZGVkaXJ9IFwKKyAgICAgICAgICR7bGliZGlyfSBcCisgICAgICAgICAke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9IFwKKyAgICAgICAgICR7ZGF0YWRpcn0gXAorICAgICAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNST09UX0RJUlNfQkxBQ0tMSVNUJz48Z2xvc3N0ZXJtPlNZU1JPT1RfRElSU19CTEFDS0xJU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNZU1JPT1RfRElSU19CTEFDS0xJU1RbZG9jXSA9ICJEaXJlY3RvcmllcyB0aGF0IGFyZSBub3Qgc3RhZ2VkIGludG8gdGhlIHN5c3Jvb3QgYnkgdGhlIGRvX3BvcHVsYXRlX3N5c3Jvb3QgdGFzay4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yaWVzIHRoYXQgYXJlIG5vdCBzdGFnZWQgaW50byB0aGUgc3lzcm9vdCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgdG8gZXhjbHVkZSBjZXJ0YWluIHN1YmRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIG9mIGRpcmVjdG9yaWVzIGxpc3RlZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9ESVJTJz48ZmlsZW5hbWU+U1lTUk9PVF9ESVJTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZyb20gc3RhZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBkaXJlY3RvcmllcyBhcmUgbm90IHN0YWdlZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTWVNST09UX0RJUlNfQkxBQ0tMSVNUID0gIiBcCisgICAgICAgICAke21hbmRpcn0gXAorICAgICAgICAgJHtkb2NkaXJ9IFwKKyAgICAgICAgICR7aW5mb2Rpcn0gXAorICAgICAgICAgJHtkYXRhZGlyfS9sb2NhbGUgXAorICAgICAgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAorICAgICAgICAgJHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAke2RhdGFkaXJ9L3BpeG1hcHMgXAorICAgICAiCisgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTUk9PVF9ESVJTX05BVElWRSc+PGdsb3NzdGVybT5TWVNST09UX0RJUlNfTkFUSVZFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNST09UX0RJUlNfTkFUSVZFW2RvY10gPSAiRXh0cmEgZGlyZWN0b3JpZXMgc3RhZ2VkIGludG8gdGhlIHN5c3Jvb3QgYnkgdGhlIGRvX3BvcHVsYXRlX3N5c3Jvb3QgdGFzayBmb3IgLW5hdGl2ZSByZWNpcGVzLCBpbiBhZGRpdGlvbiB0byB0aG9zZSBzcGVjaWZpZWQgaW4gU1lTUk9PVF9ESVJTLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRXh0cmEgZGlyZWN0b3JpZXMgc3RhZ2VkIGludG8gdGhlIHN5c3Jvb3QgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGZvciA8ZmlsZW5hbWU+LW5hdGl2ZTwvZmlsZW5hbWU+IHJlY2lwZXMsIGluIGFkZGl0aW9uCisgICAgICAgICAgICAgICAgICAgIHRvIHRob3NlIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9ESVJTJz48ZmlsZW5hbWU+U1lTUk9PVF9ESVJTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZm9sbG93aW5nIGV4dHJhIGRpcmVjdG9yaWVzIGFyZSBzdGFnZWQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTUk9PVF9ESVJTX05BVElWRSA9ICIgXAorICAgICAgICAgJHtiaW5kaXJ9IFwKKyAgICAgICAgICR7c2JpbmRpcn0gXAorICAgICAgICAgJHtiYXNlX2JpbmRpcn0gXAorICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAgICAgICR7bGliZXhlY2Rpcn0gXAorICAgICAgICAgJHtzeXNjb25mZGlyfSBcCisgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbXMgYnVpbHQgYnkgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgICAgICBydW4gZGlyZWN0bHkgZnJvbSB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9OQVRJVkUnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9OQVRJVkU8L2ZpbGVuYW1lPjwvbGluaz4pLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgd2h5IGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMgY29udGFpbmluZyBwcm9ncmFtCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlcyBhbmQgc3VwcG9ydGluZyBmaWxlcyBuZWVkIHRvIGJlIHN0YWdlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyc+PGdsb3NzdGVybT5TWVNST09UX1BSRVBST0NFU1NfRlVOQ1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU1tkb2NdID0gIkEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSBhZnRlciBmaWxlcyBhcmUgc3RhZ2VkIGludG8gdGhlIHN5c3Jvb3QuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSB1c2VkIHRvIGFwcGx5IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBvbiB0aGUgc3RhZ2VkIGZpbGVzLCBvciB0byBzdGFnZSBhZGRpdGlvbmFsIGZpbGVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBleGVjdXRlIGFmdGVyIGZpbGVzIGFyZSBzdGFnZWQgaW50bworICAgICAgICAgICAgICAgICAgICB0aGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSB1c3VhbGx5IHVzZWQgdG8gYXBwbHkgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nIG9uIHRoZSBzdGFnZWQgZmlsZXMsIG9yIHRvIHN0YWdlIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTVEVNRF9BVVRPX0VOQUJMRSc+PGdsb3NzdGVybT5TWVNURU1EX0FVVE9fRU5BQkxFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNURU1EX0FVVE9fRU5BQkxFW2RvY10gPSAiRm9yIHJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSBzeXN0ZW1kIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgc2VydmljZSBpbiBTWVNURU1EX1NFUlZJQ0Ugc2hvdWxkIHN0YXJ0IGF1dG9tYXRpY2FsbHkgb3Igbm90LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kJz48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIHNlcnZpY2UKKyAgICAgICAgICAgICAgICAgICAgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1RFTURfU0VSVklDRSc+PGZpbGVuYW1lPlNZU1RFTURfU0VSVklDRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzaG91bGQgc3RhcnQgYXV0b21hdGljYWxseSBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQgdG8gYXV0b21hdGljYWxseSBzdGFydAorICAgICAgICAgICAgICAgICAgICBhdCBib290IHRpbWUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN5c3RlbWQnPjxmaWxlbmFtZT5zeXN0ZW1kPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTVEVNRF9BVVRPX0VOQUJMRSA/Pz0gImVuYWJsZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRpc2FibGUgdGhlIHNlcnZpY2UgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUgdG8KKyAgICAgICAgICAgICAgICAgICAgImRpc2FibGUiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1RFTURfQk9PVF9DRkcnPjxnbG9zc3Rlcm0+U1lTVEVNRF9CT09UX0NGRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1lTVEVNRF9CT09UX0NGR1tkb2NdID0gIldoZW4gRUZJX1BST1ZJREVSIGlzIHNldCB0byAic3lzdGVtZC1ib290IiwgdGhlIFNZU1RFTURfQk9PVF9DRkcgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBzaG91bGQgYmUgdXNlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUVGSV9QUk9WSURFUic+PGZpbGVuYW1lPkVGSV9QUk9WSURFUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gInN5c3RlbWQtYm9vdCIsIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1lTVEVNRF9CT09UX0NGRzwvZmlsZW5hbWU+IHZhcmlhYmxlIHNwZWNpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kLWJvb3QnPjxmaWxlbmFtZT5zeXN0ZW1kLWJvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Mgc2V0cyB0aGUgPGZpbGVuYW1lPlNZU1RFTURfQk9PVF9DRkc8L2ZpbGVuYW1lPiBhcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNZU1RFTURfQk9PVF9DRkcgPz0gIiR7PGxpbmsgbGlua2VuZD0ndmFyLVMnPlM8L2xpbms+fS9sb2FkZXIuY29uZiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gU3lzdGVtZC1ib290LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3QvJz5TeXN0ZW1kLWJvb3QgZG9jdW1lbnRhdGlvbjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1RFTURfQk9PVF9FTlRSSUVTJz48Z2xvc3N0ZXJtPlNZU1RFTURfQk9PVF9FTlRSSUVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNURU1EX0JPT1RfRU5UUklFU1tkb2NdID0gIldoZW4gRUZJX1BST1ZJREVSIGlzIHNldCB0byAic3lzdGVtZC1ib290IiwgdGhlIFNZU1RFTURfQk9PVF9FTlRSSUVTIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZW50cnkgZmlsZXMgKCouY29uZikgdG8gaW5zdGFsbCB0aGF0IGNvbnRhaW4gb25lIGJvb3QgZW50cnkgcGVyIGZpbGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FRklfUFJPVklERVInPjxmaWxlbmFtZT5FRklfUFJPVklERVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvICJzeXN0ZW1kLWJvb3QiLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNZU1RFTURfQk9PVF9FTlRSSUVTPC9maWxlbmFtZT4gdmFyaWFibGUgc3BlY2lmaWVzCisgICAgICAgICAgICAgICAgICAgIGEgbGlzdCBvZiBlbnRyeSBmaWxlcworICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiouY29uZjwvZmlsZW5hbWU+KSB0byBpbnN0YWxsIHRoYXQgY29udGFpbgorICAgICAgICAgICAgICAgICAgICBvbmUgYm9vdCBlbnRyeSBwZXIgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN5c3RlbWQtYm9vdCc+PGZpbGVuYW1lPnN5c3RlbWQtYm9vdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBzZXRzIHRoZSA8ZmlsZW5hbWU+U1lTVEVNRF9CT09UX0VOVFJJRVM8L2ZpbGVuYW1lPiBhcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNZU1RFTURfQk9PVF9FTlRSSUVTID89ICIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIFN5c3RlbWQtYm9vdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvc3lzdGVtZC1ib290Lyc+U3lzdGVtZC1ib290IGRvY3VtZW50YXRpb248L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNURU1EX0JPT1RfVElNRU9VVCc+PGdsb3NzdGVybT5TWVNURU1EX0JPT1RfVElNRU9VVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1lTVEVNRF9CT09UX1RJTUVPVVRbZG9jXSA9ICJXaGVuIEVGSV9QUk9WSURFUiBpcyBzZXQgdG8gInN5c3RlbWQtYm9vdCIsIHRoZSBTWVNURU1EX0JPT1RfVElNRU9VVCB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIGJvb3QgbWVudSB0aW1lb3V0IGluIHNlY29uZHMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FRklfUFJPVklERVInPjxmaWxlbmFtZT5FRklfUFJPVklERVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvICJzeXN0ZW1kLWJvb3QiLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNZU1RFTURfQk9PVF9USU1FT1VUPC9maWxlbmFtZT4gdmFyaWFibGUgc3BlY2lmaWVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBib290IG1lbnUgdGltZW91dCBpbiBzZWNvbmRzLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3lzdGVtZC1ib290Jz48ZmlsZW5hbWU+c3lzdGVtZC1ib290PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHNldHMgdGhlIDxmaWxlbmFtZT5TWVNURU1EX0JPT1RfVElNRU9VVDwvZmlsZW5hbWU+IGFzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTVEVNRF9CT09UX1RJTUVPVVQgPz0gIjEwIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBTeXN0ZW1kLWJvb3QsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdC8nPlN5c3RlbWQtYm9vdCBkb2N1bWVudGF0aW9uPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTVEVNRF9QQUNLQUdFUyc+PGdsb3NzdGVybT5TWVNURU1EX1BBQ0tBR0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNURU1EX1BBQ0tBR0VTW2RvY10gPSAiRm9yIHJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSBzeXN0ZW1kIGNsYXNzLCB0aGlzIHZhcmlhYmxlIGxvY2F0ZXMgdGhlIHN5c3RlbWQgdW5pdCBmaWxlcyB3aGVuIHRoZXkgYXJlIG5vdCBmb3VuZCBpbiB0aGUgbWFpbiByZWNpcGUncyBwYWNrYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kJz48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBsb2NhdGVzIHRoZSBzeXN0ZW1kIHVuaXQgZmlsZXMgd2hlbgorICAgICAgICAgICAgICAgICAgICB0aGV5IGFyZSBub3QgZm91bmQgaW4gdGhlIG1haW4gcmVjaXBlJ3MgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TWVNURU1EX1BBQ0tBR0VTPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIHN1Y2ggdGhhdCB0aGUgc3lzdGVtZCB1bml0IGZpbGVzIGFyZSBhc3N1bWVkIHRvIHJlc2lkZSBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlcyBtYWluIHBhY2thZ2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1lTVEVNRF9QQUNLQUdFUyA/PSAiJHtQTn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlc2UgdW5pdCBmaWxlcyBhcmUgbm90IGluIHRoaXMgcmVjaXBlJ3MgbWFpbgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLCB5b3UgbmVlZCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNZU1RFTURfUEFDS0FHRVM8L2ZpbGVuYW1lPiB0byBsaXN0IHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG9yIHBhY2thZ2VzIGluIHdoaWNoIHRoZSBidWlsZCBzeXN0ZW0gY2FuIGZpbmQgdGhlIHN5c3RlbWQKKyAgICAgICAgICAgICAgICAgICAgdW5pdCBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNURU1EX1NFUlZJQ0UnPjxnbG9zc3Rlcm0+U1lTVEVNRF9TRVJWSUNFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBTWVNURU1EX1NFUlZJQ0VbZG9jXSA9ICJGb3IgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIHN5c3RlbWQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBzeXN0ZW1kIHNlcnZpY2UgbmFtZSBmb3IgYSBwYWNrYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kJz48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIHN5c3RlbWQgc2VydmljZSBuYW1lIGZvcgorICAgICAgICAgICAgICAgICAgICBhIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNwZWNpZnkgdGhpcyBmaWxlIGluIHlvdXIgcmVjaXBlLCB1c2UgYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG5hbWUgb3ZlcnJpZGUgdG8gaW5kaWNhdGUgdGhlIHBhY2thZ2UgdG8gd2hpY2ggdGhlIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGFwcGxpZXMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIHRoZSBjb25ubWFuIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29ubm1hbi5zZXJ2aWNlIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTVklOSVRfRU5BQkxFRF9HRVRUWVMnPjxnbG9zc3Rlcm0+U1lTVklOSVRfRU5BQkxFRF9HRVRUWVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNZU1ZJTklUX0VOQUJMRURfR0VUVFlTW2RvY10gPSAiU3BlY2lmaWVzIHdoaWNoIHZpcnR1YWwgdGVybWluYWxzIHNob3VsZCBydW4gYSBnZXR0eSwgdGhlIGRlZmF1bHQgaXMgJzEnLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLWVuYWJsaW5nLXN5c3RlbS1zZXJ2aWNlcyc+U3lzVmluaXQ8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHZpcnR1YWwgdGVybWluYWxzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIHJ1biBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2V0dHlfJTI4VW5peCUyOSc+Z2V0dHk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAoYWxsb3dpbmcgbG9naW4pLCBhc3N1bWluZworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVNFX1ZUJz48ZmlsZW5hbWU+VVNFX1ZUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBzZXQgdG8gIjAiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNZU1ZJTklUX0VOQUJMRURfR0VUVFlTPC9maWxlbmFtZT4gaXMgIjEiCisgICAgICAgICAgICAgICAgICAgIChpLmUuIG9ubHkgcnVuIGEgZ2V0dHkgb24gdGhlIGZpcnN0IHZpcnR1YWwgdGVybWluYWwpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS10Jz48dGl0bGU+VDwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UJz48Z2xvc3N0ZXJtPlQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRbZG9jXSA9ICJUaGlzIHZhcmlhYmxlIHBvaW50cyB0byBhIGRpcmVjdG9yeSB3ZXJlIEJpdEJha2UgcGxhY2VzIHRlbXBvcmFyeSBmaWxlcywgd2hpY2ggY29uc2lzdCBtb3N0bHkgb2YgdGFzayBsb2dzIGFuZCBzY3JpcHRzLCB3aGVuIGJ1aWxkaW5nIGEgcGFydGljdWxhciByZWNpcGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHBvaW50cyB0byBhIGRpcmVjdG9yeSB3ZXJlIEJpdEJha2UgcGxhY2VzCisgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcywgd2hpY2ggY29uc2lzdCBtb3N0bHkgb2YgdGFzayBsb2dzIGFuZAorICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLCB3aGVuIGJ1aWxkaW5nIGEgcGFydGljdWxhciByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyB0eXBpY2FsbHkgc2V0IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVCA9ICIke1dPUktESVJ9L3RlbXAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyB0aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggQml0QmFrZSB1bnBhY2tzIGFuZCBidWlsZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUgc2V0cyB0aGlzIHZhcmlhYmxlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5UPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50cyB0byB0aGUgcm9vdCBvZiB0aGUgZGlyZWN0b3J5IHRyZWUgd2hlcmUgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICBwbGFjZXMgdGhlIG91dHB1dCBvZiBhbiBlbnRpcmUgYnVpbGQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEFSR0VUX0FSQ0gnPjxnbG9zc3Rlcm0+VEFSR0VUX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRBUkdFVF9BUkNIW2RvY10gPSAiVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgZGV2aWNlIGJlaW5nIGJ1aWx0LiBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGFyY2hpdGVjdHVyZXM6IGFybSwgbWlwcywgcHBjLCB4ODYsIHg4Ni02NC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgbWFjaGluZSdzIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc3VwcG9ydHMgbWFueQorICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgbGlzdCBvZiBhcmNoaXRlY3R1cmVzIHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBsaXN0IGlzIGJ5IG5vIG1lYW5zIGNvbXBsZXRlIGFzIHRoZSBhcmNoaXRlY3R1cmUKKyAgICAgICAgICAgICAgICAgICAgaXMgY29uZmlndXJhYmxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGFybQorICAgICBpNTg2CisgICAgIHg4Nl82NAorICAgICBwb3dlcnBjCisgICAgIHBvd2VycGM2NAorICAgICBtaXBzCisgICAgIG1pcHNlbAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIG1hY2hpbmUgYXJjaGl0ZWN0dXJlcywgc2VlCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9BUkNIJz48ZmlsZW5hbWU+VFVORV9BUkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRBUkdFVF9BU19BUkNIJz48Z2xvc3N0ZXJtPlRBUkdFVF9BU19BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUQVJHRVRfQVNfQVJDSFtkb2NdID0gIlNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYXNzZW1ibGVyIGZsYWdzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYXNzZW1ibGVyIGZsYWdzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9BU19BUkNIPC9maWxlbmFtZT4gaXMgaW5pdGlhbGl6ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9BU0FSR1MnPjxmaWxlbmFtZT5UVU5FX0FTQVJHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEFSR0VUX0FTX0FSQ0ggPSAiJHtUVU5FX0FTQVJHU30iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQVJHRVRfQ0NfQVJDSCc+PGdsb3NzdGVybT5UQVJHRVRfQ0NfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEFSR0VUX0NDX0FSQ0hbZG9jXSA9ICJTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBDIGNvbXBpbGVyIGZsYWdzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9DQ19BUkNIPC9maWxlbmFtZT4gaXMgaW5pdGlhbGl6ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9DQ0FSR1MnPjxmaWxlbmFtZT5UVU5FX0NDQVJHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGEgY29tbW9uIHdvcmthcm91bmQgdG8gYXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTERGTEFHUyc+PGZpbGVuYW1lPkxERkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5UQVJHRVRfQ0NfQVJDSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiByZWNpcGVzIHRoYXQgYnVpbGQgc29mdHdhcmUgZm9yIHRoZSB0YXJnZXQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgd291bGQgbm90IG90aGVyd2lzZSByZXNwZWN0IHRoZSBleHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxERkxBR1M8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRBUkdFVF9DQ19LRVJORUxfQVJDSCc+PGdsb3NzdGVybT5UQVJHRVRfQ0NfS0VSTkVMX0FSQ0g8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRBUkdFVF9DQ19LRVJORUxfQVJDSFtkb2NdID0gIlRoaXMgaXMgYSBzcGVjaWZpYyBrZXJuZWwgY29tcGlsZXIgZmxhZyBmb3IgYSBDUFUgb3IgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5lLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHNwZWNpZmljIGtlcm5lbCBjb21waWxlciBmbGFnIGZvciBhIENQVSBvcgorICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIHR1bmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmbGFnIGlzIHVzZWQgcmFyZWx5IGFuZCBvbmx5IGZvciBjYXNlcyB3aGVyZSBhCisgICAgICAgICAgICAgICAgICAgIHVzZXJzcGFjZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9DQ0FSR1MnPjxmaWxlbmFtZT5UVU5FX0NDQVJHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBrZXJuZWwgY29tcGlsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+VEFSR0VUX0NDX0tFUk5FTF9BUkNIPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHRoZSBrZXJuZWwgKGFuZCBhc3NvY2lhdGVkIG1vZHVsZXMpIHRvIHVzZSBhCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS10aHVtYi5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQVJHRVRfQ0ZMQUdTJz48Z2xvc3N0ZXJtPlRBUkdFVF9DRkxBR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRBUkdFVF9DRkxBR1NbZG9jXSA9ICJGbGFncyBwYXNzZWQgdG8gdGhlIEMgY29tcGlsZXIgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiBUaGlzIHZhcmlhYmxlIGV2YWx1YXRlcyB0byB0aGUgc2FtZSBhcyBDRkxBR1MuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgY29tcGlsZXIgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgdGFyZ2V0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DRkxBR1MnPjxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIFNESydzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBzZXRzCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Q0ZMQUdTPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+VEFSR0VUX0NGTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUgdGhlIGZsYWdzCisgICAgICAgICAgICAgICAgICAgIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEFSR0VUX0NQUEZMQUdTJz48Z2xvc3N0ZXJtPlRBUkdFVF9DUFBGTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEFSR0VUX0NQUEZMQUdTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDIHByZS1wcm9jZXNzb3IgKGkuZS4gdG8gYm90aCB0aGUgQyBhbmQgdGhlIEMrKyBjb21waWxlcnMpIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgICAoaS5lLiB0byBib3RoIHRoZSBDIGFuZCB0aGUgQysrIGNvbXBpbGVycykgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgdGFyZ2V0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DUFBGTEFHUyc+PGZpbGVuYW1lPkNQUEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBTREsncyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgc2V0cworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkNQUEZMQUdTPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHRvIHRoZSA8ZmlsZW5hbWU+VEFSR0VUX0NQUEZMQUdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgc28gdGhhdCBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28gaGF2ZQorICAgICAgICAgICAgICAgICAgICB0aGUgZmxhZ3MgYXBwbGllZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQVJHRVRfQ1hYRkxBR1MnPjxnbG9zc3Rlcm0+VEFSR0VUX0NYWEZMQUdTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUQVJHRVRfQ1hYRkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMrKyBjb21waWxlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBDKysgY29tcGlsZXIgd2hlbgorICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgdGFyZ2V0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DWFhGTEFHUyc+PGZpbGVuYW1lPkNYWEZMQUdTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBTREsncyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgc2V0cworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkNYWEZMQUdTPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHRvIHRoZSA8ZmlsZW5hbWU+VEFSR0VUX0NYWEZMQUdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgc28gdGhhdCBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28gaGF2ZQorICAgICAgICAgICAgICAgICAgICB0aGUgZmxhZ3MgYXBwbGllZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQVJHRVRfRlBVJz48Z2xvc3N0ZXJtPlRBUkdFVF9GUFU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRBUkdFVF9GUFVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIG1ldGhvZCBmb3IgaGFuZGxpbmcgRlBVIGNvZGUuIEZvciBGUFUtbGVzcyB0YXJnZXRzLCB3aGljaCBpbmNsdWRlIG1vc3QgQVJNIENQVXMsIHRoZSB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byAnc29mdCcuIElmIG5vdCwgdGhlIGtlcm5lbCBlbXVsYXRpb24gZ2V0cyB1c2VkLCB3aGljaCByZXN1bHRzIGluIGEgcGVyZm9ybWFuY2UgcGVuYWx0eS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbWV0aG9kIGZvciBoYW5kbGluZyBGUFUgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEZQVS1sZXNzIHRhcmdldHMsIHdoaWNoIGluY2x1ZGUgbW9zdCBBUk0gQ1BVcywgdGhlIHZhcmlhYmxlIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgc2V0IHRvICJzb2Z0Ii4KKyAgICAgICAgICAgICAgICAgICAgSWYgbm90LCB0aGUga2VybmVsIGVtdWxhdGlvbiBnZXRzIHVzZWQsIHdoaWNoIHJlc3VsdHMgaW4gYSBwZXJmb3JtYW5jZSBwZW5hbHR5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRBUkdFVF9MRF9BUkNIJz48Z2xvc3N0ZXJtPlRBUkdFVF9MRF9BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUQVJHRVRfTERfQVJDSFtkb2NdID0gIlNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbGlua2VyIGZsYWdzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbGlua2VyIGZsYWdzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9MRF9BUkNIPC9maWxlbmFtZT4gaXMgaW5pdGlhbGl6ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9MREFSR1MnPjxmaWxlbmFtZT5UVU5FX0xEQVJHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEFSR0VUX0xEX0FSQ0ggPSAiJHtUVU5FX0xEQVJHU30iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQVJHRVRfTERGTEFHUyc+PGdsb3NzdGVybT5UQVJHRVRfTERGTEFHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEFSR0VUX0xERkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBmbGFncyB0byBwYXNzIHRvIHRoZSBsaW5rZXIgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgdGFyZ2V0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MREZMQUdTJz48ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHNldHMKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MREZMQUdTJz48ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UQVJHRVRfTERGTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUgdGhlIGZsYWdzCisgICAgICAgICAgICAgICAgICAgIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEFSR0VUX09TJz48Z2xvc3N0ZXJtPlRBUkdFVF9PUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEFSR0VUX09TW2RvY10gPSAiU3BlY2lmaWVzIHRoZSB0YXJnZXQncyBvcGVyYXRpbmcgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQncyBvcGVyYXRpbmcgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgY2FuIGJlIHNldCB0byAibGludXgiIGZvciBnbGliYy1iYXNlZCBzeXN0ZW1zCisgICAgICAgICAgICAgICAgICAgIChHTlUgQyBMaWJyYXJ5KSBhbmQgdG8gImxpbnV4LW11c2wiIGZvciBtdXNsIGxpYmMuCisgICAgICAgICAgICAgICAgICAgIEZvciBBUk0vRUFCSSB0YXJnZXRzLCAibGludXgtZ251ZWFiaSIgYW5kICJsaW51eC1tdXNsZWFiaSIKKyAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgdmFsdWVzIGV4aXN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRBUkdFVF9QUkVGSVgnPjxnbG9zc3Rlcm0+VEFSR0VUX1BSRUZJWDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEFSR0VUX1BSRUZJWFtkb2NdID0gIlRoZSBwcmVmaXggdXNlZCBmb3IgdGhlIHRvb2xjaGFpbiBiaW5hcnkgdGFyZ2V0IHRvb2xzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwcmVmaXggdXNlZCBmb3IgdGhlIHRvb2xjaGFpbiBiaW5hcnkgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIHRvb2xzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgcmVjaXBlIGFuZCB0aGUgYnVpbGQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEFSR0VUX1BSRUZJWDwvZmlsZW5hbWU+IGlzIHNldCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciByZWNpcGVzIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0IG1hY2hpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7PGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9TWVMnPlRBUkdFVF9TWVM8L2xpbms+fS0iLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBuYXRpdmUgcmVjaXBlcywgdGhlIGJ1aWxkIHN5c3RlbSBzZXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9QUkVGSVg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbmF0aXZlIFNESyByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5uYXRpdmVzZGs8L2ZpbGVuYW1lPiksIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBzZXRzIHRoZSB2YXJpYWJsZSB0byB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U0RLX1BSRUZJWDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQVJHRVRfU1lTJz48Z2xvc3N0ZXJtPlRBUkdFVF9TWVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRBUkdFVF9TWVNbZG9jXSA9ICJUaGUgdGFyZ2V0IHN5c3RlbSBpcyBjb21wcmlzZWQgb2YgVEFSR0VUX0FSQ0gsVEFSR0VUX1ZFTkRPUiBhbmQgVEFSR0VUX09TLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBzeXN0ZW0sIGluY2x1ZGluZyB0aGUgYXJjaGl0ZWN0dXJlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSwgZm9yIHdoaWNoIHRoZSBidWlsZCBpcyBvY2N1cnJpbmcgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0FSQ0gnPjxmaWxlbmFtZT5UQVJHRVRfQVJDSDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9WRU5ET1InPjxmaWxlbmFtZT5UQVJHRVRfVkVORE9SPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9PUyc+PGZpbGVuYW1lPlRBUkdFVF9PUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UQVJHRVRfU1lTPC9maWxlbmFtZT4gdmFyaWFibGUgeW91cnNlbGYuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlc2UgdHdvIGV4YW1wbGVzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdmVuIGEgbmF0aXZlIHJlY2lwZSBvbiBhIDMyLWJpdCwgeDg2IG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIExpbnV4LCB0aGUgdmFsdWUgaXMgImk2ODYtbGludXgiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdmVuIGEgcmVjaXBlIGJlaW5nIGJ1aWx0IGZvciBhIGxpdHRsZS1lbmRpYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlQUyB0YXJnZXQgcnVubmluZyBMaW51eCwgdGhlIHZhbHVlIG1pZ2h0IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbC1saW51eCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRBUkdFVF9WRU5ET1InPjxnbG9zc3Rlcm0+VEFSR0VUX1ZFTkRPUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEFSR0VUX1ZFTkRPUltkb2NdID0gIlRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgdmVuZG9yLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgdmVuZG9yLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTElCQyc+PGdsb3NzdGVybT5UQ0xJQkM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRDTElCQ1tkb2NdID0gIlNwZWNpZmllcyBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFlvdSBjYW4gc2VsZWN0ICdnbGliYycsICdtdXNsJyBvciAnbmV3bGliJy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgR05VIHN0YW5kYXJkIEMgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPikgdmFyaWFudCB0byB1c2UgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHJlcGxhY2VzIDxmaWxlbmFtZT5QT0tZTElCQzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlbGVjdCAiZ2xpYmMiLCAibXVzbCIsICJuZXdsaWIiLCBvciAiYmFyZW1ldGFsIgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTElCQ0FQUEVORCc+PGdsb3NzdGVybT5UQ0xJQkNBUFBFTkQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRDTElCQ0FQUEVORFtkb2NdID0gIlNwZWNpZmllcyBhIHN1ZmZpeCBhcHBlbmRlZCB0byBUTVBESVIgdGhhdCBpZGVudGlmaWVzIHRoZSBsaWJjIHZhcmlhbnQgZm9yIHRoZSBidWlsZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIHN1ZmZpeCB0byBiZSBhcHBlbmRlZCBvbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICBUaGUgc3VmZml4IGlkZW50aWZpZXMgdGhlIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gdmFyaWFudAorICAgICAgICAgICAgICAgICAgICBmb3IgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGFyZSBidWlsZGluZyBmb3IgbXVsdGlwbGUgdmFyaWFudHMgd2l0aCB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoaXMgbWVjaGFuaXNtIGVuc3VyZXMgdGhhdCBvdXRwdXQgZm9yIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+IHZhcmlhbnRzIGlzIGtlcHQgc2VwYXJhdGUgdG8KKyAgICAgICAgICAgICAgICAgICAgYXZvaWQgcG90ZW50aWFsIGNvbmZsaWN0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5kZWZhdWx0c2V0dXAuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlIG9mIDxmaWxlbmFtZT5UQ0xJQkNBUFBFTkQ8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAiLSR7VENMSUJDfSIuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGRpc3Ryb3Mgc3VjaCBhcyBwb2t5LCB3aGljaCBub3JtYWxseSBvbmx5IHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgb25lIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gdmFyaWFudCwgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UQ0xJQkNBUFBFTkQ8L2ZpbGVuYW1lPiB0byAiIiBpbiB0aGVpciBkaXN0cm8KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHJlc3VsdGluZyBpbiBubyBzdWZmaXggYmVpbmcgYXBwbGllZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQ01PREUnPjxnbG9zc3Rlcm0+VENNT0RFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUQ01PREVbZG9jXSA9ICJFbmFibGVzIGFuIGV4dGVybmFsIHRvb2xjaGFpbiAod2hlcmUgcHJvdmlkZWQgYnkgYW4gYWRkaXRpb25hbCBsYXllcikgaWYgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiAnZGVmYXVsdCcuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRvb2xjaGFpbiBzZWxlY3Rvci4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRDTU9ERTwvZmlsZW5hbWU+IGNvbnRyb2xzIHRoZSBjaGFyYWN0ZXJpc3RpY3MKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGdlbmVyYXRlZCBwYWNrYWdlcyBhbmQgaW1hZ2VzIGJ5IHRlbGxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hpY2ggdG9vbGNoYWluIHByb2ZpbGUgdG8gdXNlLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgaXRzIG93bgorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSdzIGRlZmF1bHQgdmFsdWUgaXMgImRlZmF1bHQiLCB3aGljaCB1c2VzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgaW50ZXJuYWwgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5UQ01PREU8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gYSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGhhbiAiZGVmYXVsdCIsIHRoZW4gaXQgaXMgeW91ciByZXNwb25zaWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gZW5zdXJlIHRoYXQgdGhlIHRvb2xjaGFpbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIG9sZGVyIG9yIG5ld2VyIHZlcnNpb25zIG9mIHRoZXNlIGNvbXBvbmVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGNhdXNlIGJ1aWxkIHByb2JsZW1zLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBSZWxlYXNlIE5vdGVzIGZvciB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHNwZWNpZmljIGNvbXBvbmVudHMgd2l0aCB3aGljaCB0aGUgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IGJlIGNvbXBhdGlibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBhY2Nlc3MgdGhlIFJlbGVhc2UgTm90ZXMsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9zb2Z0d2FyZS1vdmVydmlldy9kb3dubG9hZHMvJz5Eb3dubG9hZHM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBvbiB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlIGFuZCBjbGljayBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICJSRUxFQVNFIElORk9STUFUSU9OIiBsaW5rIGZvciB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5UQ01PREU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzaW1pbGFyIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQ0xJQkMnPjxmaWxlbmFtZT5UQ0xJQkM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGNvbnRyb2xzIHRoZSB2YXJpYW50IG9mIHRoZSBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5CisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+KSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzczoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPm11c2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCBhZGRpdGlvbmFsIGxheWVycywgaXQgaXMgcG9zc2libGUgdG8gdXNlIGEgcHJlLWNvbXBpbGVkCisgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgT25lIGV4YW1wbGUgaXMgdGhlIFNvdXJjZXJ5IEcrKyBUb29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBzdXBwb3J0IGZvciB0aGlzIHRvb2xjaGFpbiByZXNpZGVzIGluIHRoZSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5NZW50b3IgR3JhcGhpY3M8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc291cmNlcnk8L2ZpbGVuYW1lPiBsYXllciBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0aHViLmNvbS9NZW50b3JFbWJlZGRlZC9tZXRhLXNvdXJjZXJ5Lyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllcidzIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIFNvdXJjZXJ5IEcrKyBUb29sY2hhaW4gYXMKKyAgICAgICAgICAgICAgICAgICAgYW4gZXh0ZXJuYWwgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB5b3UgbXVzdCBiZSBzdXJlIHRvIGFkZCB0aGUgbGF5ZXIgdG8geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gZnJvbnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gbGF5ZXIgYW5kIHRoZW4gc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhURVJOQUxfVE9PTENIQUlOPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGxvY2F0aW9uIGluIHdoaWNoIHlvdSBpbnN0YWxsZWQgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bmRhbWVudGFscyB1c2VkIGZvciB0aGlzIGV4YW1wbGUgYXBwbHkgdG8gYW55CisgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPm1ldGEtc291cmNlcnk8L2ZpbGVuYW1lPiBhcyBhCisgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIGZvciBhZGRpbmcgc3VwcG9ydCBmb3Igb3RoZXIgZXh0ZXJuYWwgdG9vbGNoYWlucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX0VYUE9SVF9ESVInPjxnbG9zc3Rlcm0+VEVTVF9FWFBPUlRfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBURVNUX0VYUE9SVF9ESVJbZG9jXSA9ICJUaGUgbG9jYXRpb24gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBleHBvcnQgdGVzdHMgd2hlbiB0aGUgVEVTVF9FWFBPUlRfT05MWSB2YXJpYWJsZSBpcyBzZXQgdG8gIjEiLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gZXhwb3J0CisgICAgICAgICAgICAgICAgICAgIHRlc3RzIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUX0VYUE9SVF9PTkxZJz48ZmlsZW5hbWU+VEVTVF9FWFBPUlRfT05MWTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gIjEiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFU1RfRVhQT1JUX0RJUjwvZmlsZW5hbWU+IHZhcmlhYmxlIGRlZmF1bHRzCisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT4iJHtUTVBESVJ9L3Rlc3RpbWFnZS8ke1BOfSI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX0VYUE9SVF9PTkxZJz48Z2xvc3N0ZXJtPlRFU1RfRVhQT1JUX09OTFk8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRFU1RfRVhQT1JUX09OTFlbZG9jXSA9ICJTcGVjaWZpZXMgdG8gZXhwb3J0IHRoZSB0ZXN0cyBvbmx5LiBTZXQgdGhpcyB2YXJpYWJsZSB0byAiMSIgaWYgeW91IGRvIG5vdCB3YW50IHRvIHJ1biB0aGUgdGVzdHMgYnV0IHlvdSB3YW50IHRoZW0gdG8gYmUgZXhwb3J0ZWQgaW4gYSBtYW5uZXIgdGhhdCB5b3UgdG8gcnVuIHRoZW0gb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRvIGV4cG9ydCB0aGUgdGVzdHMgb25seS4KKyAgICAgICAgICAgICAgICAgICAgU2V0IHRoaXMgdmFyaWFibGUgdG8gIjEiIGlmIHlvdSBkbyBub3Qgd2FudCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHRlc3RzIGJ1dCB5b3Ugd2FudCB0aGVtIHRvIGJlIGV4cG9ydGVkIGluIGEgbWFubmVyIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgeW91IHRvIHJ1biB0aGVtIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX0xPR19ESVInPjxnbG9zc3Rlcm0+VEVTVF9MT0dfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBURVNUX0xPR19ESVJbZG9jXSA9ICJIb2xkcyB0aGUgU1NIIGxvZyBhbmQgdGhlIGJvb3QgbG9nIGZvciBRRU1VIG1hY2hpbmVzLiBUaGUgVEVTVF9MT0dfRElSIHZhcmlhYmxlIGRlZmF1bHRzIHRvICIke1dPUktESVJ9L3Rlc3RpbWFnZSIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBIb2xkcyB0aGUgU1NIIGxvZyBhbmQgdGhlIGJvb3QgbG9nIGZvciBRRU1VIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFU1RfTE9HX0RJUjwvZmlsZW5hbWU+IHZhcmlhYmxlIGRlZmF1bHRzCisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT4iJHtXT1JLRElSfS90ZXN0aW1hZ2UiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgQWN0dWFsIHRlc3QgcmVzdWx0cyByZXNpZGUgaW4gdGhlIHRhc2sgbG9nCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmxvZy5kb190ZXN0aW1hZ2U8L2ZpbGVuYW1lPiksIHdoaWNoIGlzIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPiR7V09SS0RJUn0vdGVtcC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX1BPV0VSQ09OVFJPTF9DTUQnPjxnbG9zc3Rlcm0+VEVTVF9QT1dFUkNPTlRST0xfQ01EPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBURVNUX1BPV0VSQ09OVFJPTF9DTURbZG9jXSA9ICJGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgdG8gY29udHJvbCB0aGUgcG93ZXIgb2YgdGhlIHRhcmdldCBtYWNoaW5lIHVuZGVyIHRlc3QiCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEZvciBhdXRvbWF0ZWQgaGFyZHdhcmUgdGVzdGluZywgc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgICAgIHVzZSB0byBjb250cm9sIHRoZSBwb3dlciBvZiB0aGUgdGFyZ2V0IG1hY2hpbmUgdW5kZXIgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB0aGlzIGNvbW1hbmQgd291bGQgcG9pbnQgdG8gYSBzY3JpcHQgdGhhdAorICAgICAgICAgICAgICAgICAgICBwZXJmb3JtcyB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uIChlLmcuIGludGVyYWN0aW5nCisgICAgICAgICAgICAgICAgICAgIHdpdGggYSB3ZWItZW5hYmxlZCBwb3dlciBzdHJpcCkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgY29tbWFuZCBzaG91bGQgZXhwZWN0IHRvIHJlY2VpdmUgYXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgIm9mZiIsICJvbiIgb3IgImN5Y2xlIiBzcGVjaWZ5aW5nIHRvIHBvd2VyIG9mZiwKKyAgICAgICAgICAgICAgICAgICAgb24sIG9yIGN5Y2xlIChwb3dlciBvZmYgYW5kIHRoZW4gcG93ZXIgb24pIHRoZSBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX1BPV0VSQ09OVFJPTF9FWFRSQV9BUkdTJz48Z2xvc3N0ZXJtPlRFU1RfUE9XRVJDT05UUk9MX0VYVFJBX0FSR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRFU1RfUE9XRVJDT05UUk9MX0VYVFJBX0FSR1NbZG9jXSA9ICJGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGluIFRFU1RfUE9XRVJDT05UUk9MX0NNRCIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGF1dG9tYXRlZCBoYXJkd2FyZSB0ZXN0aW5nLCBzcGVjaWZpZXMgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgdG8gcGFzcyB0aHJvdWdoIHRvIHRoZSBjb21tYW5kIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEVTVF9QT1dFUkNPTlRST0xfQ01EJz48ZmlsZW5hbWU+VEVTVF9QT1dFUkNPTlRST0xfQ01EPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIDxmaWxlbmFtZT5URVNUX1BPV0VSQ09OVFJPTF9FWFRSQV9BUkdTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaXMgb3B0aW9uYWwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGl0IGlmIHlvdSB3aXNoLCBmb3IgZXhhbXBsZSwgdG8gc2VwYXJhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgYW5kIG5vbi1tYWNoaW5lLXNwZWNpZmljIHBhcnRzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9RRU1VQk9PVF9USU1FT1VUJz48Z2xvc3N0ZXJtPlRFU1RfUUVNVUJPT1RfVElNRU9VVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEVTVF9RRU1VQk9PVF9USU1FT1VUW2RvY10gPSAiVGhlIHRpbWUgaW4gc2Vjb25kcyBhbGxvd2VkIGZvciBhbiBpbWFnZSB0byBib290IGJlZm9yZSBhdXRvbWF0ZWQgcnVudGltZSB0ZXN0cyBiZWdpbiB0byBydW4gYWdhaW5zdCBhbiBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSB0aW1lIGluIHNlY29uZHMgYWxsb3dlZCBmb3IgYW4gaW1hZ2UgdG8gYm9vdCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGVkIHJ1bnRpbWUgdGVzdHMgYmVnaW4gdG8gcnVuIGFnYWluc3QgYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHRpbWVvdXQgcGVyaW9kIHRvIGFsbG93IHRoZSBib290IHByb2Nlc3MgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVhY2ggdGhlIGxvZ2luIHByb21wdCBpcyA1MDAgc2Vjb25kcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IHZhbHVlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRlc3RpbmcgaW1hZ2VzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX1NFUklBTENPTlRST0xfQ01EJz48Z2xvc3N0ZXJtPlRFU1RfU0VSSUFMQ09OVFJPTF9DTUQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRFU1RfU0VSSUFMQ09OVFJPTF9DTURbZG9jXSA9ICJGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgdG8gY29ubmVjdCB0byB0aGUgc2VyaWFsIGNvbnNvbGUgb2YgdGhlIHRhcmdldCBtYWNoaW5lIHVuZGVyIHRlc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICB0byB1c2UgdG8gY29ubmVjdCB0byB0aGUgc2VyaWFsIGNvbnNvbGUgb2YgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHVuZGVyIHRlc3QuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzaW1wbHkgbmVlZHMgdG8gY29ubmVjdCB0byB0aGUgc2VyaWFsIGNvbnNvbGUKKyAgICAgICAgICAgICAgICAgICAgYW5kIGZvcndhcmQgdGhhdCBjb25uZWN0aW9uIHRvIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgYXMgYW55IG5vcm1hbCB0ZXJtaW5hbCBwcm9ncmFtIGRvZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byB1c2UgdGhlIFBpY29jb20gdGVybWluYWwgcHJvZ3JhbSBvbgorICAgICAgICAgICAgICAgICAgICBzZXJpYWwgZGV2aWNlIDxmaWxlbmFtZT4vZGV2L3R0eVVTQjA8L2ZpbGVuYW1lPiBhdAorICAgICAgICAgICAgICAgICAgICAxMTUyMDBicHMsIHlvdSB3b3VsZCBzZXQgdGhlIHZhcmlhYmxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEVTVF9TRVJJQUxDT05UUk9MX0NNRCA9ICJwaWNvY29tIC9kZXYvdHR5VVNCMCAtYiAxMTUyMDAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX1NFUklBTENPTlRST0xfRVhUUkFfQVJHUyc+PGdsb3NzdGVybT5URVNUX1NFUklBTENPTlRST0xfRVhUUkFfQVJHUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEVTVF9TRVJJQUxDT05UUk9MX0VYVFJBX0FSR1NbZG9jXSA9ICJGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGluIFRFU1RfU0VSSUFMQ09OVFJPTF9DTUQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUX1NFUklBTENPTlRST0xfQ01EJz48ZmlsZW5hbWU+VEVTVF9TRVJJQUxDT05UUk9MX0NNRDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+VEVTVF9TRVJJQUxDT05UUk9MX0VYVFJBX0FSR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyBvcHRpb25hbC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgaXQgaWYgeW91IHdpc2gsIGZvciBleGFtcGxlLCB0byBzZXBhcmF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBhbmQgbm9uLW1hY2hpbmUtc3BlY2lmaWMgcGFydHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9TRVJWRVJfSVAnPjxnbG9zc3Rlcm0+VEVTVF9TRVJWRVJfSVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRFU1RfU0VSVkVSX0lQW2RvY10gPSAiVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGJ1aWxkIG1hY2hpbmUgKGhvc3QgbWFjaGluZSkuIFRoaXMgSVAgYWRkcmVzcyBpcyB1c3VhbGx5IGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBvZiB0aGUgYnVpbGQgbWFjaGluZSAoaG9zdCBtYWNoaW5lKS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBJUCBhZGRyZXNzIGlzIHVzdWFsbHkgYXV0b21hdGljYWxseSBkZXRlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgZGV0ZWN0aW9uIGZhaWxzLCB0aGlzIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldAorICAgICAgICAgICAgICAgICAgICB0byB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgYnVpbGQgbWFjaGluZSAoaS5lLiB3aGVyZQorICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgaXMgdGFraW5nIHBsYWNlKS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFU1RfU0VSVkVSX0lQPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIG9ubHkgdXNlZCBmb3IgYSBzbWFsbCBudW1iZXIgb2YgdGVzdHMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJkbmYiIHRlc3Qgc3VpdGUsIHdoaWNoIG5lZWRzIHRvIGRvd25sb2FkCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V09SS0RJUi9vZS1yb290ZnMtcmVwbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9UQVJHRVQnPjxnbG9zc3Rlcm0+VEVTVF9UQVJHRVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRFU1RfVEFSR0VUW2RvY10gPSAiRm9yIGF1dG9tYXRlZCBydW50aW1lIHRlc3RpbmcsIHNwZWNpZmllcyB0aGUgbWV0aG9kIG9mIGRlcGxveWluZyB0aGUgaW1hZ2UgYW5kIHJ1bm5pbmcgdGVzdHMgb24gdGhlIHRhcmdldCBtYWNoaW5lLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgY29udHJvbGxlciB0byB1c2Ugd2hlbiBydW5uaW5nIHRlc3RzCisgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgYSB0ZXN0IGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBjb250cm9sbGVyIHRvIHVzZSBpcyAicWVtdSI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEVTVF9UQVJHRVQgPSAicWVtdSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBIHRhcmdldCBjb250cm9sbGVyIGlzIGEgY2xhc3MgdGhhdCBkZWZpbmVzIGhvdyBhbgorICAgICAgICAgICAgICAgICAgICBpbWFnZSBnZXRzIGRlcGxveWVkIG9uIGEgdGFyZ2V0IGFuZCBob3cgYSB0YXJnZXQgaXMgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgQSBsYXllciBjYW4gZXh0ZW5kIHRoZSBjb250cm9sbGVycyBieSBhZGRpbmcgYSBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGxheWVyJ3MgPGZpbGVuYW1lPi9saWIvb2VxYS9jb250cm9sbGVyczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgYnkgaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJhc2VUYXJnZXQ8L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMgYW4gYWJzdHJhY3QKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdGhhdCBjYW5ub3QgYmUgdXNlZCBhcyBhIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhcmd1bWVudHMgd2l0aAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9UQVJHRVQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InFlbXUiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vdHMgYSBRRU1VIGltYWdlIGFuZCBydW5zIHRoZSB0ZXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3FlbXUtaW1hZ2UtZW5hYmxpbmctdGVzdHMnPkVuYWJsaW5nIFJ1bnRpbWUgVGVzdHMgb24gUUVNVTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJzaW1wbGVyZW1vdGUiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVucyB0aGUgdGVzdHMgb24gdGFyZ2V0IGhhcmR3YXJlIHRoYXQgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwIGFuZCBydW5uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBoYXJkd2FyZSBjYW4gYmUgb24gdGhlIG5ldHdvcmsgb3IgaXQgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBkZXZpY2UgcnVubmluZyBhbiBpbWFnZSBvbiBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRFU1RfVEFSR0VUX0lQJz48ZmlsZW5hbWU+VEVTVF9UQVJHRVRfSVA8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdSB1c2UgInNpbXBsZXJlbW90ZSIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJndW1lbnQgaXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9zaW1wbGVyZW1vdGUucHk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gcnVubmluZyB0ZXN0cyBvbiBoYXJkd2FyZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaGFyZHdhcmUtaW1hZ2UtZW5hYmxpbmctdGVzdHMnPkVuYWJsaW5nIFJ1bnRpbWUgVGVzdHMgb24gSGFyZHdhcmU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9UQVJHRVRfSVAnPjxnbG9zc3Rlcm0+VEVTVF9UQVJHRVRfSVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRFU1RfVEFSR0VUX0lQW2RvY10gPSAiVGhlIElQIGFkZHJlc3Mgb2YgeW91ciBoYXJkd2FyZSB1bmRlciB0ZXN0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIElQIGFkZHJlc3Mgb2YgeW91ciBoYXJkd2FyZSB1bmRlciB0ZXN0LgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFU1RfVEFSR0VUX0lQPC9maWxlbmFtZT4gdmFyaWFibGUgaGFzIG5vCisgICAgICAgICAgICAgICAgICAgIGVmZmVjdCB3aGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUX1RBUkdFVCc+PGZpbGVuYW1lPlRFU1RfVEFSR0VUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byAicWVtdSIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNwZWNpZnkgdGhlIElQIGFkZHJlc3MsIHlvdSBjYW4gYWxzbyBpbmNsdWRlIGEKKyAgICAgICAgICAgICAgICAgICAgcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguMS40OjIyMDEiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmeWluZyBhIHBvcnQgaXMgdXNlZnVsIHdoZW4gU1NIIGlzIHN0YXJ0ZWQgb24gYQorICAgICAgICAgICAgICAgICAgICBub24tc3RhbmRhcmQgcG9ydCBvciBpbiBjYXNlcyB3aGVuIHlvdXIgaGFyZHdhcmUgdW5kZXIgdGVzdAorICAgICAgICAgICAgICAgICAgICBpcyBiZWhpbmQgYSBmaXJld2FsbCBvciBuZXR3b3JrIHRoYXQgaXMgbm90IGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2libGUgZnJvbSB5b3VyIGhvc3QgYW5kIHlvdSBuZWVkIHRvIGRvIHBvcnQgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX1NVSVRFUyc+PGdsb3NzdGVybT5URVNUX1NVSVRFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEVTVF9TVUlURVNbZG9jXSA9ICJBbiBvcmRlcmVkIGxpc3Qgb2YgdGVzdHMgKG1vZHVsZXMpIHRvIHJ1biBhZ2FpbnN0IGFuIGltYWdlIHdoZW4gcGVyZm9ybWluZyBhdXRvbWF0ZWQgcnVudGltZSB0ZXN0aW5nLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQW4gb3JkZXJlZCBsaXN0IG9mIHRlc3RzIChtb2R1bGVzKSB0byBydW4gYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICBhbiBpbWFnZSB3aGVuIHBlcmZvcm1pbmcgYXV0b21hdGVkIHJ1bnRpbWUgdGVzdGluZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgYSBjb3JlIHNldCBvZiB0ZXN0cworICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIGFnYWluc3QgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlcmUgaXMgb25seSBzdXBwb3J0IGZvciBydW5uaW5nIHRoZXNlIHRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRlc3RzIGluY2x1ZGUgPGZpbGVuYW1lPnBpbmc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZGY8L2ZpbGVuYW1lPiBhbW9uZworICAgICAgICAgICAgICAgICAgICBvdGhlcnMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWRkIHlvdXIgb3duIHRlc3RzIHRvIHRoZSBsaXN0IG9mIHRlc3RzIGJ5CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZGluZyA8ZmlsZW5hbWU+VEVTVF9TVUlURVM8L2ZpbGVuYW1lPiBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRFU1RfU1VJVEVTX2FwcGVuZCA9ICIgPHJlcGxhY2VhYmxlPm15dGVzdDwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHJvdmlkZSB0aGUgImF1dG8iIG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICBoYXZlIGFsbCBhcHBsaWNhYmxlIHRlc3RzIHJ1biBhZ2FpbnN0IHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBURVNUX1NVSVRFU19hcHBlbmQgPSAiIGF1dG8iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICBydW4gdGVzdHMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRlc3RzIHRoYXQgYXJlIG5vdCBhcHBsaWNhYmxlIGFyZSBza2lwcGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgb3JkZXIgaW4gd2hpY2ggdGVzdHMgYXJlIHJ1biBpcyBpbXBvcnRhbnQuCisgICAgICAgICAgICAgICAgICAgIFRlc3RzIHRoYXQgZGVwZW5kIG9uIGFub3RoZXIgdGVzdCBtdXN0IGFwcGVhciBsYXRlciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdCB0aGFuIHRoZSB0ZXN0IG9uIHdoaWNoIHRoZXkgZGVwZW5kLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFwcGVuZCB0aGUgbGlzdCBvZiB0ZXN0cyB3aXRoIHR3bworICAgICAgICAgICAgICAgICAgICB0ZXN0cyAoPGZpbGVuYW1lPnRlc3RfQTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdF9CPC9maWxlbmFtZT4pIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0X0I8L2ZpbGVuYW1lPiBpcyBkZXBlbmRlbnQgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3RfQTwvZmlsZW5hbWU+LCB0aGVuIHlvdSBtdXN0IG9yZGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRFU1RfU1VJVEVTID0gIiB0ZXN0X0EgdGVzdF9CIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRlc3RpbmcgaW1hZ2VzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUSU1BR0VfQVVUTyc+PGdsb3NzdGVybT5URVNUSU1BR0VfQVVUTzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVEVTVElNQUdFX0FVVE9bZG9jXSA9ICJFbmFibGVzIGF1dG9tYXRpYyB0ZXN0aW5nIG9mIGFuIGltYWdlIG9uY2UgaXQgaXMgYnVpbHQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IHJ1bnMgdGhlIHNlcmllcyBvZiBhdXRvbWF0ZWQgdGVzdHMgZm9yCisgICAgICAgICAgICAgICAgICAgIGltYWdlcyB3aGVuIGFuIGltYWdlIGlzIHN1Y2Nlc3NmdWxseSBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+VEVTVElNQUdFX0FVVE88L2ZpbGVuYW1lPiB0byAiMSIKKyAgICAgICAgICAgICAgICAgICAgY2F1c2VzIGFueSBpbWFnZSB0aGF0IHN1Y2Nlc3NmdWxseSBidWlsZHMgdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICBib290IHVuZGVyIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSB2YXJpYWJsZSBhbHNvIGFkZHMgaW4gZGVwZW5kZW5jaWVzIHNvIHRoYXQgYW55CisgICAgICAgICAgICAgICAgICAgIFNESyBmb3Igd2hpY2ggdGVzdGluZyBpcyByZXF1ZXN0ZWQgaXMgYXV0b21hdGljYWxseSBidWlsdAorICAgICAgICAgICAgICAgICAgICBmaXJzdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgdGVzdHMgYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIG1ha2luZyB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bml0dGVzdDwvZmlsZW5hbWU+IG1vZHVsZSwgYW5kIHRoZSBtYWpvcml0eSBvZgorICAgICAgICAgICAgICAgICAgICB0aGVtIHJ1biBjb21tYW5kcyBvbiB0aGUgdGFyZ2V0IHN5c3RlbSBvdmVyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSB0byAiMSIgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZXNlIHRlc3RzIGFmdGVyIGFuIGltYWdlIHN1Y2Nlc3NmdWxseSBidWlsZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEVTVElNQUdFX0FVVE8gPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBlbmFibGluZywgcnVubmluZywgYW5kIHdyaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGVzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXRlc3RpbWFnZSonPjxmaWxlbmFtZT50ZXN0aW1hZ2UqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEhJU0RJUic+PGdsb3NzdGVybT5USElTRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUSElTRElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgZmlsZSBCaXRCYWtlIGlzIGN1cnJlbnRseSBwYXJzaW5nIGlzIGxvY2F0ZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBmaWxlIEJpdEJha2UgaXMgY3VycmVudGx5CisgICAgICAgICAgICAgICAgICAgIHBhcnNpbmcgaXMgbG9jYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IG1hbnVhbGx5IHNldCB0aGlzIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRJTUUnPjxnbG9zc3Rlcm0+VElNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVElNRVtkb2NdID0gIlRoZSB0aW1lIHRoZSBidWlsZCB3YXMgc3RhcnRlZCB1c2luZyBITVMgZm9ybWF0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRpbWUgdGhlIGJ1aWxkIHdhcyBzdGFydGVkLgorICAgICAgICAgICAgICAgICAgICBUaW1lcyBhcHBlYXIgdXNpbmcgdGhlIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29uZCAoSE1TKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgKGUuZy4gIjE0MDE1OSIgZm9yIG9uZSBtaW51dGUgYW5kIGZpZnR5LW5pbmUKKyAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyBwYXN0IDE0MDAgaG91cnMpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRNUERJUic+PGdsb3NzdGVybT5UTVBESVI8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRNUERJUltkb2NdID0gIlRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgd2hlbiBpdCBkb2VzIGl0cyB3b3JrIGJ1aWxkaW5nIGltYWdlcy4gQnkgZGVmYXVsdCwgdGhlIFRNUERJUiB2YXJpYWJsZSBpcyBuYW1lZCB0bXAgd2l0aGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHRoZSBiYXNlIGRpcmVjdG9yeSB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB1c2VzIGZvciBhbGwgYnVpbGQgb3V0cHV0IGFuZCBpbnRlcm1lZGlhdGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgKG90aGVyIHRoYW4gdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSkuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gdmFyaWFibGUgcG9pbnRzCisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZXN0YWJsaXNoIHRoaXMgZGlyZWN0b3J5IGluIGEgbG9jYXRpb24gb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhbiB0aGUgZGVmYXVsdCwgeW91IGNhbiB1bmNvbW1lbnQgYW5kIGVkaXQgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjVE1QRElSID0gIiR7VE9QRElSfS90bXAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSB1c2UgZm9yIHRoaXMgc2NlbmFyaW8gaXMgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB0byBhIGxvY2FsIGRpc2ssIHdoaWNoIGRvZXMKKyAgICAgICAgICAgICAgICAgICAgbm90IHVzZSBORlMsIHdoaWxlIGhhdmluZyB0aGUgQnVpbGQgRGlyZWN0b3J5IHVzZSBORlMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlc3lzdGVtIHVzZWQgYnkgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IG11c3QKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBzdGFuZGFyZCBmaWxlc3lzdGVtIHNlbWFudGljcyAoaS5lLiBtaXhlZC1jYXNlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGFyZSB1bmlxdWUsIFBPU0lYIGZpbGUgbG9ja2luZywgYW5kIHBlcnNpc3RlbnQgaW5vZGVzKS4KKyAgICAgICAgICAgICAgICAgICAgRHVlIHRvIHZhcmlvdXMgaXNzdWVzIHdpdGggTkZTIGFuZCBidWdzIGluIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLCBORlMgZG9lcyBub3QgbWVldCB0aGlzIG1pbmltdW0KKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnQuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGNhbm5vdCBiZSBvbgorICAgICAgICAgICAgICAgICAgICBORlMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVE9PTENIQUlOX0hPU1RfVEFTSyc+PGdsb3NzdGVybT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUT09MQ0hBSU5fSE9TVF9UQVNLW2RvY10gPSAiVGhpcyB2YXJpYWJsZSBsaXN0cyBwYWNrYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHdoZW4gYnVpbGRpbmcgYW4gU0RLLCB3aGljaCBjb250YWlucyBhIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBsaXN0cyBwYWNrYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1c2VzIHdoZW4gYnVpbGRpbmcgYW4gU0RLLCB3aGljaCBjb250YWlucyBhCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBUaGUgcGFja2FnZXMgc3BlY2lmaWVkIGJ5IHRoaXMgdmFyaWFibGUgYXJlIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBzZXQgdGhhdCBydW5zIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZCBlYWNoIHBhY2thZ2Ugc2hvdWxkIHVzdWFsbHkgaGF2ZSB0aGUgcHJlZml4CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd2hlbgorICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBhbiBTREs6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIHBvcHVsYXRlX3NkayA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgZGVmYXVsdCBsaXN0IG9mIHBhY2thZ2VzIGlzIHNldCBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBidXQgeW91IGNhbiBhZGQgYWRkaXRpb25hbCBwYWNrYWdlcyB0byB0aGUgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFkZGluZy1pbmRpdmlkdWFsLXBhY2thZ2VzJz5BZGRpbmcgSW5kaXZpZHVhbCBQYWNrYWdlcyB0byB0aGUgU3RhbmRhcmQgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsCisgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVE9PTENIQUlOX09VVFBVVE5BTUUnPjxnbG9zc3Rlcm0+VE9PTENIQUlOX09VVFBVVE5BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRPT0xDSEFJTl9PVVRQVVROQU1FW2RvY10gPSAiRGVmaW5lcyB0aGUgbmFtZSB1c2VkIGZvciB0aGUgdG9vbGNoYWluIG91dHB1dC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgZGVmaW5lcyB0aGUgbmFtZSB1c2VkIGZvciB0aGUgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3Mgc2V0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPT0xDSEFJTl9PVVRQVVROQU1FPC9maWxlbmFtZT4gdmFyaWFibGUgYXMKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtTREtfTkFNRX0tdG9vbGNoYWluLSR7U0RLX1ZFUlNJT059IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19OQU1FJz48ZmlsZW5hbWU+U0RLX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfVkVSU0lPTic+PGZpbGVuYW1lPlNES19WRVJTSU9OPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxnbG9zc3Rlcm0+VE9PTENIQUlOX1RBUkdFVF9UQVNLPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUT09MQ0hBSU5fVEFSR0VUX1RBU0tbZG9jXSA9ICJUaGlzIHZhcmlhYmxlIGxpc3RzIHBhY2thZ2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgd2hlbiBpdCBjcmVhdGVzIHRoZSB0YXJnZXQgcGFydCBvZiBhbiBTREssIHdoaWNoIGluY2x1ZGVzIGxpYnJhcmllcyBhbmQgaGVhZGVycy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgbGlzdHMgcGFja2FnZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgdXNlcyB3aGVuIGl0IGNyZWF0ZXMgdGhlIHRhcmdldCBwYXJ0IG9mIGFuIFNESworICAgICAgICAgICAgICAgICAgICAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSksIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIGxpYnJhcmllcyBhbmQgaGVhZGVycy4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgdmFyaWFibGUgdG8gYWRkIGluZGl2aWR1YWwgcGFja2FnZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWFkZGluZy1pbmRpdmlkdWFsLXBhY2thZ2VzJz5BZGRpbmcgSW5kaXZpZHVhbCBQYWNrYWdlcyB0byB0aGUgU3RhbmRhcmQgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVE9QRElSJz48Z2xvc3N0ZXJtPlRPUERJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVE9QRElSW2RvY10gPSAiVGhlIEJ1aWxkIERpcmVjdG9yeS4gQml0QmFrZSBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyB2YXJpYWJsZS4gVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgQnVpbGQgRGlyZWN0b3J5IHdoZW4gYnVpbGRpbmcgaW1hZ2VzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXV0b21hdGljYWxseSBzZXRzIHRoaXMgdmFyaWFibGUgd2hlbiB5b3UKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRSQU5TTEFURURfVEFSR0VUX0FSQ0gnPjxnbG9zc3Rlcm0+VFJBTlNMQVRFRF9UQVJHRVRfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVFJBTlNMQVRFRF9UQVJHRVRfQVJDSFtkb2NdID0gIkEgc2FuaXRpemVkIHZlcnNpb24gb2YgVEFSR0VUX0FSQ0guIFRoaXMgdmFyaWFibGUgaXMgdXNlZCB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJlIGlzIG5lZWRlZCBpbiBhIHZhbHVlIHdoZXJlIHVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgc2FuaXRpemVkIHZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9BUkNIJz48ZmlsZW5hbWU+VEFSR0VUX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdXNlZCB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJlIGlzIG5lZWRlZCBpbgorICAgICAgICAgICAgICAgICAgICBhIHZhbHVlIHdoZXJlIHVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZCwgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAgICAgd2l0aGluIHBhY2thZ2UgZmlsZW5hbWVzLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGRhc2ggY2hhcmFjdGVycyByZXBsYWNlIGFueSB1bmRlcnNjb3JlCisgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgdXNlZCBpbiA8ZmlsZW5hbWU+VEFSR0VUX0FSQ0g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IGVkaXQgdGhpcyB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UVU5FX0FSQ0gnPjxnbG9zc3Rlcm0+VFVORV9BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUVU5FX0FSQ0hbZG9jXSA9ICJUaGUgR05VIGNhbm9uaWNhbCBhcmNoaXRlY3R1cmUgZm9yIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIChpLmUuIGFybSwgYXJtZWIsIG1pcHMsIG1pcHM2NCwgYW5kIHNvIGZvcnRoKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBHTlUgY2Fub25pY2FsIGFyY2hpdGVjdHVyZSBmb3IgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmFybTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJtZWI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1pcHM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1pcHM2NDwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhpcyB2YWx1ZSB0byBzZXR1cCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORV9BUkNIPC9maWxlbmFtZT4gZGVmaW5pdGlvbnMgYXJlIHNwZWNpZmljIHRvCisgICAgICAgICAgICAgICAgICAgIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmaW5pdGlvbnMgY2FuIGJlIGEgc2luZ2xlIHN0YXRpYyBkZWZpbml0aW9uLCBvcgorICAgICAgICAgICAgICAgICAgICBjYW4gYmUgZHluYW1pY2FsbHkgYWRqdXN0ZWQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGRldGFpbHMgZm9yIGEgZ2l2ZW4gQ1BVIGZhbWlseSBieSBsb29raW5nIGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBhcmNoaXRlY3R1cmUncyA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL1JFQURNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGluZm9ybWF0aW9uIGZvciA8ZmlsZW5hbWU+VFVORV9BUkNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIDxmaWxlbmFtZT5taXBzPC9maWxlbmFtZT4gYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORV9BUkNIPC9maWxlbmFtZT4gaXMgdGllZCBjbG9zZWx5IHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfQVJDSCc+PGZpbGVuYW1lPlRBUkdFVF9BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBkZWZpbmVzIHRoZSB0YXJnZXQgbWFjaGluZSdzIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+KSBzZXRzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UQVJHRVRfQVJDSDwvZmlsZW5hbWU+IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEFSR0VUX0FSQ0ggPSAiJHtUVU5FX0FSQ0h9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCwgd2hpY2ggaXMgYnkgbm8gbWVhbnMgY29tcGxldGUgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcyBhcmUgY29uZmlndXJhYmxlLCBzaG93cyBzdXBwb3J0ZWQgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGFybQorICAgICBpNTg2CisgICAgIHg4Nl82NAorICAgICBwb3dlcnBjCisgICAgIHBvd2VycGM2NAorICAgICBtaXBzCisgICAgIG1pcHNlbAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORV9BU0FSR1MnPjxnbG9zc3Rlcm0+VFVORV9BU0FSR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRVTkVfQVNBUkdTW2RvY10gPSAiU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhc3NlbWJsZXIgZmxhZ3MgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhc3NlbWJsZXIgZmxhZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2V0IG9mIGZsYWdzIGlzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCB0dW5lIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORV9BU0FSR1M8L2ZpbGVuYW1lPiBpcyBzZXQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIHR1bmUgaW5jbHVkZSBmaWxlcywgd2hpY2ggYXJlIHR5cGljYWxseSB1bmRlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS88L2ZpbGVuYW1lPiBhbmQgYXJlCisgICAgICAgICAgICAgICAgICAgIGluZmx1ZW5jZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9GRUFUVVJFUyc+PGZpbGVuYW1lPlRVTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2L2FyY2gteDg2LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB0aGUgZmxhZ3MgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVFVORV9BU0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLXgzMiIsICIiLCBkKX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKSBzZWxlY3QgdGhlIHR1bmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2VsZWN0ZWQgdHVuZSwgaW4gdHVybiwgYWZmZWN0cyB0aGUgdHVuZSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1zZWx2ZXMgKGkuZS4gdGhlIHR1bmUgY2FuIHN1cHBseSBpdHMgb3duCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb2YgZmxhZ3MpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORV9DQ0FSR1MnPjxnbG9zc3Rlcm0+VFVORV9DQ0FSR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRVTkVfQ0NBUkdTW2RvY10gPSAiU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBDIGNvbXBpbGVyIGZsYWdzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQyBjb21waWxlciBmbGFncyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFRoZSBzZXQgb2YgZmxhZ3MgaXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIHR1bmUgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UVU5FX0NDQVJHUzwvZmlsZW5hbWU+IGlzIHNldCB1c2luZworICAgICAgICAgICAgICAgICAgICB0aGUgdHVuZSBpbmNsdWRlIGZpbGVzLCB3aGljaCBhcmUgdHlwaWNhbGx5IHVuZGVyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlLzwvZmlsZW5hbWU+IGFuZCBhcmUKKyAgICAgICAgICAgICAgICAgICAgaW5mbHVlbmNlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UVU5FX0ZFQVRVUkVTJz48ZmlsZW5hbWU+VFVORV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKSBzZWxlY3QgdGhlIHR1bmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2VsZWN0ZWQgdHVuZSwgaW4gdHVybiwgYWZmZWN0cyB0aGUgdHVuZSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1zZWx2ZXMgKGkuZS4gdGhlIHR1bmUgY2FuIHN1cHBseSBpdHMgb3duCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb2YgZmxhZ3MpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORV9MREFSR1MnPjxnbG9zc3Rlcm0+VFVORV9MREFSR1M8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRVTkVfTERBUkdTW2RvY10gPSAiU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2V0IG9mIGZsYWdzIGlzIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCB0dW5lIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORV9MREFSR1M8L2ZpbGVuYW1lPiBpcyBzZXQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIHR1bmUgaW5jbHVkZSBmaWxlcywgd2hpY2ggYXJlIHR5cGljYWxseSB1bmRlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS88L2ZpbGVuYW1lPiBhbmQgYXJlCisgICAgICAgICAgICAgICAgICAgIGluZmx1ZW5jZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORV9GRUFUVVJFUyc+PGZpbGVuYW1lPlRVTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2L2FyY2gteDg2LmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB0aGUgZmxhZ3MgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVFVORV9MREFSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLW0gZWxmMzJfeDg2XzY0IiwgIiIsIGQpfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpIHNlbGVjdCB0aGUgdHVuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzZWxlY3RlZCB0dW5lLCBpbiB0dXJuLCBhZmZlY3RzIHRoZSB0dW5lIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbXNlbHZlcyAoaS5lLiB0aGUgdHVuZSBjYW4gc3VwcGx5IGl0cyBvd24KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldCBvZiBmbGFncykuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UVU5FX0ZFQVRVUkVTJz48Z2xvc3N0ZXJtPlRVTkVfRkVBVFVSRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRVTkVfRkVBVFVSRVNbZG9jXSA9ICJGZWF0dXJlcyB1c2VkIHRvICJ0dW5lIiBhIGNvbXBpbGVyIGZvciBvcHRpbWFsIHVzZSBnaXZlbiBhIHNwZWNpZmljIHByb2Nlc3Nvci4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEZlYXR1cmVzIHVzZWQgdG8gInR1bmUiIGEgY29tcGlsZXIgZm9yIG9wdGltYWwgdXNlCisgICAgICAgICAgICAgICAgICAgIGdpdmVuIGEgc3BlY2lmaWMgcHJvY2Vzc29yLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmVhdHVyZXMgYXJlIGRlZmluZWQgd2l0aGluIHRoZSB0dW5lIGZpbGVzIGFuZCBhbGxvdworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgKGkuZS4gPGZpbGVuYW1lPlRVTkVfKkFSR1M8L2ZpbGVuYW1lPikgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGJhc2VkIG9uIHRoZSBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdmVyaWZpZXMgdGhlIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIHRvIGJlIHN1cmUgdGhleSBhcmUgbm90IGNvbmZsaWN0aW5nIGFuZCB0aGF0IHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+KSBkZWZpbmVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UVU5FX0ZFQVRVUkVTPC9maWxlbmFtZT4gYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUVU5FX0ZFQVRVUkVTID8/PSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtJHtERUZBVUxUVFVORX19IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFRkFVTFRUVU5FJz48ZmlsZW5hbWU+REVGQVVMVFRVTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORV9QS0dBUkNIJz48Z2xvc3N0ZXJtPlRVTkVfUEtHQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVFVORV9QS0dBUkNIW2RvY10gPSAiVGhlIHBhY2thZ2UgYXJjaGl0ZWN0dXJlIHVuZGVyc3Rvb2QgYnkgdGhlIHBhY2thZ2luZyBzeXN0ZW0gdG8gZGVmaW5lIHRoZSBhcmNoaXRlY3R1cmUsIEFCSSwgYW5kIHR1bmluZyBvZiBvdXRwdXQgcGFja2FnZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSBhcmNoaXRlY3R1cmUgdW5kZXJzdG9vZCBieSB0aGUgcGFja2FnaW5nCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB0byBkZWZpbmUgdGhlIGFyY2hpdGVjdHVyZSwgQUJJLCBhbmQgdHVuaW5nIG9mCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmljIHR1bmUgaXMgZGVmaW5lZCB1c2luZyB0aGUgIl90dW5lIiBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFRVTkVfUEtHQVJDSF90dW5lLTxyZXBsYWNlYWJsZT50dW5lPC9yZXBsYWNlYWJsZT4gPSAiPHJlcGxhY2VhYmxlPnR1bmU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGVzZSB0dW5lLXNwZWNpZmljIHBhY2thZ2UgYXJjaGl0ZWN0dXJlcyBhcmUgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSBpbmNsdWRlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhlICJjb3JlMi0zMiIgdHVuaW5nIGFzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi0zMiA9ICJjb3JlMi0zMiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRVTkVBQkknPjxnbG9zc3Rlcm0+VFVORUFCSTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgVFVORUFCSVtkb2NdID0gIkFuIHVuZGVybHlpbmcgQUJJIHVzZWQgYnkgYSBwYXJ0aWN1bGFyIHR1bmluZyBpbiBhIGdpdmVuIHRvb2xjaGFpbiBsYXllci4gVGhpcyBmZWF0dXJlIGFsbG93cyBwcm92aWRlcnMgdXNpbmcgcHJlYnVpbHQgbGlicmFyaWVzIHRvIGNoZWNrIGNvbXBhdGliaWxpdHkgb2YgYSB0dW5pbmcgYWdhaW5zdCB0aGVpciBzZWxlY3Rpb24gb2YgbGlicmFyaWVzLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgQW4gdW5kZXJseWluZyBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgYSBwYXJ0aWN1bGFyIHR1bmluZyBpbiBhIGdpdmVuIHRvb2xjaGFpbiBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJzIHRoYXQgdXNlIHByZWJ1aWx0IGxpYnJhcmllcyBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORUFCSTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORUFCSV9PVkVSUklERSc+PGZpbGVuYW1lPlRVTkVBQklfT1ZFUlJJREU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORUFCSV9XSElURUxJU1QnPjxmaWxlbmFtZT5UVU5FQUJJX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdG8gY2hlY2sgY29tcGF0aWJpbGl0eSBvZiB0dW5pbmdzIGFnYWluc3QgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uIG9mIGxpYnJhcmllcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgPGZpbGVuYW1lPlRVTkVBQkk8L2ZpbGVuYW1lPiBpcyB1bmRlZmluZWQsIHRoZW4gZXZlcnkKKyAgICAgICAgICAgICAgICAgICAgdHVuaW5nIGlzIGFsbG93ZWQuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc2FuaXR5Jz48ZmlsZW5hbWU+c2FuaXR5PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHNlZSBob3cgdGhlIHZhcmlhYmxlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORUFCSV9PVkVSUklERSc+PGdsb3NzdGVybT5UVU5FQUJJX09WRVJSSURFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUVU5FQUJJX09WRVJSSURFW2RvY10gPSAiSWYgc2V0LCBpZ25vcmVzIFRVTkVBQklfV0hJVEVMSVNULiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0LCB0aGUgT3BlbkVtYmVkZGVkIHN5c3RlbSBpZ25vcmVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVFVORUFCSV9XSElURUxJU1QnPjxmaWxlbmFtZT5UVU5FQUJJX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJzIHRoYXQgdXNlIHByZWJ1aWx0IGxpYnJhcmllcyBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORUFCSV9PVkVSUklERTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORUFCSV9XSElURUxJU1Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UVU5FQUJJJz48ZmlsZW5hbWU+VFVORUFCSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdG8gY2hlY2sgY29tcGF0aWJpbGl0eSBvZiBhIHR1bmluZyBhZ2FpbnN0IHRoZWlyCisgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbiBvZiBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc2FuaXR5Jz48ZmlsZW5hbWU+c2FuaXR5PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHNlZSBob3cgdGhlIHZhcmlhYmxlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORUFCSV9XSElURUxJU1QnPjxnbG9zc3Rlcm0+VFVORUFCSV9XSElURUxJU1Q8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRVTkVBQklfV0hJVEVMSVNUW2RvY10gPSAiQSB3aGl0ZWxpc3Qgb2YgcGVybWlzc2libGUgVFVORUFCSSB2YWx1ZXMuICBJZiB0aGUgdmFyaWFibGUgaXMgbm90IHNldCwgYWxsIHZhbHVlcyBhcmUgYWxsb3dlZC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEEgd2hpdGVsaXN0IG9mIHBlcm1pc3NpYmxlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UVU5FQUJJJz48ZmlsZW5hbWU+VFVORUFCSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5UVU5FQUJJX1dISVRFTElTVDwvZmlsZW5hbWU+IGlzIG5vdCBzZXQsCisgICAgICAgICAgICAgICAgICAgIGFsbCB0dW5lcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJzIHRoYXQgdXNlIHByZWJ1aWx0IGxpYnJhcmllcyBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VFVORUFCSV9XSElURUxJU1Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRVTkVBQklfT1ZFUlJJREUnPjxmaWxlbmFtZT5UVU5FQUJJX09WRVJSSURFPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPlRVTkVBQkk8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgdG8gY2hlY2sKKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBvZiBhIHR1bmluZyBhZ2FpbnN0IHRoZWlyIHNlbGVjdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc2FuaXR5Jz48ZmlsZW5hbWU+c2FuaXR5PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHNlZSBob3cgdGhlIHZhcmlhYmxlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVFVORUNPTkZMSUNUUyc+PGdsb3NzdGVybT5UVU5FQ09ORkxJQ1RTWzxyZXBsYWNlYWJsZT5mZWF0dXJlPC9yZXBsYWNlYWJsZT5dPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBUVU5FQ09ORkxJQ1RTW2RvY10gPSAiU3BlY2lmaWVzIENQVSBvciBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIHR1bmluZyBmZWF0dXJlcyB0aGF0IGNvbmZsaWN0IHdpdGggc3BlY2lmaWVkIGZlYXR1cmUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgQ1BVIG9yIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkKKyAgICAgICAgICAgICAgICAgICAgdHVuaW5nIGZlYXR1cmVzIHRoYXQgY29uZmxpY3Qgd2l0aCA8cmVwbGFjZWFibGU+ZmVhdHVyZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBLbm93biB0dW5pbmcgY29uZmxpY3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIG1hY2hpbmUgaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL2FyY2gtbWlwcy5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGUgdGhhdCBsaXN0cyB0aGUgIm8zMiIgYW5kICJuNjQiIGZlYXR1cmVzIGFzCisgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0aW5nIHdpdGggdGhlICJuMzIiIGZlYXR1cmU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVFVORUNPTkZMSUNUU1tuMzJdID0gIm8zMiBuNjQiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UVU5FVkFMSUQnPjxnbG9zc3Rlcm0+VFVORVZBTElEWzxyZXBsYWNlYWJsZT5mZWF0dXJlPC9yZXBsYWNlYWJsZT5dPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFRVTkVWQUxJRFtkb2NdID0gIkRlc2NyaXB0aW9ucywgc3RvcmVkIGFzIGZsYWdzLCBvZiB2YWxpZCB0dW5pbmcgZmVhdHVyZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB2YWxpZCBDUFUgb3IgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKQorICAgICAgICAgICAgICAgICAgICB0dW5pbmcgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmllZCBmZWF0dXJlIGlzIHN0b3JlZCBhcyBhIGZsYWcuCisgICAgICAgICAgICAgICAgICAgIFZhbGlkIGZlYXR1cmVzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIG1hY2hpbmUgaW5jbHVkZSBmaWxlcworICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm0uaW5jPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGF0IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVFVORVZBTElEW2JpZ2VuZGlhbl0gPSAiRW5hYmxlIGJpZy1lbmRpYW4gbW9kZS4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBtYWNoaW5lIGluY2x1ZGUgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciB0aGVzZSBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnktdSc+PHRpdGxlPlU8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfQ09ORklHJz48Z2xvc3N0ZXJtPlVCT09UX0NPTkZJRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9DT05GSUdbZG9jXSA9ICJDb25maWd1cmVzIHRoZSBVQk9PVF9NQUNISU5FIGFuZCBjYW4gYWxzbyBkZWZpbmUgSU1BR0VfRlNUWVBFUyBmb3IgaW5kaXZpZHVhbCBjYXNlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9NQUNISU5FJz48ZmlsZW5hbWU+VUJPT1RfTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgY2FuIGFsc28gZGVmaW5lCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgaW5kaXZpZHVhbCBjYXNlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtZnNsLWFybTwvZmlsZW5hbWU+IGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFVCT09UX0NPTkZJRyA/Pz0gInNkIgorICAgICBVQk9PVF9DT05GSUdbc2RdID0gIm14NnFzYWJyZWF1dG9fY29uZmlnLHNkY2FyZCIKKyAgICAgVUJPT1RfQ09ORklHW2VpbW5vcl0gPSAibXg2cXNhYnJlYXV0b19laW1ub3JfY29uZmlnIgorICAgICBVQk9PVF9DT05GSUdbbmFuZF0gPSAibXg2cXNhYnJlYXV0b19uYW5kX2NvbmZpZyx1YmlmcyIKKyAgICAgVUJPT1RfQ09ORklHW3NwaW5vcl0gPSAibXg2cXNhYnJlYXV0b19zcGlub3JfY29uZmlnIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgInNkIiBpcyBzZWxlY3RlZCBhcyB0aGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcG9zc2libGUgZm91ciBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5VQk9PVF9NQUNISU5FPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSAic2QiIGNvbmZpZ3VyYXRpb24gZGVmaW5lcyAibXg2cXNhYnJlYXV0b19jb25maWciCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB2YWx1ZSBmb3IgPGZpbGVuYW1lPlVCT09UX01BQ0hJTkU8L2ZpbGVuYW1lPiwgd2hpbGUKKyAgICAgICAgICAgICAgICAgICAgdGhlICJzZGNhcmQiIHNwZWNpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB0byB1c2UgZm9yIHRoZSBVLWJvb3QKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlVCT09UX0NPTkZJRzwvZmlsZW5hbWU+IGlzIGhhbmRsZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcyc+PGZpbGVuYW1lPnVib290LWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfRFRCX0xPQURBRERSRVNTJz48Z2xvc3N0ZXJtPlVCT09UX0RUQl9MT0FEQUREUkVTUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9EVEJfTE9BREFERFJFU1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IgdGhlIGR0Yi4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbG9hZCBhZGRyZXNzIGZvciB0aGUgZHRiIGltYWdlIHVzZWQgYnkgVS1ib290LgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgRklUIGltYWdlIGNyZWF0aW9uLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlVCT09UX0RUQl9MT0FEQUREUkVTUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZTwvZmlsZW5hbWU+IGNsYXNzIHRvIHNwZWNpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGxvYWQgYWRkcmVzcyB0byBiZSB1c2VkIGluIGNyZWF0aW5nIHRoZSBkdGIgc2VjdGlvbnMgb2YKKyAgICAgICAgICAgICAgICAgICAgSW1hZ2UgVHJlZSBTb3VyY2UgZm9yIHRoZSBGSVQgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfRFRCT19MT0FEQUREUkVTUyc+PGdsb3NzdGVybT5VQk9PVF9EVEJPX0xPQURBRERSRVNTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVCT09UX0RUQk9fTE9BREFERFJFU1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IgdGhlIGR0Ym8uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IgdGhlIGR0Ym8gaW1hZ2UgdXNlZCBieSBVLWJvb3QuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyBGSVQgaW1hZ2UgY3JlYXRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VUJPT1RfRFRCT19MT0FEQUREUkVTUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZTwvZmlsZW5hbWU+IGNsYXNzIHRvIHNwZWNpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGxvYWQgYWRkcmVzcyB0byBiZSB1c2VkIGluIGNyZWF0aW5nIHRoZSBkdGJvIHNlY3Rpb25zIG9mCisgICAgICAgICAgICAgICAgICAgIEltYWdlIFRyZWUgU291cmNlIGZvciB0aGUgRklUIGltYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVCT09UX0VOVFJZUE9JTlQnPjxnbG9zc3Rlcm0+VUJPT1RfRU5UUllQT0lOVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9FTlRSWVBPSU5UW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFUtQm9vdCBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBVLUJvb3QgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyBVLUJvb3QgaW1hZ2UgY3JlYXRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VUJPT1RfRU5UUllQT0lOVDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICBhcyBhIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51Ym9vdC1ta2ltYWdlPC9maWxlbmFtZT4gdXRpbGl0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VQk9PVF9MT0FEQUREUkVTUyc+PGdsb3NzdGVybT5VQk9PVF9MT0FEQUREUkVTUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9MT0FEQUREUkVTU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgbG9hZCBhZGRyZXNzIGZvciB0aGUgVS1Cb290IGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2FkIGFkZHJlc3MgZm9yIHRoZSBVLUJvb3QgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyBVLUJvb3QgaW1hZ2UgY3JlYXRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VUJPT1RfTE9BREFERFJFU1M8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBwYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgYXMgYSBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dWJvb3QtbWtpbWFnZTwvZmlsZW5hbWU+IHV0aWxpdHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfTE9DQUxWRVJTSU9OJz48Z2xvc3N0ZXJtPlVCT09UX0xPQ0FMVkVSU0lPTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9MT0NBTFZFUlNJT05bZG9jXSA9ICJBcHBlbmRzIGEgc3RyaW5nIHRvIHRoZSBuYW1lIG9mIHRoZSBsb2NhbCB2ZXJzaW9uIG9mIHRoZSBVLUJvb3QgaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBcHBlbmRzIGEgc3RyaW5nIHRvIHRoZSBuYW1lIG9mIHRoZSBsb2NhbCB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBVLUJvb3QgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhc3N1bWluZyB0aGUgdmVyc2lvbiBvZiB0aGUgVS1Cb290IGltYWdlCisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHdhcyAiMjAxMy4xMCIsIHRoZSBmdWxsIHZlcnNpb24gc3RyaW5nIHJlcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIFUtQm9vdCB3b3VsZCBiZSAiMjAxMy4xMC15b2N0byIgZ2l2ZW4gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVUJPT1RfTE9DQUxWRVJTSU9OID0gIi15b2N0byIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVCT09UX01BQ0hJTkUnPjxnbG9zc3Rlcm0+VUJPT1RfTUFDSElORTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9NQUNISU5FW2RvY10gPSAiU3BlY2lmaWVzIHRoZSB2YWx1ZSBwYXNzZWQgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lIHdoZW4gYnVpbGRpbmcgYSBVLUJvb3QgaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHZhbHVlIHBhc3NlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGxpbmUgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBhIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGluZGljYXRlcyB0aGUgdGFyZ2V0IHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFlvdSB0eXBpY2FsbHkgc2V0IHRoaXMgdmFyaWFibGUgZnJvbSB0aGUgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS88cmVwbGFjZWFibGU+bWFjaGluZV9uYW1lPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlZSB0aGUgIlNlbGVjdGlvbiBvZiBQcm9jZXNzb3IgQXJjaGl0ZWN0dXJlIGFuZAorICAgICAgICAgICAgICAgICAgICBCb2FyZCBUeXBlIiBzZWN0aW9uIGluIHRoZSBVLUJvb3QgUkVBRE1FIGZvciB2YWxpZCB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfTUFLRV9UQVJHRVQnPjxnbG9zc3Rlcm0+VUJPT1RfTUFLRV9UQVJHRVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgVUJPT1RfTUFLRV9UQVJHRVRbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHRhcmdldCBjYWxsZWQgaW4gdGhlIE1ha2VmaWxlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgY2FsbGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdGFyZ2V0IGlzICJhbGwiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVCT09UX01LSU1BR0VfRFRDT1BUUyc+PGdsb3NzdGVybT5VQk9PVF9NS0lNQUdFX0RUQ09QVFM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgVUJPT1RfTUtJTUFHRV9EVENPUFRTW2RvY10gPSAiT3B0aW9ucyBmb3IgdGhlIGRldmljZSB0cmVlIGNvbXBpbGVyIHBhc3NlZCB0byBta2ltYWdlICctRCcgZmVhdHVyZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgZm9yIHRoZSBkZXZpY2UgdHJlZSBjb21waWxlciBwYXNzZWQgdG8gbWtpbWFnZSAnLUQnCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgd2hpbGUgY3JlYXRpbmcgRklUIGltYWdlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtZml0aW1hZ2U8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VQk9PVF9SRF9MT0FEQUREUkVTUyc+PGdsb3NzdGVybT5VQk9PVF9SRF9MT0FEQUREUkVTUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9SRF9MT0FEQUREUkVTU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgbG9hZCBhZGRyZXNzIGZvciB0aGUgcmFtZGlzayBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbG9hZCBhZGRyZXNzIGZvciB0aGUgUkFNIGRpc2sgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyBGSVQgaW1hZ2UgY3JlYXRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VUJPT1RfUkRfTE9BREFERFJFU1M8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5rZXJuZWwtZml0aW1hZ2U8L2ZpbGVuYW1lPiBjbGFzcyB0byBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICBsb2FkIGFkZHJlc3MgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyB0aGUgSW1hZ2UgVHJlZSBTb3VyY2UgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBGSVQgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfUkRfRU5UUllQT0lOVCc+PGdsb3NzdGVybT5VQk9PVF9SRF9FTlRSWVBPSU5UPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVCT09UX1JEX0VOVFJZUE9JTlRbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGVudHJ5cG9pbnQgZm9yIHRoZSByYW1kaXNrIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBlbnRyeXBvaW50IGZvciB0aGUgUkFNIGRpc2sgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIER1cmluZyBGSVQgaW1hZ2UgY3JlYXRpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VUJPT1RfUkRfRU5UUllQT0lOVDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZTwvZmlsZW5hbWU+IGNsYXNzIHRvIHNwZWNpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyB0aGUgSW1hZ2UgVHJlZSBTb3VyY2UgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBGSVQgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfU1VGRklYJz48Z2xvc3N0ZXJtPlVCT09UX1NVRkZJWDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9TVUZGSVhbZG9jXSA9ICJQb2ludHMgdG8gdGhlIGdlbmVyYXRlZCBVLUJvb3QgZXh0ZW5zaW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmF0ZWQgVS1Cb290IGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIDxmaWxlbmFtZT51LWJvb3Quc2I8L2ZpbGVuYW1lPiBoYXMgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNiPC9maWxlbmFtZT4gZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBVLUJvb3QgZXh0ZW5zaW9uIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VQk9PVF9TSUdOX0VOQUJMRSc+PGdsb3NzdGVybT5VQk9PVF9TSUdOX0VOQUJMRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9TSUdOX0tFWURJUltkb2NdID0gIkVuYWJsZSBzaWduaW5nIG9mIEZJVCBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBzaWduaW5nIG9mIEZJVCBpbWFnZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgIjAiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVCT09UX1NJR05fS0VZRElSJz48Z2xvc3N0ZXJtPlVCT09UX1NJR05fS0VZRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVCT09UX1NJR05fS0VZRElSW2RvY10gPSAiTG9jYXRpb24gb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBSU0Ega2V5IGFuZCBjZXJ0aWZpY2F0ZSB1c2VkIGZvciBzaWduaW5nIEZJVCBpbWFnZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgUlNBIGtleSBhbmQKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUgdXNlZCBmb3Igc2lnbmluZyBGSVQgaW1hZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfU0lHTl9LRVlOQU1FJz48Z2xvc3N0ZXJtPlVCT09UX1NJR05fS0VZTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9TSUdOX0tFWU5BTUVbZG9jXSA9ICJUaGUgbmFtZSBvZiBrZXlzIHVzZWQgZm9yIHNpZ25pbmcgVS1ib290IEZJVCBpbWFnZSIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2Yga2V5cyB1c2VkIGZvciBzaWduaW5nIFUtYm9vdCBGSVQgaW1hZ2Ugc3RvcmVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVUJPT1RfU0lHTl9LRVlESVInPlVCT09UX1NJR05fS0VZRElSPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4gRm9yIGUuZy4gZGV2LmtleSBrZXkgYW5kIGRldi5jcnQgY2VydGlmaWNhdGUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVUJPT1RfU0lHTl9LRVlESVInPlVCT09UX1NJR05fS0VZRElSPC9saW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aWxsIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1VQk9PVF9TSUdOX0tFWU5BTUUnPlVCT09UX1NJR05fS0VZTkFNRTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzZXQgdG8gImRldiIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVUJPT1RfVEFSR0VUJz48Z2xvc3N0ZXJtPlVCT09UX1RBUkdFVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVQk9PVF9UQVJHRVRbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHRhcmdldCB1c2VkIGZvciBidWlsZGluZyBVLUJvb3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRhcmdldCB1c2VkIGZvciBidWlsZGluZyBVLUJvb3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgaXMgcGFzc2VkIGRpcmVjdGx5IGFzIHBhcnQgb2YgdGhlICJtYWtlIiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIChlLmcuIFNQTCBhbmQgQUlTKS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzcGVjaWZpY2FsbHkgc2V0IHRoaXMgdmFyaWFibGUsIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgcHJvY2VzcyBwYXNzZXMgYW5kIHVzZXMgImFsbCIgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZHVyaW5nIHRoZSBVLUJvb3QgYnVpbGRpbmcgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QnPjxnbG9zc3Rlcm0+VU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0LCBpZiByZXBvcnRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBhcyBiZWluZyBpbnZhbGlkLCBzaG91bGQgbm90IGdlbmVyYXRlIGEgd2FybmluZyBkdXJpbmcgdGhlIGRvX2NvbmZpZ3VyZSB0YXNrLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBvcHRpb25zIHRoYXQsIGlmIHJlcG9ydGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgc2NyaXB0IGFzIGJlaW5nIGludmFsaWQsIHNob3VsZCBub3QgZ2VuZXJhdGUgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbmZpZ3VyZSc+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICBOb3JtYWxseSwgaW52YWxpZCBjb25maWd1cmUgb3B0aW9ucyBhcmUgc2ltcGx5IG5vdCBwYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgKGUuZy4gc2hvdWxkIGJlIHJlbW92ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRVhUUkFfT0VDT05GJz48ZmlsZW5hbWU+RVhUUkFfT0VDT05GPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGNvbW1vbiBvcHRpb25zLCBmb3IgZXhhbXBsZSwgZXhpc3QgdGhhdCBhcmUgcGFzc2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGFsbCBjb25maWd1cmUgc2NyaXB0cyBhdCBhIGNsYXNzIGxldmVsIHRoYXQgbWlnaHQgbm90CisgICAgICAgICAgICAgICAgICAgIGJlIHZhbGlkIGZvciBzb21lIGNvbmZpZ3VyZSBzY3JpcHRzLgorICAgICAgICAgICAgICAgICAgICBJdCBmb2xsb3dzIHRoYXQgbm8gYmVuZWZpdCBleGlzdHMgaW4gc2VlaW5nIGEgd2FybmluZyBhYm91dAorICAgICAgICAgICAgICAgICAgICB0aGVzZSBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHRoZSBvcHRpb25zIGFyZSBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmUgYXJndW1lbnRzIGNoZWNrIHRoYXQgdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUPC9maWxlbmFtZT4gaXMgcGFydAorICAgICAgICAgICAgICAgICAgICBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCBpcyBvbmx5IGVuYWJsZWQgaWYgdGhlIHJlY2lwZSBpbmhlcml0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVQREFURVJDUE4nPjxnbG9zc3Rlcm0+VVBEQVRFUkNQTjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVUERBVEVSQ1BOW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIGluaXRzY3JpcHQgdGhhdCBpcyBlbmFibGVkLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHJlY2lwZXMgaW5oZXJpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXBkYXRlLXJjLmQnPjxmaWxlbmFtZT51cGRhdGUtcmMuZDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgPGZpbGVuYW1lPlVQREFURVJDUE48L2ZpbGVuYW1lPiBzcGVjaWZpZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgaW5pdHNjcmlwdCB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICIke1BOfSIuCisgICAgICAgICAgICAgICAgICAgIEdpdmVuIHRoYXQgYWxtb3N0IGFsbCByZWNpcGVzIHRoYXQgaW5zdGFsbCBpbml0c2NyaXB0cworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIHRoZW0gaW4gdGhlIG1haW4gcGFja2FnZSBmb3IgdGhlIHJlY2lwZSwgeW91CisgICAgICAgICAgICAgICAgICAgIHJhcmVseSBuZWVkIHRvIHNldCB0aGlzIHZhcmlhYmxlIGluIGluZGl2aWR1YWwgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCc+PGdsb3NzdGVybT5VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWFtkb2NdID0gIkZpbHRlcnMgcmVsZXZhbnQgR2l0IHRhZ3Mgd2hlbiBmZXRjaGluZyBzb3VyY2UgZnJvbSBhbiB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcGVyZm9ybSBhIHBlci1yZWNpcGUgY2hlY2sgZm9yIHdoYXQgdGhlIGxhdGVzdAorICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBzb3VyY2UgY29kZSB2ZXJzaW9uIGlzIGJ5IGNhbGxpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgY2hlY2twa2c8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSByZWNpcGUgc291cmNlIGNvZGUgaXMgcHJvdmlkZWQgZnJvbSBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkZXRlcm1pbmVzIHRoZQorICAgICAgICAgICAgICAgICAgICBsYXRlc3QgdXBzdHJlYW0gdmVyc2lvbiBieSBwaWNraW5nIHRoZSBsYXRlc3QgdGFnIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGxpc3Qgb2YgYWxsIHJlcG9zaXRvcnkgdGFncy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHByb3ZpZGUgYSByZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIG9ubHkgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50IHRhZ3Mgc2hvdWxkIHRoZSBkZWZhdWx0IGZpbHRlciBub3Qgd29yaworICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiZ2l0X3RhZ19yZWdleCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVQU1RSRUFNX0NIRUNLX1JFR0VYJz48Z2xvc3N0ZXJtPlVQU1RSRUFNX0NIRUNLX1JFR0VYPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVQU1RSRUFNX0NIRUNLX1JFR0VYW2RvY10gPSAiVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGUgcGFja2FnZSBjaGVja2luZyBzeXN0ZW0gdXNlcyB0byBwYXJzZSB0aGUgcGFnZSBwb2ludGVkIHRvIGJ5IFVQU1RSRUFNX0NIRUNLX1VSSS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPlVQU1RSRUFNX0NIRUNLX1JFR0VYPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCByZWd1bGFyIGV4cHJlc3Npb24gaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBvbmUgd2hlbiB0aGUgcGFja2FnZSBjaGVja2luZyBzeXN0ZW0gaXMgcGFyc2luZworICAgICAgICAgICAgICAgICAgICB0aGUgcGFnZSBmb3VuZCB1c2luZworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVBTVFJFQU1fQ0hFQ0tfVVJJJz48ZmlsZW5hbWU+VVBTVFJFQU1fQ0hFQ0tfVVJJPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBhY2thZ2VfcmVnZXgiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VUFNUUkVBTV9DSEVDS19VUkknPjxnbG9zc3Rlcm0+VVBTVFJFQU1fQ0hFQ0tfVVJJPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVQU1RSRUFNX0NIRUNLX1VSSVtkb2NdID0gIlRoZSBVUkwgdXNlZCBieSB0aGUgcGFja2FnZSBjaGVja2luZyBzeXN0ZW0gdG8gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB3aGVuIHNvdXJjZSBmaWxlcyBhcmUgZmV0Y2hlZCBmcm9tIGFuIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwZXJmb3JtIGEgcGVyLXJlY2lwZSBjaGVjayBmb3Igd2hhdCB0aGUgbGF0ZXN0CisgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIHNvdXJjZSBjb2RlIHZlcnNpb24gaXMgYnkgY2FsbGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBjaGVja3BrZzwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvdXJjZSBjb2RlIGlzIHByb3ZpZGVkIGZyb20gdGFyYmFsbHMsIHRoZSBsYXRlc3QKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGJ5IGZldGNoaW5nIHRoZSBkaXJlY3RvcnkgbGlzdGluZworICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgdGFyYmFsbCBpcyBhbmQgYXR0ZW1wdGluZyB0byBmaW5kIGEgbGF0ZXIgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGlzIGFwcHJvYWNoIGRvZXMgbm90IHdvcmssIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5VUFNUUkVBTV9DSEVDS19VUkk8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICBwcm92aWRlIGEgZGlmZmVyZW50IFVSSSB0aGF0IGNvbnRhaW5zIHRoZSBsaW5rIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBsYXRlc3QgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVUFNUUkVBTV9DSEVDS19VUkkgPSAicmVjaXBlX3VybCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVTRV9ERVZGUyc+PGdsb3NzdGVybT5VU0VfREVWRlM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgVVNFX0RFVkZTW2RvY10gPSAiRGV0ZXJtaW5lcyBpZiBkZXZ0bXBmcyBpcyB1c2VkIGZvciAvZGV2IHBvcHVsYXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIGlmIDxmaWxlbmFtZT5kZXZ0bXBmczwvZmlsZW5hbWU+IGlzIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT4gcG9wdWxhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgdXNlZCBmb3IgPGZpbGVuYW1lPlVTRV9ERVZGUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzICIxIiB3aGVuIG5vIHZhbHVlIGlzIHNwZWNpZmljYWxseSBzZXQuCisgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHdvdWxkIHNldCA8ZmlsZW5hbWU+VVNFX0RFVkZTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gIjAiIGZvciBhIHN0YXRpY2FsbHkgcG9wdWxhdGVkIDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZWxlY3RpbmctZGV2LW1hbmFnZXInPlNlbGVjdGluZyBhIERldmljZSBNYW5hZ2VyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFX1ZUJz48Z2xvc3N0ZXJtPlVTRV9WVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVU0VfVlRbZG9jXSA9ICJXaGVuIHVzaW5nIFN5c1Zpbml0LCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRvIHJ1biBhIGdldHR5IG9uIGFueSB2aXJ0dWFsIHRlcm1pbmFscyBpbiBvcmRlciB0byBlbmFibGUgbG9nZ2luZyBpbiB0aHJvdWdoIHRob3NlIHRlcm1pbmFscy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1lbmFibGluZy1zeXN0ZW0tc2VydmljZXMnPlN5c1Zpbml0PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdG8gcnVuIGEKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZXR0eV8lMjhVbml4JTI5Jz5nZXR0eTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9uIGFueSB2aXJ0dWFsIHRlcm1pbmFscyBpbiBvcmRlciB0byBlbmFibGUgbG9nZ2luZyBpbgorICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRob3NlIHRlcm1pbmFscy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgdXNlZCBmb3IgPGZpbGVuYW1lPlVTRV9WVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlzICIxIiB3aGVuIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWNhbGx5IHNldC4KKyAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugd291bGQgc2V0IDxmaWxlbmFtZT5VU0VfVlQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byAiMCIgaW4gdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBtYWNoaW5lcworICAgICAgICAgICAgICAgICAgICB0aGF0IGRvIG5vdCBoYXZlIGEgZ3JhcGhpY2FsIGRpc3BsYXkgYXR0YWNoZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZXJlZm9yZSBkbyBub3QgbmVlZCB2aXJ0dWFsIHRlcm1pbmFsIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFUl9DTEFTU0VTJz48Z2xvc3N0ZXJtPlVTRVJfQ0xBU1NFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVU0VSX0NMQVNTRVNbZG9jXSA9ICJMaXN0IG9mIGFkZGl0aW9uYWwgY2xhc3NlcyB0byB1c2Ugd2hlbiBidWlsZGluZyBpbWFnZXMgdGhhdCBlbmFibGUgZXh0cmEgZmVhdHVyZXMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0byBnbG9iYWxseSBpbmhlcml0LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjbGFzc2VzIGFyZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHRvIGVuYWJsZSBleHRyYSBmZWF0dXJlcyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGRzdGF0czwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW1hZ2UtbWtsaWJzPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGxpc3QgaXMgc2V0IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFVTRVJfQ0xBU1NFUyA/PSAiYnVpbGRzdGF0cyBpbWFnZS1ta2xpYnMgaW1hZ2UtcHJlbGluayIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGluCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VU0VSQUREX0VSUk9SX0RZTkFNSUMnPjxnbG9zc3Rlcm0+VVNFUkFERF9FUlJPUl9EWU5BTUlDPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVTRVJBRERfRVJST1JfRFlOQU1JQ1tkb2NdID0gIklmIHNldCB0byAnZXJyb3InLCBmb3JjZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBhbiBlcnJvciBpZiB0aGUgdXNlciBpZGVudGlmaWNhdGlvbiAodWlkKSBhbmQgZ3JvdXAgaWRlbnRpZmljYXRpb24gKGdpZCkgdmFsdWVzIGFyZSBub3QgZGVmaW5lZCBpbiBhbnkgb2YgdGhlIGZpbGVzIGxpc3RlZCBpbiBVU0VSQUREX1VJRF9UQUJMRVMgYW5kIFVTRVJBRERfR0lEX1RBQkxFUy4gSWYgc2V0IHRvICd3YXJuJywgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGluc3RlYWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorCisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byA8ZmlsZW5hbWU+ZXJyb3I8L2ZpbGVuYW1lPiwgZm9yY2VzIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmljYXRpb24gKDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPikgYW5kIGdyb3VwCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uICg8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4pIHZhbHVlcyBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgaW4gYW55IG9mIHRoZSBmaWxlcyBsaXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfVUlEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfVUlEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfR0lEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfR0lEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPi4gSWYKKyAgICAgICAgICAgICAgICAgICAgc2V0IHRvIDxmaWxlbmFtZT53YXJuPC9maWxlbmFtZT4sIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZAorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdGhlIGJ1aWxkIHN5c3RlbSBpcyB0byBkeW5hbWljYWxseQorICAgICAgICAgICAgICAgICAgICBhcHBseSA8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIDxmaWxlbmFtZT5VU0VSQUREX0VSUk9SX0RZTkFNSUM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBieSBkZWZhdWx0IG5vdCBzZXQuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBwbGFuIG9uIHVzaW5nIHN0YXRpY2FsbHkgYXNzaWduZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLCB5b3Ugc2hvdWxkIHNldAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZmlsZW5hbWU+IHZhcmlhYmxlIGluCisgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVVNFUkFERF9FUlJPUl9EWU5BTUlDID0gImVycm9yIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW1wbGllcyB5b3UgYXJlIGdvaW5nIHRvCisgICAgICAgICAgICAgICAgICAgIGFsc28gdGFrZSBzdGVwcyB0byBzZXQgc3RhdGljIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+IHZhbHVlcyB0aHJvdWdoIHVzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERFWFRFTlNJT04nPjxmaWxlbmFtZT5VU0VSQURERVhURU5TSU9OPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9VSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9VSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfR0lEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfR0lEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBiZWhhdmlvciBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgPGZpbGVuYW1lPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5lcnJvcjwvZmlsZW5hbWU+IGFuZCBzZXR0aW5nIGl0CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT53YXJuPC9maWxlbmFtZT4uIFdoZW4gaXQgaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT53YXJuPC9maWxlbmFtZT4sIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXBvcnQgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nIGZvciBldmVyeSB1bmRlZmluZWQgPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4gaW4gYW55IHJlY2lwZS4gQnV0IHdoZW4gaXQgaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5lcnJvcjwvZmlsZW5hbWU+LCBpdCB3aWxsIG9ubHkgcmVwb3J0IGVycm9ycworICAgICAgICAgICAgICAgICAgICBmb3IgcmVjaXBlcyB0aGF0IGFyZSBhY3R1YWxseSBidWlsdC4gVGhpcyBzYXZlcyB5b3UgZnJvbQorICAgICAgICAgICAgICAgICAgICBoYXZpbmcgdG8gYWRkIHN0YXRpYyBJRHMgZm9yIHJlY2lwZXMgdGhhdCB5b3Uga25vdyB3aWxsCisgICAgICAgICAgICAgICAgICAgIG5ldmVyIGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVTRVJBRERfR0lEX1RBQkxFUyc+PGdsb3NzdGVybT5VU0VSQUREX0dJRF9UQUJMRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgVVNFUkFERF9HSURfVEFCTEVTW2RvY10gPSAiU3BlY2lmaWVzIGEgcGFzc3dvcmQgZmlsZSB0byB1c2UgZm9yIG9idGFpbmluZyBzdGF0aWMgZ3JvdXAgaWRlbnRpZmljYXRpb24gKGdpZCkgdmFsdWVzIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYWRkcyBhIGdyb3VwIHRvIHRoZSBzeXN0ZW0gZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgcGFzc3dvcmQgZmlsZSB0byB1c2UgZm9yIG9idGFpbmluZyBzdGF0aWMKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXAgaWRlbnRpZmljYXRpb24gKDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPikgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYWRkcyBhIGdyb3VwIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGFwcGx5aW5nIHN0YXRpYyBncm91cCBpZGVudGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+KSB2YWx1ZXMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGxvb2tzIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgPGZpbGVuYW1lPmZpbGVzL2dyb3VwPC9maWxlbmFtZT4gZmlsZSBhbmQgdGhlbiBhcHBsaWVzCisgICAgICAgICAgICAgICAgICAgIHRob3NlIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgYXMgZm9sbG93cyBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VSQUREX0dJRF9UQUJMRVMgPSAiZmlsZXMvZ3JvdXAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERFWFRFTlNJT04nPjxmaWxlbmFtZT5VU0VSQURERVhURU5TSU9OPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICJ1c2VyYWRkLXN0YXRpY2lkcyIgY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgdG8gdXNlIHN0YXRpYyA8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4gdmFsdWVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVTRVJBRERfUEFDS0FHRVMnPjxnbG9zc3Rlcm0+VVNFUkFERF9QQUNLQUdFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBVU0VSQUREX1BBQ0tBR0VTW2RvY10gPSAiV2hlbiBhIHJlY2lwZSBpbmhlcml0cyB0aGUgdXNlcmFkZCBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIGluZGl2aWR1YWwgcGFja2FnZXMgd2l0aGluIHRoZSByZWNpcGUgdGhhdCByZXF1aXJlIHVzZXJzIGFuZC9vciBncm91cHMgdG8gYmUgYWRkZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgaW5kaXZpZHVhbCBwYWNrYWdlcyB3aXRoaW4gdGhlIHJlY2lwZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUgdXNlcnMgYW5kL29yIGdyb3VwcyB0byBiZSBhZGRlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoaXMgdmFyaWFibGUgaWYgdGhlIHJlY2lwZSBpbmhlcml0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGVuYWJsZXMgYWRkaW5nIGEgdXNlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIG1haW4gcGFja2FnZSBpbiBhIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgZm9sbG93cyB0aGF0IGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlVTRVJBRERfUEFDS0FHRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIHNldCBvbmUgb3IgbW9yZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSQUREX1BBUkFNJz48ZmlsZW5hbWU+VVNFUkFERF9QQVJBTTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HUk9VUEFERF9QQVJBTSc+PGZpbGVuYW1lPkdST1VQQUREX1BBUkFNPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HUk9VUE1FTVNfUEFSQU0nPjxmaWxlbmFtZT5HUk9VUE1FTVNfUEFSQU08L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFUkFERF9QQVJBTSc+PGdsb3NzdGVybT5VU0VSQUREX1BBUkFNPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVTRVJBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgcGFzcyB0byB0aGUgdXNlcmFkZCBjb21tYW5kIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgcGFzcworICAgICAgICAgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPnVzZXJhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBpcyBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmcm9tIHRoZSA8ZmlsZW5hbWU+ZGJ1czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1lc3NhZ2VidXMiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFuZGFyZCBMaW51eCBzaGVsbCBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT4sIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGludXguZGllLm5ldC9tYW4vOC91c2VyYWRkJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VU0VSQUREX1VJRF9UQUJMRVMnPjxnbG9zc3Rlcm0+VVNFUkFERF9VSURfVEFCTEVTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFVTRVJBRERfVUlEX1RBQkxFU1tkb2NdID0gIlNwZWNpZmllcyBhIHBhc3N3b3JkIGZpbGUgdG8gdXNlIGZvciBvYnRhaW5pbmcgc3RhdGljIHVzZXIgaWRlbnRpZmljYXRpb24gKHVpZCkgdmFsdWVzIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYWRkcyBhIHVzZXIgdG8gdGhlIHN5c3RlbSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24uIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBwYXNzd29yZCBmaWxlIHRvIHVzZSBmb3Igb2J0YWluaW5nIHN0YXRpYworICAgICAgICAgICAgICAgICAgICB1c2VyIGlkZW50aWZpY2F0aW9uICg8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4pIHZhbHVlcworICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFkZHMgYSB1c2VyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGFwcGx5aW5nIHN0YXRpYyB1c2VyIGlkZW50aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4pIHZhbHVlcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gbG9va3MgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgYSA8ZmlsZW5hbWU+ZmlsZXMvcGFzc3dkPC9maWxlbmFtZT4gZmlsZSBhbmQgdGhlbiBhcHBsaWVzCisgICAgICAgICAgICAgICAgICAgIHRob3NlIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgYXMgZm9sbG93cyBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VSQUREX1VJRF9UQUJMRVMgPSAiZmlsZXMvcGFzc3dkIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSQURERVhURU5TSU9OJz48ZmlsZW5hbWU+VVNFUkFEREVYVEVOU0lPTjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAidXNlcmFkZC1zdGF0aWNpZHMiIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHRvIHVzZSBzdGF0aWMgPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+IHZhbHVlcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VU0VSQURERVhURU5TSU9OJz48Z2xvc3N0ZXJtPlVTRVJBRERFWFRFTlNJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgVVNFUkFEREVYVEVOU0lPTltkb2NdID0gIldoZW4gc2V0IHRvICd1c2VyYWRkLXN0YXRpY2lkcycsIGNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBiYXNlIGFsbCB1c2VyIGFuZCBncm91cCBhZGRpdGlvbnMgb24gYSBzdGF0aWMgcGFzc3dkIGFuZCBncm91cCBmaWxlcyBmb3VuZCBpbiBCQlBBVEguIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNldCB0byAidXNlcmFkZC1zdGF0aWNpZHMiLCBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYmFzZSBhbGwgdXNlciBhbmQgZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25zIG9uIGEgc3RhdGljCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXNzd2Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdyb3VwPC9maWxlbmFtZT4gZmlsZXMgZm91bmQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHN0YXRpYyB1c2VyIGlkZW50aWZpY2F0aW9uICg8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIGFuZCBncm91cCBpZGVudGlmaWNhdGlvbiAoPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsIHNldCB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93cyBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBVU0VSQURERVhURU5TSU9OID0gInVzZXJhZGQtc3RhdGljaWRzIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIHVzZSBzdGF0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgY2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGVtcGxveQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy11c2VyYWRkJz48ZmlsZW5hbWU+dXNlcmFkZC1zdGF0aWNpZHM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2Ugc3RhdGljIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+IGluZm9ybWF0aW9uLCB5b3UgbXVzdCBhbHNvCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIDxmaWxlbmFtZT5maWxlcy9wYXNzd2Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzL2dyb3VwPC9maWxlbmFtZT4gZmlsZXMgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfVUlEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfVUlEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfR0lEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfR0lEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IHNob3VsZCBhbHNvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfRVJST1JfRFlOQU1JQyc+PGZpbGVuYW1lPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnktdic+PHRpdGxlPlY8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVk9MQVRJTEVfTE9HX0RJUic+PGdsb3NzdGVybT5WT0xBVElMRV9MT0dfRElSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFZPTEFUSUxFX0xPR19ESVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBlcnNpc3RlbmNlIG9mIHRoZSB0YXJnZXQncyAvdmFyL2xvZyBkaXJlY3RvcnksIHdoaWNoIGlzIHVzZWQgdG8gaG91c2UgcG9zdGluc3RhbGwgdGFyZ2V0IGxvZyBmaWxlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGVyc2lzdGVuY2Ugb2YgdGhlIHRhcmdldCdzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdmFyL2xvZzwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggaXMgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICBob3VzZSBwb3N0aW5zdGFsbCB0YXJnZXQgbG9nIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+Vk9MQVRJTEVfTE9HX0RJUjwvZmlsZW5hbWU+IGlzIHNldAorICAgICAgICAgICAgICAgICAgICB0byAieWVzIiwgd2hpY2ggbWVhbnMgdGhlIGZpbGUgaXMgbm90IHBlcnNpc3RlbnQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBzZXR0aW5nIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICJubyIgdG8gbWFrZSB0aGUgbG9nIGRpcmVjdG9yeSBwZXJzaXN0ZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgIDwvZ2xvc3NkaXY+CisKKyAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS13Jz48dGl0bGU+VzwvdGl0bGU+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1XQVJOX1FBJz48Z2xvc3N0ZXJtPldBUk5fUUE8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgV0FSTl9RQVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcXVhbGl0eSBhc3N1cmFuY2UgY2hlY2tzIHdob3NlIGZhaWx1cmVzIGFyZSByZXBvcnRlZCBhcyB3YXJuaW5ncyBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcXVhbGl0eSBhc3N1cmFuY2UgY2hlY2tzIHdob3NlIGZhaWx1cmVzIGFyZQorICAgICAgICAgICAgICAgICAgICByZXBvcnRlZCBhcyB3YXJuaW5ncyBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgY2hlY2tzIHlvdSBjYW4gY29udHJvbCB3aXRoIHRoaXMgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWluc2FuZSc+PGZpbGVuYW1lPmluc2FuZS5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVdLU19GSUxFX0RFUEVORFMnPjxnbG9zc3Rlcm0+V0tTX0ZJTEVfREVQRU5EUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBXS1NfRklMRV9ERVBFTkRTW2RvY10gPSAiTGlzdHMgYSByZWNpcGUncyBidWlsZC10aW1lIGRlcGVuZGVuY2llcyBzcGVjaWZpYyB0byBXaWMuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHBsYWNlZCBpbiB0aGUgcmVjaXBlIHRoYXQgYnVpbGRzIHlvdXIgaW1hZ2UsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgbGlzdHMgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+V0tTX0ZJTEVfREVQRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSB3aGVuIFdpYyBpbWFnZXMgYXJlIGFjdGl2ZSAoaS5lLiB3aGVuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBlbnRyaWVzIHJlbGF0ZWQgdG8gV2ljKS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciByZWNpcGUgZG9lcyBub3QgY3JlYXRlIFdpYyBpbWFnZXMsIHRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBoYXMgbm8gZWZmZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPldLU19GSUxFX0RFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICBzaW1pbGFyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgdmFyaWFibGUgaW4geW91ciByZWNpcGUgdGhhdCBidWlsZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIFdpYyBpbWFnZSwgZGVwZW5kZW5jaWVzIHlvdSBsaXN0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V0lDX0ZJTEVfREVQRU5EUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGFyZSBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGUgPGZpbGVuYW1lPldLU19GSUxFX0RFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIHNwZWNpZnkgYSBsaXN0IG9mIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIChlLmcuIG5hdGl2ZSB0b29scywgYm9vdGxvYWRlcnMsIGFuZCBzbyBmb3J0aCksCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGJ1aWxkIFdpYyBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFdLU19GSUxFX0RFUEVORFMgPSAiPHJlcGxhY2VhYmxlPnNvbWUtbmF0aXZlLXRvb2w8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvbWUtbmF0aXZlLXRvb2w8L3JlcGxhY2VhYmxlPiB3b3VsZCBiZQorICAgICAgICAgICAgICAgICAgICByZXBsYWNlZCB3aXRoIGFuIGFjdHVhbCBuYXRpdmUgdG9vbCBvbiB3aGljaCB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgd291bGQgZGVwZW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVdLU19GSUxFJz48Z2xvc3N0ZXJtPldLU19GSUxFPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFdLU19GSUxFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSB3aWMga2lja3N0YXJ0IGZpbGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBXaWMKKyAgICAgICAgICAgICAgICAgICAga2lja3N0YXJ0IGZpbGUgdGhhdCBpcyB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGNyZWF0ZSBhIHBhcnRpdGlvbmVkIGltYWdlCisgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4ud2ljPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIHBhcnRpdGlvbmVkIGltYWdlLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUga2lja3N0YXJ0IGZpbGUgZm9ybWF0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYta2lja3N0YXJ0Jz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBDaGFwdGVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVdPUktESVInPjxnbG9zc3Rlcm0+V09SS0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICBXT1JLRElSW2RvY10gPSAiVGhlIHBhdGhuYW1lIG9mIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgYSByZWNpcGUuIFRoaXMgZGlyZWN0b3J5IGlzIGxvY2F0ZWQgd2l0aGluIHRoZSBUTVBESVIgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbmQgY2hhbmdlcyBhcyBkaWZmZXJlbnQgcGFja2FnZXMgYXJlIGJ1aWx0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhdGhuYW1lIG9mIHRoZSB3b3JrIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBidWlsZHMgYSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIGxvY2F0ZWQgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYW5kIGlzIHNwZWNpZmljIHRvIHRoZSByZWNpcGUgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQgYW5kIHRoZSBzeXN0ZW0gZm9yIHdoaWNoIGl0IGlzIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgZGVmaW5lZCBhcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7VE1QRElSfS93b3JrLyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIGRpcmVjdG9yeSBkZXBlbmRzIG9uIHNldmVyYWwgdGhpbmdzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wLWxldmVsIGJ1aWxkIG91dHB1dCBkaXJlY3Rvcnk8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxsaW5rIGxpbmtlbmQ9J3Zhci1NVUxUSU1BQ0hfVEFSR0VUX1NZUyc+PGZpbGVuYW1lPk1VTFRJTUFDSF9UQVJHRVRfU1lTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgc3lzdGVtIGlkZW50aWZpZXI8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgbmFtZTwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PGxpbmsgbGlua2VuZD0ndmFyLUVYVEVORFBFJz48ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGVwb2NoIC0gKGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc3BlY2lmaWVkLCB3aGljaCBpcyB1c3VhbGx5IHRoZSBjYXNlIGZvciBtb3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcywgdGhlbiA8ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPiBpcyBibGFuayk8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgdmVyc2lvbjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSByZXZpc2lvbjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBhc3N1bWUgYSBTb3VyY2UgRGlyZWN0b3J5IHRvcC1sZXZlbCBmb2xkZXIKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LCBhIGRlZmF1bHQgQnVpbGQgRGlyZWN0b3J5IGF0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4sIGFuZCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LXBva3ktbGludXg8L2ZpbGVuYW1lPiBtYWNoaW5lIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCBzdXBwb3NlIHlvdXIgcmVjaXBlIGlzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMS4zLjAtcjAuYmI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgd29yayBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBwYWNrYWdlIHdvdWxkIGJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvZm9vLzEuMy4wLXIwCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCisgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnkteCc+PHRpdGxlPlg8L3RpdGxlPgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItWFNFUlZFUic+PGdsb3NzdGVybT5YU0VSVkVSPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgIFhTRVJWRVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB0byBwcm92aWRlIGFuIFggc2VydmVyIGFuZCBkcml2ZXJzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBhbiBYIHNlcnZlciBhbmQgZHJpdmVycyBmb3IgdGhlIGN1cnJlbnQgbWFjaGluZSwKKyAgICAgICAgICAgICAgICAgICAgYXNzdW1pbmcgeW91ciBpbWFnZSBkaXJlY3RseSBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUteDExLXhzZXJ2ZXI8L2ZpbGVuYW1lPiBvciwKKyAgICAgICAgICAgICAgICAgICAgcGVyaGFwcyBpbmRpcmVjdGx5LCBpbmNsdWRlcyAieDExLWJhc2UiIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiA8ZmlsZW5hbWU+WFNFUlZFUjwvZmlsZW5hbWU+LCBpZiBub3QKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24sIGlzCisgICAgICAgICAgICAgICAgICAgICJ4c2VydmVyLXhvcmcgeGY4Ni12aWRlby1mYmRldiB4Zjg2LWlucHV0LWV2ZGV2Ii4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICA8L2dsb3NzZGl2PgorCis8IS0tICAgICAgICAgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3NhcnkteSc+PHRpdGxlPlk8L3RpdGxlPi0tPgorPCEtLSAgICAgICAgICAgIDwvZ2xvc3NkaXY+LS0+CisKKzwhLS0gICAgICAgICAgICA8Z2xvc3NkaXYgaWQ9J3Zhci1nbG9zc2FyeS16Jz48dGl0bGU+WjwvdGl0bGU+LS0+Cis8IS0tICAgICAgICAgICAgPC9nbG9zc2Rpdj4tLT4KKworPC9nbG9zc2FyeT4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmxvY2FsaXR5LnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJsb2NhbGl0eS5yc3QKaW5kZXggNWY3ZGJhOC4uYTk1NTA0YiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmxvY2FsaXR5LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFybG9jYWxpdHkucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqCiBWYXJpYWJsZSBDb250ZXh0CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFybG9jYWxpdHkueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmxvY2FsaXR5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjQzNmZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmxvY2FsaXR5LnhtbApAQCAtMCwwICsxLDE5OSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdyZWYtdmFybG9jYWxpdHknPgorICAgIDx0aXRsZT5WYXJpYWJsZSBDb250ZXh0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGlsZSB5b3UgY2FuIHVzZSBtb3N0IHZhcmlhYmxlcyBpbiBhbG1vc3QgYW55IGNvbnRleHQgc3VjaCBhcworICAgICAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4sCisgICAgICAgIDxmaWxlbmFtZT4uaW5jPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMsCisgICAgICAgIHNvbWUgdmFyaWFibGVzIGFyZSBvZnRlbiBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIGxvY2FsaXR5IG9yIGNvbnRleHQuCisgICAgICAgIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgc29tZSBjb21tb24gYXNzb2NpYXRpb25zLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdmFybG9jYWxpdHktY29uZmlndXJhdGlvbic+CisgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgcHJvdmlkZSBsaXN0cyBvZiB2YXJpYWJsZXMgd2hvc2UgY29udGV4dCBpcworICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZGlzdHJpYnV0aW9uLCBtYWNoaW5lLCBhbmQgbG9jYWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncmVmLXZhcmxvY2FsaXR5LWNvbmZpZy1kaXN0cm8nPgorICAgICAgICAgICAgPHRpdGxlPkRpc3RyaWJ1dGlvbiAoRGlzdHJvKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxpc3RzIHZhcmlhYmxlcyB3aG9zZSBjb25maWd1cmF0aW9uIGNvbnRleHQgaXMgdGhlCisgICAgICAgICAgICAgICBkaXN0cmlidXRpb24sIG9yIGRpc3Ryby4KKyAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz5ESVNUUk88L2xpbms+PC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fTkFNRSc+RElTVFJPX05BTUU8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPX1ZFUlNJT04nPkRJU1RST19WRVJTSU9OPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BSU5UQUlORVInPk1BSU5UQUlORVI8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz5QQUNLQUdFX0NMQVNTRVM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX09TJz5UQVJHRVRfT1M8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0ZQVSc+VEFSR0VUX0ZQVTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1UQ01PREUnPlRDTU9ERTwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1UQ0xJQkMnPlRDTElCQzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZWYtdmFybG9jYWxpdHktY29uZmlnLW1hY2hpbmUnPgorICAgICAgICAgICAgPHRpdGxlPk1hY2hpbmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gbGlzdHMgdmFyaWFibGVzIHdob3NlIGNvbmZpZ3VyYXRpb24gY29udGV4dCBpcyB0aGUKKyAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9BUkNIJz5UQVJHRVRfQVJDSDwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNFUklBTF9DT05TT0xFUyc+U0VSSUFMX0NPTlNPTEVTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9FWFRSQV9BUkNIUyc+UEFDS0FHRV9FWFRSQV9BUkNIUzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPklNQUdFX0ZTVFlQRVM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0ZFQVRVUkVTJz5NQUNISU5FX0ZFQVRVUkVTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9FWFRSQV9SREVQRU5EUyc+TUFDSElORV9FWFRSQV9SREVQRU5EUworICAgICAgICAgICAgICAgICAgICAgICAgPC9saW5rPjwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMnPk1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluaz48L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyc+TUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluaz48L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+CisgICAgICAgICAgICAgICAgICAgICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvbGluaz48L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3JlZi12YXJsb2NhbGl0eS1jb25maWctbG9jYWwnPgorICAgICAgICAgICAgPHRpdGxlPkxvY2FsPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxpc3RzIHZhcmlhYmxlcyB3aG9zZSBjb25maWd1cmF0aW9uIGNvbnRleHQgaXMgdGhlCisgICAgICAgICAgICAgICAgbG9jYWwgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPkRJU1RSTzwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPkRMX0RJUjwvbGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUJCRklMRVMnPkJCRklMRVM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+RVhUUkFfSU1BR0VfRkVBVFVSRVMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluaz48L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPlBBQ0tBR0VfQ0xBU1NFUzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUJCX05VTUJFUl9USFJFQURTJz5CQl9OVU1CRVJfVEhSRUFEUzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUJCSU5DTFVERUxPR1MnPkJCSU5DTFVERUxPR1M8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1FTkFCTEVfQklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT048L2xpbms+PC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZWYtdmFybG9jYWxpdHktcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgcHJvdmlkZSBsaXN0cyBvZiB2YXJpYWJsZXMgd2hvc2UgY29udGV4dCBpcworICAgICAgICAgICAgcmVjaXBlczogcmVxdWlyZWQsIGRlcGVuZGVuY2llcywgcGF0aCwgYW5kIGV4dHJhIGJ1aWxkIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3JlZi12YXJsb2NhbGl0eS1yZWNpcGUtcmVxdWlyZWQnPgorICAgICAgICAgICAgPHRpdGxlPlJlcXVpcmVkPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxpc3RzIHZhcmlhYmxlcyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFJz5MSUNFTlNFPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTElDX0ZJTEVTX0NIS1NVTSc+TElDX0ZJTEVTX0NIS1NVTTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPlNSQ19VUkk8L2xpbms+PC9maWxlbmFtZT4gLSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICBpbiByZWNpcGVzIHRoYXQgZmV0Y2ggbG9jYWwgb3IgcmVtb3RlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncmVmLXZhcmxvY2FsaXR5LXJlY2lwZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICAgICAgPHRpdGxlPkRlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBsaXN0cyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgcmVjaXBlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz5ERVBFTkRTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPlJERVBFTkRTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPlJSRUNPTU1FTkRTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUkNPTkZMSUNUUyc+UkNPTkZMSUNUUzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVJSRVBMQUNFUyc+UlJFUExBQ0VTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZWYtdmFybG9jYWxpdHktcmVjaXBlLXBhdGhzJz4KKyAgICAgICAgICAgIDx0aXRsZT5QYXRoczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBsaXN0cyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgcmVjaXBlIHBhdGhzLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPldPUktESVI8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1TJz5TPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRklMRVMnPkZJTEVTPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZWYtdmFybG9jYWxpdHktcmVjaXBlLWJ1aWxkJz4KKyAgICAgICAgICAgIDx0aXRsZT5FeHRyYSBCdWlsZCBJbmZvcm1hdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBsaXN0cyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgZXh0cmEgYnVpbGQgaW5mb3JtYXRpb24gZm9yIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVGQVVMVF9QUkVGRVJFTkNFJz5ERUZBVUxUX1BSRUZFUkVOQ0UKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluaz48L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRUNNQUtFJz5FWFRSQV9PRUNNQUtFPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRVhUUkFfT0VDT05GJz5FWFRSQV9PRUNPTkY8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRU1BS0UnPkVYVFJBX09FTUFLRTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUdfQ09ORkFSR1MnPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+UEFDS0FHRVM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NCBzcGVsbCBzcGVsbGxhbmc9ZW5fZ2IKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3Jlc291cmNlcy5yc3QKaW5kZXggZjkwMTgyYi4uMmI4MmI3OSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZXNvdXJjZXMucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBDb250cmlidXRpb25zIGFuZCBBZGRpdGlvbmFsIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZXNvdXJjZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODk5YjJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbApAQCAtMCwwICsxLDI5OCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSdyZXNvdXJjZXMnPgorPHRpdGxlPkNvbnRyaWJ1dGlvbnMgYW5kIEFkZGl0aW9uYWwgSW5mb3JtYXRpb248L3RpdGxlPgorCis8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWludHJvJz4KKyAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBpcyBoYXBweSBmb3IgcGVvcGxlIHRvIGV4cGVyaW1lbnQgd2l0aCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQSBudW1iZXIgb2YgcGxhY2VzIGV4aXN0IHRvIGZpbmQgaGVscCBpZiB5b3UgcnVuIGludG8gZGlmZmljdWx0aWVzCisgICAgICAgIG9yIGZpbmQgYnVncy4KKyAgICAgICAgVGhpcyBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgYW5kIHBhcnRpY2lwYXRpbmcgaW4KKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWNvbnRyaWJ1dGlvbnMnPgorICAgIDx0aXRsZT5Db250cmlidXRpb25zPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBnbGFkbHkgYWNjZXB0cyBjb250cmlidXRpb25zLgorICAgICAgICBZb3UgY2FuIHN1Ym1pdCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IGVpdGhlciBieSBjcmVhdGluZyBhbmQgc2VuZGluZworICAgICAgICBwdWxsIHJlcXVlc3RzLAorICAgICAgICBvciBieSBzdWJtaXR0aW5nIHBhdGNoZXMgdGhyb3VnaCBlbWFpbC4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyBib3RoIGFzIHdlbGwgYXMgaW5mb3JtYXRpb24gb24gaG93CisgICAgICAgIHRvIGlkZW50aWZ5IHRoZSBtYWludGFpbmVyIGZvciBlYWNoIGFyZWEgb2YgY29kZSwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZXNvdXJjZXMtYnVndHJhY2tlcic+CisgICAgPHRpdGxlPllvY3RvIFByb2plY3QgQnVnemlsbGE8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQlVHWklMTEFfVVJMOyc+QnVnemlsbGE8L3VsaW5rPiB0bworICAgICAgICB0cmFjayBkZWZlY3RzIChidWdzKS4KKyAgICAgICAgSW1wbGVtZW50YXRpb25zIG9mIEJ1Z3ppbGxhIHdvcmsgd2VsbCBmb3IgZ3JvdXAgZGV2ZWxvcG1lbnQgYmVjYXVzZQorICAgICAgICB0aGV5IHRyYWNrIGJ1Z3MgYW5kIGNvZGUgY2hhbmdlcywgY2FuIGJlIHVzZWQgdG8gY29tbXVuaWNhdGUgY2hhbmdlcworICAgICAgICBhbmQgcHJvYmxlbXMgd2l0aCBkZXZlbG9wZXJzLCBjYW4gYmUgdXNlZCB0byBzdWJtaXQgYW5kIHJldmlldyBwYXRjaGVzLAorICAgICAgICBhbmQgY2FuIGJlIHVzZWQgdG8gbWFuYWdlIHF1YWxpdHkgYXNzdXJhbmNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBTb21ldGltZXMgaXQgaXMgaGVscGZ1bCB0byBzdWJtaXQsIGludmVzdGlnYXRlLCBvciB0cmFjayBhIGJ1ZyBhZ2FpbnN0CisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGl0c2VsZiAoZS5nLiB3aGVuIGRpc2NvdmVyaW5nIGFuIGlzc3VlIHdpdGggc29tZQorICAgICAgICBjb21wb25lbnQgb2YgdGhlIGJ1aWxkIHN5c3RlbSB0aGF0IGFjdHMgY29udHJhcnkgdG8gdGhlIGRvY3VtZW50YXRpb24KKyAgICAgICAgb3IgeW91ciBleHBlY3RhdGlvbnMpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIGdlbmVyYWwgcHJvY2VkdXJlIGFuZCBndWlkZWxpbmVzIGV4aXN0IGZvciB3aGVuIHlvdSB1c2UgQnVnemlsbGEgdG8KKyAgICAgICAgc3VibWl0IGEgYnVnLgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBCdWd6aWxsYSB0byBzdWJtaXQgYSBidWcgYWdhaW5zdCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCwgc2VlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3N1Ym1pdHRpbmctYS1kZWZlY3QtYWdhaW5zdC10aGUteW9jdG8tcHJvamVjdCc+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz5CdWd6aWxsYSB3aWtpIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJ1Z3ppbGxhIGluIGdlbmVyYWwsIHNlZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9hYm91dC8nPjwvdWxpbms+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+CisgICAgPHRpdGxlPk1haWxpbmcgbGlzdHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgbnVtYmVyIG9mIG1haWxpbmcgbGlzdHMgbWFpbnRhaW5lZCBieSB0aGUgWW9jdG8gUHJvamVjdCBleGlzdAorICAgICAgICBhcyB3ZWxsIGFzIHJlbGF0ZWQgT3BlbkVtYmVkZGVkIG1haWxpbmcgbGlzdHMgZm9yIGRpc2N1c3Npb24sCisgICAgICAgIHBhdGNoIHN1Ym1pc3Npb24gYW5kIGFubm91bmNlbWVudHMuCisgICAgICAgIFRvIHN1YnNjcmliZSB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyBtYWlsaW5nIGxpc3RzLCBjbGljayBvbiB0aGUKKyAgICAgICAgYXBwcm9wcmlhdGUgVVJMIGluIHRoZSBmb2xsb3dpbmcgbGlzdCBhbmQgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0xJU1RTX1VSTDsvbGlzdGluZm8veW9jdG8nPjwvdWxpbms+IC0KKyAgICAgICAgICAgICAgICBHZW5lcmFsIFlvY3RvIFByb2plY3QgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QuIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZPRV9MSVNUU19VUkw7L2xpc3RpbmZvL29wZW5lbWJlZGRlZC1jb3JlJz48L3VsaW5rPiAtCisgICAgICAgICAgICAgICAgRGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QgYWJvdXQgT3BlbkVtYmVkZGVkLUNvcmUgKHRoZSBjb3JlIG1ldGFkYXRhKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmT0VfTElTVFNfVVJMOy9saXN0aW5mby9vcGVuZW1iZWRkZWQtZGV2ZWwnPjwvdWxpbms+IC0KKyAgICAgICAgICAgICAgICBEaXNjdXNzaW9uIG1haWxpbmcgbGlzdCBhYm91dCBPcGVuRW1iZWRkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJk9FX0xJU1RTX1VSTDsvbGlzdGluZm8vYml0YmFrZS1kZXZlbCc+PC91bGluaz4gLQorICAgICAgICAgICAgICAgIERpc2N1c3Npb24gbWFpbGluZyBsaXN0IGFib3V0IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KKyAgICAgICAgICAgICAgICBidWlsZCB0b29sLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3Bva3knPjwvdWxpbms+IC0KKyAgICAgICAgICAgICAgICBEaXNjdXNzaW9uIG1haWxpbmcgbGlzdCBhYm91dAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Bva3knPlBva3k8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3lvY3RvLWFubm91bmNlJz48L3VsaW5rPiAtCisgICAgICAgICAgICAgICAgTWFpbGluZyBsaXN0IHRvIHJlY2VpdmUgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCByZWxlYXNlIGFuZCBtaWxlc3RvbmUKKyAgICAgICAgICAgICAgICBhbm5vdW5jZW1lbnRzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisgICAgRm9yIG1vcmUgWW9jdG8gUHJvamVjdC1yZWxhdGVkIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKKyAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPi4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1pcmMnPgorICAgIDx0aXRsZT5JbnRlcm5ldCBSZWxheSBDaGF0IChJUkMpPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUd28gSVJDIGNoYW5uZWxzIG9uIGZyZWVub2RlIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBQb2t5IGRpc2N1c3Npb25zOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT4jcG9reTwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz4KKyAgICA8dGl0bGU+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSGVyZSBpcyBhIGxpc3Qgb2YgcmVzb3VyY2VzIHlvdSBtaWdodCBmaW5kIGhlbHBmdWw6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPlRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPiBUaGUgaG9tZSBzaXRlIGZvciB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL01haW5fUGFnZSc+VGhlIFlvY3RvIFByb2plY3QgTWFpbiBXaWtpIFBhZ2U8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBtYWluIHdpa2kgcGFnZSBmb3IgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgVGhpcyBwYWdlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHByb2plY3QgcGxhbm5pbmcsCisgICAgICAgICAgICAgICAgcmVsZWFzZSBlbmdpbmVlcmluZywgUUEgJmFtcDsgYXV0b21hdGlvbiwgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICBzaXRlIG1hcCwgYW5kIG90aGVyIHJlc291cmNlcyByZWxhdGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmT0VfSE9NRV9VUkw7Jz5PcGVuRW1iZWRkZWQ8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdXNlZCBieSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBUaGlzIHByb2plY3QgaXMgdGhlIHVwc3RyZWFtLCBnZW5lcmljLCBlbWJlZGRlZCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHRoZSBZb2N0byBQcm9qZWN0IGRlcml2ZXMgaXRzIGJ1aWxkIHN5c3RlbSAoUG9reSkKKyAgICAgICAgICAgICAgICBhbmQgdG8gd2hpY2ggaXQgY29udHJpYnV0ZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy93aWtpL0JpdEJha2UnPgorICAgICAgICAgICAgICAgIEJpdEJha2U8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPiBUaGUgdG9vbCB1c2VkIHRvIHByb2Nlc3MgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY29tcHJlaGVuc2l2ZSBndWlkZSB0byB0aGUgQml0QmFrZSB0b29sLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlJJRUZfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBzaG9ydCBkb2N1bWVudCBsZXRzIHlvdSBleHBlcmllbmNlIGJ1aWxkaW5nIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Qgd2l0aG91dCBoYXZpbmcgdG8gdW5kZXJzdGFuZCBhbnkgY29uY2VwdHMgb3IKKyAgICAgICAgICAgICAgICBkZXRhaWxzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7Jz5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIG92ZXJ2aWV3IGFuZCBjb25jZXB0dWFsIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgYWJvdXQgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgYSAiaG93LXRvIiBndWlkZSB0aGF0IHByZXNlbnRzIHByb2NlZHVyZXMKKyAgICAgICAgICAgICAgICB1c2VmdWwgdG8gYm90aCBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtIGRldmVsb3BlcnMgd2hvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgbWFudWFsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBndWlkZSBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGxldHMgeW91IGdldCBnb2luZworICAgICAgICAgICAgICAgIHdpdGggdGhlIHN0YW5kYXJkIG9yIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIEFuIFNESywgd2l0aCBpdHMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgYWxsb3dzIHlvdQorICAgICAgICAgICAgICAgIHRvIGRldmVsb3AgcHJvamVjdHMgaW5zaWRlIG9yIG91dHNpZGUgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGd1aWRlIGRlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgQlNQIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgSGF2aW5nIGEgY29tbW9ubHkgdW5kZXJzdG9vZCBzdHJ1Y3R1cmUgZW5jb3VyYWdlcworICAgICAgICAgICAgICAgIHN0YW5kYXJkaXphdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gd29yayB3aXRoIExpbnV4IFlvY3RvIGtlcm5lbHMgYXMKKyAgICAgICAgICAgICAgICB3ZWxsIGFzIHByb3ZpZGVzIGEgYml0IG9mIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgY29uc3RydWN0aW9uIG9mIHRoZSBZb2N0byBMaW51eCBrZXJuZWwgdHJlZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIG1hdGVyaWFsIHN1Y2ggYXMgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgdGFzaywgYW5kIGNsYXNzIGRlc2NyaXB0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfTU1fVVJMOyc+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgc2ltcGx5IGEgc2luZ2xlIEhUTUwgZmlsZSBjb21wcmlzZWQgb2YgdGhlCisgICAgICAgICAgICAgICAgYnVsayBvZiB0aGUgWW9jdG8gUHJvamVjdCBtYW51YWxzLgorICAgICAgICAgICAgICAgIFRoZSBNZWdhLU1hbnVhbCBwcmltYXJpbHkgZXhpc3RzIGFzIGEgdmVoaWNsZSBieSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICAgICAgZWFzaWx5IHNlYXJjaCBmb3IgcGhyYXNlcyBhbmQgdGVybXMgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsnPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJlc2VudHMgYSBzZXQgb2YgY29tbW9uIGFuZCBnZW5lcmFsbHkgdXNlZnVsCisgICAgICAgICAgICAgICAgdHJhY2luZyBhbmQgcHJvZmlsaW5nIHNjaGVtZXMgYWxvbmcgd2l0aCB0aGVpciBhcHBsaWNhdGlvbnMKKyAgICAgICAgICAgICAgICAoYXMgYXBwcm9wcmlhdGUpIHRvIGVhY2ggdG9vbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyBhbmQgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZQorICAgICAgICAgICAgICAgIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhbiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkgYW5kCisgICAgICAgICAgICAgICAgd2ViLWJhc2VkIGludGVyZmFjZSB0byB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggdXNlcyBCaXRCYWtlLCB0aGF0IHJlcG9ydHMgYnVpbGQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9GQVEnPkZBUTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNvbW1vbmx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgdGhlaXIgYW5zd2Vycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVsZWFzZSBOb3Rlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZlYXR1cmVzLCB1cGRhdGVzIGFuZCBrbm93biBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBUbyBhY2Nlc3MgdGhlIFJlbGVhc2UgTm90ZXMsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvc29mdHdhcmUtb3ZlcnZpZXcvZG93bmxvYWRzLyc+RG93bmxvYWRzPC91bGluaz4KKyAgICAgICAgICAgICAgICBwYWdlIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUgYW5kIGNsaWNrIG9uIHRoZQorICAgICAgICAgICAgICAgICJSRUxFQVNFIElORk9STUFUSU9OIiBsaW5rIGZvciB0aGUgYXBwcm9wcmlhdGUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVnIHRyYWNraW5nIGFwcGxpY2F0aW9uIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMuCisgICAgICAgICAgICAgICAgSWYgeW91IGZpbmQgcHJvYmxlbXMgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgeW91IHNob3VsZCByZXBvcnQKKyAgICAgICAgICAgICAgICB0aGVtIHVzaW5nIHRoaXMgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPkJ1Z3ppbGxhIENvbmZpZ3VyYXRpb24gYW5kIEJ1ZyBUcmFja2luZyBXaWtpIFBhZ2U8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgc2V0IHVwIGFuZCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBCdWd6aWxsYSBmb3IgbG9nZ2luZyBhbmQgdHJhY2tpbmcgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IGRlZmVjdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkludGVybmV0IFJlbGF5IENoYXQgKElSQyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUd28gSVJDIGNoYW5uZWxzIG9uIGZyZWVub2RlIGFyZSBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICBmb3IgWW9jdG8gUHJvamVjdCBhbmQgUG9reSBkaXNjdXNzaW9uczogPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4jcG9reTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL0luZGV4Lmh0bWwnPlF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQW4gb3Blbi1zb3VyY2UgbWFjaGluZSBlbXVsYXRvciBhbmQgdmlydHVhbGl6ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlbGVhc2VzLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWxlYXNlcy5yc3QKaW5kZXggNTM2YzNhNi4uNDljMzNiMyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlbGVhc2VzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVsZWFzZXMucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiA9PT09PT09PT09PT09PT09PT09PT09PT09CiAgQ3VycmVudCBSZWxlYXNlIE1hbnVhbHMKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2hpc3RvcnkucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvaGlzdG9yeS5yc3QKaW5kZXggOGMxMGY2ZC4uYWYwMjdjOSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvaGlzdG9yeS5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvaGlzdG9yeS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqCiBNYW51YWwgUmV2aXNpb24gSGlzdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLXN0YW5kYXJkLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy1zdGFuZGFyZC5yc3QKaW5kZXggOTBiNjM0NS4uZjZmMmI2NiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLXN0YW5kYXJkLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBDdXN0b21pemluZyB0aGUgU3RhbmRhcmQgU0RLCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLXN0YW5kYXJkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTZiNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLXN0YW5kYXJkLnhtbApAQCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGFwcGVuZGl4IGlkPSdzZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQnPgorCis8dGl0bGU+Q3VzdG9taXppbmcgdGhlIFN0YW5kYXJkIFNESzwvdGl0bGU+CisKKzxwYXJhPgorICAgIFRoaXMgYXBwZW5kaXggcHJlc2VudHMgY3VzdG9taXphdGlvbnMgeW91IGNhbiBhcHBseSB0byB0aGUgc3RhbmRhcmQgU0RLLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nc2RrLWFkZGluZy1pbmRpdmlkdWFsLXBhY2thZ2VzJz4KKyAgICA8dGl0bGU+QWRkaW5nIEluZGl2aWR1YWwgUGFja2FnZXMgdG8gdGhlIFN0YW5kYXJkIFNESzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgIFdoZW4geW91IGJ1aWxkIGEgc3RhbmRhcmQgU0RLIHVzaW5nIHRoZQorICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4sIGEgZGVmYXVsdCBzZXQgb2YKKyAgICAgICAgIHBhY2thZ2VzIGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgU0RLLgorICAgICAgICAgVGhlCisgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE9PTENIQUlOX0hPU1RfVEFTSyc+PGZpbGVuYW1lPlRPT0xDSEFJTl9IT1NUX1RBU0s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICBhbmQKKyAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICB2YXJpYWJsZXMgY29udHJvbCB0aGUgc2V0IG9mIHBhY2thZ2VzIGFkZGluZyB0byB0aGUgU0RLLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiB5b3Ugd2FudCB0byBhZGQgaW5kaXZpZHVhbCBwYWNrYWdlcyB0byB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbgorICAgICAgICB0aGUgaG9zdCwgc2ltcGx5IGFkZCB0aG9zZSBwYWNrYWdlcyB0byB0aGUKKyAgICAgICAgPGZpbGVuYW1lPlRPT0xDSEFJTl9IT1NUX1RBU0s8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgU2ltaWxhcmx5LCBpZiB5b3Ugd2FudCB0byBhZGQgcGFja2FnZXMgdG8gdGhlIGRlZmF1bHQgc2V0IHRoYXQgaXMKKyAgICAgICAgcGFydCBvZiB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgdGFyZ2V0LCBhZGQgdGhlIHBhY2thZ2VzIHRvIHRoZQorICAgICAgICA8ZmlsZW5hbWU+VE9PTENIQUlOX1RBUkdFVF9UQVNLPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nYWRkaW5nLWFwaS1kb2N1bWVudGF0aW9uLXRvLXRoZS1zdGFuZGFyZC1zZGsnPgorICAgIDx0aXRsZT5BZGRpbmcgQVBJIERvY3VtZW50YXRpb24gdG8gdGhlIFN0YW5kYXJkIFNESzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBpbmNsdWRlIEFQSSBkb2N1bWVudGF0aW9uIGFzIHdlbGwgYXMgYW55IG90aGVyCisgICAgICAgIGRvY3VtZW50YXRpb24gcHJvdmlkZWQgYnkgcmVjaXBlcyB3aXRoIHRoZSBzdGFuZGFyZCBTREsgYnkKKyAgICAgICAgYWRkaW5nICJhcGktZG9jdW1lbnRhdGlvbiIgdG8gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIGFwaS1kb2N1bWVudGF0aW9uIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFNldHRpbmcgdGhpcyB2YXJpYWJsZSBhcyBzaG93biBoZXJlIGNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgIHN5c3RlbSB0byBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlbiBpbmNsdWRlIGl0IGluIHRoZSBzdGFuZGFyZAorICAgICAgICBTREsuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8L2FwcGVuZGl4PgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnJzdAppbmRleCA1YTMzZjYzLi43NzQzZTNjIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogQ3VzdG9taXppbmcgdGhlIEV4dGVuc2libGUgU0RLCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODA1NGY4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbApAQCAtMCwwICsxLDUxNSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxhcHBlbmRpeCBpZD0nc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nJz4KKworPHRpdGxlPkN1c3RvbWl6aW5nIHRoZSBFeHRlbnNpYmxlIFNESzwvdGl0bGU+CisKKzxwYXJhPgorICAgIFRoaXMgYXBwZW5kaXggZGVzY3JpYmVzIGN1c3RvbWl6YXRpb25zIHlvdSBjYW4gYXBwbHkgdG8gdGhlIGV4dGVuc2libGUgU0RLLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nc2RrLWNvbmZpZ3VyaW5nLXRoZS1leHRlbnNpYmxlLXNkayc+CisgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBFeHRlbnNpYmxlIFNESzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGV4dGVuc2libGUgU0RLIHByaW1hcmlseSBjb25zaXN0cyBvZiBhIHByZS1jb25maWd1cmVkIGNvcHkgb2YKKyAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZnJvbSB3aGljaCBpdCB3YXMgcHJvZHVjZWQuCisgICAgICAgIFRodXMsIHRoZSBTREsncyBjb25maWd1cmF0aW9uIGlzIGRlcml2ZWQgdXNpbmcgdGhhdCBidWlsZCBzeXN0ZW0gYW5kCisgICAgICAgIHRoZSBmaWx0ZXJzIHNob3duIGluIHRoZSBmb2xsb3dpbmcgbGlzdC4KKyAgICAgICAgV2hlbiB0aGVzZSBmaWx0ZXJzIGFyZSBwcmVzZW50LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcHBsaWVzCisgICAgICAgIHRoZW0gYWdhaW5zdCA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT46CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVmFyaWFibGVzIHdob3NlIHZhbHVlcyBzdGFydCB3aXRoICIvIiBhcmUgZXhjbHVkZWQgc2luY2UgdGhlCisgICAgICAgICAgICAgICAgYXNzdW1wdGlvbiBpcyB0aGF0IHRob3NlIHZhbHVlcyBhcmUgcGF0aHMgdGhhdCBhcmUgbGlrZWx5IHRvCisgICAgICAgICAgICAgICAgYmUgc3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBWYXJpYWJsZXMgbGlzdGVkIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19MT0NBTF9DT05GX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19MT0NBTF9DT05GX0JMQUNLTElTVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcmUgZXhjbHVkZWQuCisgICAgICAgICAgICAgICAgVGhlc2UgdmFyaWFibGVzIGFyZSBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHRoZXNlIHZhcmlhYmxlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgb24KKyAgICAgICAgICAgICAgICB3aGljaCB0aGUgYnVpbGQgc3lzdGVtIGlzIHJ1bm5pbmcgYW5kIGNvdWxkIGJlIHByb2JsZW1hdGljCisgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgYSBsaXN0IG9mIHRoZSB2YXJpYWJsZXMgZXhjbHVkZWQgYnkgZGVmYXVsdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgaW4gdGhlIGdsb3NzYXJ5IG9mIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVmFyaWFibGVzIGxpc3RlZCBpbgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYXJlIGluY2x1ZGVkLgorICAgICAgICAgICAgICAgIEluY2x1ZGluZyBhIHZhcmlhYmxlIGluIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9XSElURUxJU1Q8L2ZpbGVuYW1lPiBvdmVycmlkZXMgZWl0aGVyCisgICAgICAgICAgICAgICAgb2YgdGhlIHByZXZpb3VzIHR3byBmaWx0ZXJzLgorICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGJsYW5rLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIENsYXNzZXMgaW5oZXJpdGVkIGdsb2JhbGx5IHdpdGgKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5IRVJJVCc+PGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGhhdCBhcmUgbGlzdGVkIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19JTkhFUklUX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19JTkhFUklUX0JMQUNLTElTVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcmUgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPlNES19JTkhFUklUX0JMQUNLTElTVDwvZmlsZW5hbWU+IHRvIGRpc2FibGUKKyAgICAgICAgICAgICAgICB0aGVzZSBjbGFzc2VzIGlzIHRoZSB0eXBpY2FsIG1ldGhvZCB0byBkaXNhYmxlIGNsYXNzZXMgdGhhdAorICAgICAgICAgICAgICAgIGFyZSBwcm9ibGVtYXRpYyBvciB1bm5lY2Vzc2FyeSBpbiB0aGUgU0RLIGNvbnRleHQuCisgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgYmxhY2tsaXN0cyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPjxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaWNlY2MnPjxmaWxlbmFtZT5pY2VjYzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzc2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgY29udGVudHMgb2YgPGZpbGVuYW1lPmNvbmYvc2RrLWV4dHJhLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgd2hlbiBwcmVzZW50LCBhcmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZgorICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gd2l0aGluIHRoZSBwcm9kdWNlZCBTREssIHdpdGhvdXQKKyAgICAgICAgYW55IGZpbHRlcmluZy4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5zZGstZXh0cmEuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgcGFydGljdWxhcmx5IHVzZWZ1bAorICAgICAgICBpZiB5b3Ugd2FudCB0byBzZXQgYSB2YXJpYWJsZSB2YWx1ZSBqdXN0IGZvciB0aGUgU0RLIGFuZCBub3QgdGhlCisgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlZCB0byBjcmVhdGUgdGhlIFNESy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdhZGp1c3RpbmctdGhlLWV4dGVuc2libGUtc2RrLXRvLXN1aXQteW91ci1idWlsZC1ob3N0cy1zZXR1cCc+CisgICAgPHRpdGxlPkFkanVzdGluZyB0aGUgRXh0ZW5zaWJsZSBTREsgdG8gU3VpdCBZb3VyIEJ1aWxkIEhvc3QncyBTZXR1cDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIGV4dGVuc2libGUgU0RLIGRlZmF1bHRzIHNob3VsZCB3b3JrIHdpdGggeW91cgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdCdzPC91bGluaz4KKyAgICAgICAgc2V0dXAuCisgICAgICAgIEhvd2V2ZXIsIHNvbWUgY2FzZXMgZXhpc3QgZm9yIHdoaWNoIHlvdSBtaWdodCBjb25zaWRlciBtYWtpbmcKKyAgICAgICAgYWRqdXN0bWVudHM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91ciBTREsgY29uZmlndXJhdGlvbiBpbmhlcml0cyBhZGRpdGlvbmFsIGNsYXNzZXMKKyAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5IRVJJVCc+PGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHlvdSBkbyBub3QgbmVlZCBvciB3YW50IHRob3NlIGNsYXNzZXMgZW5hYmxlZCBpbgorICAgICAgICAgICAgICAgIHRoZSBTREssIHlvdSBjYW4gYmxhY2tsaXN0IHRoZW0gYnkgYWRkaW5nIHRoZW0gdG8gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19JTkhFUklUX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19JTkhFUklUX0JMQUNLTElTVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBkZXNjcmliZWQgaW4gdGhlIGZvdXJ0aCBidWxsZXQgb2YgdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19JTkhFUklUX0JMQUNLTElTVDwvZmlsZW5hbWU+IGlzIHNldCB1c2luZworICAgICAgICAgICAgICAgICAgICB0aGUgIj89IiBvcGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3Ugd2lsbCBuZWVkIHRvIGVpdGhlciBkZWZpbmUgdGhlIGVudGlyZQorICAgICAgICAgICAgICAgICAgICBsaXN0IGJ5IHVzaW5nIHRoZSAiPSIgb3BlcmF0b3IsIG9yIHlvdSB3aWxsIG5lZWQgdG8gYXBwZW5kCisgICAgICAgICAgICAgICAgICAgIGEgdmFsdWUgdXNpbmcgZWl0aGVyICJfYXBwZW5kIiBvciB0aGUgIis9IiBvcGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHRoZXNlIG9wZXJhdG9ycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYmFzaWMtc3ludGF4Jz5CYXNpYyBTeW50YXg8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L25vdGU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGNsYXNzZXMgb3IgcmVjaXBlcyB0aGF0IGFkZCBhZGRpdGlvbmFsIHRhc2tzIHRvCisgICAgICAgICAgICAgICAgdGhlIHN0YW5kYXJkIGJ1aWxkIGZsb3cgKGkuZS4gdGhlIHRhc2tzIGV4ZWN1dGUgYXMgdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgIGJ1aWxkcyBhcyBvcHBvc2VkIHRvIGJlaW5nIGNhbGxlZCBleHBsaWNpdGx5KSwgdGhlbiB5b3UgbmVlZAorICAgICAgICAgICAgICAgIHRvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGVuc3VyaW5nIHRoZSB0YXNrcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zaGFyZWQgc3RhdGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFza3MgKGkuZS4gdGhlIG91dHB1dCBvZiB0aGUgdGFzayBpcyBzYXZlZCB0byBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSByZXN0b3JlZCBmcm9tIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmluZyB0aGUgdGFza3MgYXJlIGFibGUgdG8gYmUgcHJvZHVjZWQgcXVpY2tseSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICBhIHRhc2sgdGhhdCBpcyBhIHNoYXJlZCBzdGF0ZSB0YXNrLCBhZGQgdGhlIHRhc2sgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX1JFQ1JERVBfVEFTS1MnPjxmaWxlbmFtZT5TREtfUkVDUkRFUF9UQVNLUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZSB0aGUgdGFza3MgaWYgdGhleSBhcmUgYWRkZWQgYnkgYSBjbGFzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBkbyBub3QgbmVlZCB0aGUgZnVuY3Rpb25hbGl0eSB0aGUgY2xhc3MgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGRpc2FibGUgdGhlIHRhc2tzLCBhZGQgdGhlIGNsYXNzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19JTkhFUklUX0JMQUNLTElTVDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBHZW5lcmFsbHksIHlvdSB3YW50IHRvIGhhdmUgYSBzaGFyZWQgc3RhdGUgbWlycm9yIHNldCB1cCBzbworICAgICAgICAgICAgICAgIHVzZXJzIG9mIHRoZSBTREsgY2FuIGFkZCBhZGRpdGlvbmFsIGl0ZW1zIHRvIHRoZSBTREsgYWZ0ZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gd2l0aG91dCBuZWVkaW5nIHRvIGJ1aWxkIHRoZSBpdGVtcyBmcm9tIHNvdXJjZS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1wcm92aWRpbmctYWRkaXRpb25hbC1pbnN0YWxsYWJsZS1leHRlbnNpYmxlLXNkay1jb250ZW50Jz5Qcm92aWRpbmcgQWRkaXRpb25hbCBJbnN0YWxsYWJsZSBFeHRlbnNpYmxlIFNESyBDb250ZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB1c2VycyBvZiB0aGUgU0RLIHRvIGJlIGFibGUgdG8gZWFzaWx5IHVwZGF0ZSB0aGUKKyAgICAgICAgICAgICAgICBTREssIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX1VQREFURV9VUkwnPjxmaWxlbmFtZT5TREtfVVBEQVRFX1VSTDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstcHJvdmlkaW5nLXVwZGF0ZXMtdG8tdGhlLWV4dGVuc2libGUtc2RrLWFmdGVyLWluc3RhbGxhdGlvbic+UHJvdmlkaW5nIFVwZGF0ZXMgdG8gdGhlIEV4dGVuc2libGUgU0RLIEFmdGVyIEluc3RhbGxhdGlvbjwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhZGp1c3RlZCB0aGUgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdAorICAgICAgICAgICAgICAgIGFwcGVhciBpbgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT1JFQkFTRSc+PGZpbGVuYW1lPkNPUkVCQVNFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIChvdGhlciB0aGFuIGxheWVycyB0aGF0IGFyZSBlbmFibGVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+KSwgdGhlbiB5b3UgbXVzdCBsaXN0IHRoZXNlCisgICAgICAgICAgICAgICAgZmlsZXMgaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09SRUJBU0VfRklMRVMnPjxmaWxlbmFtZT5DT1JFQkFTRV9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzbyB0aGF0IHRoZSBmaWxlcyBhcmUgY29waWVkIGludG8gdGhlIFNESy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2V0dXAgdXNlcyBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBvdGhlciB0aGFuCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIHRoZW4geW91IG11c3Qgc2V0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU9FX0lOSVRfRU5WX1NDUklQVCc+PGZpbGVuYW1lPk9FX0lOSVRfRU5WX1NDUklQVDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBwb2ludCB0byB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHlvdSB1c2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gcmVmbGVjdCB0aGlzIGNoYW5nZSBpbiB0aGUgdmFsdWUgdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1JFQkFTRV9GSUxFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGFzIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nc2RrLWNoYW5naW5nLXRoZS1zZGstaW5zdGFsbGVyLXRpdGxlJz4KKyAgICA8dGl0bGU+Q2hhbmdpbmcgdGhlIEV4dGVuc2libGUgU0RLIEluc3RhbGxlciBUaXRsZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBjaGFuZ2UgdGhlIGRpc3BsYXllZCB0aXRsZSBmb3IgdGhlIFNESyBpbnN0YWxsZXIgYnkgc2V0dGluZworICAgICAgICB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19USVRMRSc+PGZpbGVuYW1lPlNES19USVRMRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgdmFyaWFibGUgYW5kIHRoZW4gcmVidWlsZGluZyB0aGUgdGhlIFNESyBpbnN0YWxsZXIuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYW4gU0RLIGluc3RhbGxlciwgc2VlIHRoZQorICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHRpdGxlIGlzIGRlcml2ZWQgZnJvbQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPX05BTUUnPjxmaWxlbmFtZT5ESVNUUk9fTkFNRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgd2hlbiBpdCBpcyBzZXQuCisgICAgICAgIElmIHRoZSA8ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgdGl0bGUKKyAgICAgICAgaXMgZGVyaXZlZCBmcm9tIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICB2YXJpYWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGNsYXNzIGRlZmluZXMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIDxmaWxlbmFtZT5TREtfVElUTEU8L2ZpbGVuYW1lPgorICAgICAgICB2YXJpYWJsZSBhcyBmb2xsb3dzOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19USVRMRSA/Pz0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScpIG9yIGQuZ2V0VmFyKCdESVNUUk8nKX0gU0RLIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdoaWxlIHNldmVyYWwgd2F5cyBleGlzdCB0byBjaGFuZ2UgdGhpcyB2YXJpYWJsZSwgYW4gZWZmaWNpZW50IG1ldGhvZAorICAgICAgICBpcyB0byBzZXQgdGhlIHZhcmlhYmxlIGluIHlvdXIgZGlzdHJpYnV0aW9uJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGFuIFNESyBpbnN0YWxsZXIgdGl0bGUgdGhhdCBhcHBsaWVzIGFjcm9zcyB5b3VyCisgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIHlvdSBoYXZlIHlvdXIgb3duIGxheWVyIGZvciB5b3VyIGRpc3RyaWJ1dGlvbgorICAgICAgICBuYW1lZCAibWV0YS1teWRpc3RybyIgYW5kIHlvdSBhcmUgdXNpbmcgdGhlIHNhbWUgdHlwZSBvZiBmaWxlCisgICAgICAgIGhpZXJhcmNoeSBhcyBkb2VzIHRoZSBkZWZhdWx0ICJwb2t5IiBkaXN0cmlidXRpb24uCisgICAgICAgIElmIHNvLCB5b3UgY291bGQgdXBkYXRlIHRoZSA8ZmlsZW5hbWU+U0RLX1RJVExFPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5+L21ldGEtbXlkaXN0cm8vY29uZi9kaXN0cm8vbXlkaXN0cm8uY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19USVRMRSA9ICI8cmVwbGFjZWFibGU+eW91cl90aXRsZTwvcmVwbGFjZWFibGU+IgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nc2RrLXByb3ZpZGluZy11cGRhdGVzLXRvLXRoZS1leHRlbnNpYmxlLXNkay1hZnRlci1pbnN0YWxsYXRpb24nPgorICAgIDx0aXRsZT5Qcm92aWRpbmcgVXBkYXRlcyB0byB0aGUgRXh0ZW5zaWJsZSBTREsgQWZ0ZXIgSW5zdGFsbGF0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHlvdSBtYWtlIGNoYW5nZXMgdG8geW91ciBjb25maWd1cmF0aW9uIG9yIHRvIHRoZSBtZXRhZGF0YSBhbmQKKyAgICAgICAgaWYgeW91IHdhbnQgdGhvc2UgY2hhbmdlcyB0byBiZSByZWZsZWN0ZWQgaW4gaW5zdGFsbGVkIFNES3MsIHlvdSBuZWVkCisgICAgICAgIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBzdGVwcy4KKyAgICAgICAgVGhlc2Ugc3RlcHMgbWFrZSBpdCBwb3NzaWJsZSBmb3IgYW55b25lIHVzaW5nIHRoZSBpbnN0YWxsZWQgU0RLcyB0bworICAgICAgICB1cGRhdGUgdGhlIGluc3RhbGxlZCBTREtzIGJ5IHVzaW5nIHRoZQorICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBzZGstdXBkYXRlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIENyZWF0ZSBhIGRpcmVjdG9yeSB0aGF0IGNhbiBiZSBzaGFyZWQgb3ZlciBIVFRQIG9yIEhUVFBTLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZG8gdGhpcyBieSBzZXR0aW5nIHVwIGEgd2ViIHNlcnZlciBzdWNoIGFzIGFuCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBhY2hlX0hUVFBfU2VydmVyJz5BcGFjaGUgSFRUUCBTZXJ2ZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmdpbngnPk5naW54PC91bGluaz4KKyAgICAgICAgICAgICAgICBzZXJ2ZXIgaW4gdGhlIGNsb3VkIHRvIGhvc3QgdGhlIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBtdXN0IGNvbnRhaW4gdGhlIHB1Ymxpc2hlZCBTREsuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgU2V0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfVVBEQVRFX1VSTCc+PGZpbGVuYW1lPlNES19VUERBVEVfVVJMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHBvaW50IHRvIHRoZSBjb3JyZXNwb25kaW5nIEhUVFAgb3IgSFRUUFMgVVJMLgorICAgICAgICAgICAgICAgIFNldHRpbmcgdGhpcyB2YXJpYWJsZSBjYXVzZXMgYW55IFNESyBidWlsdCB0byBkZWZhdWx0IHRvIHRoYXQKKyAgICAgICAgICAgICAgICBVUkwgYW5kIHRodXMsIHRoZSB1c2VyIGRvZXMgbm90IGhhdmUgdG8gcGFzcyB0aGUgVVJMIHRvIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHNkay11cGRhdGU8L2ZpbGVuYW1lPiBjb21tYW5kIGFzIGRlc2NyaWJlZAorICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYXBwbHlpbmctdXBkYXRlcy10by1hbi1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGsnPkFwcGx5aW5nIFVwZGF0ZXMgdG8gYW4gSW5zdGFsbGVkIEV4dGVuc2libGUgU0RLPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBleHRlbnNpYmxlIFNESyBub3JtYWxseSAoaS5lLiwgdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQdWJsaXNoIHRoZSBTREsgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBvZS1wdWJsaXNoLXNkayA8cmVwbGFjZWFibGU+c29tZV9wYXRoPC9yZXBsYWNlYWJsZT4vc2RrLWluc3RhbGxlci5zaCA8cmVwbGFjZWFibGU+cGF0aF90b19zaGFyZWRfaHR0cF9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgbXVzdCByZXBlYXQgdGhpcyBzdGVwIGVhY2ggdGltZSB5b3UgcmVidWlsZCB0aGUgU0RLCisgICAgICAgICAgICAgICAgd2l0aCBjaGFuZ2VzIHRoYXQgeW91IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICB1cGRhdGUgbWVjaGFuaXNtLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBDb21wbGV0aW5nIHRoZSBhYm92ZSBzdGVwcyBhbGxvd3MgdXNlcnMgb2YgdGhlIGV4aXN0aW5nIGluc3RhbGxlZAorICAgICAgICBTREtzIHRvIHNpbXBseSBydW4gPGZpbGVuYW1lPmRldnRvb2wgc2RrLXVwZGF0ZTwvZmlsZW5hbWU+IHRvCisgICAgICAgIHJldHJpZXZlIGFuZCBhcHBseSB0aGUgbGF0ZXN0IHVwZGF0ZXMuCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1hcHBseWluZy11cGRhdGVzLXRvLWFuLWluc3RhbGxlZC1leHRlbnNpYmxlLXNkayc+QXBwbHlpbmcgVXBkYXRlcyB0byBhbiBJbnN0YWxsZWQgRXh0ZW5zaWJsZSBTREs8L2xpbms+IgorICAgICAgICBzZWN0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Nkay1jaGFuZ2luZy10aGUtZGVmYXVsdC1zZGstaW5zdGFsbGF0aW9uLWRpcmVjdG9yeSc+CisgICAgPHRpdGxlPkNoYW5naW5nIHRoZSBEZWZhdWx0IFNESyBJbnN0YWxsYXRpb24gRGlyZWN0b3J5PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHlvdSBidWlsZCB0aGUgaW5zdGFsbGVyIGZvciB0aGUgRXh0ZW5zaWJsZSBTREssIHRoZSBkZWZhdWx0CisgICAgICAgIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIHRoZSBTREsgaXMgYmFzZWQgb24gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGFuZAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLRVhUUEFUSCc+PGZpbGVuYW1lPlNES0VYVFBBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlcyBmcm9tIHdpdGhpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgY2xhc3MgYXMgZm9sbG93czoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtFWFRQQVRIID8/PSAifi8ke0BkLmdldFZhcignRElTVFJPJyl9X3NkayIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aGlzIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBieSBzcGVjaWZpY2FsbHkKKyAgICAgICAgc2V0dGluZyB0aGUgPGZpbGVuYW1lPlNES0VYVFBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hpbGUgYSBudW1iZXIgb2Ygd2F5cyBleGlzdCB0aHJvdWdoIHdoaWNoIHlvdSBjYW4gc2V0IHRoaXMgdmFyaWFibGUsCisgICAgICAgIHRoZSBtZXRob2QgdGhhdCBtYWtlcyB0aGUgbW9zdCBzZW5zZSBpcyB0byBzZXQgdGhlIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgZGlzdHJpYnV0aW9uJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGFuIFNESyBpbnN0YWxsZXIgZGVmYXVsdCBkaXJlY3RvcnkgdGhhdCBhcHBsaWVzCisgICAgICAgIGFjcm9zcyB5b3VyIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIHlvdSBoYXZlIHlvdXIgb3duIGxheWVyIGZvciB5b3VyIGRpc3RyaWJ1dGlvbgorICAgICAgICBuYW1lZCAibWV0YS1teWRpc3RybyIgYW5kIHlvdSBhcmUgdXNpbmcgdGhlIHNhbWUgdHlwZSBvZiBmaWxlCisgICAgICAgIGhpZXJhcmNoeSBhcyBkb2VzIHRoZSBkZWZhdWx0ICJwb2t5IiBkaXN0cmlidXRpb24uCisgICAgICAgIElmIHNvLCB5b3UgY291bGQgdXBkYXRlIHRoZSA8ZmlsZW5hbWU+U0RLRVhUUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+fi9tZXRhLW15ZGlzdHJvL2NvbmYvZGlzdHJvL215ZGlzdHJvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtFWFRQQVRIID0gIjxyZXBsYWNlYWJsZT5zb21lX3BhdGhfZm9yX3lvdXJfaW5zdGFsbGVkX3NkazwvcmVwbGFjZWFibGU+IgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIGJ1aWxkaW5nIHlvdXIgaW5zdGFsbGVyLCBydW5uaW5nIGl0IHByb21wdHMgdGhlIHVzZXIgZm9yCisgICAgICAgIGFjY2VwdGFuY2Ugb2YgdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5zb21lX3BhdGhfZm9yX3lvdXJfaW5zdGFsbGVkX3NkazwvcmVwbGFjZWFibGU+IGRpcmVjdG9yeQorICAgICAgICBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiB0byBpbnN0YWxsIHRoZSBFeHRlbnNpYmxlIFNESy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdzZGstcHJvdmlkaW5nLWFkZGl0aW9uYWwtaW5zdGFsbGFibGUtZXh0ZW5zaWJsZS1zZGstY29udGVudCc+CisgICAgPHRpdGxlPlByb3ZpZGluZyBBZGRpdGlvbmFsIEluc3RhbGxhYmxlIEV4dGVuc2libGUgU0RLIENvbnRlbnQ8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSB3YW50IHRoZSB1c2VycyBvZiBhbiBleHRlbnNpYmxlIFNESyB5b3UgYnVpbGQgdG8gYmUKKyAgICAgICAgYWJsZSB0byBhZGQgaXRlbXMgdG8gdGhlIFNESyB3aXRob3V0IHJlcXVpcmluZyB0aGUgdXNlcnMgdG8gYnVpbGQKKyAgICAgICAgdGhlIGl0ZW1zIGZyb20gc291cmNlLCB5b3UgbmVlZCB0byBkbyBhIG51bWJlciBvZiB0aGluZ3M6CisgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBFbnN1cmUgdGhlIGFkZGl0aW9uYWwgaXRlbXMgeW91IHdhbnQgdGhlIHVzZXIgdG8gYmUgYWJsZSB0bworICAgICAgICAgICAgICAgIGluc3RhbGwgYXJlIGFscmVhZHkgYnVpbHQ6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIGl0ZW1zIGV4cGxpY2l0bHkuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgdXNlIG9uZSBvciBtb3JlICJtZXRhIiByZWNpcGVzIHRoYXQgZGVwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICBvbiBsaXN0cyBvZiBvdGhlciByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSAid29ybGQiIHRhcmdldCBhbmQgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhDTFVERV9GUk9NX1dPUkxEX3BuLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZWNpcGVzIHlvdSBkbyBub3Qgd2FudCBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWENMVURFX0ZST01fV09STEQnPjxmaWxlbmFtZT5FWENMVURFX0ZST01fV09STEQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEV4cG9zZSB0aGUgPGZpbGVuYW1lPnNzdGF0ZS1jYWNoZTwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIHByb2R1Y2VkIGJ5IHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSBleHBvc2UgdGhpcyBkaXJlY3RvcnkgYnkgbWFraW5nIGl0IGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIHRocm91Z2ggYW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcGFjaGVfSFRUUF9TZXJ2ZXInPkFwYWNoZSBIVFRQIFNlcnZlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZ2lueCc+Tmdpbng8L3VsaW5rPgorICAgICAgICAgICAgICAgIHNlcnZlci4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBTZXQgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgcHJvZHVjZWQgU0RLCisgICAgICAgICAgICAgICAga25vd3MgaG93IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIHlvdSBuZWVkIHRvIHNldCBpcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNTVEFURV9NSVJST1JTID0gImZpbGU6Ly8uKiAgaHR0cDovLzxyZXBsYWNlYWJsZT5leGFtcGxlPC9yZXBsYWNlYWJsZT4uY29tLzxyZXBsYWNlYWJsZT5zb21lX3BhdGg8L3JlcGxhY2VhYmxlPi9zc3RhdGUtY2FjaGUvUEFUSCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhlIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIG1pcnJvciB2YWx1ZSB5b3UgYXJlIHNldHRpbmcgaXMgYXBwcm9wcmlhdGUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIHNldCBmb3IgYm90aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxseSBidWlsZGluZyB0aGUgU0RLIGFuZCB0aGUgU0RLIGl0c2VsZiAoaS5lLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pcnJvciBpcyBhY2Nlc3NpYmxlIGluIGJvdGggcGxhY2VzIG9yIGl0IHdpbGwgZmFpbAorICAgICAgICAgICAgICAgICAgICAgICAgcXVpY2tseSBvbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzaWRlLCBhbmQgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyB3aWxsIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgYnVpbGQpLCB0aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHNldCB0aGUgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBvciBjdXN0b20gZGlzdHJvCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gIndoaXRlbGlzdCIgdGhlIHZhcmlhYmxlIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBTREsgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19MT0NBTF9DT05GX1dISVRFTElTVCA9ICJTU1RBVEVfTUlSUk9SUyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UganVzdCB3YW50IHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+IHZhcmlhYmxlJ3MgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgU0RLIGFsb25lLCBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2RrLWV4dHJhLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGVpdGhlciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3Igd2l0aGluIGFueSBsYXllciBhbmQgcHV0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+IHNldHRpbmcgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY29uZCBvcHRpb24gaXMgdGhlIHNhZmVzdCBvcHRpb24gc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgYW55IGRvdWJ0cyBhcyB0byB3aGljaCBtZXRob2QgdG8gdXNlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nc2RrLW1pbmltaXppbmctdGhlLXNpemUtb2YtdGhlLWV4dGVuc2libGUtc2RrLWluc3RhbGxlci1kb3dubG9hZCc+CisgICAgPHRpdGxlPk1pbmltaXppbmcgdGhlIFNpemUgb2YgdGhlIEV4dGVuc2libGUgU0RLIEluc3RhbGxlciBEb3dubG9hZDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGV4dGVuc2libGUgU0RLIGJ1bmRsZXMgdGhlIHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgZm9yCisgICAgICAgIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSBpbWFnZSBmb3Igd2hpY2ggdGhlIFNESyB3YXMgYnVpbHQuCisgICAgICAgIFRoaXMgYnVuZGxpbmcgY2FuIGxlYWQgdG8gYW4gU0RLIGluc3RhbGxlciBmaWxlIHRoYXQgaXMgYSBHaWdhYnl0ZSBvcgorICAgICAgICBtb3JlIGluIHNpemUuCisgICAgICAgIElmIHRoZSBzaXplIG9mIHRoaXMgZmlsZSBjYXVzZXMgYSBwcm9ibGVtLCB5b3UgY2FuIGJ1aWxkIGFuIFNESyB0aGF0CisgICAgICAgIGhhcyBqdXN0IGVub3VnaCBpbiBpdCB0byBpbnN0YWxsIGFuZCBwcm92aWRlIGFjY2VzcyB0byB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgY29tbWFuZDwvZmlsZW5hbWU+IGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBpbiB5b3VyCisgICAgICAgIGNvbmZpZ3VyYXRpb246CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU0RLX0VYVF9UWVBFID0gIm1pbmltYWwiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgU2V0dGluZworICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICB0byAibWluaW1hbCIgcHJvZHVjZXMgYW4gU0RLIGluc3RhbGxlciB0aGF0IGlzIGFyb3VuZCAzNSBNYnl0ZXMgaW4KKyAgICAgICAgc2l6ZSwgd2hpY2ggZG93bmxvYWRzIGFuZCBpbnN0YWxscyBxdWlja2x5LgorICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplLCB0aG91Z2gsIHRoYXQgdGhlIG1pbmltYWwgaW5zdGFsbGVyIGRvZXMgbm90CisgICAgICAgIGluc3RhbGwgYW55IGxpYnJhcmllcyBvciB0b29scyBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgVGhlc2UgbGlicmFyaWVzIGFuZCB0b29scyBtdXN0IGJlIGluc3RhbGxlZCBlaXRoZXIgIm9uIHRoZSBmbHkiIG9yCisgICAgICAgIHRocm91Z2ggYWN0aW9ucyB5b3UgcGVyZm9ybSB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IG9yCisgICAgICAgIGV4cGxpY2l0bHkgd2l0aCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgc2RrLWluc3RhbGw8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBtb3N0IGNhc2VzLCB3aGVuIGJ1aWxkaW5nIGEgbWluaW1hbCBTREsgeW91IG5lZWQgdG8gYWxzbyBlbmFibGUKKyAgICAgICAgYnJpbmdpbmcgaW4gdGhlIGluZm9ybWF0aW9uIG9uIGEgd2lkZXIgcmFuZ2Ugb2YgcGFja2FnZXMgcHJvZHVjZWQgYnkKKyAgICAgICAgdGhlIHN5c3RlbS4KKyAgICAgICAgUmVxdWlyaW5nIHRoaXMgd2lkZXIgcmFuZ2Ugb2YgaW5mb3JtYXRpb24gaXMgcGFydGljdWxhcmx5IHRydWUKKyAgICAgICAgc28gdGhhdCA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBpcyBhYmxlIHRvIGVmZmVjdGl2ZWx5IG1hcAorICAgICAgICBkZXBlbmRlbmNpZXMgaXQgZGlzY292ZXJzIGluIGEgc291cmNlIHRyZWUgdG8gdGhlIGFwcHJvcHJpYXRlIHJlY2lwZXMuCisgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIGluZm9ybWF0aW9uIGVuYWJsZXMgdGhlCisgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHNlYXJjaDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gcmV0dXJuIHVzZWZ1bCByZXN1bHRzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUbyBmYWNpbGl0YXRlIHRoaXMgd2lkZXIgcmFuZ2Ugb2YgaW5mb3JtYXRpb24sIHlvdSB3b3VsZCBuZWVkIHRvCisgICAgICAgIHNldCB0aGUgZm9sbG93aW5nOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19JTkNMVURFX1BLR0RBVEEgPSAiMSIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBTZWUgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9QS0dEQVRBJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfUEtHREFUQTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFNldHRpbmcgdGhlIDxmaWxlbmFtZT5TREtfSU5DTFVERV9QS0dEQVRBPC9maWxlbmFtZT4gdmFyaWFibGUgYXMKKyAgICAgICAgc2hvd24gY2F1c2VzIHRoZSAid29ybGQiIHRhcmdldCB0byBiZSBidWlsdCBzbyB0aGF0IGluZm9ybWF0aW9uCisgICAgICAgIGZvciBhbGwgb2YgdGhlIHJlY2lwZXMgaW5jbHVkZWQgd2l0aGluIGl0IGFyZSBhdmFpbGFibGUuCisgICAgICAgIEhhdmluZyB0aGVzZSByZWNpcGVzIGF2YWlsYWJsZSBpbmNyZWFzZXMgYnVpbGQgdGltZSBzaWduaWZpY2FudGx5IGFuZAorICAgICAgICBpbmNyZWFzZXMgdGhlIHNpemUgb2YgdGhlIFNESyBpbnN0YWxsZXIgYnkgMzAtODAgTWJ5dGVzIGRlcGVuZGluZyBvbgorICAgICAgICBob3cgbWFueSByZWNpcGVzIGFyZSBpbmNsdWRlZCBpbiB5b3VyIGNvbmZpZ3VyYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gdXNlCisgICAgICAgIDxmaWxlbmFtZT5FWENMVURFX0ZST01fV09STERfcG4tPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgIGZvciByZWNpcGVzIHlvdSB3YW50IHRvIGV4Y2x1ZGUuCisgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGFzc3VtZWQgdGhhdCB5b3Ugd291bGQgbmVlZCB0byBiZSBidWlsZGluZyB0aGUgIndvcmxkIgorICAgICAgICB0YXJnZXQgaWYgeW91IHdhbnQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGl0ZW1zIHRvIHRoZSBTREsuCisgICAgICAgIENvbnNlcXVlbnRseSwgYnVpbGRpbmcgZm9yICJ3b3JsZCIgc2hvdWxkIG5vdCByZXByZXNlbnQgdW5kdWUKKyAgICAgICAgb3ZlcmhlYWQgaW4gbW9zdCBjYXNlcy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJZiB5b3Ugc2V0IDxmaWxlbmFtZT5TREtfRVhUX1RZUEU8L2ZpbGVuYW1lPiB0byAibWluaW1hbCIsCisgICAgICAgICAgICB0aGVuIHByb3ZpZGluZyBhIHNoYXJlZCBzdGF0ZSBtaXJyb3IgaXMgbWFuZGF0b3J5IHNvIHRoYXQgaXRlbXMKKyAgICAgICAgICAgIGNhbiBiZSBpbnN0YWxsZWQgYXMgbmVlZGVkLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1wcm92aWRpbmctYWRkaXRpb25hbC1pbnN0YWxsYWJsZS1leHRlbnNpYmxlLXNkay1jb250ZW50Jz5Qcm92aWRpbmcgQWRkaXRpb25hbCBJbnN0YWxsYWJsZSBFeHRlbnNpYmxlIFNESyBDb250ZW50PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBleHBsaWNpdGx5IGNvbnRyb2wgd2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgdG9vbGNoYWluCisgICAgICAgIHdoZW4geW91IGJ1aWxkIGFuIFNESyBieSBzZXR0aW5nIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICB2YXJpYWJsZSB0byAiMSIuCisgICAgICAgIEluIHBhcnRpY3VsYXIsIGl0IGlzIHVzZWZ1bCB0byBpbmNsdWRlIHRoZSB0b29sY2hhaW4gd2hlbiB5b3UKKyAgICAgICAgaGF2ZSBzZXQgPGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+IHRvICJtaW5pbWFsIiwgd2hpY2ggYnkKKyAgICAgICAgZGVmYXVsdCwgZXhjbHVkZXMgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgQWxzbywgaXQgaXMgaGVscGZ1bCBpZiB5b3UgYXJlIGJ1aWxkaW5nIGEgc21hbGwgU0RLIGZvciB1c2Ugd2l0aAorICAgICAgICBhbiBJREUgb3Igc29tZQorICAgICAgICBvdGhlciB0b29sIHdoZXJlIHlvdSBkbyBub3Qgd2FudCB0byB0YWtlIGV4dHJhIHN0ZXBzIHRvIGluc3RhbGwgYQorICAgICAgICB0b29sY2hhaW4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorPC9hcHBlbmRpeD4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnJzdAppbmRleCBhNTFjMjJlLi45N2FiOTE2IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqKioqKioKIE9idGFpbmluZyB0aGUgU0RLCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlN2Y3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbApAQCAtMCwwICsxLDQ0NCBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxhcHBlbmRpeCBpZD0nc2RrLWFwcGVuZGl4LW9idGFpbic+CisKKzx0aXRsZT5PYnRhaW5pbmcgdGhlIFNESzwvdGl0bGU+CisKKzxzZWN0aW9uIGlkPSdzZGstbG9jYXRpbmctcHJlLWJ1aWx0LXNkay1pbnN0YWxsZXJzJz4KKyAgICA8dGl0bGU+TG9jYXRpbmcgUHJlLUJ1aWx0IFNESyBJbnN0YWxsZXJzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIHVzZSBleGlzdGluZywgcHJlLWJ1aWx0IHRvb2xjaGFpbnMgYnkgbG9jYXRpbmcgYW5kIHJ1bm5pbmcKKyAgICAgICAgYW4gU0RLIGluc3RhbGxlciBzY3JpcHQgdGhhdCBzaGlwcyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBVc2luZyB0aGlzIG1ldGhvZCwgeW91IHNlbGVjdCBhbmQgZG93bmxvYWQgYW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljCisgICAgICAgIFNESyBpbnN0YWxsZXIgYW5kIHRoZW4gcnVuIHRoZSBzY3JpcHQgdG8gaGFuZC1pbnN0YWxsIHRoZQorICAgICAgICB0b29sY2hhaW4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBsb2NhdGUgYW5kIGhhbmQtaW5zdGFsbCB0aGUgdG9vbGNoYWluOgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBJbnN0YWxsZXJzIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEdvIHRvIDx1bGluayB1cmw9JyZZT0NUT19UT09MQ0hBSU5fRExfVVJMOyc+PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3BlbiB0aGUgRm9sZGVyIGZvciBZb3VyIEJ1aWxkIEhvc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPcGVuIHRoZSBmb2xkZXIgdGhhdCBtYXRjaGVzIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmk2ODY8L2ZpbGVuYW1lPiBmb3IgMzItYml0IG1hY2hpbmVzIG9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGZvciA2NC1iaXQgbWFjaGluZXMpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgYW5kIERvd25sb2FkIHRoZSBTREsgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZmluZCBhbmQgZG93bmxvYWQgdGhlIGluc3RhbGxlciBhcHByb3ByaWF0ZSBmb3IKKyAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QsIHRhcmdldCBoYXJkd2FyZSwgYW5kIGltYWdlIHR5cGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGluc3RhbGxlciBmaWxlcyAoPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPikgZm9sbG93CisgICAgICAgICAgICAgICAgdGhpcyBuYW1pbmcgY29udmVudGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3ktZ2xpYmMtPHJlcGxhY2VhYmxlPmhvc3Rfc3lzdGVtPC9yZXBsYWNlYWJsZT4tY29yZS1pbWFnZS08cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tdG9vbGNoYWluWy1leHRdLTxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT4uc2gKKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5ob3N0X3N5c3RlbTwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB5b3VyIGRldmVsb3BtZW50IHN5c3RlbToKKyAgICAgICAgICAgICAgICAiaTY4NiIgb3IgIng4Nl82NCIKKworICAgICAgICAgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgICJzYXRvIiBvciAibWluaW1hbCIKKworICAgICAgICAgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgImFhcmNoNjQiLCAiYXJtdjVlIiwgImNvcmUyLTY0IiwgImNvcmV0ZXhhOGhmLW5lb24iLCAiaTU4NiIsICJtaXBzMzJyMiIsCisgICAgICAgICAgICAgICAgIm1pcHM2NCIsIG9yICJwcGM3NDAwIgorCisgICAgICAgICA8cmVwbGFjZWFibGU+cmVsZWFzZTwvcmVwbGFjZWFibGU+IGlzIHRoZSB2ZXJzaW9uIG9mIFlvY3RvIFByb2plY3QuCisKKyAgICAgICAgIE5PVEU6CisgICAgICAgICAgICBUaGUgc3RhbmRhcmQgU0RLIGluc3RhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSAiLWV4dCIgc3RyaW5nIGFzCisgICAgICAgICAgICBwYXJ0IG9mIHRoZSBmaWxlbmFtZS4KKworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgdG9vbGNoYWlucyBwcm92aWRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhcmUgYmFzZWQgb2ZmIG9mCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2VzIGFuZCBjb250YWluCisgICAgICAgICAgICAgICAgbGlicmFyaWVzIGFwcHJvcHJpYXRlIGZvciBkZXZlbG9waW5nIGFnYWluc3QgdGhvc2UgaW1hZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvciBleGFtcGxlLCBpZiB5b3VyIGJ1aWxkIGhvc3QgaXMgYSA2NC1iaXQgeDg2IHN5c3RlbQorICAgICAgICAgICAgICAgIGFuZCB5b3UgbmVlZCBhbiBleHRlbmRlZCBTREsgZm9yIGEgNjQtYml0IGNvcmUyIHRhcmdldCwgZ28KKyAgICAgICAgICAgICAgICBpbnRvIHRoZSA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4gZm9sZGVyIGFuZCBkb3dubG9hZCB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLWNvcmUyLTY0LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJ1biB0aGUgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgaGF2ZSBleGVjdXRpb24gcHJpdmlsZWdlcyBhbmQgcnVuIHRoZSBpbnN0YWxsZXIuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUgPGZpbGVuYW1lPkRvd25sb2FkczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L0Rvd25sb2Fkcy9wb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8tY29yZTItNjQtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uIG9mIHRoZSBzY3JpcHQsIHlvdSBjaG9vc2UgdGhlIHJvb3QgbG9jYXRpb24KKyAgICAgICAgICAgICAgICBmb3IgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsZWQtc3RhbmRhcmQtc2RrLWRpcmVjdG9yeS1zdHJ1Y3R1cmUnPkluc3RhbGxlZCBTdGFuZGFyZCBTREsgRGlyZWN0b3J5IFN0cnVjdHVyZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBhbmQgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIEV4dGVuc2libGUgU0RLIERpcmVjdG9yeSBTdHJ1Y3R1cmU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPgorICAgIDx0aXRsZT5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBBcyBhbiBhbHRlcm5hdGl2ZSB0byBsb2NhdGluZyBhbmQgZG93bmxvYWRpbmcgYW4gU0RLIGluc3RhbGxlciwKKyAgICAgICAgeW91IGNhbiBidWlsZCB0aGUgU0RLIGluc3RhbGxlci4KKyAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzOgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0aGF0IGlzIGVpdGhlciBhCisgICAgICAgICAgICAgICAgbmF0aXZlIExpbnV4IG1hY2hpbmUgb3IgYSBtYWNoaW5lIHRoYXQgdXNlcyBDUk9QUy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgYSBsb2NhbCBjb3B5IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgKGkuZS4gYSBsb2NhbCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkpLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBhbmQgcG9zc2libHkgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgYWxsIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaCBmb3IgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFdoaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLCBydW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHRvIGRlZmluZSB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgYnVpbGQgZW52aXJvbm1lbnQgb24geW91ciBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKKyAgICAgICAgICAgICAgICBhbmQgaXMgbG9jYXRlZCBpbiB0aGUgU291cmNlIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBBZnRlciB0aGUgc2NyaXB0IHJ1bnMsIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFN1cmUgWW91IEFyZSBCdWlsZGluZyBhbiBJbnN0YWxsZXIgZm9yIHRoZSBDb3JyZWN0IE1hY2hpbmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDaGVjayB0byBiZSBzdXJlIHRoYXQgeW91cgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkgbWF0Y2hlcyB0aGUgYXJjaGl0ZWN0dXJlIGZvciB3aGljaCB5b3UgYXJlCisgICAgICAgICAgICAgICAgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU3VyZSBZb3VyIFNESyBNYWNoaW5lIGlzIENvcnJlY3RseSBTZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdG9vbGNoYWluIGRlc2lnbmVkIHRvIHJ1biBvbiBhbgorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSB0aGF0IGRpZmZlcnMgZnJvbSB5b3VyIGN1cnJlbnQgZGV2ZWxvcG1lbnQgaG9zdAorICAgICAgICAgICAgICAgIG1hY2hpbmUgKGkuZS4gdGhlIGJ1aWxkIGhvc3QpLCBiZSBzdXJlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4geW91cgorICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSBpcyBjb3JyZWN0bHkgc2V0LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGJ1aWxkaW5nIGFuIFNESyBpbnN0YWxsZXIgZm9yIHRoZSBFeHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgIFNESywgdGhlIDxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT4gdmFsdWUgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBzZXQgZm9yIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIG1hY2hpbmUgeW91IGFyZSB1c2luZyB0bworICAgICAgICAgICAgICAgICAgICBidWlsZCB0aGUgaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+IGlzIG5vdCBzZXQgYXBwcm9wcmlhdGVseSwKKyAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGZhaWxzIGFuZCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIHNpbWlsYXIgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUaGUgZXh0ZW5zaWJsZSBTREsgY2FuIGN1cnJlbnRseSBvbmx5IGJlIGJ1aWx0IGZvciB0aGUgc2FtZSBhcmNoaXRlY3R1cmUgYXMgdGhlIG1hY2hpbmUgYmVpbmcgYnVpbHQgb24gLSBTREtfQVJDSCBpcworICAgICBzZXQgdG8gaTY4NiAobGlrZWx5IHZpYSBzZXR0aW5nIFNES01BQ0hJTkUpIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGJ1aWxkIG1hY2hpbmUgKHg4Nl82NCkuCisgICAgIFVuYWJsZSB0byBjb250aW51ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIFNESyBJbnN0YWxsZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUbyBidWlsZCB0aGUgU0RLIGluc3RhbGxlciBmb3IgYSBzdGFuZGFyZCBTREsgYW5kIHBvcHVsYXRlCisgICAgICAgICAgICAgICAgdGhlIFNESyBpbWFnZSwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3JtLgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcmVwbGFjZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiB3aXRoCisgICAgICAgICAgICAgICAgYW4gaW1hZ2UgKGUuZy4gImNvcmUtaW1hZ2Utc2F0byIpOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+IC1jIHBvcHVsYXRlX3NkaworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoZSBzYW1lIGZvciB0aGUgZXh0ZW5zaWJsZSBTREsgdXNpbmcgdGhpcyBjb21tYW5kCisgICAgICAgICAgICAgICAgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyBwb3B1bGF0ZV9zZGtfZXh0CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZXNlIGNvbW1hbmRzIHByb2R1Y2UgYW4gU0RLIGluc3RhbGxlciB0aGF0IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgIHN5c3Jvb3QgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IHJvb3QgZmlsZXN5c3RlbS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgY29tcGxldGVzLAorICAgICAgICAgICAgICAgIHRoZSBTREsgaW5zdGFsbGVyIHdpbGwgYmUgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9zZGs8L2ZpbGVuYW1lPiBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIHByZXZpb3VzIEJpdEJha2UgY29tbWFuZCBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN0YXRpYyBiaW5hcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIHRvb2xjaGFpbiB0byBidWlsZCB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzIG9mIGxpYnJhcmllcywgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyIFNESworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyB0aGUgYXBwcm9wcmlhdGUgc3RhdGljIGRldmVsb3BtZW50IGxpYnJhcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPT0xDSEFJTl9UQVJHRVRfVEFTSyc+PGZpbGVuYW1lPlRPT0xDSEFJTl9UQVJHRVRfVEFTSzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbnNpZGUgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBiZWZvcmUgYnVpbGRpbmcgdGhlIFNESyBpbnN0YWxsZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gZW5zdXJlcyB0aGF0IHRoZSBldmVudHVhbCBTREsgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyBpbnN0YWxscyB0aGUgYXBwcm9wcmlhdGUgbGlicmFyeSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gc3RhdGljIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVE9PTENIQUlOX1RBUkdFVF9UQVNLX2FwcGVuZCA9ICIgbGliYy1zdGF0aWNkZXYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UnVuIHRoZSBJbnN0YWxsZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG5vdyBydW4gdGhlIFNESyBpbnN0YWxsZXIgZnJvbQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZC90bXAvZGVwbG95L3NkaworICAgICAkIC4vcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLWNvcmUyLTY0LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgc2NyaXB0LCB5b3UgY2hvb3NlIHRoZSByb290IGxvY2F0aW9uCisgICAgICAgICAgICAgICAgZm9yIHRoZSB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGVkLXN0YW5kYXJkLXNkay1kaXJlY3Rvcnktc3RydWN0dXJlJz5JbnN0YWxsZWQgU3RhbmRhcmQgU0RLIERpcmVjdG9yeSBTdHJ1Y3R1cmU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gYW5kIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS1zdHJ1Y3R1cmUnPkluc3RhbGxlZCBFeHRlbnNpYmxlIFNESyBEaXJlY3RvcnkgU3RydWN0dXJlPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Nkay1leHRyYWN0aW5nLXRoZS1yb290LWZpbGVzeXN0ZW0nPgorICAgIDx0aXRsZT5FeHRyYWN0aW5nIHRoZSBSb290IEZpbGVzeXN0ZW08L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIGluc3RhbGxpbmcgdGhlIHRvb2xjaGFpbiwgZm9yIHNvbWUgdXNlIGNhc2VzIHlvdQorICAgICAgICBtaWdodCBuZWVkIHRvIHNlcGFyYXRlbHkgZXh0cmFjdCBhIHJvb3QgZmlsZXN5c3RlbToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBZb3Ugd2FudCB0byBib290IHRoZSBpbWFnZSB1c2luZyBORlMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgWW91IHdhbnQgdG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gYXMgdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgWW91IHdhbnQgdG8gZGV2ZWxvcCB5b3VyIHRhcmdldCBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSByb290IGZpbGVzeXN0ZW0gYXMgdGhlIHRhcmdldCBzeXNyb290LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGV4dHJhY3QgdGhlIHJvb3QgZmlsZXN5c3RlbToKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgYW5kIERvd25sb2FkIHRoZSBUYXJiYWxsIGZvciB0aGUgUHJlLUJ1aWx0CisgICAgICAgICAgICAgICAgUm9vdCBGaWxlc3lzdGVtIEltYWdlIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBmaW5kIGFuZCBkb3dubG9hZCB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlCisgICAgICAgICAgICAgICAgZmlsZSB0aGF0IGlzIGFwcHJvcHJpYXRlIGZvciB5b3VyIHRhcmdldCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgYXJlIGtlcHQgaW4gbWFjaGluZS1zcGVjaWZpYyBmb2xkZXJzIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L21hY2hpbmVzLyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSAibWFjaGluZXMiIGRpcmVjdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgbWFjaGluZS1zcGVjaWZpYyBmb2xkZXJzIG9mIHRoZSAibWFjaGluZXMiIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGNvbnRhaW4gdGFyYmFsbHMgKDxmaWxlbmFtZT4qLnRhci5iejI8L2ZpbGVuYW1lPikgZm9yIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgIFRoZXNlIGRpcmVjdG9yaWVzIGFsc28gY29udGFpbiBmbGF0dGVuZWQgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgaW1hZ2UgZmlsZXMgKDxmaWxlbmFtZT4qLmV4dDQ8L2ZpbGVuYW1lPiksIHdoaWNoIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgd2l0aCBRRU1VIGRpcmVjdGx5LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBwcmUtYnVpbHQgcm9vdCBmaWxlc3lzdGVtIGltYWdlIGZpbGVzCisgICAgICAgICAgICAgICAgZm9sbG93IHRoZXNlIG5hbWluZyBjb252ZW50aW9uczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Cis8IS0tCisgICAgIGNvcmUtaW1hZ2UtPHJlcGxhY2VhYmxlPnByb2ZpbGU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5kYXRlX3RpbWU8L3JlcGxhY2VhYmxlPi5yb290ZnMudGFyLmJ6MgorLS0+CisgICAgIGNvcmUtaW1hZ2UtPHJlcGxhY2VhYmxlPnByb2ZpbGU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+LnRhci5iejIKKworICAgICBXaGVyZToKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5wcm9maWxlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGZpbGVzeXN0ZW0gaW1hZ2UncyBwcm9maWxlOgorICAgICAgICAgICAgICAgICAgIGxzYiwgbHNiLWRldiwgbHNiLXNkaywgbWluaW1hbCwgbWluaW1hbC1kZXYsIG1pbmltYWwtaW5pdHJhbWZzLAorICAgICAgICAgICAgICAgICAgIHNhdG8sIHNhdG8tZGV2LCBzYXRvLXNkaywgc2F0by1zZGstcHRlc3QuIEZvciBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgICAgICAgIHRoZXNlIHR5cGVzIG9mIGltYWdlIHByb2ZpbGVzLCBzZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIgY2hhcHRlciBpbgorICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlOgorICAgICAgICAgICAgICAgICAgIGJlYWdsZWJvbmUteW9jdG8sIGJlYWdsZWJvbmUteW9jdG8tbHNiLCBlZGdlcm91dGVyLCBlZGdlcm91dGVyLWxzYiwKKyAgICAgICAgICAgICAgICAgICBnZW5lcmljeDg2LCBnZW5lcmljeDg2LTY0LCBnZW5lcmljeDg2LTY0LWxzYiwgZ2VuZXJpY3g4Ni1sc2IgYW5kIHFlbXUqLgorCis8IS0tPgorICAgICAgICAgPHJlcGxhY2VhYmxlPmRhdGVfdGltZTwvcmVwbGFjZWFibGU+IGlzIGEgZGF0ZSBhbmQgdGltZSBzdGFtcC4KKy0tPgorCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSByb290IGZpbGVzeXN0ZW1zIHByb3ZpZGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGFyZSBiYXNlZAorICAgICAgICAgICAgICAgIG9mZiBvZiB0aGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGV4YW1wbGUsIGlmIHlvdSBwbGFuIG9uIHVzaW5nIGEgQmVhZ2xlQm9uZSBkZXZpY2UKKyAgICAgICAgICAgICAgICBhcyB5b3VyIHRhcmdldCBoYXJkd2FyZSBhbmQgeW91ciBpbWFnZSBpcyBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0by1zZGs8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGltYWdlLCB5b3UgY2FuIGRvd25sb2FkIHRoZSBmb2xsb3dpbmcgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGNvcmUtaW1hZ2Utc2F0by1zZGstYmVhZ2xlYm9uZS15b2N0by50YXIuYnoyCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBDcm9zcy1EZXZlbG9wbWVudCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZXN0YWJsaXNoIG5lY2Vzc2FyeSBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgIHZhcmlhYmxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIHNjcmlwdCBpcyBsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgd2hpY2ggeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluIChlLmcuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3lfc2RrPC9maWxlbmFtZT4pLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGJhc2VkIG9uIHRoZSB0b29sY2hhaW4gaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1sb2NhdGluZy1wcmUtYnVpbHQtc2RrLWluc3RhbGxlcnMnPkxvY2F0aW5nIFByZS1CdWlsdCBTREsgSW5zdGFsbGVyczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIH4vcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtY29yZTItNjQtcG9reS1saW51eAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0cmFjdCB0aGUgUm9vdCBGaWxlc3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICBhbmQgcHJvdmlkZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGNvbW1hbmQgdGhhdCBleHRyYWN0cyB0aGUgcm9vdAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gZnJvbSBhIHByZXZpb3VzbHkgYnVpbHQgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHRoYXQKKyAgICAgICAgICAgICAgICB3YXMgZG93bmxvYWRlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW5kZXgtZG93bmxvYWRzJz5JbmRleCBvZiBSZWxlYXNlczwvdWxpbms+LgorICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBleHRyYWN0cyB0aGUgcm9vdCBmaWxlc3lzdGVtIGludG8gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUyLTY0LXNhdG88L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUtZXh0cmFjdC1zZGsgfi9Eb3dubG9hZHMvY29yZS1pbWFnZS1zYXRvLXNkay1iZWFnbGVib25lLXlvY3RvLnRhci5iejIgfi9iZWFnbGVib25lLXNhdG8KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNvdWxkIG5vdyBwb2ludCB0byB0aGUgdGFyZ2V0IHN5c3Jvb3QgYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmVhYmxlYm9uZS1zYXRvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+CisgICAgPHRpdGxlPkluc3RhbGxlZCBTdGFuZGFyZCBTREsgRGlyZWN0b3J5IFN0cnVjdHVyZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhlIHJlc3VsdGluZyBkaXJlY3Rvcnkgc3RydWN0dXJlIGFmdGVyCisgICAgICAgIHlvdSBpbnN0YWxsIHRoZSBTdGFuZGFyZCBTREsgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPgorICAgICAgICBTREsgaW5zdGFsbGF0aW9uIHNjcmlwdDoKKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1pbnN0YWxsZWQtc3RhbmRhcmQtc2RrLWRpcmVjdG9yeS5wbmciIHNjYWxlPSI4MCIgYWxpZ249ImNlbnRlciIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGluc3RhbGxlZCBTREsgY29uc2lzdHMgb2YgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGZvciB0aGUgU0RLLAorICAgICAgICBhIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHRhcmdldCwgYSB2ZXJzaW9uIGZpbGUgZm9yIHRoZSB0YXJnZXQsCisgICAgICAgIGFuZCB0aGUgcm9vdCBmaWxlc3lzdGVtICg8ZmlsZW5hbWU+c3lzcm9vdHM8L2ZpbGVuYW1lPikgbmVlZGVkIHRvCisgICAgICAgIGRldmVsb3Agb2JqZWN0cyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdpdGhpbiB0aGUgZmlndXJlLCBpdGFsaWNpemVkIHRleHQgaXMgdXNlZCB0byBpbmRpY2F0ZSByZXBsYWNlYWJsZQorICAgICAgICBwb3J0aW9ucyBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgbmFtZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgIDxyZXBsYWNlYWJsZT5pbnN0YWxsX2RpcjwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgU0RLIGlzIGluc3RhbGxlZC4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBkaXJlY3RvcnkgaXMgPGZpbGVuYW1lPi9vcHQvcG9reS88L2ZpbGVuYW1lPi4KKyAgICAgICAgQW5kLCA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+IHJlcHJlc2VudHMgdGhlIHNwZWNpZmljCisgICAgICAgIHNuYXBzaG90IG9mIHRoZSBTREsgKGUuZy4gPGZpbGVuYW1lPiZESVNUUk87PC9maWxlbmFtZT4pLgorICAgICAgICBGdXJ0aGVybW9yZSwgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IHJlcHJlc2VudHMgdGhlIHRhcmdldAorICAgICAgICBhcmNoaXRlY3R1cmUgKGUuZy4gPGZpbGVuYW1lPmk1ODY8L2ZpbGVuYW1lPikgYW5kCisgICAgICAgIDxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT4gcmVwcmVzZW50cyB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtJ3MKKyAgICAgICAgYXJjaGl0ZWN0dXJlIChlLmcuIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPikuCisgICAgICAgIFRodXMsIHRoZSBjb21wbGV0ZSBuYW1lcyBvZiB0aGUgdHdvIGRpcmVjdG9yaWVzIHdpdGhpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnN5c3Jvb3RzPC9maWxlbmFtZT4gY291bGQgYmUKKyAgICAgICAgPGZpbGVuYW1lPmk1ODYtcG9reS1saW51eDwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+eDg2XzY0LXBva3lzZGstbGludXg8L2ZpbGVuYW1lPiBmb3IgdGhlIHRhcmdldCBhbmQgaG9zdCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+CisgICAgPHRpdGxlPkluc3RhbGxlZCBFeHRlbnNpYmxlIFNESyBEaXJlY3RvcnkgU3RydWN0dXJlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyB0aGUgcmVzdWx0aW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYWZ0ZXIKKyAgICAgICAgeW91IGluc3RhbGwgdGhlIEV4dGVuc2libGUgU0RLIGJ5IHJ1bm5pbmcgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4KKyAgICAgICAgU0RLIGluc3RhbGxhdGlvbiBzY3JpcHQ6CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmciIHNjYWxlPSI4MCIgYWxpZ249ImNlbnRlciIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGluc3RhbGxlZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciB0aGUgZXh0ZW5zaWJsZSBTREsgaXMgcXVpdGUKKyAgICAgICAgZGlmZmVyZW50IHRoYW4gdGhlIGluc3RhbGxlZCBzdHJ1Y3R1cmUgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgIFRoZSBleHRlbnNpYmxlIFNESyBkb2VzIG5vdCBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgcGFydHMgaW4gdGhlCisgICAgICAgIHNhbWUgbWFubmVyIGFzIGRvZXMgdGhlIHN0YW5kYXJkIFNESy4KKyAgICAgICAgVGhlIGV4dGVuc2libGUgU0RLIHVzZXMgYW4gZW1iZWRkZWQgY29weSBvZiB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgIGJ1aWxkIHN5c3RlbSwgd2hpY2ggaGFzIGl0cyBvd24gc3lzcm9vdHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE9mIG5vdGUgaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYXJlIGFuIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAorICAgICAgICBmb3IgdGhlIFNESywgYSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSB0YXJnZXQsIGEgdmVyc2lvbiBmaWxlIGZvcgorICAgICAgICB0aGUgdGFyZ2V0LCBhbmQgbG9nIGZpbGVzIGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICBwcmVwYXJhdGlvbiBzY3JpcHQgcnVuIGJ5IHRoZSBpbnN0YWxsZXIgYW5kIEJpdEJha2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdpdGhpbiB0aGUgZmlndXJlLCBpdGFsaWNpemVkIHRleHQgaXMgdXNlZCB0byBpbmRpY2F0ZSByZXBsYWNlYWJsZQorICAgICAgICBwb3J0aW9ucyBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgbmFtZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgIDxyZXBsYWNlYWJsZT5pbnN0YWxsX2RpcjwvcmVwbGFjZWFibGU+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIFNESworICAgICAgICBpcyBpbnN0YWxsZWQsIHdoaWNoIGlzIDxmaWxlbmFtZT5wb2t5X3NkazwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQsIGFuZAorICAgICAgICA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gcmVwcmVzZW50cyB0aGUgdGFyZ2V0CisgICAgICAgIGFyY2hpdGVjdHVyZSAoZS5nLiA8ZmlsZW5hbWU+aTU4NjwvZmlsZW5hbWU+KS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzwvYXBwZW5kaXg+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1leHRlbnNpYmxlLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1leHRlbnNpYmxlLnJzdAppbmRleCA1ZmY3NWFkLi4wZjkyYWM5IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWV4dGVuc2libGUucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioKIFVzaW5nIHRoZSBFeHRlbnNpYmxlIFNESwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWV4dGVuc2libGUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWV4dGVuc2libGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3M2EwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKQEAgLTAsMCArMSwxODQ3IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3Nkay1leHRlbnNpYmxlJz4KKworICAgIDx0aXRsZT5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgdGhlIGV4dGVuc2libGUgU0RLIGFuZCBob3cgdG8gaW5zdGFsbCBpdC4KKyAgICAgICAgSW5mb3JtYXRpb24gY292ZXJzIHRoZSBwaWVjZXMgb2YgdGhlIFNESywgaG93IHRvIGluc3RhbGwgaXQsIGFuZAorICAgICAgICBwcmVzZW50cyBhIGxvb2sgYXQgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgVGhlIGV4dGVuc2libGUgU0RLIG1ha2VzIGl0IGVhc3kgdG8gYWRkIG5ldyBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcworICAgICAgICB0byBhbiBpbWFnZSwgbW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIGNvbXBvbmVudCwgdGVzdAorICAgICAgICBjaGFuZ2VzIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUsIGFuZCBlYXNlIGludGVncmF0aW9uIGludG8gdGhlIHJlc3Qgb2YKKyAgICAgICAgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgRm9yIGEgc2lkZS1ieS1zaWRlIGNvbXBhcmlzb24gb2YgbWFpbiBmZWF0dXJlcyBzdXBwb3J0ZWQgZm9yIGFuCisgICAgICAgICAgICBleHRlbnNpYmxlIFNESyBhcyBjb21wYXJlZCB0byBhIHN0YW5kYXJkIFNESywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1tYW51YWwtaW50cm8nPkludHJvZHVjdGlvbjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSB0aHJvdWdoCisgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4sIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBtYWtlIHVzZSBvZiB0aGUKKyAgICAgICAgdG9vbGNoYWluIGRpcmVjdGx5LCBmb3IgZXhhbXBsZSBmcm9tIE1ha2VmaWxlIGFuZCBBdXRvdG9vbHMuCisgICAgICAgIFNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay13b3JraW5nLXByb2plY3RzJz5Vc2luZyB0aGUgU0RLIFRvb2xjaGFpbiBEaXJlY3RseTwvbGluaz4iCisgICAgICAgIGNoYXB0ZXIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3Nkay1leHRlbnNpYmxlLXNkay1pbnRybyc+CisgICAgICAgIDx0aXRsZT5XaHkgdXNlIHRoZSBFeHRlbnNpYmxlIFNESyBhbmQgV2hhdCBpcyBpbiBJdD88L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGV4dGVuc2libGUgU0RLIHByb3ZpZGVzIGEgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGFuZAorICAgICAgICAgICAgbGlicmFyaWVzIHRhaWxvcmVkIHRvIHRoZSBjb250ZW50cyBvZiBhIHNwZWNpZmljIGltYWdlLgorICAgICAgICAgICAgWW91IHdvdWxkIHVzZSB0aGUgRXh0ZW5zaWJsZSBTREsgaWYgeW91IHdhbnQgYSB0b29sY2hhaW4gZXhwZXJpZW5jZQorICAgICAgICAgICAgc3VwcGxlbWVudGVkIHdpdGggdGhlIHBvd2VyZnVsIHNldCBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb21tYW5kcyB0YWlsb3JlZCBmb3IgdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBpbnN0YWxsZWQgZXh0ZW5zaWJsZSBTREsgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmaWxlcyBhbmQKKyAgICAgICAgICAgIGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgQmFzaWNhbGx5LCBpdCBjb250YWlucyBhbiBTREsgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCBzb21lCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLCBhbiBpbnRlcm5hbCBidWlsZCBzeXN0ZW0sIGFuZCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZGstaW5zdGFsbGluZy10aGUtZXh0ZW5zaWJsZS1zZGsnPgorICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIGluc3RhbGwgdGhlIFNESyBvbiB5b3VyCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+QnVpbGQgSG9zdDwvdWxpbms+CisgICAgICAgICAgICBieSBydW5uaW5nIHRoZSA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGluc3RhbGxhdGlvbiBzY3JpcHQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZG93bmxvYWQgYSB0YXJiYWxsIGluc3RhbGxlciwgd2hpY2ggaW5jbHVkZXMgdGhlCisgICAgICAgICAgICBwcmUtYnVpbHQgdG9vbGNoYWluLCB0aGUgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc2NyaXB0LCB0aGUgaW50ZXJuYWwgYnVpbGQgc3lzdGVtLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgYW5kIHN1cHBvcnQgZmlsZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19UT09MQ0hBSU5fRExfVVJMOyc+dG9vbGNoYWluPC91bGluaz4KKyAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlIEluZGV4IG9mIFJlbGVhc2VzLgorICAgICAgICAgICAgVG9vbGNoYWlucyBhcmUgYXZhaWxhYmxlIGZvciBzZXZlcmFsIDMyLWJpdCBhbmQgNjQtYml0CisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIHdpdGggdGhlIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywKKyAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgIFRoZSB0b29sY2hhaW5zIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGFyZSBiYXNlZCBvZmYgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2VzIGFuZCBjb250YWluCisgICAgICAgICAgICBsaWJyYXJpZXMgYXBwcm9wcmlhdGUgZm9yIGRldmVsb3BpbmcgYWdhaW5zdCB0aGF0IGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbmFtZXMgb2YgdGhlIHRhcmJhbGwgaW5zdGFsbGVyIHNjcmlwdHMgYXJlIHN1Y2ggdGhhdCBhCisgICAgICAgICAgICBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBob3N0IHN5c3RlbSBhcHBlYXJzIGZpcnN0IGluIHRoZQorICAgICAgICAgICAgZmlsZW5hbWUgYW5kIHRoZW4gaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBzdHJpbmcKKyAgICAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgIEFuIGV4dGVuc2libGUgU0RLIGhhcyB0aGUgc3RyaW5nICItZXh0IiBhcyBwYXJ0IG9mIHRoZSBuYW1lLgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBnZW5lcmFsIGZvcm06CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3ktZ2xpYmMtPHJlcGxhY2VhYmxlPmhvc3Rfc3lzdGVtPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmltYWdlX3R5cGU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+LXRvb2xjaGFpbi1leHQtPHJlcGxhY2VhYmxlPnJlbGVhc2VfdmVyc2lvbjwvcmVwbGFjZWFibGU+LnNoCisKKyAgICAgV2hlcmU6CisgICAgICAgICA8cmVwbGFjZWFibGU+aG9zdF9zeXN0ZW08L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW06CisKKyAgICAgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdDoKKworICAgICAgICAgICAgICAgICAgICBjb3JlLWltYWdlLXNhdG8gb3IgY29yZS1pbWFnZS1taW5pbWFsCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0dW5lZCB0YXJnZXQgYXJjaGl0ZWN0dXJlOgorCisgICAgICAgICAgICAgICAgICAgIGFhcmNoNjQsIGFybXY1ZSwgY29yZTItNjQsIGk1ODYsIG1pcHMzMnIyLCBtaXBzNjQsIHBwYzc0MDAsIG9yIGNvcnRleGE4aGYtbmVvbgorCisgICAgICAgICA8cmVwbGFjZWFibGU+cmVsZWFzZV92ZXJzaW9uPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSByZWxlYXNlIG51bWJlciBvZiB0aGUgWW9jdG8gUHJvamVjdDoKKworICAgICAgICAgICAgICAgICAgICAmRElTVFJPOywgJkRJU1RSTzsrc25hcHNob3QKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIFNESyBpbnN0YWxsZXIgaXMgZm9yIGEgNjQtYml0CisgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0IHN5c3RlbSBhbmQgYSBpNTg2LXR1bmVkIHRhcmdldCBhcmNoaXRlY3R1cmUKKyAgICAgICAgICAgIGJhc2VkIG9mZiB0aGUgU0RLIGZvciA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICB1c2luZyB0aGUgY3VycmVudCAmRElTVFJPOyBzbmFwc2hvdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLWk1ODYtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQXMgYW4gYWx0ZXJuYXRpdmUgdG8gZG93bmxvYWRpbmcgYW4gU0RLLCB5b3UgY2FuIGJ1aWxkIHRoZQorICAgICAgICAgICAgICAgIFNESyBpbnN0YWxsZXIuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBTREsgYW5kIHRvb2xjaGFpbnMgYXJlIHNlbGYtY29udGFpbmVkIGFuZCBieSBkZWZhdWx0IGFyZQorICAgICAgICAgICAgaW5zdGFsbGVkIGludG8gdGhlIDxmaWxlbmFtZT5wb2t5X3NkazwvZmlsZW5hbWU+IGZvbGRlciBpbiB5b3VyCisgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFlvdSBjYW4gY2hvb3NlIHRvIGluc3RhbGwgdGhlIGV4dGVuc2libGUgU0RLIGluIGFueSBsb2NhdGlvbiB3aGVuCisgICAgICAgICAgICB5b3UgcnVuIHRoZSBpbnN0YWxsZXIuCisgICAgICAgICAgICBIb3dldmVyLCBiZWNhdXNlIGZpbGVzIG5lZWQgdG8gYmUgd3JpdHRlbiB1bmRlciB0aGF0IGRpcmVjdG9yeQorICAgICAgICAgICAgZHVyaW5nIHRoZSBub3JtYWwgY291cnNlIG9mIG9wZXJhdGlvbiwgdGhlIGxvY2F0aW9uIHlvdSBjaG9vc2UKKyAgICAgICAgICAgIGZvciBpbnN0YWxsYXRpb24gbXVzdCBiZSB3cml0YWJsZSBmb3Igd2hpY2hldmVyCisgICAgICAgICAgICB1c2VycyBuZWVkIHRvIHVzZSB0aGUgU0RLLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgc2hvd3MgaG93IHRvIHJ1biB0aGUgaW5zdGFsbGVyIGdpdmVuIGEKKyAgICAgICAgICAgIHRvb2xjaGFpbiB0YXJiYWxsIGZvciBhIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQgaG9zdCBzeXN0ZW0gYW5kCisgICAgICAgICAgICBhIDY0LWJpdCB4ODYgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgIFRoZSBleGFtcGxlIGFzc3VtZXMgdGhlIFNESyBpbnN0YWxsZXIgaXMgbG9jYXRlZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzLzwvZmlsZW5hbWU+IGFuZCBoYXMgZXhlY3V0aW9uIHJpZ2h0cy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGludG8gd2hpY2ggeW91IGFyZSBpbnN0YWxsaW5nIHRoZSBTREssIHRoZSBpbnN0YWxsZXIKKyAgICAgICAgICAgICAgICBub3RpZmllcyB5b3UgYW5kIGV4aXRzLgorICAgICAgICAgICAgICAgIEZvciB0aGF0IGNhc2UsIHNldCB1cCB0aGUgcHJvcGVyIHBlcm1pc3Npb25zIGluIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBhbmQgcnVuIHRoZSBpbnN0YWxsZXIgYWdhaW4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi9Eb3dubG9hZHMvcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1taW5pbWFsLWNvcmUyLTY0LXRvb2xjaGFpbi1leHQtMi41LnNoCisgICAgIFBva3kgKFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIERpc3RybykgRXh0ZW5zaWJsZSBTREsgaW5zdGFsbGVyIHZlcnNpb24gMi41CisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIEVudGVyIHRhcmdldCBkaXJlY3RvcnkgZm9yIFNESyAoZGVmYXVsdDogfi9wb2t5X3Nkayk6CisgICAgIFlvdSBhcmUgYWJvdXQgdG8gaW5zdGFsbCB0aGUgU0RLIHRvICIvaG9tZS9zY290dHJpZi9wb2t5X3NkayIuIFByb2NlZWQgW1kvbl0/IFkKKyAgICAgRXh0cmFjdGluZyBTREsuLi4uLi4uLi4uLi4uLmRvbmUKKyAgICAgU2V0dGluZyBpdCB1cC4uLgorICAgICBFeHRyYWN0aW5nIGJ1aWxkdG9vbHMuLi4KKyAgICAgUHJlcGFyaW5nIGJ1aWxkIHN5c3RlbS4uLgorICAgICBQYXJzaW5nIHJlY2lwZXM6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDo1MgorICAgICBJbml0aWFsaXNpbmcgdGFza3M6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHk6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBMb2FkaW5nIGNhY2hlOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBJbml0aWFsaXNpbmcgdGFza3M6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBkb25lCisgICAgIFNESyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2V0IHVwIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkLgorICAgICBFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLgorICAgICAgJCAuIC9ob21lL3Njb3R0cmlmL3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWNvcmUyLTY0LXBva3ktbGludXgKKworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Nkay1ydW5uaW5nLXRoZS1leHRlbnNpYmxlLXNkay1lbnZpcm9ubWVudC1zZXR1cC1zY3JpcHQnPgorICAgICAgICA8dGl0bGU+UnVubmluZyB0aGUgRXh0ZW5zaWJsZSBTREsgRW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIFNESyBpbnN0YWxsZWQsIHlvdSBtdXN0IHJ1biB0aGUgU0RLIGVudmlyb25tZW50CisgICAgICAgICAgICBzZXR1cCBzY3JpcHQgYmVmb3JlIHlvdSBjYW4gYWN0dWFsbHkgdXNlIHRoZSBTREsuCisgICAgICAgICAgICBUaGlzIHNldHVwIHNjcmlwdCByZXNpZGVzIGluIHRoZSBkaXJlY3RvcnkgeW91IGNob3NlIHdoZW4geW91CisgICAgICAgICAgICBpbnN0YWxsZWQgdGhlIFNESywgd2hpY2ggaXMgZWl0aGVyIHRoZSBkZWZhdWx0CisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reV9zZGs8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb3IgdGhlIGRpcmVjdG9yeSB5b3UKKyAgICAgICAgICAgIGNob3NlIGR1cmluZyBpbnN0YWxsYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlZm9yZSBydW5uaW5nIHRoZSBzY3JpcHQsIGJlIHN1cmUgaXQgaXMgdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICBhcmNoaXRlY3R1cmUgZm9yIHdoaWNoIHlvdSBhcmUgZGV2ZWxvcGluZy4KKyAgICAgICAgICAgIEVudmlyb25tZW50IHNldHVwIHNjcmlwdHMgYmVnaW4gd2l0aCB0aGUgc3RyaW5nCisgICAgICAgICAgICAiPGZpbGVuYW1lPmVudmlyb25tZW50LXNldHVwPC9maWxlbmFtZT4iIGFuZCBpbmNsdWRlIGFzIHBhcnQgb2YKKyAgICAgICAgICAgIHRoZWlyIG5hbWUgdGhlIHR1bmVkIHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHNldCB0aGUgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgICAgIHRvIHdoZXJlIHRoZSBTREsgd2FzIGluc3RhbGxlZCBhbmQgdGhlbiBzb3VyY2UgdGhlIGVudmlyb25tZW50CisgICAgICAgICAgICBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBzZXR1cCBzY3JpcHQgaXMgZm9yIGFuIElBLWJhc2VkCisgICAgICAgICAgICB0YXJnZXQgbWFjaGluZSB1c2luZyBpNTg2IHR1bmluZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAvaG9tZS9zY290dHJpZi9wb2t5X3NkaworICAgICAkIHNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1jb3JlMi02NC1wb2t5LWxpbnV4CisgICAgIFNESyBlbnZpcm9ubWVudCBub3cgc2V0IHVwOyBhZGRpdGlvbmFsbHkgeW91IG1heSBub3cgcnVuIGRldnRvb2wgdG8gcGVyZm9ybSBkZXZlbG9wbWVudCB0YXNrcy4KKyAgICAgUnVuIGRldnRvb2wgLS1oZWxwIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBSdW5uaW5nIHRoZSBzZXR1cCBzY3JpcHQgZGVmaW5lcyBtYW55IGVudmlyb25tZW50IHZhcmlhYmxlcyBuZWVkZWQKKyAgICAgICAgICAgIGluIG9yZGVyIHRvIHVzZSB0aGUgU0RLIChlLmcuIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ0MnPjxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEQnPjxmaWxlbmFtZT5MRDwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2VlIGFsbCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoZSBzY3JpcHQKKyAgICAgICAgICAgIGV4cG9ydHMsIGV4YW1pbmUgdGhlIGluc3RhbGxhdGlvbiBmaWxlIGl0c2VsZi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaW4gWW91ciBTREsgV29ya2Zsb3c8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGNvcm5lcnN0b25lIG9mIHRoZSBleHRlbnNpYmxlIFNESyBpcyBhIGNvbW1hbmQtbGluZSB0b29sCisgICAgICAgICAgICBjYWxsZWQgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoaXMgdG9vbCBwcm92aWRlcyBhIG51bWJlciBvZiBmZWF0dXJlcyB0aGF0IGhlbHAKKyAgICAgICAgICAgIHlvdSBidWlsZCwgdGVzdCBhbmQgcGFja2FnZSBzb2Z0d2FyZSB3aXRoaW4gdGhlIGV4dGVuc2libGUgU0RLLCBhbmQKKyAgICAgICAgICAgIG9wdGlvbmFsbHkgaW50ZWdyYXRlIGl0IGludG8gYW4gaW1hZ2UgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgVGhlIHVzZSBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGlzIG5vdCBsaW1pdGVkIHRvCisgICAgICAgICAgICAgICAgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gaGVscCB5b3UgZWFzaWx5CisgICAgICAgICAgICAgICAgZGV2ZWxvcCBhbnkgcHJvamVjdCB3aG9zZSBidWlsZCBvdXRwdXQgbXVzdCBiZSBwYXJ0IG9mIGFuCisgICAgICAgICAgICAgICAgaW1hZ2UgYnVpbHQgdXNpbmcgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZCBsaW5lIGlzIG9yZ2FuaXplZAorICAgICAgICAgICAgc2ltaWxhcmx5IHRvCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdCc+R2l0PC91bGluaz4gaW4gdGhhdCBpdAorICAgICAgICAgICAgaGFzIGEgbnVtYmVyIG9mIHN1Yi1jb21tYW5kcyBmb3IgZWFjaCBmdW5jdGlvbi4KKyAgICAgICAgICAgIFlvdSBjYW4gcnVuIDxmaWxlbmFtZT5kZXZ0b29sIC0taGVscDwvZmlsZW5hbWU+IHRvIHNlZSBhbGwgdGhlCisgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWRldnRvb2wtcmVmZXJlbmNlJz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Jm5ic3A7UXVpY2sgUmVmZXJlbmNlPC91bGluaz4iCisgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gcXVpY2sgcmVmZXJlbmNlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaHJlZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHN1YmNvbW1hbmRzIGV4aXN0IHRoYXQgcHJvdmlkZQorICAgICAgICAgICAgZW50cnktcG9pbnRzIGludG8gZGV2ZWxvcG1lbnQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIEFzc2lzdHMgaW4gYWRkaW5nIG5ldyBzb2Z0d2FyZSB0byBiZSBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgU2V0cyB1cCBhbiBlbnZpcm9ubWVudCB0byBlbmFibGUgeW91IHRvIG1vZGlmeSB0aGUgc291cmNlIG9mCisgICAgICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIGNvbXBvbmVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFVwZGF0ZXMgYW4gZXhpc3RpbmcgcmVjaXBlIHNvIHRoYXQgeW91IGNhbiBidWlsZCBpdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgYW4gdXBkYXRlZCBzZXQgb2Ygc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgQXMgd2l0aCB0aGUgYnVpbGQgc3lzdGVtLCAicmVjaXBlcyIgcmVwcmVzZW50IHNvZnR3YXJlIHBhY2thZ2VzCisgICAgICAgICAgICB3aXRoaW4gPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFdoZW4geW91IHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiwgYSByZWNpcGUgaXMKKyAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgY3JlYXRlZC4KKyAgICAgICAgICAgIFdoZW4geW91IHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiwgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgZXhpc3RpbmcgcmVjaXBlIGlzIHVzZWQgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIGdldCB0aGUKKyAgICAgICAgICAgIHNvdXJjZSBjb2RlIGFuZCBob3cgdG8gcGF0Y2ggaXQuCisgICAgICAgICAgICBJbiBib3RoIGNhc2VzLCBhbiBlbnZpcm9ubWVudCBpcyBzZXQgdXAgc28gdGhhdCB3aGVuIHlvdSBidWlsZCB0aGUKKyAgICAgICAgICAgIHJlY2lwZSBhIHNvdXJjZSB0cmVlIHRoYXQgaXMgdW5kZXIgeW91ciBjb250cm9sIGlzIHVzZWQgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgIGFsbG93IHlvdSB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBhcyBkZXNpcmVkLgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgbmV3IHJlY2lwZXMgYW5kIHRoZSBzb3VyY2UgZ28gaW50byBhICJ3b3Jrc3BhY2UiCisgICAgICAgICAgICBkaXJlY3RvcnkgdW5kZXIgdGhlIFNESy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJlc2VudHMgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB3b3JrZmxvd3MuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLXVzZS1kZXZ0b29sLXRvLWFkZC1hbi1hcHBsaWNhdGlvbic+CisgICAgICAgICAgICA8dGl0bGU+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IHRvIEFkZCBhbiBBcHBsaWNhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGdlbmVyYXRlcworICAgICAgICAgICAgICAgIGEgbmV3IHJlY2lwZSBiYXNlZCBvbiBleGlzdGluZyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgdGFrZXMgYWR2YW50YWdlIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldnRvb2wtdGhlLXdvcmtzcGFjZS1sYXllci1zdHJ1Y3R1cmUnPndvcmtzcGFjZTwvdWxpbms+CisgICAgICAgICAgICAgICAgbGF5ZXIgdGhhdCBtYW55IDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZHMKKyAgICAgICAgICAgICAgICB1c2UuCisgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgaXMgZmxleGlibGUgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBleHRyYWN0IHNvdXJjZQorICAgICAgICAgICAgICAgIGNvZGUgaW50byBib3RoIHRoZSB3b3Jrc3BhY2Ugb3IgYSBzZXBhcmF0ZSBsb2NhbCBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgIGFuZCB0byB1c2UgZXhpc3RpbmcgY29kZSB0aGF0IGRvZXMgbm90IG5lZWQgdG8gYmUgZXh0cmFjdGVkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIHNjZW5hcmlvLCB0aGUgYXJndW1lbnRzIGFuZCBvcHRpb25zCisgICAgICAgICAgICAgICAgeW91IHVzZSB3aXRoIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGZvcm0gZGlmZmVyZW50CisgICAgICAgICAgICAgICAgY29tYmluYXRpb25zLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBjb21tb24gZGV2ZWxvcG1lbnQgZmxvd3MKKyAgICAgICAgICAgICAgICB5b3Ugd291bGQgdXNlIHdpdGggdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZyIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdlbmVyYXRpbmcgdGhlIE5ldyBSZWNpcGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0b3AgcGFydCBvZiB0aGUgZmxvdyBzaG93cyB0aHJlZSBzY2VuYXJpb3MgYnkgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjb3VsZCB1c2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uIGV4aXN0aW5nIHNvdXJjZSBjb2RlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gYSBzaGFyZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsIGZvciBvdGhlciBkZXZlbG9wZXJzIHRvIGJlIHJlc3BvbnNpYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaW91cyBhcmVhcyBvZiBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFzIGEgZGV2ZWxvcGVyLCB5b3UgYXJlIHByb2JhYmx5IGludGVyZXN0ZWQgaW4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc291cmNlIGNvZGUgYXMgcGFydCBvZiB5b3VyIGRldmVsb3BtZW50IHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgaXMgYWNjZXNzIHRvIHRoZSBjb2RlLCBhIHJlY2lwZSwgYW5kIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWQgYXJlYSBpbiB3aGljaCB0byBkbyB5b3VyIHdvcmsuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gdGhlIGRpYWdyYW0sIHRocmVlIHBvc3NpYmxlIHNjZW5hcmlvcworICAgICAgICAgICAgICAgICAgICAgICAgZmVlZCBpbnRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiB3b3JrZmxvdzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGVmdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVmdCBzY2VuYXJpbyBpbiB0aGUgZmlndXJlIHJlcHJlc2VudHMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24gc2l0dWF0aW9uIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdCBsb2NhbGx5IGFuZCBuZWVkcyB0byBiZSBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgc291cmNlIGNvZGUgaXMgZXh0cmFjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkZWZhdWx0IHdvcmtzcGFjZSAtIHlvdSBkbyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudCB0aGUgZmlsZXMgaW4gc29tZSBzcGVjaWZpYyBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRzaWRlIG9mIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIGV2ZXJ5dGhpbmcgeW91IG5lZWQgd2lsbCBiZSBsb2NhdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3b3Jrc3BhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGFkZCA8cmVwbGFjZWFibGU+cmVjaXBlIGZldGNodXJpPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgY29tbWFuZCwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyB0aGUgdXBzdHJlYW0gc291cmNlIGZpbGVzIGludG8gYSBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zb3VyY2VzPC9maWxlbmFtZT4gZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCB0aGVuIGNyZWF0ZXMgYSByZWNpcGUgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+IGFuZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgYXBwZW5kIGZpbGUgaW4gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiwgdGhlIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgYW4gYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIHJlY2lwZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NaWRkbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1pZGRsZSBzY2VuYXJpbyBpbiB0aGUgZmlndXJlIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50cyBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgZXhpc3QgbG9jYWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29kZSBpcyBhZ2FpbiB1cHN0cmVhbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkIHRvIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgYXJlYSAtIHRoaXMgdGltZSBvdXRzaWRlIG9mIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiByZXF1aXJlZCwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx3YXlzIGNyZWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgR2l0IHJlcG9zaXRvcnkgbG9jYWxseSBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpZGVudGlmaWVzIHdoZXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgbG9jYXRlIHRoZSBleHRyYWN0ZWQgY29kZSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNwZWNpZnkgYW4gZW1wdHkgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlIGZldGNodXJpPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgc291cmNlIGNvZGUgaXMgcHVsbGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmZldGNodXJpPC9yZXBsYWNlYWJsZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RlZCBpbnRvIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gYXMgYSBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHdvcmtzcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjcmVhdGVzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5hbWVkIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGFuIGFzc29jaWF0ZWQgYXBwZW5kIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJpZ2h0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByaWdodCBzY2VuYXJpbyBpbiB0aGUgZmlndXJlIHJlcHJlc2VudHMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24gd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBwcmVwYXJlZCBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHByb3ZpZGVzIGEgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIGFuZCBpZGVudGlmaWVzIHRoZSBleGlzdGluZyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZSBsb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYWRkIDxyZXBsYWNlYWJsZT5yZWNpcGUgc3JjdHJlZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgZXhhbWluZXMgdGhlIHNvdXJjZSBjb2RlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiBmb3IgdGhlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlcyB0aGUgcmVjaXBlIGludG8gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlIGV4dHJhY3RlZCBzb3VyY2UgY29kZSBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cywgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdG8gcmVsb2NhdGUgdGhlIHNvdXJjZSBjb2RlIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZSAtIG9ubHkgdGhlIG5ldyByZWNpcGUgaXMgcGxhY2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB3b3Jrc3BhY2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzaWRlIGZyb20gYSByZWNpcGUgZm9sZGVyLCB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNyZWF0ZXMgYW4gYXNzb2NpYXRlZCBhcHBlbmQgZm9sZGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZXMgYW4gaW5pdGlhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgd2l0aGluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGVkaXQtcmVjaXBlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9wZW4gdXAgdGhlIGVkaXRvciBhcyBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiRFRElUT1I8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmeSB0aGUgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB3aXRoaW4gdGhlIGVkaXRvciwgeW91IGNhbiBtYWtlIG1vZGlmaWNhdGlvbnMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgdGhhdCB0YWtlIGFmZmVjdCB3aGVuIHlvdSBidWlsZCBpdCBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIFJlY2lwZSBvciBSZWJ1aWxkIHRoZSBJbWFnZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgc3RlcCB5b3UgdGFrZSBkZXBlbmRzIG9uIHdoYXQgeW91IGFyZSBnb2luZworICAgICAgICAgICAgICAgICAgICAgICAgdG8gZG8gd2l0aCB0aGUgbmV3IGNvZGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byBldmVudHVhbGx5IG1vdmUgdGhlIGJ1aWxkIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCBoYXJkd2FyZSwgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T24gdGhlIG90aGVyIGhhbmQsIGlmIHlvdSB3YW50IGFuIGltYWdlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIHRoZSByZWNpcGUncyBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbW1lZGlhdGUgZGVwbG95bWVudCBvbnRvIGEgZGV2aWNlIChlLmcuIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBwdXJwb3NlcyksIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQtaW1hZ2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBidWlsZCBvdXQgeW91ciByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBzZWUgaWYgdGhlIHJlc3VsdGluZyBidWlsZCBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgYXNzdW1lcyB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0aGF0IGlzIGFscmVhZHkgZWl0aGVyIHJ1bm5pbmcgaW4gUUVNVSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJ1bm5pbmcgb24gYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGl0IGlzIGFzc3VtZWQgdGhhdCBmb3IgZGVwbG95bWVudCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0byB0aGUgdGFyZ2V0LCBTU0ggaXMgaW5zdGFsbGVkIGluIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCwgaWYgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgZGVwbG95LXRhcmdldCA8cmVwbGFjZWFibGU+cmVjaXBlIHRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIGEgbGl2ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgcnVubmluZyBhcyBhbiBTU0ggc2VydmVyLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiwgb2YgY291cnNlLCBhbHNvIGRlcGxveSB0aGUgaW1hZ2UgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCB0byBhY3R1YWwgaGFyZHdhcmUgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGRvZXMgbm90IHByb3ZpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgc3BlY2lmaWMgY29tbWFuZCB0aGF0IGFsbG93cyB5b3UgdG8gZGVwbG95IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdG8gYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgYW55IHBhdGNoZXMgY29ycmVzcG9uZGluZyB0byBjb21taXRzIGluIHRoZSBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIG1vdmVzIHRoZSBuZXcgcmVjaXBlIHRvIGEgbW9yZSBwZXJtYW5lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLCBhbmQgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0IHRoZSByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGZpbmlzaCA8cmVwbGFjZWFibGU+cmVjaXBlIGxheWVyPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSB3YW50IHRvIHR1cm4gaW50byBwYXRjaGVzIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgdG8gdGhlIEdpdCByZXBvc2l0b3J5IGluIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIG1lbnRpb25lZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjb21tYW5kIG1vdmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgcmVjaXBlIHRvIGl0cyBwZXJtYW5lbnQgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGEgZmluYWwgcHJvY2VzcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZSBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHN0YW5kYXJkIGxheWVycyBhbmQgdGhlIHVwc3RyZWFtIHNvdXJjZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZWQgc28gdGhhdCB5b3UgY2FuIGJ1aWxkIHRoZSByZWNpcGUgZnJvbSB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgYXJlYXMgcmF0aGVyIHRoYW4gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBwdXQgdGhpbmdzIGJhY2sgc2hvdWxkIHlvdSBkZWNpZGUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHdhbnQgdG8gcHJvY2VlZCB3aXRoIHlvdXIgd29yay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gdXNlIHRoaXMgY29tbWFuZCwgcmVhbGl6ZSB0aGF0IHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIGlzIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLWRldnRvb2wtdXNlLWRldnRvb2wtbW9kaWZ5LXRvLW1vZGlmeS10aGUtc291cmNlLW9mLWFuLWV4aXN0aW5nLWNvbXBvbmVudCc+CisgICAgICAgICAgICA8dGl0bGU+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IHRvIE1vZGlmeSB0aGUgU291cmNlIG9mIGFuIEV4aXN0aW5nIENvbXBvbmVudDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kIHByZXBhcmVzIHRoZQorICAgICAgICAgICAgICAgIHdheSB0byB3b3JrIG9uIGV4aXN0aW5nIGNvZGUgdGhhdCBhbHJlYWR5IGhhcyBhIGxvY2FsIHJlY2lwZSBpbgorICAgICAgICAgICAgICAgIHBsYWNlIHRoYXQgaXMgdXNlZCB0byBidWlsZCB0aGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgaXMgZmxleGlibGUgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBleHRyYWN0IGNvZGUKKyAgICAgICAgICAgICAgICBmcm9tIGFuIHVwc3RyZWFtIHNvdXJjZSwgc3BlY2lmeSB0aGUgZXhpc3RpbmcgcmVjaXBlLCBhbmQKKyAgICAgICAgICAgICAgICBrZWVwIHRyYWNrIG9mIGFuZCBnYXRoZXIgYW55IHBhdGNoIGZpbGVzIGZyb20gb3RoZXIgZGV2ZWxvcGVycworICAgICAgICAgICAgICAgIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29kZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhciBzY2VuYXJpbywgdGhlIGFyZ3VtZW50cyBhbmQgb3B0aW9ucworICAgICAgICAgICAgICAgIHlvdSB1c2Ugd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBmb3JtIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9ucy4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgY29tbW9uIGRldmVsb3BtZW50IGZsb3dzIGZvciB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJpbmcgdG8gTW9kaWZ5IHRoZSBDb2RlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wIHBhcnQgb2YgdGhlIGZsb3cgc2hvd3MgdGhyZWUgc2NlbmFyaW9zIGJ5IHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY291bGQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVwYXJlIHRvIHdvcmsgb24gc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBzY2VuYXJpbyBhc3N1bWVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBleGlzdHMgbG9jYWxseSBpbiBhIGxheWVyIGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc291cmNlIGZpbGVzIGV4aXN0IGVpdGhlciB1cHN0cmVhbSBpbiBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bi1leHRyYWN0ZWQgc3RhdGUgb3IgbG9jYWxseSBpbiBhIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGVkIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHR5cGljYWwgc2l0dWF0aW9uIGlzIHdoZXJlIGFub3RoZXIgZGV2ZWxvcGVyIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhIGxheWVyIGZvciB1c2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIHJlY2lwZSBhbHJlYWR5IHJlc2lkZXMgaW4gdGhhdCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVpciBzb3VyY2UgY29kZSBpcyByZWFkaWx5IGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyIHVwc3RyZWFtIG9yIGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIHNpdHVhdGlvbiB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgZXhpc3QgbG9jYWxseSBhbmQgaXQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYW4gdXBzdHJlYW0gc291cmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIHNvdXJjZSBpcyBleHRyYWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZGVmYXVsdCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZSBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSwgaW4gdGhpcyBzY2VuYXJpbywgaXMgaW4gaXRzIG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bGF5ZXJuYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIGlkZW50aWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQsIGJ5IGRlZmF1bHQsIGV4dHJhY3RzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIG1vZGlmeSA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT5sb2NhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGggdGhpcyBzY2VuYXJpbywgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZXh0cmFjdCB0aGUgc291cmNlIGZpbGVzIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpbnRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgR2l0IHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGV4dHJhY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgaXMgdGhlIGRlZmF1bHQgYXJlYSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIGNvbW1hbmQgc2V0cyB1cCBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhbmQgYW4gYXBwZW5kIGZpbGUgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2Ugd2hpbGUgdGhlIHJlY2lwZSByZW1haW5zIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsb2NhdGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWRkaXRpb25hbGx5LCBpZiB5b3UgaGF2ZSBhbnkgbm9uLXBhdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGZpbGVzIChpLmUuIGZpbGVzIHJlZmVycmVkIHRvIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiBlbnRyaWVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IGV4Y2x1ZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5wYXRjaC88L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4pLCB0aGVzZSBmaWxlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIHRvIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2NhbC1maWxlczwvZmlsZW5hbWU+IGZvbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGUgbmV3bHkgY3JlYXRlZCBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weWluZyB0aGUgZmlsZXMgaGVyZSBnaXZlcyB5b3UgYSBjb252ZW5pZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgZnJvbSB3aGljaCB5b3UgY2FuIG1vZGlmeSB0aGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB5b3UgbWFrZSB0byB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGJ1aWxkIHRoZSBuZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgeW91IGJ1aWxkIHRoZSBzb2Z0d2FyZSBqdXN0IGFzIGFyZSBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHlvdSBtaWdodCBoYXZlIG1hZGUgdG8gdGhlIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBhbHNvIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgaXMgYWdhaW4gdXBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZCB0byBzb21lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGFyZWEgYXMgYSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSwgaW4gdGhpcyBzY2VuYXJpbywgaXMgYWdhaW4gbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluIGl0cyBvd24gbGF5ZXIgb3V0c2lkZSB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHRlbGxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdGhlIHJlY2lwZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvIHdvcmsgYW5kLCBpbiB0aGlzIGNhc2UsIGlkZW50aWZpZXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBhcmVhIGZvciB0aGUgZXh0cmFjdGVkIHNvdXJjZSBmaWxlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBvdXRzaWRlIG9mIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBtb2RpZnkgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcHJvdmlkZSBhIFVSTCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgd2l0aCBhbGwgZXh0cmFjdGlvbnMsIHRoZSBjb21tYW5kIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSdzIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cyB0byBsb2NhdGUgdGhlIHNvdXJjZSBmaWxlcyBhbmQgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbi1wYXRjaCBmaWxlcyBhcmUgY29waWVkIHRvIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2NhbC1maWxlczwvZmlsZW5hbWU+IGZvbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGUgbmV3bHkgY3JlYXRlZCBzb3VyY2UgdHJlZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgZmlsZXMgYXJlIGxvY2F0ZWQsIHRoZSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgZXh0cmFjdHMgdGhlbSBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiB3b3Jrc3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY3JlYXRlcyBhbiBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSByZW1haW5zIGluIGl0cyBvcmlnaW5hbCBsb2NhdGlvbiBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcyBhcmUgZXh0cmFjdGVkIHRvIHRoZSBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgcHJvdmlkZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJpZ2h0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByaWdodCBzY2VuYXJpbyBpbiB0aGUgZmlndXJlIHJlcHJlc2VudHMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24gd2hlcmUgdGhlIHNvdXJjZSB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+KSBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBsb2NhbGx5IGFzIGEgcHJldmlvdXNseSBleHRyYWN0ZWQgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgcmVjaXBlIGFsc28gZXhpc3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V3aGVyZSBsb2NhbGx5IGluIGl0cyBvd24gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggd2hpY2ggdG8gd29yaywgdXNlcyB0aGUgIi1uIiBvcHRpb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGUgc291cmNlIGRvZXMgbm90IG5lZWQgdG8gYmUgZXh0cmFjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlcyA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50IHRvIHRoZSBwcmV2aW91c2x5IGV4dHJhY3RlZCBzb3VyY2UgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIG1vZGlmeSAtbiA8cmVwbGFjZWFibGU+cmVjaXBlIHNyY3RyZWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiBhbiA8ZmlsZW5hbWU+b2UtbG9jYWwtZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3RvcnkgaGFwcGVucyB0byBleGlzdCBhbmQgaXQgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLXBhdGNoIGZpbGVzLCB0aGUgZmlsZXMgYXJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSBzdWJkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBydW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIGFueSBub24tcGF0Y2ggZmlsZXMgdGhhdCBtaWdodCBleGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IHRvIHRoZSByZWNpcGUgYXJlIHJlbW92ZWQgYmVjYXVzZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJzIHRvIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBkZWxldGVkIHRob3NlIGZpbGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaGVzLCBpdCBjcmVhdGVzIG9ubHkgYW4gYXBwZW5kIGZpbGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgaW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGFuZCB0aGUgc291cmNlIGNvZGUgcmVtYWluIGluIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIGxvY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFNvdXJjZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB1c2VkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZCwgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFueSBlZGl0b3IgeW91IGxpa2UgdG8gbWFrZSBhbmQgc2F2ZQorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlIG9yIFJlYnVpbGQgdGhlIEltYWdlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV4dCBzdGVwIHlvdSB0YWtlIGRlcGVuZHMgb24gd2hhdCB5b3UgYXJlIGdvaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0byBkbyB3aXRoIHRoZSBuZXcgY29kZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBuZWVkIHRvIGV2ZW50dWFsbHkgbW92ZSB0aGUgYnVpbGQgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGFyZ2V0IGhhcmR3YXJlLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IHdhbnQgYW4gaW1hZ2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIHJlY2lwZSdzIHBhY2thZ2VzIGZyb20gdGhlIHdvcmtzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGltbWVkaWF0ZSBkZXBsb3ltZW50IG9udG8gYSBkZXZpY2UgKGUuZy4gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nIHB1cnBvc2VzKSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZC1pbWFnZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGJ1aWxkIG91dCB5b3VyIHJlY2lwZSwgeW91IHByb2JhYmx5IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkIG91dHB1dCB3b3JrcyBhcyBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgb24gdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGFzc3VtZXMgeW91IGhhdmUgYSBwcmV2aW91c2x5IGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBhbHJlYWR5IGVpdGhlciBydW5uaW5nIGluIFFFTVUgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBpdCBpcyBhc3N1bWVkIHRoYXQgZm9yIGRlcGxveW1lbnQgb2YgdGhlIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCwgU1NIIGlzIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UgYW5kIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSB0aGF0IHlvdSBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayBhY2Nlc3MgdG8gYW5kIGZyb20geW91ciBkZXZlbG9wbWVudCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IDxyZXBsYWNlYWJsZT5yZWNpcGUgdGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgYSBsaXZlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBydW5uaW5nIGFzIGFuIFNTSCBzZXJ2ZXIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuLCBvZiBjb3Vyc2UsIHVzZSBvdGhlciBtZXRob2RzIHRvIGRlcGxveQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHlvdSBidWlsdCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdG8gZGVwbG95IHRoZSBpbWFnZSB0byBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgYW55IHBhdGNoZXMgY29ycmVzcG9uZGluZyB0byBjb21taXRzIGluIHRoZSBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHVwZGF0ZXMgdGhlIHJlY2lwZSB0byBwb2ludCB0byB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIHRvIGRvCisgICAgICAgICAgICAgICAgICAgICAgICBzbywgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24gbGF5ZXIpLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcmVzZXRzIHRoZSByZWNpcGUgc28gdGhhdCB0aGUgcmVjaXBlIGlzIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxseSByYXRoZXIgdGhhbiBmcm9tIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBmaW5pc2ggPHJlcGxhY2VhYmxlPnJlY2lwZSBsYXllcjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnkgY2hhbmdlcyB5b3Ugd2FudCB0byB0dXJuIGludG8gcGF0Y2hlcyBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2VkIGFuZCBjb21taXR0ZWQgd2l0aGluIHRoZSBsb2NhbCBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGJlZm9yZSB5b3UgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWNhdXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gbW92ZSB0aGUgcmVjaXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gZWl0aGVyIHVwZGF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCByZWNpcGUgaW4gdGhlIG9yaWdpbmFsIGxheWVyIG9yIHRoZSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGxheWVyIGFzIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+bGF5ZXI8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFueSB3b3JrIHlvdSBkaWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtbG9jYWwtZmlsZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlZCBpbiB0aGUgb3JpZ2luYWwgZmlsZXMgbmV4dCB0byB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhbmRhcmQgbGF5ZXJzIGFuZCB0aGUgdXBzdHJlYW0gc291cmNlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlZCBzbyB0aGF0IHlvdSBjYW4gYnVpbGQgdGhlIHJlY2lwZSBmcm9tIHRob3NlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmVhcyByYXRoZXIgdGhhbiBmcm9tIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgcmVzZXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcHV0IHRoaW5ncyBiYWNrIHNob3VsZCB5b3UgZGVjaWRlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCB3YW50IHRvIHByb2NlZWQgd2l0aCB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIHVzZSB0aGlzIGNvbW1hbmQsIHJlYWxpemUgdGhhdCB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZSBpcyBwcmVzZXJ2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1kZXZ0b29sLXVzZS1kZXZ0b29sLXVwZ3JhZGUtdG8tY3JlYXRlLWEtdmVyc2lvbi1vZi10aGUtcmVjaXBlLXRoYXQtc3VwcG9ydHMtYS1uZXdlci12ZXJzaW9uLW9mLXRoZS1zb2Z0d2FyZSc+CisgICAgICAgICAgICA8dGl0bGU+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byBDcmVhdGUgYSBWZXJzaW9uIG9mIHRoZSBSZWNpcGUgdGhhdCBTdXBwb3J0cyBhIE5ld2VyIFZlcnNpb24gb2YgdGhlIFNvZnR3YXJlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kIHVwZ3JhZGVzCisgICAgICAgICAgICAgICAgYW4gZXhpc3RpbmcgcmVjaXBlIHRvIHRoYXQgb2YgYSBtb3JlIHVwLXRvLWRhdGUgdmVyc2lvbgorICAgICAgICAgICAgICAgIGZvdW5kIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIGxpZmUgb2Ygc29mdHdhcmUsIHJlY2lwZXMgY29udGludWFsbHkgdW5kZXJnbworICAgICAgICAgICAgICAgIHZlcnNpb24gdXBncmFkZXMgYnkgdGhlaXIgdXBzdHJlYW0gcHVibGlzaGVycy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgd29ya2Zsb3cgdG8gbWFrZSBzdXJlIHlvdXIgcmVjaXBlcyB5b3UgYXJlIHVzaW5nIGZvciBidWlsZHMKKyAgICAgICAgICAgICAgICBhcmUgdXAtdG8tZGF0ZSB3aXRoIHRoZWlyIHVwc3RyZWFtIGNvdW50ZXJwYXJ0cy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgU2V2ZXJhbCBtZXRob2RzIGV4aXN0IGJ5IHdoaWNoIHlvdSBjYW4gdXBncmFkZSByZWNpcGVzIC0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGhhcHBlbnMgdG8gYmUgb25lLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHJlYWQgYWJvdXQgYWxsIHRoZSBtZXRob2RzIGJ5IHdoaWNoIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgdXBncmFkZSByZWNpcGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ3MtdXBncmFkaW5nLXJlY2lwZXMnPlVwZ3JhZGluZyBSZWNpcGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIGZsZXhpYmxlCisgICAgICAgICAgICAgICAgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBzcGVjaWZ5IHNvdXJjZSBjb2RlIHJldmlzaW9uIGFuZAorICAgICAgICAgICAgICAgIHZlcnNpb25pbmcgc2NoZW1lcywgZXh0cmFjdCBjb2RlIGludG8gb3Igb3V0IG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgd29yayB3aXRoIGFueSBzb3VyY2UgZmlsZSBmb3JtcyB0aGF0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYmItZmV0Y2hlcnMnPmZldGNoZXJzPC91bGluaz4KKyAgICAgICAgICAgICAgICBzdXBwb3J0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgdGhlIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93CisgICAgICAgICAgICAgICAgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmciIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYXRlIHRoZSBVcGdyYWRlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wIHBhcnQgb2YgdGhlIGZsb3cgc2hvd3MgdGhlIHR5cGljYWwgc2NlbmFyaW8gYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBleGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGV4aXN0cyBpbiBhIGxvY2FsIGxheWVyIGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc291cmNlIGZpbGVzIGZvciB0aGUgbmV3IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgaW4gdGhlIHNhbWUgbG9jYXRpb24gcG9pbnRlZCB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgKGUuZy4gYSB0YXJiYWxsIHdpdGggdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG51bWJlciBpbiB0aGUgbmFtZSwgb3IgYXMgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gaW4gdGhlIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgY29tbW9uIHNpdHVhdGlvbiBpcyB3aGVyZSB0aGlyZC1wYXJ0eSBzb2Z0d2FyZSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyZ29uZSBhIHJldmlzaW9uIHNvIHRoYXQgaXQgaGFzIGJlZW4gdXBncmFkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHlvdSBoYXZlIGFjY2VzcyB0byBpcyBsaWtlbHkgaW4geW91ciBvd24KKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgeW91IG5lZWQgdG8gdXBncmFkZSB0aGUgcmVjaXBlIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld2VyIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgdXBncmFkZSAtViA8cmVwbGFjZWFibGU+dmVyc2lvbiByZWNpcGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBleHRyYWN0cyBzb3VyY2UgY29kZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBjb2RlIGV4dHJhY3RlZCB0byBhbnkgb3RoZXIgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBwb3NpdGlvbmFsIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1WIDxyZXBsYWNlYWJsZT52ZXJzaW9uIHJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlICItViIgb3B0aW9uIHNwZWNpZmllcyB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG9uJ3QgdXNlICItViIsIHRoZSBjb21tYW5kIHVwZ3JhZGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgc291cmNlIGZpbGVzIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBpbiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgaW4gYSBHaXQgcmVwb3NpdG9yeSwgeW91IG11c3QgcHJvdmlkZSB0aGUgIi1TIgorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGFuZCBzcGVjaWZ5IGEgcmV2aXNpb24gZm9yIHRoZSBzb2Z0d2FyZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBsb2NhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCBpdCB1c2VzIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBsb2NhdGUgdGhlIHNvdXJjZSBjb2RlIGFuZCBhbnkgbG9jYWwgcGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGZyb20gb3RoZXIgZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB0aGUgY29tbWFuZCBzZXRzIHVwIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLCBhbmQgYW4gYXBwZW5kIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCB3aXRoaW4gdGhlIHdvcmtzcGFjZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFkZGl0aW9uYWxseSwgaWYgeW91IGhhdmUgYW55IG5vbi1wYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgZmlsZXMgKGkuZS4gZmlsZXMgcmVmZXJyZWQgdG8gd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiBlbnRyaWVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBleGNsdWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLnBhdGNoLzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4pLCB0aGVzZSBmaWxlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZCB0byBhbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWxvY2FsLWZpbGVzPC9maWxlbmFtZT4gZm9sZGVyCisgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGUgbmV3bHkgY3JlYXRlZCBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvcHlpbmcgdGhlIGZpbGVzIGhlcmUgZ2l2ZXMgeW91IGEgY29udmVuaWVudAorICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSBmcm9tIHdoaWNoIHlvdSBjYW4gbW9kaWZ5IHRoZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB5b3UgbWFrZSB0byB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgYXJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBidWlsZCB0aGUgbmV4dAorICAgICAgICAgICAgICAgICAgICAgICAgdGltZSB5b3UgYnVpbGQgdGhlIHNvZnR3YXJlIGp1c3QgYXMgYXJlIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHlvdSBtaWdodCBoYXZlIG1hZGUgdG8gdGhlIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVzb2x2ZSBhbnkgQ29uZmxpY3RzIGNyZWF0ZWQgYnkgdGhlIFVwZ3JhZGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZsaWN0cyBjb3VsZCBleGlzdCBkdWUgdG8gdGhlIHNvZnR3YXJlIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlZCB0byBhIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmxpY3RzIG9jY3VyIGlmIHlvdXIgcmVjaXBlIHNwZWNpZmllcyBzb21lIHBhdGNoCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHRoYXQgY29uZmxpY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggY2hhbmdlcyBtYWRlIGluIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc3VjaCBjYXNlcywgeW91IG5lZWQgdG8gcmVzb2x2ZSB0aGUgY29uZmxpY3RzCisgICAgICAgICAgICAgICAgICAgICAgICBieSBlZGl0aW5nIHRoZSBzb3VyY2UgYW5kIGZvbGxvd2luZyB0aGUgbm9ybWFsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHJlYmFzZTwvZmlsZW5hbWU+IGNvbmZsaWN0IHJlc29sdXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgbW92aW5nIG9udG8gdGhlIG5leHQgc3RlcCwgYmUgc3VyZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSBhbnkgc3VjaCBjb25mbGljdHMgY3JlYXRlZCB0aHJvdWdoIHVzZSBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdlciBvciBkaWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGUgb3IgUmVidWlsZCB0aGUgSW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgeW91IHRha2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhcmUgZ29pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRvIHdpdGggdGhlIG5ldyBjb2RlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRoZSBidWlsZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3Ugd2FudCBhbiBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgcmVjaXBlJ3MgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW1tZWRpYXRlIGRlcGxveW1lbnQgb250byBhIGRldmljZSAoZS5nLiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgcHVycG9zZXMpLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveSB0aGUgQnVpbGQgT3V0cHV0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb3IgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgeW91ciByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZSBpZiB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGFzc3VtZXMgeW91IGhhdmUgYSBwcmV2aW91c2x5IGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBhbHJlYWR5IGVpdGhlciBydW5uaW5nIGluIFFFTVUgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBpdCBpcyBhc3N1bWVkIHRoYXQgZm9yIGRlcGxveW1lbnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdG8gdGhlIHRhcmdldCwgU1NIIGlzIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaWYgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgbmV0d29yayBhY2Nlc3MgdG8gYW5kIGZyb20geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlcGxveSB5b3VyIGJ1aWxkIG91dHB1dCB0byB0aGF0IHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZSB0YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgYSBzcGVjaWZpYyBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0byBkbyB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgYW55IHBhdGNoZXMgY29ycmVzcG9uZGluZyB0byBjb21taXRzIGluIHRoZSBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIG1vdmVzIHRoZSBuZXcgcmVjaXBlIHRvIGEgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgcGVybWFuZW50IGxheWVyLCBhbmQgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGlzIGJ1aWx0IG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bbnkgd29yayB5b3UgZGlkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWxvY2FsLWZpbGVzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZWQgaW4gdGhlIG9yaWdpbmFsIGZpbGVzIG5leHQgdG8gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBsYXllciB0aGF0IGlzIHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3JpZ2luYWwgc291cmNlLCB0aGVuIHRoZSBvbGQgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQgYXNzb2NpYXRlZCBmaWxlcyBhcmUgcmVtb3ZlZCBwcmlvciB0bworICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nIHRoZSBuZXcgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGZpbmlzaCA8cmVwbGFjZWFibGU+cmVjaXBlIGxheWVyPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSB3YW50IHRvIHR1cm4gaW50byBwYXRjaGVzIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgdG8gdGhlIEdpdCByZXBvc2l0b3J5IGluIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGEgZmluYWwgcHJvY2VzcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZSBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHN0YW5kYXJkIGxheWVycyBhbmQgdGhlIHVwc3RyZWFtIHNvdXJjZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZWQgc28gdGhhdCB5b3UgY2FuIGJ1aWxkIHRoZSByZWNpcGUgZnJvbSB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgYXJlYXMgcmF0aGVyIHRoYW4gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBwdXQgdGhpbmdzIGJhY2sgc2hvdWxkIHlvdSBkZWNpZGUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHdhbnQgdG8gcHJvY2VlZCB3aXRoIHlvdXIgd29yay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gdXNlIHRoaXMgY29tbWFuZCwgcmVhbGl6ZSB0aGF0IHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIGlzIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2RrLWEtY2xvc2VyLWxvb2stYXQtZGV2dG9vbC1hZGQnPgorICAgICAgICA8dGl0bGU+QSBDbG9zZXIgTG9vayBhdCA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgIGEgcmVjaXBlIGJhc2VkIG9uIHRoZSBzb3VyY2UgdHJlZSB5b3UgcHJvdmlkZSB3aXRoIHRoZSBjb21tYW5kLgorICAgICAgICAgICAgQ3VycmVudGx5LCB0aGUgY29tbWFuZCBoYXMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdXRvdG9vbHMgKDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDTWFrZQorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNjb25zCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFtYWtlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQbGFpbiA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE91dC1vZi10cmVlIGtlcm5lbCBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCaW5hcnkgcGFja2FnZSAoaS5lLiAiLWIiIG9wdGlvbikKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBOb2RlLmpzIG1vZHVsZQorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBtb2R1bGVzIHRoYXQgdXNlIDxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFwYXJ0IGZyb20gYmluYXJ5IHBhY2thZ2VzLCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiBob3cgYSBzb3VyY2UgdHJlZQorICAgICAgICAgICAgc2hvdWxkIGJlIHRyZWF0ZWQgaXMgYXV0b21hdGljIGJhc2VkIG9uIHRoZSBmaWxlcyBwcmVzZW50IHdpdGhpbgorICAgICAgICAgICAgdGhhdCBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBhIDxmaWxlbmFtZT5DTWFrZUxpc3RzLnR4dDwvZmlsZW5hbWU+IGZpbGUgaXMgZm91bmQsCisgICAgICAgICAgICB0aGVuIHRoZSBzb3VyY2UgdHJlZSBpcyBhc3N1bWVkIHRvIGJlIHVzaW5nCisgICAgICAgICAgICBDTWFrZSBhbmQgaXMgdHJlYXRlZCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEluIG1vc3QgY2FzZXMsIHlvdSBuZWVkIHRvIGVkaXQgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCisgICAgICAgICAgICAgICAgcmVjaXBlIGluIG9yZGVyIHRvIG1ha2UgaXQgYnVpbGQgcHJvcGVybHkuCisgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugd291bGQgZ28gdGhyb3VnaCBzZXZlcmFsIGVkaXQgYW5kIGJ1aWxkIGN5Y2xlcworICAgICAgICAgICAgICAgIHVudGlsIHRoZSByZWNpcGUgc3VjY2Vzc2Z1bGx5IGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBPbmNlIHRoZSByZWNpcGUgYnVpbGRzLCB5b3UgY291bGQgdXNlIHBvc3NpYmxlIGZ1cnRoZXIKKyAgICAgICAgICAgICAgICBpdGVyYXRpb25zIHRvIHRlc3QgdGhlIHJlY2lwZSBvbiB0aGUgdGFyZ2V0IGRldmljZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gY292ZXJzIHNwZWNpZmljcyByZWdhcmRpbmcgaG93IHBhcnRzCisgICAgICAgICAgICBvZiB0aGUgcmVjaXBlIGFyZSBnZW5lcmF0ZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLW5hbWUtYW5kLXZlcnNpb24nPgorICAgICAgICAgICAgPHRpdGxlPk5hbWUgYW5kIFZlcnNpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBuYW1lIGFuZCB2ZXJzaW9uIG9uIHRoZSBjb21tYW5kCisgICAgICAgICAgICAgICAgbGluZSwgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gdXNlcyB2YXJpb3VzIG1ldGFkYXRhCisgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBzb3VyY2UgdHJlZSBpbiBhbiBhdHRlbXB0IHRvIGRldGVybWluZQorICAgICAgICAgICAgICAgIHRoZSBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICBCYXNlZCBvbiB3aGF0IHRoZSB0b29sIGRldGVybWluZXMsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzZXRzIHRoZSBuYW1lIG9mIHRoZSBjcmVhdGVkIHJlY2lwZSBmaWxlIGFjY29yZGluZ2x5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNhbm5vdCBkZXRlcm1pbmUgdGhlIG5hbWUgYW5kCisgICAgICAgICAgICAgICAgdmVyc2lvbiwgdGhlIGNvbW1hbmQgcHJpbnRzIGFuIGVycm9yLgorICAgICAgICAgICAgICAgIEZvciBzdWNoIGNhc2VzLCB5b3UgbXVzdCByZS1ydW4gdGhlIGNvbW1hbmQgYW5kIHByb3ZpZGUKKyAgICAgICAgICAgICAgICB0aGUgbmFtZSBhbmQgdmVyc2lvbiwganVzdCB0aGUgbmFtZSwgb3IganVzdCB0aGUgdmVyc2lvbiBhcworICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzIHRoZSBuYW1lIG9yIHZlcnNpb24gZGV0ZXJtaW5lZCBmcm9tIHRoZSBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGluY29ycmVjdC4KKyAgICAgICAgICAgICAgICBGb3Igc3VjaCBhIGNhc2UsIHlvdSBtdXN0IHJlc2V0IHRoZSByZWNpcGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgcmVzZXQgLW4gPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+IGNvbW1hbmQsCisgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gcnVuIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGFnYWluIGFuZAorICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIG5hbWUgb3IgdGhlIHZlcnNpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLWRlcGVuZGVuY3ktZGV0ZWN0aW9uLWFuZC1tYXBwaW5nJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZXBlbmRlbmN5IERldGVjdGlvbiBhbmQgTWFwcGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGF0dGVtcHRzIHRvCisgICAgICAgICAgICAgICAgZGV0ZWN0IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIGFuZCBtYXAgdGhlbSB0byBvdGhlciByZWNpcGVzCisgICAgICAgICAgICAgICAgaW4gdGhlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBtYXBwaW5nLCB0aGUgY29tbWFuZCBmaWxscyBpbiB0aGUgbmFtZXMgb2YgdGhvc2UKKyAgICAgICAgICAgICAgICByZWNpcGVzIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdpdGhpbiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIElmIGEgZGVwZW5kZW5jeSBjYW5ub3QgYmUgbWFwcGVkLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGxhY2VzIGEgY29tbWVudCBpbiB0aGUgcmVjaXBlIGluZGljYXRpbmcgc3VjaC4KKyAgICAgICAgICAgICAgICBUaGUgaW5hYmlsaXR5IHRvIG1hcCBhIGRlcGVuZGVuY3kgY2FuIHJlc3VsdCBmcm9tIG5hbWluZyBub3QKKyAgICAgICAgICAgICAgICBiZWluZyByZWNvZ25pemVkIG9yIGJlY2F1c2UgdGhlIGRlcGVuZGVuY3kgc2ltcGx5IGlzIG5vdAorICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICBGb3IgY2FzZXMgd2hlcmUgdGhlIGRlcGVuZGVuY3kgaXMgbm90IGF2YWlsYWJsZSwgeW91IG11c3QgdXNlCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gYWRkIGFuCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbCByZWNpcGUgdGhhdCBzYXRpc2ZpZXMgdGhlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgT25jZSB5b3UgYWRkIHRoYXQgcmVjaXBlLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUgb3JpZ2luYWwgcmVjaXBlCisgICAgICAgICAgICAgICAgdG8gaW5jbHVkZSB0aGUgbmV3IHJlY2lwZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gYWRkIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCB5b3UgY2FuIGRvIHNvIGJ5CisgICAgICAgICAgICAgICAgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91ciByZWNpcGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBSREVQRU5EU18ke1BOfSArPSAiPHJlcGxhY2VhYmxlPmRlcGVuZGVuY3kxIGRlcGVuZGVuY3kyIC4uLjwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgb2Z0ZW4gY2Fubm90CisgICAgICAgICAgICAgICAgICAgIGRpc3Rpbmd1aXNoIGJldHdlZW4gbWFuZGF0b3J5IGFuZCBvcHRpb25hbCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgc29tZSBvZiB0aGUgZGV0ZWN0ZWQgZGVwZW5kZW5jaWVzIG1pZ2h0CisgICAgICAgICAgICAgICAgICAgIGluIGZhY3QgYmUgb3B0aW9uYWwuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gaW4gZG91YnQsIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb3IgdGhlIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgZm9yIHRoZSBzb2Z0d2FyZSB0aGUgcmVjaXBlIGlzIGJ1aWxkaW5nIGZvciBmdXJ0aGVyCisgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuCisgICAgICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIHlvdSBtaWdodCBmaW5kIHlvdSBjYW4gc3Vic3RpdHV0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSB3aXRoIGFuIG9wdGlvbiB0aGF0IGRpc2FibGVzIHRoZSBhc3NvY2lhdGVkCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstbGljZW5zZS1kZXRlY3Rpb24nPgorICAgICAgICAgICAgPHRpdGxlPkxpY2Vuc2UgRGV0ZWN0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgYXR0ZW1wdHMgdG8KKyAgICAgICAgICAgICAgICBkZXRlcm1pbmUgaWYgdGhlIHNvZnR3YXJlIHlvdSBhcmUgYWRkaW5nIGlzIGFibGUgdG8gYmUKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRlZCB1bmRlciBhIGNvbW1vbiwgb3Blbi1zb3VyY2UgbGljZW5zZS4KKyAgICAgICAgICAgICAgICBJZiBzbywgdGhlIGNvbW1hbmQgc2V0cyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFsdWUgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHZhbHVlIGFkZGVkIGJ5IHRoZSBjb21tYW5kIGFnYWluc3QKKyAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UgZmlsZXMgZm9yIHRoZSBzb2Z0d2FyZSB5b3UgYXJlCisgICAgICAgICAgICAgICAgYnVpbGRpbmcgYW5kLCBpZiBuZWNlc3NhcnksIHVwZGF0ZSB0aGF0CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiB2YWx1ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgYWxzbyBzZXRzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNfRklMRVNfQ0hLU1VNJz48ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YWx1ZSB0byBwb2ludCB0byBhbGwgZmlsZXMgdGhhdCBhcHBlYXIgdG8gYmUgbGljZW5zZS1yZWxhdGVkLgorICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBsaWNlbnNlIHN0YXRlbWVudHMgb2Z0ZW4gYXBwZWFyIGluIGNvbW1lbnRzIGF0CisgICAgICAgICAgICAgICAgdGhlIHRvcCBvZiBzb3VyY2UgZmlsZXMgb3Igd2l0aGluIHRoZSBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBjb21tYW5kIGRvZXMgbm90IHJlY29nbml6ZSB0aG9zZSBsaWNlbnNlCisgICAgICAgICAgICAgICAgc3RhdGVtZW50cy4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBuZWVkIHRvIGFtZW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gcG9pbnQgdG8gb25lCisgICAgICAgICAgICAgICAgb3IgbW9yZSBvZiB0aG9zZSBjb21tZW50cyBpZiBwcmVzZW50LgorICAgICAgICAgICAgICAgIFNldHRpbmcgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiBpcyBwYXJ0aWN1bGFybHkKKyAgICAgICAgICAgICAgICBpbXBvcnRhbnQgZm9yIHRoaXJkLXBhcnR5IHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoZSBtZWNoYW5pc20gYXR0ZW1wdHMgdG8gZW5zdXJlIGNvcnJlY3QgbGljZW5zaW5nIHNob3VsZCB5b3UKKyAgICAgICAgICAgICAgICB1cGdyYWRlIHRoZSByZWNpcGUgdG8gYSBuZXdlciB1cHN0cmVhbSB2ZXJzaW9uIGluIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICBBbnkgY2hhbmdlIGluIGxpY2Vuc2luZyBpcyBkZXRlY3RlZCBhbmQgeW91IHJlY2VpdmUgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICBwcm9tcHRpbmcgeW91IHRvIGNoZWNrIHRoZSBsaWNlbnNlIHRleHQgYWdhaW4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGNhbm5vdAorICAgICAgICAgICAgICAgIGRldGVybWluZSBsaWNlbnNpbmcgaW5mb3JtYXRpb24sIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzZXRzIHRoZSA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIHRvICJDTE9TRUQiIGFuZAorICAgICAgICAgICAgICAgIGxlYXZlcyB0aGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YWx1ZSB1bnNldC4KKyAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGFsbG93cyB5b3UgdG8gY29udGludWUgd2l0aCBkZXZlbG9wbWVudCBldmVuCisgICAgICAgICAgICAgICAgdGhvdWdoIHRoZSBzZXR0aW5ncyBhcmUgdW5saWtlbHkgdG8gYmUgY29ycmVjdCBpbiBhbGwgY2FzZXMuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UgZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgIHNvZnR3YXJlIHlvdSBhcmUgYnVpbGRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgbGljZW5zZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstYWRkaW5nLW1ha2VmaWxlLW9ubHktc29mdHdhcmUnPgorICAgICAgICAgICAgPHRpdGxlPkFkZGluZyBNYWtlZmlsZS1Pbmx5IFNvZnR3YXJlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHVzZSBvZiBNYWtlIGJ5IGl0c2VsZiBpcyB2ZXJ5IGNvbW1vbiBpbiBib3RoIHByb3ByaWV0YXJ5CisgICAgICAgICAgICAgICAgYW5kIG9wZW4tc291cmNlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFVuZm9ydHVuYXRlbHksIE1ha2VmaWxlcyBhcmUgb2Z0ZW4gbm90IHdyaXR0ZW4gd2l0aAorICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGF0aW9uIGluIG1pbmQuCisgICAgICAgICAgICAgICAgVGh1cywgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gb2Z0ZW4gY2Fubm90IGRvIHZlcnkKKyAgICAgICAgICAgICAgICBtdWNoIHRvIGVuc3VyZSB0aGF0IHRoZXNlIE1ha2VmaWxlcyBidWlsZCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgSXQgaXMgdmVyeSBjb21tb24sIGZvciBleGFtcGxlLCB0byBleHBsaWNpdGx5IGNhbGwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4gaW5zdGVhZCBvZiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ0MnPjxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBVc3VhbGx5LCBpbiBhIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiBpcyB0aGUgY29tcGlsZXIgZm9yIHRoZSBidWlsZCBob3N0CisgICAgICAgICAgICAgICAgYW5kIHRoZSBjcm9zcy1jb21waWxlciBpcyBuYW1lZCBzb21ldGhpbmcgc2ltaWxhciB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYzwvZmlsZW5hbWU+IGFuZCBtaWdodAorICAgICAgICAgICAgICAgIHJlcXVpcmUgYXJndW1lbnRzIChlLmcuIHRvIHBvaW50IHRvIHRoZSBhc3NvY2lhdGVkIHN5c3Jvb3QKKyAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBtYWNoaW5lKS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB3cml0aW5nIGEgcmVjaXBlIGZvciBNYWtlZmlsZS1vbmx5IHNvZnR3YXJlLCBrZWVwIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBpbiBtaW5kOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBwcm9iYWJseSBuZWVkIHRvIHBhdGNoIHRoZSBNYWtlZmlsZSB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdG9vbHMgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIHN1Y2ggYXMgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmcrKzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBNYWtlIHJ1bnMgaXMgc2V0IHVwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgc3RhbmRhcmQgdmFyaWFibGVzIGZvciBjb21waWxhdGlvbiAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5DWFg8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzbyBmb3J0aCkgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgZW52aXJvbm1lbnQgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICB1cCBieSB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIGVhc3kgd2F5IHRvIHNlZSB0aGVzZSB2YXJpYWJsZXMgaXMgdG8gcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFuZCB0aGVuIGxvb2sgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzL3J1bi5kb19jb21waWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUb3dhcmRzIHRoZSB0b3Agb2YgdGhpcyBmaWxlLCBhIGxpc3Qgb2YgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBleGlzdHMgdGhhdCBhcmUgYmVpbmcgc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGVzZSB2YXJpYWJsZXMgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIE1ha2VmaWxlIHNldHMgYSBkZWZhdWx0IGZvciBhIHZhcmlhYmxlIHVzaW5nICI9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVmYXVsdCBvdmVycmlkZXMgdGhlIHZhbHVlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c3VhbGx5IG5vdCBkZXNpcmFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBjYXNlLCB5b3UgY2FuIGVpdGhlciBwYXRjaCB0aGUgTWFrZWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvIGl0IHNldHMgdGhlIGRlZmF1bHQgdXNpbmcgdGhlICI/PSIgb3BlcmF0b3IsIG9yCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGFsdGVybmF0aXZlbHkgZm9yY2UgdGhlIHZhbHVlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBmb3JjZSB0aGUgdmFsdWUgb24gdGhlIGNvbW1hbmQgbGluZSwgYWRkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2V0dGluZyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX09FTUFLRSc+PGZpbGVuYW1lPkVYVFJBX09FTUFLRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyA8ZmlsZW5hbWU+RVhUUkFfT0VNQUtFPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVYVFJBX09FTUFLRSArPSAiJ0NDPSR7Q0N9JyAnQ1hYPSR7Q1hYfSciCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgc2luZ2xlIHF1b3RlcyBhcmUgdXNlZCBhcm91bmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzZXR0aW5ncyBhcyB0aGUgdmFsdWVzIGFyZSBsaWtlbHkgdG8gY29udGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzIGJlY2F1c2UgcmVxdWlyZWQgZGVmYXVsdCBvcHRpb25zIGFyZSBwYXNzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBIYXJkY29kaW5nIHBhdGhzIGluc2lkZSBNYWtlZmlsZXMgaXMgb2Z0ZW4gcHJvYmxlbWF0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHBhcnRpY3VsYXJseSB0cnVlIGJlY2F1c2UgdGhvc2UgaGFyZGNvZGVkIHBhdGhzCisgICAgICAgICAgICAgICAgICAgICAgICBvZnRlbiBwb2ludCB0byBsb2NhdGlvbnMgb24gdGhlIGJ1aWxkIGhvc3QgYW5kIHRodXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgZWl0aGVyIGJlIHJlYWQtb25seSBvciB3aWxsIGludHJvZHVjZQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFtaW5hdGlvbiBpbnRvIHRoZSBjcm9zcy1jb21waWxhdGlvbiBiZWNhdXNlIHRoZXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzcGVjaWZpYyB0byB0aGUgYnVpbGQgaG9zdCByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hpbmcgdGhlIE1ha2VmaWxlIHRvIHVzZSBwcmVmaXggdmFyaWFibGVzIG9yIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHZhcmlhYmxlcyBpcyB1c3VhbGx5IHRoZSB3YXkgdG8gaGFuZGxlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgYSBNYWtlZmlsZSBydW5zIHRhcmdldC1zcGVjaWZpYyBjb21tYW5kcyBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICBhcyA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzdWNoIGNhc2VzLCB5b3UgbWlnaHQgYmUgYWJsZSB0byBhcHBseSBwYXRjaGVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGVzZSBjb21tYW5kcyBmcm9tIHRoZSBNYWtlZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1hZGRpbmctbmF0aXZlLXRvb2xzJz4KKyAgICAgICAgICAgIDx0aXRsZT5BZGRpbmcgTmF0aXZlIFRvb2xzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT2Z0ZW4sIHlvdSBuZWVkIHRvIGJ1aWxkIGFkZGl0aW9uYWwgdG9vbHMgdGhhdCBydW4gb24gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFzIG9wcG9zZWQgdG8gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGluZGljYXRlIHRoaXMgcmVxdWlyZW1lbnQgYnkgdXNpbmcgb25lIG9mIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBtZXRob2RzIHdoZW4geW91IHJ1bgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHJlY2lwZSBzdWNoIHRoYXQgaXQgZW5kcworICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCAiLW5hdGl2ZSIuCisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIHRoZSBuYW1lIGxpa2UgdGhpcyBwcm9kdWNlcyBhIHJlY2lwZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGJ1aWxkcyBmb3IgdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmeSB0aGUgIiZkYXNoOyZkYXNoO2Fsc28tbmF0aXZlIiBvcHRpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIHRoaXMgb3B0aW9uIGNyZWF0ZXMgYSByZWNpcGUgZmlsZSB0aGF0IHN0aWxsCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMgZm9yIHRoZSB0YXJnZXQgYnV0IGFsc28gY3JlYXRlcyBhIHZhcmlhbnQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSAiLW5hdGl2ZSIgc3VmZml4IHRoYXQgYnVpbGRzIGZvciB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBhZGQgYSB0b29sIHRoYXQgaXMgc2hpcHBlZCBhcyBwYXJ0IG9mIGEKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIHRyZWUgdGhhdCBidWlsZHMgY29kZSBmb3IgdGhlIHRhcmdldCwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgYWNjb21wbGlzaCB0aGlzIGJ5IGJ1aWxkaW5nIHRoZSBuYXRpdmUgYW5kIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBwYXJ0cyBzZXBhcmF0ZWx5IHJhdGhlciB0aGFuIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRob3VnaCB0aGF0IHdpdGggdGhlICImZGFzaDsmZGFzaDthbHNvLW5hdGl2ZSIKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB5b3UgY2FuIGFkZCB0aGUgdG9vbCB1c2luZyBqdXN0IG9uZSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLWFkZGluZy1ub2RlLWpzLW1vZHVsZXMnPgorICAgICAgICAgICAgPHRpdGxlPkFkZGluZyBOb2RlLmpzIE1vZHVsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCB0d28KKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgd2F5cyB0byBhZGQgTm9kZS5qcyBtb2R1bGVzOiAxKSBUaHJvdWdoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+IGFuZCwgMikgZnJvbSBhIHJlcG9zaXRvcnkgb3IgbG9jYWwKKyAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm0gdG8gYWRkIE5vZGUuanMgbW9kdWxlcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGFkZCAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Zm9yZXZlcjt2ZXJzaW9uPTAuMTUuMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIG5hbWUgYW5kIHZlcnNpb24gcGFyYW1ldGVycyBhcmUgbWFuZGF0b3J5LgorICAgICAgICAgICAgICAgIExvY2tkb3duIGFuZCBzaHJpbmt3cmFwIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYW5kIHBvaW50ZWQgdG8gYnkKKyAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGluIG9yZGVyIHRvIGZyZWV6ZSB0aGUgdmVyc2lvbiB0aGF0IGlzIGZldGNoZWQgZm9yCisgICAgICAgICAgICAgICAgdGhlIGRlcGVuZGVuY2llcyBhY2NvcmRpbmcgdG8gdGhlIGZpcnN0IHRpbWUuCisgICAgICAgICAgICAgICAgVGhpcyBhbHNvIHNhdmVzIGNoZWNrc3VtcyB0aGF0IGFyZSB2ZXJpZmllZCBvbiBmdXR1cmUgZmV0Y2hlcy4KKyAgICAgICAgICAgICAgICBUb2dldGhlciwgdGhlc2UgYmVoYXZpb3JzIGVuc3VyZSB0aGUgcmVwcm9kdWNpYmlsaXR5IGFuZAorICAgICAgICAgICAgICAgIGludGVncml0eSBvZiB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCB1c2UgcXVvdGVzIGFyb3VuZCB0aGUgVVJMLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBkb2VzIG5vdCByZXF1aXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHF1b3RlcywgYnV0IHRoZSBzaGVsbCBjb25zaWRlcnMgIjsiIGFzIGEgc3BsaXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIG11bHRpcGxlIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHdpdGhvdXQgdGhlIHF1b3RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBkb2VzIG5vdCByZWNlaXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHBhcnRzLCB3aGljaCByZXN1bHRzIGluIHNldmVyYWwgImNvbW1hbmQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQiIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IGFkZGluZyBOb2RlLmpzIG1vZHVsZXMsIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzPC9maWxlbmFtZT4gcmVjaXBlIG11c3QgYmUgcGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB5b3UgY2FuIGFsc28gYWRkIE5vZGUuanMgbW9kdWxlcworICAgICAgICAgICAgICAgIGRpcmVjdGx5IGZyb20gYSByZXBvc2l0b3J5IG9yIGxvY2FsIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgICAgIFRvIGFkZCBtb2R1bGVzIHRoaXMgd2F5LCB1c2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYWRkIGh0dHBzOi8vZ2l0aHViLmNvbS9kaXZlcnNhcmlvL25vZGUtc3NkcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZmV0Y2hlcyB0aGUKKyAgICAgICAgICAgICAgICBzcGVjaWZpZWQgR2l0IHJlcG9zaXRvcnksIGRldGVjdHMgdGhlIGNvZGUgYXMgTm9kZS5qcworICAgICAgICAgICAgICAgIGNvZGUsIGZldGNoZXMgZGVwZW5kZW5jaWVzIHVzaW5nIDxmaWxlbmFtZT5ucG08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgc2V0cworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZGstd29ya2luZy13aXRoLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+V29ya2luZyBXaXRoIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiBidWlsZGluZyBhIHJlY2lwZSB1c2luZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHR5cGljYWwgYnVpbGQKKyAgICAgICAgICAgIHByb2dyZXNzZXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZldGNoIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVbnBhY2sgdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZSB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29tcGlsZSB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgYnVpbGQgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZSB0aGUgaW5zdGFsbGVkIG91dHB1dAorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICBGb3IgcmVjaXBlcyBpbiB0aGUgd29ya3NwYWNlLCBmZXRjaGluZyBhbmQgdW5wYWNraW5nIGlzIGRpc2FibGVkCisgICAgICAgICAgICBhcyB0aGUgc291cmNlIHRyZWUgaGFzIGFscmVhZHkgYmVlbiBwcmVwYXJlZCBhbmQgaXMgcGVyc2lzdGVudC4KKyAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgYnVpbGQgc3RlcHMgaXMgZGVmaW5lZCBhcyBhIGZ1bmN0aW9uICh0YXNrKSwgdXN1YWxseQorICAgICAgICAgICAgd2l0aCBhICJkb18iIHByZWZpeCAoZS5nLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgc2hlbGwgc2NyaXB0cyBidXQgY2FuIGluc3RlYWQgYmUKKyAgICAgICAgICAgIHdyaXR0ZW4gaW4gUHl0aG9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgbG9vayBhdCB0aGUgY29udGVudHMgb2YgYSByZWNpcGUsIHlvdSB3aWxsIHNlZSB0aGF0IHRoZQorICAgICAgICAgICAgcmVjaXBlIGRvZXMgbm90IGluY2x1ZGUgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyB0aGUKKyAgICAgICAgICAgIHNvZnR3YXJlLgorICAgICAgICAgICAgSW5zdGVhZCwgY29tbW9uIGZ1bmN0aW9uYWxpdHkgaXMgZW5jYXBzdWxhdGVkIGluIGNsYXNzZXMgaW5oZXJpdGVkCisgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+IGRpcmVjdGl2ZS4KKyAgICAgICAgICAgIFRoaXMgdGVjaG5pcXVlIGxlYXZlcyB0aGUgcmVjaXBlIHRvIGRlc2NyaWJlIGp1c3QgdGhlIHRoaW5ncyB0aGF0CisgICAgICAgICAgICBhcmUgc3BlY2lmaWMgdG8gdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgQQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBjbGFzcyBleGlzdHMgdGhhdCBpcyBpbXBsaWNpdGx5IGluaGVyaXRlZCBieSBhbGwgcmVjaXBlcyBhbmQKKyAgICAgICAgICAgIHByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgbW9zdCByZWNpcGVzIHR5cGljYWxseSBuZWVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBpbmZvcm1hdGlvbiB1c2VmdWwgd2hlbgorICAgICAgICAgICAgd29ya2luZyB3aXRoIHJlY2lwZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2RrLWZpbmRpbmctbG9ncy1hbmQtd29yay1maWxlcyc+CisgICAgICAgICAgICA8dGl0bGU+RmluZGluZyBMb2dzIGFuZCBXb3JrIEZpbGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIGZpcnN0IHJ1biBvZiB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQsIHJlY2lwZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgY3JlYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIG9yIHdob3NlIHNvdXJjZXMgd2VyZQorICAgICAgICAgICAgICAgIG1vZGlmaWVkIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQgY29udGFpbiBzeW1ib2xpYyBsaW5rcyBjcmVhdGVkIHdpdGhpbiB0aGUgc291cmNlIHRyZWU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWxvZ3M8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGluayBwb2ludHMgdG8gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBsb2cgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBydW4gc2NyaXB0cyBmb3IgZWFjaCBidWlsZCBzdGVwIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS13b3JrZGlyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpbmsgcG9pbnRzIHRvIHRoZSB0ZW1wb3Jhcnkgd29yayBhcmVhIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbG9jYXRpb25zIHVuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utd29ya2RpcjwvZmlsZW5hbWU+IGFyZSBwYXJ0aWN1bGFybHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWZ1bDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW1hZ2UvPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyBhbGwgb2YgdGhlIGZpbGVzIGluc3RhbGxlZCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gYSByZWNpcGUsIHRoaXMgZGlyZWN0b3J5IGlzIHJlZmVycmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBieSB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzcm9vdC1kZXN0ZGlyLzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgYSBzdWJzZXQgb2YgZmlsZXMgaW5zdGFsbGVkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiB0aGF0IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gcHV0IGludG8gdGhlIHNoYXJlZCBzeXNyb290LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstc2hhcmluZy1maWxlcy1iZXR3ZWVuLXJlY2lwZXMnPlNoYXJpbmcgRmlsZXMgQmV0d2VlbiBSZWNpcGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VzLXNwbGl0LzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgc3ViZGlyZWN0b3JpZXMgZm9yIGVhY2ggcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZWQgYnkgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLXBhY2thZ2luZyc+UGFja2FnaW5nPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZXNlIGxpbmtzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMKKyAgICAgICAgICAgICAgICBoYXBwZW5pbmcgYXQgZWFjaCBidWlsZCBzdGVwLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1zZXR0aW5nLWNvbmZpZ3VyZS1hcmd1bWVudHMnPgorICAgICAgICAgICAgPHRpdGxlPlNldHRpbmcgQ29uZmlndXJlIEFyZ3VtZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHRoZSBzb2Z0d2FyZSB5b3VyIHJlY2lwZSBpcyBidWlsZGluZyB1c2VzIEdOVSBhdXRvY29uZiwKKyAgICAgICAgICAgICAgICB0aGVuIGEgZml4ZWQgc2V0IG9mIGFyZ3VtZW50cyBpcyBwYXNzZWQgdG8gaXQgdG8gZW5hYmxlCisgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsYXRpb24gcGx1cyBhbnkgZXh0cmFzIHNwZWNpZmllZCBieQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9PRUNPTkYnPjxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgc2V0IHdpdGhpbiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIHBhc3MgYWRkaXRpb25hbCBvcHRpb25zLCBhZGQgdGhlbSB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgT3RoZXIgc3VwcG9ydGVkIGJ1aWxkIHRvb2xzIGhhdmUgc2ltaWxhciB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAoZS5nLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9PRUNNQUtFJz48ZmlsZW5hbWU+RVhUUkFfT0VDTUFLRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgQ01ha2UsCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX09FU0NPTlMnPjxmaWxlbmFtZT5FWFRSQV9PRVNDT05TPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvciBTY29ucywgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBwYXNzIGFueXRoaW5nIG9uIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lLCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+RVhUUkFfT0VNQUtFPC9maWxlbmFtZT4gb3IgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VDT05GSUdfQ09ORkFSR1MnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0byBkbyBzby4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGNvbmZpZ3VyZS1oZWxwPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgIHRvIGhlbHAgeW91IHNldCB0aGUgYXJndW1lbnRzIGxpc3RlZCBpbiB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLgorICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGRldGVybWluZXMgdGhlIGV4YWN0IG9wdGlvbnMgYmVpbmcgcGFzc2VkLCBhbmQgc2hvd3MKKyAgICAgICAgICAgICAgICB0aGVtIHRvIHlvdSBhbG9uZyB3aXRoIGFueSBjdXN0b20gYXJndW1lbnRzIHNwZWNpZmllZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBJZiBhcHBsaWNhYmxlLCB0aGUgY29tbWFuZCBhbHNvIHNob3dzIHlvdSB0aGUgb3V0cHV0IG9mIHRoZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBzY3JpcHQncyAiJmRhc2g7JmRhc2g7aGVscCIgb3B0aW9uIGFzIGEgcmVmZXJlbmNlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1zaGFyaW5nLWZpbGVzLWJldHdlZW4tcmVjaXBlcyc+CisgICAgICAgICAgICA8dGl0bGU+U2hhcmluZyBGaWxlcyBCZXR3ZWVuIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBSZWNpcGVzIG9mdGVuIG5lZWQgdG8gdXNlIGZpbGVzIHByb3ZpZGVkIGJ5IG90aGVyIHJlY2lwZXMgb24KKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhbiBhcHBsaWNhdGlvbiBsaW5raW5nIHRvIGEgY29tbW9uIGxpYnJhcnkgbmVlZHMKKyAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIGxpYnJhcnkgaXRzZWxmIGFuZCBpdHMgYXNzb2NpYXRlZCBoZWFkZXJzLgorICAgICAgICAgICAgICAgIFRoZSB3YXkgdGhpcyBhY2Nlc3MgaXMgYWNjb21wbGlzaGVkIHdpdGhpbiB0aGUgZXh0ZW5zaWJsZSBTREsgaXMKKyAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBzeXNyb290LgorICAgICAgICAgICAgICAgIE9uZSBzeXNyb290IGV4aXN0cyBwZXIgIm1hY2hpbmUiIGZvciB3aGljaCB0aGUgU0RLIGlzIGJlaW5nCisgICAgICAgICAgICAgICAgYnVpbHQuCisgICAgICAgICAgICAgICAgSW4gcHJhY3RpY2FsIHRlcm1zLCB0aGlzIG1lYW5zIGEgc3lzcm9vdCBleGlzdHMgZm9yIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICBtYWNoaW5lLCBhbmQgYSBzeXNyb290IGV4aXN0cyBmb3IgdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFJlY2lwZXMgc2hvdWxkIG5ldmVyIHdyaXRlIGZpbGVzIGRpcmVjdGx5IGludG8gdGhlIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgSW5zdGVhZCwgZmlsZXMgc2hvdWxkIGJlIGluc3RhbGxlZCBpbnRvIHN0YW5kYXJkIGxvY2F0aW9ucworICAgICAgICAgICAgICAgIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzayB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBBIHN1YnNldCBvZiB0aGVzZSBmaWxlcyBhdXRvbWF0aWNhbGx5IGdvZXMgaW50byB0aGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIGxpbWl0YXRpb24gaXMgdGhhdCBhbG1vc3QgYWxsIGZpbGVzIHRoYXQgZ28KKyAgICAgICAgICAgICAgICBpbnRvIHRoZSBzeXNyb290IGFyZSBjYXRhbG9nZWQgaW4gbWFuaWZlc3RzIGluIG9yZGVyIHRvIGVuc3VyZQorICAgICAgICAgICAgICAgIHRoZXkgY2FuIGJlIHJlbW92ZWQgbGF0ZXIgd2hlbiBhIHJlY2lwZSBpcyBtb2RpZmllZCBvciByZW1vdmVkLgorICAgICAgICAgICAgICAgIFRodXMsIHRoZSBzeXNyb290IGlzIGFibGUgdG8gcmVtYWluIGZyZWUgZnJvbSBzdGFsZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstcGFja2FnaW5nJz4KKyAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdpbmc8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQYWNrYWdpbmcgaXMgbm90IGFsd2F5cyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBleGFtaW5lIGhvdyBidWlsZCBvdXRwdXQgZ2V0cyBpbnRvIHRoZSBmaW5hbCBpbWFnZQorICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgZGV2aWNlLCBpdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZSBjb250ZW50cyBvZiB0aGUgaW1hZ2UgYXJlIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZgorICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFuZCBub3QgcmVjaXBlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrLCBmaWxlcyBpbnN0YWxsZWQgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGFyZSBzcGxpdCBpbnRvIG9uZSBtYWluIHBhY2thZ2UsIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMKKyAgICAgICAgICAgICAgICBuYW1lZCB0aGUgc2FtZSBhcyB0aGUgcmVjaXBlLCBhbmQgaW50byBzZXZlcmFsIG90aGVyIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VwYXJhdGlvbiBleGlzdHMgYmVjYXVzZSBub3QgYWxsIG9mIHRob3NlIGluc3RhbGxlZCBmaWxlcworICAgICAgICAgICAgICAgIGFyZSB1c2VmdWwgaW4gZXZlcnkgaW1hZ2UuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBwcm9iYWJseSBkbyBub3QgbmVlZCBhbnkgb2YgdGhlIGRvY3VtZW50YXRpb24KKyAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBwcm9kdWN0aW9uIGltYWdlLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgZm9yIGVhY2ggcmVjaXBlIHRoZSBkb2N1bWVudGF0aW9uIGZpbGVzIGFyZQorICAgICAgICAgICAgICAgIHNlcGFyYXRlZCBpbnRvIGEgPGZpbGVuYW1lPi1kb2M8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBwYWNrYWdlIHNvZnR3YXJlIGNvbnRhaW5pbmcgb3B0aW9uYWwgbW9kdWxlcyBvcgorICAgICAgICAgICAgICAgIHBsdWdpbnMgbWlnaHQgdW5kZXJnbyBhZGRpdGlvbmFsIHBhY2thZ2Ugc3BsaXR0aW5nIGFzIHdlbGwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFmdGVyIGJ1aWxkaW5nIGEgcmVjaXBlLCB5b3UgY2FuIHNlZSB3aGVyZSBmaWxlcyBoYXZlIGdvbmUgYnkKKyAgICAgICAgICAgICAgICBsb29raW5nIGluIHRoZSA8ZmlsZW5hbWU+b2Utd29ya2Rpci9wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBjb250YWlucyBhIHN1YmRpcmVjdG9yeSBmb3IgZWFjaCBwYWNrYWdlLgorICAgICAgICAgICAgICAgIEFwYXJ0IGZyb20gc29tZSBhZHZhbmNlZCBjYXNlcywgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGVzIGNvbnRyb2xzIHNwbGl0dGluZy4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFyaWFibGUgbGlzdHMgYWxsIG9mIHRoZQorICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGJlIHByb2R1Y2VkLCB3aGlsZSB0aGUgPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBzcGVjaWZpZXMgd2hpY2ggZmlsZXMgdG8gaW5jbHVkZSBpbiBlYWNoIHBhY2thZ2UgYnkKKyAgICAgICAgICAgICAgICB1c2luZyBhbiBvdmVycmlkZSB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCA8ZmlsZW5hbWU+RklMRVNfJHtQTn08L2ZpbGVuYW1lPiBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgICAgICAgZmlsZXMgdG8gZ28gaW50byB0aGUgbWFpbiBwYWNrYWdlIChpLmUuIHRoZSBtYWluIHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVjaXBlIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGV2YWx1YXRlcyB0byB0aGUgcmVjaXBlIG5hbWUpLgorICAgICAgICAgICAgICAgIFRoZSBvcmRlciBvZiB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFsdWUgaXMKKyAgICAgICAgICAgICAgICBzaWduaWZpY2FudC4KKyAgICAgICAgICAgICAgICBGb3IgZWFjaCBpbnN0YWxsZWQgZmlsZSwgdGhlIGZpcnN0IHBhY2thZ2Ugd2hvc2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YWx1ZSBtYXRjaGVzIHRoZSBmaWxlIGlzIHRoZQorICAgICAgICAgICAgICAgIHBhY2thZ2UgaW50byB3aGljaCB0aGUgZmlsZSBnb2VzLgorICAgICAgICAgICAgICAgIERlZmF1bHRzIGV4aXN0IGZvciBib3RoIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbWlnaHQgZmluZCB5b3UgZG8gbm90IGV2ZW4gbmVlZCB0byBzZXQgdGhlc2UKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgaW4geW91ciByZWNpcGUgdW5sZXNzIHRoZSBzb2Z0d2FyZSB0aGUgcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgYnVpbGRpbmcgaW5zdGFsbHMgZmlsZXMgaW50byBub24tc3RhbmRhcmQgbG9jYXRpb25zLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Nkay1yZXN0b3JpbmctdGhlLXRhcmdldC1kZXZpY2UtdG8taXRzLW9yaWdpbmFsLXN0YXRlJz4KKyAgICAgICAgPHRpdGxlPlJlc3RvcmluZyB0aGUgVGFyZ2V0IERldmljZSB0byBpdHMgT3JpZ2luYWwgU3RhdGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb21tYW5kIHRvIHdyaXRlIGEgcmVjaXBlJ3MgYnVpbGQgb3V0cHV0IHRvIHRoZSB0YXJnZXQsIGFuZAorICAgICAgICAgICAgeW91IGFyZSB3b3JraW5nIG9uIGFuIGV4aXN0aW5nIGNvbXBvbmVudCBvZiB0aGUgc3lzdGVtLCB0aGVuIHlvdQorICAgICAgICAgICAgbWlnaHQgZmluZCB5b3Vyc2VsZiBpbiBhIHNpdHVhdGlvbiB3aGVyZSB5b3UgbmVlZCB0byByZXN0b3JlIHRoZQorICAgICAgICAgICAgb3JpZ2luYWwgZmlsZXMgdGhhdCBleGlzdGVkIHByaW9yIHRvIHJ1bm5pbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICBiYWNrcyB1cCBhbnkgZmlsZXMgaXQgb3ZlcndyaXRlcywgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1bmRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIHJlc3RvcmUKKyAgICAgICAgICAgIHRob3NlIGZpbGVzIGFuZCByZW1vdmUgYW55IG90aGVyIGZpbGVzIHRoZSByZWNpcGUgZGVwbG95ZWQuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgbGlnaHR0cGQgcm9vdEAxOTIuMTY4LjcuMgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgeW91IGhhdmUgZGVwbG95ZWQgbXVsdGlwbGUgYXBwbGljYXRpb25zLCB5b3UgY2FuIHJlbW92ZSB0aGVtCisgICAgICAgICAgICBhbGwgdXNpbmcgdGhlICItYSIgb3B0aW9uIHRodXMgcmVzdG9yaW5nIHRoZSB0YXJnZXQgZGV2aWNlIHRvIGl0cworICAgICAgICAgICAgb3JpZ2luYWwgc3RhdGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgLWEgcm9vdEAxOTIuMTY4LjcuMgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgZmlsZXMgZGVwbG95ZWQgdG8gdGhlIHRhcmdldCBhcyB3ZWxsIGFzIGFueQorICAgICAgICAgICAgYmFja2VkIHVwIGZpbGVzIGFyZSBzdG9yZWQgb24gdGhlIHRhcmdldCBpdHNlbGYuCisgICAgICAgICAgICBUaGlzIHN0b3JhZ2UsIG9mIGNvdXJzZSwgcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIHNwYWNlCisgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGRvIG5vdAorICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbnRlcmFjdCB3aXRoIGFueSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIG9uIHRoZQorICAgICAgICAgICAgICAgIHRhcmdldCBkZXZpY2UgKGUuZy4gUlBNIG9yIE9QS0cpLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBub3QgaW50ZXJtaW5nbGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gYW5kIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBtYW5hZ2VyIG9wZXJhdGlvbnMgb24gdGhlIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICAgICAgRG9pbmcgc28gY291bGQgcmVzdWx0IGluIGEgY29uZmxpY3Rpbmcgc2V0IG9mIGZpbGVzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Nkay1pbnN0YWxsaW5nLWFkZGl0aW9uYWwtaXRlbXMtaW50by10aGUtZXh0ZW5zaWJsZS1zZGsnPgorICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBBZGRpdGlvbmFsIEl0ZW1zIEludG8gdGhlIEV4dGVuc2libGUgU0RLPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE91dCBvZiB0aGUgYm94IHRoZSBleHRlbnNpYmxlIFNESyB0eXBpY2FsbHkgb25seSBjb21lcyB3aXRoIGEgc21hbGwKKyAgICAgICAgICAgIG51bWJlciBvZiB0b29scyBhbmQgbGlicmFyaWVzLgorICAgICAgICAgICAgQSBtaW5pbWFsIFNESyBzdGFydHMgbW9zdGx5IGVtcHR5IGFuZCBpcyBwb3B1bGF0ZWQgb24tZGVtYW5kLgorICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtdXN0IGV4cGxpY2l0bHkgaW5zdGFsbCBleHRyYSBpdGVtcyBpbnRvIHRoZSBTREsuCisgICAgICAgICAgICBJZiB5b3UgbmVlZCB0aGVzZSBleHRyYSBpdGVtcywgeW91IGNhbiBmaXJzdCBzZWFyY2ggZm9yIHRoZSBpdGVtcworICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHNlYXJjaDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgbmVlZCB0byBsaW5rIHRvIGxpYkdMIGJ1dCB5b3UgYXJlIG5vdCBzdXJlCisgICAgICAgICAgICB3aGljaCByZWNpcGUgcHJvdmlkZXMgbGliR0wuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZmluZCBvdXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBzZWFyY2ggbGliR0wKKyAgICAgbWVzYSAgICAgICAgICAgICAgICAgIEEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgT3BlbkdMIEFQSQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgT25jZSB5b3Uga25vdyB0aGUgcmVjaXBlIChpLmUuIDxmaWxlbmFtZT5tZXNhPC9maWxlbmFtZT4gaW4gdGhpcworICAgICAgICAgICAgZXhhbXBsZSksIHlvdSBjYW4gaW5zdGFsbCBpdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHNkay1pbnN0YWxsIG1lc2EKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzZGstaW5zdGFsbDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIGFzc3VtZXMgdGhlIGl0ZW0gaXMgYXZhaWxhYmxlIGluIHByZS1idWlsdCBmb3JtIGZyb20geW91ciBTREsKKyAgICAgICAgICAgIHByb3ZpZGVyLgorICAgICAgICAgICAgSWYgdGhlIGl0ZW0gaXMgbm90IGF2YWlsYWJsZSBhbmQgaXQgaXMgYWNjZXB0YWJsZSB0byBidWlsZCB0aGUgaXRlbQorICAgICAgICAgICAgZnJvbSBzb3VyY2UsIHlvdSBjYW4gYWRkIHRoZSAiLXMiIG9wdGlvbiBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgc2RrLWluc3RhbGwgLXMgbWVzYQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgYnVpbGRpbmcgdGhlIGl0ZW0gZnJvbSBzb3VyY2UKKyAgICAgICAgICAgIHRha2VzIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRoYW4gaW5zdGFsbGluZyB0aGUgcHJlLWJ1aWx0IGFydGlmYWN0LgorICAgICAgICAgICAgQWxzbywgaWYgbm8gcmVjaXBlIGV4aXN0cyBmb3IgdGhlIGl0ZW0geW91IHdhbnQgdG8gYWRkIHRvIHRoZSBTREssCisgICAgICAgICAgICB5b3UgbXVzdCBpbnN0ZWFkIGFkZCB0aGUgaXRlbSB1c2luZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2RrLWFwcGx5aW5nLXVwZGF0ZXMtdG8tYW4taW5zdGFsbGVkLWV4dGVuc2libGUtc2RrJz4KKyAgICAgICAgPHRpdGxlPkFwcGx5aW5nIFVwZGF0ZXMgdG8gYW4gSW5zdGFsbGVkIEV4dGVuc2libGUgU0RLPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGFuIGluc3RhbGxlZCBleHRlbnNpYmxlIFNESyB0aGF0IGdldHMKKyAgICAgICAgICAgIG9jY2FzaW9uYWxseSB1cGRhdGVkIChlLmcuIGEgdGhpcmQtcGFydHkgU0RLKSwgdGhlbiB5b3Ugd2lsbCBuZWVkCisgICAgICAgICAgICB0byBtYW51YWxseSAicHVsbCBkb3duIiB0aGUgdXBkYXRlcyBpbnRvIHRoZSBpbnN0YWxsZWQgU0RLLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyB1cGRhdGUgeW91ciBpbnN0YWxsZWQgU0RLLCB1c2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBhcworICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIHNkay11cGRhdGUKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kIGFzc3VtZXMgeW91ciBTREsgcHJvdmlkZXIgaGFzIHNldCB0aGUgZGVmYXVsdAorICAgICAgICAgICAgdXBkYXRlIFVSTCBmb3IgeW91IHRocm91Z2ggdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX1VQREFURV9VUkwnPjxmaWxlbmFtZT5TREtfVVBEQVRFX1VSTDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstcHJvdmlkaW5nLXVwZGF0ZXMtdG8tdGhlLWV4dGVuc2libGUtc2RrLWFmdGVyLWluc3RhbGxhdGlvbic+UHJvdmlkaW5nIFVwZGF0ZXMgdG8gdGhlIEV4dGVuc2libGUgU0RLIEFmdGVyIEluc3RhbGxhdGlvbjwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgSWYgdGhlIFNESyBwcm92aWRlciBoYXMgbm90IHNldCB0aGF0IGRlZmF1bHQgVVJMLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgc3BlY2lmeSBpdCB5b3Vyc2VsZiBpbiB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgc2RrLXVwZGF0ZSA8cmVwbGFjZWFibGU+cGF0aF90b191cGRhdGVfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBVUkwgbmVlZHMgdG8gcG9pbnQgc3BlY2lmaWNhbGx5IHRvIGEgcHVibGlzaGVkIFNESyBhbmQKKyAgICAgICAgICAgICAgICBub3QgdG8gYW4gU0RLIGluc3RhbGxlciB0aGF0IHlvdSB3b3VsZCBkb3dubG9hZCBhbmQgaW5zdGFsbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZGstY3JlYXRpbmctYS1kZXJpdmF0aXZlLXNkay13aXRoLWFkZGl0aW9uYWwtY29tcG9uZW50cyc+CisgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIERlcml2YXRpdmUgU0RLIFdpdGggQWRkaXRpb25hbCBDb21wb25lbnRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBtaWdodCBuZWVkIHRvIHByb2R1Y2UgYW4gU0RLIHRoYXQgY29udGFpbnMgeW91ciBvd24gY3VzdG9tCisgICAgICAgICAgICBsaWJyYXJpZXMuCisgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSB3b3VsZCBiZSBpZiB5b3Ugd2VyZSBhIHZlbmRvciB3aXRoIGN1c3RvbWVycyB0aGF0CisgICAgICAgICAgICB1c2UgeW91ciBTREsgdG8gYnVpbGQgdGhlaXIgb3duIHBsYXRmb3JtLXNwZWNpZmljIHNvZnR3YXJlIGFuZAorICAgICAgICAgICAgdGhvc2UgY3VzdG9tZXJzIG5lZWQgYW4gU0RLIHRoYXQgaGFzIGN1c3RvbSBsaWJyYXJpZXMuCisgICAgICAgICAgICBJbiBzdWNoIGEgY2FzZSwgeW91IGNhbiBwcm9kdWNlIGEgZGVyaXZhdGl2ZSBTREsgYmFzZWQgb24gdGhlCisgICAgICAgICAgICBjdXJyZW50bHkgaW5zdGFsbGVkIFNESyBmYWlybHkgZWFzaWx5IGJ5IGZvbGxvd2luZyB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIG5lY2Vzc2FyeSwgaW5zdGFsbCBhbiBleHRlbnNpYmxlIFNESyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVzZSBhcyBhIGJhc2UgZm9yIHlvdXIgZGVyaXZhdGl2ZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSBlbnZpcm9ubWVudCBzY3JpcHQgZm9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBleHRyYSBsaWJyYXJpZXMgb3Igb3RoZXIgY29tcG9uZW50cyB5b3Ugd2FudCBieQorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzdGVwcyB0YWtlIHRoZSByZWNpcGVzIGFkZGVkIHRvIHRoZSB3b3Jrc3BhY2UgYW5kCisgICAgICAgICAgICBjb25zdHJ1Y3QgYSBuZXcgU0RLIGluc3RhbGxlciB0aGF0IGNvbnRhaW5zIHRob3NlIHJlY2lwZXMgYW5kIHRoZQorICAgICAgICAgICAgcmVzdWx0aW5nIGJpbmFyeSBhcnRpZmFjdHMuCisgICAgICAgICAgICBUaGUgcmVjaXBlcyBnbyBpbnRvIHRoZWlyIG93biBzZXBhcmF0ZSBsYXllciBpbiB0aGUgY29uc3RydWN0ZWQKKyAgICAgICAgICAgIGRlcml2YXRpdmUgU0RLLCB3aGljaCBsZWF2ZXMgdGhlIHdvcmtzcGFjZSBjbGVhbiBhbmQgcmVhZHkgZm9yCisgICAgICAgICAgICB1c2VycyB0byBhZGQgdGhlaXIgb3duIHJlY2lwZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ucnN0CmluZGV4IDVhMzQ2ZmEuLjgyYjdiY2YgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWludHJvLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqCiBJbnRyb2R1Y3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjY3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sCkBAIC0wLDAgKzEsMzUzIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3Nkay1pbnRybyc+Cis8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKworPHNlY3Rpb24gaWQ9J3Nkay1tYW51YWwtaW50cm8nPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGV4cGxhaW5zIGhvdyB0byB1c2UgYm90aCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCBleHRlbnNpYmxlIGFuZCBzdGFuZGFyZCBTREtzIHRvIGRldmVsb3AKKyAgICAgICAgYXBwbGljYXRpb25zIGFuZCBpbWFnZXMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgUHJpb3IgdG8gdGhlIDIuMCBSZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0LCBhcHBsaWNhdGlvbgorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgd2FzIHByaW1hcmlseSBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUgdXNlIG9mIHRoZQorICAgICAgICAgICAgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgVG9vbGtpdCAoQURUKSBhbmQgdGhlIGF2YWlsYWJpbGl0eQorICAgICAgICAgICAgb2Ygc3RhbmQtYWxvbmUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyBhbmQgb3RoZXIgdG9vbHMuCisgICAgICAgICAgICBXaXRoIHRoZSAyLjEgUmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdCwgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGhhcyB0cmFuc2l0aW9uZWQgdG8gd2l0aGluIGEgdG9vbC1yaWNoIGV4dGVuc2libGUgU0RLIGFuZCB0aGUgbW9yZQorICAgICAgICAgICAgdHJhZGl0aW9uYWwgc3RhbmRhcmQgU0RLLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEFsbCBTREtzIGNvbnNpc3Qgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgVGhpcyB0b29sY2hhaW4gY29udGFpbnMgYSBjb21waWxlciwgZGVidWdnZXIsIGFuZCB2YXJpb3VzCisgICAgICAgICAgICAgICAgbWlzY2VsbGFuZW91cyB0b29scy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGlicmFyaWVzLCBIZWFkZXJzLCBhbmQgU3ltYm9sczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgIFRoZSBsaWJyYXJpZXMsIGhlYWRlcnMsIGFuZCBzeW1ib2xzIGFyZSBzcGVjaWZpYyB0byB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAoaS5lLiB0aGV5IG1hdGNoIHRoZSBpbWFnZSkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVudmlyb25tZW50IFNldHVwIFNjcmlwdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgIFRoaXMgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPiBmaWxlLCBvbmNlIHJ1biwgc2V0cyB1cCB0aGUKKyAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudCBieSBkZWZpbmluZyB2YXJpYWJsZXMgYW5kCisgICAgICAgICAgICAgICAgcHJlcGFyaW5nIGZvciBTREsgdXNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBleHRlbnNpYmxlIFNESyBoYXMgdG9vbHMgdGhhdCBhbGxvdyB5b3UgdG8gZWFzaWx5IGFkZAorICAgICAgICBuZXcgYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMgdG8gYW4gaW1hZ2UsIG1vZGlmeSB0aGUgc291cmNlIG9mIGFuCisgICAgICAgIGV4aXN0aW5nIGNvbXBvbmVudCwgdGVzdCBjaGFuZ2VzIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUsIGFuZCBlYXNpbHkKKyAgICAgICAgaW50ZWdyYXRlIGFuIGFwcGxpY2F0aW9uIGludG8gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gdXNlIGFuIFNESyB0byBpbmRlcGVuZGVudGx5IGRldmVsb3AgYW5kIHRlc3QgY29kZQorICAgICAgICB0aGF0IGlzIGRlc3RpbmVkIHRvIHJ1biBvbiBzb21lIHRhcmdldCBtYWNoaW5lLgorICAgICAgICBTREtzIGFyZSBjb21wbGV0ZWx5IHNlbGYtY29udGFpbmVkLgorICAgICAgICBUaGUgYmluYXJpZXMgYXJlIGxpbmtlZCBhZ2FpbnN0IHRoZWlyIG93biBjb3B5IG9mCisgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4sIHdoaWNoIHJlc3VsdHMgaW4gbm8gZGVwZW5kZW5jaWVzCisgICAgICAgIG9uIHRoZSB0YXJnZXQgc3lzdGVtLgorICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHRoZSBwb2ludGVyIHRvIHRoZSBkeW5hbWljIGxvYWRlciBpcworICAgICAgICBjb25maWd1cmVkIGF0IGluc3RhbGwgdGltZSBzaW5jZSB0aGF0IHBhdGggY2Fubm90IGJlIGR5bmFtaWNhbGx5CisgICAgICAgIGFsdGVyZWQuCisgICAgICAgIFRoaXMgaXMgdGhlIHJlYXNvbiBmb3IgYSB3cmFwcGVyIGFyb3VuZCB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvcHVsYXRlX3NkazwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IGFyY2hpdmVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBbm90aGVyIGZlYXR1cmUgZm9yIHRoZSBTREtzIGlzIHRoYXQgb25seSBvbmUgc2V0IG9mIGNyb3NzLWNvbXBpbGVyCisgICAgICAgIHRvb2xjaGFpbiBiaW5hcmllcyBhcmUgcHJvZHVjZWQgZm9yIGFueSBnaXZlbiBhcmNoaXRlY3R1cmUuCisgICAgICAgIFRoaXMgZmVhdHVyZSB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGhhcmR3YXJlIGNhbgorICAgICAgICBiZSBwYXNzZWQgdG8gPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+IGFzIGEgc2V0IG9mIGNvbXBpbGVyIG9wdGlvbnMuCisgICAgICAgIFRob3NlIG9wdGlvbnMgYXJlIHNldCB1cCBieSB0aGUgZW52aXJvbm1lbnQgc2NyaXB0IGFuZCBjb250YWluZWQgaW4KKyAgICAgICAgdmFyaWFibGVzIHN1Y2ggYXMKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNDJz48ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGFuZAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEQnPjxmaWxlbmFtZT5MRDwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgIFRoaXMgcmVkdWNlcyB0aGUgc3BhY2UgbmVlZGVkIGZvciB0aGUgdG9vbHMuCisgICAgICAgIFVuZGVyc3RhbmQsIGhvd2V2ZXIsIHRoYXQgZXZlcnkgdGFyZ2V0IHN0aWxsIG5lZWRzIGEgc3lzcm9vdCBiZWNhdXNlCisgICAgICAgIHRob3NlIGJpbmFyaWVzIGFyZSB0YXJnZXQtc3BlY2lmaWMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBTREsgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc2VsZi1jb250YWluZWQgU0RLLCB3aGljaCBpcyBhbgorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjcm9zcy10b29sY2hhaW4gYW5kCisgICAgICAgICAgICAgICAgbWF0Y2hpbmcgc3lzcm9vdHMgKHRhcmdldCBhbmQgbmF0aXZlKSBhbGwgYnVpbHQgYnkgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoZS5nLiB0aGUgU0RLKS4KKyAgICAgICAgICAgICAgICBUaGUgdG9vbGNoYWluIGFuZCBzeXNyb290cyBhcmUgYmFzZWQgb24gYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhbmQgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRvIGNyb3NzLWRldmVsb3Agb24gdGhlIGhvc3QgbWFjaGluZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIGV4dGVuc2libGUgU0RLIGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpLCB3aGljaCBsZXRzIHlvdSBzaW11bGF0ZQorICAgICAgICAgICAgICAgIHRhcmdldCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICBRRU1VIGlzIG5vdCBsaXRlcmFsbHkgcGFydCBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IGJ1aWxkIGFuZCBpbmNsdWRlIHRoaXMgZW11bGF0b3Igc2VwYXJhdGVseS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBRRU1VIHBsYXlzIGFuIGltcG9ydGFudCByb2xlIGluIHRoZSBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhhdCByZXZvbHZlcyBhcm91bmQgdXNlIG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgZXh0ZW5zaWJsZSBhbmQgc3RhbmRhcmQgU0RLIHNoYXJlIG1hbnkgZmVhdHVyZXMuCisgICAgICAgIEhvd2V2ZXIsIHRoZSBleHRlbnNpYmxlIFNESyBoYXMgcG93ZXJmdWwgZGV2ZWxvcG1lbnQgdG9vbHMgdG8gaGVscCB5b3UKKyAgICAgICAgbW9yZSBxdWlja2x5IGRldmVsb3AgYXBwbGljYXRpb25zLgorICAgICAgICBGb2xsb3dpbmcgaXMgYSB0YWJsZSB0aGF0IHN1bW1hcml6ZXMgdGhlIHByaW1hcnkgZGlmZmVyZW5jZXMgYmV0d2VlbgorICAgICAgICB0aGUgc3RhbmRhcmQgYW5kIGV4dGVuc2libGUgU0RLIHR5cGVzIHdoZW4gY29uc2lkZXJpbmcgd2hpY2ggdG8KKyAgICAgICAgYnVpbGQ6CisgICAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSdub25lJz4KKyAgICAgICAgICAgIDx0Z3JvdXAgY29scz0nMycgYWxpZ249J2xlZnQnIGNvbHNlcD0nMScgcm93c2VwPScxJz4KKyAgICAgICAgICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSdjMScgY29sd2lkdGg9JzEqJy8+CisgICAgICAgICAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0nYzInIGNvbHdpZHRoPScxKicvPgorICAgICAgICAgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9J2MzJyBjb2x3aWR0aD0nMSonLz4KKyAgICAgICAgICAgICAgICA8dGhlYWQ+CisgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxlbXBoYXNpcz5GZWF0dXJlPC9lbXBoYXNpcz48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZW1waGFzaXM+U3RhbmRhcmQgU0RLPC9lbXBoYXNpcz48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZW1waGFzaXM+RXh0ZW5zaWJsZSBTREs8L2VtcGhhc2lzPjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgIDwvdGhlYWQ+CisgICAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5Ub29sY2hhaW48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5ZZXM8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5ZZXMqPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkRlYnVnZ2VyPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+WWVzPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+WWVzKjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5TaXplPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+MTAwKyBNQnl0ZXM8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij4xKyBHQnl0ZXMgKG9yIDMwMCsgTUJ5dGVzIGZvciBtaW5pbWFsIHcvdG9vbGNoYWluKTwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+Tm88L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5ZZXM8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+QnVpbGQgSW1hZ2VzPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+Tm88L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5ZZXM8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VXBkYXRlYWJsZTwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPk5vPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+WWVzPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPk1hbmFnZWQgU3lzcm9vdCoqPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+Tm88L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5ZZXM8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+SW5zdGFsbGVkIFBhY2thZ2VzPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+Tm8qKio8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5ZZXMqKioqPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkNvbnN0cnVjdGlvbjwvZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlBhY2thZ2VzPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+U2hhcmVkIFN0YXRlPC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGdyb3VwPgorICAgICAgICA8L2luZm9ybWFsdGFibGU+CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgKiBFeHRlbnNpYmxlIFNESyBjb250YWlucyB0aGUgdG9vbGNoYWluIGFuZCBkZWJ1Z2dlciBpZiA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L3VsaW5rPiBpcyAiZnVsbCIgb3IgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19JTkNMVURFX1RPT0xDSEFJTic+PGZpbGVuYW1lPlNES19JTkNMVURFX1RPT0xDSEFJTjwvZmlsZW5hbWU+PC91bGluaz4gaXMgIjEiLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4KKworICAgICAqKiBTeXNyb290IGlzIG1hbmFnZWQgdGhyb3VnaCB0aGUgdXNlIG9mIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uICBUaHVzLCBpdCBpcyBsZXNzIGxpa2VseSB0aGF0IHlvdSB3aWxsIGNvcnJ1cHQgeW91ciBTREsgc3lzcm9vdCB3aGVuIHlvdSB0cnkgdG8gYWRkIGFkZGl0aW9uYWwgbGlicmFyaWVzLgorCisgICAgICoqKiBZb3UgY2FuIGFkZCBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCB0byB0aGUgc3RhbmRhcmQgU0RLIGJ1dCBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgKioqKiBZb3UgbXVzdCBidWlsZCBhbmQgbWFrZSB0aGUgc2hhcmVkIHN0YXRlIGF2YWlsYWJsZSB0byBleHRlbnNpYmxlIFNESyB1c2VycyBmb3IgInBhY2thZ2VzIiB5b3Ugd2FudCB0byBlbmFibGUgdXNlcnMgdG8gaW5zdGFsbC4KKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSd0aGUtY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz4KKyAgICAgICAgPHRpdGxlPlRoZSBDcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjwvdWxpbms+CisgICAgICAgICAgICBjb25zaXN0cyBvZiBhIGNyb3NzLWNvbXBpbGVyLCBjcm9zcy1saW5rZXIsIGFuZCBjcm9zcy1kZWJ1Z2dlcgorICAgICAgICAgICAgdGhhdCBhcmUgdXNlZCB0byBkZXZlbG9wIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIGZvciB0YXJnZXRlZAorICAgICAgICAgICAgaGFyZHdhcmUuCisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGZvciBhbiBleHRlbnNpYmxlIFNESywgdGhlIHRvb2xjaGFpbiBhbHNvIGhhcworICAgICAgICAgICAgYnVpbHQtaW4gPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgVGhpcyB0b29sY2hhaW4gaXMgY3JlYXRlZCBieSBydW5uaW5nIGEgU0RLIGluc3RhbGxlciBzY3JpcHQKKyAgICAgICAgICAgIG9yIHRocm91Z2ggYQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgdGhhdCBpcyBiYXNlZCBvbiB5b3VyIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gb3IgZXh0ZW5zaW9uIGZvcgorICAgICAgICAgICAgeW91ciB0YXJnZXRlZCBkZXZpY2UuCisgICAgICAgICAgICBUaGUgY3Jvc3MtdG9vbGNoYWluIHdvcmtzIHdpdGggYSBtYXRjaGluZyB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzeXNyb290Jz4KKyAgICAgICAgPHRpdGxlPlN5c3Jvb3RzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBuYXRpdmUgYW5kIHRhcmdldCBzeXNyb290cyBjb250YWluIG5lZWRlZCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMKKyAgICAgICAgICAgIGZvciBnZW5lcmF0aW5nIGJpbmFyaWVzIHRoYXQgcnVuIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgVGhlIHRhcmdldCBzeXNyb290IGlzIGJhc2VkIG9uIHRoZSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtIGltYWdlCisgICAgICAgICAgICB0aGF0IGlzIGJ1aWx0IGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCB1c2VzIHRoZSBzYW1lCisgICAgICAgICAgICBtZXRhZGF0YSBjb25maWd1cmF0aW9uIHVzZWQgdG8gYnVpbGQgdGhlIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0aGUtcWVtdS1lbXVsYXRvcic+CisgICAgICAgIDx0aXRsZT5UaGUgUUVNVSBFbXVsYXRvcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgUUVNVSBlbXVsYXRvciBhbGxvd3MgeW91IHRvIHNpbXVsYXRlIHlvdXIgaGFyZHdhcmUgd2hpbGUKKyAgICAgICAgICAgIHJ1bm5pbmcgeW91ciBhcHBsaWNhdGlvbiBvciBpbWFnZS4KKyAgICAgICAgICAgIFFFTVUgaXMgbm90IHBhcnQgb2YgdGhlIFNESyBidXQgaXMgbWFkZSBhdmFpbGFibGUgYSBudW1iZXIgb2YKKyAgICAgICAgICAgIGRpZmZlcmVudCB3YXlzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGNsb25lZCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB0byBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBoYXZlIHNvdXJjZWQgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCwgUUVNVSBpcworICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgYW5kIGF1dG9tYXRpY2FsbHkgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGRvd25sb2FkZWQgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYW5kIHVucGFja2VkCisgICAgICAgICAgICAgICAgICAgIGl0IHRvIGNyZWF0ZSBhIFNvdXJjZSBEaXJlY3RvcnkgYW5kIHlvdSBoYXZlIHNvdXJjZWQgdGhlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCwgUUVNVSBpcyBpbnN0YWxsZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgY3Jvc3MtdG9vbGNoYWluIHRhcmJhbGwgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICBoYXZlIHNvdXJjZWQgdGhlIHRvb2xjaGFpbidzIHNldHVwIGVudmlyb25tZW50IHNjcmlwdCwgUUVNVQorICAgICAgICAgICAgICAgICAgICBpcyBhbHNvIGluc3RhbGxlZCBhbmQgYXV0b21hdGljYWxseSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdzZGstZGV2ZWxvcG1lbnQtbW9kZWwnPgorICAgIDx0aXRsZT5TREsgRGV2ZWxvcG1lbnQgTW9kZWw8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEZ1bmRhbWVudGFsbHksIHRoZSBTREsgZml0cyBpbnRvIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGFzIGZvbGxvd3M6CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGstZW52aXJvbm1lbnQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiBzY2FsZWZpdD0iMTAwIiAvPgorICAgICAgICBUaGUgU0RLIGlzIGluc3RhbGxlZCBvbiBhbnkgbWFjaGluZSBhbmQgY2FuIGJlIHVzZWQgdG8gZGV2ZWxvcAorICAgICAgICBhcHBsaWNhdGlvbnMsIGltYWdlcywgYW5kIGtlcm5lbHMuCisgICAgICAgIEFuIFNESyBjYW4gZXZlbiBiZSB1c2VkIGJ5IGEgUUEgRW5naW5lZXIgb3IgUmVsZWFzZSBFbmdpbmVlci4KKyAgICAgICAgVGhlIGZ1bmRhbWVudGFsIGNvbmNlcHQgaXMgdGhhdCB0aGUgbWFjaGluZSB0aGF0IGhhcyB0aGUgU0RLIGluc3RhbGxlZAorICAgICAgICBkb2VzIG5vdCBoYXZlIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFjaGluZSB0aGF0IGhhcyB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCBpbnN0YWxsZWQuCisgICAgICAgIEEgZGV2ZWxvcGVyIGNhbiBpbmRlcGVuZGVudGx5IGNvbXBpbGUgYW5kIHRlc3QgYW4gb2JqZWN0IG9uIHRoZWlyCisgICAgICAgIG1hY2hpbmUgYW5kIHRoZW4sIHdoZW4gdGhlIG9iamVjdCBpcyByZWFkeSBmb3IgaW50ZWdyYXRpb24gaW50byBhbgorICAgICAgICBpbWFnZSwgdGhleSBjYW4gc2ltcGx5IG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBtYWNoaW5lIHRoYXQgaGFzIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICBPbmNlIHRoZSBvYmplY3QgaXMgYXZhaWxhYmxlLCB0aGUgaW1hZ2UgY2FuIGJlIHJlYnVpbHQgdXNpbmcgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgdG8gcHJvZHVjZSB0aGUgbW9kaWZpZWQgaW1hZ2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBqdXN0IG5lZWQgdG8gZm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHM6CisgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgU0RLIGZvciB5b3VyIHRhcmdldCBoYXJkd2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCB0aGUgU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsaW5nLXRoZS1zZGsnPkluc3RhbGxpbmcgdGhlIFNESzwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgb3IgQnVpbGQgdGhlIFRhcmdldCBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgdGFyZ2V0IGFyY2hpdGVjdHVyZXMKKyAgICAgICAgICAgICAgICBhbmQgaGFzIG1hbnkgcHJlLWJ1aWx0IGtlcm5lbCBpbWFnZXMgYW5kIHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgIGltYWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIGdvaW5nIHRvIGRldmVsb3AgeW91ciBhcHBsaWNhdGlvbiBvbgorICAgICAgICAgICAgICAgIGhhcmR3YXJlLCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fTUFDSElORVNfRExfVVJMOyc+PGZpbGVuYW1lPm1hY2hpbmVzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGRvd25sb2FkIGFyZWEgYW5kIGNob29zZSBhIHRhcmdldCBtYWNoaW5lIGFyZWEKKyAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHRvIGRvd25sb2FkIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICBUaGlzIGRvd25sb2FkIGFyZWEgY291bGQgaGF2ZSBzZXZlcmFsIGZpbGVzIGluIGl0IHRoYXQKKyAgICAgICAgICAgICAgICBzdXBwb3J0IGRldmVsb3BtZW50IHVzaW5nIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGFyZWEgbWlnaHQgY29udGFpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uaGRkaW1nPC9maWxlbmFtZT4gZmlsZXMgdGhhdCBjb21iaW5lIHRoZQorICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSB3aXRoIHRoZSBmaWxlc3lzdGVtLCBib290IGxvYWRlcnMsIGFuZAorICAgICAgICAgICAgICAgIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gZ2V0IHRoZSBmaWxlcyB5b3UgbmVlZCBmb3IgeW91ciBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgcHJvY2Vzcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIGdvaW5nIHRvIGRldmVsb3AgeW91ciBhcHBsaWNhdGlvbiBhbmQKKyAgICAgICAgICAgICAgICB0aGVuIHJ1biBhbmQgdGVzdCBpdCB1c2luZyB0aGUgUUVNVSBlbXVsYXRvciwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1FFTVVfRExfVVJMOyc+PGZpbGVuYW1lPm1hY2hpbmVzL3FlbXU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZG93bmxvYWQgYXJlYS4KKyAgICAgICAgICAgICAgICBGcm9tIHRoaXMgYXJlYSwgZ28gZG93biBpbnRvIHRoZSBkaXJlY3RvcnkgZm9yIHlvdXIKKyAgICAgICAgICAgICAgICB0YXJnZXQgYXJjaGl0ZWN0dXJlIChlLmcuIDxmaWxlbmFtZT5xZW11eDg2XzY0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmb3IgYW4gPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4tYmFzZWQKKyAgICAgICAgICAgICAgICA2NC1iaXQgYXJjaGl0ZWN0dXJlKS4KKyAgICAgICAgICAgICAgICBEb3dubG9hZCB0aGUga2VybmVsLCByb290IGZpbGVzeXN0ZW0sIGFuZCBhbnkgb3RoZXIgZmlsZXMgeW91CisgICAgICAgICAgICAgICAgbmVlZCBmb3IgeW91ciBwcm9jZXNzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUbyB1c2UgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbiBRRU1VLCB5b3UgbmVlZCB0byBleHRyYWN0IGl0LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZXh0cmFjdGluZy10aGUtcm9vdC1maWxlc3lzdGVtJz5FeHRyYWN0aW5nIHRoZSBSb290IEZpbGVzeXN0ZW08L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXh0cmFjdCB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV2ZWxvcCBhbmQgVGVzdCB5b3VyIEFwcGxpY2F0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IGhhdmUgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBzZXBhcmF0ZWx5IGluc3RhbGwgYW5kIHVzZSB0aGUgUUVNVSBlbXVsYXRvciwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIGdvIHRvCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFpbl9QYWdlJz5RRU1VIEhvbWUgUGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gZG93bmxvYWQgYW5kIGxlYXJuIGFib3V0IHRoZSBlbXVsYXRvci4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIFFFTVUgd2l0aGluIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIGV4dGVuc2libGUKKyAgICAgICAgYW5kIHN0YW5kYXJkIFNES3MuCisgICAgICAgIEluZm9ybWF0aW9uIGFsc28gZXhpc3RzIGluIGFwcGVuZGl4IGZvcm0gdGhhdCBkZXNjcmliZXMgaG93IHlvdSBjYW4KKyAgICAgICAgYnVpbGQsIGluc3RhbGwsIGFuZCBtb2RpZnkgYW4gU0RLLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjg4MTZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiIHZlcnNpb249IjEuMCI+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9kb2Nib29rLW1pcnJvci9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKzwhLS0KKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInc2RrLXN0eWxlLmNzcyciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiPkE8L3hzbDpwYXJhbT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUuaWQuYXR0cmlidXRlcyIgc2VsZWN0PSIxIiAvPgorCis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnJzdAppbmRleCAxNzc4MjZlLi5kNzc3NmI3IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MzQ0NDc4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Ym9vayBpZD0nc2RrLW1hbnVhbCcgbGFuZz0nZW4nCisgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIKKyAgICAgIHhtbG5zPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgICAgID4KKyAgICA8Ym9va2luZm8+CisKKyAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0nZmlndXJlcy9zZGstdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspCisgICAgICAgIDwvdGl0bGU+CisKKyAgICAgICAgPGF1dGhvcmdyb3VwPgorICAgICAgICAgICAgPGF1dGhvcj4KKyAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTk8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgIDwvcmV2aGlzdG9yeT4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4mQ09QWVJJR0hUX1lFQVI7PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUgPHVsaW5rIHR5cGU9Imh0dHAiIHVybD0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL3VrLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkgQ3JlYXRpdmUgQ29tbW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgorICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICA8L25vdGU+CisgICAgPC9sZWdhbG5vdGljZT4KKworICAgIDwvYm9va2luZm8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstZXh0ZW5zaWJsZS54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay11c2luZy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay13b3JraW5nLXByb2plY3RzLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ic2RrLWFwcGVuZGl4LW9idGFpbi54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay1hcHBlbmRpeC1jdXN0b21pemluZy1zdGFuZGFyZC54bWwiLz4KKworPCEtLSAgICA8aW5kZXggaWQ9J2luZGV4Jz4KKyAgICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CisgICAgPC9pbmRleD4KKy0tPgorCis8L2Jvb2s+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1zdHlsZS5jc3MgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstc3R5bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwYzQ0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstc3R5bGUuY3NzCkBAIC0wLDAgKzEsOTkxIEBACisvKgorCisgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCisKKyAgIEdlbmVyaWMgWEhUTUwgLyBEb2NCb29rIFhIVE1MIENTUyBTdHlsZXNoZWV0LgorCisgICBCcm93c2VyIHdyYW5nbGluZyBhbmQgdHlwb2dyYXBoaWMgZGVzaWduIGJ5CisgICAgICBPeXZpbmQgS29sYXMgLyBwaXBwaW5AZ2ltcC5vcmcKKworICAgQ3VzdG9taXNlZCBmb3IgUG9reSBieQorICAgICAgTWF0dGhldyBBbGx1bSAvIG1hbGx1bUBvLWhhbmQuY29tCisKKyAgIFRoYW5rcyB0bzoKKyAgICAgTGlhbSBSLiBFLiBRdWluCisgICAgIFdpbGxpYW0gU2thZ2dzCisgICAgIEpha3ViIFN0ZWluZXIKKworICAgU3RydWN0dXJlCisgICAtLS0tLS0tLS0KKworICAgVGhlIHN0eWxlc2hlZXQgaXMgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisKKyAgICAgICBQb3NpdGlvbmluZworICAgICAgICAgIE1hcmdpbnMsIHBhZGRpbmdzLCB3aWR0aCwgZm9udC1zaXplLCBjbGVhcmluZy4KKyAgICAgICBEZWNvcmF0aW9ucworICAgICAgICAgIEJvcmRlcnMsIHN0eWxlCisgICAgICAgQ29sb3JzCisgICAgICAgICAgQ29sb3JzCisgICAgICAgR3JhcGhpY3MKKyAgICAgICAgICBHcmFwaGljYWwgYmFja2dyb3VuZHMKKyAgICAgICBOYXN0eSBJRSB0d2Vha3MKKyAgICAgICAgICBXb3JrYXJvdW5kcyBuZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluIGludGVybmV0IGV4cGxvcmVyLAorICAgICAgICAgIGN1cnJlbnRseSBtYWtlcyB0aGUgc3R5bGVzaGVldCBub24gdmFsaWRhdGluZywgYnV0IHVwIHVudGlsCisgICAgICAgICAgdGhpcyBwb2ludCBpdCBpcyB2YWxpZGF0aW5nLgorICAgICAgIE1vemlsbGEgZXh0ZW5zaW9ucworICAgICAgICAgIFRyYW5zcGFyZW5jeSBmb3IgZm9vdGVyCisJICBSb3VuZGVkIGNvcm5lcnMgb24gYm94ZXMKKworKi8KKworCisgIC8qKioqKioqKioqKioqKiogLworIC8gIFBvc2l0aW9uaW5nICAgLworLyAqKioqKioqKioqKioqKiovCisKK2JvZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYSwgU2Fucywgc2Fucy1zZXJpZjsKKworICBtaW4td2lkdGg6IDY0MHB4OworICB3aWR0aDogODAlOworICBtYXJnaW46ICAwZW0gYXV0bzsKKyAgcGFkZGluZzogMmVtIDVlbSA1ZW0gNWVtOworICBjb2xvcjogIzMzMzsKK30KKworaDEsaDIsaDMsaDQsaDUsaDYsaDcgeworICBmb250LWZhbWlseTogQXJpYWwsIFNhbnM7CisgIGNvbG9yOiAjMDA1NTdEOworICBjbGVhcjogYm90aDsKK30KKworaDEgeworICBmb250LXNpemU6IDJlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDJlbSAwZW0gMGVtIDBlbTsKK30KKworaDIuc3VidGl0bGUgeworICBtYXJnaW46IDAuMTBlbSAwZW0gMy4wZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS44ZW07CisgIHBhZGRpbmctbGVmdDogMjAlOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKK2gyIHsKKyAgbWFyZ2luOiAyZW0gMGVtIDAuNjZlbSAwZW07CisgIHBhZGRpbmc6IDAuNWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuNWVtOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDMuc3VidGl0bGUgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0Mi4xNCU7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitoMyB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDQgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTIwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g1IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNiB7CisgIG1hcmdpbjogMWVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy5hdXRob3Jncm91cCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBwYWRkaW5nLXRvcDogMjU2cHg7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy9zZGstdGl0bGUucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOworICBtYXJnaW4tdG9wOiAtMjU2cHg7CisgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CisgIG1hcmdpbi1sZWZ0OiAwcHg7CisgIHRleHQtYWxpZ246IHJpZ2h0OworICB3aWR0aDogNzQwcHg7Cit9CisKK2gzLmF1dGhvciB7CisgIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc2l6ZTogMTAwJTsKKyAgY29sb3I6ICMzMzM7CisgIGNsZWFyOiBib3RoOworfQorCisuYXV0aG9yIHR0LmVtYWlsIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKKy50aXRsZXBhZ2UgaHIgeworICB3aWR0aDogMGVtOworICBjbGVhcjogYm90aDsKK30KKworLnJldmhpc3RvcnkgeworICBwYWRkaW5nLXRvcDogMmVtOworICBjbGVhcjogYm90aDsKK30KKworLnRvYywKKy5saXN0LW9mLXRhYmxlcywKKy5saXN0LW9mLWV4YW1wbGVzLAorLmxpc3Qtb2YtZmlndXJlcyB7CisgIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOworICBjb2xvcjogIzAwNTU3RDsKK30KKworLnRvYyBwLAorLmxpc3Qtb2YtdGFibGVzIHAsCisubGlzdC1vZi1maWd1cmVzIHAsCisubGlzdC1vZi1leGFtcGxlcyBwIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOworICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIHAgYiwKKy5saXN0LW9mLXRhYmxlcyBwIGIsCisubGlzdC1vZi1maWd1cmVzIHAgYiwKKy5saXN0LW9mLWV4YW1wbGVzIHAgYnsKKyAgZm9udC1zaXplOiAxMDAuMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisudG9jIGRsLAorLmxpc3Qtb2YtdGFibGVzIGRsLAorLmxpc3Qtb2YtZmlndXJlcyBkbCwKKy5saXN0LW9mLWV4YW1wbGVzIGRsIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGR0IHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkZCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2Lmdsb3NzYXJ5IGRsLAorZGl2LnZhcmlhYmxlbGlzdCBkbCB7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHdpZHRoOiAyMGVtOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnZhcmlhYmxlbGlzdCBkbCBkdCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworfQorCisuZ2xvc3NhcnkgZGwgZGQsCisudmFyaWFibGVsaXN0IGRsIGRkIHsKKyAgbWFyZ2luLXRvcDogLTFlbTsKKyAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKK30KKworLmdsb3NzYXJ5IGRkIHAsCisudmFyaWFibGVsaXN0IGRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYgcC5jb3B5cmlnaHQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7CisgIG1hcmdpbi1ib3R0b206IDBlbTsKK30KKworcCB7CisgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworCit9CisKK2RsIHsKKyAgcGFkZGluZy10b3A6IDBlbTsKK30KKworaHIgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworCisubWVkaWFvYmplY3QsCisubWVkaWFvYmplY3RjbyB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nIHsKKyAgYm9yZGVyOiBub25lOworfQorCit1bCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOworfQorCit1bCBsaSB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKwordWwgbGkgcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGggOjEwMCU7Cit9CisKK3RoIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworcCBhW2lkXSB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7CisgIGRpc3BsYXk6IGlubGluZTsKKyAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworYSB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBjb2xvcjogIzQ0NDsKK30KKworcHJlIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKK30KKworYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCit9CisKKy8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKKyAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCisgICB0aGUgbW91c2UuICovCisKK1thbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KK1thbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9CisKKworZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlIHsKKyAgbWFyZ2luOiAxZW0gMGVtOworICBwYWRkaW5nOiAxZW07CisgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworCitkaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCitkaXYuZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5leGFtcGxlIHAudGl0bGUgYiwKK2Rpdi50YWJsZSBwLnRpdGxlIGJ7CisgICAgcGFkZGluZy10b3A6IDBlbTsKKyAgICBtYXJnaW4tdG9wOiAwZW07CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiwKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKKyAgcGFkZGluZy1ib3R0b206IDAuNWVtOworfQorCisuZXBpZ3JhcGggeworICBwYWRkaW5nLWxlZnQ6IDU1JTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZXBpZ3JhcGggcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5lcGlncmFwaCAucXVvdGUgeworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisuZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKKyAgZm9udC1zdHlsZTogbm9ybWFsOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworc3Bhbi5hcHBsaWNhdGlvbiB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnByb2dyYW1saXN0aW5nIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgZm9udC1zaXplOiA4MCU7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIG1hcmdpbjogMS4zM2VtIDBlbTsKKyAgcGFkZGluZzogMS4zM2VtOworfQorCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgbWFyZ2luLXRvcDogMWVtOworICBtYXJnaW4tYm90dG9tOiAxZW07CisKK30KKworLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCisudGlwIHRhYmxlLAorLndhcm5pbmcgdGFibGUsCisuY2F1dGlvbiB0YWJsZSwKKy5ub3RlIHRhYmxlIHsKKyAgYm9yZGVyOiBub25lOworICB3aWR0aDogMTAwJTsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07CisgIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRpcCBwLAorLndhcm5pbmcgcCwKKy5jYXV0aW9uIHAsCisubm90ZSBwIHsKKyAgbWFyZ2luLXRvcDogMC41ZW07CisgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAxZW07CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5hY3JvbnltIHsKKyAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgcGFkZGluZzogMC4wOWVtIDAuM2VtOworICBtYXJnaW46IDBlbTsKK30KKworLml0ZW1pemVkbGlzdCBsaSB7CisgIGNsZWFyOiBub25lOworfQorCisuZmlsZW5hbWUgeworICBmb250LXNpemU6IG1lZGl1bTsKKyAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwZW07CisgIHRvcDogMGVtOworICB3aWR0aDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBwb3NpdGlvbjogZml4ZWQ7CisgIGxlZnQ6IDBlbTsKKyAgYm90dG9tOiAwZW07CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIHdpZHRoOiAxMDAlOworfQorCisKK2Rpdi5uYXZoZWFkZXIgdGQsCitkaXYubmF2Zm9vdGVyIHRkIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGggeworICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KKyAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KKyAgZm9udC1zaXplOiA4MCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLXRvcDogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItYm90dG9tOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgeworICBjb2xvcjogIzc3NzsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKKyAgY29sb3I6IGJsYWNrOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKKworLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgY29sb3I6ICMzM2E7Cit9CisKK2Rpdi5uYXZoZWFkZXIgaHIsCitkaXYubmF2Zm9vdGVyIGhyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCisucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisuYW5zd2VyIHRkIHsKKyAgcGFkZGluZy1ib3R0b206IDEuNWVtOworfQorCisuZW1waGFzaXMgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCisgIC8qKioqKioqKioqKioqIC8KKyAvIGRlY29yYXRpb25zICAvCisvICoqKioqKioqKioqKiovCisKKy50aXRsZXBhZ2UgeworfQorCisucGFydCAudGl0bGUgeworfQorCisuc3VidGl0bGUgeworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyoKK2gxIHsKKyAgYm9yZGVyOiBub25lOworfQorCitoMiB7CisgIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2gzIHsKKyAgYm9yZGVyLXRvcDogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g0IHsKKyAgYm9yZGVyOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDUgeworICBib3JkZXI6IDBlbTsKK30KKyovCisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworLnF1ZXN0aW9uIHRkIHsKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisuYW5zd2VyIHsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBib3JkZXItdG9wOiAxcHggc29saWQ7Cit9CisKKyAgLyoqKioqKioqKiAvCisgLyAgY29sb3JzICAvCisvICoqKioqKioqKi8KKworYm9keSB7CisgIGNvbG9yOiAjMzMzOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworYSB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCithOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKK30KKworCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoNywKK2g4IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2hyIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCisKKy50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgeworICBib3JkZXItY29sb3I6ICNmZmY7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cit9CisKKworLndhcm5pbmcgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy50aXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisubm90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiAjZmYwMDAwOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstdXNpbmcucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXVzaW5nLnJzdAppbmRleCA0YjE1MWU0Li4wOWExOTRjIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstdXNpbmcucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay11c2luZy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioKIFVzaW5nIHRoZSBTdGFuZGFyZCBTREsKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay11c2luZy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstdXNpbmcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZWU1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstdXNpbmcueG1sCkBAIC0wLDAgKzEsMjAxIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3Nkay11c2luZy10aGUtc3RhbmRhcmQtc2RrJz4KKyAgICA8dGl0bGU+VXNpbmcgdGhlIFN0YW5kYXJkIFNESzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgc3RhbmRhcmQgU0RLIGFuZCBob3cgdG8gaW5zdGFsbCBpdC4KKyAgICAgICAgSW5mb3JtYXRpb24gaW5jbHVkZXMgdW5pcXVlIGluc3RhbGxhdGlvbiBhbmQgc2V0dXAgYXNwZWN0cyBmb3IgdGhlCisgICAgICAgIHN0YW5kYXJkIFNESy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBGb3IgYSBzaWRlLWJ5LXNpZGUgY29tcGFyaXNvbiBvZiBtYWluIGZlYXR1cmVzIHN1cHBvcnRlZCBmb3IgYQorICAgICAgICAgICAgc3RhbmRhcmQgU0RLIGFzIGNvbXBhcmVkIHRvIGFuIGV4dGVuc2libGUgU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLW1hbnVhbC1pbnRybyc+SW50cm9kdWN0aW9uPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiB1c2UgYSBzdGFuZGFyZCBTREsgdG8gd29yayBvbiBNYWtlZmlsZSBhbmQgQXV0b3Rvb2xzLWJhc2VkCisgICAgICAgIHByb2plY3RzLgorICAgICAgICBTZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+VXNpbmcgdGhlIFNESyBUb29sY2hhaW4gRGlyZWN0bHk8L2xpbms+IgorICAgICAgICBjaGFwdGVyIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdzZGstc3RhbmRhcmQtc2RrLWludHJvJz4KKyAgICAgICAgPHRpdGxlPldoeSB1c2UgdGhlIFN0YW5kYXJkIFNESyBhbmQgV2hhdCBpcyBpbiBJdD88L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFN0YW5kYXJkIFNESyBwcm92aWRlcyBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBhbmQKKyAgICAgICAgICAgIGxpYnJhcmllcyB0YWlsb3JlZCB0byB0aGUgY29udGVudHMgb2YgYSBzcGVjaWZpYyBpbWFnZS4KKyAgICAgICAgICAgIFlvdSB3b3VsZCB1c2UgdGhlIFN0YW5kYXJkIFNESyBpZiB5b3Ugd2FudCBhIG1vcmUgdHJhZGl0aW9uYWwKKyAgICAgICAgICAgIHRvb2xjaGFpbiBleHBlcmllbmNlIGFzIGNvbXBhcmVkIHRvIHRoZSBleHRlbnNpYmxlIFNESywgd2hpY2gKKyAgICAgICAgICAgIHByb3ZpZGVzIGFuIGludGVybmFsIGJ1aWxkIHN5c3RlbSBhbmQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBpbnN0YWxsZWQgU3RhbmRhcmQgU0RLIGNvbnNpc3RzIG9mIHNldmVyYWwgZmlsZXMgYW5kCisgICAgICAgICAgICBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIEJhc2ljYWxseSwgaXQgY29udGFpbnMgYW4gU0RLIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCwgc29tZQorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGhvc3QgYW5kIHRhcmdldCByb290IGZpbGVzeXN0ZW1zIHRvCisgICAgICAgICAgICBzdXBwb3J0IHVzYWdlLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIFN0YW5kYXJkIFNESyBEaXJlY3RvcnkgU3RydWN0dXJlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+CisgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBTREs8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIGluc3RhbGwgdGhlIFNESyBvbiB5b3VyCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+QnVpbGQgSG9zdDwvdWxpbms+CisgICAgICAgICAgICBieSBydW5uaW5nIHRoZSA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGluc3RhbGxhdGlvbiBzY3JpcHQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZG93bmxvYWQgYSB0YXJiYWxsIGluc3RhbGxlciwgd2hpY2ggaW5jbHVkZXMgdGhlCisgICAgICAgICAgICBwcmUtYnVpbHQgdG9vbGNoYWluLCB0aGUgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc2NyaXB0LCBhbmQgc3VwcG9ydCBmaWxlcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz50b29sY2hhaW48L3VsaW5rPgorICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgSW5kZXggb2YgUmVsZWFzZXMuCisgICAgICAgICAgICBUb29sY2hhaW5zIGFyZSBhdmFpbGFibGUgZm9yIHNldmVyYWwgMzItYml0IGFuZCA2NC1iaXQKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgd2l0aCB0aGUgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLAorICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgVGhlIHRvb2xjaGFpbnMgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYXJlIGJhc2VkIG9mZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZXMgYW5kIGNvbnRhaW4KKyAgICAgICAgICAgIGxpYnJhcmllcyBhcHByb3ByaWF0ZSBmb3IgZGV2ZWxvcGluZyBhZ2FpbnN0IHRoYXQgaW1hZ2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFyYmFsbCBpbnN0YWxsZXIgc2NyaXB0cyBhcmUgc3VjaCB0aGF0IGEKKyAgICAgICAgICAgIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGhvc3Qgc3lzdGVtIGFwcGVhcnMgZmlyc3QgaW4gdGhlCisgICAgICAgICAgICBmaWxlbmFtZSBhbmQgdGhlbiBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHN0cmluZworICAgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5LWdsaWJjLTxyZXBsYWNlYWJsZT5ob3N0X3N5c3RlbTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi10b29sY2hhaW4tPHJlcGxhY2VhYmxlPnJlbGVhc2VfdmVyc2lvbjwvcmVwbGFjZWFibGU+LnNoCisKKyAgICAgV2hlcmU6CisgICAgICAgICA8cmVwbGFjZWFibGU+aG9zdF9zeXN0ZW08L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW06CisKKyAgICAgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdDoKKworICAgICAgICAgICAgICAgICAgICBjb3JlLWltYWdlLW1pbmltYWwgb3IgY29yZS1pbWFnZS1zYXRvLgorCisgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZToKKworICAgICAgICAgICAgICAgICAgICBhYXJjaDY0LCBhcm12NWUsIGNvcmUyLTY0LCBpNTg2LCBtaXBzMzJyMiwgbWlwczY0LCBwcGM3NDAwLCBvciBjb3J0ZXhhOGhmLW5lb24uCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlX3ZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZSBZb2N0byBQcm9qZWN0OgorCisgICAgICAgICAgICAgICAgICAgICZESVNUUk87LCAmRElTVFJPOytzbmFwc2hvdAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgU0RLIGluc3RhbGxlciBpcyBmb3IgYSA2NC1iaXQKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3Qgc3lzdGVtIGFuZCBhIGk1ODYtdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgYmFzZWQgb2ZmIHRoZSBTREsgZm9yIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIHVzaW5nIHRoZSBjdXJyZW50ICZESVNUUk87IHNuYXBzaG90OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8taTU4Ni10b29sY2hhaW4tJkRJU1RSTzsuc2gKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlIHRvIGRvd25sb2FkaW5nIGFuIFNESywgeW91IGNhbiBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICBTREsgaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyB0aGUgaW5zdGFsbGVyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgU0RLIGFuZCB0b29sY2hhaW5zIGFyZSBzZWxmLWNvbnRhaW5lZCBhbmQgYnkgZGVmYXVsdCBhcmUKKyAgICAgICAgICAgIGluc3RhbGxlZCBpbnRvIHRoZSA8ZmlsZW5hbWU+cG9reV9zZGs8L2ZpbGVuYW1lPiBmb2xkZXIgaW4geW91cgorICAgICAgICAgICAgaG9tZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBZb3UgY2FuIGNob29zZSB0byBpbnN0YWxsIHRoZSBleHRlbnNpYmxlIFNESyBpbiBhbnkgbG9jYXRpb24gd2hlbgorICAgICAgICAgICAgeW91IHJ1biB0aGUgaW5zdGFsbGVyLgorICAgICAgICAgICAgSG93ZXZlciwgYmVjYXVzZSBmaWxlcyBuZWVkIHRvIGJlIHdyaXR0ZW4gdW5kZXIgdGhhdCBkaXJlY3RvcnkKKyAgICAgICAgICAgIGR1cmluZyB0aGUgbm9ybWFsIGNvdXJzZSBvZiBvcGVyYXRpb24sIHRoZSBsb2NhdGlvbiB5b3UgY2hvb3NlCisgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uIG11c3QgYmUgd3JpdGFibGUgZm9yIHdoaWNoZXZlcgorICAgICAgICAgICAgdXNlcnMgbmVlZCB0byB1c2UgdGhlIFNESy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIGhvdyB0byBydW4gdGhlIGluc3RhbGxlciBnaXZlbiBhCisgICAgICAgICAgICB0b29sY2hhaW4gdGFyYmFsbCBmb3IgYSA2NC1iaXQgeDg2IGRldmVsb3BtZW50IGhvc3Qgc3lzdGVtIGFuZAorICAgICAgICAgICAgYSA2NC1iaXQgeDg2IHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICBUaGUgZXhhbXBsZSBhc3N1bWVzIHRoZSBTREsgaW5zdGFsbGVyIGlzIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5+L0Rvd25sb2Fkcy88L2ZpbGVuYW1lPiBhbmQgaGFzIGV4ZWN1dGlvbiByaWdodHMuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpbnRvIHdoaWNoIHlvdSBhcmUgaW5zdGFsbGluZyB0aGUgU0RLLCB0aGUgaW5zdGFsbGVyCisgICAgICAgICAgICAgICAgbm90aWZpZXMgeW91IGFuZCBleGl0cy4KKyAgICAgICAgICAgICAgICBGb3IgdGhhdCBjYXNlLCBzZXQgdXAgdGhlIHByb3BlciBwZXJtaXNzaW9ucyBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgYW5kIHJ1biB0aGUgaW5zdGFsbGVyIGFnYWluLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vRG93bmxvYWRzL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAorICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIFNESyBpbnN0YWxsZXIgdmVyc2lvbiAmRElTVFJPOworICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgRW50ZXIgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgU0RLIChkZWZhdWx0OiAvb3B0L3Bva3kvJkRJU1RSTzspOgorICAgICBZb3UgYXJlIGFib3V0IHRvIGluc3RhbGwgdGhlIFNESyB0byAiL29wdC9wb2t5LyZESVNUUk87Ii4gUHJvY2VlZCBbWS9uXT8gWQorICAgICBFeHRyYWN0aW5nIFNESy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uZG9uZQorICAgICBTZXR0aW5nIGl0IHVwLi4uZG9uZQorICAgICBTREsgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldCB1cCBhbmQgaXMgcmVhZHkgdG8gYmUgdXNlZC4KKyAgICAgRWFjaCB0aW1lIHlvdSB3aXNoIHRvIHVzZSB0aGUgU0RLIGluIGEgbmV3IHNoZWxsIHNlc3Npb24sIHlvdSBuZWVkIHRvIHNvdXJjZSB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGUuZy4KKyAgICAgICQgLiAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFnYWluLCByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIFN0YW5kYXJkIFNESyBEaXJlY3RvcnkgU3RydWN0dXJlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgcmVzdWx0aW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YKKyAgICAgICAgICAgIHRoZSBpbnN0YWxsZWQgU0RLLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Nkay1ydW5uaW5nLXRoZS1zZGstZW52aXJvbm1lbnQtc2V0dXAtc2NyaXB0Jz4KKyAgICAgICAgPHRpdGxlPlJ1bm5pbmcgdGhlIFNESyBFbnZpcm9ubWVudCBTZXR1cCBTY3JpcHQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgU0RLIGluc3RhbGxlZCwgeW91IG11c3QgcnVuIHRoZSBTREsgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHNldHVwIHNjcmlwdCBiZWZvcmUgeW91IGNhbiBhY3R1YWxseSB1c2UgdGhlIFNESy4KKyAgICAgICAgICAgIFRoaXMgc2V0dXAgc2NyaXB0IHJlc2lkZXMgaW4gdGhlIGRpcmVjdG9yeSB5b3UgY2hvc2Ugd2hlbiB5b3UKKyAgICAgICAgICAgIGluc3RhbGxlZCB0aGUgU0RLLCB3aGljaCBpcyBlaXRoZXIgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb3IgdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgeW91IGNob3NlIGR1cmluZyBpbnN0YWxsYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlZm9yZSBydW5uaW5nIHRoZSBzY3JpcHQsIGJlIHN1cmUgaXQgaXMgdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICBhcmNoaXRlY3R1cmUgZm9yIHdoaWNoIHlvdSBhcmUgZGV2ZWxvcGluZy4KKyAgICAgICAgICAgIEVudmlyb25tZW50IHNldHVwIHNjcmlwdHMgYmVnaW4gd2l0aCB0aGUgc3RyaW5nCisgICAgICAgICAgICAiPGZpbGVuYW1lPmVudmlyb25tZW50LXNldHVwPC9maWxlbmFtZT4iIGFuZCBpbmNsdWRlIGFzIHBhcnQgb2YKKyAgICAgICAgICAgIHRoZWlyIG5hbWUgdGhlIHR1bmVkIHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHNldCB0aGUgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgICAgIHRvIHdoZXJlIHRoZSBTREsgd2FzIGluc3RhbGxlZCBhbmQgdGhlbiBzb3VyY2UgdGhlIGVudmlyb25tZW50CisgICAgICAgICAgICBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBzZXR1cCBzY3JpcHQgaXMgZm9yIGFuIElBLWJhc2VkCisgICAgICAgICAgICB0YXJnZXQgbWFjaGluZSB1c2luZyBpNTg2IHR1bmluZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgL29wdC9wb2t5LyZESVNUUk87L2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQsIHRoZSBzYW1lIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUKKyAgICAgICAgICAgIGRlZmluZWQgYXMgYXJlIHdoZW4geW91IHJ1biB0aGUgc2V0dXAgc2NyaXB0IGZvciBhbiBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstcnVubmluZy10aGUtZXh0ZW5zaWJsZS1zZGstZW52aXJvbm1lbnQtc2V0dXAtc2NyaXB0Jz5SdW5uaW5nIHRoZSBFeHRlbnNpYmxlIFNESyBFbnZpcm9ubWVudCBTZXR1cCBTY3JpcHQ8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMucnN0CmluZGV4IDVjODI4ZmQuLjJjMjBhMWUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay13b3JraW5nLXByb2plY3RzLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstd29ya2luZy1wcm9qZWN0cy5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBVc2luZyB0aGUgU0RLIFRvb2xjaGFpbiBEaXJlY3RseQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MGQ5MDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstd29ya2luZy1wcm9qZWN0cy54bWwKQEAgLTAsMCArMSw1MTEgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0nc2RrLXdvcmtpbmctcHJvamVjdHMnPgorCisgICAgPHRpdGxlPlVzaW5nIHRoZSBTREsgVG9vbGNoYWluIERpcmVjdGx5PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIHVzZSB0aGUgU0RLIHRvb2xjaGFpbiBkaXJlY3RseSB3aXRoIE1ha2VmaWxlIGFuZAorICAgICAgICBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdHMuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2F1dG90b29scy1iYXNlZC1wcm9qZWN0cyc+CisgICAgICAgIDx0aXRsZT5BdXRvdG9vbHMtQmFzZWQgUHJvamVjdHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBhIHN1aXRhYmxlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPmNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbjwvdWxpbms+CisgICAgICAgICAgICBpbnN0YWxsZWQsIGl0IGlzIHZlcnkgZWFzeSB0byBkZXZlbG9wIGEgcHJvamVjdCB1c2luZyB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dOVV9CdWlsZF9TeXN0ZW0nPkdOVSBBdXRvdG9vbHMtYmFzZWQ8L3VsaW5rPgorICAgICAgICAgICAgd29ya2Zsb3csIHdoaWNoIGlzIG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBwcmVzZW50cyBhIHNpbXBsZSBBdXRvdG9vbHMgd29ya2Zsb3cuCisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyIgd2lkdGg9IjdpbiIgaGVpZ2h0PSI4aW4iIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYSBzaW1wbGUgQXV0b3Rvb2xzLWJhc2VkCisgICAgICAgICAgICAiSGVsbG8gV29ybGQiIHByb2plY3Q6CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgR05VIEF1dG90b29scyB3b3JrZmxvdywKKyAgICAgICAgICAgICAgICBzZWUgdGhlIHNhbWUgZXhhbXBsZSBvbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvYW5qdXRhLWJ1aWxkLXR1dG9yaWFsL3N0YWJsZS9jcmVhdGUtYXV0b3Rvb2xzLmh0bWwuZW4nPkdOT01FIERldmVsb3BlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgc2l0ZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBXb3JraW5nIERpcmVjdG9yeSBhbmQgUG9wdWxhdGUgSXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGEgY2xlYW4gZGlyZWN0b3J5IGZvciB5b3VyIHByb2plY3QgYW5kIHRoZW4gbWFrZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGRpcmVjdG9yeSB5b3VyIHdvcmtpbmcgbG9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBta2RpciAkSE9NRS9oZWxsb3dvcmxkCisgICAgICQgY2QgJEhPTUUvaGVsbG93b3JsZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNldHRpbmcgdXAgdGhlIGRpcmVjdG9yeSwgcG9wdWxhdGUgaXQgd2l0aCBmaWxlcworICAgICAgICAgICAgICAgICAgICBuZWVkZWQgZm9yIHRoZSBmbG93LgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCBhIHByb2plY3Qgc291cmNlIGZpbGUsIGEgZmlsZSB0byBoZWxwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgYW5kIGEgZmlsZSB0byBoZWxwIGNyZWF0ZSB0aGUgTWFrZWZpbGUsCisgICAgICAgICAgICAgICAgICAgIGFuZCBhIFJFQURNRSBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVsbG8uYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPiBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGNyZWF0ZSBhbiBlbXB0eSBSRUFETUUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgcmVxdWlyZWQgYnkgR05VIENvZGluZyBTdGFuZGFyZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB0b3VjaCBSRUFETUUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDcmVhdGUgdGhlIHJlbWFpbmluZyB0aHJlZSBmaWxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aGVsbG8uYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKKworICAgICBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICBwcmludGYoIkhlbGxvIFdvcmxkIVxuIik7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5jb25maWd1cmUuYWM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQUNfSU5JVChoZWxsbywwLjEpCisgICAgIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQorICAgICBBQ19QUk9HX0NDCisgICAgIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSkKKyAgICAgQUNfT1VUUFVUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYmluX1BST0dSQU1TID0gaGVsbG8KKyAgICAgaGVsbG9fU09VUkNFUyA9IGhlbGxvLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgdGhlIENyb3NzLVRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCBTZXR1cCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoZSBtYW51YWwsIGluc3RhbGxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBjcmVhdGVzIGEgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgdGhlIFNESworICAgICAgICAgICAgICAgICAgICB3YXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBwcm9qZWN0LAorICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBzb3VyY2UgdGhpcyBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYmVnaW5zIHdpdGggdGhlIHN0cmluZyAiZW52aXJvbm1lbnQtc2V0dXAiCisgICAgICAgICAgICAgICAgICAgIGFuZCBjb250YWlucyB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgInBva3ktbGludXgiLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgY29tbWFuZCBzb3VyY2VzIGEgc2NyaXB0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdGhhdCB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAzMi1iaXQgSW50ZWwgeDg2IEFyY2hpdGVjdHVyZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICZESVNUUk9fTkFNRTsgWW9jdG8gUHJvamVjdCByZWxlYXNlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIC9vcHQvcG9reS8mRElTVFJPOy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiBTY3JpcHQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+YXV0b3JlY29uZjwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGhlIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBhdXRvcmVjb25mCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvcmVjb25mPC9maWxlbmFtZT4gdG9vbCB0YWtlcyBjYXJlCisgICAgICAgICAgICAgICAgICAgIG9mIHJ1bm5pbmcgdGhlIG90aGVyIEF1dG90b29scyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9tYWtlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGdldCBlcnJvcnMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmZpZ3VyZS5hYzwvZmlsZW5hbWU+LCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9yZWNvbmY8L2ZpbGVuYW1lPiBydW5zLCB0aGF0IGluZGljYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nIGZpbGVzLCB5b3UgY2FuIHVzZSB0aGUgIi1pIiBvcHRpb24sIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmVzIG1pc3NpbmcgYXV4aWxpYXJ5IGZpbGVzIGFyZSBjb3BpZWQgdG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyb3NzLUNvbXBpbGUgdGhlIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNvbXBpbGVzIHRoZSBwcm9qZWN0IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdVUkVfRkxBR1MnPjxmaWxlbmFtZT5DT05GSUdVUkVfRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHByb3ZpZGVzIHRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IKKyAgICAgICAgICAgICAgICAgICAgR05VIGNvbmZpZ3VyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vY29uZmlndXJlICR7Q09ORklHVVJFX0ZMQUdTfQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciBhbiBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdCwgeW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBieSBqdXN0IHBhc3NpbmcgdGhlIGFwcHJvcHJpYXRlIGhvc3QKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIDxmaWxlbmFtZT5jb25maWd1cmUuc2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGhvc3Qgb3B0aW9uIHlvdSB1c2UgaXMgZGVyaXZlZCBmcm9tIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaAorICAgICAgICAgICAgICAgICAgICB5b3UgaW5zdGFsbGVkIHRoZSBjcm9zcy10b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgaG9zdCBvcHRpb24gZm9yIGFuIEFSTS1iYXNlZCB0YXJnZXQgdGhhdAorICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSBHTlUgRUFCSSBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZW52aXJvbm1lbnQtc2V0dXAtYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGZvbGxvd2luZyBjb21tYW5kIHdvcmtzIHRvIHVwZGF0ZSB5b3VyIHByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgYW5kIHJlYnVpbGQgaXQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGNyb3NzLXRvb2xjaGFpbiB0b29sczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vY29uZmlndXJlIC0taG9zdD1hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaSAtLXdpdGgtbGlidG9vbC1zeXNyb290PTxyZXBsYWNlYWJsZT5zeXNyb290X2RpcjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBhbmQgSW5zdGFsbCB0aGUgUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGVzZSB0d28gY29tbWFuZHMgZ2VuZXJhdGUgYW5kIGluc3RhbGwgdGhlIHByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWFrZQorICAgICAkIG1ha2UgaW5zdGFsbCBERVNURElSPS4vdG1wCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBsZWFybiBhYm91dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZXN0YWJsaXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHJ1biB0aGUgY3Jvc3MtdG9vbGNoYWluIGVudmlyb25tZW50IHNldHVwCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYW5kIGhvdyB0aGV5IGFyZSB1c2VkIG9yIG92ZXJyaWRkZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE1ha2VmaWxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGNvbW1hbmQgaXMgYSBzaW1wbGUgd2F5IHRvIHZlcmlmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIG9mIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGUgY29tbWFuZCBwcmludHMgdGhlIGFyY2hpdGVjdHVyZSBvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICB0aGUgYmluYXJ5IGZpbGUgY2FuIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgc2hvdWxkIGJlIHRoZSBzYW1lIGFyY2hpdGVjdHVyZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsZWQgY3Jvc3MtdG9vbGNoYWluIHN1cHBvcnRzLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZmlsZSAuL3RtcC91c3IvbG9jYWwvYmluL2hlbGxvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSBZb3VyIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgcHJvamVjdCwgeW91IHdvdWxkIG5lZWQgdG8gcnVuIGl0IG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHRhcmdldCBoYXJkd2FyZSBoYXBwZW5zIHRvIGJlIHlvdXIgYnVpbGQgaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHJ1biB0aGUgcHJvamVjdCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi90bXAvdXNyL2xvY2FsL2Jpbi9oZWxsbworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21ha2VmaWxlLWJhc2VkLXByb2plY3RzJz4KKyAgICAgICAgPHRpdGxlPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNpbXBsZSBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cyB1c2UgYW5kIGludGVyYWN0IHdpdGggdGhlCisgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzIGVzdGFibGlzaGVkIHdoZW4geW91IHJ1bgorICAgICAgICAgICAgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzdWJqZWN0IHRvIGdlbmVyYWwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcnVsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHNpbXBsZSBNYWtlZmlsZSBkZXZlbG9wbWVudCBmbG93IGFuZAorICAgICAgICAgICAgcHJvdmlkZXMgYW4gZXhhbXBsZSB0aGF0IGxldHMgeW91IHNlZSBob3cgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIE1ha2VmaWxlIHZhcmlhYmxlcworICAgICAgICAgICAgZHVyaW5nIGRldmVsb3BtZW50LgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZyIgd2lkdGg9IjZpbiIgaGVpZ2h0PSI3aW4iIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtYWluIHBvaW50IG9mIHRoaXMgc2VjdGlvbiBpcyB0byBleHBsYWluIHRoZSBmb2xsb3dpbmcgdGhyZWUKKyAgICAgICAgICAgIGNhc2VzIHJlZ2FyZGluZyB2YXJpYWJsZSBiZWhhdmlvcjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAxIC0gTm8gVmFyaWFibGVzIFNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gTWFwIHRvIEVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQgVmFyaWFibGVzIFNldCBpbiB0aGUgU0RLIFNldHVwIFNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIG1hdGNoaW5nIHZhcmlhYmxlcyBhcmUgbm90IHNwZWNpZmljYWxseSBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+LCB0aGUgdmFyaWFibGVzIHJldGFpbiB0aGVpcgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAyIC0gVmFyaWFibGVzIEFyZSBTZXQgaW4gdGhlIE1ha2VmaWxlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgTWFwIHRvIEVxdWl2YWxlbnQgRW52aXJvbm1lbnQgVmFyaWFibGVzIGZyb20gdGhlIFNESworICAgICAgICAgICAgICAgICAgICBTZXR1cCBTY3JpcHQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWNhbGx5IHNldHRpbmcgbWF0Y2hpbmcgdmFyaWFibGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiBkdXJpbmcgdGhlIGJ1aWxkIHJlc3VsdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGVudmlyb25tZW50IHNldHRpbmdzIG9mIHRoZSB2YXJpYWJsZXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXR0ZW4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHZhcmlhYmxlcyB5b3Ugc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiBhcmUgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAzIC0gVmFyaWFibGVzIEFyZSBTZXQgVXNpbmcgdGhlIENvbW1hbmQgTGluZQorICAgICAgICAgICAgICAgICAgICB0aGF0IE1hcCB0byBFcXVpdmFsZW50IEVudmlyb25tZW50IFZhcmlhYmxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBTREsgU2V0dXAgU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGluZyB0aGUgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lIHJlc3VsdHMgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBiZWluZworICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdHRlbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29tbWFuZC1saW5lIGNvbnRlbnQgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgaG93IHlvdSBzZXQgeW91ciB2YXJpYWJsZXMsIGlmIHlvdSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgIi1lIiBvcHRpb24gd2l0aCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZnJvbSB0aGUgU0RLIHNldHVwIHNjcmlwdCB0YWtlIHByZWNlZGVuY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgLWUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHNpbXBsZSBNYWtlZmlsZSBleGFtcGxlCisgICAgICAgICAgICB0aGF0IGRlbW9uc3RyYXRlcyB0aGVzZSB2YXJpYWJsZSBiZWhhdmlvcnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGEgbmV3IHNoZWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IGVzdGFibGlzaGVkIGZvciB0aGUKKyAgICAgICAgICAgIFNESyB1bnRpbCB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBzaG93IGEgbnVsbCB2YWx1ZSBmb3IgdGhlCisgICAgICAgICAgICBjb21waWxlciB2YXJpYWJsZSAoaS5lLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNDJz48ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBlY2hvICR7Q0N9CisKKyAgICAgJAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgUnVubmluZyB0aGUgU0RLIHNldHVwIHNjcmlwdCBmb3IgYSA2NC1iaXQgYnVpbGQgaG9zdCBhbmQgYW4KKyAgICAgICAgICAgIGk1ODYtdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3IgYQorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIHVzaW5nIHRoZSBjdXJyZW50CisgICAgICAgICAgICAmRElTVFJPOyBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYW5kIHRoZW4gZWNob2luZyB0aGF0IHZhcmlhYmxlCisgICAgICAgICAgICBzaG93cyB0aGUgdmFsdWUgZXN0YWJsaXNoZWQgdGhyb3VnaCB0aGUgc2NyaXB0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICQgZWNobyAke0NDfQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgdmFyaWFibGUgdXNlLCB3b3JrIHRocm91Z2ggdGhpcyBzaW1wbGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgIGV4YW1wbGU6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgV29ya2luZyBEaXJlY3RvcnkgYW5kIFBvcHVsYXRlIEl0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkaXJlY3RvcnkgeW91ciB3b3JraW5nIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWtkaXIgJEhPTUUvaGVsbG93b3JsZAorICAgICAkIGNkICRIT01FL2hlbGxvd29ybGQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZnRlciBzZXR0aW5nIHVwIHRoZSBkaXJlY3RvcnksIHBvcHVsYXRlIGl0IHdpdGggZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGZvciB0aGUgZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgYSA8ZmlsZW5hbWU+bWFpbi5jPC9maWxlbmFtZT4gZmlsZSBmcm9tIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICBjYWxsIHlvdXIgZnVuY3Rpb24sIGEgPGZpbGVuYW1lPm1vZHVsZS5oPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICB0byBjb250YWluIGhlYWRlcnMsIGFuZCBhIDxmaWxlbmFtZT5tb2R1bGUuYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVmaW5lcyB5b3VyIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRlIHRoZSB0aHJlZSBmaWxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bWFpbi5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAibW9kdWxlLmgiCisgICAgIHZvaWQgc2FtcGxlX2Z1bmMoKTsKKyAgICAgaW50IG1haW4oKQorICAgICB7CisgICAgIAlzYW1wbGVfZnVuYygpOworICAgICAJcmV0dXJuIDA7CisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bW9kdWxlLmg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworICAgICB2b2lkIHNhbXBsZV9mdW5jKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1vZHVsZS5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAibW9kdWxlLmgiCisgICAgIHZvaWQgc2FtcGxlX2Z1bmMoKQorICAgICB7CisJICAgICBwcmludGYoIkhlbGxvIFdvcmxkISIpOworCSAgICAgcHJpbnRmKCJcbiIpOworICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIHRoZSBDcm9zcy1Ub29sY2hhaW4gRW52aXJvbm1lbnQgU2V0dXAgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBcyBkZXNjcmliZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBpbnN0YWxsaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4gY3JlYXRlcyBhIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCBzZXR1cAorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSBTREsgd2FzIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gdXNlIHRoZSB0b29scyB0byBkZXZlbG9wIHlvdXIgcHJvamVjdCwKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3Qgc291cmNlIHRoaXMgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGJlZ2lucyB3aXRoIHRoZSBzdHJpbmcgImVudmlyb25tZW50LXNldHVwIgorICAgICAgICAgICAgICAgICAgICBhbmQgY29udGFpbnMgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgc3RyaW5nICJwb2t5LWxpbnV4Ii4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGNvbW1hbmQgc291cmNlcyBhIHNjcmlwdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IFNESyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgMzItYml0IEludGVsIHg4NiBBcmNoaXRlY3R1cmUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAmRElTVFJPX05BTUU7IFlvY3RvIFByb2plY3QgcmVsZWFzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgTWFrZWZpbGUgY29udGFpbnMgdHdvIGxpbmVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgT25lIGxpbmUgaXMgaWRlbnRpY2FsIHRvIHRoZSB2YWx1ZSB0aGF0IGlzIHNldCB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICBydW4gdGhlIFNESyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIGFuZCB0aGUgb3RoZXIgbGluZQorICAgICAgICAgICAgICAgICAgICBzZXRzIDxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+IHRvICJnY2MiLCB0aGUgZGVmYXVsdCBHTlUKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgb24gdGhlIGJ1aWxkIGhvc3Q6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBDQz1pNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eAorICAgICAjIENDPSJnY2MiCisgICAgIGFsbDogbWFpbi5vIG1vZHVsZS5vCisgICAgIAkgJHtDQ30gbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgbWFpbi5vOiBtYWluLmMgbW9kdWxlLmgKKwkgICAgICR7Q0N9IC1JIC4gLWMgbWFpbi5jCisgICAgIG1vZHVsZS5vOiBtb2R1bGUuYyBtb2R1bGUuaAorCSAgICAgJHtDQ30gLUkgLiAtYyBtb2R1bGUuYworICAgICBjbGVhbjoKKwkgICAgIHJtIC1yZiAqLm8KKwkgICAgIHJtIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYmluYXJ5IG91dHB1dCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHZhcmlhYmxlcyBhcmUgY29tbWVudGVkIG91dCBpbiB0aGUgTWFrZWZpbGUsCisgICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSB1c2VkIGZvciA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPiBpcyB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc2V0IHdoZW4gdGhlIFNESyBlbnZpcm9ubWVudCBzZXR1cCBmaWxlIHdhcyBydW46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IC1JIC4gLWMgbWFpbi5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IC1JIC4gLWMgbW9kdWxlLmMKKyAgICAgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L29wdC9wb2t5LzIuNS9zeXNyb290cy9pNTg2LXBva3ktbGludXggbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyBjb21tYW5kLCB5b3UgY2FuIHNlZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBjb21waWxlciB1c2VkIHdhcyB0aGUgY29tcGlsZXIgZXN0YWJsaXNoZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIG92ZXJyaWRlIHRoZSA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIHZhcmlhYmxlIGFzIHNldCBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSBNYWtlZmlsZSBieSB1bmNvbW1lbnRpbmcgdGhlIGxpbmUgaW4gdGhlIE1ha2VmaWxlCisgICAgICAgICAgICAgICAgICAgIGFuZCBydW5uaW5nIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlIGNsZWFuCisgICAgIHJtIC1yZiAqLm8KKyAgICAgcm0gdGFyZ2V0X2JpbgorICAgICAjCisgICAgICMgRWRpdCB0aGUgTWFrZWZpbGUgYnkgdW5jb21tZW50aW5nIHRoZSBsaW5lIHRoYXQgc2V0cyBDQyB0byAiZ2NjIgorICAgICAjCisgICAgICQgbWFrZQorICAgICBnY2MgLUkgLiAtYyBtYWluLmMKKyAgICAgZ2NjIC1JIC4gLWMgbW9kdWxlLmMKKyAgICAgZ2NjIG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSBjcm9zcy10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgaXMgbm90IHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgdXNlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBuZXh0IGNhc2Ugc2hvd3MgaG93IHRvIG92ZXJyaWRlIGEgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYnkgcHJvdmlkaW5nIHRoZSB2YXJpYWJsZSBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgIEdvIGludG8gdGhlIE1ha2VmaWxlIGFuZCByZS1pbnNlcnQgdGhlIGNvbW1lbnQgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIHNvIHRoYXQgcnVubmluZyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGVzdGFibGlzaGVkIFNESyBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgcnVuIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4sIHVzZSBhCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhcmd1bWVudCB0byBzZXQgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gImdjYyI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlIGNsZWFuCisgICAgIHJtIC1yZiAqLm8KKyAgICAgcm0gdGFyZ2V0X2JpbgorICAgICAjCisgICAgICMgRWRpdCB0aGUgTWFrZWZpbGUgdG8gY29tbWVudCBvdXQgdGhlIGxpbmUgc2V0dGluZyBDQyB0byAiZ2NjIgorICAgICAjCisgICAgICQgbWFrZQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1haW4uYworICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICQgbWFrZSBjbGVhbgorICAgICBybSAtcmYgKi5vCisgICAgIHJtIHRhcmdldF9iaW4KKyAgICAgJCBtYWtlIENDPSJnY2MiCisgICAgIGdjYyAtSSAuIC1jIG1haW4uYworICAgICBnY2MgLUkgLiAtYyBtb2R1bGUuYworICAgICBnY2MgbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgY2FzZSwgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudCBvdmVycmlkZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIFNESyBlbnZpcm9ubWVudCB2YXJpYWJsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBsYXN0IGNhc2UsIGVkaXQgTWFrZWZpbGUgYWdhaW4gdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAiZ2NjIiBjb21waWxlciBidXQgdGhlbiB1c2UgdGhlICItZSIgb3B0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgcm0gLXJmICoubworICAgICBybSB0YXJnZXRfYmluCisgICAgICMKKyAgICAgIyBFZGl0IHRoZSBNYWtlZmlsZSB0byB1c2UgImdjYyIKKyAgICAgIworICAgICAkIG1ha2UKKyAgICAgZ2NjIC1JIC4gLWMgbWFpbi5jCisgICAgIGdjYyAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGdjYyBtYWluLm8gbW9kdWxlLm8gLW8gdGFyZ2V0X2JpbgorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgcm0gLXJmICoubworICAgICBybSB0YXJnZXRfYmluCisgICAgICQgbWFrZSAtZQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1haW4uYworICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGNhc2UsIHRoZSAiLWUiIG9wdGlvbiBmb3JjZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0byB1c2UgdGhlIFNESyBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWVzIGluIHRoZSBNYWtlZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSBZb3VyIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgcHJvamVjdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0X2JpbjwvZmlsZW5hbWU+KSwgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vdGFyZ2V0X2JpbgorICAgICBIZWxsbyBXb3JsZCEKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2VkIHRoZSBjcm9zcy10b29sY2hhaW4gY29tcGlsZXIgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXJnZXRfYmluPC9maWxlbmFtZT4gYW5kIHlvdXIgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVycyBpbiBhcmNoaXRlY3R1cmUgZnJvbSB0aGF0IG9mIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIHJ1biB5b3VyIHByb2plY3Qgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc3BoaW54LXN0YXRpYy90aGVtZV9vdmVycmlkZXMuY3NzIGIvcG9reS9kb2N1bWVudGF0aW9uL3NwaGlueC1zdGF0aWMvdGhlbWVfb3ZlcnJpZGVzLmNzcwppbmRleCBkMjM1Y2I4Li41NWRhMzhhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc3BoaW54LXN0YXRpYy90aGVtZV9vdmVycmlkZXMuY3NzCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zcGhpbngtc3RhdGljL3RoZW1lX292ZXJyaWRlcy5jc3MKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAqLwogCiBib2R5IHsKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9WZXJhLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9WZXJhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzgyMDQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL1ZlcmEueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGZvbnQtbWV0cmljcyB0eXBlPSJUWVBFMCI+PGZvbnQtbmFtZT5CaXRzdHJlYW1WZXJhU2FuczwvZm9udC1uYW1lPjxlbWJlZC8+PGNhcC1oZWlnaHQ+NzI5PC9jYXAtaGVpZ2h0Pjx4LWhlaWdodD41NDY8L3gtaGVpZ2h0Pjxhc2NlbmRlcj45Mjg8L2FzY2VuZGVyPjxkZXNjZW5kZXI+LTIzNTwvZGVzY2VuZGVyPjxiYm94PjxsZWZ0Pi0xODM8L2xlZnQ+PGJvdHRvbT4tMjM1PC9ib3R0b20+PHJpZ2h0PjEyODc8L3JpZ2h0Pjx0b3A+OTI4PC90b3A+PC9iYm94PjxmbGFncz4zMjwvZmxhZ3M+PHN0ZW12PjA8L3N0ZW12PjxpdGFsaWNhbmdsZT4wPC9pdGFsaWNhbmdsZT48c3VidHlwZT5UWVBFMDwvc3VidHlwZT48bXVsdGlieXRlLWV4dHJhcz48Y2lkLXR5cGU+Q0lERm9udFR5cGUyPC9jaWQtdHlwZT48ZGVmYXVsdC13aWR0aD4wPC9kZWZhdWx0LXdpZHRoPjxiZnJhbmdlcz48YmYgZ2k9IjMiIHVlPSIxMjYiIHVzPSIzMiIvPjxiZiBnaT0iMTcyIiB1ZT0iMTYwIiB1cz0iMTYwIi8+PGJmIGdpPSIxNjMiIHVlPSIxNjEiIHVzPSIxNjEiLz48YmYgZ2k9IjEzMiIgdWU9IjE2MyIgdXM9IjE2MiIvPjxiZiBnaT0iMTg5IiB1ZT0iMTY0IiB1cz0iMTY0Ii8+PGJmIGdpPSIxNTAiIHVlPSIxNjUiIHVzPSIxNjUiLz48YmYgZ2k9IjIzMSIgdWU9IjE2NiIgdXM9IjE2NiIvPjxiZiBnaT0iMTM0IiB1ZT0iMTY3IiB1cz0iMTY3Ii8+PGJmIGdpPSIxNDIiIHVlPSIxNjgiIHVzPSIxNjgiLz48YmYgZ2k9IjEzOSIgdWU9IjE2OSIgdXM9IjE2OSIvPjxiZiBnaT0iMTU3IiB1ZT0iMTcwIiB1cz0iMTcwIi8+PGJmIGdpPSIxNjkiIHVlPSIxNzEiIHVzPSIxNzEiLz48YmYgZ2k9IjE2NCIgdWU9IjE3MiIgdXM9IjE3MiIvPjxiZiBnaT0iMjU2IiB1ZT0iMTczIiB1cz0iMTczIi8+PGJmIGdpPSIxMzgiIHVlPSIxNzQiIHVzPSIxNzQiLz48YmYgZ2k9IjIxNyIgdWU9IjE3NSIgdXM9IjE3NSIvPjxiZiBnaT0iMTMxIiB1ZT0iMTc2IiB1cz0iMTc2Ii8+PGJmIGdpPSIxNDciIHVlPSIxNzciIHVzPSIxNzciLz48YmYgZ2k9IjI0MSIgdWU9IjE3OSIgdXM9IjE3OCIvPjxiZiBnaT0iMTQxIiB1ZT0iMTgwIiB1cz0iMTgwIi8+PGJmIGdpPSIxNTEiIHVlPSIxODEiIHVzPSIxODEiLz48YmYgZ2k9IjEzNiIgdWU9IjE4MiIgdXM9IjE4MiIvPjxiZiBnaT0iMTk1IiB1ZT0iMTgzIiB1cz0iMTgzIi8+PGJmIGdpPSIyMjEiIHVlPSIxODQiIHVzPSIxODQiLz48YmYgZ2k9IjI0MCIgdWU9IjE4NSIgdXM9IjE4NSIvPjxiZiBnaT0iMTU4IiB1ZT0iMTg2IiB1cz0iMTg2Ii8+PGJmIGdpPSIxNzAiIHVlPSIxODciIHVzPSIxODciLz48YmYgZ2k9IjI0MyIgdWU9IjE5MCIgdXM9IjE4OCIvPjxiZiBnaT0iMTYyIiB1ZT0iMTkxIiB1cz0iMTkxIi8+PGJmIGdpPSIxNzMiIHVlPSIxOTIiIHVzPSIxOTIiLz48YmYgZ2k9IjIwMSIgdWU9IjE5MyIgdXM9IjE5MyIvPjxiZiBnaT0iMTk5IiB1ZT0iMTk0IiB1cz0iMTk0Ii8+PGJmIGdpPSIxNzQiIHVlPSIxOTUiIHVzPSIxOTUiLz48YmYgZ2k9Ijk4IiB1ZT0iMTk3IiB1cz0iMTk2Ii8+PGJmIGdpPSIxNDQiIHVlPSIxOTgiIHVzPSIxOTgiLz48YmYgZ2k9IjEwMCIgdWU9IjE5OSIgdXM9IjE5OSIvPjxiZiBnaT0iMjAzIiB1ZT0iMjAwIiB1cz0iMjAwIi8+PGJmIGdpPSIxMDEiIHVlPSIyMDEiIHVzPSIyMDEiLz48YmYgZ2k9IjIwMCIgdWU9IjIwMiIgdXM9IjIwMiIvPjxiZiBnaT0iMjAyIiB1ZT0iMjAzIiB1cz0iMjAzIi8+PGJmIGdpPSIyMDciIHVlPSIyMDQiIHVzPSIyMDQiLz48YmYgZ2k9IjIwNCIgdWU9IjIwNyIgdXM9IjIwNSIvPjxiZiBnaT0iMjMyIiB1ZT0iMjA4IiB1cz0iMjA4Ii8+PGJmIGdpPSIxMDIiIHVlPSIyMDkiIHVzPSIyMDkiLz48YmYgZ2k9IjIxMCIgdWU9IjIxMCIgdXM9IjIxMCIvPjxiZiBnaT0iMjA4IiB1ZT0iMjEyIiB1cz0iMjExIi8+PGJmIGdpPSIxNzUiIHVlPSIyMTMiIHVzPSIyMTMiLz48YmYgZ2k9IjEwMyIgdWU9IjIxNCIgdXM9IjIxNCIvPjxiZiBnaT0iMjM5IiB1ZT0iMjE1IiB1cz0iMjE1Ii8+PGJmIGdpPSIxNDUiIHVlPSIyMTYiIHVzPSIyMTYiLz48YmYgZ2k9IjIxMyIgdWU9IjIxNyIgdXM9IjIxNyIvPjxiZiBnaT0iMjExIiB1ZT0iMjE5IiB1cz0iMjE4Ii8+PGJmIGdpPSIxMDQiIHVlPSIyMjAiIHVzPSIyMjAiLz48YmYgZ2k9IjIzNCIgdWU9IjIyMSIgdXM9IjIyMSIvPjxiZiBnaT0iMjM2IiB1ZT0iMjIyIiB1cz0iMjIyIi8+PGJmIGdpPSIxMzciIHVlPSIyMjMiIHVzPSIyMjMiLz48YmYgZ2k9IjEwNiIgdWU9IjIyNCIgdXM9IjIyNCIvPjxiZiBnaT0iMTA1IiB1ZT0iMjI1IiB1cz0iMjI1Ii8+PGJmIGdpPSIxMDciIHVlPSIyMjYiIHVzPSIyMjYiLz48YmYgZ2k9IjEwOSIgdWU9IjIyNyIgdXM9IjIyNyIvPjxiZiBnaT0iMTA4IiB1ZT0iMjI4IiB1cz0iMjI4Ii8+PGJmIGdpPSIxMTAiIHVlPSIyMjkiIHVzPSIyMjkiLz48YmYgZ2k9IjE2MCIgdWU9IjIzMCIgdXM9IjIzMCIvPjxiZiBnaT0iMTExIiB1ZT0iMjMxIiB1cz0iMjMxIi8+PGJmIGdpPSIxMTMiIHVlPSIyMzIiIHVzPSIyMzIiLz48YmYgZ2k9IjExMiIgdWU9IjIzMyIgdXM9IjIzMyIvPjxiZiBnaT0iMTE0IiB1ZT0iMjM1IiB1cz0iMjM0Ii8+PGJmIGdpPSIxMTciIHVlPSIyMzYiIHVzPSIyMzYiLz48YmYgZ2k9IjExNiIgdWU9IjIzNyIgdXM9IjIzNyIvPjxiZiBnaT0iMTE4IiB1ZT0iMjM5IiB1cz0iMjM4Ii8+PGJmIGdpPSIyMzMiIHVlPSIyNDAiIHVzPSIyNDAiLz48YmYgZ2k9IjEyMCIgdWU9IjI0MSIgdXM9IjI0MSIvPjxiZiBnaT0iMTIyIiB1ZT0iMjQyIiB1cz0iMjQyIi8+PGJmIGdpPSIxMjEiIHVlPSIyNDMiIHVzPSIyNDMiLz48YmYgZ2k9IjEyMyIgdWU9IjI0NCIgdXM9IjI0NCIvPjxiZiBnaT0iMTI1IiB1ZT0iMjQ1IiB1cz0iMjQ1Ii8+PGJmIGdpPSIxMjQiIHVlPSIyNDYiIHVzPSIyNDYiLz48YmYgZ2k9IjE4NCIgdWU9IjI0NyIgdXM9IjI0NyIvPjxiZiBnaT0iMTYxIiB1ZT0iMjQ4IiB1cz0iMjQ4Ii8+PGJmIGdpPSIxMjciIHVlPSIyNDkiIHVzPSIyNDkiLz48YmYgZ2k9IjEyNiIgdWU9IjI1MCIgdXM9IjI1MCIvPjxiZiBnaT0iMTI4IiB1ZT0iMjUyIiB1cz0iMjUxIi8+PGJmIGdpPSIyMzUiIHVlPSIyNTMiIHVzPSIyNTMiLz48YmYgZ2k9IjIzNyIgdWU9IjI1NCIgdXM9IjI1NCIvPjxiZiBnaT0iMTg2IiB1ZT0iMjU1IiB1cz0iMjU1Ii8+PGJmIGdpPSIyNTEiIHVlPSIyNjMiIHVzPSIyNjIiLz48YmYgZ2k9IjI1MyIgdWU9IjI2OSIgdXM9IjI2OCIvPjxiZiBnaT0iMCIgdWU9IjI3MCIgdXM9IjI3MCIvPjxiZiBnaT0iMCIgdWU9IjI3MSIgdXM9IjI3MSIvPjxiZiBnaT0iMCIgdWU9IjI3MiIgdXM9IjI3MiIvPjxiZiBnaT0iMjU1IiB1ZT0iMjczIiB1cz0iMjczIi8+PGJmIGdpPSIyNDYiIHVlPSIyODciIHVzPSIyODYiLz48YmYgZ2k9IjI0OCIgdWU9IjMwNCIgdXM9IjMwNCIvPjxiZiBnaT0iMjE0IiB1ZT0iMzA1IiB1cz0iMzA1Ii8+PGJmIGdpPSIyMjUiIHVlPSIzMjIiIHVzPSIzMjEiLz48YmYgZ2k9IjE3NiIgdWU9IjMzOSIgdXM9IjMzOCIvPjxiZiBnaT0iMjQ5IiB1ZT0iMzUxIiB1cz0iMzUwIi8+PGJmIGdpPSIyMjciIHVlPSIzNTMiIHVzPSIzNTIiLz48YmYgZ2k9IjE4NyIgdWU9IjM3NiIgdXM9IjM3NiIvPjxiZiBnaT0iMjI5IiB1ZT0iMzgyIiB1cz0iMzgxIi8+PGJmIGdpPSIxNjYiIHVlPSI0MDIiIHVzPSI0MDIiLz48YmYgZ2k9IjIxNSIgdWU9IjcxMCIgdXM9IjcxMCIvPjxiZiBnaT0iMjI0IiB1ZT0iNzExIiB1cz0iNzExIi8+PGJmIGdpPSIyMTgiIHVlPSI3MzAiIHVzPSI3MjgiLz48YmYgZ2k9IjIyMyIgdWU9IjczMSIgdXM9IjczMSIvPjxiZiBnaT0iMjE2IiB1ZT0iNzMyIiB1cz0iNzMyIi8+PGJmIGdpPSIyMjIiIHVlPSI3MzMiIHVzPSI3MzMiLz48YmYgZ2k9IjE1OSIgdWU9IjkzNyIgdXM9IjkzNyIvPjxiZiBnaT0iMTU1IiB1ZT0iOTYwIiB1cz0iOTYwIi8+PGJmIGdpPSIxNzgiIHVlPSI4MjEyIiB1cz0iODIxMSIvPjxiZiBnaT0iMCIgdWU9IjgyMTMiIHVzPSI4MjEzIi8+PGJmIGdpPSIwIiB1ZT0iODIxNCIgdXM9IjgyMTQiLz48YmYgZ2k9IjAiIHVlPSI4MjE1IiB1cz0iODIxNSIvPjxiZiBnaT0iMTgyIiB1ZT0iODIxNyIgdXM9IjgyMTYiLz48YmYgZ2k9IjE5NiIgdWU9IjgyMTgiIHVzPSI4MjE4Ii8+PGJmIGdpPSIwIiB1ZT0iODIxOSIgdXM9IjgyMTkiLz48YmYgZ2k9IjE4MCIgdWU9IjgyMjEiIHVzPSI4MjIwIi8+PGJmIGdpPSIxOTciIHVlPSI4MjIyIiB1cz0iODIyMiIvPjxiZiBnaT0iMCIgdWU9IjgyMjMiIHVzPSI4MjIzIi8+PGJmIGdpPSIxMzAiIHVlPSI4MjI0IiB1cz0iODIyNCIvPjxiZiBnaT0iMTk0IiB1ZT0iODIyNSIgdXM9IjgyMjUiLz48YmYgZ2k9IjEzNSIgdWU9IjgyMjYiIHVzPSI4MjI2Ii8+PGJmIGdpPSIwIiB1ZT0iODIyNyIgdXM9IjgyMjciLz48YmYgZ2k9IjAiIHVlPSI4MjI4IiB1cz0iODIyOCIvPjxiZiBnaT0iMCIgdWU9IjgyMjkiIHVzPSI4MjI5Ii8+PGJmIGdpPSIxNzEiIHVlPSI4MjMwIiB1cz0iODIzMCIvPjxiZiBnaT0iMTk4IiB1ZT0iODI0MCIgdXM9IjgyNDAiLz48YmYgZ2k9IjE5MCIgdWU9IjgyNTAiIHVzPSI4MjQ5Ii8+PGJmIGdpPSIyNTgiIHVlPSI4MzY0IiB1cz0iODM2NCIvPjxiZiBnaT0iMTQwIiB1ZT0iODQ4MiIgdXM9Ijg0ODIiLz48YmYgZ2k9IjE1MiIgdWU9Ijg3MDYiIHVzPSI4NzA2Ii8+PGJmIGdpPSIwIiB1ZT0iODcwNyIgdXM9Ijg3MDciLz48YmYgZ2k9IjAiIHVlPSI4NzA4IiB1cz0iODcwOCIvPjxiZiBnaT0iMCIgdWU9Ijg3MDkiIHVzPSI4NzA5Ii8+PGJmIGdpPSIxNjgiIHVlPSI4NzEwIiB1cz0iODcxMCIvPjxiZiBnaT0iMTU0IiB1ZT0iODcxOSIgdXM9Ijg3MTkiLz48YmYgZ2k9IjAiIHVlPSI4NzIwIiB1cz0iODcyMCIvPjxiZiBnaT0iMTUzIiB1ZT0iODcyMSIgdXM9Ijg3MjEiLz48YmYgZ2k9IjIzOCIgdWU9Ijg3MjIiIHVzPSI4NzIyIi8+PGJmIGdpPSIwIiB1ZT0iODcyMyIgdXM9Ijg3MjMiLz48YmYgZ2k9IjAiIHVlPSI4NzI0IiB1cz0iODcyNCIvPjxiZiBnaT0iMTg4IiB1ZT0iODcyNSIgdXM9Ijg3MjUiLz48YmYgZ2k9IjAiIHVlPSI4NzI2IiB1cz0iODcyNiIvPjxiZiBnaT0iMCIgdWU9Ijg3MjciIHVzPSI4NzI3Ii8+PGJmIGdpPSIwIiB1ZT0iODcyOCIgdXM9Ijg3MjgiLz48YmYgZ2k9IjI1NyIgdWU9Ijg3MjkiIHVzPSI4NzI5Ii8+PGJmIGdpPSIxNjUiIHVlPSI4NzMwIiB1cz0iODczMCIvPjxiZiBnaT0iMCIgdWU9Ijg3MzEiIHVzPSI4NzMxIi8+PGJmIGdpPSIwIiB1ZT0iODczMiIgdXM9Ijg3MzIiLz48YmYgZ2k9IjAiIHVlPSI4NzMzIiB1cz0iODczMyIvPjxiZiBnaT0iMTQ2IiB1ZT0iODczNCIgdXM9Ijg3MzQiLz48YmYgZ2k9IjE1NiIgdWU9Ijg3NDciIHVzPSI4NzQ3Ii8+PGJmIGdpPSIxNjciIHVlPSI4Nzc2IiB1cz0iODc3NiIvPjxiZiBnaT0iMTQzIiB1ZT0iODgwMCIgdXM9Ijg4MDAiLz48YmYgZ2k9IjAiIHVlPSI4ODAxIiB1cz0iODgwMSIvPjxiZiBnaT0iMCIgdWU9Ijg4MDIiIHVzPSI4ODAyIi8+PGJmIGdpPSIwIiB1ZT0iODgwMyIgdXM9Ijg4MDMiLz48YmYgZ2k9IjE0OCIgdWU9Ijg4MDUiIHVzPSI4ODA0Ii8+PGJmIGdpPSIxODUiIHVlPSI5Njc0IiB1cz0iOTY3NCIvPjxiZiBnaT0iMTkyIiB1ZT0iNjQyNTgiIHVzPSI2NDI1NyIvPjxiZiBnaT0iMCIgdWU9IjY1NTM1IiB1cz0iNjU1MzUiLz48L2JmcmFuZ2VzPjxjaWQtd2lkdGhzIHN0YXJ0LWluZGV4PSIwIj48d3ggdz0iNjAwIi8+PHd4IHc9IjAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjMxNyIvPjx3eCB3PSI0MDAiLz48d3ggdz0iNDU5Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2MzYiLz48d3ggdz0iOTUwIi8+PHd4IHc9Ijc3OSIvPjx3eCB3PSIyNzQiLz48d3ggdz0iMzkwIi8+PHd4IHc9IjM5MCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iODM3Ii8+PHd4IHc9IjMxNyIvPjx3eCB3PSIzNjAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iMzM2Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI4MzciLz48d3ggdz0iODM3Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI1MzAiLz48d3ggdz0iMTAwMCIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjg2Ii8+PHd4IHc9IjY5OCIvPjx3eCB3PSI3NzAiLz48d3ggdz0iNjMxIi8+PHd4IHc9IjU3NSIvPjx3eCB3PSI3NzQiLz48d3ggdz0iNzUxIi8+PHd4IHc9IjI5NCIvPjx3eCB3PSIyOTQiLz48d3ggdz0iNjU1Ii8+PHd4IHc9IjU1NyIvPjx3eCB3PSI4NjIiLz48d3ggdz0iNzQ4Ii8+PHd4IHc9Ijc4NyIvPjx3eCB3PSI2MDMiLz48d3ggdz0iNzg3Ii8+PHd4IHc9IjY5NCIvPjx3eCB3PSI2MzQiLz48d3ggdz0iNjEwIi8+PHd4IHc9IjczMSIvPjx3eCB3PSI2ODQiLz48d3ggdz0iOTg4Ii8+PHd4IHc9IjY4NSIvPjx3eCB3PSI2MTAiLz48d3ggdz0iNjg1Ii8+PHd4IHc9IjM5MCIvPjx3eCB3PSIzMzYiLz48d3ggdz0iMzkwIi8+PHd4IHc9IjgzNyIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjYxMiIvPjx3eCB3PSI2MzQiLz48d3ggdz0iNTQ5Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSI2MTUiLz48d3ggdz0iMzUyIi8+PHd4IHc9IjYzNCIvPjx3eCB3PSI2MzMiLz48d3ggdz0iMjc3Ii8+PHd4IHc9IjI3NyIvPjx3eCB3PSI1NzkiLz48d3ggdz0iMjc3Ii8+PHd4IHc9Ijk3NCIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYzNCIvPjx3eCB3PSI2MzQiLz48d3ggdz0iNDExIi8+PHd4IHc9IjUyMCIvPjx3eCB3PSIzOTIiLz48d3ggdz0iNjMzIi8+PHd4IHc9IjU5MSIvPjx3eCB3PSI4MTciLz48d3ggdz0iNTkxIi8+PHd4IHc9IjU5MSIvPjx3eCB3PSI1MjQiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI2MzYiLz48d3ggdz0iODM3Ii8+PHd4IHc9IjY4NCIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjk4Ii8+PHd4IHc9IjYzMSIvPjx3eCB3PSI3NDgiLz48d3ggdz0iNzg3Ii8+PHd4IHc9IjczMSIvPjx3eCB3PSI2MTIiLz48d3ggdz0iNjEyIi8+PHd4IHc9IjYxMiIvPjx3eCB3PSI2MTIiLz48d3ggdz0iNjEyIi8+PHd4IHc9IjYxMiIvPjx3eCB3PSI1NDkiLz48d3ggdz0iNjE1Ii8+PHd4IHc9IjYxNSIvPjx3eCB3PSI2MTUiLz48d3ggdz0iNjE1Ii8+PHd4IHc9IjI3NyIvPjx3eCB3PSIyNzciLz48d3ggdz0iMjc3Ii8+PHd4IHc9IjI3NyIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSI2MTEiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNjMzIi8+PHd4IHc9IjYzMyIvPjx3eCB3PSI2MzMiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1ODkiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjYyOSIvPjx3eCB3PSIxMDAwIi8+PHd4IHc9IjEwMDAiLz48d3ggdz0iMTAwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjgzNyIvPjx3eCB3PSI5NzQiLz48d3ggdz0iNzg3Ii8+PHd4IHc9IjgzMyIvPjx3eCB3PSI4MzciLz48d3ggdz0iODM3Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2MzYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjUxNyIvPjx3eCB3PSI2NzMiLz48d3ggdz0iNzU2Ii8+PHd4IHc9IjU4OCIvPjx3eCB3PSI1MjAiLz48d3ggdz0iNDcxIi8+PHd4IHc9IjQ3MSIvPjx3eCB3PSI3NjQiLz48d3ggdz0iOTgxIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSI1MzAiLz48d3ggdz0iNDAwIi8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2MzciLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI2NjgiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMSIvPjx3eCB3PSIxMDAwIi8+PHd4IHc9IjYzNiIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjg0Ii8+PHd4IHc9Ijc4NyIvPjx3eCB3PSIxMDY5Ii8+PHd4IHc9IjEwMjIiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjEwMDAiLz48d3ggdz0iNTE4Ii8+PHd4IHc9IjUxOCIvPjx3eCB3PSIzMTciLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjgzNyIvPjx3eCB3PSI0OTQiLz48d3ggdz0iNTkxIi8+PHd4IHc9IjYxMCIvPjx3eCB3PSIxNjYiLz48d3ggdz0iNjM2Ii8+PHd4IHc9IjM5OSIvPjx3eCB3PSIzOTkiLz48d3ggdz0iNjI5Ii8+PHd4IHc9IjYyOSIvPjx3eCB3PSI1MDAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjMxNyIvPjx3eCB3PSI1MTgiLz48d3ggdz0iMTM0MSIvPjx3eCB3PSI2ODQiLz48d3ggdz0iNjMxIi8+PHd4IHc9IjY4NCIvPjx3eCB3PSI2MzEiLz48d3ggdz0iNjMxIi8+PHd4IHc9IjI5NCIvPjx3eCB3PSIyOTQiLz48d3ggdz0iMjk0Ii8+PHd4IHc9IjI5NCIvPjx3eCB3PSI3ODciLz48d3ggdz0iNzg3Ii8+PHd4IHc9Ijc4NyIvPjx3eCB3PSI3MzEiLz48d3ggdz0iNzMxIi8+PHd4IHc9IjczMSIvPjx3eCB3PSIyNzciLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjU2MiIvPjx3eCB3PSIyODQiLz48d3ggdz0iNjM0Ii8+PHd4IHc9IjUyMCIvPjx3eCB3PSI2ODUiLz48d3ggdz0iNTI0Ii8+PHd4IHc9IjMzNiIvPjx3eCB3PSI3NzQiLz48d3ggdz0iNjExIi8+PHd4IHc9IjYxMCIvPjx3eCB3PSI1OTEiLz48d3ggdz0iNjA0Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSI4MzciLz48d3ggdz0iODM3Ii8+PHd4IHc9IjQwMCIvPjx3eCB3PSI0MDAiLz48d3ggdz0iNDAwIi8+PHd4IHc9Ijk2OSIvPjx3eCB3PSI5NjkiLz48d3ggdz0iOTY5Ii8+PHd4IHc9Ijc3NCIvPjx3eCB3PSI2MzQiLz48d3ggdz0iMjk0Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSI1MjAiLz48d3ggdz0iNjk4Ii8+PHd4IHc9IjU0OSIvPjx3eCB3PSI2OTgiLz48d3ggdz0iNTQ5Ii8+PHd4IHc9IjYzNCIvPjx3eCB3PSIzNjAiLz48d3ggdz0iMzE3Ii8+PHd4IHc9IjYzNiIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI1MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjx3eCB3PSI0MDAiLz48d3ggdz0iNTAwIi8+PHd4IHc9IjUwMCIvPjwvY2lkLXdpZHRocz48L211bHRpYnl0ZS1leHRyYXM+PGtlcm5pbmcga3B4MT0iMjQ2Ij48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIzNSI+PHBhaXIga2Vybj0iLTE0MiIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNDYiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNDMiPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTYiPjxwYWlyIGtlcm49IjM2IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTE4IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTExOCIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSIzNiIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iMzYiIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTExOCIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSI1NSIga3B4Mj0iNDUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMjYiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjM3Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTEyIj48cGFpciBrZXJuPSItMTciIGtweDI9IjkxIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjEyMyI+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjkxIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjUxIj48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIxMyI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjYxIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIwOCI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE4NyI+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI2Ii8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0xMTgiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTEwOSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMTE0IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iNjgiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1MCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMDMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDgiLz48cGFpciBrZXJuPSItNzciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI3NiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTIwMiIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTE0IiBrcHgyPSIxMjgiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMTMiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTQ0Ij48cGFpciBrZXJuPSItNDAiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTkiPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1MCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMTUiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNzMiPjxwYWlyIGtlcm49IjMxIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTE0IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI0MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU0Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iODUiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI2OCIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTYwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xODMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI0OSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMjQiPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI5MSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTgxIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE2OSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOSIvPjxwYWlyIGtlcm49IjczIiBrcHgyPSIxNDQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQ1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyMzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjAxIj48cGFpciBrZXJuPSItMTciIGtweDI9IjI0NiIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iMjciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTEyMyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNjAiPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0yMDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDkiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iODUiPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMjU0Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4MCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjI1MiIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iNzAiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjExMSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgxIi8+PHBhaXIga2Vybj0iNDEiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTUxIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijc0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4NCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI2MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMzQiPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0yMDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSIxMDkiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTAwIj48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjEyMiI+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjkxIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNDciPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI2Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEwNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjIxMyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMjAyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iMjIiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xMzIiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIyMTEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTEzMiIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTEzNyIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMDkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49IjIyIiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0yNjIiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iMjIiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMjEyIi8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTEwOSIga3B4Mj0iNTciLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI1NiIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMTAiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1OCI+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iODUiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMzUiIGtweDI9Ijg4Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjEwOCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMjEiIGtweDI9Ijc2Ii8+PHBhaXIga2Vybj0iLTExNCIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyOCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxMDkiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjkyIi8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjExMCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTc0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjgyIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxODYiPjxwYWlyIGtlcm49Ii0xNDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTQ2IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE3NSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIwOSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjEwMyI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU5Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjgxIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iOTgiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjQ2Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjU4Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDMiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTIzIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzEiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49IjIyIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTgiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMTIiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjI5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI2MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMjkiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMzgiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTIxIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1NyI+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTg2IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTA2Ii8+PHBhaXIga2Vybj0iLTgxIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNjgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iNzYiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xMzciIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTEwIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMzciPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjI3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDkiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTIwIj48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjQ5Ij48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9Ijk4Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjIyNyI+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSI5OCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODYiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEwOCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgxIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI3NiIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTU1IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0xNjAiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjgiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjAiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTA0Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNzIiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTk5Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjI0NiIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iMjciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTEyMyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTQiPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iOTgiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTgwIj48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjQ2Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0MyIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0xODgiIGtweDI9IjE0NCIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iNTkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjczIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0MSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI4NSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0NyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMjEwIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjM3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMjAiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjUxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI1MyIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTM3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMzMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSItNzIiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIzOSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMjM2Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0NSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI0NiIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1MyI+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMDciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMjkiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSI2OCIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItNDAiIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTI2Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItNDQiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTQ0IiBrcHgyPSIxMjgiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTA5Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxMTAiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMzciPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMzMiPjxwYWlyIGtlcm49Ii00NCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyNTMiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iMTgiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMjExIj48cGFpciBrZXJuPSItMTciIGtweDI9IjIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNjEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNzgiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwNiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItMzAiIGtweDI9Ijg4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjEyNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjUyIj48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iMTI1Ij48cGFpciBrZXJuPSItNzIiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iOTEiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI0MiI+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI1NSIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxNzAiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xMDkiIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjEwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQ1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjkyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODkiLz48cGFpciBrZXJuPSItODYiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIzNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTc0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjExNSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5MSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI5MCI+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTEwNCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjM2Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjI0NiIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMjM1Ii8+PHBhaXIga2Vybj0iLTIxIiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTEzIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI5Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMzQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjgyIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iMjciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTEyMyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNjMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcxIi8+PHBhaXIga2Vybj0iLTEyOCIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjQyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTUiLz48cGFpciBrZXJuPSItNDAiIGtweDI9IjkwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii02NyIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSI4OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTUiPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9IjEwNyIvPjxwYWlyIGtlcm49Ii0xNTUiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9Ijg2Ii8+PHBhaXIga2Vybj0iLTE1MSIga3B4Mj0iMTI5Ii8+PHBhaXIga2Vybj0iLTE2OSIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTkxIiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSI3MCIvPjxwYWlyIGtlcm49Ii0xNDYiIGtweDI9Ijg1Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMTA5IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE2OSIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTE2NSIga3B4Mj0iNjgiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0xNTUiIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9IjI1MCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xMTgiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTU4IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii0xNjUiIGtweDI9IjIyOCIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjI1NCIvPjxwYWlyIGtlcm49Ii0xNTEiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSIxMDUiLz48cGFpciBrZXJuPSItNTgiIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNjkiIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTcwIi8+PHBhaXIga2Vybj0iLTE1MSIga3B4Mj0iODgiLz48cGFpciBrZXJuPSItMTY5IiBrcHgyPSIxMTEiLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSI5MCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTE2OSIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTE1MSIga3B4Mj0iMTI3Ii8+PHBhaXIga2Vybj0iLTE2NSIga3B4Mj0iMTA4Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI3NiIvPjxwYWlyIGtlcm49Ii0xNTEiIGtweDI9IjEyOCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTE2NSIga3B4Mj0iMTA5Ii8+PHBhaXIga2Vybj0iLTE1NSIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTY1IiBrcHgyPSIxMTAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxMTQiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTEiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNTAiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItOTEiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI5MSI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTIyIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcwIi8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTE1Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjM5Ij48cGFpciBrZXJuPSItMTciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMTciIGtweDI9Ijk4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxODciLz48cGFpciBrZXJuPSItMjYiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIyMzYiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgwIi8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIxNyIvPjxwYWlyIGtlcm49Ii05MSIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyOSIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI0NSI+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTk3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMzAiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE3MyI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0yMSIga3B4Mj0iMTYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyNTEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMyIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjczIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE2OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUyIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MCIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjEwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTgiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjE4NiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMDkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwMyIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0xMjMiIGtweDI9IjE4MSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTIxIi8+PHBhaXIga2Vybj0iLTYzIiBrcHgyPSI1NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjU0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzIiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI3MSIvPjxwYWlyIGtlcm49Ii0xMjgiIGtweDI9IjE4MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI1MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI0MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTQwIiBrcHgyPSI5MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTExIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjM2Ii8+PHBhaXIga2Vybj0iLTc3IiBrcHgyPSI1NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTE0Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI1MCIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItNjciIGtweDI9IjkyIi8+PHBhaXIga2Vybj0iMjIiIGtweDI9IjE5NyIvPjxwYWlyIGtlcm49Ii01OCIga3B4Mj0iODkiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTc0Ii8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9IjE5NyI+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyNDYiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIzNSIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNDMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTE4MyIga3B4Mj0iMTg3Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMDgiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTQ0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI1OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjQxIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMjQiLz48cGFpciBrZXJuPSItMzUiIGtweDI9Ijg1Ii8+PHBhaXIga2Vybj0iLTE4MyIga3B4Mj0iNjAiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTE4MyIga3B4Mj0iMjM0Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxMDAiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iNDciLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItMTIzIiBrcHgyPSI1OCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI4MSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMzgiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii0xODMiIGtweDI9IjU3Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIzNyIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTIwIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI1MSIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxOTkiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjUzIi8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxMzciLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzMyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI1MiIvPjxwYWlyIGtlcm49Ii0zNSIga3B4Mj0iMTI1Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI0MiIvPjxwYWlyIGtlcm49Ii05NSIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItMTM3IiBrcHgyPSI1NSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjM5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIyMzYiLz48cGFpciBrZXJuPSIyMiIga3B4Mj0iNDUiLz48cGFpciBrZXJuPSIxOCIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49Ii0xMTQiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI0NiIvPjxwYWlyIGtlcm49IjE4IiBrcHgyPSIxNzQiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iOTIiPjxwYWlyIGtlcm49Ii0xNDIiIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTQ2IiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTcwIi8+PC9rZXJuaW5nPjxrZXJuaW5nIGtweDE9Ijg5Ij48cGFpciBrZXJuPSItNzciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTMyIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItMjYiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyOSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzAiLz48L2tlcm5pbmc+PGtlcm5pbmcga3B4MT0iNDYiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTA3Ii8+PHBhaXIga2Vybj0iLTcyIiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItMTA0IiBrcHgyPSIxNiIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTEyIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjMiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjI1MSIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMjEzIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjkiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEyNCIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iMTY5Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI2MCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjAxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDYiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjY4Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIyMTAiLz48cGFpciBrZXJuPSItMzUiIGtweDI9IjU4Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI4MiIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iMTg2Ii8+PHBhaXIga2Vybj0iLTU0IiBrcHgyPSIxNzUiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjIwOSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMTAzIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSI5OCIvPjxwYWlyIGtlcm49Ii0zMCIga3B4Mj0iMTgxIi8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIyMTIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjM4Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjEiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEyNiIvPjxwYWlyIGtlcm49Ii0yNiIga3B4Mj0iMTA0Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI3MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTk5Ii8+PHBhaXIga2Vybj0iLTMwIiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwNSIvPjxwYWlyIGtlcm49Ii01NCIga3B4Mj0iMjUzIi8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSIyMTEiLz48cGFpciBrZXJuPSItNDkiIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTE1Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSI4OCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMzYiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjU1Ii8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMTQiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjUwIi8+PHBhaXIga2Vybj0iLTQ5IiBrcHgyPSIxMjciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwOCIvPjxwYWlyIGtlcm49Ii00OSIga3B4Mj0iMTI4Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxNzMiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEwOSIvPjxwYWlyIGtlcm49Ii03MiIga3B4Mj0iOTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTc0Ii8+PHBhaXIga2Vybj0iLTI2IiBrcHgyPSI1NiIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSIxNzQiPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjQ2Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIyMzUiLz48cGFpciBrZXJuPSItMjEiIGtweDI9IjE2Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjUxIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMTMiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjE4NyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA4Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSI3MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTI0Ii8+PHBhaXIga2Vybj0iLTM1IiBrcHgyPSIxNjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MiIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzAiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjYwIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjIwMSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjkiLz48cGFpciBrZXJuPSItNzciIGtweDI9IjIzNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMTAwIi8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMjIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjIxMCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODIiLz48cGFpciBrZXJuPSItNTQiIGtweDI9IjU4Ii8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSIxODYiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3NSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iMjA5Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIxMDMiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iOTgiLz48cGFpciBrZXJuPSItMTIzIiBrcHgyPSIxODEiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjE3Ii8+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIzOCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODQiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyMSIvPjxwYWlyIGtlcm49Ii02MyIga3B4Mj0iNTciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1NCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iODciLz48cGFpciBrZXJuPSItMTciIGtweDI9IjcyIi8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE5OSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNzEiLz48cGFpciBrZXJuPSItMTI4IiBrcHgyPSIxODAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjI1MyIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjEyNSIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNDIiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNSIvPjxwYWlyIGtlcm49Ii00MCIga3B4Mj0iOTAiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExMSIvPjxwYWlyIGtlcm49IjI3IiBrcHgyPSIzNiIvPjxwYWlyIGtlcm49Ii03NyIga3B4Mj0iNTUiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjExNCIvPjxwYWlyIGtlcm49Ii0xNyIga3B4Mj0iNTAiLz48cGFpciBrZXJuPSIyNyIga3B4Mj0iMTczIi8+PHBhaXIga2Vybj0iLTY3IiBrcHgyPSI5MiIvPjxwYWlyIGtlcm49IjIyIiBrcHgyPSIxOTciLz48cGFpciBrZXJuPSItNTgiIGtweDI9Ijg5Ii8+PHBhaXIga2Vybj0iMjciIGtweDI9IjE3NCIvPjwva2VybmluZz48a2VybmluZyBrcHgxPSI1NiI+PHBhaXIga2Vybj0iLTE3IiBrcHgyPSIyMjkiLz48cGFpciBrZXJuPSItMTciIGtweDI9IjYxIi8+PC9rZXJuaW5nPjwvZm9udC1tZXRyaWNzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9WZXJhTW9CZC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvVmVyYU1vQmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMzMxMDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvVmVyYU1vQmQueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGZvbnQtbWV0cmljcyBtZXRyaWNzLXZlcnNpb249IjIiIHR5cGU9IlRZUEUwIj48Zm9udC1uYW1lPkJpdHN0cmVhbVZlcmFTYW5zTW9uby1Cb2xkPC9mb250LW5hbWU+PGZ1bGwtbmFtZT5CaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8gQm9sZDwvZnVsbC1uYW1lPjxmYW1pbHktbmFtZT5CaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm88L2ZhbWlseS1uYW1lPjxlbWJlZC8+PGNhcC1oZWlnaHQ+NzI5PC9jYXAtaGVpZ2h0Pjx4LWhlaWdodD41NDY8L3gtaGVpZ2h0Pjxhc2NlbmRlcj43NTk8L2FzY2VuZGVyPjxkZXNjZW5kZXI+LTI0MDwvZGVzY2VuZGVyPjxiYm94PjxsZWZ0Pi0xOTwvbGVmdD48Ym90dG9tPi0yMzU8L2JvdHRvbT48cmlnaHQ+NjA1PC9yaWdodD48dG9wPjkyODwvdG9wPjwvYmJveD48ZmxhZ3M+MzQ8L2ZsYWdzPjxzdGVtdj4wPC9zdGVtdj48aXRhbGljYW5nbGU+MDwvaXRhbGljYW5nbGU+PHN1YnR5cGU+VFlQRTA8L3N1YnR5cGU+PG11bHRpYnl0ZS1leHRyYXM+PGNpZC10eXBlPkNJREZvbnRUeXBlMjwvY2lkLXR5cGU+PGRlZmF1bHQtd2lkdGg+MDwvZGVmYXVsdC13aWR0aD48YmZyYW5nZXM+PGJmIGdpPSIzIiB1ZT0iMTI2IiB1cz0iMzIiLz48YmYgZ2k9IjE3MiIgdWU9IjE2MCIgdXM9IjE2MCIvPjxiZiBnaT0iMTYzIiB1ZT0iMTYxIiB1cz0iMTYxIi8+PGJmIGdpPSIxMzIiIHVlPSIxNjMiIHVzPSIxNjIiLz48YmYgZ2k9IjE4OSIgdWU9IjE2NCIgdXM9IjE2NCIvPjxiZiBnaT0iMTUwIiB1ZT0iMTY1IiB1cz0iMTY1Ii8+PGJmIGdpPSIyMzEiIHVlPSIxNjYiIHVzPSIxNjYiLz48YmYgZ2k9IjEzNCIgdWU9IjE2NyIgdXM9IjE2NyIvPjxiZiBnaT0iMTQyIiB1ZT0iMTY4IiB1cz0iMTY4Ii8+PGJmIGdpPSIxMzkiIHVlPSIxNjkiIHVzPSIxNjkiLz48YmYgZ2k9IjE1NyIgdWU9IjE3MCIgdXM9IjE3MCIvPjxiZiBnaT0iMTY5IiB1ZT0iMTcxIiB1cz0iMTcxIi8+PGJmIGdpPSIxNjQiIHVlPSIxNzIiIHVzPSIxNzIiLz48YmYgZ2k9IjI1NiIgdWU9IjE3MyIgdXM9IjE3MyIvPjxiZiBnaT0iMTM4IiB1ZT0iMTc0IiB1cz0iMTc0Ii8+PGJmIGdpPSIyMTciIHVlPSIxNzUiIHVzPSIxNzUiLz48YmYgZ2k9IjEzMSIgdWU9IjE3NiIgdXM9IjE3NiIvPjxiZiBnaT0iMTQ3IiB1ZT0iMTc3IiB1cz0iMTc3Ii8+PGJmIGdpPSIyNDEiIHVlPSIxNzkiIHVzPSIxNzgiLz48YmYgZ2k9IjE0MSIgdWU9IjE4MCIgdXM9IjE4MCIvPjxiZiBnaT0iMTUxIiB1ZT0iMTgxIiB1cz0iMTgxIi8+PGJmIGdpPSIxMzYiIHVlPSIxODIiIHVzPSIxODIiLz48YmYgZ2k9IjE5NSIgdWU9IjE4MyIgdXM9IjE4MyIvPjxiZiBnaT0iMjIxIiB1ZT0iMTg0IiB1cz0iMTg0Ii8+PGJmIGdpPSIyNDAiIHVlPSIxODUiIHVzPSIxODUiLz48YmYgZ2k9IjE1OCIgdWU9IjE4NiIgdXM9IjE4NiIvPjxiZiBnaT0iMTcwIiB1ZT0iMTg3IiB1cz0iMTg3Ii8+PGJmIGdpPSIyNDMiIHVlPSIxOTAiIHVzPSIxODgiLz48YmYgZ2k9IjE2MiIgdWU9IjE5MSIgdXM9IjE5MSIvPjxiZiBnaT0iMTczIiB1ZT0iMTkyIiB1cz0iMTkyIi8+PGJmIGdpPSIyMDEiIHVlPSIxOTMiIHVzPSIxOTMiLz48YmYgZ2k9IjE5OSIgdWU9IjE5NCIgdXM9IjE5NCIvPjxiZiBnaT0iMTc0IiB1ZT0iMTk1IiB1cz0iMTk1Ii8+PGJmIGdpPSI5OCIgdWU9IjE5NyIgdXM9IjE5NiIvPjxiZiBnaT0iMTQ0IiB1ZT0iMTk4IiB1cz0iMTk4Ii8+PGJmIGdpPSIxMDAiIHVlPSIxOTkiIHVzPSIxOTkiLz48YmYgZ2k9IjIwMyIgdWU9IjIwMCIgdXM9IjIwMCIvPjxiZiBnaT0iMTAxIiB1ZT0iMjAxIiB1cz0iMjAxIi8+PGJmIGdpPSIyMDAiIHVlPSIyMDIiIHVzPSIyMDIiLz48YmYgZ2k9IjIwMiIgdWU9IjIwMyIgdXM9IjIwMyIvPjxiZiBnaT0iMjA3IiB1ZT0iMjA0IiB1cz0iMjA0Ii8+PGJmIGdpPSIyMDQiIHVlPSIyMDciIHVzPSIyMDUiLz48YmYgZ2k9IjIzMiIgdWU9IjIwOCIgdXM9IjIwOCIvPjxiZiBnaT0iMTAyIiB1ZT0iMjA5IiB1cz0iMjA5Ii8+PGJmIGdpPSIyMTAiIHVlPSIyMTAiIHVzPSIyMTAiLz48YmYgZ2k9IjIwOCIgdWU9IjIxMiIgdXM9IjIxMSIvPjxiZiBnaT0iMTc1IiB1ZT0iMjEzIiB1cz0iMjEzIi8+PGJmIGdpPSIxMDMiIHVlPSIyMTQiIHVzPSIyMTQiLz48YmYgZ2k9IjIzOSIgdWU9IjIxNSIgdXM9IjIxNSIvPjxiZiBnaT0iMTQ1IiB1ZT0iMjE2IiB1cz0iMjE2Ii8+PGJmIGdpPSIyMTMiIHVlPSIyMTciIHVzPSIyMTciLz48YmYgZ2k9IjIxMSIgdWU9IjIxOSIgdXM9IjIxOCIvPjxiZiBnaT0iMTA0IiB1ZT0iMjIwIiB1cz0iMjIwIi8+PGJmIGdpPSIyMzQiIHVlPSIyMjEiIHVzPSIyMjEiLz48YmYgZ2k9IjIzNiIgdWU9IjIyMiIgdXM9IjIyMiIvPjxiZiBnaT0iMTM3IiB1ZT0iMjIzIiB1cz0iMjIzIi8+PGJmIGdpPSIxMDYiIHVlPSIyMjQiIHVzPSIyMjQiLz48YmYgZ2k9IjEwNSIgdWU9IjIyNSIgdXM9IjIyNSIvPjxiZiBnaT0iMTA3IiB1ZT0iMjI2IiB1cz0iMjI2Ii8+PGJmIGdpPSIxMDkiIHVlPSIyMjciIHVzPSIyMjciLz48YmYgZ2k9IjEwOCIgdWU9IjIyOCIgdXM9IjIyOCIvPjxiZiBnaT0iMTEwIiB1ZT0iMjI5IiB1cz0iMjI5Ii8+PGJmIGdpPSIxNjAiIHVlPSIyMzAiIHVzPSIyMzAiLz48YmYgZ2k9IjExMSIgdWU9IjIzMSIgdXM9IjIzMSIvPjxiZiBnaT0iMTEzIiB1ZT0iMjMyIiB1cz0iMjMyIi8+PGJmIGdpPSIxMTIiIHVlPSIyMzMiIHVzPSIyMzMiLz48YmYgZ2k9IjExNCIgdWU9IjIzNSIgdXM9IjIzNCIvPjxiZiBnaT0iMTE3IiB1ZT0iMjM2IiB1cz0iMjM2Ii8+PGJmIGdpPSIxMTYiIHVlPSIyMzciIHVzPSIyMzciLz48YmYgZ2k9IjExOCIgdWU9IjIzOSIgdXM9IjIzOCIvPjxiZiBnaT0iMjMzIiB1ZT0iMjQwIiB1cz0iMjQwIi8+PGJmIGdpPSIxMjAiIHVlPSIyNDEiIHVzPSIyNDEiLz48YmYgZ2k9IjEyMiIgdWU9IjI0MiIgdXM9IjI0MiIvPjxiZiBnaT0iMTIxIiB1ZT0iMjQzIiB1cz0iMjQzIi8+PGJmIGdpPSIxMjMiIHVlPSIyNDQiIHVzPSIyNDQiLz48YmYgZ2k9IjEyNSIgdWU9IjI0NSIgdXM9IjI0NSIvPjxiZiBnaT0iMTI0IiB1ZT0iMjQ2IiB1cz0iMjQ2Ii8+PGJmIGdpPSIxODQiIHVlPSIyNDciIHVzPSIyNDciLz48YmYgZ2k9IjE2MSIgdWU9IjI0OCIgdXM9IjI0OCIvPjxiZiBnaT0iMTI3IiB1ZT0iMjQ5IiB1cz0iMjQ5Ii8+PGJmIGdpPSIxMjYiIHVlPSIyNTAiIHVzPSIyNTAiLz48YmYgZ2k9IjEyOCIgdWU9IjI1MiIgdXM9IjI1MSIvPjxiZiBnaT0iMjM1IiB1ZT0iMjUzIiB1cz0iMjUzIi8+PGJmIGdpPSIyMzciIHVlPSIyNTQiIHVzPSIyNTQiLz48YmYgZ2k9IjE4NiIgdWU9IjI1NSIgdXM9IjI1NSIvPjxiZiBnaT0iMjUxIiB1ZT0iMjYzIiB1cz0iMjYyIi8+PGJmIGdpPSIyNTMiIHVlPSIyNjkiIHVzPSIyNjgiLz48YmYgZ2k9IjAiIHVlPSIyNzAiIHVzPSIyNzAiLz48YmYgZ2k9IjAiIHVlPSIyNzEiIHVzPSIyNzEiLz48YmYgZ2k9IjAiIHVlPSIyNzIiIHVzPSIyNzIiLz48YmYgZ2k9IjI1NSIgdWU9IjI3MyIgdXM9IjI3MyIvPjxiZiBnaT0iMjQ2IiB1ZT0iMjg3IiB1cz0iMjg2Ii8+PGJmIGdpPSIyNDgiIHVlPSIzMDQiIHVzPSIzMDQiLz48YmYgZ2k9IjIxNCIgdWU9IjMwNSIgdXM9IjMwNSIvPjxiZiBnaT0iMjI1IiB1ZT0iMzIyIiB1cz0iMzIxIi8+PGJmIGdpPSIxNzYiIHVlPSIzMzkiIHVzPSIzMzgiLz48YmYgZ2k9IjI0OSIgdWU9IjM1MSIgdXM9IjM1MCIvPjxiZiBnaT0iMjI3IiB1ZT0iMzUzIiB1cz0iMzUyIi8+PGJmIGdpPSIxODciIHVlPSIzNzYiIHVzPSIzNzYiLz48YmYgZ2k9IjIyOSIgdWU9IjM4MiIgdXM9IjM4MSIvPjxiZiBnaT0iMTY2IiB1ZT0iNDAyIiB1cz0iNDAyIi8+PGJmIGdpPSIyMTUiIHVlPSI3MTAiIHVzPSI3MTAiLz48YmYgZ2k9IjIyNCIgdWU9IjcxMSIgdXM9IjcxMSIvPjxiZiBnaT0iMjE4IiB1ZT0iNzMwIiB1cz0iNzI4Ii8+PGJmIGdpPSIyMjMiIHVlPSI3MzEiIHVzPSI3MzEiLz48YmYgZ2k9IjIxNiIgdWU9IjczMiIgdXM9IjczMiIvPjxiZiBnaT0iMjIyIiB1ZT0iNzMzIiB1cz0iNzMzIi8+PGJmIGdpPSIxNTkiIHVlPSI5MzciIHVzPSI5MzciLz48YmYgZ2k9IjE1NSIgdWU9Ijk2MCIgdXM9Ijk2MCIvPjxiZiBnaT0iMTc4IiB1ZT0iODIxMiIgdXM9IjgyMTEiLz48YmYgZ2k9IjAiIHVlPSI4MjEzIiB1cz0iODIxMyIvPjxiZiBnaT0iMCIgdWU9IjgyMTQiIHVzPSI4MjE0Ii8+PGJmIGdpPSIwIiB1ZT0iODIxNSIgdXM9IjgyMTUiLz48YmYgZ2k9IjE4MiIgdWU9IjgyMTciIHVzPSI4MjE2Ii8+PGJmIGdpPSIxOTYiIHVlPSI4MjE4IiB1cz0iODIxOCIvPjxiZiBnaT0iMCIgdWU9IjgyMTkiIHVzPSI4MjE5Ii8+PGJmIGdpPSIxODAiIHVlPSI4MjIxIiB1cz0iODIyMCIvPjxiZiBnaT0iMTk3IiB1ZT0iODIyMiIgdXM9IjgyMjIiLz48YmYgZ2k9IjAiIHVlPSI4MjIzIiB1cz0iODIyMyIvPjxiZiBnaT0iMTMwIiB1ZT0iODIyNCIgdXM9IjgyMjQiLz48YmYgZ2k9IjE5NCIgdWU9IjgyMjUiIHVzPSI4MjI1Ii8+PGJmIGdpPSIxMzUiIHVlPSI4MjI2IiB1cz0iODIyNiIvPjxiZiBnaT0iMCIgdWU9IjgyMjciIHVzPSI4MjI3Ii8+PGJmIGdpPSIwIiB1ZT0iODIyOCIgdXM9IjgyMjgiLz48YmYgZ2k9IjAiIHVlPSI4MjI5IiB1cz0iODIyOSIvPjxiZiBnaT0iMTcxIiB1ZT0iODIzMCIgdXM9IjgyMzAiLz48YmYgZ2k9IjE5OCIgdWU9IjgyNDAiIHVzPSI4MjQwIi8+PGJmIGdpPSIxOTAiIHVlPSI4MjUwIiB1cz0iODI0OSIvPjxiZiBnaT0iMjU4IiB1ZT0iODM2NCIgdXM9IjgzNjQiLz48YmYgZ2k9IjE0MCIgdWU9Ijg0ODIiIHVzPSI4NDgyIi8+PGJmIGdpPSIxNTIiIHVlPSI4NzA2IiB1cz0iODcwNiIvPjxiZiBnaT0iMCIgdWU9Ijg3MDciIHVzPSI4NzA3Ii8+PGJmIGdpPSIwIiB1ZT0iODcwOCIgdXM9Ijg3MDgiLz48YmYgZ2k9IjAiIHVlPSI4NzA5IiB1cz0iODcwOSIvPjxiZiBnaT0iMTY4IiB1ZT0iODcxMCIgdXM9Ijg3MTAiLz48YmYgZ2k9IjE1NCIgdWU9Ijg3MTkiIHVzPSI4NzE5Ii8+PGJmIGdpPSIwIiB1ZT0iODcyMCIgdXM9Ijg3MjAiLz48YmYgZ2k9IjE1MyIgdWU9Ijg3MjEiIHVzPSI4NzIxIi8+PGJmIGdpPSIyMzgiIHVlPSI4NzIyIiB1cz0iODcyMiIvPjxiZiBnaT0iMCIgdWU9Ijg3MjMiIHVzPSI4NzIzIi8+PGJmIGdpPSIwIiB1ZT0iODcyNCIgdXM9Ijg3MjQiLz48YmYgZ2k9IjE4OCIgdWU9Ijg3MjUiIHVzPSI4NzI1Ii8+PGJmIGdpPSIwIiB1ZT0iODcyNiIgdXM9Ijg3MjYiLz48YmYgZ2k9IjAiIHVlPSI4NzI3IiB1cz0iODcyNyIvPjxiZiBnaT0iMCIgdWU9Ijg3MjgiIHVzPSI4NzI4Ii8+PGJmIGdpPSIyNTciIHVlPSI4NzI5IiB1cz0iODcyOSIvPjxiZiBnaT0iMTY1IiB1ZT0iODczMCIgdXM9Ijg3MzAiLz48YmYgZ2k9IjAiIHVlPSI4NzMxIiB1cz0iODczMSIvPjxiZiBnaT0iMCIgdWU9Ijg3MzIiIHVzPSI4NzMyIi8+PGJmIGdpPSIwIiB1ZT0iODczMyIgdXM9Ijg3MzMiLz48YmYgZ2k9IjE0NiIgdWU9Ijg3MzQiIHVzPSI4NzM0Ii8+PGJmIGdpPSIxNTYiIHVlPSI4NzQ3IiB1cz0iODc0NyIvPjxiZiBnaT0iMTY3IiB1ZT0iODc3NiIgdXM9Ijg3NzYiLz48YmYgZ2k9IjE0MyIgdWU9Ijg4MDAiIHVzPSI4ODAwIi8+PGJmIGdpPSIwIiB1ZT0iODgwMSIgdXM9Ijg4MDEiLz48YmYgZ2k9IjAiIHVlPSI4ODAyIiB1cz0iODgwMiIvPjxiZiBnaT0iMCIgdWU9Ijg4MDMiIHVzPSI4ODAzIi8+PGJmIGdpPSIxNDgiIHVlPSI4ODA1IiB1cz0iODgwNCIvPjxiZiBnaT0iMTg1IiB1ZT0iOTY3NCIgdXM9Ijk2NzQiLz48YmYgZ2k9IjE5MiIgdWU9IjY0MjU4IiB1cz0iNjQyNTciLz48YmYgZ2k9IjAiIHVlPSI2NTUzNSIgdXM9IjY1NTM1Ii8+PC9iZnJhbmdlcz48Y2lkLXdpZHRocyBzdGFydC1pbmRleD0iMCI+PHd4IHc9IjYwMiIvPjx3eCB3PSIwIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PC9jaWQtd2lkdGhzPjwvbXVsdGlieXRlLWV4dHJhcz48L2ZvbnQtbWV0cmljcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvVmVyYU1vbm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL1ZlcmFNb25vLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTBhODY2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL1ZlcmFNb25vLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pjxmb250LW1ldHJpY3MgbWV0cmljcy12ZXJzaW9uPSIyIiB0eXBlPSJUWVBFMCI+PGZvbnQtbmFtZT5CaXRzdHJlYW1WZXJhU2Fuc01vbm8tUm9tYW48L2ZvbnQtbmFtZT48ZnVsbC1uYW1lPkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubzwvZnVsbC1uYW1lPjxmYW1pbHktbmFtZT5CaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm88L2ZhbWlseS1uYW1lPjxlbWJlZC8+PGNhcC1oZWlnaHQ+NzI5PC9jYXAtaGVpZ2h0Pjx4LWhlaWdodD41NDY8L3gtaGVpZ2h0Pjxhc2NlbmRlcj43NTk8L2FzY2VuZGVyPjxkZXNjZW5kZXI+LTI0MDwvZGVzY2VuZGVyPjxiYm94PjxsZWZ0Pi00PC9sZWZ0Pjxib3R0b20+LTIzNTwvYm90dG9tPjxyaWdodD42MDU8L3JpZ2h0Pjx0b3A+OTI4PC90b3A+PC9iYm94PjxmbGFncz4zNDwvZmxhZ3M+PHN0ZW12PjA8L3N0ZW12PjxpdGFsaWNhbmdsZT4wPC9pdGFsaWNhbmdsZT48c3VidHlwZT5UWVBFMDwvc3VidHlwZT48bXVsdGlieXRlLWV4dHJhcz48Y2lkLXR5cGU+Q0lERm9udFR5cGUyPC9jaWQtdHlwZT48ZGVmYXVsdC13aWR0aD4wPC9kZWZhdWx0LXdpZHRoPjxiZnJhbmdlcz48YmYgZ2k9IjMiIHVlPSIxMjYiIHVzPSIzMiIvPjxiZiBnaT0iMTcyIiB1ZT0iMTYwIiB1cz0iMTYwIi8+PGJmIGdpPSIxNjMiIHVlPSIxNjEiIHVzPSIxNjEiLz48YmYgZ2k9IjEzMiIgdWU9IjE2MyIgdXM9IjE2MiIvPjxiZiBnaT0iMTg5IiB1ZT0iMTY0IiB1cz0iMTY0Ii8+PGJmIGdpPSIxNTAiIHVlPSIxNjUiIHVzPSIxNjUiLz48YmYgZ2k9IjIzMSIgdWU9IjE2NiIgdXM9IjE2NiIvPjxiZiBnaT0iMTM0IiB1ZT0iMTY3IiB1cz0iMTY3Ii8+PGJmIGdpPSIxNDIiIHVlPSIxNjgiIHVzPSIxNjgiLz48YmYgZ2k9IjEzOSIgdWU9IjE2OSIgdXM9IjE2OSIvPjxiZiBnaT0iMTU3IiB1ZT0iMTcwIiB1cz0iMTcwIi8+PGJmIGdpPSIxNjkiIHVlPSIxNzEiIHVzPSIxNzEiLz48YmYgZ2k9IjE2NCIgdWU9IjE3MiIgdXM9IjE3MiIvPjxiZiBnaT0iMjU2IiB1ZT0iMTczIiB1cz0iMTczIi8+PGJmIGdpPSIxMzgiIHVlPSIxNzQiIHVzPSIxNzQiLz48YmYgZ2k9IjIxNyIgdWU9IjE3NSIgdXM9IjE3NSIvPjxiZiBnaT0iMTMxIiB1ZT0iMTc2IiB1cz0iMTc2Ii8+PGJmIGdpPSIxNDciIHVlPSIxNzciIHVzPSIxNzciLz48YmYgZ2k9IjI0MSIgdWU9IjE3OSIgdXM9IjE3OCIvPjxiZiBnaT0iMTQxIiB1ZT0iMTgwIiB1cz0iMTgwIi8+PGJmIGdpPSIxNTEiIHVlPSIxODEiIHVzPSIxODEiLz48YmYgZ2k9IjEzNiIgdWU9IjE4MiIgdXM9IjE4MiIvPjxiZiBnaT0iMTk1IiB1ZT0iMTgzIiB1cz0iMTgzIi8+PGJmIGdpPSIyMjEiIHVlPSIxODQiIHVzPSIxODQiLz48YmYgZ2k9IjI0MCIgdWU9IjE4NSIgdXM9IjE4NSIvPjxiZiBnaT0iMTU4IiB1ZT0iMTg2IiB1cz0iMTg2Ii8+PGJmIGdpPSIxNzAiIHVlPSIxODciIHVzPSIxODciLz48YmYgZ2k9IjI0MyIgdWU9IjE5MCIgdXM9IjE4OCIvPjxiZiBnaT0iMTYyIiB1ZT0iMTkxIiB1cz0iMTkxIi8+PGJmIGdpPSIxNzMiIHVlPSIxOTIiIHVzPSIxOTIiLz48YmYgZ2k9IjIwMSIgdWU9IjE5MyIgdXM9IjE5MyIvPjxiZiBnaT0iMTk5IiB1ZT0iMTk0IiB1cz0iMTk0Ii8+PGJmIGdpPSIxNzQiIHVlPSIxOTUiIHVzPSIxOTUiLz48YmYgZ2k9Ijk4IiB1ZT0iMTk3IiB1cz0iMTk2Ii8+PGJmIGdpPSIxNDQiIHVlPSIxOTgiIHVzPSIxOTgiLz48YmYgZ2k9IjEwMCIgdWU9IjE5OSIgdXM9IjE5OSIvPjxiZiBnaT0iMjAzIiB1ZT0iMjAwIiB1cz0iMjAwIi8+PGJmIGdpPSIxMDEiIHVlPSIyMDEiIHVzPSIyMDEiLz48YmYgZ2k9IjIwMCIgdWU9IjIwMiIgdXM9IjIwMiIvPjxiZiBnaT0iMjAyIiB1ZT0iMjAzIiB1cz0iMjAzIi8+PGJmIGdpPSIyMDciIHVlPSIyMDQiIHVzPSIyMDQiLz48YmYgZ2k9IjIwNCIgdWU9IjIwNyIgdXM9IjIwNSIvPjxiZiBnaT0iMjMyIiB1ZT0iMjA4IiB1cz0iMjA4Ii8+PGJmIGdpPSIxMDIiIHVlPSIyMDkiIHVzPSIyMDkiLz48YmYgZ2k9IjIxMCIgdWU9IjIxMCIgdXM9IjIxMCIvPjxiZiBnaT0iMjA4IiB1ZT0iMjEyIiB1cz0iMjExIi8+PGJmIGdpPSIxNzUiIHVlPSIyMTMiIHVzPSIyMTMiLz48YmYgZ2k9IjEwMyIgdWU9IjIxNCIgdXM9IjIxNCIvPjxiZiBnaT0iMjM5IiB1ZT0iMjE1IiB1cz0iMjE1Ii8+PGJmIGdpPSIxNDUiIHVlPSIyMTYiIHVzPSIyMTYiLz48YmYgZ2k9IjIxMyIgdWU9IjIxNyIgdXM9IjIxNyIvPjxiZiBnaT0iMjExIiB1ZT0iMjE5IiB1cz0iMjE4Ii8+PGJmIGdpPSIxMDQiIHVlPSIyMjAiIHVzPSIyMjAiLz48YmYgZ2k9IjIzNCIgdWU9IjIyMSIgdXM9IjIyMSIvPjxiZiBnaT0iMjM2IiB1ZT0iMjIyIiB1cz0iMjIyIi8+PGJmIGdpPSIxMzciIHVlPSIyMjMiIHVzPSIyMjMiLz48YmYgZ2k9IjEwNiIgdWU9IjIyNCIgdXM9IjIyNCIvPjxiZiBnaT0iMTA1IiB1ZT0iMjI1IiB1cz0iMjI1Ii8+PGJmIGdpPSIxMDciIHVlPSIyMjYiIHVzPSIyMjYiLz48YmYgZ2k9IjEwOSIgdWU9IjIyNyIgdXM9IjIyNyIvPjxiZiBnaT0iMTA4IiB1ZT0iMjI4IiB1cz0iMjI4Ii8+PGJmIGdpPSIxMTAiIHVlPSIyMjkiIHVzPSIyMjkiLz48YmYgZ2k9IjE2MCIgdWU9IjIzMCIgdXM9IjIzMCIvPjxiZiBnaT0iMTExIiB1ZT0iMjMxIiB1cz0iMjMxIi8+PGJmIGdpPSIxMTMiIHVlPSIyMzIiIHVzPSIyMzIiLz48YmYgZ2k9IjExMiIgdWU9IjIzMyIgdXM9IjIzMyIvPjxiZiBnaT0iMTE0IiB1ZT0iMjM1IiB1cz0iMjM0Ii8+PGJmIGdpPSIxMTciIHVlPSIyMzYiIHVzPSIyMzYiLz48YmYgZ2k9IjExNiIgdWU9IjIzNyIgdXM9IjIzNyIvPjxiZiBnaT0iMTE4IiB1ZT0iMjM5IiB1cz0iMjM4Ii8+PGJmIGdpPSIyMzMiIHVlPSIyNDAiIHVzPSIyNDAiLz48YmYgZ2k9IjEyMCIgdWU9IjI0MSIgdXM9IjI0MSIvPjxiZiBnaT0iMTIyIiB1ZT0iMjQyIiB1cz0iMjQyIi8+PGJmIGdpPSIxMjEiIHVlPSIyNDMiIHVzPSIyNDMiLz48YmYgZ2k9IjEyMyIgdWU9IjI0NCIgdXM9IjI0NCIvPjxiZiBnaT0iMTI1IiB1ZT0iMjQ1IiB1cz0iMjQ1Ii8+PGJmIGdpPSIxMjQiIHVlPSIyNDYiIHVzPSIyNDYiLz48YmYgZ2k9IjE4NCIgdWU9IjI0NyIgdXM9IjI0NyIvPjxiZiBnaT0iMTYxIiB1ZT0iMjQ4IiB1cz0iMjQ4Ii8+PGJmIGdpPSIxMjciIHVlPSIyNDkiIHVzPSIyNDkiLz48YmYgZ2k9IjEyNiIgdWU9IjI1MCIgdXM9IjI1MCIvPjxiZiBnaT0iMTI4IiB1ZT0iMjUyIiB1cz0iMjUxIi8+PGJmIGdpPSIyMzUiIHVlPSIyNTMiIHVzPSIyNTMiLz48YmYgZ2k9IjIzNyIgdWU9IjI1NCIgdXM9IjI1NCIvPjxiZiBnaT0iMTg2IiB1ZT0iMjU1IiB1cz0iMjU1Ii8+PGJmIGdpPSIyNTEiIHVlPSIyNjMiIHVzPSIyNjIiLz48YmYgZ2k9IjI1MyIgdWU9IjI2OSIgdXM9IjI2OCIvPjxiZiBnaT0iMCIgdWU9IjI3MCIgdXM9IjI3MCIvPjxiZiBnaT0iMCIgdWU9IjI3MSIgdXM9IjI3MSIvPjxiZiBnaT0iMCIgdWU9IjI3MiIgdXM9IjI3MiIvPjxiZiBnaT0iMjU1IiB1ZT0iMjczIiB1cz0iMjczIi8+PGJmIGdpPSIyNDYiIHVlPSIyODciIHVzPSIyODYiLz48YmYgZ2k9IjI0OCIgdWU9IjMwNCIgdXM9IjMwNCIvPjxiZiBnaT0iMjE0IiB1ZT0iMzA1IiB1cz0iMzA1Ii8+PGJmIGdpPSIyMjUiIHVlPSIzMjIiIHVzPSIzMjEiLz48YmYgZ2k9IjE3NiIgdWU9IjMzOSIgdXM9IjMzOCIvPjxiZiBnaT0iMjQ5IiB1ZT0iMzUxIiB1cz0iMzUwIi8+PGJmIGdpPSIyMjciIHVlPSIzNTMiIHVzPSIzNTIiLz48YmYgZ2k9IjE4NyIgdWU9IjM3NiIgdXM9IjM3NiIvPjxiZiBnaT0iMjI5IiB1ZT0iMzgyIiB1cz0iMzgxIi8+PGJmIGdpPSIxNjYiIHVlPSI0MDIiIHVzPSI0MDIiLz48YmYgZ2k9IjIxNSIgdWU9IjcxMCIgdXM9IjcxMCIvPjxiZiBnaT0iMjI0IiB1ZT0iNzExIiB1cz0iNzExIi8+PGJmIGdpPSIyMTgiIHVlPSI3MzAiIHVzPSI3MjgiLz48YmYgZ2k9IjIyMyIgdWU9IjczMSIgdXM9IjczMSIvPjxiZiBnaT0iMjE2IiB1ZT0iNzMyIiB1cz0iNzMyIi8+PGJmIGdpPSIyMjIiIHVlPSI3MzMiIHVzPSI3MzMiLz48YmYgZ2k9IjE1OSIgdWU9IjkzNyIgdXM9IjkzNyIvPjxiZiBnaT0iMTU1IiB1ZT0iOTYwIiB1cz0iOTYwIi8+PGJmIGdpPSIxNzgiIHVlPSI4MjEyIiB1cz0iODIxMSIvPjxiZiBnaT0iMCIgdWU9IjgyMTMiIHVzPSI4MjEzIi8+PGJmIGdpPSIwIiB1ZT0iODIxNCIgdXM9IjgyMTQiLz48YmYgZ2k9IjAiIHVlPSI4MjE1IiB1cz0iODIxNSIvPjxiZiBnaT0iMTgyIiB1ZT0iODIxNyIgdXM9IjgyMTYiLz48YmYgZ2k9IjE5NiIgdWU9IjgyMTgiIHVzPSI4MjE4Ii8+PGJmIGdpPSIwIiB1ZT0iODIxOSIgdXM9IjgyMTkiLz48YmYgZ2k9IjE4MCIgdWU9IjgyMjEiIHVzPSI4MjIwIi8+PGJmIGdpPSIxOTciIHVlPSI4MjIyIiB1cz0iODIyMiIvPjxiZiBnaT0iMCIgdWU9IjgyMjMiIHVzPSI4MjIzIi8+PGJmIGdpPSIxMzAiIHVlPSI4MjI0IiB1cz0iODIyNCIvPjxiZiBnaT0iMTk0IiB1ZT0iODIyNSIgdXM9IjgyMjUiLz48YmYgZ2k9IjEzNSIgdWU9IjgyMjYiIHVzPSI4MjI2Ii8+PGJmIGdpPSIwIiB1ZT0iODIyNyIgdXM9IjgyMjciLz48YmYgZ2k9IjAiIHVlPSI4MjI4IiB1cz0iODIyOCIvPjxiZiBnaT0iMCIgdWU9IjgyMjkiIHVzPSI4MjI5Ii8+PGJmIGdpPSIxNzEiIHVlPSI4MjMwIiB1cz0iODIzMCIvPjxiZiBnaT0iMTk4IiB1ZT0iODI0MCIgdXM9IjgyNDAiLz48YmYgZ2k9IjE5MCIgdWU9IjgyNTAiIHVzPSI4MjQ5Ii8+PGJmIGdpPSIyNTgiIHVlPSI4MzY0IiB1cz0iODM2NCIvPjxiZiBnaT0iMTQwIiB1ZT0iODQ4MiIgdXM9Ijg0ODIiLz48YmYgZ2k9IjE1MiIgdWU9Ijg3MDYiIHVzPSI4NzA2Ii8+PGJmIGdpPSIwIiB1ZT0iODcwNyIgdXM9Ijg3MDciLz48YmYgZ2k9IjAiIHVlPSI4NzA4IiB1cz0iODcwOCIvPjxiZiBnaT0iMCIgdWU9Ijg3MDkiIHVzPSI4NzA5Ii8+PGJmIGdpPSIxNjgiIHVlPSI4NzEwIiB1cz0iODcxMCIvPjxiZiBnaT0iMTU0IiB1ZT0iODcxOSIgdXM9Ijg3MTkiLz48YmYgZ2k9IjAiIHVlPSI4NzIwIiB1cz0iODcyMCIvPjxiZiBnaT0iMTUzIiB1ZT0iODcyMSIgdXM9Ijg3MjEiLz48YmYgZ2k9IjIzOCIgdWU9Ijg3MjIiIHVzPSI4NzIyIi8+PGJmIGdpPSIwIiB1ZT0iODcyMyIgdXM9Ijg3MjMiLz48YmYgZ2k9IjAiIHVlPSI4NzI0IiB1cz0iODcyNCIvPjxiZiBnaT0iMTg4IiB1ZT0iODcyNSIgdXM9Ijg3MjUiLz48YmYgZ2k9IjAiIHVlPSI4NzI2IiB1cz0iODcyNiIvPjxiZiBnaT0iMCIgdWU9Ijg3MjciIHVzPSI4NzI3Ii8+PGJmIGdpPSIwIiB1ZT0iODcyOCIgdXM9Ijg3MjgiLz48YmYgZ2k9IjI1NyIgdWU9Ijg3MjkiIHVzPSI4NzI5Ii8+PGJmIGdpPSIxNjUiIHVlPSI4NzMwIiB1cz0iODczMCIvPjxiZiBnaT0iMCIgdWU9Ijg3MzEiIHVzPSI4NzMxIi8+PGJmIGdpPSIwIiB1ZT0iODczMiIgdXM9Ijg3MzIiLz48YmYgZ2k9IjAiIHVlPSI4NzMzIiB1cz0iODczMyIvPjxiZiBnaT0iMTQ2IiB1ZT0iODczNCIgdXM9Ijg3MzQiLz48YmYgZ2k9IjE1NiIgdWU9Ijg3NDciIHVzPSI4NzQ3Ii8+PGJmIGdpPSIxNjciIHVlPSI4Nzc2IiB1cz0iODc3NiIvPjxiZiBnaT0iMTQzIiB1ZT0iODgwMCIgdXM9Ijg4MDAiLz48YmYgZ2k9IjAiIHVlPSI4ODAxIiB1cz0iODgwMSIvPjxiZiBnaT0iMCIgdWU9Ijg4MDIiIHVzPSI4ODAyIi8+PGJmIGdpPSIwIiB1ZT0iODgwMyIgdXM9Ijg4MDMiLz48YmYgZ2k9IjE0OCIgdWU9Ijg4MDUiIHVzPSI4ODA0Ii8+PGJmIGdpPSIxODUiIHVlPSI5Njc0IiB1cz0iOTY3NCIvPjxiZiBnaT0iMTkyIiB1ZT0iNjQyNTgiIHVzPSI2NDI1NyIvPjxiZiBnaT0iMCIgdWU9IjY1NTM1IiB1cz0iNjU1MzUiLz48L2JmcmFuZ2VzPjxjaWQtd2lkdGhzIHN0YXJ0LWluZGV4PSIwIj48d3ggdz0iNjAyIi8+PHd4IHc9IjAiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48d3ggdz0iNjAyIi8+PHd4IHc9IjYwMiIvPjx3eCB3PSI2MDIiLz48L2NpZC13aWR0aHM+PC9tdWx0aWJ5dGUtZXh0cmFzPjwvZm9udC1tZXRyaWNzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL2NvbXBvbmVudC50aXRsZS54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUyMWQ1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsCkBAIC0wLDAgKzEsMzkgQEAKKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiCisgIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorICB4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCisgIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJkIj4KKworICA8eHNsOnRlbXBsYXRlIG5hbWU9ImNvbXBvbmVudC50aXRsZSI+CisgICAgPHhzbDpwYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9Ii4iLz4KKworICAgIDx4c2w6dmFyaWFibGUgbmFtZT0ibGV2ZWwiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJhbmNlc3Rvcjo6ZDpzZWN0aW9uIj4KKyAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iY291bnQoYW5jZXN0b3I6OmQ6c2VjdGlvbikrMSIvPgorICAgICAgICA8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OnNlY3Q1Ij42PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImFuY2VzdG9yOjpzZWN0NCI+NTwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJhbmNlc3Rvcjo6c2VjdDMiPjQ8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iYW5jZXN0b3I6OnNlY3QyIj4zPC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImFuY2VzdG9yOjpzZWN0MSI+MjwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPjE8L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisgICAgPHhzbDplbGVtZW50IG5hbWU9Imh7JGxldmVsKzF9IiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPnRpdGxlPC94c2w6YXR0cmlidXRlPgorICAgICAgPHhzbDppZiB0ZXN0PSIkZ2VuZXJhdGUuaWQuYXR0cmlidXRlcyA9IDAiPgorICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYW5jaG9yIj4KKyAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSIkbm9kZSIvPgorICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJjb25kaXRpb25hbCIgc2VsZWN0PSIwIi8+CisgICAgICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+CisgICAgICA8L3hzbDppZj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iJG5vZGUiIG1vZGU9Im9iamVjdC50aXRsZS5tYXJrdXAiPgorICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0iYWxsb3ctYW5jaG9ycyIgc2VsZWN0PSIxIi8+CisgICAgICA8L3hzbDphcHBseS10ZW1wbGF0ZXM+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icGVybWFsaW5rIj4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iJG5vZGUiLz4KKyAgICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+CisgICAgPC94c2w6ZWxlbWVudD4KKyAgPC94c2w6dGVtcGxhdGU+Cis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL2RpdmlzaW9uLnRpdGxlLnhzbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyNjU5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wKQEAgLTAsMCArMSwyNCBAQAorPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIKKyAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisgIHhtbG5zOmQ9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIKKyAgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9ImQiPgorICAKKyAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJkaXZpc2lvbi50aXRsZSI+CisgICAgPHhzbDpwYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9Ii4iLz4KKyAgICAKKyAgICA8aDE+CisgICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+dGl0bGU8L3hzbDphdHRyaWJ1dGU+CisgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iYW5jaG9yIj4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iJG5vZGUiLz4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImNvbmRpdGlvbmFsIiBzZWxlY3Q9IjAiLz4KKyAgICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+CisgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IiRub2RlIiBtb2RlPSJvYmplY3QudGl0bGUubWFya3VwIj4KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImFsbG93LWFuY2hvcnMiIHNlbGVjdD0iMSIvPgorICAgICAgPC94c2w6YXBwbHktdGVtcGxhdGVzPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBlcm1hbGluayI+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9IiRub2RlIi8+CisgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgIDwvaDE+CisgIDwveHNsOnRlbXBsYXRlPgorPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9lbWJlZGRlZF92aWRlby54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZW1iZWRkZWRfdmlkZW8ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYjMzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZW1iZWRkZWRfdmlkZW8ueHNsCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIgorICAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisgICB4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayI+CisKKyAgIDx4c2w6b3V0cHV0IG1ldGhvZD0iaHRtbCIgLz4KKworICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iL2Q6Y2hhcHRlci9kOnNlY3Rpb24vZDptZWRpYW9iamVjdCI+CisgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iLiI+CisgICAgICAgICA8eHNsOnZhcmlhYmxlIG5hbWU9InZpZF91cmwiPgorICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4vZDp2aWRlb29iamVjdC9kOnZpZGVvZGF0YS9AZmlsZXJlZiIgLz4KKyAgICAgICAgIDwveHNsOnZhcmlhYmxlPgorICAgICAgICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IGF1dG8iPgorICAgICAgICAgICAgPG9iamVjdCB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0MjAiIGRhdGE9InskdmlkX3VybH0/Y29sb3IyPUZCRTlFQyZhbXA7c2hvd3NlYXJjaD0wJmFtcDt2ZXJzaW9uPTMmYW1wO21vZGVzdGJyYW5kaW5nPTEmYW1wO2ZzPTEiPgorICAgICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ieyR2aWRfdXJsfT9jb2xvcjI9RkJFOUVDJmFtcDtzaG93c2VhcmNoPTAmYW1wO3ZlcnNpb249MyZhbXA7bW9kZXN0YnJhbmRpbmc9MSZhbXA7ZnM9MSIgLz4KKyAgICAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJhbGxvd0Z1bGxTY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImFsbG93c2NyaXB0YWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPgorICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICA8L2Rpdj4KKyAgICAgIDwveHNsOmZvci1lYWNoPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZm9wLWNvbmZpZy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZm9wLWNvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDljYzVjYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9mb3AtY29uZmlnLnhtbApAQCAtMCwwICsxLDU4IEBACis8Zm9wIHZlcnNpb249IjEuMCI+CisKKyAgPCEtLSBTdHJpY3QgdXNlciBjb25maWd1cmF0aW9uIC0tPgorICA8c3RyaWN0LWNvbmZpZ3VyYXRpb24+dHJ1ZTwvc3RyaWN0LWNvbmZpZ3VyYXRpb24+CisKKyAgPCEtLSBTdHJpY3QgRk8gdmFsaWRhdGlvbiAtLT4KKyAgPHN0cmljdC12YWxpZGF0aW9uPnRydWU8L3N0cmljdC12YWxpZGF0aW9uPgorCisgICA8IS0tCisgICAgU2V0IHRoZSBiYXNlRGlyIHNvIGNvbW1vbi9vcGVuZWRoYW5kLnN2ZyByZWZlcmVuY2VzIGluIHBsYW5zIHN0aWxsCisgICAgd29yayBvay4gTm90ZSwgcmVsYXRpdmUgZmlsZSByZWZlcmVuY2VzIHRvIGN1cnJlbnQgZGlyIHNob3VsZCBzdGlsbCB3b3JrLgorICAgIC0tPgkKKyAgPGJhc2U+Li4vdGVtcGxhdGU8L2Jhc2U+CisgIDxmb250LWJhc2U+Li4vdGVtcGxhdGU8L2ZvbnQtYmFzZT4KKyAKKyAgPCEtLSBTb3VyY2UgcmVzb2x1dGlvbiBpbiBkcGkgKGRvdHMvcGl4ZWxzIHBlciBpbmNoKSBmb3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICAgc2l6ZSBvZiBwaXhlbHMgaW4gU1ZHIGFuZCBiaXRtYXAgaW1hZ2VzLCBkZWZhdWx0OiA3MmRwaSAtLT4KKyAgPCEtLSA8c291cmNlLXJlc29sdXRpb24+NzI8L3NvdXJjZS1yZXNvbHV0aW9uPiAtLT4KKyAgPCEtLSBUYXJnZXQgcmVzb2x1dGlvbiBpbiBkcGkgKGRvdHMvcGl4ZWxzIHBlciBpbmNoKSBmb3Igc3BlY2lmeWluZyB0aGUKKyAgICAgICB0YXJnZXQgcmVzb2x1dGlvbiBmb3IgZ2VuZXJhdGVkIGJpdG1hcHMsIGRlZmF1bHQ6IDcyZHBpIC0tPgorICA8IS0tIDx0YXJnZXQtcmVzb2x1dGlvbj43MjwvdGFyZ2V0LXJlc29sdXRpb24+IC0tPgorIAorICA8IS0tIGRlZmF1bHQgcGFnZS1oZWlnaHQgYW5kIHBhZ2Utd2lkdGgsIGluIGNhc2UKKyAgICAgICB2YWx1ZSBpcyBzcGVjaWZpZWQgYXMgYXV0byAtLT4KKyAgPGRlZmF1bHQtcGFnZS1zZXR0aW5ncyBoZWlnaHQ9IjExaW4iIHdpZHRoPSI4LjI2aW4iLz4gCisgCisgIDwhLS0gPHVzZS1jYWNoZT5mYWxzZTwvdXNlLWNhY2hlPiAtLT4KKyAKKyAgPHJlbmRlcmVycz4KKyAgICA8cmVuZGVyZXIgbWltZT0iYXBwbGljYXRpb24vcGRmIj4KKyAgICAgIDxmb250cz4KKyAgICAgICAgPGZvbnQgIG1ldHJpY3MtZmlsZT0iVmVyYU1vbm8ueG1sIgorICAgICAgICAgICAgICAga2VybmluZz0ieWVzIiAKKyAgICAgICAgICAgICAgIGVtYmVkLXVybD0iVmVyYU1vbm8udHRmIj4KKyAgICAgICAgICA8Zm9udC10cmlwbGV0IG5hbWU9InZlcmFtb25vIiBzdHlsZT0ibm9ybWFsIiB3ZWlnaHQ9Im5vcm1hbCIvPgorICAgICAgICA8L2ZvbnQ+CisKKyAgICAgICAgPGZvbnQgIG1ldHJpY3MtZmlsZT0iVmVyYU1vQmQueG1sIgorICAgICAgICAgICAgICAga2VybmluZz0ieWVzIiAKKyAgICAgICAgICAgICAgIGVtYmVkLXVybD0iVmVyYU1vQmQudHRmIj4KKyAgICAgICAgICA8Zm9udC10cmlwbGV0IG5hbWU9InZlcmFtb25vIiBzdHlsZT0ibm9ybWFsIiB3ZWlnaHQ9ImJvbGQiLz4KKyAgICAgICAgPC9mb250PgorCisgICAgICAgIDxmb250ICBtZXRyaWNzLWZpbGU9IlZlcmEueG1sIgorICAgICAgICAgICAgICAga2VybmluZz0ieWVzIiAKKyAgICAgICAgICAgICAgIGVtYmVkLXVybD0iVmVyYS50dGYiPgorICAgICAgICAgIDxmb250LXRyaXBsZXQgbmFtZT0idmVyYXNhbnMiIHN0eWxlPSJub3JtYWwiIHdlaWdodD0ibm9ybWFsIi8+CisgICAgICAgICAgPGZvbnQtdHJpcGxldCBuYW1lPSJ2ZXJhc2FucyIgc3R5bGU9Im5vcm1hbCIgd2VpZ2h0PSJib2xkIi8+CisgICAgICAgICAgPGZvbnQtdHJpcGxldCBuYW1lPSJ2ZXJhc2FucyIgc3R5bGU9Iml0YWxpYyIgd2VpZ2h0PSJub3JtYWwiLz4KKyAgICAgICAgICA8Zm9udC10cmlwbGV0IG5hbWU9InZlcmFzYW5zIiBzdHlsZT0iaXRhbGljIiB3ZWlnaHQ9ImJvbGQiLz4KKyAgICAgICAgPC9mb250PgorICAgICAgICAKKyAgICAgICAgPGF1dG8tZGV0ZWN0Lz4KKyAgICAgIDwvZm9udHM+CisgICAgPC9yZW5kZXJlcj4KKyAgPC9yZW5kZXJlcnM+Cis8L2ZvcD4KKwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTVlNjk3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wKQEAgLTAsMCArMSwyMSBAQAorPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIKKyAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisgIHhtbG5zOmQ9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIKKyAgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9ImQiPgorICAKKyAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJmb3JtYWwub2JqZWN0LmhlYWRpbmciPgorICAgIDx4c2w6cGFyYW0gbmFtZT0ib2JqZWN0IiBzZWxlY3Q9Ii4iLz4KKyAgICA8eHNsOnBhcmFtIG5hbWU9InRpdGxlIj4KKyAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iJG9iamVjdCIgbW9kZT0ib2JqZWN0LnRpdGxlLm1hcmt1cCI+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJhbGxvdy1hbmNob3JzIiBzZWxlY3Q9IjEiLz4KKyAgICAgIDwveHNsOmFwcGx5LXRlbXBsYXRlcz4KKyAgICA8L3hzbDpwYXJhbT4KKyAgICA8cCBjbGFzcz0idGl0bGUiPgorICAgICAgPGI+PHhzbDpjb3B5LW9mIHNlbGVjdD0iJHRpdGxlIi8+PC9iPgorICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBlcm1hbGluayI+CisgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9IiRvYmplY3QiLz4KKyAgICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+CisgICAgPC9wPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZ2xvc3MtcGVybWFsaW5rcy54c2wgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvZ2xvc3MtcGVybWFsaW5rcy54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJmNTgxMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9nbG9zcy1wZXJtYWxpbmtzLnhzbApAQCAtMCwwICsxLDE0IEBACis8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIg0KKyAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iDQorICB4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayINCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCisNCisgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Imdsb3NzZW50cnkvZ2xvc3N0ZXJtIj4NCisgICAgPHhzbDphcHBseS1pbXBvcnRzLz4NCisgICAgPHhzbDppZiB0ZXN0PSIkZ2VuZXJhdGUucGVybWFsaW5rICE9IDAiPg0KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwZXJtYWxpbmsiPg0KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iLi4iLz4NCisgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPg0KKyAgICA8L3hzbDppZj4NCisgIDwveHNsOnRlbXBsYXRlPg0KKzwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3Blcm1hbGlua3MueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3Blcm1hbGlua3MueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTFjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiCisgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgorICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5wZXJtYWxpbmsiIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9InBlcm1hbGluay50ZXh0Ij7CtjwveHNsOnBhcmFtPgorCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0icGVybWFsaW5rIj4KKyAgICA8eHNsOnBhcmFtIG5hbWU9Im5vZGUiLz4KKworICAgIDx4c2w6aWYgdGVzdD0iJGdlbmVyYXRlLnBlcm1hbGluayAhPSAnMCciPgorICAgICAgPHNwYW4gY2xhc3M9InBlcm1hbGluayI+CisgICAgICAgIDxhIGFsdD0iUGVybWFsaW5rIiB0aXRsZT0iUGVybWFsaW5rIj4KKyAgICAgICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJocmVmIj4KKyAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJocmVmLnRhcmdldCI+CisgICAgICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJvYmplY3QiICBzZWxlY3Q9IiRub2RlIi8+CisgICAgICAgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICAgICAgICAgIDwveHNsOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8eHNsOmNvcHktb2Ygc2VsZWN0PSIkcGVybWFsaW5rLnRleHQiLz4KKyAgICAgICAgPC9hPgorICAgICAgPC9zcGFuPgorICAgIDwveHNsOmlmPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvcG9reS1kYi1wZGYueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3Bva3ktZGItcGRmLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGEzZGYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3Bva3ktZGItcGRmLnhzbApAQCAtMCwwICsxLDY0IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiIHZlcnNpb249IjEuMCI+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQvZm8vZG9jYm9vay54c2wiIC8+CisKKyAgPCEtLSBjaGVjayBwcm9qZWN0LXBsYW4uc2ggZm9yIGhvdyB0aGlzIGlzIGdlbmVyYXRlZCwgbmVlZGVkIHRvIHR3ZWFrCisgICAgICAgdGhlIGNvdmVyIHBhZ2UKKyAgICAtLT4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii90bXAvdGl0bGVwYWdlLnhzbCIvPgorCisgIDwhLS0gVG8gZm9yY2UgYSBwYWdlIGJyZWFrIGluIGRvY3VtZW50LCBpLmUgcGVyIHNlY3Rpb24gYWRkIGEKKyAgICAgIDw/aGFyZC1wYWdlYnJlYWs/PiB0YWcuCisgIC0tPgorIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InByb2Nlc3NpbmctaW5zdHJ1Y3Rpb24oJ2hhcmQtcGFnZWJyZWFrJykiPgorICAgPGZvOmJsb2NrIGJyZWFrLWJlZm9yZT0ncGFnZScgLz4KKyA8L3hzbDp0ZW1wbGF0ZT4KKworICA8IS0tRml4IGZvciBkZWZ1YWx0IGluZGVudCBnZXR0aW5nIFRPQyBhbGwgd2llcmQuLgorICAgICAgU2VlIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vbWwvZG9jYm9vay1hcHBzLzIwMDUtcTEvbXNnMDA0NTUuaHRtbAorICAgICAgRklYTUU6IG11c3QgYmUgYSBiZXR0ZXIgZml4CisgICAgLS0+CisgIDx4c2w6cGFyYW0gbmFtZT0iYm9keS5zdGFydC5pbmRlbnQiIHNlbGVjdD0iJzAnIi8+CisgIDwhLS08eHNsOnBhcmFtIG5hbWU9InRpdGxlLm1hcmdpbi5sZWZ0IiBzZWxlY3Q9IicwJyIvPi0tPgorCisgIDwhLS0gc3RvcCBsb25nLWlzaCBoZWFkZXIgdGl0bGVzIGdldHRpbmcgd3JhcHBlZCAtLT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJoZWFkZXIuY29sdW1uLndpZHRocyI+MSAxMCAxPC94c2w6cGFyYW0+CisKKyAgPCEtLSBjdXN0b21pc2UgaGVhZGVycyBhbmQgZm9vdGVycyBhIGxpdHRsZSAtLT4KKworICA8eHNsOnRlbXBsYXRlIG5hbWU9ImhlYWQuc2VwLnJ1bGUiPgorICAgPHhzbDppZiB0ZXN0PSIkaGVhZGVyLnJ1bGUgIT0gMCI+CisgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9ImJvcmRlci1ib3R0b20td2lkdGgiPjAuNXB0PC94c2w6YXR0cmlidXRlPgorICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXItYm90dG9tLXN0eWxlIj5zb2xpZDwveHNsOmF0dHJpYnV0ZT4KKyAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyLWJvdHRvbS1jb2xvciI+Izk5OTk5OTwveHNsOmF0dHJpYnV0ZT4KKyAgIDwveHNsOmlmPgorICA8L3hzbDp0ZW1wbGF0ZT4KKworICA8eHNsOnRlbXBsYXRlIG5hbWU9ImZvb3Quc2VwLnJ1bGUiPgorICAgIDx4c2w6aWYgdGVzdD0iJGZvb3Rlci5ydWxlICE9IDAiPgorICAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXItdG9wLXdpZHRoIj4wLjVwdDwveHNsOmF0dHJpYnV0ZT4KKyAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyLXRvcC1zdHlsZSI+c29saWQ8L3hzbDphdHRyaWJ1dGU+CisgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9ImJvcmRlci10b3AtY29sb3IiPiM5OTk5OTk8L3hzbDphdHRyaWJ1dGU+CisgICAgPC94c2w6aWY+CisgIDwveHNsOnRlbXBsYXRlPgorCisgIDx4c2w6YXR0cmlidXRlLXNldCBuYW1lPSJoZWFkZXIuY29udGVudC5wcm9wZXJ0aWVzIj4KKyAgICA8eHNsOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+Izk5OTk5OTwveHNsOmF0dHJpYnV0ZT4KKyAgPC94c2w6YXR0cmlidXRlLXNldD4KKworICA8eHNsOmF0dHJpYnV0ZS1zZXQgbmFtZT0iZm9vdGVyLmNvbnRlbnQucHJvcGVydGllcyI+CisgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPiM5OTk5OTk8L3hzbDphdHRyaWJ1dGU+CisgIDwveHNsOmF0dHJpYnV0ZS1zZXQ+CisKKworICA8IS0tIGdlbmVyYWwgc2V0dGluZ3MgLS0+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJmb3AxLmV4dGVuc2lvbnMiIHNlbGVjdD0iMSI+PC94c2w6cGFyYW0+CisgIDx4c2w6cGFyYW0gbmFtZT0icGFwZXIudHlwZSIgc2VsZWN0PSInQTQnIj48L3hzbDpwYXJhbT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIj48L3hzbDpwYXJhbT4KKyAgPHhzbDpwYXJhbSBuYW1lPSJib2R5LmZvbnQuZmFtaWx5IiBzZWxlY3Q9Iid2ZXJhc2FucyciPjwveHNsOnBhcmFtPgorICA8eHNsOnBhcmFtIG5hbWU9InRpdGxlLmZvbnQuZmFtaWx5IiBzZWxlY3Q9Iid2ZXJhc2FucyciPjwveHNsOnBhcmFtPgorICA8eHNsOnBhcmFtIG5hbWU9Im1vbm9zcGFjZS5mb250LmZhbWlseSIgc2VsZWN0PSIndmVyYW1vbm8nIj48L3hzbDpwYXJhbT4KKworPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9xYS1jb2RlLXBlcm1hbGlua3MueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3FhLWNvZGUtcGVybWFsaW5rcy54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwOTA5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS9xYS1jb2RlLXBlcm1hbGlua3MueHNsCkBAIC0wLDAgKzEsMjMgQEAKKzwhLS0NCitUaGlzIFhTTCBzaGVldCBlbmFibGVzIGNyZWF0aW9uIG9mIHBlcm1hbGlua3MgZm9yIDxwYXJhPjxjb2RlPg0KK2NvbnN0cnVjdHMuICBSaWdodCBub3csIHRoaXMgY29uc3RydWN0IG9jY3VycyBvbmx5IGluIHRoZSByZWYtbWFudWFsDQorYm9vaydzIHFhIGlzc3VlcyBhbmQgd2FybmluZ3MgY2hhcHRlci4gIEhvd2V2ZXIsIGlmIHRoZSBjb25zdHJ1Y3QNCit3ZXJlIHRvIGFwcGVhciBhbnl3aGVyZSBpbiB0aGF0IHJlZi1tYW51YWwsIGEgcGVybWFsaW5rIHdvdWxkIGJlDQorZ2VuZXJhdGVkLiAgSSBkb24ndCBmb3Jlc2VlIGFueSA8cGFyYT48Y29kZT4gY29uc3RydWN0cyBiZWluZyB1c2VkDQoraW4gdGhlIGZ1dHVyZSBidXQgaWYgdGhleSBhcmUgdGhlbiBhIHBlcm1hbGluayB3aXRoIGEgZ2VuZXJpY2FsbHkNCitudW1iZXJlZCBwZXJtYWxpbmsgd291bGQgYmUgZ2VuZXJhdGVkLg0KKy0tPg0KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiDQorICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSINCisgIHhtbG5zOmQ9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIg0KKyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KKw0KKyAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGFyYS9jb2RlIj4NCisgICAgPHhzbDphcHBseS1pbXBvcnRzLz4NCisgICAgPHhzbDppZiB0ZXN0PSIkZ2VuZXJhdGUucGVybWFsaW5rICE9IDAiPg0KKyAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwZXJtYWxpbmsiPg0KKyAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im5vZGUiIHNlbGVjdD0iLi4iLz4NCisgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPg0KKyAgICA8L3hzbDppZj4NCisgIDwveHNsOnRlbXBsYXRlPg0KKzwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNmZmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvc2VjdGlvbi50aXRsZS54c2wKQEAgLTAsMCArMSw1NSBAQAorPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIKKyAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisgIHhtbG5zOmQ9Imh0dHA6Ly9kb2Nib29rLm9yZy9ucy9kb2Nib29rIgorICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9ImQiPgorCisgIDx4c2w6dGVtcGxhdGUgbmFtZT0ic2VjdGlvbi50aXRsZSI+CisgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJzZWN0aW9uIgorICAgICAgc2VsZWN0PSIoYW5jZXN0b3I6OnNlY3Rpb24gfAorICAgICAgICAgICAgICAgYW5jZXN0b3I6OnNpbXBsZXNlY3R8CisgICAgICAgICAgICAgICBhbmNlc3Rvcjo6c2VjdDF8CisgICAgICAgICAgICAgICBhbmNlc3Rvcjo6c2VjdDJ8CisgICAgICAgICAgICAgICBhbmNlc3Rvcjo6c2VjdDN8CisgICAgICAgICAgICAgICBhbmNlc3Rvcjo6c2VjdDR8CisgICAgICAgICAgICAgICBhbmNlc3Rvcjo6c2VjdDUpW2xhc3QoKV0iLz4KKworICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icmVuZGVyYXMiPgorICAgICAgPHhzbDpjaG9vc2U+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSIkc2VjdGlvbi9AcmVuZGVyYXMgPSAnc2VjdDEnIj4xPC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9IiRzZWN0aW9uL0ByZW5kZXJhcyA9ICdzZWN0MiciPjI8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iJHNlY3Rpb24vQHJlbmRlcmFzID0gJ3NlY3QzJyI+MzwveHNsOndoZW4+CisgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSIkc2VjdGlvbi9AcmVuZGVyYXMgPSAnc2VjdDQnIj40PC94c2w6d2hlbj4KKyAgICAgICAgPHhzbDp3aGVuIHRlc3Q9IiRzZWN0aW9uL0ByZW5kZXJhcyA9ICdzZWN0NSciPjU8L3hzbDp3aGVuPgorICAgICAgICA8eHNsOm90aGVyd2lzZT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iJyciLz48L3hzbDpvdGhlcndpc2U+CisgICAgICA8L3hzbDpjaG9vc2U+CisgICAgPC94c2w6dmFyaWFibGU+CisKKyAgICA8eHNsOnZhcmlhYmxlIG5hbWU9ImxldmVsIj4KKyAgICAgIDx4c2w6Y2hvb3NlPgorICAgICAgICA8eHNsOndoZW4gdGVzdD0iJHJlbmRlcmFzICE9ICcnIj4KKyAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iJHJlbmRlcmFzIi8+CisgICAgICAgIDwveHNsOndoZW4+CisgICAgICAgIDx4c2w6b3RoZXJ3aXNlPgorICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJzZWN0aW9uLmxldmVsIj4KKyAgICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJub2RlIiBzZWxlY3Q9IiRzZWN0aW9uIi8+CisgICAgICAgICAgPC94c2w6Y2FsbC10ZW1wbGF0ZT4KKyAgICAgICAgPC94c2w6b3RoZXJ3aXNlPgorICAgICAgPC94c2w6Y2hvb3NlPgorICAgIDwveHNsOnZhcmlhYmxlPgorCisgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InNlY3Rpb24uaGVhZGluZyI+CisgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ic2VjdGlvbiIgc2VsZWN0PSIkc2VjdGlvbiIvPgorICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImxldmVsIiBzZWxlY3Q9IiRsZXZlbCIvPgorICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9InRpdGxlIj4KKyAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIkc2VjdGlvbiIgbW9kZT0ib2JqZWN0LnRpdGxlLm1hcmt1cCI+CisgICAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImFsbG93LWFuY2hvcnMiIHNlbGVjdD0iMSIvPgorICAgICAgICA8L3hzbDphcHBseS10ZW1wbGF0ZXM+CisgICAgICAgIDx4c2w6aWYgdGVzdD0iJGxldmVsICZndDsgMCI+CisgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InBlcm1hbGluayI+CisgICAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSIkc2VjdGlvbiIvPgorICAgICAgICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+CisgICAgICAgIDwveHNsOmlmPgorICAgICAgPC94c2w6d2l0aC1wYXJhbT4KKyAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvdGl0bGVwYWdlLnRlbXBsYXRlcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVtcGxhdGUvdGl0bGVwYWdlLnRlbXBsYXRlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzZjE0NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZW1wbGF0ZS90aXRsZXBhZ2UudGVtcGxhdGVzLnhtbApAQCAtMCwwICsxLDEyMjcgQEAKKzwhRE9DVFlQRSB0OnRlbXBsYXRlcyBbCis8IUVOVElUWSBoc2l6ZTAgIjEwcHQiPgorPCFFTlRJVFkgaHNpemUxICIxMnB0Ij4KKzwhRU5USVRZIGhzaXplMiAiMTQuNHB0Ij4KKzwhRU5USVRZIGhzaXplMyAiMTcuMjhwdCI+Cis8IUVOVElUWSBoc2l6ZTQgIjIwLjczNnB0Ij4KKzwhRU5USVRZIGhzaXplNSAiMjQuODgzMnB0Ij4KKzwhRU5USVRZIGhzaXplMHNwYWNlICI3LjVwdCI+IDwhLS0gMC43NSAqIGhzaXplMCAtLT4KKzwhRU5USVRZIGhzaXplMXNwYWNlICI5cHQiPiA8IS0tIDAuNzUgKiBoc2l6ZTEgLS0+Cis8IUVOVElUWSBoc2l6ZTJzcGFjZSAiMTAuOHB0Ij4gPCEtLSAwLjc1ICogaHNpemUyIC0tPgorPCFFTlRJVFkgaHNpemUzc3BhY2UgIjEyLjk2cHQiPiA8IS0tIDAuNzUgKiBoc2l6ZTMgLS0+Cis8IUVOVElUWSBoc2l6ZTRzcGFjZSAiMTUuNTUycHQiPiA8IS0tIDAuNzUgKiBoc2l6ZTQgLS0+Cis8IUVOVElUWSBoc2l6ZTVzcGFjZSAiMTguNjYyNHB0Ij4gPCEtLSAwLjc1ICogaHNpemU1IC0tPgorXT4KKzx0OnRlbXBsYXRlcyB4bWxuczp0PSJodHRwOi8vbndhbHNoLmNvbS9kb2Nib29rL3hzbC90ZW1wbGF0ZS8xLjAiCisJICAgICB4bWxuczpwYXJhbT0iaHR0cDovL253YWxzaC5jb20vZG9jYm9vay94c2wvdGVtcGxhdGUvMS4wL3BhcmFtIgorICAgICAgICAgICAgIHhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiCisgICAgICAgICAgICAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPgorCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICRJZDogdGl0bGVwYWdlLnRlbXBsYXRlcy54bWwsdiAxLjIzIDIwMDMvMTIvMTYgMDA6MzA6NDkgYm9ic3RheXRvbiBFeHAgJAorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisgICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBEb2NCb29rIFhTTCBTdHlsZXNoZWV0IGRpc3RyaWJ1dGlvbi4KKyAgICAgU2VlIC4uL1JFQURNRSBvciBodHRwOi8vZG9jYm9vay5zZi5uZXQvIGZvciBjb3B5cmlnaHQKKyAgICAgYW5kIG90aGVyIGluZm9ybWF0aW9uLgorCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJhcnRpY2xlIiB0OndyYXBwZXI9ImZvOmJsb2NrIgorICAgICAgICAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ij4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIgorICAgICAgICAgICAgIHRleHQtYWxpZ249ImNlbnRlciI+CisKKyAgICA8bWVkaWFvYmplY3QvPgkgICAgIAorCisgICAgPHRpdGxlIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjphcnRpY2xlWzFdIgorCSAgIGtlZXAtd2l0aC1uZXh0PSJhbHdheXMiCisJICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICBmb250LXdlaWdodD0iYm9sZCIvPgorCisgICAgPHN1YnRpdGxlIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmFydGljbGVbMV0iCisJICAga2VlcC13aXRoLW5leHQ9ImFsd2F5cyIKKwkgICBmb250LXNpemU9IiZoc2l6ZTM7IgorCSAgIGZvbnQtd2VpZ2h0PSJib2xkIgorICAgICAgIHNwYWNlLWFmdGVyPSIwLjhlbSIvPgorCisgICAgPGNvcnBhdXRob3Igc3BhY2UtYmVmb3JlPSIwLjVlbSIKKyAgICAgICAgICAgICAgICBmb250LXNpemU9IiZoc2l6ZTM7Ii8+CisgICAgPGF1dGhvcmdyb3VwIHNwYWNlLWJlZm9yZT0iMC41ZW0iCisgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZT0iJmhzaXplMjsiLz4KKyAgICA8YXV0aG9yIHNwYWNlLWJlZm9yZT0iMC41ZW0iCisgICAgICAgICAgICBmb250LXNpemU9IiZoc2l6ZTI7IiAKKyAgICAgICAgICAgIHNwYWNlLWFmdGVyPSIwLjhlbSIvPgorCisgICAgPGVtYWlsIGZvbnQtc2l6ZT0iJmhzaXplMjsiLz4KKworICAgIDxvdGhlcmNyZWRpdCBzcGFjZS1iZWZvcmU9IjAuNWVtIi8+CisgICAgPHJlbGVhc2VpbmZvIHNwYWNlLWJlZm9yZT0iMC41ZW0iLz4KKyAgICA8Y29weXJpZ2h0IHNwYWNlLWJlZm9yZT0iMC41ZW0iLz4KKyAgICA8bGVnYWxub3RpY2UgdGV4dC1hbGlnbj0ic3RhcnQiCisgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0PSIwLjVpbiIKKyAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0PSIwLjVpbiIKKyAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk9InskYm9keS5mb250c2V0fSIvPgorICAgIDxwdWJkYXRlIHNwYWNlLWJlZm9yZT0iMC41ZW0iLz4KKwk8cGFyYT48L3BhcmE+CisgICAgPHJldmlzaW9uIHNwYWNlLWJlZm9yZT0iMC41ZW0iLz4KKyAgICA8cmV2aGlzdG9yeSBzcGFjZS1iZWZvcmU9IjAuNWVtIi8+CisgICAgPGFic3RyYWN0IHNwYWNlLWJlZm9yZT0iMC41ZW0iCisJICAgICAgdGV4dC1hbGlnbj0ic3RhcnQiCisJICAgICAgbWFyZ2luLWxlZnQ9IjAuNWluIgorICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ9IjAuNWluIgorICAgICAgICAgICAgICBmb250LWZhbWlseT0ieyRib2R5LmZvbnRzZXR9Ii8+CisKKyAgICA8cGFyYT48L3BhcmE+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ic2V0IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImRpdmlzaW9uLnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6c2V0WzFdIgorCSAgICAgdGV4dC1hbGlnbj0iY2VudGVyIgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIHNwYWNlLWJlZm9yZT0iJmhzaXplNXNwYWNlOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8c3VidGl0bGUKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgICB0ZXh0LWFsaWduPSJjZW50ZXIiLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImJvb2siIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorCisgICAgICA8bWVkaWFvYmplY3QvPgkgICAgIAorCisgICAgICA8c3VidGl0bGUKKwkJdGV4dC1hbGlnbj0iY2VudGVyIgorCQlmb250LXNpemU9IiZoc2l6ZTQ7IgorCQlzcGFjZS1iZWZvcmU9IiZoc2l6ZTRzcGFjZTsiCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgICA8Y29ycGF1dGhvciBmb250LXNpemU9IiZoc2l6ZTM7IgorCQkgIGtlZXAtd2l0aC1uZXh0PSJhbHdheXMiCisJCSAgc3BhY2UtYmVmb3JlPSIyaW4iLz4KKyAgICAgIDxhdXRob3Jncm91cCBzcGFjZS1iZWZvcmU9IjJpbiIvPgorICAgICAgPGF1dGhvciBmb250LXNpemU9IiZoc2l6ZTM7IgorCSAgICAgIHNwYWNlLWJlZm9yZT0iJmhzaXplMnNwYWNlOyIKKwkgICAgICBrZWVwLXdpdGgtbmV4dD0iYWx3YXlzIi8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgICAgPGNvcnBhdXRob3IvPgorICAgICAgPGF1dGhvcmdyb3VwIHQ6bmFtZWQtdGVtcGxhdGU9InZlcnNvLmF1dGhvcmdyb3VwIi8+CisgICAgICA8YXV0aG9yLz4KKyAgICAgIDxvdGhlcmNyZWRpdC8+CisgICAgICA8cHViZGF0ZSBzcGFjZS1iZWZvcmU9IjFlbSIvPgorICAgICAgPGNvcHlyaWdodC8+CisgICAgICA8YWJzdHJhY3QvPgorICAgICAgPGxlZ2Fsbm90aWNlIGZvbnQtc2l6ZT0iOHB0Ii8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgICAgPGZvOmJsb2NrIGJyZWFrLWFmdGVyPSJwYWdlIi8+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgICA8Zm86YmxvY2sgYnJlYWstYWZ0ZXI9InBhZ2UiLz4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJwYXJ0IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImRpdmlzaW9uLnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6cGFydFsxXSIKKwkgICAgIHRleHQtYWxpZ249ImNlbnRlciIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBzcGFjZS1iZWZvcmU9IiZoc2l6ZTVzcGFjZTsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgdGV4dC1hbGlnbj0iY2VudGVyIgorCSAgICAgIGZvbnQtc2l6ZT0iJmhzaXplNDsiCisJICAgICAgc3BhY2UtYmVmb3JlPSImaHNpemU0c3BhY2U7IgorCSAgICAgIGZvbnQtd2VpZ2h0PSdib2xkJworCSAgICAgIGZvbnQtc3R5bGU9J2l0YWxpYycKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InBhcnRpbnRybyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIHRleHQtYWxpZ249ImNlbnRlciIKKwkgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgIHNwYWNlLWJlZm9yZT0iMWVtIgorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgdGV4dC1hbGlnbj0iY2VudGVyIgorCSAgICAgIGZvbnQtc2l6ZT0iJmhzaXplMjsiCisJICAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICAgZm9udC1zdHlsZT0iaXRhbGljIgorCSAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0icmVmZXJlbmNlIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImRpdmlzaW9uLnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6cmVmZXJlbmNlWzFdIgorCSAgICAgdGV4dC1hbGlnbj0iY2VudGVyIgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIHNwYWNlLWJlZm9yZT0iJmhzaXplNXNwYWNlOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8c3VidGl0bGUKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgICB0ZXh0LWFsaWduPSJjZW50ZXIiLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJyZWZzeW5vcHNpc2RpdiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0icmVmc2VjdGlvbiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0icmVmc2VjdDEiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InJlZnNlY3QyIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJyZWZzZWN0MyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJkZWRpY2F0aW9uIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OmRlZGljYXRpb25bMV0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InByZWZhY2UiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6cHJlZmFjZVsxXSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisgICAgICA8c3VidGl0bGUKKwkJZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICAgIDxjb3JwYXV0aG9yLz4KKyAgICAgIDxhdXRob3Jncm91cC8+CisgICAgICA8YXV0aG9yLz4KKyAgICAgIDxvdGhlcmNyZWRpdC8+CisgICAgICA8cmVsZWFzZWluZm8vPgorICAgICAgPGNvcHlyaWdodC8+CisgICAgICA8bGVnYWxub3RpY2UvPgorICAgICAgPHB1YmRhdGUvPgorICAgICAgPHJldmlzaW9uLz4KKyAgICAgIDxyZXZoaXN0b3J5Lz4KKyAgICAgIDxhYnN0cmFjdC8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImNoYXB0ZXIiIHQ6d3JhcHBlcj0iZm86YmxvY2siCisgICAgICAgICAgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byIgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9Ij4KKyAgICAgIDx0aXRsZSB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjpjaGFwdGVyWzFdIgorCSAgICAgZm9udC1zaXplPSImaHNpemU1OyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisKKyAgICAgIDxzdWJ0aXRsZSBzcGFjZS1iZWZvcmU9IjAuNWVtIgorCQlmb250LXN0eWxlPSJpdGFsaWMiCisJCWZvbnQtc2l6ZT0iJmhzaXplMjsiCisJCWZvbnQtd2VpZ2h0PSJib2xkIi8+CisKKyAgICAgIDxjb3JwYXV0aG9yICBzcGFjZS1iZWZvcmU9IjAuNWVtIgorCSAgICAgICAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZT0iJmhzaXplMjsiLz4KKworICAgICAgPGF1dGhvcmdyb3VwIHNwYWNlLWJlZm9yZT0iMC41ZW0iCisJICAgICAgICAgICBzcGFjZS1hZnRlcj0iMC41ZW0iCisgICAgICAgICAgICAgICAgICAgZm9udC1zaXplPSImaHNpemUyOyIvPgorCisgICAgICA8YXV0aG9yICAgICAgc3BhY2UtYmVmb3JlPSIwLjVlbSIKKwkgICAgICAgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKyAgICAgICAgICAgICAgICAgICBmb250LXNpemU9IiZoc2l6ZTI7Ii8+CisKKyAgICAgIDxvdGhlcmNyZWRpdC8+CisgICAgICA8cmVsZWFzZWluZm8vPgorICAgICAgPGNvcHlyaWdodC8+CisgICAgICA8bGVnYWxub3RpY2UvPgorICAgICAgPHB1YmRhdGUvPgorICAgICAgPHJldmlzaW9uLz4KKyAgICAgIDxyZXZoaXN0b3J5Lz4KKyAgICAgIDxhYnN0cmFjdC8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImFwcGVuZGl4IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6YXBwZW5kaXhbMV0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgICA8Y29ycGF1dGhvci8+CisgICAgICA8YXV0aG9yZ3JvdXAvPgorICAgICAgPGF1dGhvci8+CisgICAgICA8b3RoZXJjcmVkaXQvPgorICAgICAgPHJlbGVhc2VpbmZvLz4KKyAgICAgIDxjb3B5cmlnaHQvPgorICAgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICAgIDxwdWJkYXRlLz4KKyAgICAgIDxyZXZpc2lvbi8+CisgICAgICA8cmV2aGlzdG9yeS8+CisgICAgICA8YWJzdHJhY3QvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ic2VjdGlvbiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ic2VjdDEiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8c3VidGl0bGUKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxjb3JwYXV0aG9yLz4KKyAgICA8YXV0aG9yZ3JvdXAvPgorICAgIDxhdXRob3IvPgorICAgIDxvdGhlcmNyZWRpdC8+CisgICAgPHJlbGVhc2VpbmZvLz4KKyAgICA8Y29weXJpZ2h0Lz4KKyAgICA8bGVnYWxub3RpY2UvPgorICAgIDxwdWJkYXRlLz4KKyAgICA8cmV2aXNpb24vPgorICAgIDxyZXZoaXN0b3J5Lz4KKyAgICA8YWJzdHJhY3QvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNlY3QyIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJzZWN0MyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgIDx0aXRsZQorCSAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxzdWJ0aXRsZQorCSAgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPGNvcnBhdXRob3IvPgorICAgIDxhdXRob3Jncm91cC8+CisgICAgPGF1dGhvci8+CisgICAgPG90aGVyY3JlZGl0Lz4KKyAgICA8cmVsZWFzZWluZm8vPgorICAgIDxjb3B5cmlnaHQvPgorICAgIDxsZWdhbG5vdGljZS8+CisgICAgPHB1YmRhdGUvPgorICAgIDxyZXZpc2lvbi8+CisgICAgPHJldmhpc3RvcnkvPgorICAgIDxhYnN0cmFjdC8+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorPC90OnRpdGxlcGFnZT4KKworPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ic2VjdDQiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICA8dGl0bGUKKwkgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8c3VidGl0bGUKKwkgICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDxjb3JwYXV0aG9yLz4KKyAgICA8YXV0aG9yZ3JvdXAvPgorICAgIDxhdXRob3IvPgorICAgIDxvdGhlcmNyZWRpdC8+CisgICAgPHJlbGVhc2VpbmZvLz4KKyAgICA8Y29weXJpZ2h0Lz4KKyAgICA8bGVnYWxub3RpY2UvPgorICAgIDxwdWJkYXRlLz4KKyAgICA8cmV2aXNpb24vPgorICAgIDxyZXZoaXN0b3J5Lz4KKyAgICA8YWJzdHJhY3QvPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKzwvdDp0aXRsZXBhZ2U+CisKKzx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNlY3Q1IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJzaW1wbGVzZWN0IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgPHRpdGxlCisJICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPHN1YnRpdGxlCisJICAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8Y29ycGF1dGhvci8+CisgICAgPGF1dGhvcmdyb3VwLz4KKyAgICA8YXV0aG9yLz4KKyAgICA8b3RoZXJjcmVkaXQvPgorICAgIDxyZWxlYXNlaW5mby8+CisgICAgPGNvcHlyaWdodC8+CisgICAgPGxlZ2Fsbm90aWNlLz4KKyAgICA8cHViZGF0ZS8+CisgICAgPHJldmlzaW9uLz4KKyAgICA8cmV2aGlzdG9yeS8+CisgICAgPGFic3RyYWN0Lz4KKyAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImJpYmxpb2dyYXBoeSIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjpiaWJsaW9ncmFwaHlbMV0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9ImJpYmxpb2RpdiIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6YmlibGlvZGl2WzFdIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemU0OyIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJnbG9zc2FyeSIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjpnbG9zc2FyeVsxXSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisgICAgICA8c3VidGl0bGUKKwkJZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0iZ2xvc3NkaXYiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6Omdsb3NzZGl2WzFdIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemU0OyIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiLz4KKyAgICAgIDxzdWJ0aXRsZQorCQlmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJpbmRleCIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJjb21wb25lbnQudGl0bGUiCisJICAgICBwYXJhbTpub2RlPSJhbmNlc3Rvci1vci1zZWxmOjppbmRleFsxXSIKKyAgICAgICAgICAgICBwYXJhbTpwYWdld2lkZT0iMSIKKwkgICAgIG1hcmdpbi1sZWZ0PSIwcHQiCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDwhLS0gVGhlIGluZGV4ZGl2LnRpdGxlIHRlbXBsYXRlIGlzIHVzZWQgc28gdGhhdCBtYW51YWwgYW5kIC0tPgorICA8IS0tIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGluZGV4ZGl2IHRpdGxlcyBnZXQgdGhlIHNhbWUgLS0+CisgIDwhLS0gZm9ybWF0dGluZy4gLS0+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0iaW5kZXhkaXYiIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJpbmRleGRpdi50aXRsZSIKKwkgICAgIHBhcmFtOnRpdGxlPSJ0aXRsZSIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InNldGluZGV4IiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImNvbXBvbmVudC50aXRsZSIKKwkgICAgIHBhcmFtOm5vZGU9ImFuY2VzdG9yLW9yLXNlbGY6OnNldGluZGV4WzFdIgorICAgICAgICAgICAgIHBhcmFtOnBhZ2V3aWRlPSIxIgorCSAgICAgbWFyZ2luLWxlZnQ9IjBwdCIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplNTsiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIi8+CisgICAgICA8c3VidGl0bGUKKwkJZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0iY29sb3Bob24iIHQ6d3JhcHBlcj0iZm86YmxvY2siPgorICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0icmVjdG8iPgorICAgICAgPHRpdGxlCisJICAgICB0OmZvcmNlPSIxIgorCSAgICAgdDpuYW1lZC10ZW1wbGF0ZT0iY29tcG9uZW50LnRpdGxlIgorCSAgICAgcGFyYW06bm9kZT0iYW5jZXN0b3Itb3Itc2VsZjo6Y29sb3Bob25bMV0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTU7IgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iCisJICAgICBmb250LXdlaWdodD0iYm9sZCIvPgorICAgICAgPHN1YnRpdGxlCisJCWZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgPC90OnRpdGxlcGFnZS1iZWZvcmU+Cis8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgIDx0OnRpdGxlcGFnZSB0OmVsZW1lbnQ9InRhYmxlLm9mLmNvbnRlbnRzIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImdlbnRleHQiCisJICAgICBwYXJhbTprZXk9IidUYWJsZW9mQ29udGVudHMnIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5taW5pbXVtPSIxZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm9wdGltdW09IjEuNWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5tYXhpbXVtPSIyZW0iCisJICAgICBzcGFjZS1hZnRlcj0iMC41ZW0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTM7IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJsaXN0Lm9mLnRhYmxlcyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInTGlzdG9mVGFibGVzJyIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWluaW11bT0iMWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5vcHRpbXVtPSIxLjVlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWF4aW11bT0iMmVtIgorCSAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemUzOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ibGlzdC5vZi5maWd1cmVzIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImdlbnRleHQiCisJICAgICBwYXJhbTprZXk9IidMaXN0b2ZGaWd1cmVzJyIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWluaW11bT0iMWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5vcHRpbXVtPSIxLjVlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWF4aW11bT0iMmVtIgorCSAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemUzOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ibGlzdC5vZi5leGFtcGxlcyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInTGlzdG9mRXhhbXBsZXMnIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5taW5pbXVtPSIxZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm9wdGltdW09IjEuNWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5tYXhpbXVtPSIyZW0iCisJICAgICBzcGFjZS1hZnRlcj0iMC41ZW0iCisJICAgICBtYXJnaW4tbGVmdD0ieyR0aXRsZS5tYXJnaW4ubGVmdH0iCisJICAgICBmb250LXNpemU9IiZoc2l6ZTM7IgorCSAgICAgZm9udC13ZWlnaHQ9ImJvbGQiCisJICAgICBmb250LWZhbWlseT0ieyR0aXRsZS5mb250c2V0fSIvPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1jb250ZW50IHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtY29udGVudD4KKworICAgIDx0OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisgICAgPC90OnRpdGxlcGFnZS1zZXBhcmF0b3I+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0icmVjdG8iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKyAgPC90OnRpdGxlcGFnZT4KKworICA8dDp0aXRsZXBhZ2UgdDplbGVtZW50PSJsaXN0Lm9mLmVxdWF0aW9ucyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInTGlzdG9mRXF1YXRpb25zJyIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWluaW11bT0iMWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5vcHRpbXVtPSIxLjVlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWF4aW11bT0iMmVtIgorCSAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemUzOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ibGlzdC5vZi5wcm9jZWR1cmVzIiB0OndyYXBwZXI9ImZvOmJsb2NrIj4KKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InJlY3RvIj4KKyAgICAgIDx0aXRsZQorCSAgICAgdDpmb3JjZT0iMSIKKwkgICAgIHQ6bmFtZWQtdGVtcGxhdGU9ImdlbnRleHQiCisJICAgICBwYXJhbTprZXk9IidMaXN0b2ZQcm9jZWR1cmVzJyIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWluaW11bT0iMWVtIgorICAgICAgICAgICAgIHNwYWNlLWJlZm9yZS5vcHRpbXVtPSIxLjVlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUubWF4aW11bT0iMmVtIgorCSAgICAgc3BhY2UtYWZ0ZXI9IjAuNWVtIgorCSAgICAgbWFyZ2luLWxlZnQ9InskdGl0bGUubWFyZ2luLmxlZnR9IgorCSAgICAgZm9udC1zaXplPSImaHNpemUzOyIKKwkgICAgIGZvbnQtd2VpZ2h0PSJib2xkIgorCSAgICAgZm9udC1mYW1pbHk9InskdGl0bGUuZm9udHNldH0iLz4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2UtY29udGVudCB0OnNpZGU9InZlcnNvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWNvbnRlbnQ+CisKKyAgICA8dDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorICAgIDwvdDp0aXRsZXBhZ2Utc2VwYXJhdG9yPgorCisgICAgPHQ6dGl0bGVwYWdlLWJlZm9yZSB0OnNpZGU9InJlY3RvIj4KKyAgICA8L3Q6dGl0bGVwYWdlLWJlZm9yZT4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisgIDwvdDp0aXRsZXBhZ2U+CisKKyAgPHQ6dGl0bGVwYWdlIHQ6ZWxlbWVudD0ibGlzdC5vZi51bmtub3ducyIgdDp3cmFwcGVyPSJmbzpibG9jayI+CisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJyZWN0byI+CisgICAgICA8dGl0bGUKKwkgICAgIHQ6Zm9yY2U9IjEiCisJICAgICB0Om5hbWVkLXRlbXBsYXRlPSJnZW50ZXh0IgorCSAgICAgcGFyYW06a2V5PSInTGlzdG9mVW5rbm93biciCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1pbmltdW09IjFlbSIKKyAgICAgICAgICAgICBzcGFjZS1iZWZvcmUub3B0aW11bT0iMS41ZW0iCisgICAgICAgICAgICAgc3BhY2UtYmVmb3JlLm1heGltdW09IjJlbSIKKwkgICAgIHNwYWNlLWFmdGVyPSIwLjVlbSIKKwkgICAgIG1hcmdpbi1sZWZ0PSJ7JHRpdGxlLm1hcmdpbi5sZWZ0fSIKKwkgICAgIGZvbnQtc2l6ZT0iJmhzaXplMzsiCisJICAgICBmb250LXdlaWdodD0iYm9sZCIKKwkgICAgIGZvbnQtZmFtaWx5PSJ7JHRpdGxlLmZvbnRzZXR9Ii8+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLWNvbnRlbnQgdDpzaWRlPSJ2ZXJzbyI+CisgICAgPC90OnRpdGxlcGFnZS1jb250ZW50PgorCisgICAgPHQ6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKyAgICA8L3Q6dGl0bGVwYWdlLXNlcGFyYXRvcj4KKworICAgIDx0OnRpdGxlcGFnZS1iZWZvcmUgdDpzaWRlPSJyZWN0byI+CisgICAgPC90OnRpdGxlcGFnZS1iZWZvcmU+CisKKyAgICA8dDp0aXRsZXBhZ2UtYmVmb3JlIHQ6c2lkZT0idmVyc28iPgorICAgIDwvdDp0aXRsZXBhZ2UtYmVmb3JlPgorICA8L3Q6dGl0bGVwYWdlPgorCis8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCis8L3Q6dGVtcGxhdGVzPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL2hpc3RvcnkucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL2hpc3RvcnkucnN0CmluZGV4IDg5ZDRhYWQuLjc2ZDQzMDkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC9oaXN0b3J5LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvaGlzdG9yeS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqCiBNYW51YWwgUmV2aXNpb24gSGlzdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YmY1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSIndGVzdC1tYW51YWwtc3R5bGUuY3NzJyIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaGFwdGVyLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImFwcGVuZGl4LmF1dG9sYWJlbCIgc2VsZWN0PSJBIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24uYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pZC5hdHRyaWJ1dGVzIiBzZWxlY3Q9IjEiIC8+CisKKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtaW50cm8ucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLWludHJvLnJzdAppbmRleCAyNWI3OWY3Li41M2FkNjUwIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtaW50cm8ucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC1pbnRyby5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBUaGUgWW9jdG8gUHJvamVjdCBUZXN0IEVudmlyb25tZW50IE1hbnVhbApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLWludHJvLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC1pbnRyby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNkYmVlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC1pbnRyby54bWwKQEAgLTAsMCArMSw2MjQgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ndGVzdC1tYW51YWwtaW50cm8nPgorCis8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgVGVzdCBFbnZpcm9ubWVudCBNYW51YWw8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSd0ZXN0LXdlbGNvbWUnPgorICAgICAgICA8dGl0bGU+V2VsY29tZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+IFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgVGVzdCBFbnZpcm9ubWVudCBNYW51YWwhIFRoaXMgbWFudWFsIGlzIGEgd29yayBpbgorICAgICAgICAgICAgcHJvZ3Jlc3MuIFRoZSBtYW51YWwgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQgdXNlZCBieSB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdG8gbWFrZSBzdXJlIGVhY2ggbWFqb3IgYW5kIG1pbm9yIHJlbGVhc2Ugd29ya3MgYXMgaW50ZW5kZWQuIEFsbCB0aGUKKyAgICAgICAgICAgIHByb2plY3QncyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIGFuZCBwcm9jZXNzZXMgYXJlIHB1YmxpY2x5IHZpc2libGUgYW5kIGF2YWlsYWJsZSBzbworICAgICAgICAgICAgdGhhdCB0aGUgY29tbXVuaXR5IGNhbiBzZWUgd2hhdCB0ZXN0aW5nIGlzIGJlaW5nIHBlcmZvcm1lZCwgaG93IGl0J3MgYmVpbmcgZG9uZSBhbmQgdGhlCisgICAgICAgICAgICBjdXJyZW50IHN0YXR1cyBvZiB0aGUgdGVzdHMgYW5kIHRoZSBwcm9qZWN0IGF0IGFueSBnaXZlbiB0aW1lLiBJdCBpcyBpbnRlbmRlZCB0aGF0IE90aGVyCisgICAgICAgICAgICBvcmdhbml6YXRpb25zIGNhbiBsZXZlcmFnZSBvZmYgdGhlIHByb2Nlc3MgYW5kIHRlc3RpbmcgZW52aXJvbm1lbnQgdXNlZCBieSB0aGUgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgdG8gY3JlYXRlIHRoZWlyIG93biBhdXRvbWF0ZWQsIHByb2R1Y3Rpb24gdGVzdCBlbnZpcm9ubWVudCwgYnVpbGRpbmcgdXBvbiB0aGUKKyAgICAgICAgICAgIGZvdW5kYXRpb25zIGZyb20gdGhlIHByb2plY3QgY29yZS4gPC9wYXJhPgorCisgICAgICAgIDxwYXJhPiBDdXJyZW50bHksIHRoZSBZb2N0byBQcm9qZWN0IFRlc3QgRW52aXJvbm1lbnQgTWFudWFsIGhhcyBubyBwcm9qZWN0ZWQgcmVsZWFzZSBkYXRlLgorICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgYSB3b3JrLWluLXByb2dyZXNzIGFuZCBpcyBiZWluZyBpbml0aWFsbHkgbG9hZGVkIHdpdGggaW5mb3JtYXRpb24gZnJvbQorICAgICAgICAgICAgdGhlIDx1bGluayB1cmw9IiI+UkVBRE1FPC91bGluaz4gZmlsZXMgYW5kIG5vdGVzIGZyb20ga2V5IGVuZ2luZWVyczogPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlcjI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBUaGlzIDx1bGluaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NsZWFuL2NnaXQuY2dpL3lvY3RvLWF1dG9idWlsZGVyMi90cmVlL1JFQURNRS5tZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxmaWxlbmFtZT5SRUFETUUubWQ8L2ZpbGVuYW1lPjwvdWxpbms+IGlzIHRoZSBtYWluIFJFQURNRSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZGV0aWFscyBob3cgdG8gc2V0IHVwIHRoZSBZb2N0byBQcm9qZWN0IEF1dG9idWlsZGVyLiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tYXV0b2J1aWxkZXIyPC9maWxlbmFtZT4gcmVwb3NpdG9yeSByZXByZXNlbnRzIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCdzIGNvbnNvbGUgVUkgcGx1Z2luIHRvIEJ1aWxkYm90IGFuZCB0aGUgY29uZmlndXJhdGlvbiBuZWNlc3NhcnkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBCdWlsZGJvdCB0byBwZXJmb3JtIHRoZSB0ZXN0aW5nIHRoZSBwcm9qZWN0IHJlcXVpcmVzLiA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlci1oZWxwZXI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2xlYW4vY2dpdC5jZ2kveW9jdG8tYXV0b2J1aWxkZXItaGVscGVyL3RyZWUvUkVBRE1FIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+PC91bGluaz4gYW5kIHJlcG9zaXRvcnkgY29udGFpbnMgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgQXV0b2J1aWxkZXIgSGVscGVyIHNjcmlwdHMgYW5kIGNvbmZpZ3VyYXRpb24uIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlci1oZWxwZXI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgImdsdWUiIGxvZ2ljIHRoYXQgZGVmaW5lcyB3aGljaCB0ZXN0cyB0byBydW4gYW5kIGhvdyB0byBydW4gdGhlbS4gQXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBpdCBjYW4gYmUgdXNlZCBieSBhbnkgQ29udGludW91cyBJbXByb3ZlbWVudCAoQ0kpIHN5c3RlbSB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcywgc3VwcG9ydCBnZXR0aW5nIHRoZSBjb3JyZWN0IGNvZGUgcmV2aXNpb25zLCBjb25maWd1cmUgYnVpbGRzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLCBydW4gYnVpbGRzLCBhbmQgY29sbGVjdCByZXN1bHRzLiBUaGUgY29kZSBpcyBpbmRlcGVuZGVudCBvZiBhbnkgQ0kKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgd2hpY2ggbWVhbnMgdGhlIGNvZGUgY2FuIHdvcmsgQnVpbGRib3QsIEplbmtpbnMsIG9yIG90aGVycy4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBoYXMgYSBicmFuY2ggcGVyIHJlbGVhc2Ugb2YgdGhlIHByb2plY3QgZGVmaW5pbmcgdGhlIHRlc3RzIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgb24gYSBwZXIgcmVsZWFzZSBiYXNpcy48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Rlc3QteW9jdG8tcHJvamVjdC1hdXRvYnVpbGRlci1vdmVydmlldyc+CisgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IEF1dG9idWlsZGVyIE92ZXJ2aWV3PC90aXRsZT4KKworICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlciBjb2xsZWN0aXZlbHkgcmVmZXJzIHRvIHRoZSBzb2Z0d2FyZSwgdG9vbHMsIHNjcmlwdHMsIGFuZAorICAgICAgICAgICAgcHJvY2VkdXJlcyB1c2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRvIHRlc3QgcmVsZWFzZWQgc29mdHdhcmUgYWNyb3NzIHN1cHBvcnRlZCBoYXJkd2FyZQorICAgICAgICAgICAgaW4gYW4gYXV0b21hdGVkIGFuZCByZWd1bGFyIGZhc2hpb24uIEJhc2ljYWxseSwgZHVyaW5nIHRoZSBkZXZlbG9wbWVudCBvZiBhIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IHJlbGVhc2UsIHRoZSBBdXRvYnVpbGRlciB0ZXN0cyBpZiB0aGluZ3Mgd29yay4gVGhlIEF1dG9idWlsZGVyIGJ1aWxkcyBhbGwgdGVzdAorICAgICAgICAgICAgdGFyZ2V0cyBhbmQgcnVucyBhbGwgdGhlIHRlc3RzLiA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QgdXNlcyBub3cgdXNlcyBzdGFuZGFyZCB1cHN0cmVhbSAgPHVsaW5rCisgICAgICAgICAgICAgICAgdXJsPSJodHRwczovL2RvY3MuYnVpbGRib3QubmV0LzAuOS4xNS5wb3N0MS8iPkJ1aWxkYm90PC91bGluaz4gKHZlcnNpb24gOSkgdG8gZHJpdmUKKyAgICAgICAgICAgIGl0cyBpbnRlZ3JhdGlvbiBhbmQgdGVzdGluZy4gQnVpbGRib3QgTmluZSBoYXMgYSBwbHVnLWluIGludGVyZmFjZSB0aGF0IHRoZSBZb2N0bworICAgICAgICAgICAgUHJvamVjdCBjdXN0b21pemVzIHVzaW5nIGNvZGUgZnJvbSB0aGUgPGZpbGVuYW1lPnlvY3RvLWF1dG9idWlsZGVyMjwvZmlsZW5hbWU+CisgICAgICAgICAgICByZXBvc2l0b3J5LCBhZGRpbmcgaXRzIG93biBjb25zb2xlIFVJIHBsdWdpbi4gVGhlIHJlc3VsdGluZyBVSSBwbHVnLWluIGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgIHZpc3VhbGl6ZSBidWlsZHMgaW4gYSB3YXkgc3VpdGVkIHRvIHRoZSBwcm9qZWN0J3MgbmVlZHMuPC9wYXJhPgorCisgICAgICAgIDxwYXJhPkEgPGZpbGVuYW1lPmhlbHBlcjwvZmlsZW5hbWU+IGxheWVyIHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gYW5kIGpvYiBtYW5hZ2VtZW50IHRocm91Z2gKKyAgICAgICAgICAgIHNjcmlwdHMgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlci1oZWxwZXI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LiBUaGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVscGVyPC9maWxlbmFtZT4gbGF5ZXIgY29udGFpbnMgdGhlIGJ1bGsgb2YgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGluZm9ybWF0aW9uIGFuZCBpcyByZWxlYXNlLXNwZWNpZmljLCB3aGljaCBtYWtlcyBpdCBoaWdobHkgY3VzdG9taXphYmxlIG9uIGEgcGVyLXByb2plY3QKKyAgICAgICAgICAgIGJhc2lzLiBUaGUgbGF5ZXIgaXMgQ0kgc3lzdGVtLWFnbm9zdGljIGFuZCBjb250YWlucyBhIG51bWJlciBvZiBIZWxwZXIgc2NyaXB0cyB0aGF0IGNhbgorICAgICAgICAgICAgZ2VuZXJhdGUgYnVpbGQgY29uZmlndXJhdGlvbnMgZnJvbSBzaW1wbGUgSlNPTiBmaWxlcy4gPG5vdGU+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHByb2plY3QgdXNlcyBCdWlsZGJvdCBmb3IgaGlzdG9yaWNhbCByZWFzb25zIGJ1dCBhbHNvIGJlY2F1c2UgbWFueSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBkZXZlbG9wZXJzIGhhdmUga25vd2xlZGdlIG9mIHB5dGhvbi4gSXQgaXMgcG9zc2libGUgdG8gdXNlIHRoZSBvdXRlcgorICAgICAgICAgICAgICAgICAgICBsYXllcnMgZnJvbSBhbm90aGVyIENvbnRpbnVvdXMgSW50ZWdyYXRpb24gKENJKSBzeXN0ZW0gc3VjaCBhcyA8dWxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVua2luc18oc29mdHdhcmUpIj5KZW5raW5zPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBCdWlsZGJvdC4gPC9wYXJhPgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+IFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIHRoZSBZb2N0byBQcm9qZWN0IEF1dG9idWlsZGVyIHN0YWNrIHdpdGggYSB0b3BvbG9neSB0aGF0CisgICAgICAgICAgICBpbmNsdWRlcyBhIGNvbnRyb2xsZXIgYW5kIGEgY2x1c3RlciBvZiB3b3JrZXJzOiA8aW1hZ2VkYXRhCisgICAgICAgICAgICAgICAgZmlsZXJlZj0iZmlndXJlcy9hYi10ZXN0LWNsdXN0ZXIucG5nIiB3aWR0aD0iNC42aW4iIGRlcHRoPSI0LjM1aW4iIGFsaWduPSJjZW50ZXIiCisgICAgICAgICAgICAgICAgc2NhbGVmaXQ9IjEiLz4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0ZXN0LXByb2plY3QtdGVzdHMnPgorICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBUZXN0cyAtIFR5cGVzIG9mIFRlc3RpbmcgT3ZlcnZpZXc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPlRoZSBBdXRvYnVpbGRlciB0ZXN0cyBkaWZmZXJlbnQgZWxlbWVudHMgb2YgdGhlIHByb2plY3QgYnkgdXNpbmcgdGhlZm9sbG93aW5nIHR5cGVzIG9mCisgICAgICAgICAgICB0ZXN0czogPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFRlc3Rpbmc6PC9lbXBoYXNpcz4gVGVzdHMgd2hldGhlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYnkgdmFyeWluZyA8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwgPHVsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgID48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPiwgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzcGVjaWZpYyB0YXJnZXQgaW1hZ2VzIGJlaW5nIGJ1aWx0IChvciB3b3JsZCkuIFVzZWQgdG8gdHJpZ2dlciBidWlsZHMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgZGlmZmVyZW50IHRlc3QgY29uZmlndXJhdGlvbnMgb24gdGhlIEF1dG9idWlsZGVyLiBCdWlsZHMgdXN1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgY292ZXIgbWFueSBkaWZmZXJlbnQgdGFyZ2V0cyBmb3IgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMsIG1hY2hpbmVzLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbnMsIGFzIHdlbGwgYXMgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIGRpZmZlcmVudCBpbml0CisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zLiBUaGUgQXV0b2J1aWxkZXIgdGVzdHMgbGl0ZXJhbGx5IGh1bmRyZWRzIG9mIGNvbmZpZ3VyYXRpb25zIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy4gPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNhbml0eSBDaGVja3MgRHVyaW5nIHRoZSBCdWlsZCBQcm9jZXNzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyBpbml0aWF0ZWQgdGhyb3VnaCB0aGUgPHVsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbnNhbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48ZmlsZW5hbWU+aW5zYW5lPC9maWxlbmFtZT48L3VsaW5rPiBjbGFzcy4gVGhlc2UgY2hlY2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmUgdGhlIG91dHB1dCBvZiB0aGUgYnVpbGRzIGFyZSBjb3JyZWN0LiBGb3IgZXhhbXBsZSwgZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEVMRiBhcmNoaXRlY3R1cmUgaW4gdGhlIGdlbmVyYXRlZCBiaW5hcmllcyBtYXRjaCB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0/IEFSTSBiaW5hcmllcyB3b3VsZCBub3Qgd29yayBpbiBhIE1JUFMgc3lzdGVtISA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgUGVyZm9ybWFuY2UgVGVzdGluZzo8L2VtcGhhc2lzPiBUZXN0cyB3aGV0aGVyIG9yIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9ubHkgdXNlZCBzdGVwcyBkdXJpbmcgYnVpbGRzIHdvcmsgZWZmaWNpZW50bHkgYW5kIGF2b2lkIHJlZ3Jlc3Npb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gdGltZSBjb21tb25seSB1c2VkIHVzYWdlIHNjZW5hcmlvcyBhcmUgcnVuIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtYnVpbGQtcGVyZi10ZXN0PC9maWxlbmFtZT4uIFRoZXNlIHRlc3RzIGFyZSBydW4gb24gaXNvbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzIHNvIHRoYXQgdGhlIHRpbWUgbWVhc3VyZW1lbnRzIG9mIHRoZSB0ZXN0cyBhcmUgYWNjdXJhdGUgYW5kIG5vCisgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciBwcm9jZXNzZXMgaW50ZXJmZXJlIHdpdGggdGhlIHRpbWluZyByZXN1bHRzLiBUaGUgcHJvamVjdCBjdXJyZW50bHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIHBlcmZvcm1hbmNlIG9uIHR3byBkaWZmZXJlbnQgZGlzdHJpYnV0aW9ucywgRmVkb3JhIGFuZCBVYnVudHUsIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmUgd2UgaGF2ZSBubyBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZSBhbmQgY2FuIGVuc3VyZSB0aGUgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm9zIHdvcmsgZWZmZWN0aXZlbHkuIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+ZVNESyBUZXN0aW5nOjwvZW1waGFzaXM+IEltYWdlIHRlc3RzIGluaXRpYXRlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0c2RrZXh0CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXN0cyB1dGlsaXplIHRoZSA8ZmlsZW5hbWU+dGVzdHNka2V4dDwvZmlsZW5hbWU+IGNsYXNzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fdGVzdHNka2V4dDwvZmlsZW5hbWU+IHRhc2suIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmVhdHVyZSBUZXN0aW5nOjwvZW1waGFzaXM+IFZhcmlvdXMgc2NlbmFyaW8tYmFzZWQgdGVzdHMgYXJlIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdGVzdGluZy1hbmQtcXVhbGl0eS1hc3N1cmFuY2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPk9wZW5FbWJlZGRlZCBTZWxmLVRlc3Q8L3VsaW5rPiAob2Utc2VsZnRlc3QpLiBXZSB0ZXN0IG9lLXNlbGZ0ZXN0IG9uCisgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIG9mIHRoZSBtYWluIGRpc3RydWJ1dGlvbnMgd2Ugc3VwcG9ydC4gPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbWFnZSBUZXN0aW5nOjwvZW1waGFzaXM+IEltYWdlIHRlc3RzIGluaXRpYXRlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0aW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRlc3RzIHV0aWxpemUgdGhlIDx1bGluaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD0iJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtdGVzdGltYWdlKiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxmaWxlbmFtZT50ZXN0aW1hZ2UqPC9maWxlbmFtZT48L3VsaW5rPiBjbGFzc2VzIGFuZCB0aGUgPHVsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtdGVzdGltYWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGZpbGVuYW1lPmRvX3Rlc3RpbWFnZTwvZmlsZW5hbWU+PC91bGluaz4gdGFzay4gPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXllciBUZXN0aW5nOjwvZW1waGFzaXM+IFRoZSBBdXRvYnVpbGRlciBoYXMgdGhlIHBvc3NpYmlsaXR5IHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHdoZXRoZXIgc3BlY2lmaWMgbGF5ZXJzIHdvcmsgd2l0aCB0aGUgdGVzdCBvZiB0aGUgc3lzdGVtLiBUaGUgbGF5ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWQgbWF5IGJlIHNlbGVjdGVkIGJ5IG1lbWJlcnMgb2YgdGhlIHByb2plY3QuIFNvbWUga2V5IGNvbW11bml0eSBsYXllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBhbHNvIHRlc3RlZCBwZXJpb2RpY2FsbHkuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWNrYWdlIFRlc3Rpbmc6PC9lbXBoYXNpcz4gQSBQYWNrYWdlIFRlc3QgKHB0ZXN0KSBydW5zIHRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IHBhY2thZ2VzIGJ1aWx0IGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG9uIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuIFNlZSB0aGUgIjx1bGluaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjdGVzdGluZy1wYWNrYWdlcy13aXRoLXB0ZXN0Ij5UZXN0aW5nIFBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBwdGVzdDwvdWxpbms+IiBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgYW5kIHRoZSAiPHVsaW5rIHVybD0iJllPQ1RPX1dJS0lfVVJMOy93aWtpL1B0ZXN0Ij5QdGVzdDwvdWxpbms+IiBXaWtpCisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFB0ZXN0LiA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNESyBUZXN0aW5nOjwvZW1waGFzaXM+IEltYWdlIHRlc3RzIGluaXRpYXRlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0c2RrCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXN0cyB1dGlsaXplIHRoZSA8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy10ZXN0c2RrIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGZpbGVuYW1lPnRlc3RzZGs8L2ZpbGVuYW1lPjwvdWxpbms+IGNsYXNzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fdGVzdHNkazwvZmlsZW5hbWU+IHRhc2suIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5pdCBUZXN0aW5nOjwvZW1waGFzaXM+IFVuaXQgdGVzdHMgb24gdmFyaW91cyBjb21wb25lbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHJ1biB0aHJvdWdoIDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+IGFuZCA8dWxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9IiZZT0NUT19ET0NTX1JFRl9VUkw7I3Rlc3RpbmctYW5kLXF1YWxpdHktYXNzdXJhbmNlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGZpbGVuYW1lPmJpdGJha2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjwvdWxpbms+LiA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG9tYXRpYyBVcGdyYWRlIEhlbHBlcjo8L2VtcGhhc2lzPiBUaGlzIHRhcmdldCB0ZXN0cyB3aGV0aGVyIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2Ygc29mdHdhcmUgYXJlIGF2YWlsYWJsZSBhbmQgd2hldGhlciB3ZSBjYW4gYXV0b21hdGljYWxseSB1cGdyYWRlCisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aG9zZSBuZXcgdmVyc2lvbnMuIElmIHNvLCB0aGlzIHRhcmdldCBlbWFpbHMgdGhlIG1haW50YWluZXJzIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2ggdG8gbGV0IHRoZW0ga25vdyB0aGlzIGlzIHBvc3NpYmxlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndGVzdC10ZXN0LW1hcHBpbmcnPgorICAgICAgICA8dGl0bGU+SG93IFRlc3RzIE1hcCB0byBBcmVhcyBvZiBDb2RlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRlc3RzIG1hcCBpbnRvIHRoZSBjb2RlYmFzZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Yml0YmFrZS1zZWxmdGVzdDwvZW1waGFzaXM+OiA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZXNlIHRlc3RzIGFyZSBzZWxmLWNvbnRhaW5lZCBhbmQgdGVzdCBCaXRCYWtlIGFzIHdlbGwgYXMgaXRzIEFQSXMsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHRoZSBmZXRjaGVycy4gVGhlIHRlc3RzIGFyZSBsb2NhdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvbGliLyovdGVzdHM8L2ZpbGVuYW1lPi4gPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gcm9tIHdpdGhpbiB0aGUgQml0QmFrZSByZXBvc2l0b3J5LCBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgJCBiaXRiYWtlLXNlbGZ0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIHNraXAgdGVzdHMgdGhhdCBhY2Nlc3MgdGhlIEludGVybmV0LCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX1NLSVBfTkVUVEVTVDwvZmlsZW5hbWU+IHZhcmlhYmxlIHdoZW4gcnVubmluZworICAgICAgICAgICAgICAgICAgICAgICAgImJpdGJha2Utc2VsZnRlc3QiIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgQkJfU0tJUF9ORVRURVNUPXllcyBiaXRiYWtlLXNlbGZ0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGRlZmF1bHQgb3V0cHV0IGlzIHF1aWV0IGFuZCBqdXN0IHByaW50cyBhIHN1bW1hcnkgb2Ygd2hhdCB3YXMgcnVuLiBUbworICAgICAgICAgICAgICAgICAgICAgICAgc2VlIG1vcmUgaW5mb3JtYXRpb24sIHRoZXJlIGlzIGEgdmVyYm9zZQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uOjxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgJCBiaXRiYWtlLXNlbGZ0ZXN0IC12CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGlzIG9wdGlvbiB3aGVuIHlvdSB3aXNoIHRvIHNraXAgdGVzdHMgdGhhdCBhY2Nlc3MgdGhlIG5ldHdvcmssIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbW9zdGx5IG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBmZXRjaGVyIG1vZHVsZXMuIFRvIHNwZWNpZnkgaW5kaXZpZHVhbCB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIHRvIHJ1biwgYXBwZW5kIHRoZSB0ZXN0IG1vZHVsZSBuYW1lIHRvIHRoZSAiYml0YmFrZS1zZWxmdGVzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuIEZvciBleGFtcGxlLCB0byBzcGVjaWZ5IHRoZSB0ZXN0cyBmb3IgdGhlIGJiLmRhdGEubW9kdWxlLCBydW46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZS1zZWxmdGVzdCBiYi50ZXN0LmRhdGEubW9kdWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PllvdQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGFsc28gc3BlY2lmeSBpbmRpdmlkdWFsIHRlc3RzIGJ5IGRlZmluaW5nIHRoZSBmdWxsIG5hbWUgYW5kIG1vZHVsZSBwbHVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY2xhc3MgcGF0aCBvZiB0aGUgdGVzdCwgZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZS1zZWxmdGVzdCBiYi50ZXN0cy5kYXRhLlRlc3RPdmVycmlkZXMudGVzdF9vbmVfb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHRlc3RzIGFyZSBiYXNlZCBvbiA8dWxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS91bml0dGVzdC5odG1sIj5QeXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdDwvdWxpbms+LiA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+b2Utc2VsZnRlc3Q8L2VtcGhhc2lzPjogPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZXNlIHRlc3RzIHVzZSBPRSB0byB0ZXN0IHRoZSB3b3JrZmxvd3MsIHdoaWNoIGluY2x1ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmcgc3BlY2lmaWMgZmVhdHVyZXMsIGJlaGF2aW9ycyBvZiB0YXNrcywgYW5kIEFQSSB1bml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy4gPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgdGVzdHMgY2FuIHRha2UgYWR2YW50YWdlIG9mIHBhcmFsbGVsaXNtIHRocm91Z2ggdGhlICItaiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgd2hpY2ggY2FuIHNwZWNpZnkgYSBudW1iZXIgb2YgdGhyZWFkcyB0byBzcHJlYWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyBhY3Jvc3MuIE5vdGUgdGhhdCBhbGwgdGVzdHMgZnJvbSBhIGdpdmVuIGNsYXNzIG9mIHRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHJ1biBpbiB0aGUgc2FtZSB0aHJlYWQuIFRvIHBhcmFsbGVsaXplIGxhcmdlIG51bWJlcnMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIHlvdSBjYW4gc3BsaXQgdGhlIGNsYXNzIGludG8gbXVsdGlwbGUgdW5pdHMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgdGVzdHMgYXJlIGJhc2VkIG9uIFB5dGhvbiB1bml0dGVzdC4gPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgY29kZSBmb3IgdGhlIHRlc3RzIHJlc2lkZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy88L2ZpbGVuYW1lPi4gPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyBydW4gYWxsIHRoZSB0ZXN0cywgZW50ZXIgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICAkIG9lLXNlbGZ0ZXN0IC1hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIHJ1biBhIHNwZWNpZmljIHRlc3QsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybSB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT50ZXN0bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGVzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgJCBvZS1zZWxmdGVzdCAtciA8cmVwbGFjZWFibGU+dGVzdG5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd291bGQgcnVuIHRoZSB0aW5mb2lsIGdldFZhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OjxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgJCBvZS1zZWxmdGVzdCAtciB0aW5mb2lsLlRpbmZvaWxUZXN0cy50ZXN0X2dldHZhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD5JdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxzbyBwb3NzaWJsZSB0byBydW4gYSBzZXQgb2YgdGVzdHMuIEZvciBleGFtcGxlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQgd2lsbCBydW4gYWxsIG9mIHRoZSB0aW5mb2lsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czo8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgb2Utc2VsZnRlc3QgLXIgIHRpbmZvaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+dGVzdGltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdGVzdHMgYnVpbGQgYW4gaW1hZ2UsIGJvb3QgaXQsIGFuZCBydW4gdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IHRoZSBpbWFnZSdzIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+IFRoZSBjb2RlIGZvciB0aGVzZSB0ZXN0cyByZXNpZGVzIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvPC9maWxlbmFtZT4uIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPklNQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0NMQVNTRVMgKz0gInRlc3RpbWFnZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSB0ZXN0cyB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0aW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz50ZXN0c2RrOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlc2UgdGVzdHMgYnVpbGQgYW4gU0RLLCBpbnN0YWxsIGl0LCBhbmQgdGhlbiBydW4gdGVzdHMgYWdhaW5zdCB0aGF0IFNESy4gPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGNvZGUgZm9yIHRoZXNlIHRlc3RzIHJlc2lkZXMgaW4gPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvc2RrL2Nhc2VzLzwvZmlsZW5hbWU+LiA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIHRlc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0c2RrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPnRlc3RzZGtfZXh0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlc2UgdGVzdHMgYnVpbGQgYW4gZXh0ZW5kZWQgU0RLIChlU0RLKSwgaW5zdGFsbCB0aGF0IGVTREssIGFuZCBydW4gdGVzdHMgYWdhaW5zdCB0aGUgZVNESy4gPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGNvZGUgZm9yIHRoZXNlIHRlc3RzIHJlc2lkZXMgaW4gPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvZXNkazwvZmlsZW5hbWU+LiA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UbyBydW4gdGhlIHRlc3RzLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyB0ZXN0c2RrZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorCisKKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5vZS1idWlsZC1wZXJmLXRlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGVzZSB0ZXN0cyBydW4gdGhyb3VnaCBjb21tb25seSB1c2VkIHVzYWdlIHNjZW5hcmlvcyBhbmQgbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2UgdGltZXMuIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBjb2RlIGZvciB0aGVzZSB0ZXN0cyByZXNpZGVzIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZjwvZmlsZW5hbWU+LiA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UbyBydW4gdGhlIHRlc3RzLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgJCBvZS1idWlsZC1wZXJmLXRlc3QgPHJlcGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD5UaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdGFrZXMgYSBudW1iZXIgb2Ygb3B0aW9ucywgc3VjaCBhcyB3aGVyZSB0byBwbGFjZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgcmVzdWx0cy4gVGhlIEF1dG9idWlsZGVyIEhlbHBlciBTY3JpcHRzIGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLXBlcmYtdGVzdC13cmFwcGVyPC9maWxlbmFtZT4gc2NyaXB0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIG9lLWJ1aWxkLXBlcmYtdGVzdCBmcm9tIHRoZSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VXNlIHRoZSA8ZmlsZW5hbWU+b2UtZ2l0LWFyY2hpdmU8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIHN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHJlc3VsdHMgaW50byBhIEdpdCByZXBvc2l0b3J5LiA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgPGZpbGVuYW1lPm9lLWJ1aWxkLXBlcmYtcmVwb3J0PC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGV4dCByZXBvcnRzIGFuZCBIVE1MIHJlcG9ydHMgd2l0aCBncmFwaHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBkYXRhLiBGb3IgZXhhbXBsZXMsIHNlZSA8bGluayBsaW5rZW5kPSIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0by95b2N0by0yLjcvdGVzdHJlc3VsdHMvYnVpbGRwZXJmLWNlbnRvczcvcGVyZi1jZW50b3M3LnlvY3RvcHJvamVjdC5vcmdfd2Fycmlvcl8yMDE5MDQxNDIwNDc1OF8wZTM5MjAyLmh0bWw8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0iIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5odHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8veW9jdG8tMi43L3Rlc3RyZXN1bHRzL2J1aWxkcGVyZi1jZW50b3M3L3BlcmYtY2VudG9zNy55b2N0b3Byb2plY3Qub3JnX3dhcnJpb3JfMjAxOTA0MTQyMDQ3NThfMGUzOTIwMi50eHQ8L2xpbms+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHRlc3RzIGFyZSBjb250YWluZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHk8L2ZpbGVuYW1lPi48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorCisKKworCisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0ZXN0LWV4YW1wbGVzJz4KKyAgICAgICAgPHRpdGxlPlRlc3QgRXhhbXBsZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPlRoaXMgc2VjdGlvbiBwcm92aWRlcyBleGFtcGxlIHRlc3RzIGZvciBlYWNoIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgaW4gdGhlIDxsaW5rCisgICAgICAgICAgICAgICAgbGlua2VuZD0idGVzdC10ZXN0LW1hcHBpbmciPkhvdyBUZXN0cyBNYXAgdG8gQXJlYXMgb2YgQ29kZTwvbGluaz4gc2VjdGlvbi4gPC9wYXJhPgorICAgICAgICA8cGFyYT5Gb3Igb2VxYSB0ZXN0cywgdGVzdGNhc2VzIGZvciBlYWNoIGFyZWEgcmVzaWRlIGluIHRoZSBtYWluIHRlc3QgZGlyZWN0b3J5IGF0CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuPC9wYXJhPgorICAgICAgICA8cGFyYT5Gb3Igb2Utc2VsZnRlc3QuIGJpdGJha2UgdGVzdGNhc2VzIHJlc2lkZSBpbiB0aGUgPGZpbGVuYW1lPmxpYi9iYi90ZXN0cy88L2ZpbGVuYW1lPgorICAgICAgICAgICAgZGlyZWN0b3J5LiA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2JpdGJha2Utc2VsZnRlc3QtZXhhbXBsZSc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJpdGJha2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPkEgc2ltcGxlIHRlc3QgZXhhbXBsZSBmcm9tIDxmaWxlbmFtZT5saWIvYmIvdGVzdHMvZGF0YS5weTwvZmlsZW5hbWU+IGlzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgY2xhc3MgRGF0YUV4cGFuc2lvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCisgICAgICAgICAgICAgc2VsZi5kWyJmb28iXSA9ICJ2YWx1ZV9vZl9mb28iCisgICAgICAgICAgICAgc2VsZi5kWyJiYXIiXSA9ICJ2YWx1ZV9vZl9iYXIiICAgICAgIAorICAgICAgICAgICAgIHNlbGYuZFsidmFsdWVfb2ZfZm9vIl0gPSAidmFsdWVfb2ZfJ3ZhbHVlX29mX2ZvbyciCisgICAgICAgICAgIAorICAgICAgICAgIGRlZiB0ZXN0X29uZV92YXIoc2VsZik6CisgICAgICAgICAgICAgdmFsID0gIHNlbGYuZC5leHBhbmQoIiR7Zm9vfSIpCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodmFsKSwgInZhbHVlX29mX2ZvbyIpCisgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5JbiB0aGlzIGV4YW1wbGUsIGEgPHVsaW5rIHVybD0iIj48ZmlsZW5hbWU+RGF0YUV4cGFuc2lvbnM8L2ZpbGVuYW1lPjwvdWxpbms+IGNsYXNzCisgICAgICAgICAgICAgICAgb2YgdGVzdHMgaXMgY3JlYXRlZCwgZGVyaXZlZCBmcm9tIHN0YW5kYXJkIHB5dGhvbiB1bml0dGVzdC4gVGhlIGNsYXNzIGhhcyBhIGNvbW1vbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2V0VXA8L2ZpbGVuYW1lPiBmdW5jdGlvbiB3aGljaCBpcyBzaGFyZWQgYnkgYWxsIHRoZSB0ZXN0cyBpbiB0aGUKKyAgICAgICAgICAgICAgICBjbGFzcy4gQSBzaW1wbGUgdGVzdCBpcyB0aGVuIGFkZGVkIHRvIHRlc3QgdGhhdCB3aGVuIGEgdmFyaWFibGUgaXMgZXhwYW5kZWQsIHRoZQorICAgICAgICAgICAgICAgIGNvcnJlY3QgdmFsdWUgaXMgZm91bmQuPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Qml0YmFrZSBzZWxmdGVzdHMgYXJlIHN0cmFpZ2h0Zm9yd2FyZCBweXRob24gdW5pdHRlc3QuIFJlZmVyIHRvIHRoZSBQeXRob24KKyAgICAgICAgICAgICAgICB1bml0dGVzdCBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHdyaXRpbmcgdGhlc2UgdGVzdHMgYXQ6IDxsaW5rCisgICAgICAgICAgICAgICAgICAgIGxpbmtlbmQ9IiI+aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWw8L2xpbms+LjwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdvZS1zZWxmdGVzdC1leGFtcGxlJz4KKyAgICAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPlRoZXNlIHRlc3RzIGFyZSBtb3JlIGNvbXBsZXggZHVlIHRvIHRoZSBzZXR1cCByZXF1aXJlZCBiZWhpbmQgdGhlIHNjZW5lcyBmb3IgZnVsbAorICAgICAgICAgICAgICAgIGJ1aWxkcy4gUmF0aGVyIHRoYW4gZGlyZWN0bHkgdXNpbmcgUHl0aG9uJ3MgdW5pdHRlc3QsIHRoZSBjb2RlIHdyYXBzIG1vc3Qgb2YgdGhlCisgICAgICAgICAgICAgICAgc3RhbmRhcmQgb2JqZWN0cy4gVGhlIHRlc3RzIGNhbiBiZSBzaW1wbGUsIHN1Y2ggYXMgdGVzdGluZyBhIGNvbW1hbmQgZnJvbSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgT0UgYnVpbGQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgIGV4YW1wbGU6PGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICBjbGFzcyBCaXRiYWtlTGF5ZXJzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93Y3Jvc3NkZXBlbmRzKHNlbGYpOgorICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1jcm9zcy1kZXBlbmRzJykgICAgICAgCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhc3BlbGwnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyBkZXBlbmRlbmNpZXMgCisgICAgIHdlcmUgc2hvd24uIGJpdGJha2UtbGF5ZXJzIHNob3ctY3Jvc3MtZGVwZW5kcyBvdXRwdXQ6CisgICAgICAgICAgICVzIiUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+VGhpcyBleGFtcGxlLCB0YWtlbiBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5PC9maWxlbmFtZT4sIGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgIHRlc3RjYXNlIGZyb20gdGhlIDx1bGluayB1cmw9IiI+PGZpbGVuYW1lPk9FU2VsZnRlc3RUZXN0Q2FzZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcywgZGVyaXZlZCBmcm9tIDxmaWxlbmFtZT51bml0dGVzdC5UZXN0Q2FzZTwvZmlsZW5hbWU+LCB3aGljaCBydW5zIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCBjaGVja3MgdGhlIG91dHB1dCB0byBlbnN1cmUgaXQKKyAgICAgICAgICAgICAgICBjb250YWlucyBzb21ldGhpbmcgd2Uga25vdyBzaG91bGQgYmUgaGVyZS48L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPm9lcWEudXRpbHMuY29tbWFuZHM8L2ZpbGVuYW1lPiBtb2R1bGUgY29udGFpbnMgSGVscGVycyB3aGljaCBjYW4KKyAgICAgICAgICAgICAgICBhc3Npc3Qgd2l0aCBjb21tb24gdGFza3MsIGluY2x1ZGluZzo8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+T2J0YWluaW5nIHRoZSB2YWx1ZSBvZiBhIGJpdGJha2UgdmFyaWFibGU6PC9lbXBoYXNpcz4gVXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZXFhLnV0aWxzLmNvbW1hbmRzLmdldF9iYl92YXIoKTwvZmlsZW5hbWU+IG9yIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2VxYS51dGlscy5jb21tYW5kcy5nZXRfYmJfdmFycygpPC9maWxlbmFtZT4gZm9yIG1vcmUgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZSB2YXJpYWJsZTwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+PGVtcGhhc2lzPlJ1bm5pbmcgYSBiaXRiYWtlIGludm9jYXRpb24gZm9yIGEgYnVpbGQ6PC9lbXBoYXNpcz4gVXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZXFhLnV0aWxzLmNvbW1hbmRzLmJpdGJha2UoKTwvZmlsZW5hbWU+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+UnVubmluZyBhIGNvbW1hbmQ6PC9lbXBoYXNpcz4gVXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZXFhLnV0aWxzLmNvbW1hbmRzcnVuQ21kKCk8L2ZpbGVuYW1lPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5UaGVyZSBpcyBhbHNvIGEgPGZpbGVuYW1lPm9lcWEudXRpbHMuY29tbWFuZHMucnVucWVtdSgpPC9maWxlbmFtZT4gZnVuY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgbGF1bmNoaW5nIHRoZSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgZm9yIHRlc3RpbmcgdGhpbmdzIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgcnVubmluZywgdmlydHVhbGl6ZWQgaW1hZ2UuPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBydW4gdGhlc2UgdGVzdHMgaW4gcGFyYWxsZWwuIFBhcmFsbGVsaXNtIHdvcmtzIHBlciB0ZXN0IGNsYXNzLCBzbyB0ZXN0cworICAgICAgICAgICAgICAgIHdpdGhpbiBhIGdpdmVuIHRlc3QgY2xhc3Mgc2hvdWxkIGFsd2F5cyBydW4gaW4gdGhlIHNhbWUgYnVpbGQsIHdoaWxlICB0ZXN0cyBpbgorICAgICAgICAgICAgICAgIGRpZmZlcmVudCBjbGFzc2VzIG9yIG1vZHVsZXMgbWF5IGJlIHNwbGl0IGludG8gZGlmZmVyZW50IGJ1aWxkcy4gVGhlcmUgaXMgbm8gZGF0YQorICAgICAgICAgICAgICAgIHN0b3JlIGF2YWlsYWJsZSBmb3IgdGhlc2UgdGVzdHMgc2luY2UgdGhlIHRlc3RzIGxhdW5jaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCBleGlzdCBvdXRzaWRlIG9mIGl0cyBjb250ZXh0LiBBcyBhCisgICAgICAgICAgICAgICAgcmVzdWx0LCBjb21tb24gYml0YmFrZSBsaWJyYXJ5IGZ1bmN0aW9ucyAoYmIuKikgYXJlIGFsc28gdW5hdmFpbGFibGUuPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Rlc3RpbWFnZS1leGFtcGxlJz4KKyAgICAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT5UaGVzZSB0ZXN0cyBhcmUgcnVuIG9uY2UgYW4gaW1hZ2UgaXMgdXAgYW5kIHJ1bm5pbmcsIGVpdGhlciBvbiB0YXJnZXQgaGFyZHdhcmUgb3IKKyAgICAgICAgICAgICAgICB1bmRlciBRRU1VLiBBcyBhIHJlc3VsdCwgdGhleSBhcmUgYXNzdW1lZCB0byBiZSBydW5uaW5nIGluIGEgdGFyZ2V0IGltYWdlCisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIGFzIG9wcG9zZWQgdG8gYSBob3N0IGJ1aWxkIGVudmlyb25tZW50LiBBIHNpbXBsZSBleGFtcGxlIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9weXRob24ucHk8L2ZpbGVuYW1lPiBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmc6PGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICBjbGFzcyBQeXRob25UZXN0KE9FUnVudGltZVRlc3RDYXNlKToKKyAgICAgICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICAgICAgIEBPRUhhc1BhY2thZ2UoWydweXRob24zLWNvcmUnXSkKKyAgICAgICAgIGRlZiB0ZXN0X3B5dGhvbjMoc2VsZik6CisgICAgICAgICAgICAgY21kID0gInB5dGhvbjMgLWMgXCJpbXBvcnQgY29kZWNzOyBwcmludChjb2RlY3MuZW5jb2RlKCdVcnl5YiwKKyAgICAgamJleXEnLCAncm90MTMnKSlcIiIKKyAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCisgICAgICAgICAgICAgbXNnID0gJ0V4aXQgc3RhdHVzIHdhcyBub3QgMC4gT3V0cHV0OiAlcycgJSBvdXRwdXQKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSwgdGhlIDx1bGluayB1cmw9IiI+PGZpbGVuYW1lPk9FUnVudGltZVRlc3RDYXNlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIHdyYXBzIDxmaWxlbmFtZT51bml0dGVzdC5UZXN0Q2FzZTwvZmlsZW5hbWU+LiBXaXRoaW4gdGhlIHRlc3QsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZWxmLnRhcmdldDwvZmlsZW5hbWU+IHJlcHJlc2VudHMgdGhlIHRhcmdldCBzeXN0ZW0sIHdoZXJlIGNvbW1hbmRzCisgICAgICAgICAgICAgICAgY2FuIGJlIHJ1biBvbiBpdCB1c2luZyB0aGUgPGZpbGVuYW1lPnJ1bigpPC9maWxlbmFtZT4gbWV0aG9kLiA8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5UbyBlbnN1cmUgY2VydGFpbiB0ZXN0IG9yIHBhY2thZ2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQsIHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T0VUZXN0RGVwZW5kczwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+T0VIYXNQYWNrYWdlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkZWNvcmF0b3JzLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QgaW4gdGhpcyBleGFtcGxlIHdvdWxkIG9ubHkgbWFrZSBzZW5zZSBpZgorICAgICAgICAgICAgICAgIHB5dGhvbjMtY29yZSBpcyBpbnN0YWxsZWQgaW4gdGhlIGltYWdlLjwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0c2RrX2V4dC1leGFtcGxlJz4KKyAgICAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+dGVzdHNka19leHQ8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPlRoZXNlIHRlc3RzIGFyZSBydW4gYWdhaW5zdCBidWlsdCBleHRlbnNpYmxlIFNES3MgKGVTREtzKS4gVGhlIHRlc3RzIGNhbiBhc3N1bWUKKyAgICAgICAgICAgICAgICB0aGF0IHRoZSBlU0RLIGVudmlyb25tZW50IGhhcyBhbHJlYWR5IGJlZW4gc2V0dXAuIEFuIGV4YW1wbGUgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvZGV2dG9vbC5weTwvZmlsZW5hbWU+IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZzo8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgIGNsYXNzIERldnRvb2xUZXN0KE9FU0RLRXh0VGVzdENhc2UpOgorICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgICAgbXlhcHBfc3JjID0gb3MucGF0aC5qb2luKGNscy50Yy5lc2RrX2ZpbGVzX2RpciwgIm15YXBwIikKKyAgICAgICAgICBjbHMubXlhcHBfZHN0ID0gb3MucGF0aC5qb2luKGNscy50Yy5zZGtfZGlyLCAibXlhcHAiKQorICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShteWFwcF9zcmMsIGNscy5teWFwcF9kc3QpCisgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCAnaW5pdCcsICcuJ10sIGN3ZD1jbHMubXlhcHBfZHN0KQorICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ2FkZCcsICcuJ10sIGN3ZD1jbHMubXlhcHBfZHN0KQorICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ2NvbW1pdCcsICctbScsICIndGVzdCBjb21taXQnIl0sIGN3ZD1jbHMubXlhcHBfZHN0KQorCisgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgICBzaHV0aWwucm10cmVlKGNscy5teWFwcF9kc3QpCisgICAgICAgICBkZWYgX3Rlc3RfZGV2dG9vbF9idWlsZChzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCBteWFwcCAlcycgJSBkaXJlY3RvcnkpCisgICAgICAgICB0cnk6CisgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYnVpbGQgbXlhcHAnKQorICAgICAgICAgZmluYWxseToKKyAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCBteWFwcCcpCisgICAgICAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX21ha2Uoc2VsZik6CisgICAgICAgICBzZWxmLl90ZXN0X2RldnRvb2xfYnVpbGQoc2VsZi5teWFwcF9kc3QpCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD5JbgorICAgICAgICAgICAgICAgIHRoaXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY29tbWFuZCBpcyB0ZXN0ZWQgdG8gc2VlIHdoZXRoZXIgYQorICAgICAgICAgICAgICAgIHNhbXBsZSBhcHBsaWNhdGlvbiBjYW4gYmUgYnVpbHQgd2l0aCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBlU0RLLjwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0c2RrLWV4YW1wbGUnPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT50ZXN0c2RrPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT5UaGVzZSB0ZXN0cyBhcmUgcnVuIGFnYWluc3QgYnVpbHQgU0RLcy4gVGhlIHRlc3RzIGNhbiBhc3N1bWUgdGhhdCBhbiBTREsgaGFzCisgICAgICAgICAgICAgICAgYWxyZWFkeSBiZWVuIGV4dHJhY3RlZCBhbmQgaXRzIGVudmlyb25tZW50IGZpbGUgaGFzIGJlZW4gc291cmNlZC4gQSBzaW1wbGUgZXhhbXBsZQorICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbjIucHk8L2ZpbGVuYW1lPiBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmc6PGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICBjbGFzcyBQeXRob24zVGVzdChPRVNES1Rlc3RDYXNlKToKKyAgICAgICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1weXRob24zLWNvcmUiKSBvcgorICAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicHl0aG9uMy1jb3JlLW5hdGl2ZSIpKToKKyAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk5vIHB5dGhvbjMgcGFja2FnZSBpbiB0aGUgU0RLIikKKworICAgICAgICAgZGVmIHRlc3RfcHl0aG9uMyhzZWxmKToKKyAgICAgICAgICAgICBjbWQgPSAicHl0aG9uMyAtYyBcImltcG9ydCBjb2RlY3M7IHByaW50KGNvZGVjcy5lbmNvZGUoJ1VyeXliLCBqYmV5cScsICdyb3QxMycpKVwiIgorICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bihjbWQpCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJIZWxsbywgd29ybGRcbiIpCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD5JbgorICAgICAgICAgICAgICAgIHRoaXMgZXhhbXBsZSwgaWYgbmF0aXZlc2RrLXB5dGhvbjMtY29yZSBoYXMgYmVlbiBpbnN0YWxsZWQgaW50byB0aGUgU0RLLCB0aGUgY29kZQorICAgICAgICAgICAgICAgIHJ1bnMgdGhlIHB5dGhvbjMgaW50ZXJwcmV0ZXIgd2l0aCBhIGJhc2ljIGNvbW1hbmQgdG8gY2hlY2sgaXQgaXMgd29ya2luZyBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgVGhlIHRlc3Qgd291bGQgb25seSBydW4gaWYgcHl0aG9uMyBpcyBpbnN0YWxsZWQgaW4gdGhlIFNESy48L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nb2UtYnVpbGQtcGVyZi10ZXN0LWV4YW1wbGUnPgorICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5vZS1idWlsZC1wZXJmLXRlc3Q8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPlRoZSBwZXJmb3JtYW5jZSB0ZXN0cyB1c3VhbGx5IG1lYXN1cmUgaG93IGxvbmcgb3BlcmF0aW9ucyB0YWtlIGFuZCB0aGUgcmVzb3VyY2UKKyAgICAgICAgICAgICAgICB1dGlsaXNhdGlvbiBhcyB0aGF0IGhhcHBlbnMuIEFuIGV4YW1wbGUgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weTwvZmlsZW5hbWU+IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZzo8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgIGNsYXNzIFRlc3QzKEJ1aWxkUGVyZlRlc3RDYXNlKToKKworICAgICAgIGRlZiB0ZXN0MyhzZWxmKToKKyAgICAgICAgICAgIiIiQml0YmFrZSBwYXJzaW5nIChiaXRiYWtlIC1wKSIiIgorICAgICAgICAgICAjIERyb3AgYWxsIGNhY2hlcyBhbmQgcGFyc2UKKyAgICAgICAgICAgc2VsZi5ybV9jYWNoZSgpCisgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAnY2FjaGUnKSwgVHJ1ZSkKKyAgICAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoWydiaXRiYWtlJywgJy1wJ10sICdwYXJzZV8xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAgKG5vIGNhY2hlcyknKQorICAgICAgICAgICAjIERyb3AgdG1wL2NhY2hlCisgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAnY2FjaGUnKSwgVHJ1ZSkKKyAgICAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoWydiaXRiYWtlJywgJy1wJ10sICdwYXJzZV8yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAgKG5vIHRtcC9jYWNoZSknKQorICAgICAgICAgICAjIFBhcnNlIHdpdGggZnVsbHkgY2FjaGVkIGRhdGEKKyAgICAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoWydiaXRiYWtlJywgJy1wJ10sICdwYXJzZV8zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAgKGNhY2hlZCknKQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+VGhpcworICAgICAgICAgICAgICAgIGV4YW1wbGUgc2hvd3MgaG93IHRocmVlIHNwZWNpZmljIHBhcnNpbmcgdGltaW5ncyBhcmUgbWVhc3VyZWQsIHdpdGggYW5kIHdpdGhvdXQKKyAgICAgICAgICAgICAgICB2YXJpb3VzIGNhY2hlcywgdG8gc2hvdyBob3cgQml0QmFrZSdzIHBhcnNpbmcgcGVyZm9ybWFuY2UgdHJlbmRzIG92ZXIgdGltZS48L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9J3Rlc3Qtd3JpdGluZy1jb25zaWRlcmF0aW9ucyc+CisgICAgICAgIDx0aXRsZT5Db25zaWRlcmF0aW9ucyBXaGVuIFdyaXRpbmcgVGVzdHM8L3RpdGxlPgorICAgICAgICA8cGFyYT5XaGVuIHdyaXRpbmcgZ29vZCB0ZXN0cywgdGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRvIGtlZXAgaW4gbWluZC4gU2luY2UgdGhpbmdzCisgICAgICAgICAgICBydW5uaW5nIG9uIHRoZSBBdXRvYnVpbGRlciBhcmUgYWNjZXNzZWQgY29uY3VycmVudGx5IGJ5IG11bHRpcGxlIHdvcmtlcnMsIGNvbnNpZGVyIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nOjwvcGFyYT4KKyAgICAgICAgPGZvcm1hbHBhcmE+CisgICAgICAgICAgICA8dGl0bGU+UnVubmluZyAiY2xlYW5hbGwiIGlzIG5vdCBwZXJtaXR0ZWQ8L3RpdGxlPgorICAgICAgICAgICAgPHBhcmE+VGhpcyBjYW4gZGVsZXRlIGZpbGVzIGZyb20gRExfRElSIHdoaWNoIHdvdWxkIHBvdGVudGlhbGx5IGJyZWFrIG90aGVyIGJ1aWxkcworICAgICAgICAgICAgICAgIHJ1bm5pbmcgaW4gcGFyYWxsZWwuIElmIHRoaXMgaXMgcmVxdWlyZWQsIERMX0RJUiBtdXN0IGJlIHNldCB0byBhbiBpc29sYXRlZAorICAgICAgICAgICAgICAgIGRpcmVjdG9yeS48L3BhcmE+CisgICAgICAgIDwvZm9ybWFscGFyYT4KKyAgICAgICAgPGZvcm1hbHBhcmE+CisgICAgICAgICAgICA8dGl0bGU+UnVubmluZyAiY2xlYW5zc3RhdGUiIGlzIG5vdCBwZXJtaXR0ZWQ8L3RpdGxlPgorICAgICAgICAgICAgPHBhcmE+VGhpcyBjYW4gZGVsZXRlIGZpbGVzIGZyb20gU1NUQVRFX0RJUiB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBicmVhayBvdGhlciBidWlsZHMKKyAgICAgICAgICAgICAgICBydW5uaW5nIGluIHBhcmFsbGVsLiBJZiB0aGlzIGlzIHJlcXVpcmVkLCBTU1RBVEVfRElSIG11c3QgYmUgc2V0IHRvIGFuIGlzb2xhdGVkCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgIi1mIiBvcHRpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRvICJ0YWludCIgdGFza3MgYnkgY2hhbmdpbmcgdGhlIHNzdGF0ZQorICAgICAgICAgICAgICAgIGNoZWNrc3VtcyB0byBlbnN1cmUgc3N0YXRlIGNhY2hlIGl0ZW1zIHdpbGwgbm90IGJlIHJldXNlZC48L3BhcmE+CisgICAgICAgIDwvZm9ybWFscGFyYT4KKyAgICAgICAgPGZvcm1hbHBhcmE+CisgICAgICAgICAgICA8dGl0bGU+VGVzdHMgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIG1ldGFkYXRhPC90aXRsZT4KKyAgICAgICAgICAgIDxwYXJhPlRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgZm9yIG9lLXNlbGZ0ZXN0cyBzaW5jZSB0aGVzZSBjYW4gcnVuIGluIHBhcmFsbGVsIGFuZAorICAgICAgICAgICAgICAgIGNoYW5naW5nIG1ldGFkYXRhIGxlYWRzIHRvIGNoYW5naW5nIGNoZWNrc3Vtcywgd2hpY2ggY29uZnVzZXMgQml0QmFrZSB3aGlsZSBydW5uaW5nCisgICAgICAgICAgICAgICAgaW4gcGFyYWxsZWwuIElmIHRoaXMgaXMgbmVjZXNzYXJ5LCBjb3B5IGxheWVycyB0byBhIHRlbXBvcmFyeSBsb2NhdGlvbiBhbmQgbW9kaWZ5CisgICAgICAgICAgICAgICAgdGhlbS4gU29tZSB0ZXN0cyBuZWVkIHRvIGNoYW5nZSBtZXRhZGF0YSwgc3VjaCBhcyB0aGUgZGV2dG9vbCB0ZXN0cy4gVG8gcHJldmVudCB0aGUKKyAgICAgICAgICAgICAgICBtZXRhZGF0ZSBmcm9tIGNoYW5nZXMsIHNldCB1cCB0ZW1wb3JhcnkgY29waWVzIG9mIHRoYXQgZGF0YSBmaXJzdC48L3BhcmE+CisgICAgICAgIDwvZm9ybWFscGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworCisKKworCisKKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtc3R5bGUuY3NzIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGVlNGM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLXN0eWxlLmNzcwpAQCAtMCwwICsxLDk5MSBAQAorLyoKKyAgIEdlbmVyaWMgWEhUTUwgLyBEb2NCb29rIFhIVE1MIENTUyBTdHlsZXNoZWV0LgorCisgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCisKKyAgIEJyb3dzZXIgd3JhbmdsaW5nIGFuZCB0eXBvZ3JhcGhpYyBkZXNpZ24gYnkKKyAgICAgIE95dmluZCBLb2xhcyAvIHBpcHBpbkBnaW1wLm9yZworCisgICBDdXN0b21pc2VkIGZvciBQb2t5IGJ5CisgICAgICBNYXR0aGV3IEFsbHVtIC8gbWFsbHVtQG8taGFuZC5jb20KKworICAgVGhhbmtzIHRvOgorICAgICBMaWFtIFIuIEUuIFF1aW4KKyAgICAgV2lsbGlhbSBTa2FnZ3MKKyAgICAgSmFrdWIgU3RlaW5lcgorCisgICBTdHJ1Y3R1cmUKKyAgIC0tLS0tLS0tLQorCisgICBUaGUgc3R5bGVzaGVldCBpcyBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBzZWN0aW9uczoKKworICAgICAgIFBvc2l0aW9uaW5nCisgICAgICAgICAgTWFyZ2lucywgcGFkZGluZ3MsIHdpZHRoLCBmb250LXNpemUsIGNsZWFyaW5nLgorICAgICAgIERlY29yYXRpb25zCisgICAgICAgICAgQm9yZGVycywgc3R5bGUKKyAgICAgICBDb2xvcnMKKyAgICAgICAgICBDb2xvcnMKKyAgICAgICBHcmFwaGljcworICAgICAgICAgIEdyYXBoaWNhbCBiYWNrZ3JvdW5kcworICAgICAgIE5hc3R5IElFIHR3ZWFrcworICAgICAgICAgIFdvcmthcm91bmRzIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsgaW4gaW50ZXJuZXQgZXhwbG9yZXIsCisgICAgICAgICAgY3VycmVudGx5IG1ha2VzIHRoZSBzdHlsZXNoZWV0IG5vbiB2YWxpZGF0aW5nLCBidXQgdXAgdW50aWwKKyAgICAgICAgICB0aGlzIHBvaW50IGl0IGlzIHZhbGlkYXRpbmcuCisgICAgICAgTW96aWxsYSBleHRlbnNpb25zCisgICAgICAgICAgVHJhbnNwYXJlbmN5IGZvciBmb290ZXIKKwkgIFJvdW5kZWQgY29ybmVycyBvbiBib3hlcworCisqLworCisKKyAgLyoqKioqKioqKioqKioqKiAvCisgLyAgUG9zaXRpb25pbmcgICAvCisvICoqKioqKioqKioqKioqKi8KKworYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTYW5zLCBzYW5zLXNlcmlmOworCisgIG1pbi13aWR0aDogNjQwcHg7CisgIHdpZHRoOiA4MCU7CisgIG1hcmdpbjogIDBlbSBhdXRvOworICBwYWRkaW5nOiAyZW0gNWVtIDVlbSA1ZW07CisgIGNvbG9yOiAjMzMzOworfQorCitoMSxoMixoMyxoNCxoNSxoNixoNyB7CisgIGZvbnQtZmFtaWx5OiBBcmlhbCwgU2FuczsKKyAgY29sb3I6ICMwMDU1N0Q7CisgIGNsZWFyOiBib3RoOworfQorCitoMSB7CisgIGZvbnQtc2l6ZTogMmVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMmVtIDBlbSAwZW0gMGVtOworfQorCitoMi5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMC4xMGVtIDBlbSAzLjBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjhlbTsKKyAgcGFkZGluZy1sZWZ0OiAyMCU7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworaDIgeworICBtYXJnaW46IDJlbSAwZW0gMC42NmVtIDBlbTsKKyAgcGFkZGluZzogMC41ZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMS41ZW07CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoMy5zdWJ0aXRsZSB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQyLjE0JTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK2gzIHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDE0MCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNCB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDUgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTEwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g2IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLmF1dGhvcmdyb3VwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIHBhZGRpbmctdG9wOiAyNTZweDsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3Rlc3QtbWFudWFsLXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKK30KKworLmdsb3NzYXJ5IGRkIHAsCisudmFyaWFibGVsaXN0IGRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYgcC5jb3B5cmlnaHQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7CisgIG1hcmdpbi1ib3R0b206IDBlbTsKK30KKworcCB7CisgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworCit9CisKK2RsIHsKKyAgcGFkZGluZy10b3A6IDBlbTsKK30KKworaHIgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworCisubWVkaWFvYmplY3QsCisubWVkaWFvYmplY3RjbyB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nIHsKKyAgYm9yZGVyOiBub25lOworfQorCit1bCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOworfQorCit1bCBsaSB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKwordWwgbGkgcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGggOjEwMCU7Cit9CisKK3RoIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworcCBhW2lkXSB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7CisgIGRpc3BsYXk6IGlubGluZTsKKyAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworYSB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBjb2xvcjogIzQ0NDsKK30KKworcHJlIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKK30KKworYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCit9CisKKy8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKKyAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCisgICB0aGUgbW91c2UuICovCisKK1thbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KK1thbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9CisKKworZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlIHsKKyAgbWFyZ2luOiAxZW0gMGVtOworICBwYWRkaW5nOiAxZW07CisgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworCitkaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCitkaXYuZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5leGFtcGxlIHAudGl0bGUgYiwKK2Rpdi50YWJsZSBwLnRpdGxlIGJ7CisgICAgcGFkZGluZy10b3A6IDBlbTsKKyAgICBtYXJnaW4tdG9wOiAwZW07CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiwKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKKyAgcGFkZGluZy1ib3R0b206IDAuNWVtOworfQorCisuZXBpZ3JhcGggeworICBwYWRkaW5nLWxlZnQ6IDU1JTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZXBpZ3JhcGggcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5lcGlncmFwaCAucXVvdGUgeworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisuZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKKyAgZm9udC1zdHlsZTogbm9ybWFsOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworc3Bhbi5hcHBsaWNhdGlvbiB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnByb2dyYW1saXN0aW5nIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgZm9udC1zaXplOiA4MCU7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIG1hcmdpbjogMS4zM2VtIDBlbTsKKyAgcGFkZGluZzogMS4zM2VtOworfQorCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgbWFyZ2luLXRvcDogMWVtOworICBtYXJnaW4tYm90dG9tOiAxZW07CisKK30KKworLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCisudGlwIHRhYmxlLAorLndhcm5pbmcgdGFibGUsCisuY2F1dGlvbiB0YWJsZSwKKy5ub3RlIHRhYmxlIHsKKyAgYm9yZGVyOiBub25lOworICB3aWR0aDogMTAwJTsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07CisgIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRpcCBwLAorLndhcm5pbmcgcCwKKy5jYXV0aW9uIHAsCisubm90ZSBwIHsKKyAgbWFyZ2luLXRvcDogMC41ZW07CisgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAxZW07CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5hY3JvbnltIHsKKyAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgcGFkZGluZzogMC4wOWVtIDAuM2VtOworICBtYXJnaW46IDBlbTsKK30KKworLml0ZW1pemVkbGlzdCBsaSB7CisgIGNsZWFyOiBub25lOworfQorCisuZmlsZW5hbWUgeworICBmb250LXNpemU6IG1lZGl1bTsKKyAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwZW07CisgIHRvcDogMGVtOworICB3aWR0aDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBwb3NpdGlvbjogZml4ZWQ7CisgIGxlZnQ6IDBlbTsKKyAgYm90dG9tOiAwZW07CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIHdpZHRoOiAxMDAlOworfQorCisKK2Rpdi5uYXZoZWFkZXIgdGQsCitkaXYubmF2Zm9vdGVyIHRkIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGggeworICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KKyAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KKyAgZm9udC1zaXplOiA4MCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLXRvcDogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItYm90dG9tOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgeworICBjb2xvcjogIzc3NzsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKKyAgY29sb3I6IGJsYWNrOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKKworLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgY29sb3I6ICMzM2E7Cit9CisKK2Rpdi5uYXZoZWFkZXIgaHIsCitkaXYubmF2Zm9vdGVyIGhyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCisucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisuYW5zd2VyIHRkIHsKKyAgcGFkZGluZy1ib3R0b206IDEuNWVtOworfQorCisuZW1waGFzaXMgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCisgIC8qKioqKioqKioqKioqIC8KKyAvIGRlY29yYXRpb25zICAvCisvICoqKioqKioqKioqKiovCisKKy50aXRsZXBhZ2UgeworfQorCisucGFydCAudGl0bGUgeworfQorCisuc3VidGl0bGUgeworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyoKK2gxIHsKKyAgYm9yZGVyOiBub25lOworfQorCitoMiB7CisgIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2gzIHsKKyAgYm9yZGVyLXRvcDogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g0IHsKKyAgYm9yZGVyOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDUgeworICBib3JkZXI6IDBlbTsKK30KKyovCisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworLnF1ZXN0aW9uIHRkIHsKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisuYW5zd2VyIHsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBib3JkZXItdG9wOiAxcHggc29saWQ7Cit9CisKKyAgLyoqKioqKioqKiAvCisgLyAgY29sb3JzICAvCisvICoqKioqKioqKi8KKworYm9keSB7CisgIGNvbG9yOiAjMzMzOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworYSB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCithOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKK30KKworCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoNywKK2g4IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2hyIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCisKKy50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgeworICBib3JkZXItY29sb3I6ICNmZmY7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cit9CisKKworLndhcm5pbmcgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy50aXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisubm90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGNvbG9yOiAjMDQ0OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKK3ByZS5wcm9ncmFtbGlzdGluZyB7CisgIGNvbG9yOiBibGFjazsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworICBib3JkZXItd2lkdGg6IDJweDsKK30KKworLmd1aW1lbnUsCisuZ3VpbGFiZWwsCisuZ3VpbWVudWl0ZW0geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIGJvcmRlci1jb2xvcjogIzk5OTsKK30KKworCitkaXYubmF2aGVhZGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCitkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworLndyaXRlcm5vdGVzIHsKKyAgY29sb3I6IHJlZDsKK30KKworCisgIC8qKioqKioqKioqKiAvCisgLyAgZ3JhcGhpY3MgIC8KKy8gKioqKioqKioqKiovCisKKy8qCitib2R5IHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvYm9keV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLm5hdmhlYWRlciwKKy5ub3RlLAorLnRpcCB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL25vdGVfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy53YXJuaW5nLAorLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy93YXJuaW5nX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisuZmlndXJlLAorLmluZm9ybWFsZmlndXJlLAorLmV4YW1wbGUsCisuaW5mb3JtYWxleGFtcGxlLAorLnRhYmxlLAorLmluZm9ybWFsdGFibGUgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9maWd1cmVfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKyovCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoN3sKK30KKworLyoKK0V4YW1wbGUgb2YgaG93IHRvIHN0aWNrIGFuIGltYWdlIGFzIHBhcnQgb2YgdGhlIHRpdGxlLgorCitkaXYuYXJ0aWNsZSAudGl0bGVwYWdlIC50aXRsZQoreworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvd2hpdGUtb24tYmxhY2sucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworfQorKi8KKworZGl2LnByZWZhY2UgLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuY29sb3Bob24gLnRpdGxlLAorZGl2LmNoYXB0ZXIgLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuYXJ0aWNsZSAudGl0bGVwYWdlIC50aXRsZQoreworfQorCitkaXYuc2VjdGlvbiBkaXYuc2VjdGlvbiAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5zZWN0MiAudGl0bGVwYWdlIC50aXRsZSB7CisgICAgYmFja2dyb3VuZDogbm9uZTsKK30KKworCitoMS50aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvdGVzdC10aXRsZS5wbmciKTsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtdGVzdC1wcm9jZXNzLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC10ZXN0LXByb2Nlc3MucnN0CmluZGV4IGIwODE3YjAuLjk2ZTcxYmYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC10ZXN0LXByb2Nlc3MucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC10ZXN0LXByb2Nlc3MucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogUHJvamVjdCBUZXN0aW5nIGFuZCBSZWxlYXNlIFByb2Nlc3MKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC10ZXN0LXByb2Nlc3MueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLXRlc3QtcHJvY2Vzcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUyMTU3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC10ZXN0LXByb2Nlc3MueG1sCkBAIC0wLDAgKzEsMTEwIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3Rlc3QtbWFudWFsLXRlc3QtcHJvY2Vzcyc+CisKKzx0aXRsZT5Qcm9qZWN0IFRlc3RpbmcgYW5kIFJlbGVhc2UgUHJvY2VzczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J3Rlc3QtZGFpbHktZGV2ZWwnPgorICAgICAgICA8dGl0bGU+RGF5IHRvIERheSBEZXZlbG9wbWVudDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+VGhpcyBzZWN0aW9uIGRldGFpbHMgaG93IHRoZSBwcm9qZWN0IHRlc3RzIGNoYW5nZXMsIHRocm91Z2ggYXV0b21hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIEF1dG9idWlsZGVyIG9yIHdpdGggdGhlIGFzc2lzdGFuY2Ugb2YgUUEgdGVhbXMsIHRocm91Z2ggdG8gbWFraW5nIHJlbGVhc2VzLjwvcGFyYT4KKworICAgICAgICA8cGFyYT5UaGUgcHJvamVjdCBhaW1zIHRvIHRlc3QgY2hhbmdlcyBhZ2FpbnN0IG91ciB0ZXN0IG1hdHJpeCBiZWZvcmUgdGhvc2UgY2hhbmdlcyBhcmUKKyAgICAgICAgICAgIG1lcmdlZCBpbnRvIHRoZSBtYXN0ZXIgYnJhbmNoLiBBcyBzdWNoLCBjaGFuZ2VzIGFyZSBxdWV1ZWQgdXAgaW4gYmF0Y2hlcyBlaXRoZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hc3Rlci1uZXh0PC9maWxlbmFtZT4gYnJhbmNoIGluIHRoZSBtYWluIHRyZWVzLCBvciBpbiB1c2VyIHRyZWVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cm9zcy9tdXQ8L2ZpbGVuYW1lPiBpbiA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4gKFJvc3MgQnVydG9uCisgICAgICAgICAgICBoZWxwcyByZXZpZXcgYW5kIHRlc3QgcGF0Y2hlcyBhbmQgdGhpcyBpcyBoaXMgdGVzdGluZyB0cmVlKS48L3BhcmE+CisgICAgICAgIDxwYXJhPldlIGhhdmUgdHdvIGJyb2FkIGNhdGVnb3JpZXMgb2YgdGVzdCBidWlsZHMsIGluY2x1ZGluZyAiZnVsbCIgYW5kICJxdWljayIuIE9uIHRoZQorICAgICAgICAgICAgQXV0b2J1aWxkZXIsIHRoZXNlIGNhbiBiZSBzZWVuIGFzICJhLXF1aWNrIiBhbmQgImEtZnVsbCIsIHNpbXBseSBmb3IgZWFzZSBvZiBzb3J0aW5nIGluCisgICAgICAgICAgICB0aGUgVUkuIFVzZSBvdXIgQXV0b2J1aWxkZXIgY29uc29sZSB2aWV3IHRvIHNlZSB3aGVyZSBtZSBtYW5hZ2UgbW9zdCB0ZXN0LXJlbGF0ZWQgaXRlbXMsCisgICAgICAgICAgICBhdmFpbGFibGUgYXQ6IDxsaW5rIGxpbmtlbmQ9IiIKKyAgICAgICAgICAgICAgICA+aHR0cHM6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnL3R5cGhvb24vIy9jb25zb2xlPC9saW5rPi48L3BhcmE+CisgICAgICAgIDxwYXJhPkJ1aWxkcyBhcmUgdHJpZ2dlcmVkIG1hbnVhbGx5IHdoZW4gdGhlIHRlc3QgYnJhbmNoZXMgYXJlIHJlYWR5LiBUaGUgYnVpbGRzIGFyZQorICAgICAgICAgICAgbW9uaXRvcmVkIGJ5IHRoZSBTV0FUIHRlYW0uIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBzZWUgPGxpbmsgbGlua2VuZD0iIgorICAgICAgICAgICAgICAgID5odHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1lvY3RvX0J1aWxkX0ZhaWx1cmVfU3dhdF9UZWFtPC9saW5rPi4gSWYKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWwsIHRoZSBjaGFuZ2VzIHdvdWxkIHVzdWFsbHkgYmUgbWVyZ2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFzdGVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGJyYW5jaC4gSWYgbm90IHN1Y2Nlc3NmdWwsIHNvbWVvbmUgd291bGQgcmVzcG9uZCB0byB0aGUgY2hhbmdlcyBvbiB0aGUgbWFpbGluZyBsaXN0CisgICAgICAgICAgICBleHBsYWluaW5nIHRoYXQgdGhlcmUgd2FzIGEgZmFpbHVyZSBpbiB0ZXN0aW5nLiBUaGUgY2hvaWNlIG9mIHF1aWNrIG9yIGZ1bGwgd291bGQgZGVwZW5kCisgICAgICAgICAgICBvbiB0aGUgdHlwZSBvZiBjaGFuZ2VzIGFuZCB0aGUgc3BlZWQgd2l0aCB3aGljaCB0aGUgcmVzdWx0IHdhcyByZXF1aXJlZC48L3BhcmE+CisgICAgICAgIDxwYXJhPlRoZSBBdXRvYnVpbGRlciBkb2VzIGJ1aWxkIHRoZSA8ZmlsZW5hbWU+bWFzdGVyPC9maWxlbmFtZT4gYnJhbmNoIG9uY2UgZGFpbHkgZm9yCisgICAgICAgICAgICBzZXZlcmFsIHJlYXNvbnMsIGluIHBhcnRpY3VsYXIsIHRvIGVuc3VyZSB0aGUgY3VycmVudCA8ZmlsZW5hbWU+bWFzdGVyPC9maWxlbmFtZT4gYnJhbmNoCisgICAgICAgICAgICBkb2VzIGJ1aWxkLCBidXQgYWxzbyB0byBrZWVwIDxmaWxlbmFtZT55b2N0by10ZXN0cmVzdWx0czwvZmlsZW5hbWU+ICg8bGluayBsaW5rZW5kPSIiCisgICAgICAgICAgICAgICAgPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaS95b2N0by10ZXN0cmVzdWx0cy88L2xpbms+KSwgYnVpbGRoaXN0b3J5CisgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9IiI+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQuY2dpL3Bva3ktYnVpbGRoaXN0b3J5LzwvbGluaz4pLAorICAgICAgICAgICAgYW5kIG91ciBzc3RhdGUgdXAgdG8gZGF0ZS4gT24gdGhlIHdlZWtlbmQsIHRoZXJlIGlzIGEgbWFzdGVyLW5leHQgYnVpbGQgaW5zdGVhZCB0bworICAgICAgICAgICAgZW5zdXJlIHRoZSB0ZXN0IHJlc3VsdHMgYXJlIHVwZGF0ZWQgZm9yIHRoZSBsZXNzIGZyZXF1ZW50bHkgcnVuIHRhcmdldHMuPC9wYXJhPgorICAgICAgICA8cGFyYT5QZXJmb3JtYW5jZSBidWlsZHMgKGJ1aWxkcGVyZi0qIHRhcmdldHMgaW4gdGhlIGNvbnNvbGUpIGFyZSB0cmlnZ2VyZWQgc2VwYXJhdGVseSBldmVyeQorICAgICAgICAgICAgc2l4IGhvdXJzIGFuZCBhdXRvbWF0aWNhbGx5IHB1c2ggdGhlaXIgcmVzdWx0cyB0byB0aGUgYnVpbGRzdGF0cyByZXBvc2l0b3J5IGF0OiA8bGluaworICAgICAgICAgICAgICAgIGxpbmtlbmQ9IiI+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQuY2dpL3lvY3RvLWJ1aWxkc3RhdHMvPC9saW5rPi4gPC9wYXJhPgorICAgICAgICA8cGFyYT5UaGUgJ3F1aWNrJyB0YXJnZXRzIGhhdmUgYmVlbiBzZWxlY3RlZCB0byBiZSB0aGUgb25lcyB3aGljaCBjYXRjaCB0aGUgbW9zdCBmYWlsdXJlcyBvcgorICAgICAgICAgICAgZ2l2ZSB0aGUgbW9zdCB2YWx1YWJsZSBkYXRhLiBXZSBydW4gJ2Zhc3QnIHB0ZXN0cyBpbiB0aGlzIGNhc2UgZm9yIGV4YW1wbGUgYnV0IG5vdCB0aGUKKyAgICAgICAgICAgIG9uZXMgd2hpY2ggdGFrZSBhIGxvbmcgdGltZS4gVGhlIHF1aWNrIHRhcmdldCBkb2Vzbid0IGluY2x1ZGUgKi1sc2IgYnVpbGRzIGZvciBhbGwKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMsIHNvbWUgd29ybGQgYnVpbGRzIGFuZCBkb2Vzbid0IHRyaWdnZXIgcGVyZm9ybWFuY2UgdGVzdHMgb3IgbHRwIHRlc3RpbmcuCisgICAgICAgICAgICBUaGUgZnVsbCBidWlsZCBpbmNsdWRlcyBhbGwgdGhlc2UgdGhpbmdzIGFuZCBpcyBzbG93ZXIgYnV0IG1vcmUgY29tcHJlaGVuc2l2ZS48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3Rlc3QteW9jdG8tcHJvamVjdC1hdXRvYnVpbGRlci1vdmVydmlldyc+CisgICAgICAgIDx0aXRsZT5SZWxlYXNlIEJ1aWxkczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+VGhlIHByb2plY3QgdHlwaWNhbGx5IGhhcyB0d28gbWFqb3IgcmVsZWFzZXMgYSB5ZWFyIHdpdGggYSBzaXggbW9udGggY2FkZW5jZSBpbiBBcHJpbAorICAgICAgICAgICAgYW5kIE9jdG9iZXIuIEJldHdlZW4gdGhlc2UgdGhlcmUgd291bGQgYmUgYSBudW1iZXIgb2YgbWlsZXN0b25lIHJlbGVhc2VzICh1c3VhbGx5IGZvdXIpCisgICAgICAgICAgICB3aXRoIHRoZSBmaW5hbCBvbmUgYmVpbmcgc3RhYmxpemF0aW9uIG9ubHkgYWxvbmcgd2l0aCBwb2ludCByZWxlYXNlcyBvZiBvdXIgc3RhYmxlCisgICAgICAgICAgICBicmFuY2hlcy48L3BhcmE+CisgICAgICAgIDxwYXJhPlRoZSBidWlsZCBhbmQgcmVsZWFzZSBwcm9jZXNzIGZvciB0aGVzZSBwcm9qZWN0IHJlbGVhc2VzIGlzIHNpbWlsYXIgdG8gdGhhdCBpbiA8bGluaworICAgICAgICAgICAgICAgIGxpbmtlbmQ9InRlc3QtZGFpbHktZGV2ZWwiPkRheSB0byBEYXkgRGV2ZWxvcG1lbnQ8L2xpbms+LCBpbiB0aGF0IHRoZSBhLWZ1bGwgdGFyZ2V0CisgICAgICAgICAgICBvZiB0aGUgQXV0b2J1aWxkZXIgaXMgdXNlZCBidXQgaW4gYWRkaXRpb24gdGhlIGZvcm0gaXMgY29uZmlndXJlZCB0byBnZW5lcmF0ZSBhbmQKKyAgICAgICAgICAgIHB1Ymxpc2ggYXJ0ZWZhY3RzIGFuZCB0aGUgbWlsZXN0b25lIG51bWJlciwgdmVyc2lvbiwgcmVsZWFzZSBjYW5kaWRhdGUgbnVtYmVyIGFuZCBvdGhlcgorICAgICAgICAgICAgaW5mb3JtYXRpb24gaXMgZW50ZXJlZC4gVGhlIGJveCB0byAiZ2VuZXJhdGUgYW4gZW1haWwgdG8gUUEiaXMgYWxzbyBjaGVja2VkLjwvcGFyYT4KKyAgICAgICAgPHBhcmE+V2hlbiB0aGUgYnVpbGQgY29tcGxldGVzLCBhbiBlbWFpbCBpcyBzZW50IG91dCB1c2luZyB0aGUgc2VuZC1xYS1lbWFpbCBzY3JpcHQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWF1dG9idWlsZGVyLWhlbHBlcjwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgdG8gdGhlIGxpc3Qgb2YgcGVvcGxlCisgICAgICAgICAgICBjb25maWd1cmVkIGZvciB0aGF0IHJlbGVhc2UuIFJlbGVhc2UgYnVpbGRzIGFyZSBwbGFjZWQgaW50byBhIGRpcmVjdG9yeSBpbiA8bGluaworICAgICAgICAgICAgICAgIGxpbmtlbmQ9IiI+aHR0cHM6Ly9hdXRvYnVpbGRlci55b2N0by5pby9wdWIvcmVsZWFzZXM8L2xpbms+IG9uIHRoZSBBdXRvYnVpbGRlciB3aGljaAorICAgICAgICAgICAgaXMgaW5jbHVkZWQgaW4gdGhlIGVtYWlsLiBUaGUgcHJvY2VzcyBmcm9tIGhlcmUgaXMgbW9yZSBtYW51YWwgYW5kIGNvbnRyb2wgaXMKKyAgICAgICAgICAgIGVmZmVjdGl2ZWx5IHBhc3NlZCB0byByZWxlYXNlIGVuZ2luZWVyaW5nLiBUaGUgbmV4dCBzdGVwcyBpbmNsdWRlOjxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5RQSB0ZWFtcyByZXNwb25kIHRvIHRoZSBlbWFpbCBzYXlpbmcgd2hpY2ggdGVzdHMgdGhleSBwbGFuIHRvIHJ1biBhbmQgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlc3VsdHMgd2lsbCBiZSBhdmFpbGFibGUuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5RQSB0ZWFtcyBydW4gdGhlaXIgdGVzdHMgYW5kIHNoYXJlIHRoZWlyIHJlc3VsdHMgaW4gdGhlIHlvY3RvLQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHJlc3VsdHMtY29udHJpYiByZXBvc2l0b3J5LCBhbG9uZyB3aXRoIGEgc3VtbWFyeSBvZiB0aGVpciBmaW5kaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5SZWxlYXNlIGVuZ2luZWVyaW5nIHByZXBhcmUgdGhlIHJlbGVhc2UgYXMgcGVyIHRoZWlyIHByb2Nlc3MuIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGVzdCByZXN1bHRzIGZyb20gdGhlIFFBIHRlYW1zIGFyZSBpbmNsdWRlZCBpbnRvIHRoZSByZWxlYXNlIGluIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBhbmQgYWxzbyB1cGxvYWRlZCB0byB0aGUgeW9jdG8tdGVzdHJlc3VsdHMgcmVwb3NpdG9yeSBhbG9uZ3NpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvdGhlciB0ZXN0IHJlc3VsdHMgZm9yIHRoZSBnaXZlbiByZXZpc2lvbi48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBRQSByZXBvcnQgaW4gdGhlIGZpbmFsIHJlbGVhc2UgaXMgcmVnZW5lcmF0ZWQgdXNpbmcgcmVzdWx0dG9vbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgbmV3IHRlc3QgcmVzdWx0cyBhbmQgdGhlIHRlc3Qgc3VtbWFyaWVzIGZyb20gdGhlIHRlYW1zIChhcworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyB0byB0aGUgZ2VuZXJhdGVkIHJlcG9ydCkuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcmVsZWFzZSBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHJlbGVhc2UgY2hlY2tsaXN0IGFuZCByZWxlYXNlIHJlYWRpbmVzcworICAgICAgICAgICAgICAgICAgICAgICAgY3JpdGVyaWEuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5BIGZpbmFsIGRlY2lzaW9uIG9uIHdoZXRoZXIgdG8gcmVsZWFzZSBpcyBtYWRlIGJ5IHRoZSBZUCBUU0Mgd2hvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIG92ZXJzaWdodCBvbiByZWxlYXNlIHJlYWRpbmVzcy48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworCisKKworCisKKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtdW5kZXJzdGFuZC1hdXRvYnVpbGRlci5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtdW5kZXJzdGFuZC1hdXRvYnVpbGRlci5yc3QKaW5kZXggZGUyNjc3Ny4uMmZjYWU1MCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLXVuZGVyc3RhbmQtYXV0b2J1aWxkZXIucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC11bmRlcnN0YW5kLWF1dG9idWlsZGVyLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogVW5kZXJzdGFuZGluZyB0aGUgWW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLXVuZGVyc3RhbmQtYXV0b2J1aWxkZXIueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLXVuZGVyc3RhbmQtYXV0b2J1aWxkZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MDAzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwtdW5kZXJzdGFuZC1hdXRvYnVpbGRlci54bWwKQEAgLTAsMCArMSwzMTQgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ndGVzdC1tYW51YWwtdW5kZXJzdGFuZC1hdXRvYnVpbGRlcic+CisKKzx0aXRsZT5VbmRlcnN0YW5kaW5nIHRoZSBZb2N0byBQcm9qZWN0IEF1dG9idWlsZGVyPC90aXRsZT4KKyAgICA8c2VjdGlvbj4KKyAgICAgICAgPHRpdGxlPkV4ZWN1dGlvbiBGbG93IHdpdGhpbiB0aGUgQXV0b2J1aWxkZXI8L3RpdGxlPgorICAgICAgICA8cGFyYT5UaGUgImEtZnVsbCIgYW5kICJhLXF1aWNrIiB0YXJnZXRzIGFyZSB0aGUgdXN1YWwgZW50cnkgcG9pbnRzIGludG8gdGhlIEF1dG9idWlsZGVyIGFuZAorICAgICAgICAgICAgaXQgbWFrZXMgc2Vuc2UgdG8gZm9sbG93IHRoZSBwcm9jZXNzIHRocm91Z2ggdGhlIHN5c3RlbSBzdGFydGluZyB0aGVyZS4gVGhpcyBpcyBiZXN0CisgICAgICAgICAgICB2aXN1YWxpc2VkIGZyb20gdGhlIEF1dG9idWlsZGVyIENvbnNvbGUgdmlldyAoPGxpbmsgbGlua2VuZD0iIgorICAgICAgICAgICAgICAgID5odHRwczovL2F1dG9idWlsZGVyLnlvY3RvcHJvamVjdC5vcmcvdHlwaG9vbi8jL2NvbnNvbGU8L2xpbms+KS4gPC9wYXJhPgorICAgICAgICA8cGFyYT5FYWNoIGl0ZW0gYWxvbmcgdGhlIHRvcCBvZiB0aGF0IHZpZXcgcmVwcmVzZW50cyBzb21lICJ0YXJnZXQgYnVpbGQiIGFuZCB0aGVzZSB0YXJnZXRzCisgICAgICAgICAgICBhcmUgYWxsIHJ1biBpbiBwYXJhbGxlbC4gVGhlICdmdWxsJyBidWlsZCB3aWxsIHRyaWdnZXIgdGhlIG1ham9yaXR5IG9mIHRoZW0sIHRoZSAicXVpY2siCisgICAgICAgICAgICBidWlsZCB3aWxsIHRyaWdnZXIgc29tZSBzdWJzZXQgb2YgdGhlbS4gVGhlIEF1dG9idWlsZGVyIGVmZmVjdGl2ZWx5IHJ1bnMgd2hpY2hldmVyCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGlzIGRlZmluZWQgZm9yIGVhY2ggb2YgdGhvc2UgdGFyZ2V0cyBvbiBhIHNlcGVyYXRlIGJ1aWxkYm90IHdvcmtlci4gVG8KKyAgICAgICAgICAgIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24sIHlvdSBuZWVkIHRvIGxvb2sgYXQgdGhlIGVudHJ5IG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmZpZy5qc29uPC9maWxlbmFtZT4gZmlsZSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWF1dG9idWlsZGVyLWhlbHBlcjwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuIFRoZSB0YXJnZXRzIGFyZSBkZWZpbmVkIGluCisgICAgICAgICAgICB0aGUg4oCYb3ZlcnJpZGVzJyBzZWN0aW9uLCBhIHF1aWNrIGV4YW1wbGUgY291bGQgYmUgcWVtdXg4Ni02NCB3aGljaCBsb29rcworICAgICAgICAgICAgbGlrZTo8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICJxZW11eDg2LTY0IiA6IHsKKyAgICAgICAgICJNQUNISU5FIiA6ICJxZW11eDg2LTY0IiwKKyAgICAgICAgICJURU1QTEFURSIgOiAiYXJjaC1xZW11IiwKKyAgICAgICAgICJzdGVwMSIgOiB7CisgICAgICAgICAgICAgImV4dHJhdmFycyIgOiBbCisgICAgICAgICAgICAgICAgICAiSU1BR0VfRlNUWVBFU19hcHBlbmQgPSAnIHdpYyB3aWMuYm1hcCciCisgICAgICAgICAgICAgXQorICAgICAgICAgfQorICAgICB9LAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+QW5kCisgICAgICAgICAgICB0byBleHBhbmQgdGhhdCwgeW91IG5lZWQgdGhlICJhcmNoLXFlbXUiIGVudHJ5IGZyb20gdGhlICJ0ZW1wbGF0ZXMiIHNlY3Rpb24sIHdoaWNoIGxvb2tzCisgICAgICAgICAgICBsaWtlOjxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgImFyY2gtcWVtdSIgOiB7CisgICAgICAgICAiQlVJTERJTkZPIiA6IHRydWUsCisgICAgICAgICAiQlVJTERISVNUT1JZIiA6IHRydWUsCisgICAgICAgICAic3RlcDEiIDogeworICAgICAgICAgICAgICJCQlRBUkdFVFMiIDogImNvcmUtaW1hZ2Utc2F0byBjb3JlLWltYWdlLXNhdG8tZGV2IGNvcmUtaW1hZ2Utc2F0by1zZGsgY29yZS1pbWFnZS1taW5pbWFsIGNvcmUtaW1hZ2UtbWluaW1hbC1kZXYgY29yZS1pbWFnZS1zYXRvOmRvX3BvcHVsYXRlX3NkayIsCisgICAgICAgICAgICAgIlNBTklUWVRBUkdFVFMiIDogImNvcmUtaW1hZ2UtbWluaW1hbDpkb190ZXN0aW1hZ2UgY29yZS1pbWFnZS1zYXRvOmRvX3Rlc3RpbWFnZSBjb3JlLWltYWdlLXNhdG8tc2RrOmRvX3Rlc3RpbWFnZSBjb3JlLWltYWdlLXNhdG86ZG9fdGVzdHNkayIKKyAgICAgICAgIH0sCisgICAgICAgICAic3RlcDIiIDogeworICAgICAgICAgICAgICJTREtNQUNISU5FIiA6ICJ4ODZfNjQiLAorICAgICAgICAgICAgICJCQlRBUkdFVFMiIDogImNvcmUtaW1hZ2Utc2F0bzpkb19wb3B1bGF0ZV9zZGsgY29yZS1pbWFnZS1taW5pbWFsOmRvX3BvcHVsYXRlX3Nka19leHQgY29yZS1pbWFnZS1zYXRvOmRvX3BvcHVsYXRlX3Nka19leHQiLAorICAgICAgICAgICAgICJTQU5JVFlUQVJHRVRTIiA6ICJjb3JlLWltYWdlLXNhdG86ZG9fdGVzdHNkayBjb3JlLWltYWdlLW1pbmltYWw6ZG9fdGVzdHNka2V4dCBjb3JlLWltYWdlLXNhdG86ZG9fdGVzdHNka2V4dCIKKyAgICAgICAgIH0sCisgICAgICAgICAic3RlcDMiIDogeworICAgICAgICAgICAgICJCVUlMREhJU1RPUlkiIDogZmFsc2UsCisgICAgICAgICAgICAgIkVYVFJBQ01EUyIgOiBbIiR7U0NSSVBUU0RJUn0vY2hlY2t2bmM7IERJU1BMQVk9OjEgb2Utc2VsZnRlc3QgJHtIRUxQRVJTVE1BQ0hUQVJHU30gLWogMTUiXSwKKyAgICAgICAgICAgICAiQURETEFZRVIiIDogWyIke0JVSUxERElSfS8uLi9tZXRhLXNlbGZ0ZXN0Il0KKyAgICAgICAgIH0KKyAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PkNvbWJpbmluZworICAgICAgICAgICAgdGhlc2UgdHdvIGVudHJpZXMgeW91IGNhbiBzZWUgdGhhdCAicWVtdXg4Ni02NCIgaXMgYSB0aHJlZSBzdGVwIGJ1aWxkIHdoZXJlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIEJCVEFSR0VUUzwvZmlsZW5hbWU+IHdvdWxkIGJlIHJ1biwgdGhlbiA8ZmlsZW5hbWU+Yml0YmFrZQorICAgICAgICAgICAgICAgIFNBTklUWVRBUkdFVFM8L2ZpbGVuYW1lPiBmb3IgZWFjaCBzdGVwOyBhbGwgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU9InFlbXg4Ni02NCI8L2ZpbGVuYW1lPiBidXQgd2l0aCBkaWZmZXJpbmcgU0RLTUFDSElORSBzZXR0aW5ncy4gSW4KKyAgICAgICAgICAgIHN0ZXAgMSBhbiBleHRyYSB2YXJpYWJsZSBpcyBhZGRlZCB0byB0aGUgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGZpbGUgdG8gZW5hYmxlCisgICAgICAgICAgICB3aWMgaW1hZ2UgZ2VuZXJhdGlvbi48L3BhcmE+CisgICAgICAgIDxwYXJhPldoaWxlIG5vdCBldmVyeSBkZXRhaWwgb2YgdGhpcyBpcyBjb3ZlcmVkIGhlcmUsIHlvdSBjYW4gc2VlIGhvdyB0aGUgdGVtcGxhdGluZworICAgICAgICAgICAgbWVjaGFuaXNtIGFsbG93cyBxdWl0ZSBjb21wbGV4IGNvbmZpZ3VyYXRpb25zIHRvIGJlIGJ1aWx0IHVwIHlldCBhbGxvd3MgZHVwbGljYXRpb24gYW5kCisgICAgICAgICAgICByZXBldGl0aW9uIHRvIGJlIGtlcHQgdG8gYSBtaW5pbXVtLjwvcGFyYT4KKyAgICAgICAgPHBhcmE+VGhlIGRpZmZlcmVudCBidWlsZCB0YXJnZXRzIGFyZSBkZXNpZ25lZCB0byBhbGxvdyBmb3IgcGFyYWxsZWxpc2F0aW9uLCBzbyBkaWZmZXJlbnQKKyAgICAgICAgICAgIG1hY2hpbmVzIGFyZSB1c3VhbGx5IGJ1aWx0IGluIHBhcmFsbGVsLCBvcGVyYXRpb25zIHVzaW5nIHRoZSBzYW1lIG1hY2hpbmUgYW5kIG1ldGFkYXRhCisgICAgICAgICAgICBhcmUgYnVpbHQgc2VxdWVudGlhbGx5LCB3aXRoIHRoZSBhaW0gb2YgdHJ5aW5nIHRvIG9wdGltaXNlIGJ1aWxkIGVmZmljaWVuY3kgYXMgbXVjaCBhcworICAgICAgICAgICAgcG9zc2libGUuPC9wYXJhPgorICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmNvbmZpZy5qc29uPC9maWxlbmFtZT4gZmlsZSBpcyBwcm9jZXNzZWQgYnkgdGhlIHNjcmlwdHMgaW4gdGhlIEhlbHBlcgorICAgICAgICAgICAgcmVwb3NpdG9yeSBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuIFRoZSBmb2xsb3dpbmcgIHNlY3Rpb24gZGV0YWlscworICAgICAgICAgICAgaG93IHRoaXMgd29ya3MuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0ZXN0LWF1dG9idWlsZGVyLXRhcmdldC1leGVjLW92ZXJ2aWV3Jz4KKyAgICAgICAgPHRpdGxlPkF1dG9idWlsZGVyIFRhcmdldCBFeGVjdXRpb24gT3ZlcnZpZXc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPkZvciBlYWNoIGdpdmVuIHRhcmdldCBpbiBhIGJ1aWxkLCB0aGUgQXV0b2J1aWxkZXIgZXhlY3V0ZXMgc2V2ZXJhbCBzdGVwcy4gVGhlc2UgYXJlCisgICAgICAgICAgICBjb25maWd1cmVkIGluIDxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlcjIvYnVpbGRlcnMucHk8L2ZpbGVuYW1lPiBhbmQgcm91Z2hseSBjb25zaXN0CisgICAgICAgICAgICBvZjogPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbSBpZD0ndGVzdC1saXN0LXRndC1leGVjLWNsb2JiZXJkaXInPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+UnVuIDxmaWxlbmFtZT5jbG9iYmVyZGlyPC9maWxlbmFtZT48L2VtcGhhc2lzPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBjbGVhbnMgb3V0IGFueSBwcmV2aW91cyBidWlsZC4gT2xkIGJ1aWxkcyBhcmUgbGVmdCBhcm91bmQgdG8gYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhc2llciBkZWJ1Z2dpbmcgb2YgZmFpbGVkIGJ1aWxkcy4gRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNlZSA8bGluaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtlbmQ9InRlc3QtY2xvYmJlcmRpciI+PGZpbGVuYW1lPmNsb2JiZXJkaXI8L2ZpbGVuYW1lPjwvbGluaz4uPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+T2J0YWluIHlvY3RvLWF1dG9idWlsZGVyLWhlbHBlcjwvZW1waGFzaXM+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIHN0ZXAgY2xvbmVzIHRoZSA8ZmlsZW5hbWU+eW9jdG8tYXV0b2J1aWxkZXItaGVscGVyPC9maWxlbmFtZT4gZ2l0CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSByZXF1aXJlbWVudCB0byBtYWludGFpbiBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlIG9yIHByb2plY3Qtc3BlY2lmaWMgY29kZSB3aXRoaW4gQnVpbGRib3QuIFRoZSBicmFuY2ggY2hvc2VuIG1hdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWxlYXNlIGJlaW5nIGJ1aWx0IHNvIHdlIGNhbiBzdXBwb3J0IG9sZGVyIHJlbGVhc2VzIGFuZCBzdGlsbCBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGluIG5ld2VyIG9uZXMuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+V3JpdGUgbGF5ZXJpbmZvLmpzb248L2VtcGhhc2lzPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyB0cmFuc2ZlcnMgZGF0YSBpbiB0aGUgQnVpbGRib3QgVUkgd2hlbiB0aGUgYnVpbGQgd2FzIGNvbmZpZ3VyZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBIZWxwZXIuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+Q2FsbCBzY3JpcHRzL3NoYXJlZC1yZXBvLXVucGFjazwvZW1waGFzaXM+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGlzIGEgY2FsbCBpbnRvIHRoZSBIZWxwZXIgc2NyaXB0cyB0byBzZXQgdXAgYSBjaGVja291dCBvZiBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwaWVjZXMgdGhpcyBidWlsZCBtaWdodCBuZWVkLiBJdCBtaWdodCBjbG9uZSB0aGUgQml0QmFrZSByZXBvc2l0b3J5IGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIHJlcG9zaXRvcnkuIEl0IG1heSBjbG9uZSB0aGUgUG9reSByZXBvc2l0b3J5LCBhcyB3ZWxsIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGxheWVycy4gSXQgd2lsbCB1c2UgdGhlIGRhdGEgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXJpbmZvLmpzb248L2ZpbGVuYW1lPiBmaWxlIHRvIGhlbHAgdW5kZXJzdGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uIEl0IHdpbGwgYWxzbyB1c2UgYSBsb2NhbCBjYWNoZSBvZiByZXBvc2l0b3JpZXMgdG8gc3BlZWQgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjbG9uZSBjaGVja291dHMuIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBzZWUgPGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZW5kPSJ0ZXN0LWF1dG9idWlsZGVyLWNsb25lLWNhY2hlIj5BdXRvYnVpbGRlciBDbG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgQ2FjaGU8L2xpbms+LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBzdGVwIGhhcyB0d28gcG9zc2libGUgbW9kZXMgb2Ygb3BlcmF0aW9uLiBJZiB0aGUgYnVpbGQgaXMgcGFydCBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgYnVpbGQsIGl0cyBwb3NzaWJsZSB0aGF0IGFsbCB0aGUgcmVwb3NpdG9yaWVzIG5lZWRlZCBtYXkgYWxyZWFkeSBiZQorICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLCByZWFkeSBpbiBhIHByZS1wcmVwYXJlZCBkaXJlY3RvcnkuIEFuICJhLXF1aWNrIiBvciAiYS1mdWxsIiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgd291bGQgcHJlcGFyZSB0aGlzIGJlZm9yZSBzdGFydGluZyB0aGUgb3RoZXIgc3ViLXRhcmdldCBidWlsZHMuIFRoaXMgaXMgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHR3byByZWFzb25zOjxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT50aGUgdXBzdHJlYW0gbWF5IGNoYW5nZSBkdXJpbmcgYSBidWlsZCwgZm9yIGV4YW1wbGUsIGZyb20gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VkIHB1c2ggYW5kIHRoaXMgZW5zdXJlcyB3ZSBoYXZlIG1hdGNoaW5nIGNvbnRlbnQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvbGUgYnVpbGQ8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPmlmIDE1IFdvcmtlcnMgYWxsIHRyaWVkIHRvIHB1bGwgdGhlIHNhbWUgZGF0YSBmcm9tIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcywgd2UgY2FuIGhpdCByZXNvdXJjZSBsaW1pdHMgb24gdXBzdHJlYW0gc2VydmVycyBhcyB0aGV5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gdGhpbmsgdGhleSBhcmUgdW5kZXIgc29tZSBraW5kIG9mIG5ldHdvcmsgYXR0YWNrPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD5UaGlzIHByZS1wcmVwYXJlZCBkaXJlY3RvcnkgaXMgc2hhcmVkIGFtb25nIHRoZSBXb3JrZXJzIG92ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIE5GUy4gSWYgdGhlIGJ1aWxkIGlzIGFuIGluZGl2aWR1YWwgYnVpbGQgYW5kIHRoZXJlIGlzIG5vICJzaGFyZWQiIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLCBpdCB3b3VsZCBjbG9uZSBmcm9tIHRoZSBjYWNoZSBhbmQgdGhlIHVwc3RyZWFtcyBhcyBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGNvbnNpZGVyZWQgdGhlIGZhbGxiYWNrIG1vZGUuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT48ZW1waGFzaXM+Q2FsbCBzY3JpcHRzL3J1bi1jb25maWc8L2VtcGhhc2lzPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBpcyBhbm90aGVyIGNhbGwgaW50byB0aGUgSGVscGVyIHNjcmlwdHMgd2hlcmUgaXRzIGV4cGVjdGVkIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBtYWluIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyB0YXJnZXQgd2lsbCBiZSBleGVjdXRlZC48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+PC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0ndGVzdC1hdXRvYnVpbGRlci10ZWNoJz4KKyAgICAgICAgPHRpdGxlPkF1dG9idWlsZGVyIFRlY2hub2xvZ3k8L3RpdGxlPgorICAgICAgICA8cGFyYT5UaGUgQXV0b2J1aWxkZXIgaGFzIFlvY3RvIFByb2plY3Qtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB0byBhbGxvdyBidWlsZHMgdG8gb3BlcmF0ZQorICAgICAgICAgICAgd2l0aCBpbmNyZWFzZWQgZWZmaWNpZW5jeSBhbmQgc3BlZWQuPC9wYXJhPgorICAgICAgICA8c2VjdGlvbiBpZD0ndGVzdC1jbG9iYmVyZGlyJz4KKyAgICAgICAgICAgIDx0aXRsZT5jbG9iYmVyZGlyPC90aXRsZT4KKyAgICAgICAgICAgIDxwYXJhPldoZW4gZGVsZXRpbmcgZmlsZXMsIHRoZSBBdXRvYnVpbGRlciB1c2VzIDxmaWxlbmFtZT5jbG9iYmVyZGlyPC9maWxlbmFtZT4sIHdoaWNoCisgICAgICAgICAgICAgICAgaXMgYSBzcGVjaWFsIHNjcmlwdCB0aGF0IG1vdmVzIGZpbGVzIHRvIGEgc3BlY2lhbCBsb2NhdGlvbiwgcmF0aGVyIHRoYW4gZGVsZXRpbmcKKyAgICAgICAgICAgICAgICB0aGVtLiBGaWxlcyBpbiB0aGlzIGxvY2F0aW9uIGFyZSBkZWxldGVkIGJ5IGFuIDxmaWxlbmFtZT5ybTwvZmlsZW5hbWU+IGNvbW1hbmQsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgcnVuIHVuZGVyIDxmaWxlbmFtZT5pb25pY2UgLWMgMzwvZmlsZW5hbWU+LiBGb3IgZXhhbXBsZSwgdGhlIGRlbGV0aW9uIG9ubHkKKyAgICAgICAgICAgICAgICBoYXBwZW5zIHdoZW4gdGhlcmUgaXMgaWRsZSBJTyBjYXBhY2l0eSBvbiB0aGUgV29ya2VyLiBUaGUgQXV0b2J1aWxkZXIgV29ya2VyIEphbml0b3IKKyAgICAgICAgICAgICAgICBydW5zIHRoaXMgZGVsZXRpb24uIFNlZSA8bGluayBsaW5rZW5kPSJ0ZXN0LWF1dG9idWlsZGVyLXdvcmtlci1qYW5pdG9yIj5BdXRvYnVpbGRlcgorICAgICAgICAgICAgICAgICAgICBXb3JrZXIgSmFuaXRvcjwvbGluaz4uPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0LWF1dG9idWlsZGVyLWNsb25lLWNhY2hlJz4KKyAgICAgICAgICAgIDx0aXRsZT5BdXRvYnVpbGRlciBDbG9uZSBDYWNoZTwvdGl0bGU+CisgICAgICAgICAgICA8cGFyYT5DbG9uaW5nIHJlcG9zaXRvcmllcyBmcm9tIHNjcmF0Y2ggZWFjaCB0aW1lIHRoZXkgYXJlIHJlcXVpcmVkIHdhcyBzbG93IG9uIHRoZQorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVyLiBXZSB0aGVyZWZvcmUgaGF2ZSBhIHN0YXNoIG9mIGNvbW1vbmx5IHVzZWQgcmVwb3NpdG9yaWVzIHByZS1jbG9uZWQgb24KKyAgICAgICAgICAgICAgICB0aGUgV29ya2Vycy4gRGF0YSBpcyBmZXRjaGVkIGZyb20gdGhlc2UgZHVyaW5nIGNsb25lcyBmaXJzdCwgdGhlbiAidG9wcGVkIHVwIiB3aXRoCisgICAgICAgICAgICAgICAgbGF0ZXIgcmV2aXNpb25zIGZyb20gYW55IHVwc3RyZWFtIHdoZW4gbmVjZXNhcnkuIFRoZSBjYWNoZSBpcyBtYWludGFpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVyIFdvcmtlciBKYW5pdG9yLiBTZWUgPGxpbmsgbGlua2VuZD0idGVzdC1hdXRvYnVpbGRlci13b3JrZXItamFuaXRvciIKKyAgICAgICAgICAgICAgICAgICAgPkF1dG9idWlsZGVyIFdvcmtlciBKYW5pdG9yPC9saW5rPi48L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Rlc3QtYXV0b2J1aWxkZXItd29ya2VyLWphbml0b3InPgorICAgICAgICAgICAgPHRpdGxlPkF1dG9idWlsZGVyIFdvcmtlciBKYW5pdG9yPC90aXRsZT4KKyAgICAgICAgICAgIDxwYXJhPlRoaXMgaXMgYSBwcm9jZXNzIHJ1bm5pbmcgb24gZWFjaCBXb3JrZXIgdGhhdCBwZXJmb3JtcyB0d28gYmFzaWMgb3BlcmF0aW9ucywKKyAgICAgICAgICAgICAgICBpbmNsdWRpbmcgYmFja2dyb3VuZCBmaWxlIGRlbGV0aW9uIGF0IElPIGlkbGUgKHNlZSA8bGluaworICAgICAgICAgICAgICAgICAgICBsaW5rZW5kPSJ0ZXN0LWxpc3QtdGd0LWV4ZWMtY2xvYmJlcmRpciI+VGFyZ2V0IEV4ZWN1dGlvbjogY2xvYmJlcmRpcjwvbGluaz4pIGFuZAorICAgICAgICAgICAgICAgIG1haW50YWluZW5hbmNlIG9mIGEgY2FjaGUgb2YgY2xvbmVkIHJlcG9zaXRvcmllcyB0byBpbXByb3ZlIHRoZSBzcGVlZCB0aGUgc3lzdGVtIGNhbgorICAgICAgICAgICAgICAgIGNoZWNrb3V0IHJlcG9zaXRvcmllcy48L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Rlc3Qtc2hhcmVkLWRsLWRpcic+CisgICAgICAgICAgICA8dGl0bGU+U2hhcmVkIERMX0RJUjwvdGl0bGU+CisgICAgICAgICAgICA8cGFyYT5UaGUgV29ya2VycyBhcmUgYWxsIGNvbm5lY3RlZCBvdmVyIE5GUyB3aGljaCBhbGxvd3MgRExfRElSIHRvIGJlIHNoYXJlZCBiZXR3ZWVuCisgICAgICAgICAgICAgICAgdGhlbS4gVGhpcyByZWR1Y2VzIG5ldHdvcmsgYWNjZXNzZXMgZnJvbSB0aGUgc3lzdGVtIGFuZCBhbGxvd3MgdGhlIGJ1aWxkIHRvIGJlIHNwZWQKKyAgICAgICAgICAgICAgICB1cC4gVXNhZ2Ugb2YgdGhlIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbSBpcyBkZXNpZ25lZCB0byBiZSBhYmxlIHRvIGJlCisgICAgICAgICAgICAgICAgc2hhcmVkIG92ZXIgTkZTLjwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8c2VjdGlvbiBpZD0ndGVzdC1zaGFyZWQtc3N0YXRlLWNhY2hlJz4KKyAgICAgICAgICAgIDx0aXRsZT5TaGFyZWQgU1NUQVRFX0RJUjwvdGl0bGU+CisgICAgICAgICAgICA8cGFyYT5UaGUgV29ya2VycyBhcmUgYWxsIGNvbm5lY3RlZCBvdmVyIE5GUyB3aGljaCBhbGxvd3MgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGU8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdG8gYmUgc2hhcmVkIGJldHdlZW4gdGhlbS4gVGhpcyBtZWFucyBvbmNlCisgICAgICAgICAgICAgICAgYSBXb3JrZXIgaGFzIGJ1aWx0IGFuIGFydGVmYWN0LCBhbGwgdGhlIG90aGVycyBjYW4gYmVuZWZpdCBmcm9tIGl0LiBVc2FnZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZSBkaXJlY3RvcnkgaXMgZGVzaWduZWQgZm9yIHNoYXJpbmcgb3ZlciBORlMuPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0LXJlc3VsdHRvb2wnPgorICAgICAgICAgICAgPHRpdGxlPlJlc3VsdHRvb2w8L3RpdGxlPgorICAgICAgICAgICAgPHBhcmE+QWxsIG9mIHRoZSBkaWZmZXJlbnQgdGVzdHMgcnVuIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIGdlbmVyYXRlIG91dHB1dCBpbnRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0cmVzdWx0cy5qc29uPC9maWxlbmFtZT4gZmlsZXMuIFRoaXMgYWxsb3dzIHVzIHRvIGRldGVybWluZSB3aGljaAorICAgICAgICAgICAgICAgIHRlc3RzIHJhbiBpbiBhIGdpdmVuIGJ1aWxkIGFuZCB0aGVpciBzdGF0dXMuIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHN1Y2ggYXMgZmFpbHVyZQorICAgICAgICAgICAgICAgIGxvZ3Mgb3IgdGhlIHRpbWUgdGFrZW4gdG8gcnVuIHRoZSB0ZXN0cywgbWF5IGFsc28gYmUgaW5jbHVkZWQuPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+UmVzdWx0dG9vbCBpcyBwYXJ0IG9mIE9wZW5FbWJlZGRlZC1Db3JlIGFuZCBpcyB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlc2UganNvbgorICAgICAgICAgICAgICAgIHJlc3VsdHMgZmlsZXMuIEl0IGhhcyB0aGUgYWJpbGl0eSB0byBtZXJnZSBmaWxlcyB0b2dldGhlciwgZGlzcGxheSByZXBvcnRzIG9mIHRoZQorICAgICAgICAgICAgICAgIHRlc3QgcmVzdWx0cyBhbmQgY29tcGFyZSBkaWZmZXJlbnQgcmVzdWx0IGZpbGVzLjwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkZvciBkZXRhaWxzLCBzZWUgPGxpbmsgbGlua2VuZD0iIgorICAgICAgICAgICAgICAgICAgICA+aHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZXN1bHR0b29sPC9saW5rPi48L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9J3Rlc3QtcnVuLWNvbmZpZy10Z3QtZXhlY3V0aW9uJz4KKyAgICAgICAgPHRpdGxlPnJ1bi1jb25maWcgVGFyZ2V0IEV4ZWN1dGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9ydW4tY29uZmlnPC9maWxlbmFtZT4gZXhlY3V0aW9uIGlzIHdoZXJlIG1vc3Qgb2YgdGhlIHdvcmsgd2l0aGluCisgICAgICAgICAgICB0aGUgQXV0b2J1aWxkZXIgaGFwcGVucy4gSXQgcnVucyB0aHJvdWdoIGEgbnVtYmVyIG9mIHN0ZXBzOyB0aGUgZmlyc3QgYXJlIGdlbmVyYWwgc2V0dXAKKyAgICAgICAgICAgIHN0ZXBzIHRoYXQgYXJlIHJ1biBvbmNlIGFuZCBpbmNsdWRlOjxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNldCB1cCBhbnkgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtdGFyYmFsbDwvZmlsZW5hbWU+IGlmIGNvbmZpZ3VyZWQuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5DYWxsICJidWlsZGhpc3RvcnktaW5pdCIgaWYgYnVpbGRoaXN0b3J5IGlzIGNvbmZpZ3VyZWQuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PjwvcGFyYT4KKyAgICAgICAgPHBhcmE+Rm9yIGVhY2ggc3RlcCB0aGF0IGlzIGNvbmZpZ3VyZWQgaW4gPGZpbGVuYW1lPmNvbmZpZy5qc29uPC9maWxlbmFtZT4sIGl0IHdpbGwgcGVyZm9ybQorICAgICAgICAgICAgdGhlIGZvbGxvd2luZzo8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHJlbWFyaz4jIyBXUklURVIncyBxdWVzdGlvbjogV2hhdCBkb2VzICJsb2dnaW5nIGluIGFzIHN0ZXBYYSIgYW5kIG90aGVycyByZWZlciB0bworICAgICAgICAgICAgICAgIGJlbG93PyAjIzwvcmVtYXJrPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbSBpZD0idGVzdC1ydW4tY29uZmlnLWFkZC1sYXllcnMtc3RlcCI+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhIGRpcj0ibHRyIj5BZGQgYW55IGxheWVycyB0aGF0IGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGFkZC1sYXllcjwvZmlsZW5hbWU+IGNvbW1hbmQgKGxvZ2dpbmcgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBYYSk8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhIGRpcj0ibHRyIj5DYWxsIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9zZXR1cC1jb25maWc8L2ZpbGVuYW1lPiBzY3JpcHQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIHRoZSBuZWNlc3NhcnkgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmEgZGlyPSJsdHIiPlJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2UgQkJUQVJHRVRTPC9maWxlbmFtZT4gY29tbWFuZCAobG9nZ2luZworICAgICAgICAgICAgICAgICAgICAgICAgYXMgc3RlcFhiKTwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmEgZGlyPSJsdHIiPlJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2UgU0FOSVRZVEFSR0VUUzwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nIGFzIHN0ZXBYYyk8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhIGRpcj0ibHRyIj5SdW4gdGhlIDxmaWxlbmFtZT5FWFRSQUNNRFM8L2ZpbGVuYW1lPiBjb21tYW5kLCB3aGljaCBhcmUgcnVuCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIEJpdEJha2UgYnVpbGQgZW52aXJvbm1lbnQgKGxvZ2dpbmcgYXMgc3RlcFhkKTwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmEgZGlyPSJsdHIiPlJ1biB0aGUgPGZpbGVuYW1lPkVYVFJBUExBSU5DTURTPC9maWxlbmFtZT4gY29tbWFuZChzKSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBydW4gb3V0c2lkZSB0aGUgQml0QmFrZSBidWlsZCBlbnZpcm9ubWVudCAobG9nZ2luZyBhcyBzdGVwWGQpPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYSBkaXI9Imx0ciI+UmVtb3ZlIGFueSBsYXllcnMgYWRkZWQgaW4gPGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZW5kPSJ0ZXN0LXJ1bi1jb25maWctYWRkLWxheWVycy1zdGVwIj5zdGVwIDE8L2xpbms+IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kIChsb2dnaW5nIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBzdGVwWGEpPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPk9uY2UgdGhlIGV4ZWN1dGlvbiBzdGVwcyBhYm92ZSBjb21wbGV0ZSwgPGZpbGVuYW1lPnJ1bi1jb25maWc8L2ZpbGVuYW1lPiBleGVjdXRlcyBhCisgICAgICAgICAgICBzZXQgb2YgcG9zdC1idWlsZCBzdGVwcywgaW5jbHVkaW5nOjxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhIGRpcj0ibHRyIj5DYWxsIDxmaWxlbmFtZT5zY3JpcHRzL3B1Ymxpc2gtYXJ0aWZhY3RzPC9maWxlbmFtZT4gdG8gY29sbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgYW55IG91dHB1dCB3aGljaCBpcyB0byBiZSBzYXZlZCBmcm9tIHRoZSBidWlsZC48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhIGRpcj0ibHRyIj5DYWxsIDxmaWxlbmFtZT5zY3JpcHRzL2NvbGxlY3QtcmVzdWx0czwvZmlsZW5hbWU+IHRvIGNvbGxlY3QgYW55CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHJlc3VsdHMgdG8gYmUgc2F2ZWQgZnJvbSB0aGUgYnVpbGQuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYSBkaXI9Imx0ciI+Q2FsbCA8ZmlsZW5hbWU+c2NyaXB0cy91cGxvYWQtZXJyb3ItcmVwb3J0czwvZmlsZW5hbWU+IHRvIHNlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSBlcnJvciByZXBvcnRzIGdlbmVyYXRlZCB0byB0aGUgcmVtb3RlIHNlcnZlci48L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhIGRpcj0ibHRyIj5DbGVhbnVwIHRoZSBidWlsZCBkaXJlY3RvcnkgdXNpbmcgPGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZW5kPSJ0ZXN0LWNsb2JiZXJkaXIiPjxmaWxlbmFtZT5jbG9iYmVyZGlyPC9maWxlbmFtZT48L2xpbms+IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgd2FzIHN1Y2Nlc3NmdWwsIGVsc2UgcmVuYW1lIGl0IHRvICJidWlsZC1yZW5hbWVkIiBmb3IgcG90ZW50aWFsIGZ1dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSd0ZXN0LWRlcGxveWluZy15cC1hdXRvYnVpbGRlcic+CisgICAgICAgIDx0aXRsZT5EZXBsb3lpbmcgWW9jdG8gQXV0b2J1aWxkZXI8L3RpdGxlPgorICAgICAgICA8cGFyYT5UaGUgbW9zdCB1cCB0byBkYXRlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzZXR1cCBhbmQgZGVwbG95IHlvdXIgb3duIEF1dGJ1aWxkZXIgY2FuCisgICAgICAgICAgICBiZSBmb3VuZCBpbiBSRUFETUUubWQgaW4gdGhlIDxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlcjI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LjwvcGFyYT4KKyAgICAgICAgPHBhcmE+V2UgaG9wZSB0aGF0IHBlb3BsZSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tYXV0b2J1aWxkZXIyPC9maWxlbmFtZT4gY29kZSBkaXJlY3RseQorICAgICAgICAgICAgYnV0IGl0IGlzIGluZXZpdGFibGUgdGhhdCB1c2VycyB3aWxsIGVuZCB1cCBuZWVkaW5nIHRvIGhlYXZpbHkgY3VzdG9taXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1hdXRvYnVpbGRlci1oZWxwZXI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCBwYXJ0aWN1bGFybHkgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmZpZy5qc29uPC9maWxlbmFtZT4gZmlsZSBhcyB0aGV5IHdpbGwgd2FudCB0byBkZWZpbmUgdGhlaXIgb3duIHRlc3QKKyAgICAgICAgICAgIG1hdHJpeC48L3BhcmE+CisgICAgICAgIDxwYXJhPlRoZSBBdXRvYnVpbGRlciBzdXBwb3J0cyB3byBjdXN0b21pemF0aW9uIG9wdGlvbnM6IDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT52YXJpYWJsZSBzdWJzdGl0dXRpb248L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPm92ZXJsYXlpbmcgY29uZmlndXJhdGlvbiBmaWxlczwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+VGhlIHN0YW5kYXJkIDxmaWxlbmFtZT5jb25maWcuanNvbjwvZmlsZW5hbWU+IG1pbmltYWxseSBhdHRlbXB0cyB0byBhbGxvdworICAgICAgICAgICAgc3Vic3RpdHV0aW9uIG9mIHRoZSBwYXRocy4gVGhlIEhlbHBlciBzY3JpcHQgcmVwb3NpdG9yeSBpbmNsdWRlcyBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLWV4YW1wbGUuanNvbjwvZmlsZW5hbWU+IGZpbGUgdG8gc2hvdyBob3cgeW91IGNvdWxkIG92ZXJyaWRlIHRoZXNlCisgICAgICAgICAgICBmcm9tIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBmaWxlLiBQYXNzIHRoZSBmb2xsb3dpbmcgaW50byB0aGUgZW52aXJvbm1lbnQgb2YgdGhlCisgICAgICAgICAgICBBdXRvYnVpbGRlcjo8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgQUJIRUxQRVJfSlNPTj0iY29uZmlnLmpzb24gbG9jYWwtZXhhbXBsZS5qc29uIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+QXMKKyAgICAgICAgICAgIGFub3RoZXIgZXhhbXBsZSwgeW91IGNvdWxkIGFsc28gcGFzcyB0aGUgZm9sbG93aW5nIGludG8gdGhlCisgICAgICAgICAgICBlbnZpcm9ubWVudDo8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAgICQgQUJIRUxQRVJfSlNPTj0iY29uZmlnLmpzb24gPHJlcGxhY2VhYmxlPi9zb21lL2xvY2F0aW9uLzwvcmVwbGFjZWFibGU+bG9jYWwuanNvbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0Pk9uZQorICAgICAgICAgICAgaXNzdWUgdXNlcnMgb2Z0ZW4gcnVuIGludG8gaXMgdmFsaWRhdGlvbiBvZiB0aGUgPGZpbGVuYW1lPmNvbmZpZy5qc29uPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICBBIHRpcCBmb3IgbWluaW1pemluZyBpc3N1ZXMgZnJvbSBpbnZhbGlkIGpzb24gZmlsZXMgaXMgdG8gdXNlIGEgR2l0CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByZS1jb21taXQtaG9vay5zaDwvZmlsZW5hbWU+IHNjcmlwdCB0byB2ZXJpZnkgdGhlIEpTT04gZmlsZSBiZWZvcmUKKyAgICAgICAgICAgIGNvbW1pdHRpbmcgaXQuIENyZWF0ZSBhIHN5bWJvbGljIGxpbmsgYXMKKyAgICAgICAgICAgIGZvbGxvd3M6PGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICAkIGxuIC1zIC4uLy4uL3NjcmlwdHMvcHJlLWNvbW1pdC1ob29rLnNoIC5naXQvaG9va3MvcHJlLWNvbW1pdAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworCisKKworCisKKworCis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vdGVzdC1tYW51YWwvdGVzdC1tYW51YWwucnN0CmluZGV4IDI4OTFmMDYuLmJkNWIxYjAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogWW9jdG8gUHJvamVjdCBUZXN0IEVudmlyb25tZW50IE1hbnVhbApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rlc3QtbWFudWFsL3Rlc3QtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDQ1NDU2NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90ZXN0LW1hbnVhbC90ZXN0LW1hbnVhbC54bWwKQEAgLTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Ym9vayBpZD0ndGVzdC1tYW51YWwnIGxhbmc9J2VuJworICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiCisgICAgICB4bWxucz0iaHR0cDovL2RvY2Jvb2sub3JnL25zL2RvY2Jvb2siCisgICAgICA+CisgICAgPGJvb2tpbmZvPgorCisgICAgICAgIDxtZWRpYW9iamVjdD4KKyAgICAgICAgICAgIDxpbWFnZW9iamVjdD4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9J2ZpZ3VyZXMvdGVzdC1tYW51YWwtdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFRlc3QgRW52aXJvbm1lbnQgTWFudWFsCisgICAgICAgIDwvdGl0bGU+CisKKyAgICAgICAgPGF1dGhvcmdyb3VwPgorICAgICAgICAgICAgPGF1dGhvcj4KKyAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5UQkQ8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5EUkFGVCAtIFdvcmstaW4tUHJvZ3Jlc3MgLSBwb3N0ZWQgSnVuZSAxNiwgMjAyMDwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgPC9yZXZoaXN0b3J5PgorCisgICAgPGNvcHlyaWdodD4KKyAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj4KKyAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieQorICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMuCisgICAgICA8L3BhcmE+CisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgVGVzdCBFbnZpcm9ubWVudCBNYW51YWw8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgorICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0idGVzdC1tYW51YWwtaW50cm8ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0idGVzdC1tYW51YWwtdGVzdC1wcm9jZXNzLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InRlc3QtbWFudWFsLXVuZGVyc3RhbmQtYXV0b2J1aWxkZXIueG1sIi8+CisgICAKKzwvYm9vaz4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL2hpc3RvcnkucnN0IGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL2hpc3RvcnkucnN0CmluZGV4IDA1YjYzZTUuLjAyN2IzNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC9oaXN0b3J5LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvaGlzdG9yeS5yc3QKQEAgLTEsNCArMSw0IEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktU0EtMi4wLVVLCisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCiAKICoqKioqKioqKioqKioqKioqKioqKioqCiBNYW51YWwgUmV2aXNpb24gSGlzdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWN1c3RvbWl6YXRpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOWIyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2VtYmVkZGVkX3ZpZGVvLnhzbCIvPgorCisgIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9Iid0b2FzdGVyLW1hbnVhbC1zdHlsZS5jc3MnIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNoYXB0ZXIuYXV0b2xhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYXBwZW5kaXguYXV0b2xhYmVsIiBzZWxlY3Q9IkEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0ic2VjdGlvbi5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmxhYmVsLmluY2x1ZGVzLmNvbXBvbmVudC5sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLmlkLmF0dHJpYnV0ZXMiIHNlbGVjdD0iMSIgLz4KKworPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ucnN0CmluZGV4IDQwOGM2ZmEuLjBiN2NkNDEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWludHJvLnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogKioqKioqKioqKioqCiBJbnRyb2R1Y3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZTllYzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorPCEtLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUstLT4KKworPGNoYXB0ZXIgaWQ9J3RvYXN0ZXItbWFudWFsLWludHJvJz4KKzx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KKyAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KKyAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzIGlzIGNvbGxlY3RlZCBhbmQgc3RvcmVkIGluIGEgZGF0YWJhc2UuCisgICAgICAgIFlvdSBjYW4gdXNlIFRvYXN0ZXIgdG8gY29uZmlndXJlIGFuZCBzdGFydCBidWlsZHMgb24gbXVsdGlwbGUKKyAgICAgICAgcmVtb3RlIGJ1aWxkIHNlcnZlcnMuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2ludHJvLWZlYXR1cmVzJz4KKyAgICAgICAgPHRpdGxlPlRvYXN0ZXIgRmVhdHVyZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG9hc3RlciBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIGJ1aWxkcywgYW5kIGl0CisgICAgICAgICAgICBwcm92aWRlcyBleHRlbnNpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ndG9hc3Rlci1idWlsZC1mZWF0dXJlcyc+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmUgYW5kIFJ1biBCdWlsZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIFRvYXN0ZXIgd2ViIGludGVyZmFjZSB0byBjb25maWd1cmUgYW5kCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHlvdXIgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICBCdWlsZHMgc3RhcnRlZCB1c2luZyB0aGUgVG9hc3RlciB3ZWIgaW50ZXJmYWNlIGFyZQorICAgICAgICAgICAgICAgICAgICBvcmdhbml6ZWQgaW50byBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgcHJvamVjdCwgeW91IGFyZSBhc2tlZCB0byBzZWxlY3QgYQorICAgICAgICAgICAgICAgICAgICByZWxlYXNlLCBvciB2ZXJzaW9uIG9mIHRoZSBidWlsZCBzeXN0ZW0geW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgdXNlIGZvciB0aGUgcHJvamVjdCBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIFRvYXN0ZXIgc3VwcG9ydHMgWW9jdG8gUHJvamVjdCByZWxlYXNlcyAxLjgKKyAgICAgICAgICAgICAgICAgICAgYW5kIGJleW9uZC4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGUgVG9hc3RlciB3ZWIgaW50ZXJmYWNlLCB5b3UgY2FuOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyb3dzZSBsYXllcnMgbGlzdGVkIGluIHRoZSB2YXJpb3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbGF5ZXItc291cmNlJz5sYXllciBzb3VyY2VzPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGF2YWlsYWJsZSBpbiB5b3VyIHByb2plY3QgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIExheWVyIEluZGV4IGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvJz48L3VsaW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJvd3NlIGltYWdlcywgcmVjaXBlcywgYW5kIG1hY2hpbmVzIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvc2UgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydCB5b3VyIG93biBsYXllcnMgZm9yIGJ1aWxkaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBhbmQgcmVtb3ZlIGxheWVycyBmcm9tIHlvdXIgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgdGFyZ2V0IG9yIG11bHRpcGxlIHRhcmdldHMgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgeW91ciBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIGFsc28gYWxsb3dzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcworICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGUgY29tbWFuZCBsaW5lIGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUgd2ViIGludGVyZmFjZSBhdCBhbnkgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgQnVpbGRzIHN0YXJ0ZWQgZnJvbSAgdGhlIGNvbW1hbmQgbGluZSBhcHBlYXIgd2l0aGluIGEgc3BlY2lhbAorICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIHByb2plY3QgY2FsbGVkICJDb21tYW5kIGxpbmUgYnVpbGRzIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0b2FzdGVyLWFuYWx5c2lzLWZlYXR1cmVzJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluZm9ybWF0aW9uIEFib3V0IHRoZSBCdWlsZCBQcm9jZXNzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgYWxzbyByZWNvcmRzIGV4dGVuc2l2ZSBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBjb2xsZWN0cyBkYXRhIGZvciBidWlsZHMgeW91IHN0YXJ0IGZyb20gdGhlIHdlYgorICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UgYW5kIGZyb20gdGhlIGNvbW1hbmQgbGluZSBhcyBsb25nIGFzIFRvYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaXMgcnVubmluZy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzdGFydCBUb2FzdGVyIGJlZm9yZSB0aGUgYnVpbGQgb3IgaXQgd2lsbCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgYnVpbGQgZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aCBUb2FzdGVyIHlvdSBjYW46CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHdoYXQgd2FzIGJ1aWx0IChyZWNpcGVzIGFuZCBwYWNrYWdlcykgYW5kIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB3ZXJlIGluc3RhbGxlZCBpbnRvIHlvdXIgZmluYWwgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJvd3NlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSB2YWx1ZSBvZiBhbGwgdmFyaWFibGVzIGluIHlvdXIgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCBhbmQgd2hpY2ggZmlsZXMgc2V0IGVhY2ggdmFsdWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSBlcnJvciwgd2FybmluZywgYW5kIHRyYWNlIG1lc3NhZ2VzIHRvIGFpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJpdEJha2UgdGFza3MgZXhlY3V0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmV1c2VkIGR1cmluZyB5b3VyIGJ1aWxkLCBpbmNsdWRpbmcgdGhvc2UgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgc2hhcmVkIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiByZWNpcGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLCBhbmQgdGFza3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHBlcmZvcm1hbmNlIGluZm9ybWF0aW9uIHN1Y2ggYXMgYnVpbGQgdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIHRpbWUsIENQVSB1c2FnZSwgYW5kIGRpc2sgSS9PLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGFuIG92ZXJ2aWV3IG9mIFRvYXN0ZXIgc2hpcHBlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk87CisgICAgICAgICAgICBSZWxlYXNlLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly95b3V0dS5iZS9CbFhkT1lMZ1B4QSc+VG9hc3RlciAtIFlvY3RvIFByb2plY3QgMi4yPC91bGluaz4iCisgICAgICAgICAgICB2aWRlby4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWluc3RhbGxhdGlvbi1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPkluc3RhbGxhdGlvbiBPcHRpb25zPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gc2V0IFRvYXN0ZXIgdXAgdG8gcnVuIGFzIGEgbG9jYWwgaW5zdGFuY2Ugb3IgYXMgYSBzaGFyZWQKKyAgICAgICAgICAgIGhvc3RlZCBzZXJ2aWNlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIFRvYXN0ZXIgaXMgc2V0IHVwIGFzIGEgbG9jYWwgaW5zdGFuY2UsIGFsbCB0aGUgY29tcG9uZW50cworICAgICAgICAgICAgcmVzaWRlIG9uIGEgc2luZ2xlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCBhIGxvY2FsIGluc3RhbmNlIG9mIFRvYXN0ZXIgaXMgc3VpdGVkIGZvciBhIHNpbmdsZQorICAgICAgICAgICAgdXNlciBkZXZlbG9waW5nIG9uIGEgc2luZ2xlIGJ1aWxkIGhvc3QuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zaW1wbGUtY29uZmlndXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSIxLjVpbiIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG9hc3RlciBhcyBhIGhvc3RlZCBzZXJ2aWNlIGlzIHN1aXRlZCBmb3IgbXVsdGlwbGUgdXNlcnMKKyAgICAgICAgICAgIGRldmVsb3BpbmcgYWNyb3NzIHNldmVyYWwgYnVpbGQgaG9zdHMuCisgICAgICAgICAgICBXaGVuIFRvYXN0ZXIgaXMgc2V0IHVwIGFzIGEgaG9zdGVkIHNlcnZpY2UsIGl0cyBjb21wb25lbnRzIGNhbgorICAgICAgICAgICAgYmUgc3ByZWFkIGFjcm9zcyBzZXZlcmFsIG1hY2hpbmVzOgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaG9zdGVkLXNlcnZpY2UucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iMy41aW4iIC8+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKzwhLS1USElTIEVYVFJBIElORk9STUFUSU9OIFBST0JBQkxZIFdJTEwgR08gQVdBWQorICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsaW5nIGFuZCBydW5uaW5nIFRvYXN0ZXIsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVG9hc3RlciNJbnN0YWxsYXRpb25fYW5kX1J1bm5pbmcnPkluc3RhbGxhdGlvbiBhbmQgUnVubmluZzwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIG9mIHRoZSAiVG9hc3RlciIgd2lraSBwYWdlLgorICAgICAgICBGb3IgY29tcGxldGUgaW5mb3JtYXRpb24gb24gdGhlIEFQSSBhbmQgaXRzIHNlYXJjaCBvcGVyYXRpb24KKyAgICAgICAgVVJJLCBwYXJhbWV0ZXJzLCBhbmQgcmVzcG9uc2VzLCBzZWUgdGhlCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvUkVTVF9BUElfQ29udHJhY3RzJz5SRVNUIEFQSSBDb250cmFjdHM8L3VsaW5rPgorICAgICAgICBXaWtpIHBhZ2UuCisgICAgPC9wYXJhPgorLS0+Cis8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UucnN0CmluZGV4IGU1ZTM1MzEuLmU5NTUzNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiAqKioqKioqKioqKioqKioqKioqKioqCiBDb25jZXB0cyBhbmQgUmVmZXJlbmNlCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMjY3ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbApAQCAtMCwwICsxLDgzNyBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSd0b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UnPgorCis8dGl0bGU+Q29uY2VwdHMgYW5kIFJlZmVyZW5jZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gb3JkZXIgdG8gY29uZmlndXJlIGFuZCB1c2UgVG9hc3RlciwgeW91IHNob3VsZCB1bmRlcnN0YW5kIHNvbWUKKyAgICAgICAgY29uY2VwdHMgYW5kIGhhdmUgc29tZSBiYXNpYyBjb21tYW5kIHJlZmVyZW5jZSBtYXRlcmlhbCBhdmFpbGFibGUuCisgICAgICAgIFRoaXMgZmluYWwgY2hhcHRlciBwcm92aWRlcyBjb25jZXB0dWFsIGluZm9ybWF0aW9uIG9uIGxheWVyIHNvdXJjZXMsCisgICAgICAgIHJlbGVhc2VzLCBhbmQgSlNPTiBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICBBbHNvIHByb3ZpZGVkIGlzIGEgcXVpY2sgbG9vayBhdCBzb21lIHVzZWZ1bAorICAgICAgICA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgdGhhdCBhcmUgVG9hc3Rlci1zcGVjaWZpYy4KKyAgICAgICAgSW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGRvZXMgZXhpc3QKKyAgICAgICAgYWNyb3NzIHRoZSBXZWIgYW5kIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIG1hbnVhbCBieSBubyBtZWFucworICAgICAgICBhdHRlbXB0cyB0byBwcm92aWRlIGEgY29tbWFuZCBjb21wcmVoZW5zaXZlIHJlZmVyZW5jZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbGF5ZXItc291cmNlJz4KKyAgICAgICAgPHRpdGxlPkxheWVyIFNvdXJjZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBnZW5lcmFsLCBhICJsYXllciBzb3VyY2UiIGlzIGEgc291cmNlIG9mIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgICAgICBleGlzdGluZyBsYXllcnMuCisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB3ZSBhcmUgY29uY2VybmVkIHdpdGggbGF5ZXJzIHRoYXQgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYW5kIFRvYXN0ZXIuCisgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGEgcGFydGljdWxhciB0eXBlIG9mIGxheWVyIHNvdXJjZSBjYWxsZWQKKyAgICAgICAgICAgIGEgImxheWVyIGluZGV4LiIKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBsYXllciBpbmRleCBpcyBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uCisgICAgICAgICAgICBhYm91dCBhIHNldCBvZiBjdXN0b20gbGF5ZXJzLgorICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYW4gZXhpc3RpbmcgbGF5ZXIgaW5kZXggaXMgdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgTGF5ZXIgSW5kZXguCisgICAgICAgICAgICBBIHB1YmxpYyBpbnN0YW5jZSBvZiB0aGlzIGxheWVyIGluZGV4IGV4aXN0cyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnJz48L3VsaW5rPi4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgY29kZSBmb3IgdGhpcyBsYXllciBpbmRleCdzIHdlYiBhcHBsaWNhdGlvbiBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbGF5ZXJpbmRleC13ZWIvJz48L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgdGllIGEgbGF5ZXIgc291cmNlIGludG8gVG9hc3RlciwgaXQgY2FuIHF1ZXJ5IHRoZSBsYXllcgorICAgICAgICAgICAgc291cmNlIHRocm91Z2ggYQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXByZXNlbnRhdGlvbmFsX3N0YXRlX3RyYW5zZmVyJz5SRVNUPC91bGluaz4KKyAgICAgICAgICAgIEFQSSwgc3RvcmUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsYXllcnMgaW4gdGhlIFRvYXN0ZXIKKyAgICAgICAgICAgIGRhdGFiYXNlLCBhbmQgdGhlbiBzaG93IHRoZSBpbmZvcm1hdGlvbiB0byB1c2Vycy4KKyAgICAgICAgICAgIFVzZXJzIGFyZSB0aGVuIGFibGUgdG8gdmlldyB0aGF0IGluZm9ybWF0aW9uIGFuZCBidWlsZCBsYXllcnMKKyAgICAgICAgICAgIGZyb20gVG9hc3RlciBpdHNlbGYgd2l0aG91dCB3b3JyeWluZyBhYm91dCBjbG9uaW5nIG9yIGVkaXRpbmcKKyAgICAgICAgICAgIHRoZSBCaXRCYWtlIGxheWVycyBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFR5aW5nIGEgbGF5ZXIgc291cmNlIGludG8gVG9hc3RlciBpcyBjb252ZW5pZW50IHdoZW4geW91IGhhdmUKKyAgICAgICAgICAgIG1hbnkgY3VzdG9tIGxheWVycyB0aGF0IG5lZWQgdG8gYmUgYnVpbHQgb24gYSByZWd1bGFyIGJhc2lzIGJ5CisgICAgICAgICAgICBhIGNvbW11bml0eSBvZiBkZXZlbG9wZXJzLgorICAgICAgICAgICAgSW4gZmFjdCwgVG9hc3RlciBjb21lcyBwcmUtY29uZmlndXJlZCB3aXRoIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgIE1ldGFkYXRhIEluZGV4LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIHVzZSBhIGxheWVyIHNvdXJjZSB0byB1c2UgVG9hc3Rlci4KKyAgICAgICAgICAgICAgICBUeWluZyBpbnRvIGEgbGF5ZXIgc291cmNlIGlzIG9wdGlvbmFsLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2xheWVyLXNvdXJjZS11c2luZy13aXRoLXRvYXN0ZXInPgorICAgICAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgYW5kIFVzaW5nIGEgTGF5ZXIgU291cmNlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gdXNlIHlvdXIgb3duIGxheWVyIHNvdXJjZSwgeW91IG5lZWQgdG8gc2V0IHVwIHRoZSBsYXllcgorICAgICAgICAgICAgICAgIHNvdXJjZSBhbmQgdGhlbiB0aWUgaXQgaW50byBUb2FzdGVyLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIHRpZSBpbnRvIGEgbGF5ZXIgaW5kZXggaW4gYSBtYW5uZXIKKyAgICAgICAgICAgICAgICBzaW1pbGFyIHRvIHRoZSB3YXkgVG9hc3RlciB0aWVzIGludG8gdGhlIE9wZW5FbWJlZGRlZCBNZXRhZGF0YQorICAgICAgICAgICAgICAgIEluZGV4LgorICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLXlvdXItbGF5ZXJzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VW5kZXJzdGFuZGluZyBZb3VyIExheWVyczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCBmb3IgdXNpbmcgYSBsYXllciBpbmRleCBpcyB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIHNldmVyYWwgY3VzdG9tIGxheWVycyB0aGF0IGRldmVsb3BlcnMgYnVpbGQgYW5kIGFjY2VzcyB1c2luZworICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIHJlZ3VsYXIgYmFzaXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2V0IG9mIGxheWVycyBuZWVkcyB0byBleGlzdCBhbmQgeW91IG5lZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgZmFtaWxpYXIgd2l0aCB3aGVyZSB0aGV5IHJlc2lkZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgbmVlZCB0aGF0IGluZm9ybWF0aW9uIHdoZW4geW91IHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29kZSBmb3IgdGhlIHdlYiBhcHBsaWNhdGlvbiB0aGF0ICJob29rcyIgaW50byB5b3VyIHNldCBvZgorICAgICAgICAgICAgICAgICAgICBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+VGhlIFlvY3RvIFByb2plY3QgTGF5ZXIgTW9kZWw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbmZpZ3VyaW5nLXRvYXN0ZXItdG8taG9vay1pbnRvLXlvdXItbGF5ZXItc291cmNlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgVG9hc3RlciB0byBIb29rIEludG8gWW91ciBMYXllciBJbmRleDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgVG9hc3RlciB0byB1c2UgeW91ciBsYXllciBpbmRleCwgeW91IG11c3QgaG9zdAorICAgICAgICAgICAgICAgICAgICB0aGUgd2ViIGFwcGxpY2F0aW9uIGluIGEgc2VydmVyIHRvIHdoaWNoIFRvYXN0ZXIgY2FuCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3QuCisgICAgICAgICAgICAgICAgICAgIFlvdSBhbHNvIG5lZWQgdG8gZ2l2ZSBUb2FzdGVyIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxheWVyIGluZGV4LgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGhhdmUgdG8gY29uZmlndXJlIFRvYXN0ZXIgdG8gdXNlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgaW5kZXguCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdHdvIG1ldGhvZHMgYnkgd2hpY2ggeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgYW5kIHVzZSB5b3VyIGxheWVyIGluZGV4LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwgdGhlIGNvZGUgZm9yIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgSW5kZXggKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnJz48L3VsaW5rPikgd2FzCisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgY29kZSwgd2hpY2ggaXMgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbGF5ZXJpbmRleC13ZWIvJz48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYXMgYSBiYXNlIHRvIGNyZWF0ZSB5b3VyIG93biBsYXllciBpbmRleC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNlLXRoZS1hZG1pbmlzdHJhdGlvbi1pbnRlcmZhY2UnPgorICAgICAgICAgICAgICAgICAgICA8dGl0bGU+VXNlIHRoZSBBZG1pbmlzdHJhdGlvbiBJbnRlcmZhY2U8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXNzIHRoZSBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UgdGhyb3VnaCBhCisgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyIGJ5IGVudGVyaW5nIHRoZSBVUkwgb2YgeW91ciBUb2FzdGVyIGluc3RhbmNlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nICI8ZmlsZW5hbWU+L2FkbWluPC9maWxlbmFtZT4iIHRvIHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBVUkwuCisgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBpZiB5b3UgYXJlIHJ1bm5pbmcgVG9hc3RlciBsb2NhbGx5LCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgVVJMOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYWRtaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSBoYXMgYSAiTGF5ZXIgc291cmNlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gdGhhdCBpbmNsdWRlcyBhbiAiQWRkIGxheWVyIHNvdXJjZSIgYnV0dG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhhdCBidXR0b24gYW5kIHByb3ZpZGUgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSBzdXJlIHlvdSBzZWxlY3QgImxheWVyaW5kZXgiIGFzIHRoZSBsYXllciBzb3VyY2UgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1c2UtdGhlLWZpeHR1cmUtZmVhdHVyZSc+CisgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2UgdGhlIEZpeHR1cmUgRmVhdHVyZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgRGphbmdvIGZpeHR1cmUgZmVhdHVyZSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB3aGVuIHlvdSB1c2UgaXQgdG8gc3BlY2lmeSBhIGN1c3RvbSBVUkwuIFRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpeHR1cmUgZmVhdHVyZSwgY3JlYXRlIChvciBlZGl0KSB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvbGliL3RvYXN0ZXIub3JtL2ZpeHR1cmVzL2N1c3RvbS54bWw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGVuIHNldCB0aGUgZm9sbG93aW5nIFRvYXN0ZXIgc2V0dGluZyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gVVJMOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7CisgICAgICZsdDtkamFuZ28tb2JqZWN0cyB2ZXJzaW9uPSIxLjAiJmd0OworICAgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS50b2FzdGVyc2V0dGluZyIgcGs9IjEwMCImZ3Q7CisgICAgICAgICAgICAgICAgICAgICAmbHQ7ZmllbGQgbmFtZT0ibmFtZSIgdHlwZT0iQ2hhckZpZWxkIiZndDtDVVNUT01fTEFZRVJJTkRFWF9TRVJWRVImbHQ7L2ZpZWxkJmd0OworICAgICAgICAgICAgICAgICAgICAgJmx0O2ZpZWxkIG5hbWU9InZhbHVlIiB0eXBlPSJDaGFyRmllbGQiJmd0O2h0dHBzOi8vbGF5ZXJzLm15X29yZ2FuaXphdGlvbi5vcmcvbGF5ZXJpbmRleC9icmFuY2gvbWFzdGVyL2xheWVycy8mbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAmbHQ7ZGphbmdvLW9iamVjdHMmZ3Q7CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzdGFydCBUb2FzdGVyIGZvciB0aGUgZmlyc3QgdGltZSwgb3IgaWYgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhlIGZpbGUgPGZpbGVuYW1lPnRvYXN0ZXIuc3FsaXRlPC9maWxlbmFtZT4gYW5kIHJlc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGF0YWJhc2Ugd2lsbCBwb3B1bGF0ZSBjbGVhbmx5IGZyb20gdGhpcyBsYXllciBpbmRleCBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGluZm9ybWF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQsIHZlcmlmeSB0aGUgbmV3IGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYnkgdXNpbmcgdGhlIFRvYXN0ZXIgd2ViIGludGVyZmFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGRvIHRoYXQsIHZpc2l0IHRoZSAiQWxsIGNvbXBhdGlibGUgbGF5ZXJzIiBwYWdlIGluc2lkZSBhCisgICAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIHByb2plY3QuIFRoZSBsYXllcnMgZnJvbSB5b3VyIGxheWVyIHNvdXJjZSBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlZCB0aGVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNoYW5nZSB0aGUgaW5mb3JtYXRpb24gaW4geW91ciBsYXllciBpbmRleCBzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoIHRoZSBUb2FzdGVyIGRhdGFiYXNlIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UvbGliL3RvYXN0ZXIvbWFuYWdlLnB5IGxzdXBkYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgVG9hc3RlciBjYW4gcmVhY2ggdGhlIEFQSSBVUkwsIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgdGVsbGluZyB5b3UgdGhhdCBUb2FzdGVyIGlzIHVwZGF0aW5nIHRoZSBsYXllciBzb3VyY2UgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ndG9hc3Rlci1yZWxlYXNlcyc+CisgICAgICAgIDx0aXRsZT5SZWxlYXNlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBUb2FzdGVyIHByb2plY3QgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UsCisgICAgICAgICAgICB5b3UgYXJlIGFza2VkIHRvIGNob29zZSBhICJSZWxlYXNlLiIKKyAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIFRvYXN0ZXIsIHRoZSB0ZXJtICJSZWxlYXNlIiByZWZlcnMgdG8gYSBzZXQgb2YKKyAgICAgICAgICAgIGxheWVycyBhbmQgYSBCaXRCYWtlIHZlcnNpb24gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgdG8gYnVpbGQgc29tZXRoaW5nLgorICAgICAgICAgICAgQXMgc2hpcHBlZCwgVG9hc3RlciBpcyBwcmUtY29uZmlndXJlZCB3aXRoIHJlbGVhc2VzIHRoYXQKKyAgICAgICAgICAgIGNvcnJlc3BvbmQgdG8gWW9jdG8gUHJvamVjdCByZWxlYXNlIGJyYW5jaGVzLgorICAgICAgICAgICAgSG93ZXZlciwgeW91IGNhbiBtb2RpZnksIGRlbGV0ZSwgYW5kIGNyZWF0ZSBuZXcgcmVsZWFzZXMKKyAgICAgICAgICAgIGFjY29yZGluZyB0byB5b3VyIG5lZWRzLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiByZWxlYXNlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLXJlbGVhc2VzLXN1cHBvcnRlZCc+CisgICAgICAgICAgICA8dGl0bGU+UHJlLUNvbmZpZ3VyZWQgUmVsZWFzZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBUb2FzdGVyIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGEgc3BlY2lmaWMgc2V0IG9mCisgICAgICAgICAgICAgICAgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgY2FuIGFsd2F5cyBjb25maWd1cmUgVG9hc3RlciB0byB1c2UgYW55CisgICAgICAgICAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgeW91ciBwcm9qZWN0IHRvIGJ1aWxkIGFnYWluc3QgYQorICAgICAgICAgICAgICAgIHNwZWNpZmljIGNvbW1pdCBvZiBhbnkgb2YgdGhlICJvdXQtb2YtdGhlLWJveCIgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgT3IsIHlvdSBtaWdodCB3YW50IHlvdXIgcHJvamVjdCB0byBidWlsZCBhZ2FpbnN0IGRpZmZlcmVudAorICAgICAgICAgICAgICAgIHJldmlzaW9ucyBvZiBPcGVuRW1iZWRkZWQgYW5kIEJpdEJha2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIFRvYXN0ZXIgaXMgY29uZmlndXJlZCB0byB3b3JrIHdpdGggdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgIHJlbGVhc2VzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0ICZESVNUUk87ICImRElTVFJPX05BTUU7IiBvciBPcGVuRW1iZWRkZWQgIiZESVNUUk9fTkFNRTsiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2UgY2F1c2VzIHlvdXIgVG9hc3RlciBwcm9qZWN0cyB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCB0aGUgaGVhZCBvZiB0aGUgJkRJU1RST19OQU1FX05PX0NBUDsgYnJhbmNoIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1yb2Nrbyc+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9jb21taXQvP2g9cm9ja28nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+WW9jdG8gUHJvamVjdCAiTWFzdGVyIiBvciBPcGVuRW1iZWRkZWQgIk1hc3RlciI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBjYXVzZXMgeW91ciBUb2FzdGVyIFByb2plY3RzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhZ2FpbnN0IHRoZSBoZWFkIG9mIHRoZSBtYXN0ZXIgYnJhbmNoLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgYWN0aXZlIGRldmVsb3BtZW50IHRha2VzIHBsYWNlLCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvJz48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxvY2FsIFlvY3RvIFByb2plY3Qgb3IgTG9jYWwgT3BlbkVtYmVkZGVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2UgY2F1c2VzIHlvdXIgVG9hc3RlciBQcm9qZWN0cyB0bworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYWdhaW5zdCB0aGUgaGVhZCBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4gY2xvbmUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGxvY2FsIHRvIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVG9hc3Rlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NvbmZpZ3VyaW5nLXRvYXN0ZXInPgorICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgVG9hc3RlcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgVG9hc3RlciwgeW91IG11c3QgY29uZmlndXJlIHRoZSBkYXRhYmFzZSB3aXRoIHRoZQorICAgICAgICAgICAgZGVmYXVsdCBjb250ZW50LiBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIGRlc2NyaWJlIHZhcmlvdXMgYXNwZWN0cworICAgICAgICAgICAgb2YgVG9hc3RlciBjb25maWd1cmF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbmZpZ3VyaW5nLXRoZS13b3JrZmxvdyc+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIFdvcmtmbG93PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGNvbnRyb2xzIHdvcmtmbG93IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBvdXRsaW5lIHRoZSBwcm9jZXNzIHRvIGluaXRpYWxseSBwb3B1bGF0ZQorICAgICAgICAgICAgICAgIHRoaXMgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBwcm9qZWN0IHNldHRpbmdzIGFyZSBzZXQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9ybS9maXh0dXJlcy9zZXR0aW5ncy54bWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBwcm9qZWN0IGRpc3RybyBhbmQgbGF5ZXJzIGFyZSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL3Bva3kueG1sPC9maWxlbmFtZT4gaWYgcG9reQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgcG9reSBpcyBub3QgaW5zdGFsbGVkLCB0aGV5IGFyZSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvY3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cywgdGhlbiBpdHMgdmFsdWVzIGFyZSBhZGRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF5ZXIgaW5kZXggaXMgdGhlbiBzY2FubmVkIGFuZCBhZGRlZCB0byB0aGUgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIE9uY2UgdGhlc2Ugc3RlcHMgY29tcGxldGUsIFRvYXN0ZXIgaXMgc2V0IHVwIGFuZCByZWFkeSB0byB1c2UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3VzdG9taXppbmctcHJlLXNldC1kYXRhJz4KKyAgICAgICAgICAgIDx0aXRsZT5DdXN0b21pemluZyBQcmUtU2V0IERhdGE8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcHJlLXNldCBkYXRhIGZvciBUb2FzdGVyIGlzIGVhc2lseSBjdXN0b21pemFibGUuIFlvdSBjYW4KKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvY3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICB0byBjdXN0b21pemUgdGhlIHZhbHVlcyB0aGF0IGdvIGludG8gdG8gdGhlIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgIEN1c3RvbWl6YXRpb24gaXMgYWRkaXRpdmUsCisgICAgICAgICAgICAgICAgYW5kIGNhbiBlaXRoZXIgZXh0ZW5kIG9yIGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgdXNlIHRoZSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL2N1c3RvbS54bWw8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IHByb2plY3Qgc2V0dGluZ3MgZm9yIHRoZSBtYWNoaW5lLCBkaXN0cm8sCisgICAgICAgICAgICAgICAgZmlsZSBpbWFnZXMsIGFuZCBsYXllcnMuCisgICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyBhIG5ldyBwcm9qZWN0LCB5b3UgY2FuIHVzZSB0aGUgZmlsZSB0byBkZWZpbmUKKyAgICAgICAgICAgICAgICB0aGUgb2ZmZXJlZCBhbHRlcm5hdGUgcHJvamVjdCByZWxlYXNlIHNlbGVjdGlvbnMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIG9uZSBvciBtb3JlIGFkZGl0aW9uYWwgc2VsZWN0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgcHJlc2VudCBjdXN0b20gbGF5ZXIgc2V0cyBvciBkaXN0cm9zLCBhbmQgYW55IG90aGVyIGxvY2FsIG9yIHByb3ByaWV0YXJ5CisgICAgICAgICAgICAgICAgY29udGVudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB5b3UgY2FuIGNvbXBsZXRlbHkgZGlzYWJsZSB0aGUgY29udGVudCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1jb3JlLnhtbDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cG9reS54bWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzIGJ5IGRlZmluaW5nIHRoZSBzZWN0aW9uIHNob3duIGJlbG93IGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZXR0aW5ncy54bWw8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIG9wdGlvbiBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGlmIHlvdXIgY3VzdG9tCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkZWZpbmVzIGZld2VyIHJlbGVhc2VzIG9yIGxheWVycyB0aGFuIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgZml4dHVyZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNldHMgIm5hbWUiIHRvICJDVVNUT01fWE1MX09OTFkiIGFuZCBpdHMgdmFsdWUKKyAgICAgICAgICAgICAgICB0byAiVHJ1ZSIuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0udG9hc3RlcnNldHRpbmciIHBrPSI5OSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7Q1VTVE9NX1hNTF9PTkxZJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2YWx1ZSImZ3Q7VHJ1ZSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLWZpeHR1cmUtZmlsZS1mb3JtYXQnPgorICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmRpbmcgRml4dHVyZSBGaWxlIEZvcm1hdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gb3ZlcnZpZXcgb2YgdGhlIGZpbGUgZm9ybWF0IHVzZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWNvcmUueG1sPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5wb2t5LnhtbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Y3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIGRlc2NyaWJlIGVhY2ggb2YgdGhlIHNlY3Rpb25zIGluIHRoZQorICAgICAgICAgICAgICAgIGZpeHR1cmUgZmlsZXMsIGFuZCBvdXRsaW5lIGFuIGV4YW1wbGUgc2VjdGlvbiBvZiB0aGUgWE1MIGNvZGUuCisgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdG8gaGVscCB1bmRlcnN0YW5kIHRoaXMgaW5mb3JtYXRpb24gYW5kIGNyZWF0ZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmN1c3RvbS54bWw8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctdGhlLWRlZmF1bHQtZGlzdHJvLWFuZC1vdGhlci12YWx1ZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyB0aGUgRGVmYXVsdCBEaXN0cm8gYW5kIE90aGVyIFZhbHVlczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlZmluZXMgdGhlIGRlZmF1bHQgZGlzdHJvIHZhbHVlIGZvciBuZXcgcHJvamVjdHMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGl0IHJlc2VydmVzIHRoZSBmaXJzdCBUb2FzdGVyIFNldHRpbmcgcmVjb3JkICIxIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkZW1vbnN0cmF0ZXMgaG93IHRvIHNldCB0aGUgcHJvamVjdCBkZWZhdWx0IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGZvcgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7IS0tIFNldCB0aGUgcHJvamVjdCBkZWZhdWx0IHZhbHVlIGZvciBESVNUUk8gLS0mZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS50b2FzdGVyc2V0dGluZyIgcGs9IjEiJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiJmd0O0RFRkNPTkZfRElTVFJPJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2YWx1ZSImZ3Q7cG9reSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb3ZlcnJpZGUgb3RoZXIgZGVmYXVsdCBwcm9qZWN0IHZhbHVlcyBieSBhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBUb2FzdGVyIFNldHRpbmcgc2VjdGlvbnMgc3VjaCBhcyBhbnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGNvbWluZyBmcm9tIHRoZSA8ZmlsZW5hbWU+c2V0dGluZ3MueG1sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgeW91IGNhbiBhZGQgY3VzdG9tIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhlICJwayIgdmFsdWVzIG11c3QgYmUgdW5pcXVlLgorICAgICAgICAgICAgICAgICAgICAgICBCeSBjb252ZW50aW9uLCB2YWx1ZXMgdGhhdCBzZXQgZGVmYXVsdCBwcm9qZWN0IHZhbHVlcyBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIkRFRkNPTkYiIHByZWZpeC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdkZWZpbmluZy1iaXRiYWtlLXZlcnNpb24nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyBCaXRCYWtlIFZlcnNpb248L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB3aGljaCB2ZXJzaW9uIG9mIEJpdEJha2UgaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGZvbGxvd2luZyByZWxlYXNlIHNlbGVjdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLSZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7cm9ja28mbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCImZ3Q7Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCImZ3Q7Yml0YmFrZSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctcmVsZWFzZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyBSZWxlYXNlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRlZmluZXMgdGhlIHJlbGVhc2VzIHdoZW4geW91IGNyZWF0ZSBhIG5ldworICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshLS0gUmVsZWFzZXMgYXZhaWxhYmxlIC0tJmd0OworICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjEiJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiJmd0O3JvY2tvJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiImZ3Q7WW9jdG8gUHJvamVjdCAyLjQgIlJvY2tvIiZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iJmd0OzEmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiJmd0O1RvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cm9ja28iJmd0O1lvY3RvIFByb2plY3QgUm9ja28gYnJhbmNoJmx0Oy9hJmd0Oy4mbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgInBrIiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSBhYm92ZSByZXNwZWN0aXZlIEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZWNvcmQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctdGhlLXJlbGVhc2UtZGVmYXVsdC1sYXllci1uYW1lcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkRlZmluaW5nIHRoZSBSZWxlYXNlIERlZmF1bHQgTGF5ZXIgTmFtZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB0aGUgZGVmYXVsdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7IS0tIERlZmF1bHQgcHJvamVjdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZSAtLSZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2VkZWZhdWx0bGF5ZXIiIHBrPSIxIiZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfbmFtZSImZ3Q7b3BlbmVtYmVkZGVkLWNvcmUmbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgJ3BrJyB2YWx1ZXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUgc2hvdWxkIHN0YXJ0IGF0ICIxIiBhbmQgaW5jcmVtZW50CisgICAgICAgICAgICAgICAgICAgIHVuaXF1ZWx5LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgc2FtZSBsYXllciBuYW1lIGluIG11bHRpcGxlIHJlbGVhc2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2RlZmluaW5nLWxheWVyLWRlZmluaXRpb25zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RGVmaW5pbmcgTGF5ZXIgRGVmaW5pdGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExheWVyIGRlZmluaXRpb25zIGFyZSB0aGUgbW9zdCBjb21wbGV4LgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRlZmluZXMgZWFjaCBvZiB0aGUgbGF5ZXJzLCBhbmQgdGhlbiBkZWZpbmVzIHRoZSBleGFjdCBsYXllcgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBsYXllciB1c2VkIGZvciBlYWNoIHJlc3BlY3RpdmUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaGF2ZSBvbmUgPGZpbGVuYW1lPm9ybS5sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGVudHJ5IGZvciBlYWNoIGxheWVyLgorICAgICAgICAgICAgICAgICAgICBUaGVuLCB3aXRoIGVhY2ggZW50cnkgeW91IG5lZWQgYSBzZXQgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9ybS5sYXllcl92ZXJzaW9uPC9maWxlbmFtZT4gZW50cmllcyB0aGF0IGNvbm5lY3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciB3aXRoIGVhY2ggcmVsZWFzZSB0aGF0IGluY2x1ZGVzIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCBhbGwgcmVsZWFzZXMgaW5jbHVkZSB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLmxheWVyIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7b3BlbmVtYmVkZGVkLWNvcmUmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImxheWVyX2luZGV4X3VybCImZ3Q7Jmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3NfdXJsIiZndDtnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Jmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3Nfd2ViX3VybCImZ3Q7aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl90cmVlX2Jhc2VfdXJsIiZndDtodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCUmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZjc193ZWJfZmlsZV9iYXNlX3VybCImZ3Q7aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlLyVwYXRoJT9oPSVicmFuY2glJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIiZndDswJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCImZ3Q7bWV0YSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjIiJmd0OworICAgICAgICZsdDtmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiJmd0OzEmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSImZ3Q7MCZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiJmd0OzImbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCImZ3Q7SEVBRCZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iY29tbWl0IiZndDtIRUFEJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIiZndDttZXRhJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMyImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIiZndDswJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MyZsdDsvZmllbGQmZ3Q7CisKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giJmd0O21hc3RlciZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCImZ3Q7bWV0YSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllciAicGsiIHZhbHVlcyBhYm92ZSBtdXN0IGJlIHVuaXF1ZSwgYW5kIHR5cGljYWxseSBzdGFydCBhdCAiMSIuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllciB2ZXJzaW9uICJwayIgdmFsdWVzIG11c3QgYWxzbyBiZSB1bmlxdWUgYWNyb3NzIGFsbCBsYXllcnMsCisgICAgICAgICAgICAgICAgICAgIGFuZCB0eXBpY2FsbHkgc3RhcnQgYXQgIjEiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZW1vdGUtdG9hc3Rlci1tb25pdG9yaW5nJz4KKyAgICAgICAgPHRpdGxlPlJlbW90ZSBUb2FzdGVyIE1vbml0b3Jpbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG9hc3RlciBoYXMgYW4gQVBJIHRoYXQgYWxsb3dzIHJlbW90ZSBtYW5hZ2VtZW50IGFwcGxpY2F0aW9ucyB0bworICAgICAgICAgICAgZGlyZWN0bHkgcXVlcnkgdGhlIHN0YXRlIG9mIHRoZSBUb2FzdGVyIHNlcnZlciBhbmQgaXRzIGJ1aWxkcworICAgICAgICAgICAgaW4gYSBtYWNoaW5lLXRvLW1hY2hpbmUgbWFubmVyLgorICAgICAgICAgICAgVGhpcyBBUEkgdXNlcyB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVwcmVzZW50YXRpb25hbF9zdGF0ZV90cmFuc2Zlcic+UkVTVDwvdWxpbms+CisgICAgICAgICAgICBpbnRlcmZhY2UgYW5kIHRoZSB0cmFuc2ZlciBvZiBKU09OIGZpbGVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBtaWdodAorICAgICAgICAgICAgbW9uaXRvciBhIGJ1aWxkIGluc2lkZSBhIGNvbnRhaW5lciB0aHJvdWdoIHdlbGwgc3VwcG9ydGVkCisgICAgICAgICAgICBrbm93biBIVFRQIHBvcnRzIGluIG9yZGVyIHRvIGVhc2lseSBhY2Nlc3MgYSBUb2FzdGVyIHNlcnZlcgorICAgICAgICAgICAgaW5zaWRlIHRoZSBjb250YWluZXIuCisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHdoZW4geW91IHVzZSB0aGlzIGRpcmVjdCBKU09OIEFQSSwgeW91IGF2b2lkCisgICAgICAgICAgICBoYXZpbmcgd2ViIHBhZ2UgcGFyc2luZyBhZ2FpbnN0IHRoZSBkaXNwbGF5IHRoZSB1c2VyIHNlZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY2hlY2tpbmctaGVhbHRoJz4KKyAgICAgICAgICAgIDx0aXRsZT5DaGVja2luZyBIZWFsdGg8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgeW91IHVzZSByZW1vdGUgVG9hc3RlciBtb25pdG9yaW5nLCB5b3Ugc2hvdWxkIGRvCisgICAgICAgICAgICAgICAgYSBoZWFsdGggY2hlY2suCisgICAgICAgICAgICAgICAgVG8gZG8gdGhpcywgcGluZyB0aGUgVG9hc3RlciBzZXJ2ZXIgdXNpbmcgdGhlIGZvbGxvd2luZyBjYWxsCisgICAgICAgICAgICAgICAgdG8gc2VlIGlmIGl0IGlzIHN0aWxsIGFsaXZlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cDovLzxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPi9oZWFsdGgKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHZhbHVlcyBmb3IgPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFuZCA8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgIElmIHRoZSBzZXJ2ZXIgaXMgYWxpdmUsIHlvdSB3aWxsIGdldCB0aGUgcmVzcG9uc2UgSFRNTDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshRE9DVFlQRSBodG1sJmd0OworICAgICAmbHQ7aHRtbCBsYW5nPSJlbiImZ3Q7CisgICAgICAgJmx0O2hlYWQmZ3Q7Jmx0O3RpdGxlJmd0O1RvYXN0ZXIgSGVhbHRoJmx0Oy90aXRsZSZndDsmbHQ7L2hlYWQmZ3Q7CisgICAgICAgJmx0O2JvZHkmZ3Q7T2smbHQ7L2JvZHkmZ3Q7CisgICAgICZsdDsvaHRtbCZndDsKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV0ZXJtaW5pbmctc3RhdHVzLW9mLWJ1aWxkcy1pbi1wcm9ncmVzcyc+CisgICAgICAgICAgICA8dGl0bGU+RGV0ZXJtaW5pbmcgU3RhdHVzIG9mIEJ1aWxkcyBpbiBQcm9ncmVzczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgYSBidWlsZAorICAgICAgICAgICAgICAgIGluIHByb2dyZXNzLgorICAgICAgICAgICAgICAgIFRvIGdldCB0aGUgc3RhdHVzIG9mIHBlbmRpbmcgYnVpbGRzLCB1c2UgdGhlIGZvbGxvd2luZyBjYWxsOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cDovLzxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPi90b2FzdGVyZ3VpL2FwaS9idWlsZGluZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdmFsdWVzIGZvciA8cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBpcyBhIEpTT04gZmlsZSB0aGF0IGl0ZW1pemVzIGFsbCBidWlsZHMgaW4KKyAgICAgICAgICAgICAgICBwcm9ncmVzcy4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgaW5jbHVkZXMgdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBlYWNoCisgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBidWlsZCBzdGFydGVkIGFzIHdlbGwgYXMgdGhlIHByb2dyZXNzIG9mIHRoZQorICAgICAgICAgICAgICAgIGNsb25pbmcsIHBhcnNpbmcsIGFuZCB0YXNrIGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZm9yIGEgYnVpbGQgaW4gcHJvZ3Jlc3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB7ImNvdW50IjogMSwKKyAgICAgICJidWlsZGluZyI6IFsKKyAgICAgICAgeyJtYWNoaW5lIjogImJlYWdsZWJvbmUiLAorICAgICAgICAgICAic2Vjb25kcyI6ICI0NjMuODY5IiwKKyAgICAgICAgICAgInRhc2siOiAiOTI3OjIzODQiLAorICAgICAgICAgICAiZGlzdHJvIjogInBva3kiLAorICAgICAgICAgICAiY2xvbmUiOiAiMToxIiwKKyAgICAgICAgICAgImlkIjogMiwKKyAgICAgICAgICAgInN0YXJ0IjogIjIwMTctMDktMjJUMDk6MzE6NDQuODg3WiIsCisgICAgICAgICAgICJuYW1lIjogIjIwMTcwOTIyMDkzMjAwIiwKKyAgICAgICAgICAgInBhcnNlIjogIjgxODo4MTgiLAorICAgICAgICAgICAicHJvamVjdCI6ICJteV9yb2NrbyIsCisgICAgICAgICAgICJ0YXJnZXQiOiAiY29yZS1pbWFnZS1taW5pbWFsIgorICAgICAgICAgICB9XQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBKU09OIGRhdGEgZm9yIHRoaXMgcXVlcnkgaXMgcmV0dXJuZWQgaW4gYSBzaW5nbGUgbGluZS4KKyAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSB0aGUgbGluZSBoYXMgYmVlbiBhcnRpZmljaWFsbHkgc3BsaXQgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NoZWNraW5nLXN0YXR1cy1vZi1idWlsZHMtY29tcGxldGVkJz4KKyAgICAgICAgICAgIDx0aXRsZT5DaGVja2luZyBTdGF0dXMgb2YgQnVpbGRzIENvbXBsZXRlZDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgYSBidWlsZCBpcyBjb21wbGV0ZWQsIHlvdSBnZXQgdGhlIHN0YXR1cyB3aGVuIHlvdSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNhbGw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+L3RvYXN0ZXJndWkvYXBpL2J1aWxkcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdmFsdWVzIGZvciA8cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBpcyBhIEpTT04gZmlsZSB0aGF0IGl0ZW1pemVzIGFsbCBjb21wbGV0ZSBidWlsZHMsCisgICAgICAgICAgICAgICAgYW5kIGluY2x1ZGVzIGJ1aWxkIHN1bW1hcnkgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBzYW1wbGUgb3V0cHV0IGZvciBhIGNvbXBsZXRlZCBidWlsZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHsiY291bnQiOiAxLAorICAgICAgImJ1aWxkcyI6IFsKKyAgICAgICAgeyJkaXN0cm8iOiAicG9reSIsCisgICAgICAgICAgICJlcnJvcnMiOiAwLAorICAgICAgICAgICAibWFjaGluZSI6CisgICAgICAgICAgICJiZWFnbGVib25lIiwKKyAgICAgICAgICAgInByb2plY3QiOiAibXlfcm9ja28iLAorICAgICAgICAgICAic3RvcCI6ICIyMDE3LTA5LTIyVDA5OjI2OjM2LjAxN1oiLAorICAgICAgICAgICAidGFyZ2V0IjogInF1aWx0LW5hdGl2ZSIsCisgICAgICAgICAgICJzZWNvbmRzIjogIjc4LjE5MyIsCisgICAgICAgICAgICJvdXRjb21lIjogIlN1Y2NlZWRlZCIsCisgICAgICAgICAgICJpZCI6IDEsCisgICAgICAgICAgICJzdGFydCI6ICIyMDE3LTA5LTIyVDA5OjI1OjE3LjgyNFoiLAorICAgICAgICAgICAid2FybmluZ3MiOiAxLAorICAgICAgICAgICAibmFtZSI6ICIyMDE3MDkyMjA5MjYxOCIKKyAgICAgICAgICAgfV0KKyAgICAgfQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgSlNPTiBkYXRhIGZvciB0aGlzIHF1ZXJ5IGlzIHJldHVybmVkIGluIGEgc2luZ2xlIGxpbmUuCisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgdGhlIGxpbmUgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IHNwbGl0IGZvciByZWFkYWJpbGl0eS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXRlcm1pbmluZy1zdGF0dXMtb2YtYS1zcGVjaWZpYy1idWlsZCc+CisgICAgICAgICAgICA8dGl0bGU+RGV0ZXJtaW5pbmcgU3RhdHVzIG9mIGEgU3BlY2lmaWMgQnVpbGQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgc3RhdHVzIG9mIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICBUbyBnZXQgdGhlIHN0YXR1cyBvZiBhIHNwZWNpZmljIGJ1aWxkLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgIGNhbGw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+L3RvYXN0ZXJndWkvYXBpL2J1aWxkLzxyZXBsYWNlYWJsZT5JRDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB2YWx1ZXMgZm9yIDxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT4sCisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPiwgYW5kIDxyZXBsYWNlYWJsZT5JRDwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgdmFsdWUgZm9yIDxyZXBsYWNlYWJsZT5JRDwvcmVwbGFjZWFibGU+IGZyb20gdGhlCisgICAgICAgICAgICAgICAgQnVpbGRzIENvbXBsZXRlZCBxdWVyeS4gU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGVja2luZy1zdGF0dXMtb2YtYnVpbGRzLWNvbXBsZXRlZCc+Q2hlY2tpbmcgU3RhdHVzIG9mIEJ1aWxkcyBDb21wbGV0ZWQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgaXMgYSBKU09OIGZpbGUgdGhhdCBpdGVtaXplcyB0aGUgc3BlY2lmaWMgYnVpbGQKKyAgICAgICAgICAgICAgICBhbmQgaW5jbHVkZXMgYnVpbGQgc3VtbWFyeSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZm9yIGEgc3BlY2lmaWMgYnVpbGQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB7ImJ1aWxkIjoKKyAgICAgICB7ImRpc3RybyI6ICJwb2t5IiwKKyAgICAgICAgImVycm9ycyI6IDAsCisgICAgICAgICJtYWNoaW5lIjogImJlYWdsZWJvbmUiLAorICAgICAgICAicHJvamVjdCI6ICJteV9yb2NrbyIsCisgICAgICAgICJzdG9wIjogIjIwMTctMDktMjJUMDk6MjY6MzYuMDE3WiIsCisgICAgICAgICJ0YXJnZXQiOiAicXVpbHQtbmF0aXZlIiwKKyAgICAgICAgInNlY29uZHMiOiAiNzguMTkzIiwKKyAgICAgICAgIm91dGNvbWUiOiAiU3VjY2VlZGVkIiwKKyAgICAgICAgImlkIjogMSwKKyAgICAgICAgInN0YXJ0IjogIjIwMTctMDktMjJUMDk6MjU6MTcuODI0WiIsCisgICAgICAgICJ3YXJuaW5ncyI6IDEsCisgICAgICAgICJuYW1lIjogIjIwMTcwOTIyMDkyNjE4IiwKKyAgICAgICAgImNvb2tlcl9sb2ciOiAiL29wdC91c2VyL3Bva3kvYnVpbGQtdG9hc3Rlci0yL3RtcC9sb2cvY29va2VyL2JlYWdsZWJvbmUvYnVpbGRfMjAxNzA5MjJfMDIyNjA3Ljk5MS5sb2ciCisgICAgICAgIH0KKyAgICAgfQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgSlNPTiBkYXRhIGZvciB0aGlzIHF1ZXJ5IGlzIHJldHVybmVkIGluIGEgc2luZ2xlIGxpbmUuCisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgdGhlIGxpbmUgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IHNwbGl0IGZvciByZWFkYWJpbGl0eS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLXVzZWZ1bC1jb21tYW5kcyc+CisgICAgICAgIDx0aXRsZT5Vc2VmdWwgQ29tbWFuZHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIHdlYiB1c2VyIGludGVyZmFjZSBhbmQgdGhlIHNjcmlwdHMgdGhhdCBzdGFydAorICAgICAgICAgICAgYW5kIHN0b3AgVG9hc3RlciwgY29tbWFuZC1saW5lIGNvbW1hbmRzIGV4aXN0IHRocm91Z2ggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gbWFuYWdlbWVudCBzY3JpcHQuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgZ2VuZXJhbCBkb2N1bWVudGF0aW9uIG9uCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gYXQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS43L3RvcGljcy9zZXR0aW5ncy8nPkRqYW5nbzwvdWxpbms+CisgICAgICAgICAgICBzaXRlLgorICAgICAgICAgICAgSG93ZXZlciwgc2V2ZXJhbCA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgaGF2ZSBiZWVuCisgICAgICAgICAgICBjcmVhdGVkIHRoYXQgYXJlIHNwZWNpZmljIHRvIFRvYXN0ZXIgYW5kIGFyZSB1c2VkIHRvIGNvbnRyb2wKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIGJhY2stZW5kIHRhc2tzLgorICAgICAgICAgICAgWW91IGNhbiBsb2NhdGUgdGhlc2UgY29tbWFuZHMgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGF0CisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9saWIvbWFuYWdlLnB5PC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZG9jdW1lbnRzIHRob3NlIGNvbW1hbmRzLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPiBjb21tYW5kcyBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIHlvdSBtdXN0IGJlIHN1cmUgdGhhdCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGRpcmVjdG9yeSBpcyBzZXQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkgYWxsb3dzIFRvYXN0ZXIgdG8gZmluZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyLnNxbGl0ZTwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG5vbi1kZWZhdWx0IGRhdGFiYXNlIGNvbmZpZ3VyYXRpb25zLCBpdCBpcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gZG8gc28sIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXJtYWluL3NldHRpbmdzLnB5PC9maWxlbmFtZT4gZmlsZSBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGRhdGFiYXNlIGJhY2tlbmQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWNvbW1hbmQtYnVpbGRzbGlzdCc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkc2xpc3Q8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YnVpbGRzbGlzdDwvZmlsZW5hbWU+IGNvbW1hbmQgbGlzdHMgYWxsIGJ1aWxkcworICAgICAgICAgICAgICAgIHRoYXQgVG9hc3RlciBoYXMgcmVjb3JkZWQuCisgICAgICAgICAgICAgICAgQWNjZXNzIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UvbGliL3RvYXN0ZXIvbWFuYWdlLnB5IGJ1aWxkc2xpc3QKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgcmV0dXJucyBhIGxpc3QsIHdoaWNoIGluY2x1ZGVzIG51bWVyaWMKKyAgICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbnMsIG9mIHRoZSBidWlsZHMgdGhhdCBUb2FzdGVyIGhhcyByZWNvcmRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICBjdXJyZW50IGRhdGFiYXNlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBydW4gdGhlIDxmaWxlbmFtZT5idWlsZHNsaXN0PC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgIGZpcnN0IHRvIGlkZW50aWZ5IGV4aXN0aW5nIGJ1aWxkcyBpbiB0aGUgZGF0YWJhc2UgYmVmb3JlCisgICAgICAgICAgICAgICAgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1jb21tYW5kLWJ1aWxkZGVsZXRlJz48ZmlsZW5hbWU+YnVpbGRkZWxldGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGFzc3VtZXMgZGVmYXVsdCByZXBvc2l0b3J5IGFuZCBidWlsZAorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgcHl0aG9uIC4uL2JpdGJha2UvbGliL3RvYXN0ZXIvbWFuYWdlLnB5IGJ1aWxkc2xpc3QKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSWYgeW91ciBUb2FzdGVyIGRhdGFiYXNlIGhhZCBvbmx5IG9uZSBidWlsZCwgdGhlIGFib3ZlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkc2xpc3Q8L2ZpbGVuYW1lPiBjb21tYW5kIHdvdWxkIHJldHVybiBzb21ldGhpbmcKKyAgICAgICAgICAgICAgICBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAxOiBxZW11eDg2IHBva3kgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItY29tbWFuZC1idWlsZGRlbGV0ZSc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkZGVsZXRlPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkZGVsZXRlPC9maWxlbmFtZT4gY29tbWFuZCBkZWxldGVzIGRhdGEKKyAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggYSBidWlsZC4KKyAgICAgICAgICAgICAgICBBY2Nlc3MgdGhlIGNvbW1hbmQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgYnVpbGRkZWxldGUgPHJlcGxhY2VhYmxlPmJ1aWxkX2lkPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgZGVsZXRlcyBhbGwgdGhlIGJ1aWxkIGRhdGEgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVpbGRfaWQ8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgdXNlZnVsIGZvciByZW1vdmluZyBvbGQgYW5kIHVudXNlZCBkYXRhIGZyb20KKyAgICAgICAgICAgICAgICB0aGUgZGF0YWJhc2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFByaW9yIHRvIHJ1bm5pbmcgdGhlIDxmaWxlbmFtZT5idWlsZGRlbGV0ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29tbWFuZCwgeW91IG5lZWQgdG8gZ2V0IHRoZSBJRCBhc3NvY2lhdGVkIHdpdGggYnVpbGRzCisgICAgICAgICAgICAgICAgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1jb21tYW5kLWJ1aWxkc2xpc3QnPjxmaWxlbmFtZT5idWlsZHNsaXN0PC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWNvbW1hbmQtcGVyZic+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnBlcmY8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGVyZjwvZmlsZW5hbWU+IGNvbW1hbmQgbWVhc3VyZXMgVG9hc3RlcgorICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLgorICAgICAgICAgICAgICAgIEFjY2VzcyB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBwZXJmCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGEgc2FuaXR5IGNoZWNrIHRoYXQgcmV0dXJucyBwYWdlIGxvYWRpbmcKKyAgICAgICAgICAgICAgICB0aW1lcyBpbiBvcmRlciB0byBpZGVudGlmeSBwZXJmb3JtYW5jZSBwcm9ibGVtcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWNvbW1hbmQtY2hlY2tzZXR0aW5ncyc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmNoZWNrc2V0dGluZ3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+IGNvbW1hbmQgdmVyaWZpZXMKKyAgICAgICAgICAgICAgICBleGlzdGluZyBUb2FzdGVyIHNldHRpbmdzLgorICAgICAgICAgICAgICAgIEFjY2VzcyB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBjaGVja3NldHRpbmdzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRvYXN0ZXIgdXNlcyBzZXR0aW5ncyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICBkYXRhYmFzZSB0byBjb25maWd1cmUgdGhlIGJ1aWxkaW5nIHRhc2tzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+IGNvbW1hbmQgdmVyaWZpZXMgdGhhdAorICAgICAgICAgICAgICAgIHRoZSBkYXRhYmFzZSBzZXR0aW5ncyBhcmUgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSBoYXZlCisgICAgICAgICAgICAgICAgdGhlIG1pbmltYWwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHN0YXJ0IGEgYnVpbGQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGUgPGZpbGVuYW1lPmNoZWNrc2V0dGluZ3M8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgdG8gd29yaywgdGhlIGRhdGFiYXNlIG11c3QgYmUgY29ycmVjdGx5IHNldCB1cCBhbmQgbm90IGhhdmUKKyAgICAgICAgICAgICAgICBleGlzdGluZyBkYXRhLgorICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgdGhlIGRhdGFiYXNlIGlzIHJlYWR5LCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmHigItnZS5weSBzeW5jZGIKKyAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmHigItnZS5weSBtaWdyYXRlIG9ybQorICAgICAkIGJpdGJha2UvbGliL3RvYXN0ZXIvbWFuYeKAi2dlLnB5IG1pZ3JhdGUgYmxkY29udHJvbAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZXNlIGNvbW1hbmRzLCB5b3UgY2FuIHJ1biB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndG9hc3Rlci1jb21tYW5kLXJ1bmJ1aWxkcyc+CisgICAgICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnJ1bmJ1aWxkczwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ydW5idWlsZHM8L2ZpbGVuYW1lPiBjb21tYW5kIGxhdW5jaGVzCisgICAgICAgICAgICAgICAgc2NoZWR1bGVkIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBBY2Nlc3MgdGhlIGNvbW1hbmQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgcnVuYnVpbGRzCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cnVuYnVpbGRzPC9maWxlbmFtZT4gY29tbWFuZCBjaGVja3MgaWYKKyAgICAgICAgICAgICAgICBzY2hlZHVsZWQgYnVpbGRzIGV4aXN0IGluIHRoZSBkYXRhYmFzZSBhbmQgdGhlbiBsYXVuY2hlcyB0aGVtCisgICAgICAgICAgICAgICAgcGVyIHNjaGVkdWxlLgorICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIHJldHVybnMgYWZ0ZXIgdGhlIGJ1aWxkcyBzdGFydCBidXQgYmVmb3JlIHRoZXkKKyAgICAgICAgICAgICAgICBjb21wbGV0ZS4KKyAgICAgICAgICAgICAgICBUaGUgVG9hc3RlciBMb2dnaW5nIEludGVyZmFjZSByZWNvcmRzIGFuZCB1cGRhdGVzIHRoZSBkYXRhYmFzZQorICAgICAgICAgICAgICAgIHdoZW4gdGhlIGJ1aWxkcyBjb21wbGV0ZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlLnJzdAppbmRleCA5N2M1YWY2Li4wMWMwZGNlIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS5yc3QKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogLi4gU2V0IGRlZmF1bHQgcHlnbWVudCBoaWdobGlnaHRpbmcgdG8gJ3NoZWxsJyBmb3IgdGhpcyBkb2N1bWVudAogLi4gaGlnaGxpZ2h0Ojogc2hlbGwKIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKQEAgLTAsMCArMSw4NDQgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Cis8IS0tU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSy0tPgorCis8Y2hhcHRlciBpZD0ndG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZSc+CisKKzx0aXRsZT5TZXR0aW5nIFVwIGFuZCBVc2luZyBUb2FzdGVyPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSdzdGFydGluZy10b2FzdGVyLWZvci1sb2NhbC1kZXZlbG9wbWVudCc+CisgICAgICAgIDx0aXRsZT5TdGFydGluZyBUb2FzdGVyIGZvciBMb2NhbCBEZXZlbG9wbWVudDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHNldCB1cCB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaW5zdGFsbGVkIHRoZQorICAgICAgICAgICAgVG9hc3RlciBzeXN0ZW0gZGVwZW5kZW5jaWVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0b2FzdGVyLW1hbnVhbC1zdGFydCc+UHJlcGFyaW5nIHRvIFVzZSBUb2FzdGVyPC9saW5rPiIKKyAgICAgICAgICAgIGNoYXB0ZXIsIHlvdSBhcmUgcmVhZHkgdG8gc3RhcnQgVG9hc3Rlci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTmF2aWdhdGUgdG8gdGhlIHJvb3Qgb2YgeW91cgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBwb2t5CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBPbmNlIGluIHRoYXQgZGlyZWN0b3J5LCBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIE5leHQsIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeSAoZS5nLgorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvYnVpbGQ8L2ZpbGVuYW1lPiksIHN0YXJ0IFRvYXN0ZXIgdXNpbmcgdGhpcworICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgdG9hc3RlciBzdGFydAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgWW91IGNhbiBub3cgcnVuIHlvdXIgYnVpbGRzIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgb3Igd2l0aAorICAgICAgICAgICAgVG9hc3RlciBhcyBleHBsYWluZWQgaW4gc2VjdGlvbgorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLXRoZS10b2FzdGVyLXdlYi1pbnRlcmZhY2UnPlVzaW5nIHRoZSBUb2FzdGVyIFdlYiBJbnRlcmZhY2U8L2xpbms+Ii4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gYWNjZXNzIHRoZSBUb2FzdGVyIHdlYiBpbnRlcmZhY2UsIG9wZW4geW91ciBmYXZvcml0ZQorICAgICAgICAgICAgYnJvd3NlciBhbmQgZW50ZXIgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy1hLWRpZmZlcmVudC1wb3J0Jz4KKyAgICAgICAgPHRpdGxlPlNldHRpbmcgYSBEaWZmZXJlbnQgUG9ydDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCBUb2FzdGVyIHN0YXJ0cyBvbiBwb3J0IDgwMDAuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPldFQlBPUlQ8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIgdG8KKyAgICAgICAgICAgIHNldCBhIGRpZmZlcmVudCBwb3J0LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBzZXRzIHRoZSBwb3J0IHRvICI4NDAwIjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgdG9hc3RlciBzdGFydCB3ZWJwb3J0PTg0MDAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRvYXN0ZXItd2l0aG91dC1hLXdlYi1zZXJ2ZXInPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBUb2FzdGVyIFdpdGhvdXQgYSBXZWIgU2VydmVyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gc3RhcnQgYSBUb2FzdGVyIGVudmlyb25tZW50IHdpdGhvdXQgc3RhcnRpbmcgaXRzCisgICAgICAgICAgICB3ZWIgc2VydmVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDYXB0dXJpbmcgYSBjb21tYW5kLWxpbmUgYnVpbGQncyBzdGF0aXN0aWNzIGludG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgZGF0YWJhc2UgZm9yIGV4YW1pbmF0aW9uIGxhdGVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENhcHR1cmluZyBhIGNvbW1hbmQtbGluZSBidWlsZCdzIHN0YXRpc3RpY3Mgd2hlbgorICAgICAgICAgICAgICAgICAgICB0aGUgVG9hc3RlciBzZXJ2ZXIgaXMgYWxyZWFkeSBydW5uaW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhhdmluZyBvbmUgaW5zdGFuY2Ugb2YgdGhlIFRvYXN0ZXIgd2ViIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICB0cmFjayBhbmQgY2FwdHVyZSBtdWx0aXBsZSBjb21tYW5kLWxpbmUgYnVpbGRzLAorICAgICAgICAgICAgICAgICAgICB3aGVyZSBlYWNoIGJ1aWxkIGlzIHN0YXJ0ZWQgaW4gaXRzIG93biAibm93ZWIiCisgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3cgaG93IHRvIHN0YXJ0IGEgVG9hc3RlciBlbnZpcm9ubWVudAorICAgICAgICAgICAgd2l0aG91dCBzdGFydGluZyBpdHMgd2ViIHNlcnZlciwgcGVyZm9ybSBCaXRCYWtlIG9wZXJhdGlvbnMsCisgICAgICAgICAgICBhbmQgdGhlbiBzaHV0IGRvd24gdGhlIFRvYXN0ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgeW91IGNhbiBjbG9zZSB0aGUgVG9hc3RlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEJlZm9yZSBjbG9zaW5nIHRoZSBlbnZpcm9ubWVudCwgaG93ZXZlciwgeW91IHNob3VsZCBhbGxvdyBhIGZldworICAgICAgICAgICAgbWludXRlcyB0byBlbnN1cmUgdGhlIGNvbXBsZXRlIHRyYW5zZmVyIG9mIGl0cyBCaXRCYWtlIGJ1aWxkCisgICAgICAgICAgICBzdGF0aXN0aWNzIHRvIHRoZSBUb2FzdGVyIGRhdGFiYXNlLgorICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBzZXBhcmF0ZSBUb2FzdGVyIHdlYiBzZXJ2ZXIgaW5zdGFuY2UgcnVubmluZywgeW91CisgICAgICAgICAgICBjYW4gd2F0Y2ggdGhpcyBjb21tYW5kLWxpbmUgYnVpbGQncyBwcm9ncmVzcyBhbmQgZXhhbWluZSB0aGUKKyAgICAgICAgICAgIHJlc3VsdHMgYXMgc29vbiBhcyB0aGV5IGFyZSBwb3N0ZWQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIHRvYXN0ZXIgc3RhcnQgbm93ZWIKKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0b3AKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRvYXN0ZXItd2l0aG91dC1hLWJ1aWxkLXNlcnZlcic+CisgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIFRvYXN0ZXIgV2l0aG91dCBhIEJ1aWxkIFNlcnZlcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIHN0YXJ0IGEgVG9hc3RlciBlbnZpcm9ubWVudCB3aXRoIHRoZQorICAgICAgICAgICAgIk5ldyBQcm9qZWN0cyIgZmVhdHVyZSBkaXNhYmxlZC4KKyAgICAgICAgICAgIERvaW5nIHNvIGlzIHVzZWZ1bCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTaGFyaW5nIHlvdXIgYnVpbGQgcmVzdWx0cyBvdmVyIHRoZSB3ZWIgc2VydmVyIHdoaWxlCisgICAgICAgICAgICAgICAgICAgIGJsb2NraW5nIG90aGVycyBmcm9tIHN0YXJ0aW5nIGJ1aWxkcyBvbiB5b3VyIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWxsb3dpbmcgb25seSBsb2NhbCBjb21tYW5kLWxpbmUgYnVpbGRzIHRvIGJlIGNhcHR1cmVkCisgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIFRvYXN0ZXIgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHNldCB1cCBUb2FzdGVyIHdpdGhvdXQgYQorICAgICAgICAgICAgYnVpbGQgc2VydmVyOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0IG5vYnVpbGQgd2VicG9ydD08cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC1leHRlcm5hbC1hY2Nlc3MnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyB1cCBFeHRlcm5hbCBBY2Nlc3M8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgVG9hc3RlciBiaW5kcyB0byB0aGUgbG9vcCBiYWNrIGFkZHJlc3MKKyAgICAgICAgICAgIChpLmUuIGxvY2FsaG9zdCksIHdoaWNoIGRvZXMgbm90IGFsbG93IGFjY2VzcyBmcm9tCisgICAgICAgICAgICBleHRlcm5hbCBob3N0cy4gVG8gYWxsb3cgZXh0ZXJuYWwgYWNjZXNzLCB1c2UgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+V0VCUE9SVDwvZmlsZW5hbWU+IHBhcmFtZXRlciB0byBvcGVuIGFuCisgICAgICAgICAgICBhZGRyZXNzIHRoYXQgY29ubmVjdHMgdG8gdGhlIG5ldHdvcmssIHNwZWNpZmljYWxseSB0aGUKKyAgICAgICAgICAgIElQIGFkZHJlc3MgdGhhdCB5b3VyIE5JQyB1c2VzIHRvIGNvbm5lY3QgdG8gdGhlIG5ldHdvcmsuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gYmluZCB0byBhbGwgSVAgYWRkcmVzc2VzIHRoZSBjb21wdXRlcgorICAgICAgICAgICAgc3VwcG9ydHMgYnkgdXNpbmcgdGhlIHNob3J0Y3V0CisgICAgICAgICAgICAiMC4wLjAuMDo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+Ii4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGJpbmRzIHRvIGFsbCBJUCBhZGRyZXNzZXMgb24gdGhlCisgICAgICAgICAgICBob3N0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0IHdlYnBvcnQ9MC4wLjAuMDo4NDAwCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgYmluZHMgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIG9uIHRoZSBob3N0J3MKKyAgICAgICAgICAgIE5JQzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgdG9hc3RlciBzdGFydCB3ZWJwb3J0PTE5Mi4xNjguMS4xOjg0MDAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0aGUtZGlyZWN0b3J5LWZvci1jbG9uaW5nLWxheWVycyc+CisgICAgICAgIDx0aXRsZT5UaGUgRGlyZWN0b3J5IGZvciBDbG9uaW5nIExheWVyczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUb2FzdGVyIGNyZWF0ZXMgYSA8ZmlsZW5hbWU+X3RvYXN0ZXJfY2xvbmVzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSBpbnNpZGUgeW91ciBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSB0byBjbG9uZSBhbnkgbGF5ZXJzCisgICAgICAgICAgICBuZWVkZWQgZm9yIHlvdXIgYnVpbGRzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3Ugd291bGQgbGlrZSBhbGwgb2YgeW91ciBUb2FzdGVyIHJlbGF0ZWQKKyAgICAgICAgICAgIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBiZSBpbiBhIHBhcnRpY3VsYXIgbG9jYXRpb24gb3RoZXIgdGhhbgorICAgICAgICAgICAgdGhlIGRlZmF1bHQsIHlvdSBjYW4gc2V0IHRoZSA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHdoaWNoIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB5b3VyIGN1cnJlbnQKKyAgICAgICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgU2V0dGluZyB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGNhdXNlcyBUb2FzdGVyIHRvIGNyZWF0ZSBhbmQgdXNlCisgICAgICAgICAgICA8ZmlsZW5hbWU+JFRPQVNURVJfRElSLi9fdG9hc3Rlcl9jbG9uZXM8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLXRoZS1idWlsZC1kaXJlY3RvcnknPgorICAgICAgICA8dGl0bGU+VGhlIEJ1aWxkIERpcmVjdG9yeTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUb2FzdGVyIGNyZWF0ZXMgYSBidWlsZCBkaXJlY3Rvcnkgd2l0aGluIHlvdXIgU291cmNlCisgICAgICAgICAgICBEaXJlY3RvcnkgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgdG8gZXhlY3V0ZQorICAgICAgICAgICAgdGhlIGJ1aWxkcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IHdvdWxkIGxpa2UgYWxsIG9mIHlvdXIgVG9hc3RlciByZWxhdGVkIGZpbGVzCisgICAgICAgICAgICBhbmQgZGlyZWN0b3JpZXMgdG8gYmUgaW4gYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLCB5b3UgY2FuIHNldAorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLAorICAgICAgICAgICAgd2hpY2ggdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIFNldHRpbmcgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYXVzZXMgVG9hc3RlciB0byB1c2UKKyAgICAgICAgICAgIDxmaWxlbmFtZT4kVE9BU1RFUl9ESVIvYnVpbGQ8L2ZpbGVuYW1lPiBhcyB0aGUgYnVpbGQgZGlyZWN0b3J5LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItY3JlYXRpbmctYS1kamFuZ28tc3VwZXItdXNlcic+CisgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIERqYW5nbyBTdXBlcnVzZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG9hc3RlciBpcyBidWlsdCBvbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRqYW5nb3Byb2plY3QuY29tLyc+RGphbmdvIGZyYW1ld29yazwvdWxpbms+LgorICAgICAgICAgICAgRGphbmdvIHByb3ZpZGVzIGFuIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSB5b3UgY2FuIHVzZQorICAgICAgICAgICAgdG8gZWRpdCBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gYWNjZXNzIHRoZSBEamFuZ28gYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlLCB5b3UgbXVzdAorICAgICAgICAgICAgY3JlYXRlIGEgc3VwZXJ1c2VyIGJ5IGZvbGxvd2luZyB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgSWYgeW91IHVzZWQgPGZpbGVuYW1lPnBpcDM8L2ZpbGVuYW1lPiwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkLCB0byBzZXQgdXAgdGhlIFRvYXN0ZXIgc3lzdGVtIGRlcGVuZGVuY2llcywKKyAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIGJlIHN1cmUgdGhlIGxvY2FsIHVzZXIgcGF0aCBpcyBpbiB5b3VyCisgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGxpc3QuCisgICAgICAgICAgICAgICAgICBUbyBhcHBlbmQgdGhlIHBpcDMgbG9jYWwgdXNlciBwYXRoLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgZXhwb3J0IFBBVEg9JFBBVEg6JEhPTUUvLmxvY2FsL2JpbgorICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBUb2FzdGVyIGRhdGFiYXNlLAorICAgICAgICAgICAgICAgICAgd2hpY2ggYnkgZGVmYXVsdCBpcyB0aGUKKyAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICBpbnZva2UgdGhlIDxmaWxlbmFtZT5jcmVhdGVzdXBlcnVzZXI8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAkIC4uL2JpdGJha2UvbGliL3RvYXN0ZXIvbWFuYWdlLnB5IGNyZWF0ZXN1cGVydXNlcgorICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgIERqYW5nbyBwcm9tcHRzIHlvdSBmb3IgdGhlIHVzZXJuYW1lLCB3aGljaCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgcHJvdmlkZS4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICBEamFuZ28gcHJvbXB0cyB5b3UgZm9yIGFuIGVtYWlsIGFkZHJlc3MsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICBvcHRpb25hbC4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICBEamFuZ28gcHJvbXB0cyB5b3UgZm9yIGEgcGFzc3dvcmQsIHdoaWNoIHlvdSBtdXN0IHByb3ZpZGUuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgRGphbmdvIHByb21wdHMgeW91IHRvIHJlLWVudGVyIHlvdXIgcGFzc3dvcmQgZm9yIHZlcmlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgQWZ0ZXIgY29tcGxldGluZyB0aGVzZSBzdGVwcywgdGhlIGZvbGxvd2luZyBjb25maXJtYXRpb24gbWVzc2FnZQorICAgICAgICAgIGFwcGVhcnM6CisgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgU3VwZXJ1c2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgICAgQ3JlYXRpbmcgYSBzdXBlcnVzZXIgYWxsb3dzIHlvdSB0byBhY2Nlc3MgdGhlIERqYW5nbyBhZG1pbmlzdHJhdGlvbgorICAgICAgICAgIGludGVyZmFjZSB0aHJvdWdoIGEgYnJvd3Nlci4KKyAgICAgICAgICBUaGUgVVJMIGZvciB0aGlzIGludGVyZmFjZSBpcyB0aGUgc2FtZSBhcyB0aGUgVVJMIHVzZWQgZm9yIHRoZQorICAgICAgICAgIFRvYXN0ZXIgaW5zdGFuY2Ugd2l0aCAiL2FkbWluIiBvbiB0aGUgZW5kLgorICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIHJ1bm5pbmcgVG9hc3RlciBsb2NhbGx5LCB1c2UgdGhlCisgICAgICAgICAgZm9sbG93aW5nIFVSTDoKKyAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYWRtaW4KKyAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIERqYW5nbyBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UgdG8gc2V0IFRvYXN0ZXIKKyAgICAgICAgICBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgc3VjaCBhcyB0aGUgYnVpbGQgZGlyZWN0b3J5LCBsYXllciBzb3VyY2VzLAorICAgICAgICAgIGRlZmF1bHQgdmFyaWFibGUgdmFsdWVzLCBhbmQgQml0QmFrZSB2ZXJzaW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLXNldHRpbmctdXAtYS1wcm9kdWN0aW9uLWluc3RhbmNlLW9mLXRvYXN0ZXInPgorICAgICAgPHRpdGxlPlNldHRpbmcgVXAgYSBQcm9kdWN0aW9uIEluc3RhbmNlIG9mIFRvYXN0ZXI8L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgICBZb3UgY2FuIHVzZSBhIHByb2R1Y3Rpb24gaW5zdGFuY2Ugb2YgVG9hc3RlciB0byBzaGFyZSB0aGUKKyAgICAgICAgICBUb2FzdGVyIGluc3RhbmNlIHdpdGggcmVtb3RlIHVzZXJzLCBtdWx0aXBsZSB1c2Vycywgb3IgYm90aC4KKyAgICAgICAgICBUaGUgcHJvZHVjdGlvbiBpbnN0YW5jZSBpcyBhbHNvIHRoZSBzZXR1cCB0aGF0IGNhbiBoYW5kbGUKKyAgICAgICAgICBoZWF2aWVyIGxvYWRzIG9uIHRoZSB3ZWIgc2VydmljZS4KKyAgICAgICAgICBVc2UgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIHRvIHNldCB1cAorICAgICAgICAgIFRvYXN0ZXIgdG8gcnVuIGJ1aWxkcyB0aHJvdWdoIHRoZSBUb2FzdGVyIHdlYiBpbnRlcmZhY2UuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLXByb2R1Y3Rpb24taW5zdGFuY2UtcmVxdWlyZW1lbnRzJz4KKyAgICAgICAgICA8dGl0bGU+UmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBtZWV0IHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzOgorICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNvbXBseSB3aXRoIGFsbCBBcGFjaGUsCisgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bW9kLXdzZ2k8L2ZpbGVuYW1lPiwgYW5kIE15c3FsIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIEhhdmUgYWxsIHRoZSBidWlsZCByZXF1aXJlbWVudHMgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0b2FzdGVyLW1hbnVhbC1zdGFydCc+UHJlcGFyaW5nIHRvIFVzZSBUb2FzdGVyPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIEhhdmUgYW4gQXBhY2hlIHdlYnNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICBIYXZlIDxmaWxlbmFtZT5tb2Qtd3NnaTwvZmlsZW5hbWU+IGZvciB0aGUgQXBhY2hlCisgICAgICAgICAgICAgICAgICAgICAgd2Vic2VydmVyLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgTXlzcWwgZGF0YWJhc2Ugc2VydmVyLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgVWJ1bnR1IDE2LjA0LCBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGFwYWNoZTIgbGliYXBhY2hlMi1tb2Qtd3NnaS1weTMgbXlzcWwtc2VydmVyIHB5dGhvbjMtcGlwIGxpYm15c3FsY2xpZW50LWRldgorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIEZlZG9yYSAyNCBvciBhIFJlZEhhdCBkaXN0cmlidXRpb24sIHJ1bgorICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgJCBzdWRvIGRuZiBpbnN0YWxsIGh0dHBkIHB5dGhvbjMtbW9kX3dzZ2kgcHl0aG9uMy1waXAgbWFyaWFkYi1zZXJ2ZXIgbWFyaWFkYi1kZXZlbCBweXRob24zLWRldmVsCisgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgb3BlblNVU0UgTGVhcCA0Mi4xLCBydW4KKyAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBhcGFjaGUyIGFwYWNoZTItbW9kX3dzZ2ktcHl0aG9uMyBweXRob24zLXBpcCBtYXJpYWRiIG1hcmlhZGItY2xpZW50IHB5dGhvbjMtZGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItaW5zdGFsbGF0aW9uLXN0ZXBzJz4KKyAgICAgICAgICA8dGl0bGU+SW5zdGFsbGF0aW9uPC90aXRsZT4KKworICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBQZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gaW5zdGFsbCBUb2FzdGVyOgorICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIHRvYXN0ZXIgdXNlciBhbmQgc2V0IGl0cyBob21lIGRpcmVjdG9yeSB0bworICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdmFyL3d3dy90b2FzdGVyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICQgc3VkbyAvdXNyL3NiaW4vdXNlcmFkZCB0b2FzdGVyIC1tZCAvdmFyL3d3dy90b2FzdGVyIC1zIC9iaW4vZmFsc2UKKyAgICAkIHN1ZG8gc3UgLSB0b2FzdGVyIC1zIC9iaW4vYmFzaAorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICBDaGVja291dCBhIGNvcHkgb2YgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIHdlYiBzZXJ2ZXIgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGJlIHVzaW5nIDxmaWxlbmFtZT4vdmFyL3d3dy90b2FzdGVyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reQorICAgJCBnaXQgY2hlY2tvdXQgJkRJU1RST19OQU1FX05PX0NBUDsKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCBUb2FzdGVyCisgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIHVzaW5nIHRoZSAtLXVzZXIgZmxhZyB3aGljaAorICAgICAgICAgICAgICAgICAgICAgIGtlZXBzIHRoZSBQeXRob24gcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICBpc29sYXRlZCBmcm9tIHlvdXIgc3lzdGVtLXByb3ZpZGVkIHBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgY2QgL3Zhci93d3cvdG9hc3Rlci8KKyAgICQgcGlwMyBpbnN0YWxsIC0tdXNlciAtciAuL3Bva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKyAgICQgcGlwMyBpbnN0YWxsIC0tdXNlciBteXNxbGNsaWVudAorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSXNvbGF0aW5nIHRoZXNlIHBhY2thZ2VzIGlzIG5vdCByZXF1aXJlZCBidXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSdzCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlciB0byBpbnN0YWxsIHRoZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlIFRvYXN0ZXIgYnkgZWRpdGluZworICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdmFyL3d3dy90b2FzdGVyL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLyNkYXRhYmFzZXMnPkRBVEFCQVNFUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgIERBVEFCQVNFUyA9IHsKKyAgICAgICAnZGVmYXVsdCc6IHsKKyAgICAgICAgICAgJ0VOR0lORSc6ICdkamFuZ28uZGIuYmFja2VuZHMubXlzcWwnLAorICAgICAgICAgICAnTkFNRSc6ICd0b2FzdGVyX2RhdGEnLAorICAgICAgICAgICAnVVNFUic6ICd0b2FzdGVyJywKKyAgICAgICAgICAgJ1BBU1NXT1JEJzogJ3lvdXJwYXNzd29yZGhlcmUnLAorICAgICAgICAgICAnSE9TVCc6ICdsb2NhbGhvc3QnLAorICAgICAgICAgICAnUE9SVCc6ICczMzA2JywKKyAgICAgIH0KKyAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLyNzdGQ6c2V0dGluZy1TRUNSRVRfS0VZJz5TRUNSRVRfS0VZPC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICBTRUNSRVRfS0VZID0gJzxyZXBsYWNlYWJsZT55b3VyX3NlY3JldF9rZXk8L3JlcGxhY2VhYmxlPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLyNzdGQ6c2V0dGluZy1TVEFUSUNfUk9PVCc+U1RBVElDX1JPT1Q8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgIFNUQVRJQ19ST09UID0gJy92YXIvd3d3L3RvYXN0ZXIvc3RhdGljX2ZpbGVzLycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZGF0YWJhc2UgYW5kIHVzZXIgdG8gdGhlIDxmaWxlbmFtZT5teXNxbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIGRlZmluZWQgZWFybGllcjoKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAkIG15c3FsIC11IHJvb3QgLXAKKyAgIG15c3FsPiBDUkVBVEUgREFUQUJBU0UgdG9hc3Rlcl9kYXRhOworICAgbXlzcWw+IENSRUFURSBVU0VSICd0b2FzdGVyJ0AnbG9jYWxob3N0JyBpZGVudGlmaWVkIGJ5ICd5b3VycGFzc3dvcmRoZXJlJzsKKyAgIG15c3FsPiBHUkFOVCBhbGwgb24gdG9hc3Rlcl9kYXRhLiogdG8gJ3RvYXN0ZXInQCdsb2NhbGhvc3QnOworICAgbXlzcWw+IHF1aXQKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgR2V0IFRvYXN0ZXIgdG8gY3JlYXRlIHRoZSBkYXRhYmFzZSBzY2hlbWEsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBkYXRhLCBhbmQgZ2F0aGVyIHRoZSBzdGF0aWNhbGx5LXNlcnZlZCBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAkIGNkICAvdmFyL3d3dy90b2FzdGVyL3Bva3kvCisgICAkIC4vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgbWlncmF0ZQorICAgJCBUT0FTVEVSX0RJUj1gcHdkYCBURU1QTEFURUNPTkY9J3Bva3knIFwKKyAgICAgLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBjaGVja3NldHRpbmdzCisgICAkIC4vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgY29sbGVjdHN0YXRpYworICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgZnJvbSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgdGhlIDxmaWxlbmFtZT5taWdyYXRlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZXMgdGhlIGRhdGFiYXNlIHNjaGVtYSBjaGFuZ2VzIGhhdmUgcHJvcGFnYXRlZAorICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RseSAoaS5lLiBtaWdyYXRpb25zKS4KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV4dCBsaW5lIHNldHMgdGhlIFRvYXN0ZXIgcm9vdCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPiBhbmQgdGhlIGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFRvYXN0ZXIgY29uZmlndXJhdGlvbiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfQ09ORjwvZmlsZW5hbWU+LCB3aGljaCBpcyByZWxhdGl2ZSB0bworICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFsdWUgcmVmbGVjdHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgb2YgPGZpbGVuYW1lPnBva3kvLnRlbXBsYXRlY29uZjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0LCBzaG91bGQgaW5jbHVkZSB0aGUgc3RyaW5nICJwb2t5Ii4KKyAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVG9hc3RlciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjb25maWd1cmluZy10b2FzdGVyJz5Db25maWd1cmluZyBUb2FzdGVyPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgbGluZSBhbHNvIHJ1bnMgdGhlIDxmaWxlbmFtZT5jaGVja3NldHRpbmdzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB3aGljaCBjb25maWd1cmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgVG9hc3RlcgorICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgVGhlIFRvYXN0ZXIgcm9vdCBkaXJlY3RvcnkgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVzIHdoZXJlIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgb24gdGhlIGZpbGUgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBleGFtcGxlIGFib3ZlLAorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+IGlzIHNldCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgIC92YXIvd3d3L3RvYXN0ZXIvcG9reQorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgY2F1c2VzIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeSB0byBiZToKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CisgICAvdmFyL3d3dy90b2FzdGVyL3Bva3kvYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+RmluYWxseSwgdGhlIDxmaWxlbmFtZT5jb2xsZWN0c3RhdGljPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgIGlzIGEgRGphbmdvIGZyYW1ld29yayBjb21tYW5kIHRoYXQgY29sbGVjdHMgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY2FsbHkgc2VydmVkIGZpbGVzIGludG8gYSBkZXNpZ25hdGVkIGRpcmVjdG9yeSB0bworICAgICAgICAgICAgICAgICAgICAgIGJlIHNlcnZlZCB1cCBieSB0aGUgQXBhY2hlIHdlYiBzZXJ2ZXIgYXMgZGVmaW5lZCBieQorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFUSUNfUk9PVDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFRlc3QgYW5kL29yIHVzZSB0aGUgTXlzcWwgaW50ZWdyYXRpb24gd2l0aCBUb2FzdGVyJ3MKKyAgICAgICAgICAgICAgICAgICAgICBEamFuZ28gd2ViIHNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgY2FuIHN0YXJ0IHVwIHRoZSBub3JtYWwgVG9hc3RlcgorICAgICAgICAgICAgICAgICAgICAgIERqYW5nbyB3ZWIgc2VydmVyIHdpdGggdGhlIFRvYXN0ZXIgZGF0YWJhc2UgaW4gTXlzcWwuCisgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyB3ZWIgc2VydmVyIHRvIGNvbmZpcm0gdGhhdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgICAgICAgICAgICAgICBtaWdyYXRpb24gYW5kIGRhdGEgcG9wdWxhdGlvbiBmcm9tIHRoZSBMYXllciBJbmRleCBpcworICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIHN0YXJ0IHRoZSBkZWZhdWx0IFRvYXN0ZXIgRGphbmdvIHdlYiBzZXJ2ZXIgd2l0aAorICAgICAgICAgICAgICAgICAgICAgIHRoZSBUb2FzdGVyIGRhdGFiYXNlIG5vdyBpbiBNeXNxbCwgdXNlIHRoZSBzdGFuZGFyZAorICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgRGphbmdvIGlzIHN1ZmZpY2llbnQgZm9yIHlvdXIgcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIGl0IGZvciB5b3VyIHJlbGVhc2Ugc3lzdGVtIGFuZCBtaWdyYXRlIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgdG8gQXBhY2hlIGFzIHlvdXIgcmVxdWlyZW1lbnRzIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICBBZGQgYW4gQXBhY2hlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgVG9hc3RlciB0byB5b3VyIEFwYWNoZSB3ZWIKKyAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIncyBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4sIHB1dCB0aGUgZmlsZSBoZXJlOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgIC9ldGMvYXBhY2hlMi9jb25mLWF2YWlsYWJsZS90b2FzdGVyLmNvbmYKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBGZWRvcmEgb3IgUmVkSGF0LCBwdXQgaXQgaGVyZToKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAvZXRjL2h0dHBkL2NvbmYuZC90b2FzdGVyLmNvbmYKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBPcGVuU1VTRSwgcHV0IGl0IGhlcmU6CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgL2V0Yy9hcGFjaGUyL2NvbmYuZC90b2FzdGVyLmNvbmYKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgc2FtcGxlIEFwYWNoZSBjb25maWd1cmF0aW9uIGZvciBUb2FzdGVyCisgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBmb2xsb3c6CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgQWxpYXMgL3N0YXRpYyAvdmFyL3d3dy90b2FzdGVyL3N0YXRpY19maWxlcworICAgJmx0O0RpcmVjdG9yeSAvdmFyL3d3dy90b2FzdGVyL3N0YXRpY19maWxlcyZndDsKKyAgICAgICAgICAgJmx0O0lmTW9kdWxlIG1vZF9hY2Nlc3NfY29tcGF0LmMmZ3Q7CisgICAgICAgICAgICAgICAgICAgT3JkZXIgYWxsb3csZGVueQorICAgICAgICAgICAgICAgICAgIEFsbG93IGZyb20gYWxsCisgICAgICAgICAgICZsdDsvSWZNb2R1bGUmZ3Q7CisgICAgICAgICAgICZsdDtJZk1vZHVsZSAhbW9kX2FjY2Vzc19jb21wYXQuYyZndDsKKyAgICAgICAgICAgICAgICAgICBSZXF1aXJlIGFsbCBncmFudGVkCisgICAgICAgICAgICZsdDsvSWZNb2R1bGUmZ3Q7CisgICAmbHQ7L0RpcmVjdG9yeSZndDsKKworICAgJmx0O0RpcmVjdG9yeSAvdmFyL3d3dy90b2FzdGVyL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbiZndDsKKyAgICAgICAgICAgJmx0O0ZpbGVzICJ3c2dpLnB5IiZndDsKKyAgICAgICAgICAgICAgUmVxdWlyZSBhbGwgZ3JhbnRlZAorICAgICAgICAgICAmbHQ7L0ZpbGVzJmd0OworICAgJmx0Oy9EaXJlY3RvcnkmZ3Q7CisKKyAgIFdTR0lEYWVtb25Qcm9jZXNzIHRvYXN0ZXJfd3NnaSBweXRob24tcGF0aD0vdmFyL3d3dy90b2FzdGVyL3Bva3kvYml0YmFrZS9saWIvdG9hc3RlcjovdmFyL3d3dy90b2FzdGVyLy5sb2NhbC9saWIvcHl0aG9uMy40L3NpdGUtcGFja2FnZXMKKworICAgV1NHSVNjcmlwdEFsaWFzIC8gIi92YXIvd3d3L3RvYXN0ZXIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3dzZ2kucHkiCisgICAmbHQ7TG9jYXRpb24gLyZndDsKKyAgICAgICBXU0dJUHJvY2Vzc0dyb3VwIHRvYXN0ZXJfd3NnaQorICAgJmx0Oy9Mb2NhdGlvbiZndDsKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBVYnVudHUgb3IgRGViaWFuLAorICAgICAgICAgICAgICAgICAgICAgIHlvdSB3aWxsIG5lZWQgdG8gZW5hYmxlIHRoZSBjb25maWcgYW5kIG1vZHVsZSBmb3IgQXBhY2hlOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgc3VkbyBhMmVubW9kIHdzZ2kKKyAgICQgc3VkbyBhMmVuY29uZiB0b2FzdGVyCisgICAkIGNobW9kICt4IGJpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vd3NnaS5weQorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCByZXN0YXJ0IEFwYWNoZSB0byBtYWtlIHN1cmUgYWxsIG5ldyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgaXMgbG9hZGVkLgorICAgICAgICAgICAgICAgICAgICAgIEZvciBVYnVudHUsIERlYmlhbiwgYW5kIE9wZW5TVVNFIHVzZToKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAkIHN1ZG8gc2VydmljZSBhcGFjaGUyIHJlc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgRm9yIEZlZG9yYSBhbmQgUmVkSGF0IHVzZToKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAkIHN1ZG8gc2VydmljZSBodHRwZCByZXN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFByZXBhcmUgdGhlIHN5c3RlbWQgc2VydmljZSB0byBydW4gVG9hc3RlciBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBzZXJ2aWNlOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgIFtVbml0XQorICAgRGVzY3JpcHRpb249VG9hc3RlciBydW5idWlsZHMKKworICAgW1NlcnZpY2VdCisgICBUeXBlPWZvcmtpbmcKKyAgIFVzZXI9dG9hc3RlcgorICAgRXhlY1N0YXJ0PS91c3IvYmluL3NjcmVlbiAtZCAtbSAtUyBydW5idWlsZHMgL3Zhci93d3cvdG9hc3Rlci9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvcnVuYnVpbGRzLXNlcnZpY2Uuc2ggc3RhcnQKKyAgIEV4ZWNTdG9wPS91c3IvYmluL3NjcmVlbiAtUyBydW5idWlsZHMgLVggcXVpdAorICAgV29ya2luZ0RpcmVjdG9yeT0vdmFyL3d3dy90b2FzdGVyL3Bva3kKKworICAgW0luc3RhbGxdCisgICBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICBQcmVwYXJlIHRoZSA8ZmlsZW5hbWU+cnVuYnVpbGRzLXNlcnZpY2Uuc2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCB0aGF0IHlvdSBuZWVkIHRvIHBsYWNlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdmFyL3d3dy90b2FzdGVyL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBieSBzZXR0aW5nIHVwIGV4ZWN1dGFibGUgcGVybWlzc2lvbnM6CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIyEvYmluL2Jhc2gKKworICAgI2V4cG9ydCBodHRwX3Byb3h5PWh0dHA6Ly9wcm94eS5ob3N0LmNvbTo4MDgwCisgICAjZXhwb3J0IGh0dHBzX3Byb3h5PWh0dHA6Ly9wcm94eS5ob3N0LmNvbTo4MDgwCisgICAjZXhwb3J0IEdJVF9QUk9YWV9DT01NQU5EPSRIT01FL2Jpbi9naXRwcm94eQorCisgICBjZCB+L3Bva3kvCisgICBzb3VyY2UgLi9vZS1pbml0LWJ1aWxkLWVudiBidWlsZAorICAgc291cmNlIC4uL2JpdGJha2UvYmluL3RvYXN0ZXIgJDEgbm93ZWIKKyAgIFsgIiQxIiA9PSAnc3RhcnQnIF0gJmFtcDsmYW1wOyAvYmluL2Jhc2gKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSBzZXJ2aWNlOgorICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICMgc2VydmljZSBydW5idWlsZHMgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgU2luY2UgdGhlIHNlcnZpY2UgaXMgcnVubmluZyBpbiBhIGRldGFjaGVkIHNjcmVlbgorICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24sIHlvdSBjYW4gYXR0YWNoIHRvIGl0IHVzaW5nIHRoaXMgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAkIHN1ZG8gc3UgLSB0b2FzdGVyCisgICAkIHNjcmVlbiAtclMgcnVuYnVpbGRzCisgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGV0YWNoIGZyb20gdGhlIHNlcnZpY2UgYWdhaW4gdXNpbmcgIkN0cmwtYSIKKyAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSAiZCIga2V5IGNvbWJpbmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICBZb3UgY2FuIG5vdyBvcGVuIHVwIGEgYnJvd3NlciBhbmQgc3RhcnQgdXNpbmcgVG9hc3Rlci4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0ndXNpbmctdGhlLXRvYXN0ZXItd2ViLWludGVyZmFjZSc+CisgICAgICA8dGl0bGU+VXNpbmcgdGhlIFRvYXN0ZXIgV2ViIEludGVyZmFjZTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBUb2FzdGVyIHdlYiBpbnRlcmZhY2UgYWxsb3dzIHlvdSB0byBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgIEJyb3dzZSBwdWJsaXNoZWQgbGF5ZXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnJz5PcGVuRW1iZWRkZWQgTGF5ZXIgSW5kZXg8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB5b3VyIHNlbGVjdGVkIHZlcnNpb24gb2YgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgSW1wb3J0IHlvdXIgb3duIGxheWVycyBmb3IgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgQWRkIGFuZCByZW1vdmUgbGF5ZXJzIGZyb20geW91ciBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgIFNldCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICBTZWxlY3QgYSB0YXJnZXQgb3IgbXVsdGlwbGUgdGFyZ2V0cyB0byBidWlsZC4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICBTdGFydCB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICBTZWUgd2hhdCB3YXMgYnVpbHQgKHJlY2lwZXMgYW5kIHBhY2thZ2VzKSBhbmQgd2hhdAorICAgICAgICAgICAgICAgICAgcGFja2FnZXMgd2VyZSBpbnN0YWxsZWQgaW50byB5b3VyIGZpbmFsIGltYWdlLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgIEJyb3dzZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBvZiB5b3VyIGltYWdlLgorICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgIFNlZSB0aGUgdmFsdWUgb2YgYWxsIHZhcmlhYmxlcyBpbiB5b3VyIGJ1aWxkIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICBhbmQgd2hpY2ggZmlsZXMgc2V0IGVhY2ggdmFsdWUuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgRXhhbWluZSBlcnJvciwgd2FybmluZyBhbmQgdHJhY2UgbWVzc2FnZXMgdG8gYWlkIGluCisgICAgICAgICAgICAgICAgICBkZWJ1Z2dpbmcuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgU2VlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCaXRCYWtlIHRhc2tzIGV4ZWN1dGVkIGFuZAorICAgICAgICAgICAgICAgICAgcmV1c2VkIGR1cmluZyB5b3VyIGJ1aWxkLCBpbmNsdWRpbmcgdGhvc2UgdGhhdCB1c2VkCisgICAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgU2VlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHJlY2lwZXMsIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICBhbmQgdGFza3MuCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgU2VlIHBlcmZvcm1hbmNlIGluZm9ybWF0aW9uIHN1Y2ggYXMgYnVpbGQgdGltZSwgdGFzayB0aW1lLAorICAgICAgICAgICAgICAgICAgQ1BVIHVzYWdlLCBhbmQgZGlzayBJL08uCisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHNlY3Rpb24gaWQ9J3dlYi1pbnRlcmZhY2UtdmlkZW9zJz4KKyAgICAgICAgICA8dGl0bGU+VG9hc3RlciBXZWIgSW50ZXJmYWNlIFZpZGVvczwvdGl0bGU+CisKKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzZXZlcmFsIHZpZGVvcyB0aGF0IHNob3cgaG93IHRvIHVzZSB0aGUgVG9hc3RlciBHVUk6CisgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1xWWdEWjhZelY2dyc+dmlkZW88L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3cyBhbmQgZGVtb25zdHJhdGVzIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIEN1c3RvbSBMYXllcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1RSnphRV9Yalg1Yyc+dmlkZW88L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgIHNob3dzIHlvdSBob3cgdG8gYnVpbGQgY3VzdG9tIGxheWVycyB0aGF0IGFyZSB1c2VkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Ub2FzdGVyIEhvbWVwYWdlIGFuZCBUYWJsZSBDb250cm9sczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVFFQVJEbnJSMVh3Jz52aWRlbzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgZ29lcyBvdmVyIHRoZSBUb2FzdGVyIGVudHJ5IHBhZ2UsIGFuZCBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICAgIGFuIG92ZXJ2aWV3IG9mIHRoZSBkYXRhIG1hbmlwdWxhdGlvbiBjYXBhYmlsaXRpZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyLCB3aGljaCBpbmNsdWRlIHNlYXJjaCwgc29ydGluZyBhbmQgZmlsdGVyaW5nIGJ5CisgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGNyaXRlcmlhLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBEYXNoYm9hcmQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1LS3FIWWNucDJnRSc+dmlkZW88L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgIHNob3dzIHlvdSB0aGUgYnVpbGQgZGFzaGJvYXJkLCBhIHBhZ2UgcHJvdmlkaW5nIGFuCisgICAgICAgICAgICAgICAgICAgICAgb3ZlcnZpZXcgb2YgdGhlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmb3IgYSBzZWxlY3RlZCBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1hZ2UgSW5mb3JtYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YcVlHRnNtQTBSdyc+dmlkZW88L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgIHdhbGtzIHRocm91Z2ggdGhlIGluZm9ybWF0aW9uIFRvYXN0ZXIgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICBhYm91dCBpbWFnZXM6IHBhY2thZ2VzIGluc3RhbGxlZCBhbmQgcm9vdCBmaWxlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVVXLWotVDJUeklnJz52aWRlbzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgVG9hc3RlciBidWlsZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UYXNrczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUQ0LTl2R1N4UXR3Jz52aWRlbzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgc2hvd3MgdGhlIGluZm9ybWF0aW9uIFRvYXN0ZXIgcHJvdmlkZXMgYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgdGFza3MgcnVuIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJlY2lwZXMgYW5kIFBhY2thZ2VzIEJ1aWx0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgVGhpcworICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9eC02ZHg0aHVObncnPnZpZGVvPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICBzaG93cyB0aGUgaW5mb3JtYXRpb24gVG9hc3RlciBwcm92aWRlcyBhYm91dCByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgICAgYW5kIHBhY2thZ2VzIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QZXJmb3JtYW5jZSBEYXRhOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgVGhpcworICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9cVdHTXJKb3F1c1EnPnZpZGVvPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICBzaG93cyB0aGUgYnVpbGQgcGVyZm9ybWFuY2UgZGF0YSBwcm92aWRlZCBieQorICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9J2Etbm90ZS1vbi10aGUtbG9jYWwteW9jdG8tcHJvamVjdC1yZWxlYXNlJz4KKyAgICAgICAgICA8dGl0bGU+QWRkaXRpb25hbCBJbmZvcm1hdGlvbiBBYm91dCB0aGUgTG9jYWwgWW9jdG8gUHJvamVjdCBSZWxlYXNlPC90aXRsZT4KKworICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gb25seSBhcHBsaWVzIGlmIHlvdSBoYXZlIHNldCB1cCBUb2FzdGVyCisgICAgICAgICAgICAgIGZvciBsb2NhbCBkZXZlbG9wbWVudCwgYXMgZXhwbGFpbmVkIGluIHRoZQorICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RhcnRpbmctdG9hc3Rlci1mb3ItbG9jYWwtZGV2ZWxvcG1lbnQnPlN0YXJ0aW5nIFRvYXN0ZXIgZm9yIExvY2FsIERldmVsb3BtZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgcHJvamVjdCBpbiBUb2FzdGVyLCB5b3Ugd2lsbCBiZSBhc2tlZCB0bworICAgICAgICAgICAgICBwcm92aWRlIGEgbmFtZSBhbmQgdG8gc2VsZWN0IGEgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICAgICAgICBPbmUgb2YgdGhlIHJlbGVhc2Ugb3B0aW9ucyB5b3Ugd2lsbCBmaW5kIGlzIGNhbGxlZAorICAgICAgICAgICAgICAiTG9jYWwgWW9jdG8gUHJvamVjdCIuCisgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9uZXctcHJvamVjdC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIC8+CisgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFdoZW4geW91IHNlbGVjdCB0aGUgIkxvY2FsIFlvY3RvIFByb2plY3QiIHJlbGVhc2UsIFRvYXN0ZXIKKyAgICAgICAgICAgICAgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIGxvY2FsIFlvY3RvCisgICAgICAgICAgICAgIFByb2plY3QgY2xvbmUgeW91IGhhdmUgaW4geW91ciBjb21wdXRlcjogdGhlIHNhbWUgY2xvbmUKKyAgICAgICAgICAgICAgeW91IGFyZSB1c2luZyB0byBydW4gVG9hc3Rlci4KKyAgICAgICAgICAgICAgVW5sZXNzIHlvdSBtYW51YWxseSB1cGRhdGUKKyAgICAgICAgICAgICAgdGhpcyBjbG9uZSwgeW91ciBidWlsZHMgd2lsbCBhbHdheXMgdXNlIHRoZSBzYW1lIEdpdCByZXZpc2lvbi4KKyAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgeW91IHNlbGVjdCBhbnkgb2YgdGhlIG90aGVyIHJlbGVhc2Ugb3B0aW9ucywgVG9hc3RlcgorICAgICAgICAgICAgICB3aWxsIGZldGNoIHRoZSB0aXAgb2YgeW91ciBzZWxlY3RlZCByZWxlYXNlIGZyb20gdGhlIHVwc3RyZWFtCisgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcnPllvY3RvIFByb2plY3QgcmVwb3NpdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgIGV2ZXJ5IHRpbWUgeW91IHJ1biBhIGJ1aWxkLgorICAgICAgICAgICAgICBGZXRjaGluZyB0aGlzIHRpcCBlZmZlY3RpdmVseQorICAgICAgICAgICAgICBtZWFucyB0aGF0IGlmIHlvdXIgc2VsZWN0ZWQgcmVsZWFzZSBpcyB1cGRhdGVkIHVwc3RyZWFtLCB0aGUKKyAgICAgICAgICAgICAgR2l0IHJldmlzaW9uIHlvdSBhcmUgdXNpbmcgZm9yIHlvdXIgYnVpbGRzIHdpbGwgY2hhbmdlLgorICAgICAgICAgICAgICBJZiB5b3UgYXJlIGRvaW5nIGRldmVsb3BtZW50IGxvY2FsbHksIHlvdSBtaWdodCBub3Qgd2FudCB0aGlzCisgICAgICAgICAgICAgIGNoYW5nZSB0byBoYXBwZW4uCisgICAgICAgICAgICAgIEluIHRoYXQgY2FzZSwgdGhlICJMb2NhbCBZb2N0byBQcm9qZWN0IgorICAgICAgICAgICAgICByZWxlYXNlIG1pZ2h0IGJlIHRoZSByaWdodCBjaG9pY2UuCisgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSAiTG9jYWwgWW9jdG8gUHJvamVjdCIgcmVsZWFzZQorICAgICAgICAgICAgICB3aWxsIG5vdCBwcm92aWRlIHlvdSB3aXRoIGFueSBjb21wYXRpYmxlIGxheWVycywgb3RoZXIgdGhhbiB0aGUKKyAgICAgICAgICAgICAgdGhyZWUgY29yZSBsYXllcnMgdGhhdCBjb21lIHdpdGggdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYnJhbmNoL21hc3Rlci9sYXllci9vcGVuZW1iZWRkZWQtY29yZS8nPm9wZW5lbWJlZGRlZC1jb3JlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXIvbWV0YS1wb2t5Lyc+bWV0YS1wb2t5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXIvbWV0YS15b2N0by1ic3AvJz5tZXRhLXlvY3RvLWJzcDwvdWxpbms+CisgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9jb21wYXRpYmxlLWxheWVycy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIC8+CisgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGJ1aWxkIGFueSBvdGhlciBsYXllcnMsIHlvdSB3aWxsIG5lZWQgdG8KKyAgICAgICAgICAgICAgbWFudWFsbHkgaW1wb3J0IHRoZW0gaW50byB5b3VyIFRvYXN0ZXIgcHJvamVjdCwgdXNpbmcgdGhlCisgICAgICAgICAgICAgICJJbXBvcnQgbGF5ZXIiIHBhZ2UuCisgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbXBvcnQtbGF5ZXIucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiAvPgorICAgICAgICAgIDwvcGFyYT4KKworICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0ndG9hc3Rlci13ZWItaW50ZXJmYWNlLXByZWZlcnJlZC12ZXJzaW9uJz4KKyAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgYSBTcGVjaWZpYyBSZWNpcGUgR2l2ZW4gTXVsdGlwbGUgVmVyc2lvbnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPY2Nhc2lvbmFsbHksIGEgbGF5ZXIgbWlnaHQgcHJvdmlkZSBtb3JlIHRoYW4gb25lIHZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICB0aGUgc2FtZSByZWNpcGUuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPiBsYXllcgorICAgICAgICAgICAgICAgIHByb3ZpZGVzIHR3byB2ZXJzaW9ucyBvZiB0aGUgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPiByZWNpcGUKKyAgICAgICAgICAgICAgICAoaS5lLiAzLjIuNDggYW5kIDQuMy4zMC1yMCkgYW5kIHR3byB2ZXJzaW9ucyBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2hpY2g8L2ZpbGVuYW1lPiByZWNpcGUgKGkuZS4gMi4yMSBhbmQgMi4xOCkuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhpcyBleGFjdCBzY2VuYXJpbzoKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYmFzaC1vZWNvcmUucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNmluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgb25lIG9mIHRoZQorICAgICAgICAgICAgICAgIHR3byByZWNpcGVzLgorICAgICAgICAgICAgICAgIEZvciB0aGUgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPiBjYXNlLCB2ZXJzaW9uIDQuMy4zMC1yMCBpcworICAgICAgICAgICAgICAgIGJ1aWx0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgVW5mb3J0dW5hdGVseSwgVG9hc3RlciBhcyBpdCBleGlzdHMsIGlzIG5vdCBhYmxlIHRvIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgcmVjaXBlIHZlcnNpb24uCisgICAgICAgICAgICAgICAgSWYgeW91IHdvdWxkIGxpa2UgdG8gYnVpbGQgYmFzaCAzLjIuNDgsIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHNvIGZyb20gVG9hc3RlciwgdXNpbmcgdGhlICJBZGQgdmFyaWFibGUiIGZvcm0sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgYXZhaWxhYmxlIGluIHRoZSAiQml0QmFrZSB2YXJpYWJsZXMiIHBhZ2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgcHJvamVjdCBjb25maWd1cmF0aW9uIHNlY3Rpb24gYXMgc2hvd24gaW4gdGhlIGZvbGxvd2luZyBzY3JlZW46CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FkZC12YXJpYWJsZS5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHNwZWNpZnkgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPiAzLjIuNDggYXMgdGhlIHZlcnNpb24gdG8gYnVpbGQsCisgICAgICAgICAgICAgICAgZW50ZXIgIlBSRUZFUlJFRF9WRVJTSU9OX2Jhc2giIGluIHRoZSAiVmFyaWFibGUiIGZpZWxkLCBhbmQgIjMuMi40OCIKKyAgICAgICAgICAgICAgICBpbiB0aGUgIlZhbHVlIiBmaWVsZC4KKyAgICAgICAgICAgICAgICBOZXh0LCBjbGljayB0aGUgIkFkZCB2YXJpYWJsZSIgYnV0dG9uOgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZXQtdmFyaWFibGUucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNmluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBZnRlciBjbGlja2luZyB0aGUgIkFkZCB2YXJpYWJsZSIgYnV0dG9uLCB0aGUgc2V0dGluZ3MgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT4gYXJlIGFkZGVkIHRvIHRoZSBib3R0b20KKyAgICAgICAgICAgICAgICBvZiB0aGUgQml0QmFrZSB2YXJpYWJsZXMgbGlzdC4KKyAgICAgICAgICAgICAgICBXaXRoIHRoZXNlIHNldHRpbmdzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgdGhlCisgICAgICAgICAgICAgICAgZGVzaXJlZCB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgdmVyc2lvbjoKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvdmFyaWFibGUtYWRkZWQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNmluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC5yc3QKaW5kZXggMjY3ZjlmNC4uMmQ2MTJiOCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogLi4gU2V0IGRlZmF1bHQgcHlnbWVudHMgaGlnaGxpZ2h0aW5nIHRvIHNoZWxsIGZvciB0aGlzIGRvY3VtZW50CiAuLiBoaWdobGlnaHQ6OiBzaGVsbAogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTg1NzAwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbApAQCAtMCwwICsxLDExNiBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxjaGFwdGVyIGlkPSd0b2FzdGVyLW1hbnVhbC1zdGFydCc+CisKKzx0aXRsZT5QcmVwYXJpbmcgdG8gVXNlIFRvYXN0ZXI8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHlvdSBuZWVkIHRvIHByZXBhcmUgeW91ciBzeXN0ZW0gaW4gb3JkZXIgdG8KKyAgICAgICAgdXNlIFRvYXN0ZXIuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItc2V0dGluZy11cC10aGUtYmFzaWMtc3lzdGVtLXJlcXVpcmVtZW50cyc+CisgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBCYXNpYyBTeXN0ZW0gUmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIHVzZSBUb2FzdGVyLCB5b3UgbmVlZCB0byBmaXJzdCBzZXQgdXAgeW91cgorICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIHJ1biB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFRvIGRvIHRoaXMsIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1wcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgTWFudWFsLgorIAkgICAgRm9yIFVidW50dS9EZWJpYW4sIHlvdSBtaWdodCBhbHNvIG5lZWQgdG8gZG8gYW4gYWRkaXRpb25hbCBpbnN0YWxsCisgICAgICAgICAgICBvZiBwaXAzLgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBweXRob24zLXBpcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWVzdGFibGlzaGluZy10b2FzdGVyLXN5c3RlbS1kZXBlbmRlbmNpZXMnPgorICAgICAgICA8dGl0bGU+RXN0YWJsaXNoaW5nIFRvYXN0ZXIgU3lzdGVtIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUb2FzdGVyIHJlcXVpcmVzIGV4dHJhIFB5dGhvbiBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgdG8gcnVuLgorICAgICAgICAgICAgQSBUb2FzdGVyIHJlcXVpcmVtZW50cyBmaWxlIG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3Rlci1yZXF1aXJlbWVudHMudHh0PC9maWxlbmFtZT4gZGVmaW5lcyB0aGUKKyAgICAgICAgICAgIFB5dGhvbiBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICBUaGUgcmVxdWlyZW1lbnRzIGZpbGUgaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gZGlyZWN0b3J5LCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgVGhlIGRlcGVuZGVuY2llcyBhcHBlYXIgaW4gYSA8ZmlsZW5hbWU+cGlwPC9maWxlbmFtZT4sCisgICAgICAgICAgICBpbnN0YWxsLWNvbXBhdGlibGUgZm9ybWF0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItbG9hZC1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbCBUb2FzdGVyIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgcGFja2FnZXMgdGhhdCBUb2FzdGVyIHJlcXVpcmVzLgorICAgICAgICAgICAgICAgIFVzZSB0aGlzIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHBpcDMgaW5zdGFsbCAtLXVzZXIgLXIgYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmQgaW5zdGFsbHMgdGhlIG5lY2Vzc2FyeSBUb2FzdGVyIG1vZHVsZXMKKyAgICAgICAgICAgICAgICBpbnRvIGEgbG9jYWwgcHl0aG9uIDMgY2FjaGUgaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kSE9NRTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBUaGUgY2FjaGVzIGlzIGFjdHVhbGx5IGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JEhPTUUvLmxvY2FsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVG8gc2VlIHdoYXQgcGFja2FnZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbnRvIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JEhPTUU8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHBpcDMgbGlzdCBpbnN0YWxsZWQgLS1sb2NhbAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byByZW1vdmUgc29tZXRoaW5nLCB0aGUgZm9sbG93aW5nIHdvcmtzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBwaXAzIHVuaW5zdGFsbCBQYWNrYWdlTmFtZVRvVW5pbnN0YWxsCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKzwhLS0gQ29tbWVudGluZyB0aGlzIHNlY3Rpb24gb3V0IGZvciBub3cgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSB1c2VkIGFnYWluLgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLWluc3RhbGwtZGFlbW9uJz4KKyAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsIDxmaWxlbmFtZT5kYWVtb248L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvYXN0ZXIgZGVwZW5kcyBvbgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cubGlic2xhY2sub3JnL2RhZW1vbi8nPjxmaWxlbmFtZT5kYWVtb248L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGRpc3RyaWJ1dGlvbiwgaG93IHlvdSBpbnN0YWxsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRhZW1vbjwvZmlsZW5hbWU+IGRpZmZlcnM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZWJpYW4tQmFzZWQgU3lzdGVtczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBydW5uaW5nIGEgRGViaWFuLWJhc2VkIGRpc3RyaWJ1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgPGZpbGVuYW1lPmRhZW1vbjwvZmlsZW5hbWU+IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgZGFlbW9u4oCLCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Ob24tRGViaWFuLUJhc2VkIFN5c3RlbXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgbm90IHJ1bm5pbmcgYSBEZWJpYW4tYmFzZWQgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoUmVkaGF0LWJhc2VkIGRpc3RyaWJ1dGlvbiBzdWNoIGFzIEZlZG9yYSksCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBkb3dubG9hZCDigIt0aGUgZmlsZSByZWxldmFudCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgdGhlbiBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGFlbW9uPC9maWxlbmFtZT4gbWFudWFsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHRoZSBjb21tYW5kcyBmb3IgNjQtYml0IGRpc3RyaWJ1dGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2dldCBodHRwOi8vbGlic2xhY2sub3JnL2RhZW1vbi9kb3dubG9hZC9kYWVtb24tMC42LjQtMS54ODZfNjQucnBtCisgICAgICQgc3VkbyBycG0gLWkgZGFlbW9uLTAuNi40LTEueDg2XzY0LnJwbQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIGNvbW1hbmRzIGZvciBhIDMyLWJpdCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2dldCBodHRwOi8vbGlic2xhY2sub3JnL2RhZW1vbi9kb3dubG9hZC9kYWVtb24tMC42LjQtMS5pNjg2LnJwbQorICAgICAkIHN1ZG8gcnBtIC1pIOKAi2RhZW1vbi0wLjYuNC0xLmk2ODYucnBt4oCLCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPiAtLT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3R5bGUuY3NzIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Y0MzBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0eWxlLmNzcwpAQCAtMCwwICsxLDk4NyBAQAorLyoKKworICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSworCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvdG9hc3Rlci10aXRsZS5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7CisgIG1hcmdpbi10b3A6IC0yNTZweDsKKyAgcGFkZGluZy1yaWdodDogNTBweDsKKyAgbWFyZ2luLWxlZnQ6IDBweDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7CisgIHdpZHRoOiA3NDBweDsKK30KKworaDMuYXV0aG9yIHsKKyAgbWFyZ2luOiAwZW0gMG1lIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zaXplOiAxMDAlOworICBjb2xvcjogIzMzMzsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5hdXRob3IgdHQuZW1haWwgeworICBmb250LXNpemU6IDY2JTsKK30KKworLnRpdGxlcGFnZSBociB7CisgIHdpZHRoOiAwZW07CisgIGNsZWFyOiBib3RoOworfQorCisucmV2aGlzdG9yeSB7CisgIHBhZGRpbmctdG9wOiAyZW07CisgIGNsZWFyOiBib3RoOworfQorCisudG9jLAorLmxpc3Qtb2YtdGFibGVzLAorLmxpc3Qtb2YtZXhhbXBsZXMsCisubGlzdC1vZi1maWd1cmVzIHsKKyAgcGFkZGluZzogMS4zM2VtIDBlbSAyLjVlbSAwZW07CisgIGNvbG9yOiAjMDA1NTdEOworfQorCisudG9jIHAsCisubGlzdC1vZi10YWJsZXMgcCwKKy5saXN0LW9mLWZpZ3VyZXMgcCwKKy5saXN0LW9mLWV4YW1wbGVzIHAgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMC4zZW07CisgIG1hcmdpbjogMS41ZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgcCBiLAorLmxpc3Qtb2YtdGFibGVzIHAgYiwKKy5saXN0LW9mLWZpZ3VyZXMgcCBiLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCBieworICBmb250LXNpemU6IDEwMC4wJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKy50b2MgZGwsCisubGlzdC1vZi10YWJsZXMgZGwsCisubGlzdC1vZi1maWd1cmVzIGRsLAorLmxpc3Qtb2YtZXhhbXBsZXMgZGwgeworICBtYXJnaW46IDBlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZHQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGRkIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAyLjZlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuZ2xvc3NhcnkgZGwsCitkaXYudmFyaWFibGVsaXN0IGRsIHsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgd2lkdGg6IDIwZW07CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCisudmFyaWFibGVsaXN0IGRsIGR0IHsKKyAgbWFyZ2luLXRvcDogMC41ZW07Cit9CisKKy5nbG9zc2FyeSBkbCBkZCwKKy52YXJpYWJsZWxpc3QgZGwgZGQgeworICBtYXJnaW4tdG9wOiAtMWVtOworICBtYXJnaW4tbGVmdDogMjUuNWVtOworfQorCisuZ2xvc3NhcnkgZGQgcCwKKy52YXJpYWJsZWxpc3QgZGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5jYWxsb3V0bGlzdCB0YWJsZSB0ZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKK2RpdiBwLmNvcHlyaWdodCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK2Rpdi5sZWdhbG5vdGljZSBwLmxlZ2Fsbm90aWNlLXRpdGxlIHsKKyAgbWFyZ2luLWJvdHRvbTogMGVtOworfQorCitwIHsKKyAgbGluZS1oZWlnaHQ6IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisKK30KKworZGwgeworICBwYWRkaW5nLXRvcDogMGVtOworfQorCitociB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCisKKy5tZWRpYW9iamVjdCwKKy5tZWRpYW9iamVjdGNvIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitpbWcgeworICBib3JkZXI6IG5vbmU7Cit9CisKK3VsIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMS41ZW07Cit9CisKK3VsIGxpIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCit1bCBsaSBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKwordGFibGUgeworICB3aWR0aCA6MTAwJTsKK30KKwordGggeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RkIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCitwIGFbaWRdIHsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDBweDsKKyAgZGlzcGxheTogaW5saW5lOworICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOworfQorCithIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGNvbG9yOiAjNDQ0OworfQorCitwcmUgeworICAgIG92ZXJmbG93OiBhdXRvOworfQorCithOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIC8qZm9udC13ZWlnaHQ6IGJvbGQ7Ki8KK30KKworLyogVGhpcyBzdHlsZSBkZWZpbmVzIGhvdyB0aGUgcGVybWFsaW5rIGNoYXJhY3RlcgorICAgYXBwZWFycyBieSBpdHNlbGYgYW5kIHdoZW4gaG92ZXJlZCBvdmVyIHdpdGgKKyAgIHRoZSBtb3VzZS4gKi8KKworW2FsdD0nUGVybWFsaW5rJ10geyBjb2xvcjogI2VlZTsgfQorW2FsdD0nUGVybWFsaW5rJ106aG92ZXIgeyBjb2xvcjogYmxhY2s7IH0KKworCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUgeworICBtYXJnaW46IDFlbSAwZW07CisgIHBhZGRpbmc6IDFlbTsKKyAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWxleGFtcGxlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbHRhYmxlIHAudGl0bGUgYiwKK2Rpdi5maWd1cmUgcC50aXRsZSBiLAorZGl2LmV4YW1wbGUgcC50aXRsZSBiLAorZGl2LnRhYmxlIHAudGl0bGUgYnsKKyAgICBwYWRkaW5nLXRvcDogMGVtOworICAgIG1hcmdpbi10b3A6IDBlbTsKKyAgICBmb250LXNpemU6IDEwMCU7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKworLm1lZGlhb2JqZWN0IC5jYXB0aW9uLAorLm1lZGlhb2JqZWN0IC5jYXB0aW9uIHAgIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZy10b3A6IDAuNWVtOworICBwYWRkaW5nLWJvdHRvbTogMC41ZW07Cit9CisKKy5lcGlncmFwaCB7CisgIHBhZGRpbmctbGVmdDogNTUlOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKy5lcGlncmFwaCBwIHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmVwaWdyYXBoIC5xdW90ZSB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKy5lcGlncmFwaCAuYXR0cmlidXRpb24geworICBmb250LXN0eWxlOiBub3JtYWw7CisgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitzcGFuLmFwcGxpY2F0aW9uIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucHJvZ3JhbWxpc3RpbmcgeworICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICBmb250LXNpemU6IDgwJTsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgbWFyZ2luOiAxLjMzZW0gMGVtOworICBwYWRkaW5nOiAxLjMzZW07Cit9CisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBtYXJnaW4tdG9wOiAxZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKKworfQorCisvKiBmb3JjZSBmdWxsIHdpZHRoIG9mIHRhYmxlIHdpdGhpbiBkaXYgKi8KKy50aXAgdGFibGUsCisud2FybmluZyB0YWJsZSwKKy5jYXV0aW9uIHRhYmxlLAorLm5vdGUgdGFibGUgeworICBib3JkZXI6IG5vbmU7CisgIHdpZHRoOiAxMDAlOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBwYWRkaW5nOiAwLjhlbSAwLjBlbSAwLjBlbSAwLjBlbTsKKyAgbWFyZ2luIDogMGVtIDBlbSAwZW0gMGVtOworfQorCisudGlwIHAsCisud2FybmluZyBwLAorLmNhdXRpb24gcCwKKy5ub3RlIHAgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMC41ZW07CisgIHBhZGRpbmctcmlnaHQ6IDFlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworLmFjcm9ueW0geworICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICBwYWRkaW5nOiAwLjA5ZW0gMC4zZW07CisgIG1hcmdpbjogMGVtOworfQorCisuaXRlbWl6ZWRsaXN0IGxpIHsKKyAgY2xlYXI6IG5vbmU7Cit9CisKKy5maWxlbmFtZSB7CisgIGZvbnQtc2l6ZTogbWVkaXVtOworICBmb250LWZhbWlseTogQ291cmllciwgbW9ub3NwYWNlOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDBlbTsKKyAgdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RmOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIHBvc2l0aW9uOiBmaXhlZDsKKyAgbGVmdDogMGVtOworICBib3R0b206IDBlbTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworZGl2Lm5hdmhlYWRlciB0ZCwKK2Rpdi5uYXZmb290ZXIgdGQgeworICBmb250LXNpemU6IDY2JTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0aCB7CisgIC8qZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzLCBzZXJpZjsqLworICAvKmZvbnQtc2l6ZTogeC1sYXJnZTsqLworICBmb250LXNpemU6IDgwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItdG9wOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci1ib3R0b206IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYSwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYSB7CisgIGNvbG9yOiAjNzc3OworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cit9CisKKy8qIG5vcm1hbCB0ZXh0IGluIHRoZSBmb290ZXIgKi8KK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgeworICBjb2xvcjogYmxhY2s7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTp2aXNpdGVkLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOnZpc2l0ZWQgeworICBjb2xvcjogIzQ0NDsKK30KKworCisvKiBsaW5rcyBpbiBoZWFkZXIgYW5kIGZvb3RlciAqLworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOmhvdmVyLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhOmhvdmVyIHsKKyAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBjb2xvcjogIzMzYTsKK30KKworZGl2Lm5hdmhlYWRlciBociwKK2Rpdi5uYXZmb290ZXIgaHIgeworICBkaXNwbGF5OiBub25lOworfQorCisKKy5xYW5kYXNldCB0ci5xdWVzdGlvbiB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnFhbmRhc2V0IHRyLmFuc3dlciB0ZCBwIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKy5hbnN3ZXIgdGQgeworICBwYWRkaW5nLWJvdHRvbTogMS41ZW07Cit9CisKKy5lbXBoYXNpcyB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisKKyAgLyoqKioqKioqKioqKiogLworIC8gZGVjb3JhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKi8KKworLnRpdGxlcGFnZSB7Cit9CisKKy5wYXJ0IC50aXRsZSB7Cit9CisKKy5zdWJ0aXRsZSB7CisgICAgYm9yZGVyOiBub25lOworfQorCisvKgoraDEgeworICBib3JkZXI6IG5vbmU7Cit9CisKK2gyIHsKKyAgYm9yZGVyLXRvcDogc29saWQgMC4yZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDMgeworICBib3JkZXItdG9wOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDQgeworICBib3JkZXI6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNSB7CisgIGJvcmRlcjogMGVtOworfQorKi8KKworLnByb2dyYW1saXN0aW5nIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisucXVlc3Rpb24gdGQgeworICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Cit9CisKKy5hbnN3ZXIgeworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJvcmRlcjogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZoZWFkZXIsIGRpdi5oZWFkaW5neworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZDsKK30KKworICAvKioqKioqKioqIC8KKyAvICBjb2xvcnMgIC8KKy8gKioqKioqKioqLworCitib2R5IHsKKyAgY29sb3I6ICMzMzM7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorCithIHsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKK2E6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVkZWRlOworfQorCisKK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3LAoraDggeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworaHIgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKKworLnRpcCwgLndhcm5pbmcsIC5jYXV0aW9uLCAubm90ZSB7CisgIGJvcmRlci1jb2xvcjogI2ZmZjsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKK30KKworCisud2FybmluZyB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLnRpcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5ub3RlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmdsb3NzYXJ5IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQgc3Bhbi50ZXJtIHsKKyAgY29sb3I6ICMwNDQ7Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworcHJlLnByb2dyYW1saXN0aW5nIHsKKyAgY29sb3I6IGJsYWNrOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworICBib3JkZXItY29sb3I6ICNhYWE7CisgIGJvcmRlci13aWR0aDogMnB4OworfQorCisuZ3VpbWVudSwKKy5ndWlsYWJlbCwKKy5ndWltZW51aXRlbSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKKyAgYm9yZGVyLWNvbG9yOiAjOTk5OworfQorCisKK2Rpdi5uYXZoZWFkZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKK2Rpdi5uYXZmb290ZXIgeworICBib3JkZXItY29sb3I6IGJsYWNrOworfQorCisKKyAgLyoqKioqKioqKioqIC8KKyAvICBncmFwaGljcyAgLworLyAqKioqKioqKioqKi8KKworLyoKK2JvZHkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisubmF2aGVhZGVyLAorLm5vdGUsCisudGlwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLndhcm5pbmcsCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5maWd1cmUsCisuaW5mb3JtYWxmaWd1cmUsCisuZXhhbXBsZSwKKy5pbmZvcm1hbGV4YW1wbGUsCisudGFibGUsCisuaW5mb3JtYWx0YWJsZSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworKi8KK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3eworfQorCisvKgorRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCisKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisqLworCitkaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5jb2xvcGhvbiAudGl0bGUsCitkaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7Cit9CisKK2Rpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworfQorCisKK2gxLnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGhlaWdodDogMjU2cHg7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIHRleHQtaW5kZW50OiAtOTAwMHB4OworICBvdmVyZmxvdzpoaWRkZW47CisgIHdpZHRoOiAwcHg7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyAgcGlwcGluLmdpbXAub3JnIHNwZWNpZmljIGFsdGVyYXRpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgY29sb3I6ICM3Nzc7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nOiAwOworICBtYXJnaW46IDA7CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgdG9wOiAwcHg7CisgIGxlZnQ6IDBweDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogNTBweDsKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2hlYWRpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKKyAgYm9yZGVyOiBub25lOworfQorCitkaXYuaGVhZGluZyBhIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyOiBub25lOworICBjb2xvcjogI2RkZDsKKyAgZm9udC1zaXplOiA4MCU7CisgIHRleHQtYWxpZ246cmlnaHQ7CisKKyAgd2lkdGg6IDEwMCU7CisgIHBhZGRpbmctdG9wOiAxMHB4OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogMHB4OworICBsZWZ0OiAwcHg7CisKKyAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2Zvb3RpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Cit9CisqLworCisKKworICAvKioqKioqKioqKioqKioqKioqIC8KKyAvICBuYXN0eSBpZSB0d2Vha3MgIC8KKy8gKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKKyAgbWFyZ2luLWxlZnQ6ZXhwcmVzc2lvbigiLTVlbSIpOworfQorYm9keSB7CisgIHBhZGRpbmc6ZXhwcmVzc2lvbigiNGVtIDVlbSAwZW0gNWVtIik7Cit9CisqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvIG1vemlsbGEgdmVuZG9yIHNwZWNpZmljIGNzcyBleHRlbnNpb25zICAvCisvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7CisgIC1tb3otb3BhY2l0eTogMC44ZW07Cit9CisKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuZXhhbXBsZSwKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtOworfQorCitiLmtleWNhcCwKKy5rZXljYXAgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtOworfQorKi8KKwordGFibGUgdHIgdGQgdGFibGUgdHIgdGQgeworICBkaXNwbGF5OiBub25lOworfQorCisKK2hyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKwordGFibGUgeworICBib3JkZXI6IDBlbTsKK30KKworIC5waG90byB7CisgIGZsb2F0OiByaWdodDsKKyAgbWFyZ2luLWxlZnQ6ICAgMS41ZW07CisgIG1hcmdpbi1ib3R0b206IDEuNWVtOworICBtYXJnaW4tdG9wOiAwZW07CisgIG1heC13aWR0aDogICAgICAxN2VtOworICBib3JkZXI6ICAgICAxcHggc29saWQgZ3JheTsKKyAgcGFkZGluZzogICAgM3B4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKyAuc2VwZXJhdG9yIHsKKyAgIHBhZGRpbmctdG9wOiAyZW07CisgICBjbGVhcjogYm90aDsKKyAgfQorCisgICN2YWxpZGF0b3JzIHsKKyAgICAgIG1hcmdpbi10b3A6IDVlbTsKKyAgICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgICAgY29sb3I6ICM3Nzc7CisgIH0KKyAgQG1lZGlhIHByaW50IHsKKyAgICAgIGJvZHkgeworICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OworICAgICAgfQorICAgICAgLm5vcHJpbnQgeworICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgICB9CisgIH0KKworCisudGlwLAorLm5vdGUgeworICAgYmFja2dyb3VuZDogI2YwZjBmMjsKKyAgIGNvbG9yOiAjMzMzOworICAgcGFkZGluZzogMjBweDsKKyAgIG1hcmdpbjogMjBweDsKK30KKworLnRpcCBoMywKKy5ub3RlIGgzIHsKKyAgIHBhZGRpbmc6IDBlbTsKKyAgIG1hcmdpbjogMGVtOworICAgZm9udC1zaXplOiAyZW07CisgICBmb250LXdlaWdodDogYm9sZDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisudGlwIGEsCisubm90ZSBhIHsKKyAgIGNvbG9yOiAjMzMzOworICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy5mb290bm90ZSB7CisgICBmb250LXNpemU6IHNtYWxsOworICAgY29sb3I6ICMzMzM7Cit9CisKKy8qIENoYW5nZXMgdGhlIGFubm91bmNlbWVudCB0ZXh0ICovCisudGlwIGgzLAorLndhcm5pbmcgaDMsCisuY2F1dGlvbiBoMywKKy5ub3RlIGgzIHsKKyAgIGZvbnQtc2l6ZTpsYXJnZTsKKyAgIGNvbG9yOiAjMDA1NTdEOworfQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5yc3QKaW5kZXggYjAwM2YxYy4uZjZmNTk0MSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiA9PT09PT09PT09PT09PT09PT09CiBUb2FzdGVyIFVzZXIgTWFudWFsCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMzZiNGRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbApAQCAtMCwwICsxLDE1OSBAQAorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKzwhLS1TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLLS0+CisKKzxib29rIGlkPSd0b2FzdGVyLW1hbnVhbCcgbGFuZz0nZW4nCisgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIKKyAgICAgIHhtbG5zPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgICAgID4KKyAgICA8Ym9va2luZm8+CisKKyAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0nZmlndXJlcy90b2FzdGVyLXRpdGxlLnBuZycKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSdTVkcnCisgICAgICAgICAgICAgICAgICAgIGFsaWduPSdsZWZ0JyBzY2FsZWZpdD0nMScgd2lkdGg9JzEwMCUnLz4KKyAgICAgICAgICAgIDwvaW1hZ2VvYmplY3Q+CisgICAgICAgIDwvbWVkaWFvYmplY3Q+CisKKyAgICAgICAgPHRpdGxlPgorICAgICAgICAgICAgVG9hc3RlciBVc2VyIE1hbnVhbAorICAgICAgICA8L3RpdGxlPgorCisgICAgICAgIDxhdXRob3Jncm91cD4KKyAgICAgICAgICAgIDxhdXRob3I+CisgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CisgICAgICAgICAgICA8L2F1dGhvcj4KKyAgICAgICAgPC9hdXRob3Jncm91cD4KKworICAgICAgICA8cmV2aGlzdG9yeT4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNjwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE2PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTk8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgIDwvcmV2aGlzdG9yeT4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4mQ09QWVJJR0hUX1lFQVI7PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgIHRoZSB0ZXJtcyBvZiB0aGUgPHVsaW5rIHR5cGU9Imh0dHAiIHVybD0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL3VrLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkgQ3JlYXRpdmUgQ29tbW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VG9hc3RlciBVc2VyIE1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDwvbm90ZT4KKworICAgIDwvbGVnYWxub3RpY2U+CisKKyAgICA8L2Jvb2tpbmZvPgorCisgICAgPHhpOmluY2x1ZGUgaHJlZj0idG9hc3Rlci1tYW51YWwtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ0b2FzdGVyLW1hbnVhbC1zdGFydC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlIGhyZWY9InRvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ0b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UueG1sIi8+CisKKzwvYm9vaz4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL2VjbGlwc2UtaGVscC5zZWQgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvZWNsaXBzZS1oZWxwLnNlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzE2ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL2VjbGlwc2UtaGVscC5zZWQKQEAgLTAsMCArMSwyMSBAQAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MtQlktMi4wLVVLCisjCisjIFByb2Nlc3MgcG9reS1yZWYtbWFudWFsIGFuZCB5b2N0by1wcm9qZWN0LXFzIG1hbnVhbCAoPHdvcmQ+LTx3b3JkPi08d29yZD4gc3R5bGUpCisjIEZvciBleGFtcGxlOgorIyAgICJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMS4zL3Bva3ktcmVmLW1hbnVhbC9wb2t5LXJlZi1tYW51YWwuaHRtbCNmYXEiCisjICAgLT4gImxpbmsiIGhyZWY9Ii4uL3Bva3ktcmVmLW1hbnVhbC9mYXEuaHRtbCIKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9bXi9dKi8oW2Etel0qLVthLXpdKi1bYS16XSopL1thLXpdKi1bYS16XSotW2Etel0qLmh0bWwjKFteIl0qKSIvQCJsaW5rIiBocmVmPSIuLi8xLzIuaHRtbCJAZworCisjIFByb2Nlc3NlcyBhbGwgb3RoZXIgbWFudWFscyAoPHdvcmQ+LTx3b3JkPiBzdHlsZSkKKyMgRm9yIGV4YW1wbGU6CisjICAgInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8xLjMva2VybmVsLW1hbnVhbC9rZXJuZWwtbWFudWFsLmh0bWwjZmFxIgorIyAgIC0+ICJsaW5rIiBocmVmPSIuLi9rZXJuZWwtbWFudWFsL2ZhcS5odG1sIgorc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL1teL10qLyhbYS16XSotW2Etel0qKS9bYS16XSotW2Etel0qLmh0bWwjKFteIl0qKSJAImxpbmsiIGhyZWY9Ii4uLzEvMi5odG1sIkBnCisKKyMgUHJvY2VzcyBjYXNlcyB3aGVyZSBqdXN0IGFuIGV4dGVybmFsIG1hbnVhbCBpcyByZWZlcmVuY2VkIHdpdGhvdXQgYW4gaWQgYW5jaG9yCisjIEZvciBleGFtcGxlOgorIyAgICJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMS4zL2tlcm5lbC1tYW51YWwva2VybmVsLW1hbnVhbC5odG1sCisjICAgLT4gImxpbmsiIGhyZWY9Ii4uL2tlcm5lbC1tYW51YWwvaW5kZXguaHRtbCIKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9bXi9dKi8oW2Etel0qLVthLXpdKi1bYS16XSopL1thLXpdKi1bYS16XSotW2Etel0qLmh0bWwiQCJsaW5rIiBocmVmPSIuLi8xL2luZGV4Lmh0bWwiQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9bXi9dKi8oW2Etel0qLVthLXpdKikvW2Etel0qLVthLXpdKi5odG1sIkAibGluayIgaHJlZj0iLi4vMS9pbmRleC5odG1sIkBnCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI1YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZApAQCAtMCwwICsxLDM5IEBACisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKKyMKKyMgUHJvY2Vzc2VzIGJpdGJha2UtdXNlci1tYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKS4KKyMgVGhpcyBzdHlsZSBpcyBmb3IgbWFudWFsIHRocmVlLXdvcmQgZm9sZGVycywgd2hpY2ggY3VycmVudGx5IGlzIG9ubHkgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisjIFdlIHVzZWQgdG8gaGF2ZSB0aGUgInlvY3RvLXByb2plY3QtcXMiIGFuZCAicG9reS1yZWYtbWFudWFsIiBmb2xkZXJzIGJ1dCBubyBsb25nZXIgZG8uCisjIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvW2Etel0qLVthLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworCisjIFByb2Nlc3NlcyBhbGwgb3RoZXIgbWFudWFscyAoPHdvcmQ+LTx3b3JkPiBzdHlsZSkuCisjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCBmb2xkZXJzIHRoYXQgdXNlIHR3byB3b3JkLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgbm93IChlLmcuICJyZWYtbWFudWFsIikuCisjIEhlcmUgaXMgdGhlIG9uZS1saW5lcjoKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZworCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKKworIyBQcm9jZXNzIGNhc2VzIHdoZXJlIGp1c3QgYW4gZXh0ZXJuYWwgbWFudWFsIGlzIHJlZmVyZW5jZWQgd2l0aG91dCBhbiBpZCBhbmNob3IKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC9hPkBZb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+Qml0QmFrZSBVc2VyIE1hbnVhbDwvYT5AQml0QmFrZSBVc2VyIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L2E+QFlvY3RvIHByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L2E+QFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESylAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9ic3AtZ3VpZGUvYnNwLWd1aWRlLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L2E+QFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPlRvYXN0ZXIgVXNlciBNYW51YWw8L2E+QFRvYXN0ZXIgVXNlciBNYW51YWxAZworCisjIFByb2Nlc3MgYSBzaW5nbGUsIHJvdWdlIG9jY3VycmVuY2Ugb2YgYSBsaW5rZWQgcmVmZXJlbmNlIHRvIHRoZSBNZWdhLU1hbnVhbC4KK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvbWVnYS1tYW51YWwvbWVnYS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsQGcKKwpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL3Bva3ktZG9jYm9vay10by1wZGYgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvcG9reS1kb2Nib29rLXRvLXBkZgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iMzZlNzRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL3Bva3ktZG9jYm9vay10by1wZGYKQEAgLTAsMCArMSw1NCBAQAorIyEvYmluL3NoCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKKyMKKworaWYgWyAteiAiJDEiIC1vIC16ICIkMiIgXTsgdGhlbgorICAgZWNobyAidXNhZ2U6IFstdl0gJDAgPGRvY2Jvb2sgZmlsZT4gPHRlbXBsYXRlZGlyPiIKKyAgIGVjaG8KKyAgIGVjaG8gIipOT1RFKiB5b3UgbmVlZCB4c2x0cHJvYywgZm9wIGFuZCBud2Fsc2ggZG9jYm9vayBzdHlsZXNoZWV0cyIgCisgICBlY2hvICIgICAgICAgaW5zdGFsbGVkIGZvciB0aGlzIHRvIHdvcmshIgorICAgZWNobworICAgZXhpdCAwCitmaQorCitGTz1gZWNobyAkMSB8IHNlZCBzLy54bWwvLmZvL2AgfHwgZXhpdCAxCitQREY9YGVjaG8gJDEgfCBzZWQgcy8ueG1sLy5wZGYvYCB8fCBleGl0IDEKK1RFTVBMQVRFRElSPSQyCisKKyMjCisjIFRoZXNlIFVSSSBzaG91bGQgYmUgcmV3cml0dGVuIGJ5IHlvdXIgZGlzdHJpYnV0aW9uJ3MgeG1sIGNhdGFsb2cgdG8KKyMgbWF0Y2ggeW91ciBsb2NhbHkgaW5zdGFsbGVkIFhTTCBzdHlsZXNoZWV0cy4KK1hTTF9CQVNFX1VSST0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQiCisKKyMgQ3JlYXRlcyBhIHRlbXBvcmFyeSBYU0wgc3R5bGVzaGVldCBiYXNlZCBvbiB0aXRsZXBhZ2UueHNsCit4c2x0cHJvYyAtbyAvdG1wL3RpdGxlcGFnZS54c2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAtLXhpbmNsdWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJFhTTF9CQVNFX1VSSS90ZW1wbGF0ZS90aXRsZXBhZ2UueHNsIFwKKyAgICAgICAgICRURU1QTEFURURJUi90aXRsZXBhZ2UudGVtcGxhdGVzLnhtbCB8fCBleGl0IDEKKworIyBDcmVhdGVzIHRoZSBmaWxlIG5lZWRlZCBmb3IgRk9QCit4c2x0cHJvYyAtLXhpbmNsdWRlICAgICAgICAgICAgICAgICAgICBcCisJIC0tc3RyaW5ncGFyYW0gaHlwaGVuYXRlIGZhbHNlIFwKKwkgLS1zdHJpbmdwYXJhbSBmb3JtYWwudGl0bGUucGxhY2VtZW50ICJmaWd1cmUgYWZ0ZXIiIFwKKwkgLS1zdHJpbmdwYXJhbSB1bGluay5zaG93IDEgXAorICAgICAgICAgLS1zdHJpbmdwYXJhbSAgYm9keS5mb250Lm1hc3RlciAgOSBcCisgICAgICAgICAtLXN0cmluZ3BhcmFtICB0aXRsZS5mb250Lm1hc3RlciAgMTEgXAorICAgICAgICAgLS1zdHJpbmdwYXJhbSBkcmFmdC53YXRlcm1hcmsuaW1hZ2UgIiRURU1QTEFURURJUi9kcmFmdC5wbmciIFwKKyAgICAgICAgIC0tc3RyaW5ncGFyYW0gIGNoYXB0ZXIuYXV0b2xhYmVsIDEgXAorICAgICAgICAgLS1zdHJpbmdwYXJhbSAgYXBwZW5kaXguYXV0b2xhYmVsIEEgXAorICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5hdXRvbGFiZWwgMSBcCisgICAgICAgICAtLXN0cmluZ3BhcmFtICBzZWN0aW9uLmxhYmVsLmluY2x1ZGVzLmNvbXBvbmVudC5sYWJlbCAxIFwKKyAgICAgICAgIC0tb3V0cHV0ICRGTyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRURU1QTEFURURJUi9wb2t5LWRiLXBkZi54c2wgICAgXAorCSAkMSAgICAgICAgICAgICAgICAgfHwgZXhpdCAxCisKKyMgSW52b2tlcyB0aGUgSmF2YSB2ZXJzaW9uIG9mIEZPUC4gIFVzZXMgdGhlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmaWxlIGNvbW1vbi9mb3AtY29uZmlnLnhtbAorZm9wIC1jICRURU1QTEFURURJUi9mb3AtY29uZmlnLnhtbCAtZm8gJEZPIC1wZGYgJFBERiAgICAgICB8fCBleGl0IDEKKworcm0gLWYgJEZPCitybSAtZiAgL3RtcC90aXRsZXBhZ2UueHNsCisKK2VjaG8KK2VjaG8gIiAjIyMjIFN1Y2Nlc3MhICRQREYgcmVhZHkuICMjIyMiCitlY2hvCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdHJhbnNpdGlvbmluZy10by1hLWN1c3RvbS1lbnZpcm9ubWVudC5yc3QgYi9wb2t5L2RvY3VtZW50YXRpb24vdHJhbnNpdGlvbmluZy10by1hLWN1c3RvbS1lbnZpcm9ubWVudC5yc3QKaW5kZXggYjg3ZmVjNi4uMTYwMTUyYiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3RyYW5zaXRpb25pbmctdG8tYS1jdXN0b20tZW52aXJvbm1lbnQucnN0CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90cmFuc2l0aW9uaW5nLXRvLWEtY3VzdG9tLWVudmlyb25tZW50LnJzdApAQCAtMSw0ICsxLDQgQEAKLS4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS1TQS0yLjAtVUsKKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBDQy1CWS0yLjAtVUsKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogVHJhbnNpdGlvbmluZyB0byBhIGN1c3RvbSBlbnZpcm9ubWVudCBmb3Igc3lzdGVtcyBkZXZlbG9wbWVudApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3doYXQtaS13aXNoLWlkLWtub3duLnJzdCBiL3Bva3kvZG9jdW1lbnRhdGlvbi93aGF0LWktd2lzaC1pZC1rbm93bi5yc3QKaW5kZXggNTkzYzZmZS4uNDk1ZWJkYyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3doYXQtaS13aXNoLWlkLWtub3duLnJzdAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vd2hhdC1pLXdpc2gtaWQta25vd24ucnN0CkBAIC0xLDQgKzEsNCBAQAotLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLVNBLTIuMC1VSworLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDLUJZLTIuMC1VSwogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogV2hhdCBJIHdpc2ggSSdkIGtub3duIGFib3V0IFlvY3RvIFByb2plY3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZiBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgppbmRleCBiNzE5YWU0Li5lZDM3ZjRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCkBAIC01OCw2ICs1OCwxNCBAQAogICAgICAgICAgICAgZGViaWFuLTEwIFxuIFwKICAgICAgICAgICAgIG9wZW5zdXNlbGVhcC0xNS4xIFxuIFwKICAgICAgICAgICAgICIKKyMKKyMgT0VMQVlPVVRfQUJJIGFsbG93cyB1cyB0byBub3RpZnkgdXNlcnMgd2hlbiB0aGUgZm9ybWF0IG9mIFRNUERJUiBjaGFuZ2VzIGluCisjIGFuIGluY29tcGF0aWJsZSB3YXkuIFN1Y2ggY2hhbmdlcyBzaG91bGQgdXN1YWxseSBiZSBkZXRhaWxlZCBpbiB0aGUgY29tbWl0CisjIHRoYXQgYnJlYWtzIHRoZSBmb3JtYXQgYW5kIGhhdmUgYmVlbiBwcmV2aW91c2x5IGRpc2N1c3NlZCBvbiB0aGUgbWFpbGluZyBsaXN0CisjIHdpdGggZ2VuZXJhbCBhZ3JlZW1lbnQgZnJvbSB0aGUgY29yZSB0ZWFtLgorIworT0VMQVlPVVRfQUJJID0gIjEyIgorCiAjIGFkZCBwb2t5IHNhbml0eSBiYmNsYXNzCiBJTkhFUklUICs9ICJwb2t5LXNhbml0eSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKaW5kZXggNjhlNzFiOS4uMDMyZjI2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCkBAIC0xOTEsNyArMTkxLDcgQEAKICMgc2h1dGRvd24gdGhlIGJ1aWxkLiBJZiB0aGVyZSBpcyBsZXNzIHRoYXQgMTAwTUIgb3IgMUsgaW5vZGVzLCBwZXJmb3JtIGEgaGFyZCBhYm9ydAogIyBvZiB0aGUgYnVpbGQuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBydW5uaW5nIGNvbXBsZXRlbHkgb3V0IG9mIHNwYWNlIGNhbiBjb3JydXB0CiAjIGZpbGVzIGFuZCBkYW1hZ2VzIHRoZSBidWlsZCBpbiB3YXlzIHdoaWNoIG1heSBub3QgYmUgZWFzaWx5IHJlY292ZXJhYmxlLgotIyBJdCdzIG5lY2Vzc2FyeSB0byBtb25pdG9yIC90bXAsIGlmIHRoZXJlIGlzIG5vIHNwYWNlIGxlZnQgdGhlIGJ1aWxkIHdpbGwgZmFpbAorIyBJdCdzIG5lY2VzYXJ5IHRvIG1vbml0b3IgL3RtcCwgaWYgdGhlcmUgaXMgbm8gc3BhY2UgbGVmdCB0aGUgYnVpbGQgd2lsbCBmYWlsCiAjIHdpdGggdmVyeSBleG90aWMgZXJyb3JzLgogQkJfRElTS01PTl9ESVJTID8/PSAiXAogICAgIFNUT1BUQVNLUywke1RNUERJUn0sMUcsMTAwSyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZAppbmRleCA2MjQxNWE0Li40NGEwMTY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQKQEAgLTMwMSw3ICszMDEsNyBAQAogIyB3aWxsIGNvcnJlY3QgdGhpcyBjb25kaXRpb24uCiAjCiAjIEJ5IGRlZmF1bHQgdGhlIHN5c3RlbSBsb29rcyBpbiB0aGUgQkJQQVRIIGZvciBmaWxlcy9wYXNzd2QgYW5kIGZpbGVzL2dyb3VwCi0jIHRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNwZWNpZnlpbmcgVVNFUkFERF9VSUQvR0lEX1RBQkxFUy4KKyMgdGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRlbiBieSBzcGVmeWluZyBVU0VSQUREX1VJRC9HSURfVEFCTEVTLgogIwogI1VTRVJBRERFWFRFTlNJT04gPSAidXNlcmFkZC1zdGF0aWNpZHMiCiAjVVNFUkFERF9VSURfVEFCTEVTID0gImZpbGVzL3Bhc3N3ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXBhdGNoLW92ZXJyaWRlcy5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXBhdGNoLW92ZXJyaWRlcy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM2YzllZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVNVTU1BUlkgPSAiZGV2dG9vbCB0ZXN0IGZvciBvdmVycmlkZXMgYW5kIHBhdGNoZXMiCi1MSUNFTlNFID0gIkNMT1NFRCIKLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLQotU1JDX1VSSSA9ICJmaWxlOi8vc291cmNlO3N1YmRpcj0ke0JQfSIKLVNSQ19VUklfYXBwZW5kX3FlbXVhcm0gPSAiIGZpbGU6Ly9hcm0ucGF0Y2g7c3RyaXBsZXZlbD0wIgotU1JDX1VSSV9hcHBlbmRfcWVtdXg4NiA9ICIgZmlsZTovL3g4Ni5wYXRjaDtzdHJpcGxldmVsPTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMvcWVtdWFybS9hcm0ucGF0Y2ggYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMvcWVtdWFybS9hcm0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzM2EyNzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtcGF0Y2gtb3ZlcnJpZGVzL3FlbXVhcm0vYXJtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0tLS0gc291cmNlLm9yaWcJMjAyMC0xMC0wNiAxMzoyNjoxMC43OTI2ODg2MzAgKzAxMDAKLSsrKyBzb3VyY2UJMjAyMC0xMC0wNiAxMzoyNjoxOC44NTM0MjQ2OTQgKzAxMDAKLUBAIC0xICsxIEBACi0tVGhpcyBpcyBhIHRlc3QgZm9yIHNvbWV0aGluZwotK1RoaXMgaXMgYSB0ZXN0IGZvciBxZW11YXJtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMvcWVtdXg4Ni94ODYucGF0Y2ggYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMvcWVtdXg4Ni94ODYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMGExNzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtcGF0Y2gtb3ZlcnJpZGVzL3FlbXV4ODYveDg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0tLS0gc291cmNlLm9yaWcJMjAyMC0xMC0wNiAxMzoyNjoxMC43OTI2ODg2MzAgKzAxMDAKLSsrKyBzb3VyY2UJMjAyMC0xMC0wNiAxMzoyNjoxOC44NTM0MjQ2OTQgKzAxMDAKLUBAIC0xICsxIEBACi0tVGhpcyBpcyBhIHRlc3QgZm9yIHNvbWV0aGluZwotK1RoaXMgaXMgYSB0ZXN0IGZvciBxZW11eDg2CmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMvc291cmNlIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtcGF0Y2gtb3ZlcnJpZGVzL3NvdXJjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MxNGNlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC1wYXRjaC1vdmVycmlkZXMvc291cmNlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhpcyBpcyBhIHRlc3QgZm9yIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMtYmFyZW1ldGFsL2JhcmVtZXRhbC1leGFtcGxlcy9iYXJlbWV0YWwtaGVsbG93b3JsZF9naXQuYmIgYi9wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1iYXJlbWV0YWwvYmFyZW1ldGFsLWV4YW1wbGVzL2JhcmVtZXRhbC1oZWxsb3dvcmxkX2dpdC5iYgppbmRleCA3YTU4MGJkLi4zYWNjNTIzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1iYXJlbWV0YWwvYmFyZW1ldGFsLWV4YW1wbGVzL2JhcmVtZXRhbC1oZWxsb3dvcmxkX2dpdC5iYgorKysgYi9wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1iYXJlbWV0YWwvYmFyZW1ldGFsLWV4YW1wbGVzL2JhcmVtZXRhbC1oZWxsb3dvcmxkX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FlaHMyOS9iYXJlbWV0YWwtaGVsbG9xZW11LmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgogCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorUyA9ICIke1dPUktESVJ9L2dpdC8iCiAKICMgVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgc2hvdWxkIGJlIHNldCB0byBhY2NvbW9kYXRlIGVhY2ggYXBwbGljYXRpb24KIEJBUkVNRVRBTF9CSU5OQU1FID89ICJoZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQKaW5kZXggNGVlODk1ZC4uOWMzN2Y5MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQKQEAgLTcsOCArNyw4IEBACiBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCiBLTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgogCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ID89ICJjZmNkZDYzMTQ1YzBkNzQxZTU3ZWUzZTNlNThmNzk0MjI5YzZjMDljIgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiY2ZjZGQ2MzE0NWMwZDc0MWU1N2VlM2UzZTU4Zjc5NDIyOWM2YzA5YyIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgPz0gIjcwNmVmZWM0YzFlMjcwZWM1ZGRhOTIyNzU4OThjZDQ2NWRmZGM3ZGQiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI3MDZlZmVjNGMxZTI3MGVjNWRkYTkyMjc1ODk4Y2Q0NjVkZmRjN2RkIgogU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiNzA2ZWZlYzRjMWUyNzBlYzVkZGE5MjI3NTg5OGNkNDY1ZGZkYzdkZCIKIFNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjcwNmVmZWM0YzFlMjcwZWM1ZGRhOTIyNzU4OThjZDQ2NWRmZGM3ZGQiCiAKQEAgLTE3LDcgKzE3LDcgQEAKIENPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCiBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgogCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNS40LjY5IgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuNC42OSIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI1LjQuNTgiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNS40LjU4IgogTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjUuNC41OCIKIExJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI1LjQuNTgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuOC5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS44LmJiYXBwZW5kCmluZGV4IGEwNGYzMzIuLjVkODQ0NDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS44LmJiYXBwZW5kCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS44LmJiYXBwZW5kCkBAIC03LDggKzcsOCBAQAogS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgogS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKIAotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiA/PSAiNTk4MTAwMWJmMDNmMGQwYzFjZjY0MWEyMjg3YWI2MzY4YmFmNjI4YSIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjU5ODEwMDFiZjAzZjBkMGMxY2Y2NDFhMjI4N2FiNjM2OGJhZjYyOGEiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ID89ICI5MTJhZGYxNjZlYjA2ODhlMDExMTU0MDQ4ZjVmYTBlNTg2MzI0OWMzIgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiOTEyYWRmMTY2ZWIwNjg4ZTAxMTE1NDA0OGY1ZmEwZTU4NjMyNDljMyIKIFNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjkxMmFkZjE2NmViMDY4OGUwMTExNTQwNDhmNWZhMGU1ODYzMjQ5YzMiCiBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICI5MTJhZGYxNjZlYjA2ODhlMDExMTU0MDQ4ZjVmYTBlNTg2MzI0OWMzIgogCkBAIC0xNyw3ICsxNyw3IEBACiBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgogQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKIAotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuOC4xMyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjguMTMiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNS44LjIiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNS44LjIiCiBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS44LjIiCiBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNS44LjIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCA1OTgyOThlLi5hZmYxZjlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKQEAgLTUzLDcgKzUzLDcgQEAKIEFSQ0hJVkVSX01PREVbbWlycm9yXSA/PSAic3BsaXQiCiAKIERFUExPWV9ESVJfU1JDID89ICIke0RFUExPWV9ESVJ9L3NvdXJjZXMiCi1BUkNISVZFUl9UT1BESVIgPz0gIiR7V09SS0RJUn0vYXJjaGl2ZXItc291cmNlcyIKK0FSQ0hJVkVSX1RPUERJUiA/PSAiJHtXT1JLRElSfS9kZXBsb3ktc291cmNlcyIKIEFSQ0hJVkVSX09VVERJUiA9ICIke0FSQ0hJVkVSX1RPUERJUn0vJHtUQVJHRVRfU1lTfS8ke1BGfS8iCiBBUkNISVZFUl9SUE1UT1BESVIgPz0gIiR7V09SS0RJUn0vZGVwbG95LXNvdXJjZXMtcnBtIgogQVJDSElWRVJfUlBNT1VURElSID0gIiR7QVJDSElWRVJfUlBNVE9QRElSfS8ke1RBUkdFVF9TWVN9LyR7UEZ9LyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwppbmRleCA1YTBiMGM2Li40YzY4MWNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC0zODgsMTYgKzM4OCw2IEBACiAgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIkRJU1RST19GRUFUVVJFUyIsIGQpCiAgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIk1BQ0hJTkVfRkVBVFVSRVMiLCBkKQogCi0gICAgaWYgZC5nZXRWYXIoIlMiKVstMV0gPT0gJy8nOgotICAgICAgICBiYi53YXJuKCJSZWNpcGUgJXMgc2V0cyBTIHZhcmlhYmxlIHdpdGggdHJhaWxpbmcgc2xhc2ggJyVzJywgcmVtb3ZlIGl0IiAlIChkLmdldFZhcigiUE4iKSwgZC5nZXRWYXIoIlMiKSkpCi0gICAgaWYgZC5nZXRWYXIoIkIiKVstMV0gPT0gJy8nOgotICAgICAgICBiYi53YXJuKCJSZWNpcGUgJXMgc2V0cyBCIHZhcmlhYmxlIHdpdGggdHJhaWxpbmcgc2xhc2ggJyVzJywgcmVtb3ZlIGl0IiAlIChkLmdldFZhcigiUE4iKSwgZC5nZXRWYXIoIkIiKSkpCi0KLSAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKGQuZ2V0VmFyKCJXT1JLRElSIikpICE9IG9zLnBhdGgubm9ybXBhdGgoZC5nZXRWYXIoIlMiKSk6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCJQU0VVRE9fSUdOT1JFX1BBVEhTIiwgIiwke1N9IikKLSAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKGQuZ2V0VmFyKCJXT1JLRElSIikpICE9IG9zLnBhdGgubm9ybXBhdGgoZC5nZXRWYXIoIkIiKSk6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCJQU0VVRE9fSUdOT1JFX1BBVEhTIiwgIiwke0J9IikKLQogICAgICMgSGFuZGxlIFBBQ0tBR0VDT05GSUcKICAgICAjCiAgICAgIyBUaGVzZSB0YWtlIHRoZSBmb3JtOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKaW5kZXggNDE5MDBlNi4uMjgwZDYwMDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcwpAQCAtMTk5LDcgKzE5OSw2IEBACiAgICAgICAgICAgICAjIFJ1biBkb19wYXRjaCBmdW5jdGlvbiB3aXRoIHRoZSBvdmVycmlkZSBhcHBsaWVkCiAgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsICc6Jy5qb2luKG5vX292ZXJyaWRlcykpCi0gICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdGSUxFU09WRVJSSURFUycsICc6Jy5qb2luKG5vX292ZXJyaWRlcykpCiAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX3BhdGNoJywgbG9jYWxkYXRhKQogICAgICAgICAgICAgcm1fcGF0Y2hlcygpCiAgICAgICAgICAgICAjIE5vdyB3ZSBuZWVkIHRvIHJlY29uY2lsZSB0aGUgZGV2IGJyYW5jaCB3aXRoIHRoZSBuby1vdmVycmlkZXMgb25lCkBAIC0yMTcsOCArMjE2LDcgQEAKICAgICAgICAgICAgICAgICAjIFJlc2V0IGJhY2sgdG8gdGhlIGluaXRpYWwgY29tbWl0IG9uIGEgbmV3IGJyYW5jaAogICAgICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMgLWIgZGV2dG9vbC1vdmVycmlkZS0lcycgJSAoaW5pdGlhbF9yZXYsIG92ZXJyaWRlKSwgY3dkPXNyY3N1YmRpcikKICAgICAgICAgICAgICAgICAjIFJ1biBkb19wYXRjaCBmdW5jdGlvbiB3aXRoIHRoZSBvdmVycmlkZSBhcHBsaWVkCi0gICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgJzonLmpvaW4obm9fb3ZlcnJpZGVzICsgW292ZXJyaWRlXSkpCi0gICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignRklMRVNPVkVSUklERVMnLCAnOicuam9pbihub19vdmVycmlkZXMgKyBbb3ZlcnJpZGVdKSkKKyAgICAgICAgICAgICAgICBsb2NhbGRhdGEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOiVzJyAlIG92ZXJyaWRlKQogICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fcGF0Y2gnLCBsb2NhbGRhdGEpCiAgICAgICAgICAgICAgICAgcm1fcGF0Y2hlcygpCiAgICAgICAgICAgICAgICAgIyBOb3cgd2UgbmVlZCB0byByZWNvbmNpbGUgdGhlIG5ldyBicmFuY2ggd2l0aCB0aGUgbm8tb3ZlcnJpZGVzIG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKaW5kZXggMDQ1ZjQ0OS4uNzMwYzg0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCkBAIC0xMjEsNyArMTIxLDcgQEAKIGRlZiByb290ZnNfdmFyaWFibGVzKGQpOgogICAgIGZyb20gb2Uucm9vdGZzIGltcG9ydCB2YXJpYWJsZV9kZXBlbmRzCiAgICAgdmFyaWFibGVzID0gWydJTUFHRV9ERVZJQ0VfVEFCTEUnLCdJTUFHRV9ERVZJQ0VfVEFCTEVTJywnQlVJTERfSU1BR0VTX0ZST01fRkVFRFMnLCdJTUFHRV9UWVBFU19NQVNLRUQnLCdJTUFHRV9ST09URlNfQUxJR05NRU5UJywnSU1BR0VfT1ZFUkhFQURfRkFDVE9SJywnSU1BR0VfUk9PVEZTX1NJWkUnLCdJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UnLAotICAgICAgICAgICAgICAgICAnSU1BR0VfUk9PVEZTX01BWFNJWkUnLCdJTUFHRV9OQU1FJywnSU1BR0VfTElOS19OQU1FJywnSU1BR0VfTUFOSUZFU1QnLCdERVBMT1lfRElSX0lNQUdFJywnSU1BR0VfRlNUWVBFUycsJ0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScsJ0lNQUdFX0xJTkdVQVMnLCAnSU1BR0VfTElOR1VBU19DT01QTEVNRU5UQVJZJywgJ0lNQUdFX0xPQ0FMRVNfQVJDSElWRScsCisgICAgICAgICAgICAgICAgICdJTUFHRV9ST09URlNfTUFYU0laRScsJ0lNQUdFX05BTUUnLCdJTUFHRV9MSU5LX05BTUUnLCdJTUFHRV9NQU5JRkVTVCcsJ0RFUExPWV9ESVJfSU1BR0UnLCdJTUFHRV9GU1RZUEVTJywnSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJywnSU1BR0VfTElOR1VBUycsICdJTUFHRV9MSU5HVUFTX0NPTVBMRU1FTlRBUlknLAogICAgICAgICAgICAgICAgICAnTVVMVElMSUJSRV9BTExPV19SRVAnLCdNVUxUSUxJQl9URU1QX1JPT1RGUycsJ01VTFRJTElCX1ZBUklBTlRTJywnTVVMVElMSUJTJywnQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMnLCdNVUxUSUxJQl9HTE9CQUxfVkFSSUFOVFMnLCdCQURfUkVDT01NRU5EQVRJT05TJywnTk9fUkVDT01NRU5EQVRJT05TJywKICAgICAgICAgICAgICAgICAgJ1BBQ0tBR0VfQVJDSFMnLCdQQUNLQUdFX0NMQVNTRVMnLCdUQVJHRVRfVkVORE9SJywnVEFSR0VUX0FSQ0gnLCdUQVJHRVRfT1MnLCdPVkVSUklERVMnLCdCQkVYVEVORFZBUklBTlQnLCdGRUVEX0RFUExPWURJUl9CQVNFX1VSSScsJ0lOVEVSQ0VQVF9ESVInLCdVU0VfREVWRlMnLAogICAgICAgICAgICAgICAgICAnQ09OVkVSU0lPTlRZUEVTJywgJ0lNQUdFX0dFTl9ERUJVR0ZTJywgJ1JPT1RGU19ST19VTk5FRURFRCcsICdJTUdERVBMT1lESVInLCAnUEFDS0FHRV9FWENMVURFX0NPTVBMRU1FTlRBUlknLCAnUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMnLCAnSU1BR0VfSU5TVEFMTF9ERUJVR0ZTJ10KQEAgLTE3Myw5ICsxNzMsNiBAQAogCiBMSU5HVUFTX0lOU1RBTEwgPz0gIiR7QCIgIi5qb2luKG1hcChsYW1iZGEgczogImxvY2FsZS1iYXNlLSVzIiAlIHMsIGQuZ2V0VmFyKCdJTUFHRV9MSU5HVUFTJykuc3BsaXQoKSkpfSIKIAotIyBwZXIgZGVmYXVsdCBjcmVhdGUgYSBsb2NhbGUgYXJjaGl2ZQotSU1BR0VfTE9DQUxFU19BUkNISVZFID89ICcxJwotCiAjIFByZWZlciBpbWFnZSwgYnV0IHVzZSB0aGUgZmFsbGJhY2sgZmlsZXMgZm9yIGxvb2t1cHMgaWYgdGhlIGltYWdlIG9uZXMKICMgYXJlbid0IHlldCBhdmFpbGFibGUuCiBQU0VVRE9fUEFTU1dEID0gIiR7SU1BR0VfUk9PVEZTfToke1NUQUdJTkdfRElSX05BVElWRX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCmluZGV4IDI4NmUwZjUuLjRmODg4ZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCkBAIC01LDcgKzUsNyBAQAogICAgICAgICAgICBJTUFHRV9MSU5LX05BTUUgSU1BR0VfUk9PVEZTIElOSVRSQU1GU19GU1RZUEVTIElOSVRSRCBJTklUUkRfTElWRSBJU09ESVIgUkVDSVBFX1NZU1JPT1RfTkFUSVZFIFwKICAgICAgICAgICAgUk9PVEZTX1NJWkUgU1RBR0lOR19EQVRBRElSIFNUQUdJTkdfRElSIFNUQUdJTkdfTElCRElSIFRBUkdFVF9TWVMgXAogICAgICAgICAgICBLRVJORUxfSU1BR0VUWVBFIE1BQ0hJTkUgSU5JVFJBTUZTX0lNQUdFIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgSU5JVFJBTUZTX0xJTktfTkFNRSBBUFBFTkQgXAotICAgICAgICAgICBBU1NVTUVfUFJPVklERUQgUFNFVURPX0lHTk9SRV9QQVRIUyIKKyAgICAgICAgICAgQVNTVU1FX1BST1ZJREVEIgogCiBpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTklUUkFNRlNfSU1BR0VfQlVORExFJywgJzEnLCAna2VybmVsLWFydGlmYWN0LW5hbWVzJywgJycsIGQpfQogCkBAIC0zOSw4ICszOSw2IEBACiBJTUFHRV9DTURfd2ljW3ZhcmRlcHNleGNsdWRlXSA9ICJXS1NfRlVMTF9QQVRIIFdLU19GSUxFUyBUT1BESVIiCiBkb19pbWFnZV93aWNbY2xlYW5kaXJzXSA9ICIke1dPUktESVJ9L2J1aWxkLXdpYyIKIAotUFNFVURPX0lHTk9SRV9QQVRIUyAuPSAiLCR7V09SS0RJUn0vYnVpbGQtd2ljIgotCiAjIFJlYnVpbGQgd2hlbiB0aGUgd2tzIGZpbGUgb3IgdmFycyBpbiBXSUNWQVJTIGNoYW5nZQogVVNJTkdfV0lDID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnSU1BR0VfRlNUWVBFUycsICd3aWMgJyArICcgJy5qb2luKCd3aWMuJXMnICUgYyBmb3IgYyBpbiAnJHtDT05WRVJTSU9OVFlQRVN9Jy5zcGxpdCgpKSwgJzEnLCAnJywgZCl9IgogV0tTX0ZJTEVfQ0hFQ0tTVU0gPSAiJHtAJyR7V0tTX0ZVTExfUEFUSH06JXMnICUgb3MucGF0aC5leGlzdHMoJyR7V0tTX0ZVTExfUEFUSH0nKSBpZiAnJHtVU0lOR19XSUN9JyBlbHNlICcnfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKaW5kZXggYmIyZjNjNC4uZmE0ZWE2ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKQEAgLTU2LDIyICs1Niw2IEBACiAjIGZpdEltYWdlIFNpZ25hdHVyZSBBbGdvCiBGSVRfU0lHTl9BTEcgPz0gInJzYTIwNDgiCiAKLSMgR2VuZXJhdGUga2V5cyBmb3Igc2lnbmluZyBmaXRJbWFnZQotRklUX0dFTkVSQVRFX0tFWVMgPz0gIjAiCi0KLSMgU2l6ZSBvZiBwcml2YXRlIGtleSBpbiBudW1iZXIgb2YgYml0cwotRklUX1NJR05fTlVNQklUUyA/PSAiMjA0OCIKLQotIyBhcmdzIHRvIG9wZW5zc2wgZ2VucnNhIChEZWZhdWx0IGlzIGp1c3QgdGhlIHB1YmxpYyBleHBvbmVudCkKLUZJVF9LRVlfR0VOUlNBX0FSR1MgPz0gIi1GNCIKLQotIyBhcmdzIHRvIG9wZW5zc2wgcmVxIChEZWZhdWx0IGlzIC1iYXRjaCBmb3Igbm9uIGludGVyYWN0aXZlIG1vZGUgYW5kCi0jIC1uZXcgZm9yIG5ldyBjZXJ0aWZpY2F0ZSkKLUZJVF9LRVlfUkVRX0FSR1MgPz0gIi1iYXRjaCAtbmV3IgotCi0jIFN0YW5kYXJkIGZvcm1hdCBmb3IgcHVibGljIGtleSBjZXJ0aWZpY2F0ZQotRklUX0tFWV9TSUdOX1BLQ1MgPz0gIi14NTA5IgotCiAjCiAjIEVtaXQgdGhlIGZpdEltYWdlIElUUyBoZWFkZXIKICMKQEAgLTUzOCwzNCArNTIyLDYgQEAKIAogYWRkdGFzayBhc3NlbWJsZV9maXRpbWFnZV9pbml0cmFtZnMgYmVmb3JlIGRvX2RlcGxveSBhZnRlciBkb19idW5kbGVfaW5pdHJhbWZzCiAKLWRvX2dlbmVyYXRlX3JzYV9rZXlzKCkgewotCWlmIFsgIiR7VUJPT1RfU0lHTl9FTkFCTEV9IiA9ICIwIiBdICYmIFsgIiR7RklUX0dFTkVSQVRFX0tFWVN9IiA9ICIxIiBdOyB0aGVuCi0JCWJid2FybiAiRklUX0dFTkVSQVRFX0tFWVMgaXMgc2V0IHRvIDEgZXZlbnRob3VnaCBVQk9PVF9TSUdOX0VOQUJMRSBpcyBzZXQgdG8gMC4gVGhlIGtleXMgd2lsbCBub3QgYmUgZ2VuZXJhdGVkIGFzIHRoZXkgd29uJ3QgYmUgdXNlZC4iCi0JZmkKLQotCWlmIFsgIiR7VUJPT1RfU0lHTl9FTkFCTEV9IiA9ICIxIiBdICYmIFsgIiR7RklUX0dFTkVSQVRFX0tFWVN9IiA9ICIxIiBdOyB0aGVuCi0KLQkJIyBHZW5lcmF0ZSBrZXlzIG9ubHkgaWYgdGhleSBkb24ndCBhbHJlYWR5IGV4aXN0Ci0JCWlmIFsgISAtZiAiJHtVQk9PVF9TSUdOX0tFWURJUn0vJHtVQk9PVF9TSUdOX0tFWU5BTUV9Ii5rZXkgXSB8fCBcCi0JCQlbICEgLWYgIiR7VUJPT1RfU0lHTl9LRVlESVJ9LyR7VUJPT1RfU0lHTl9LRVlOQU1FfSIuY3J0XTsgdGhlbgotCi0JCQkjIG1ha2UgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QKLQkJCW1rZGlyIC1wICIke1VCT09UX1NJR05fS0VZRElSfSIKLQotCQkJZWNobyAiR2VuZXJhdGluZyBSU0EgcHJpdmF0ZSBrZXkgZm9yIHNpZ25pbmcgZml0SW1hZ2UiCi0JCQlvcGVuc3NsIGdlbnJzYSAke0ZJVF9LRVlfR0VOUlNBX0FSR1N9IC1vdXQgXAotCQkJCSIke1VCT09UX1NJR05fS0VZRElSfS8ke1VCT09UX1NJR05fS0VZTkFNRX0iLmtleSBcCi0JCQkJIiR7RklUX1NJR05fTlVNQklUU30iCi0KLQkJCWVjaG8gIkdlbmVyYXRpbmcgY2VydGlmaWNhdGUgZm9yIHNpZ25pbmcgZml0SW1hZ2UiCi0JCQlvcGVuc3NsIHJlcSAke0ZJVF9LRVlfUkVRX0FSR1N9ICIke0ZJVF9LRVlfU0lHTl9QS0NTfSIgXAotCQkJCS1rZXkgIiR7VUJPT1RfU0lHTl9LRVlESVJ9LyR7VUJPT1RfU0lHTl9LRVlOQU1FfSIua2V5IFwKLQkJCQktb3V0ICIke1VCT09UX1NJR05fS0VZRElSfS8ke1VCT09UX1NJR05fS0VZTkFNRX0iLmNydAotCQlmaQotCWZpCi19Ci0KLWFkZHRhc2sgZ2VuZXJhdGVfcnNhX2tleXMgYmVmb3JlIGRvX2Fzc2VtYmxlX2ZpdGltYWdlIGFmdGVyIGRvX2NvbXBpbGUKIAoga2VybmVsX2RvX2RlcGxveVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCiBrZXJuZWxfZG9fZGVwbG95X2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCmluZGV4IDYxYjMxZDUuLjk5MDUwNWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwpAQCAtMTc4LDggKzE3OCw2IEBACiBkb19wb3B1bGF0ZV9zZGtbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U0RLX0RFUExPWX0iCiBkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9JHtTREtNQUNISU5FfSIKIAotUFNFVURPX0lHTk9SRV9QQVRIUyAuPSAiLCR7U0RLREVQTE9ZRElSfSIKLQogZmFrZXJvb3QgY3JlYXRlX3Nka19maWxlcygpIHsKIAljcCAke0NPUkVCQVNFfS9zY3JpcHRzL3JlbG9jYXRlX3Nkay5weSAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKaW5kZXggMzI2MmQwOC4uZTAyMWI5ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKQEAgLTYxOSw5ICs2MTksNiBAQAogICAgICAgICAgICAgICAgIGYud3JpdGUoY3VycmVudF9hYmkpCiAgICAgICAgIGVsaWYgaW50KGFiaSkgPD0gMTEgYW5kIGN1cnJlbnRfYWJpID09ICIxMiI6CiAgICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJUaGUgbGF5b3V0IG9mIFRNUERJUiBjaGFuZ2VkIGZvciBSZWNpcGUgU3BlY2lmaWMgU3lzcm9vdHMuXG5Db252ZXJzaW9uIGRvZXNuJ3QgbWFrZSBzZW5zZSBhbmQgdGhpcyBjaGFuZ2Ugd2lsbCByZWJ1aWxkIGV2ZXJ5dGhpbmcgc28gcGxlYXNlIGRlbGV0ZSBUTVBESVIgKCVzKS5cbiIgJSBkLmdldFZhcigiVE1QRElSIikpCi0gICAgICAgIGVsaWYgaW50KGFiaSkgPD0gMTMgYW5kIGN1cnJlbnRfYWJpID09ICIxNCI6Ci0gICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJUTVBESVIgY2hhbmdlZCB0byBpbmNsdWRlIHBhdGggZmlsdGVyaW5nIGZyb20gdGhlIHBzZXVkbyBkYXRhYmFzZS5cbkl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBhIGNsZWFuIFRNUERJUiB3aXRoIHRoZSBuZXcgcHNldWRvIHBhdGggZmlsdGVyaW5nIHNvIFRNUERJUiAoJXMpIHdvdWxkIG5lZWQgdG8gYmUgcmVtb3ZlZCB0byBjb250aW51ZS5cbiIgJSBkLmdldFZhcigiVE1QRElSIikpCi0KICAgICAgICAgZWxpZiAoYWJpICE9IGN1cnJlbnRfYWJpKToKICAgICAgICAgICAgICMgQ29kZSB0byBjb252ZXJ0IGZyb20gb25lIEFCSSB0byBhbm90aGVyIGNvdWxkIGdvIGhlcmUgaWYgcG9zc2libGUuCiAgICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJFcnJvciwgVE1QRElSIGhhcyBjaGFuZ2VkIGl0cyBsYXlvdXQgdmVyc2lvbiBudW1iZXIgKCVzIHRvICVzKSBhbmQgeW91IG5lZWQgdG8gZWl0aGVyIHJlYnVpbGQsIHJldmVydCBvciBhZGp1c3QgaXQgYXQgeW91ciBvd24gcmlzay5cbiIgJSAoYWJpLCBjdXJyZW50X2FiaSkpCkBAIC03NzIsOCArNzY5LDggQEAKIAogICAgICMgQ2hlY2sgdGhlIFB5dGhvbiB2ZXJzaW9uLCB3ZSBub3cgaGF2ZSBhIG1pbmltdW0gb2YgUHl0aG9uIDMuNAogICAgIGltcG9ydCBzeXMKLSAgICBpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDMwNTAwRjA6Ci0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoJ1RoZSBzeXN0ZW0gcmVxdWlyZXMgYXQgbGVhc3QgUHl0aG9uIDMuNSB0byBydW4uIFBsZWFzZSB1cGRhdGUgeW91ciBQeXRob24gaW50ZXJwcmV0ZXIuXG4nKQorICAgIGlmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMzA0MDAwMDoKKyAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgnVGhlIHN5c3RlbSByZXF1aXJlcyBhdCBsZWFzdCBQeXRob24gMy40IHRvIHJ1bi4gUGxlYXNlIHVwZGF0ZSB5b3VyIFB5dGhvbiBpbnRlcnByZXRlci5cbicpCiAKICAgICAjIENoZWNrIHRoZSBiaXRiYWtlIHZlcnNpb24gbWVldHMgbWluaW11bSByZXF1aXJlbWVudHMKICAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKaW5kZXggMWUxOTkxNy4uMzE2YzBmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKQEAgLTg5LDcgKzg5LDcgQEAKICAgICAgICAgIyBsZGQgb3V0cHV0IGlzICJsZGQgKFVidW50dSBHTElCQyAyLjIzLTB1YnVudHUxMCkgMi4yMyIsIGV4dHJhY3QgbGFzdCBvcHRpb24gZnJvbSBmaXJzdCBsaW5lCiAgICAgICAgIGdsaWJjdmVyID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJsZGQiLCAiLS12ZXJzaW9uIl0pLmRlY29kZSgndXRmLTgnKS5zcGxpdCgnXG4nKVswXS5zcGxpdCgpWy0xXQogICAgICAgICBpZiBiYi51dGlscy52ZXJjbXBfc3RyaW5nKGQuZ2V0VmFyKCJVTklOQVRJVkVfTUFYR0xJQkNWRVJTSU9OIiksIGdsaWJjdmVyKSA8IDA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIllvdXIgaG9zdCBnbGliYyB2ZXJzaW9uICglcykgaXMgbmV3ZXIgdGhhbiB0aGF0IGluIHVuaW5hdGl2ZSAoJXMpLiBEaXNhYmxpbmcgdW5pbmF0aXZlIHNvIHRoYXQgc3N0YXRlIGlzIG5vdCBjb3JydXB0ZWQuIiAlIChnbGliY3ZlciwgZC5nZXRWYXIoIlVOSU5BVElWRV9NQVhHTElCQ1ZFUlNJT04iKSkpCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIllvdXIgaG9zdCBnbGliYyB2ZXJzb24gKCVzKSBpcyBuZXdlciB0aGFuIHRoYXQgaW4gdW5pbmF0aXZlICglcykuIERpc2FibGluZyB1bmluYXRpdmUgc28gdGhhdCBzc3RhdGUgaXMgbm90IGNvcnJ1cHRlZC4iICUgKGdsaWJjdmVyLCBkLmdldFZhcigiVU5JTkFUSVZFX01BWEdMSUJDVkVSU0lPTiIpKSkKIAogICAgICAgICBjbWQgPSBkLmV4cGFuZCgiXAogbWtkaXIgLXAgJHtVTklOQVRJVkVfU1RBR0lOR19ESVJ9LXVuaW5hdGl2ZTsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcwppbmRleCAzMDlmNjI1Li45MDAyNDQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcwpAQCAtNSwxMSArNSw2IEBACiAKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKLUVYVFJBX09FV0FGX0JVSUxEID8/PSAiIgotIyBJbiBtb3N0IGNhc2VzLCB5b3Ugd2FudCB0byBwYXNzIHRoZSBzYW1lIGFyZ3VtZW50cyB0byBgd2FmIGJ1aWxkYCBhbmQgYHdhZgotIyBpbnN0YWxsYCwgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgaXQgaWYgbmVjZXNzYXJ5Ci1FWFRSQV9PRVdBRl9JTlNUQUxMID8/PSAiJHtFWFRSQV9PRVdBRl9CVUlMRH0iCi0KIGRlZiB3YWZsb2NrX2hhc2goZCk6CiAgICAgIyBDYWxjdWxhdGVzIHRoZSBoYXNoIHVzZWQgZm9yIHRoZSB3YWYgbG9jayBmaWxlLiBUaGlzIHNob3VsZCBpbmNsdWRlCiAgICAgIyBhbGwgb2YgdGhlIHVzZXIgY29udHJvbGxhYmxlIGlucHV0cyBwYXNzZWQgdG8gd2FmIGNvbmZpZ3VyZS4gTm90ZQpAQCAtNjAsMTEgKzU1LDExIEBACiAKIGRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gIm91dG9mOl5cW1xzKihcZCspL1xzKihcZCspXF1ccysiCiB3YWZfZG9fY29tcGlsZSgpICB7Ci0JKGNkICR7U30gJiYgLi93YWYgYnVpbGQgJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLWolZCcsIGxpbWl0PTY0KX0gJHtFWFRSQV9PRVdBRl9CVUlMRH0pCisJKGNkICR7U30gJiYgLi93YWYgYnVpbGQgJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLWolZCcsIGxpbWl0PTY0KX0pCiB9CiAKIHdhZl9kb19pbnN0YWxsKCkgewotCShjZCAke1N9ICYmIC4vd2FmIGluc3RhbGwgLS1kZXN0ZGlyPSR7RH0gJHtFWFRSQV9PRVdBRl9JTlNUQUxMfSkKKwkoY2QgJHtTfSAmJiAuL3dhZiBpbnN0YWxsIC0tZGVzdGRpcj0ke0R9KQogfQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYgYi9wb2t5L21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mCmluZGV4IDUzMThhMTAuLmUwNDM0M2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29uZgpAQCAtNCw3ICs0LDcgQEAKICMgdGhhdCBicmVha3MgdGhlIGZvcm1hdCBhbmQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZGlzY3Vzc2VkIG9uIHRoZSBtYWlsaW5nIGxpc3QgCiAjIHdpdGggZ2VuZXJhbCBhZ3JlZW1lbnQgZnJvbSB0aGUgY29yZSB0ZWFtLgogIwotT0VMQVlPVVRfQUJJID0gIjE0IgorT0VMQVlPVVRfQUJJID0gIjEyIgogCiAjCiAjIEhBU0hFUVVJVl9IQVNIX1ZFUlNJT04gaXMgaW5qZWN0ZWQgaW50byB0aGUgb3V0cHV0IGhhc2ggY2FsY3VsYXRpb24gdXNlZCBieQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDFiNWNkZTIuLmU2MzM4YjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTY4NSwxNSArNjg1LDEzIEBACiBQU0VVRE9fTE9DQUxTVEFURURJUiA/PSAiJHtXT1JLRElSfS9wc2V1ZG8vIgogUFNFVURPX1BBU1NXRCA/PSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9OiR7UFNFVURPX1NZU1JPT1R9IgogUFNFVURPX1NZU1JPT1QgPSAiJHtDT01QT05FTlRTX0RJUn0vJHtCVUlMRF9BUkNIfS9wc2V1ZG8tbmF0aXZlIgotUFNFVURPX0lHTk9SRV9QQVRIUyA9ICIvdXNyLywvZXRjLywvbGliLC9kZXYvLCR7VH0sJHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdCwke1NTVEFURV9ESVJ9LCR7U1RBTVBTX0RJUn0sJHtXT1JLRElSfS9wa2dkYXRhLXN5c3Jvb3QsJHtUTVBESVJ9L3NzdGF0ZS1jb250cm9sLCR7REVQTE9ZX0RJUn0sJHtXT1JLRElSfS9kZXBsb3ktLCR7VE1QRElSfS9idWlsZHN0YXRzLCR7V09SS0RJUn0vc3N0YXRlLWJ1aWxkLXBhY2thZ2VfLCR7V09SS0RJUn0vc3N0YXRlLWluc3RhbGwtcGFja2FnZV8sJHtXT1JLRElSfS9zc3RhdGUtYnVpbGQtaW1hZ2VfY29tcGxldGUsJHtUTVBESVJ9L3N5c3Jvb3RzLWNvbXBvbmVudHMsJHtCVUlMREhJU1RPUllfRElSfSwke1RNUERJUn0vcGtnZGF0YSwke1RPUERJUn0vY2FjaGUsJHtDT1JFQkFTRX0vc2NyaXB0cywke0NPUkVCQVNFfS9tZXRhIgotCiBleHBvcnQgUFNFVURPX0RJU0FCTEVEID0gIjEiCiAjZXhwb3J0IFBTRVVET19QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfSIKICNleHBvcnQgUFNFVURPX0JJTkRJUiA9ICIke1NUQUdJTkdfRElSX05BVElWRX0ke2JpbmRpcl9uYXRpdmV9IgogI2V4cG9ydCBQU0VVRE9fTElCRElSID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfSRQU0VVRE9CSU5ESVIvLi4vbGliL3BzZXVkby9saWIKLUZBS0VST09UQkFTRUVOViA9ICJQU0VVRE9fQklORElSPSR7UFNFVURPX1NZU1JPT1R9JHtiaW5kaXJfbmF0aXZlfSBQU0VVRE9fTElCRElSPSR7UFNFVURPX1NZU1JPT1R9JHtwcmVmaXhfbmF0aXZlfS9saWIvcHNldWRvL2xpYiBQU0VVRE9fUFJFRklYPSR7UFNFVURPX1NZU1JPT1R9JHtwcmVmaXhfbmF0aXZlfSBQU0VVRE9fSUdOT1JFX1BBVEhTPSR7UFNFVURPX0lHTk9SRV9QQVRIU30gUFNFVURPX0RJU0FCTEVEPTEiCitGQUtFUk9PVEJBU0VFTlYgPSAiUFNFVURPX0JJTkRJUj0ke1BTRVVET19TWVNST09UfSR7YmluZGlyX25hdGl2ZX0gUFNFVURPX0xJQkRJUj0ke1BTRVVET19TWVNST09UfSR7cHJlZml4X25hdGl2ZX0vbGliL3BzZXVkby9saWIgUFNFVURPX1BSRUZJWD0ke1BTRVVET19TWVNST09UfSR7cHJlZml4X25hdGl2ZX0gUFNFVURPX0RJU0FCTEVEPTEiCiBGQUtFUk9PVENNRCA9ICIke1BTRVVET19TWVNST09UfSR7YmluZGlyX25hdGl2ZX0vcHNldWRvIgotRkFLRVJPT1RFTlYgPSAiUFNFVURPX1BSRUZJWD0ke1BTRVVET19TWVNST09UfSR7cHJlZml4X25hdGl2ZX0gUFNFVURPX0xPQ0FMU1RBVEVESVI9JHtQU0VVRE9fTE9DQUxTVEFURURJUn0gUFNFVURPX1BBU1NXRD0ke1BTRVVET19QQVNTV0R9IFBTRVVET19OT1NZTUxJTktFWFA9MSBQU0VVRE9fSUdOT1JFX1BBVEhTPSR7UFNFVURPX0lHTk9SRV9QQVRIU30gUFNFVURPX0RJU0FCTEVEPTAiCitGQUtFUk9PVEVOViA9ICJQU0VVRE9fUFJFRklYPSR7UFNFVURPX1NZU1JPT1R9JHtwcmVmaXhfbmF0aXZlfSBQU0VVRE9fTE9DQUxTVEFURURJUj0ke1BTRVVET19MT0NBTFNUQVRFRElSfSBQU0VVRE9fUEFTU1dEPSR7UFNFVURPX1BBU1NXRH0gUFNFVURPX05PU1lNTElOS0VYUD0xIFBTRVVET19ESVNBQkxFRD0wIgogRkFLRVJPT1ROT0VOViA9ICJQU0VVRE9fVU5MT0FEPTEiCiBGQUtFUk9PVERJUlMgPSAiJHtQU0VVRE9fTE9DQUxTVEFURURJUn0iCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9mYWtlcm9vdC1uYXRpdmUgPz0gInBzZXVkby1uYXRpdmUiCkBAIC04NzUsOCArODczLDggQEAKIAogIyBTZXR1cCBvdXIgZGVmYXVsdCBoYXNoIHBvbGljeQogQkJfU0lHTkFUVVJFX0hBTkRMRVIgPz0gIk9FQmFzaWNIYXNoIgotQkJfSEFTSEVYQ0xVREVfQ09NTU9OID89ICJUTVBESVIgRklMRSBQQVRIIFBXRCBCQl9UQVNLSEFTSCBCQlBBVEggQkJTRVJWRVIgRExfRElSIFwKLSAgICBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFwKK0JCX0hBU0hCQVNFX1dISVRFTElTVCA/PSAiVE1QRElSIEZJTEUgUEFUSCBQV0QgQkJfVEFTS0hBU0ggQkJQQVRIIEJCU0VSVkVSIERMX0RJUiBcCisgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFwKICAgICBVU0VSIEZJTEVTUEFUSCBTVEFHSU5HX0RJUl9IT1NUIFNUQUdJTkdfRElSX1RBUkdFVCBDT1JFQkFTRSBQUlNFUlZfSE9TVCBcCiAgICAgU1RBTVBTX0RJUiBQUlNFUlZfRFVNUERJUiBQUlNFUlZfRFVNUEZJTEUgUFJTRVJWX0xPQ0tET1dOIFBBUkFMTEVMX01BS0UgXAogICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfTk9IQVNIRElSIExJQ0VOU0VfUEFUSCBTREtQS0dTVUZGSVggXApAQCAtODg0LDggKzg4Miw3IEBACiAgICAgQkJfV09SS0VSQ09OVEVYVCBCQl9MSU1JVEVEREVQUyBCQl9VTklIQVNIIGV4dGVuZF9yZWNpcGVfc3lzcm9vdCBERVBMT1lfRElSIFwKICAgICBTU1RBVEVfSEFTSEVRVUlWX01FVEhPRCBTU1RBVEVfSEFTSEVRVUlWX1JFUE9SVF9UQVNLREFUQSBcCiAgICAgU1NUQVRFX0hBU0hFUVVJVl9PV05FUiBDQ0FDSEVfVE9QX0RJUiBCQl9IQVNIU0VSVkUgR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMiCi1CQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIiR7QkJfSEFTSEVYQ0xVREVfQ09NTU9OfSBQU0VVRE9fSUdOT1JFX1BBVEhTIEJVSUxESElTVE9SWV9ESVIgU1NUQVRFX0RJUiAiCi1CQl9IQVNIQ09ORklHX1dISVRFTElTVCA/PSAiJHtCQl9IQVNIRVhDTFVERV9DT01NT059IERBVEUgVElNRSBTU0hfQUdFTlRfUElEIFwKK0JCX0hBU0hDT05GSUdfV0hJVEVMSVNUID89ICIke0JCX0hBU0hCQVNFX1dISVRFTElTVH0gREFURSBUSU1FIFNTSF9BR0VOVF9QSUQgXAogICAgIFNTSF9BVVRIX1NPQ0sgUFNFVURPX0JVSUxEIEJCX0VOVl9FWFRSQVdISVRFIERJU0FCTEVfU0FOSVRZX0NIRUNLUyBcCiAgICAgUEFSQUxMRUxfTUFLRSBCQl9OVU1CRVJfVEhSRUFEUyBCQl9PUklHRU5WIEJCX0lOVkFMSURDT05GIEJCSU5DTFVERUQgXAogICAgIEdJVF9QUk9YWV9DT01NQU5EIEFMTF9QUk9YWSBhbGxfcHJveHkgTk9fUFJPWFkgbm9fcHJveHkgRlRQX1BST1hZIGZ0cF9wcm94eSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKaW5kZXggNzkzNWY5Ni4uNWEzZjkxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpAQCAtNzAsMTIgKzcwLDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy10ZXN0c3VpdGUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zc3Nkay0ke1NES19TWVN9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmlzb24gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJqYW0tbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3Rvb2wgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3RyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsdWV6NSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJtYXAtdG9vbHMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ib29zdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ib29zdC1idWlsZC1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ic2QtaGVhZGVycyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ0cmZzLXRvb2xzID0gIldhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybTY0LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm02NC5pbmMKaW5kZXggMTQyMzQyMi4uOGE3ZGU4ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybTY0LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtNjQuaW5jCkBAIC0zLDcgKzMsNiBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12N3ZlLmluYwogCiBUVU5FVkFMSURbYWFyY2g2NF0gPSAiRW5hYmxlIGluc3RydWN0aW9ucyBmb3IgYWFyY2g2NCIKLVRVTkVDT05GTElDVFNbYWFyY2g2NF0gPSAiYXJtdjQgYXJtdjUgYXJtdjYgYXJtdjcgYXJtdjdhIgogCiBNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdhYXJjaDY0JywgJ2FhcmNoNjQ6JywgJycsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE2NS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTY1LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI3ZTU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTY1LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgVHVuZSBTZXR0aW5ncyBmb3IgQ29ydGV4LUE2NQotIwotREVGQVVMVFRVTkUgPz0gImNvcnRleGE2NSIKLQotVFVORVZBTElEW2NvcnRleGE2NV0gPSAiRW5hYmxlIENvcnRleC1BNjUgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY29ydGV4YTY1JywgJyAtbWNwdT1jb3J0ZXgtYTY1JywgJycsIGQpfSIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OC0yYS5pbmMKLQotIyBMaXR0bGUgRW5kaWFuIGJhc2UgY29uZmlncwotQVZBSUxUVU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gImNvcnRleGE2NSIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNjUgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhNjUiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTY1ICAgICAgICAgICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNjUiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTY1ICAgICAgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNjUiCi1CQVNFX0xJQl90dW5lLWNvcnRleGE2NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTY1YWUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE2NWFlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhNDdkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTY1YWUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBUdW5lIFNldHRpbmdzIGZvciBDb3J0ZXgtQTY1QUUKLSMKLURFRkFVTFRUVU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID89ICJjb3J0ZXhhNjVhZSIKLQotVFVORVZBTElEW2NvcnRleGE2NWFlXSA9ICJFbmFibGUgQ29ydGV4LUE2NUFFIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgotVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NvcnRleGE2NWFlJywgJyAtbWNwdT1jb3J0ZXgtYTY1YWUnLCAnJywgZCl9IgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LTJhLmluYwotCi0jIExpdHRsZSBFbmRpYW4gYmFzZSBjb25maWdzCi1BVkFJTFRVTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAiY29ydGV4YTY1YWUiCi1BUk1QS0dBUkNIX3R1bmUtY29ydGV4YTY1YWUgICAgICAgICAgICAgICAgICAgICAgICAgPSAiY29ydGV4YTY1YWUiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTY1YWUgICAgICAgICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNjVhZSIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNjVhZSAgICAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE2NWFlIgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNjVhZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzQ1ZmU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjgtMmEvdHVuZS1jb3J0ZXhhNzUtY29ydGV4YTU1LmluYworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMKLSMgVHVuZSBTZXR0aW5ncyBmb3IgYmlnLkxJVFRMRSBDb3J0ZXgtQTc1IC0gQ29ydGV4LUE1NQotIwotREVGQVVMVFRVTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz0gImNvcnRleGE3NS1jb3J0ZXhhNTUiCi0KLVRVTkVWQUxJRFtjb3J0ZXhhNzUtY29ydGV4YTU1XSA9ICJFbmFibGUgYmlnLkxJVFRMRSBDb3J0ZXgtQTc1LkNvcnRleC1BNTUgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1NQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzUtY29ydGV4YTU1IiwgImNvcnRleGE3NS1jb3J0ZXhhNTU6IiwgIiIsIGQpfSIKLVRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzUtY29ydGV4YTU1IiwgIiAtbWNwdT1jb3J0ZXgtYTc1LmNvcnRleC1hNTUiLCAiIiwgZCl9IgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LTJhLmluYwotCi1BVkFJTFRVTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAiY29ydGV4YTc1LWNvcnRleGE1NSBjb3J0ZXhhNzUtY29ydGV4YTU1LWNyeXB0byIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzUtY29ydGV4YTU1ICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhNzUtY29ydGV4YTU1IgotQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUtY3J5cHRvICAgICAgICAgID0gImNvcnRleGE3NS1jb3J0ZXhhNTUtY3J5cHRvIgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUgICAgICAgICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY4LTJhfSBjb3J0ZXhhNzUtY29ydGV4YTU1IgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUtY3J5cHRvICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTV9IGNyeXB0byIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzUtY29ydGV4YTU1ICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYX0gY29ydGV4YTc1LWNvcnRleGE1NSIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzUtY29ydGV4YTU1LWNyeXB0byA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE3NS1jb3J0ZXhhNTUgY29ydGV4YTc1LWNvcnRleGE1NS1jcnlwdG8iCi1CQVNFX0xJQl90dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCi1CQVNFX0xJQl90dW5lLWNvcnRleGE3NS1jb3J0ZXhhNTUtY3J5cHRvICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc1LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjgtMmEvdHVuZS1jb3J0ZXhhNzUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDE5NDUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjgtMmEvdHVuZS1jb3J0ZXhhNzUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBUdW5lIFNldHRpbmdzIGZvciBDb3J0ZXgtQTc1Ci0jCi1ERUZBVUxUVFVORSA/PSAiY29ydGV4YTc1IgotCi1UVU5FVkFMSURbY29ydGV4YTc1XSA9ICJFbmFibGUgQ29ydGV4LUE3NSBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKLVRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjb3J0ZXhhNzUnLCAnIC1tY3B1PWNvcnRleC1hNzUnLCAnJywgZCl9IgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LTJhLmluYwotCi0jIExpdHRsZSBFbmRpYW4gYmFzZSBjb25maWdzCi1BVkFJTFRVTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAiY29ydGV4YTc1IgotQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3NSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gImNvcnRleGE3NSIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzUgICAgICAgICAgICAgICAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE3NSIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzUgICAgICAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE3NSIKLUJBU0VfTElCX3R1bmUtY29ydGV4YTc1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJsaWI2NCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjgtMmEvdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjgtMmEvdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGZmZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc2LWNvcnRleGE1NS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jCi0jIFR1bmUgU2V0dGluZ3MgZm9yIGJpZy5MSVRUTEUgQ29ydGV4LUE3NiAtIENvcnRleC1BNTUKLSMKLURFRkFVTFRUVU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID89ICJjb3J0ZXhhNzYtY29ydGV4YTU1IgotCi1UVU5FVkFMSURbY29ydGV4YTc2LWNvcnRleGE1NV0gPSAiRW5hYmxlIGJpZy5MSVRUTEUgQ29ydGV4LUE3Ni5Db3J0ZXgtQTU1IHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgotTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29ydGV4YTc2LWNvcnRleGE1NSIsICJjb3J0ZXhhNzYtY29ydGV4YTU1OiIsICIiLCBkKX0iCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29ydGV4YTc2LWNvcnRleGE1NSIsICIgLW1jcHU9Y29ydGV4LWE3Ni5jb3J0ZXgtYTU1IiwgIiIsIGQpfSIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OC0yYS5pbmMKLQotQVZBSUxUVU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gImNvcnRleGE3Ni1jb3J0ZXhhNTUgY29ydGV4YTc2LWNvcnRleGE1NS1jcnlwdG8iCi1BUk1QS0dBUkNIX3R1bmUtY29ydGV4YTc2LWNvcnRleGE1NSAgICAgICAgICAgICAgICAgPSAiY29ydGV4YTc2LWNvcnRleGE1NSIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1LWNyeXB0byAgICAgICAgICA9ICJjb3J0ZXhhNzYtY29ydGV4YTU1LWNyeXB0byIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1ICAgICAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OC0yYX0gY29ydGV4YTc2LWNvcnRleGE1NSIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1LWNyeXB0byAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1fSBjcnlwdG8iCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTc2LWNvcnRleGE1NSAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjgtMmF9IGNvcnRleGE3Ni1jb3J0ZXhhNTUiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTc2LWNvcnRleGE1NS1jcnlwdG8gPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNzYtY29ydGV4YTU1IGNvcnRleGE3Ni1jb3J0ZXhhNTUtY3J5cHRvIgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1ICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNzYtY29ydGV4YTU1LWNyeXB0byAgICAgICAgICAgID0gImxpYjY0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE3Ni5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc2LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUzNjYxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc2LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgVHVuZSBTZXR0aW5ncyBmb3IgQ29ydGV4LUE3NgotIwotREVGQVVMVFRVTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz0gImNvcnRleGE3NiIKLQotVFVORVZBTElEW2NvcnRleGE3Nl0gPSAiRW5hYmxlIENvcnRleC1BNzYgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY29ydGV4YTc2JywgJyAtbWNwdT1jb3J0ZXgtYTc2JywgJycsIGQpfSIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OC0yYS5pbmMKLQotIyBMaXR0bGUgRW5kaWFuIGJhc2UgY29uZmlncwotQVZBSUxUVU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gImNvcnRleGE3NiIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzYgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhNzYiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTc2ICAgICAgICAgICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNzYiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTc2ICAgICAgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNzYiCi1CQVNFX0xJQl90dW5lLWNvcnRleGE3NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc2YWUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE3NmFlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM2OGFhMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc2YWUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBUdW5lIFNldHRpbmdzIGZvciBDb3J0ZXgtQTc2QUUKLSMKLURFRkFVTFRUVU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID89ICJjb3J0ZXhhNzZhZSIKLQotVFVORVZBTElEW2NvcnRleGE3NmFlXSA9ICJFbmFibGUgQ29ydGV4LUE3NkFFIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgotVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NvcnRleGE3NmFlJywgJyAtbWNwdT1jb3J0ZXgtYTc2YWUnLCAnJywgZCl9IgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LTJhLmluYwotCi0jIExpdHRsZSBFbmRpYW4gYmFzZSBjb25maWdzCi1BVkFJTFRVTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAiY29ydGV4YTc2YWUiCi1BUk1QS0dBUkNIX3R1bmUtY29ydGV4YTc2YWUgICAgICAgICAgICAgICAgICAgICAgICAgPSAiY29ydGV4YTc2YWUiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTY1YWUgICAgICAgICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNzZhZSIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzZhZSAgICAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE3NmFlIgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNzZhZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLWNvcnRleGE3Ny5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc3LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ4ZmEzMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtY29ydGV4YTc3LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgVHVuZSBTZXR0aW5ncyBmb3IgQ29ydGV4LUE3NwotIwotREVGQVVMVFRVTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz0gImNvcnRleGE3NyIKLQotVFVORVZBTElEW2NvcnRleGE3N10gPSAiRW5hYmxlIENvcnRleC1BNzcgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY29ydGV4YTc3JywgJyAtbWNwdT1jb3J0ZXgtYTc3JywgJycsIGQpfSIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OC0yYS5pbmMKLQotIyBMaXR0bGUgRW5kaWFuIGJhc2UgY29uZmlncwotQVZBSUxUVU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gImNvcnRleGE3NyIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzcgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhNzciCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTc3ICAgICAgICAgICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNzciCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTc3ICAgICAgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBjb3J0ZXhhNzciCi1CQVNFX0xJQl90dW5lLWNvcnRleGE3NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtbmVvdmVyc2VlMS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtbmVvdmVyc2VlMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MmM5YWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLW5lb3ZlcnNlZTEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBUdW5lIFNldHRpbmdzIGZvciBOZW92ZXJzZS1FMQotIwotREVGQVVMVFRVTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz0gIm5lb3ZlcnNlZTEiCi0KLVRVTkVWQUxJRFtuZW92ZXJzZWUxXSA9ICJFbmFibGUgTmVvdmVyc2UtRTEgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbmVvdmVyc2VlMScsICcgLW1jcHU9bmVvdmVyc2UtZTEnLCAnJywgZCl9IgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LTJhLmluYwotCi0jIExpdHRsZSBFbmRpYW4gYmFzZSBjb25maWdzCi1BVkFJTFRVTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAibmVvdmVyc2VlMSIKLUFSTVBLR0FSQ0hfdHVuZS1uZW92ZXJzZWUxICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJuZW92ZXJzZWUxIgotVFVORV9GRUFUVVJFU190dW5lLW5lb3ZlcnNlZTEgICAgICAgICAgICAgICAgICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY4LTJhLWNyeXB0b30gbmVvdmVyc2VlMSIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1uZW92ZXJzZWUxICAgICAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYS1jcnlwdG99IG5lb3ZlcnNlZTEiCi1CQVNFX0xJQl90dW5lLW5lb3ZlcnNlZTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtbmVvdmVyc2VuMS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4LTJhL3R1bmUtbmVvdmVyc2VuMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNmU4ODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OC0yYS90dW5lLW5lb3ZlcnNlbjEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIwotIyBUdW5lIFNldHRpbmdzIGZvciBOZW92ZXJzZS1OMQotIwotREVGQVVMVFRVTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz0gIm5lb3ZlcnNlbjEiCi0KLVRVTkVWQUxJRFtuZW92ZXJzZW4xXSA9ICJFbmFibGUgTmVvdmVyc2UtTjEgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi0jIE5vdGU6IE5lb3ZlcnNlIHdhcyBjYWxsZWQgQXJlcywgYW5kIEdDQyB3aWxsIGFjY2VwdCAiYXJlcyIgaW4gcGxhY2Ugb2YgIm5lb3ZlcnNlLW4xIgotVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb3ZlcnNlbjEnLCAnIC1tY3B1PW5lb3ZlcnNlLW4xJywgJycsIGQpfSIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OC0yYS5pbmMKLQotIyBMaXR0bGUgRW5kaWFuIGJhc2UgY29uZmlncwotQVZBSUxUVU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gIm5lb3ZlcnNlbjEiCi1BUk1QS0dBUkNIX3R1bmUtbmVvdmVyc2VuMSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibmVvdmVyc2VuMSIKLVRVTkVfRkVBVFVSRVNfdHVuZS1uZW92ZXJzZW4xICAgICAgICAgICAgICAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OC0yYS1jcnlwdG99IG5lb3ZlcnNlbjEiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbmVvdmVyc2VuMSAgICAgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjgtMmEtY3J5cHRvfSBuZW92ZXJzZW4xIgotQkFTRV9MSUJfdHVuZS1uZW92ZXJzZW4xICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OGEvdHVuZS1jb3J0ZXhhMzQuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OGEvdHVuZS1jb3J0ZXhhMzQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2Q0Yzg3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjhhL3R1bmUtY29ydGV4YTM0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMKLSMgVHVuZSBTZXR0aW5ncyBmb3IgQ29ydGV4LUEzNAotIwotREVGQVVMVFRVTkUgPz0gImNvcnRleGEzNCIKLQotVFVORVZBTElEW2NvcnRleGEzNF0gPSAiRW5hYmxlIENvcnRleC1BMzQgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY29ydGV4YTM0JywgJyAtbWNwdT1jb3J0ZXgtYTM0JywgJycsIGQpfSIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OGEuaW5jCi0KLSMgTGl0dGxlIEVuZGlhbiBiYXNlIGNvbmZpZ3MKLUFWQUlMVFVORVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICs9ICJjb3J0ZXhhMzQgY29ydGV4YTM0LWNyeXB0byIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhMzQgICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhMzQiCi1BUk1QS0dBUkNIX3R1bmUtY29ydGV4YTM0LWNyeXB0byAgICAgICAgICAgPSAiY29ydGV4YTM0IgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGEzNCAgICAgICAgICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY4YS1jcmN9IGNvcnRleGEzNCIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhMzQtY3J5cHRvICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhMzR9IGNyeXB0byIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhMzQgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhMzQiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTM0LWNyeXB0byAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGEzNCBjb3J0ZXhhMzQtY3J5cHRvIgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhMzQgICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhMzQtY3J5cHRvICAgICAgICAgICAgID0gImxpYjY0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OGEvdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjhhL3R1bmUtY29ydGV4YTczLWNvcnRleGEzNS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNzI5NmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcm12OGEvdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1LmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMKLSMgVHVuZSBTZXR0aW5ncyBmb3IgYmlnLkxJVFRMRSBDb3J0ZXgtQTczIC0gQ29ydGV4LUEzNQotIwotREVGQVVMVFRVTkUgPz0gImNvcnRleGE3My1jb3J0ZXhhMzUiCi0KLVRVTkVWQUxJRFtjb3J0ZXhhNzMtY29ydGV4YTM1XSA9ICJFbmFibGUgYmlnLkxJVFRMRSBDb3J0ZXgtQTczLkNvcnRleC1BMzUgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1NQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzMtY29ydGV4YTM1IiwgImNvcnRleGE3My1jb3J0ZXhhMzU6IiwgIiIsIGQpfSIKLVRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzMtY29ydGV4YTM1IiwgIiAtbWNwdT1jb3J0ZXgtYTczLmNvcnRleC1hMzUiLCAiIiwgZCl9IgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4YS5pbmMKLQotIyBjb3J0ZXhhNzMuY29ydGV4YTM1IGltcGxpZXMgY3JjIHN1cHBvcnQKLUFWQUlMVFVORVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAiY29ydGV4YTczLWNvcnRleGEzNSBjb3J0ZXhhNzMtY29ydGV4YTM1LWNyeXB0byIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1ICAgICAgICAgICAgICAgICAgPSAiY29ydGV4YTczLWNvcnRleGEzNSIKLUFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1LWNyeXB0byAgICAgICAgICAgPSAiY29ydGV4YTczLWNvcnRleGEzNS1jcnlwdG8iCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTczLWNvcnRleGEzNSAgICAgICAgICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY4YS1jcmN9IGNvcnRleGE3My1jb3J0ZXhhMzUiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTczLWNvcnRleGEzNS1jcnlwdG8gICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3My1jb3J0ZXhhMzV9IGNyeXB0byIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1ICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyY30gY29ydGV4YTczLWNvcnRleGEzNSIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1LWNyeXB0byAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3My1jb3J0ZXhhMzUgY29ydGV4YTczLWNvcnRleGEzNS1jcnlwdG8iCi1CQVNFX0xJQl90dW5lLWNvcnRleGE3My1jb3J0ZXhhMzUgICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgotQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTM1LWNyeXB0byAgICAgICAgICAgICA9ICJsaWI2NCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjhhL3R1bmUtY29ydGV4YTczLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJtdjhhL3R1bmUtY29ydGV4YTczLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQyZGViOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FybXY4YS90dW5lLWNvcnRleGE3My5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jCi0jIFR1bmUgU2V0dGluZ3MgZm9yIENvcnRleC1BNzMKLSMKLURFRkFVTFRUVU5FID89ICJjb3J0ZXhhNzMiCi0KLVRVTkVWQUxJRFtjb3J0ZXhhNzNdID0gIkVuYWJsZSBDb3J0ZXgtQTczIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgotVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NvcnRleGE3MycsICcgLW1jcHU9Y29ydGV4LWE3MycsICcnLCBkKX0iCi0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjhhLmluYwotCi0jIExpdHRsZSBFbmRpYW4gYmFzZSBjb25maWdzCi1BVkFJTFRVTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSAiY29ydGV4YTczIgotQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3MyAgICAgICAgICAgICAgICAgID0gImNvcnRleGE3MyIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzMgICAgICAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjLWNyeXB0b30gY29ydGV4YTczIgotUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE3MyAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmMtY3J5cHRvfSBjb3J0ZXhhNzMiCi1CQVNFX0xJQl90dW5lLWNvcnRleGE3MyAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhMzIuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTMyLmluYwppbmRleCBlODZkZTZjLi4wZmZiM2UwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhMzIuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGEzMi5pbmMKQEAgLTEsNSArMSw2IEBACiBERUZBVUxUVFVORSA/PSAiY29ydGV4YTMyIgogCisKIFRVTkVWQUxJRFtjb3J0ZXhhMzJdID0gIkVuYWJsZSBDb3J0ZXgtQTMyIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NvcnRleGEzMicsICcgLW1jcHU9Y29ydGV4LWEzMicsICcnLCBkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGEzNS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhMzUuaW5jCmluZGV4IGNiM2FkNGMuLjYxNjk2ZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGEzNS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTM1LmluYwpAQCAtOSw3ICs5LDcgQEAKIEFWQUlMVFVORVMgKz0gImNvcnRleGEzNSBjb3J0ZXhhMzUtY3J5cHRvIgogQVJNUEtHQVJDSF90dW5lLWNvcnRleGEzNSAgICAgICAgICAgICA9ICJjb3J0ZXhhMzUiCiBBUk1QS0dBUkNIX3R1bmUtY29ydGV4YTM1LWNyeXB0byAgICAgID0gImNvcnRleGEzNSIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhMzUgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyY30gY29ydGV4YTM1IgorVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGEzNSAgICAgICAgICA9ICJhYXJjaDY0IGNvcnRleGEzNSBjcmMiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTM1LWNyeXB0byAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWNvcnRleGEzNX0gY3J5cHRvIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGEzNSAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhMzUiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTM1LWNyeXB0byAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmMtY3J5cHRvfSBjb3J0ZXhhMzUgY29ydGV4YTM1LWNyeXB0byIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1My5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNTMuaW5jCmluZGV4IDdmODg2M2EuLjc5Y2U3YzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1My5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTUzLmluYwpAQCAtOSw5ICs5LDEwIEBACiBBVkFJTFRVTkVTICs9ICJjb3J0ZXhhNTMgY29ydGV4YTUzLWNyeXB0byIKIEFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNTMgICAgICAgICAgICAgPSAiY29ydGV4YTUzIgogQVJNUEtHQVJDSF90dW5lLWNvcnRleGE1My1jcnlwdG8gICAgICA9ICJjb3J0ZXhhNTMtY3J5cHRvIgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE1MyAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhNTMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTUzICAgICAgICAgID0gImFhcmNoNjQgY29ydGV4YTUzIGNyYyIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNTMtY3J5cHRvICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTUzfSBjcnlwdG8iCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTUzICAgICAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmN9IGNvcnRleGE1MyIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNTMtY3J5cHRvICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE1MyBjb3J0ZXhhNTMtY3J5cHRvIgorCiBCQVNFX0xJQl90dW5lLWNvcnRleGE1MyAgICAgICAgICAgICAgID0gImxpYjY0IgogQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICA9ICJsaWI2NCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1NS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNTUuaW5jCmluZGV4IGU5NjI5NzMuLjY2YTVkMGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1NS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTU1LmluYwpAQCAtOCw2ICs4LDYgQEAKICMgTGl0dGxlIEVuZGlhbiBiYXNlIGNvbmZpZ3MKIEFWQUlMVFVORVMgKz0gImNvcnRleGE1NSIKIEFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNTUgICAgICAgICAgICAgPSAiY29ydGV4YTU1IgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE1NSAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE1NSIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNTUgICAgICAgICAgPSAiYWFyY2g2NCBjb3J0ZXhhNTUgY3J5cHRvIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE1NSAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OC0yYS1jcnlwdG99IGNvcnRleGE1NSIKIEJBU0VfTElCX3R1bmUtY29ydGV4YTU1ICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNTctY29ydGV4YTUzLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1Ny1jb3J0ZXhhNTMuaW5jCmluZGV4IGQzMjlkNjEuLmQ4NmJlNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1Ny1jb3J0ZXhhNTMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1Ny1jb3J0ZXhhNTMuaW5jCkBAIC0xLDYgKzEsNyBAQAogREVGQVVMVFRVTkUgPz0gImNvcnRleGE1Ny1jb3J0ZXhhNTMiCiAKIFRVTkVWQUxJRFtjb3J0ZXhhNTctY29ydGV4YTUzXSA9ICJFbmFibGUgYmlnLkxJVFRMRSBDb3J0ZXgtQTU3LkNvcnRleC1BNTMgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FQ09ORkxJQ1RTW2FhcmNoNjRdID0gImFybXY0IGFybXY1IGFybXY2IGFybXY3IGFybXY3YSIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNTctY29ydGV4YTUzIiwgIiAtbWNwdT1jb3J0ZXgtYTU3LmNvcnRleC1hNTMiLCAiIiwgZCl9IgogTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29ydGV4YTU3LWNvcnRleGE1MyIsICJjb3J0ZXhhNTctY29ydGV4YTUzOiIsICIiLCBkKX0iCiAKQEAgLTksNiArMTAsNiBAQAogIyBMaXR0bGUgRW5kaWFuIGJhc2UgY29uZmlncwogQVZBSUxUVU5FUyArPSAiY29ydGV4YTU3LWNvcnRleGE1MyIKIEFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNTctY29ydGV4YTUzID0gImNvcnRleGE1Ny1jb3J0ZXhhNTMiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTU3LWNvcnRleGE1MyA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhNTctY29ydGV4YTUzIgorVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE1Ny1jb3J0ZXhhNTMgPSAiYWFyY2g2NCBjcmMgY29ydGV4YTU3LWNvcnRleGE1MyIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNTctY29ydGV4YTUzID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmN9IGNvcnRleGE1Ny1jb3J0ZXhhNTMiCiBCQVNFX0xJQl90dW5lLWNvcnRleGE1Ny1jb3J0ZXhhNTMgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNTcuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTU3LmluYwppbmRleCA5MWZhNjY4Li4zMjA2Y2U3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNTcuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE1Ny5pbmMKQEAgLTksNyArOSw3IEBACiBBVkFJTFRVTkVTICs9ICJjb3J0ZXhhNTcgY29ydGV4YTU3LWNyeXB0byIKIEFSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNTcgICAgICAgICAgICAgPSAiY29ydGV4YTU3IgogQVJNUEtHQVJDSF90dW5lLWNvcnRleGE1Ny1jcnlwdG8gICAgICA9ICJjb3J0ZXhhNTctY3J5cHRvIgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE1NyAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhNTciCitUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTU3ICAgICAgICAgID0gImFhcmNoNjQgY29ydGV4YTU3IGNyYyIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNTctY3J5cHRvICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTU3fSBjcnlwdG8iCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTU3ICAgICAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmN9IGNvcnRleGE1NyIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNTctY3J5cHRvICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE1NyBjb3J0ZXhhNTctY3J5cHRvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYwppbmRleCA5OGU4ZWJhLi42NGJiODMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYwpAQCAtMSw2ICsxLDcgQEAKIERFRkFVTFRUVU5FID89ICJjb3J0ZXhhNzItY29ydGV4YTUzIgogCiBUVU5FVkFMSURbY29ydGV4YTcyLWNvcnRleGE1M10gPSAiRW5hYmxlIGJpZy5MSVRUTEUgQ29ydGV4LUE3Mi5Db3J0ZXgtQTUzIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORUNPTkZMSUNUU1thYXJjaDY0XSA9ICJhcm12NCBhcm12NSBhcm12NiBhcm12NyBhcm12N2EiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29ydGV4YTcyLWNvcnRleGE1MyIsICIgLW1jcHU9Y29ydGV4LWE3Mi5jb3J0ZXgtYTUzIiwgIiIsIGQpfSIKIE1BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcnRleGE3Mi1jb3J0ZXhhNTMiLCAiY29ydGV4YTcyLWNvcnRleGE1MzoiLCAiIiwgZCl9IgogCkBAIC0xMCw3ICsxMSw3IEBACiBBVkFJTFRVTkVTICs9ICJjb3J0ZXhhNzItY29ydGV4YTUzIGNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvIgogQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMgICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhNzItY29ydGV4YTUzIgogQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICAgICA9ICJjb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyY30gY29ydGV4YTcyLWNvcnRleGE1MyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgPSAiYWFyY2g2NCBjcmMgY29ydGV4YTcyLWNvcnRleGE1MyIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1M30gY3J5cHRvIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjfSAgICAgICAgY29ydGV4YTcyLWNvcnRleGE1MyIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3Mi1jb3J0ZXhhNTMgY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzIuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTcyLmluYwppbmRleCBiM2Y2OGFiLi4wMGY3NzQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzIuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3Mi5pbmMKQEAgLTgsNiArOCw2IEBACiAjIExpdHRsZSBFbmRpYW4gYmFzZSBjb25maWdzCiBBVkFJTFRVTkVTICs9ICJjb3J0ZXhhNzIiCiBBUk1QS0dBUkNIX3R1bmUtY29ydGV4YTcyICAgICAgICAgICAgID0gImNvcnRleGE3MiIKLVRVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzIgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3MiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzIgICAgICAgICAgPSAiYWFyY2g2NCBjb3J0ZXhhNzIgY3JjIGNyeXB0byIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzIgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3MiIKIEJBU0VfTElCX3R1bmUtY29ydGV4YTcyICAgICAgICAgICAgICAgPSAibGliNjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTUzLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMuaW5jCmluZGV4IDM3NTBmMDcuLjRlYzBmNjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMuaW5jCkBAIC0xLDYgKzEsNyBAQAogREVGQVVMVFRVTkUgPz0gImNvcnRleGE3My1jb3J0ZXhhNTMiCiAKIFRVTkVWQUxJRFtjb3J0ZXhhNzMtY29ydGV4YTUzXSA9ICJFbmFibGUgYmlnLkxJVFRMRSBDb3J0ZXgtQTczLkNvcnRleC1BNTMgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FQ09ORkxJQ1RTW2FhcmNoNjRdID0gImFybXY0IGFybXY1IGFybXY2IGFybXY3IGFybXY3YSIKIE1BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcnRleGE3My1jb3J0ZXhhNTMiLCAiY29ydGV4YTczLWNvcnRleGE1MzoiLCAiIiwgZCl9IgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcnRleGE3My1jb3J0ZXhhNTMiLCAiIC1tY3B1PWNvcnRleC1hNzMuY29ydGV4LWE1MyIsICIiLCBkKX0iCiAKQEAgLTEwLDcgKzExLDcgQEAKIEFWQUlMVFVORVMgKz0gImNvcnRleGE3My1jb3J0ZXhhNTMgY29ydGV4YTczLWNvcnRleGE1My1jcnlwdG8iCiBBUk1QS0dBUkNIX3R1bmUtY29ydGV4YTczLWNvcnRleGE1MyAgICAgICAgICAgICAgICAgID0gImNvcnRleGE3My1jb3J0ZXhhNTMiCiBBUk1QS0dBUkNIX3R1bmUtY29ydGV4YTczLWNvcnRleGE1My1jcnlwdG8gICAgICAgICAgID0gImNvcnRleGE3My1jb3J0ZXhhNTMtY3J5cHRvIgotVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMgICAgICAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhNzMtY29ydGV4YTUzIgorVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMgICAgICAgICAgICAgICA9ICJhYXJjaDY0IGNyYyBjb3J0ZXhhNzMtY29ydGV4YTUzIgogVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzMtY29ydGV4YTUzfSBjcnlwdG8iCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTczLWNvcnRleGE1MyAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmN9ICAgICAgICBjb3J0ZXhhNzMtY29ydGV4YTUzIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE3My1jb3J0ZXhhNTMtY3J5cHRvICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjLWNyeXB0b30gY29ydGV4YTczLWNvcnRleGE1MyBjb3J0ZXhhNzMtY29ydGV4YTUzLWNyeXB0byIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHMuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHMuY29uZgppbmRleCBiOGM4MGYwLi4xMzczZTRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mCkBAIC0xNSw0ICsxNSw0IEBACiAKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLW1pcHMiCiAKLVFCX0NQVSA9ICItY3B1IDM0S2YtNjR0bGIiCitRQl9DUFUgPSAiLWNwdSAzNEtmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvZXhhbXBsZS5iYiBiL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2V4YW1wbGUuYmIKaW5kZXggZmFjYWFlMy4uYzRiODczZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvZXhhbXBsZS5iYgorKysgYi9wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9leGFtcGxlLmJiCkBAIC0yLDEyICsyLDEwIEBACiBERVNDUklQVElPTiA9ICJSZWNpcGUgY3JlYXRlZCBieSBiaXRiYWtlLWxheWVycyIKIExJQ0VOU0UgPSAiTUlUIgogCi1weXRob24gZG9fZGlzcGxheV9iYW5uZXIoKSB7CitweXRob24gZG9fYnVpbGQoKSB7CiAgICAgYmIucGxhaW4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CiAgICAgYmIucGxhaW4oIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIik7CiAgICAgYmIucGxhaW4oIiogIEV4YW1wbGUgcmVjaXBlIGNyZWF0ZWQgYnkgYml0YmFrZS1sYXllcnMgICAqIik7CiAgICAgYmIucGxhaW4oIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIik7CiAgICAgYmIucGxhaW4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CiB9Ci0KLWFkZHRhc2sgZGlzcGxheV9iYW5uZXIgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci9fX2luaXRfXy5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyL19faW5pdF9fLnB5CmluZGV4IDQyMjI1YTMuLjg2NWQ2ZjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyL19faW5pdF9fLnB5CkBAIC0zOTcsMTMgKzM5NywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAnLmpvaW4oY21kKSwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCi0gICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ0lNQUdFX0xPQ0FMRVNfQVJDSElWRScpID09ICcxJzoKLSAgICAgICAgICAgIHRhcmdldF9hcmNoID0gc2VsZi5kLmdldFZhcignVEFSR0VUX0FSQ0gnKQotICAgICAgICAgICAgbG9jYWxlZGlyID0gb2UucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3Rmcywgc2VsZi5kLmdldFZhcigibGliZGlyIiksICJsb2NhbGUiKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9jYWxlZGlyKSBhbmQgb3MubGlzdGRpcihsb2NhbGVkaXIpOgotICAgICAgICAgICAgICAgIGdlbmVyYXRlX2xvY2FsZV9hcmNoaXZlKHNlbGYuZCwgc2VsZi50YXJnZXRfcm9vdGZzLCB0YXJnZXRfYXJjaCwgbG9jYWxlZGlyKQotICAgICAgICAgICAgICAgICMgQW5kIG5vdyBkZWxldGUgdGhlIGJpbmFyeSBsb2NhbGVzCi0gICAgICAgICAgICAgICAgc2VsZi5yZW1vdmUoZm5tYXRjaC5maWx0ZXIoc2VsZi5saXN0X2luc3RhbGxlZCgpLCAiZ2xpYmMtYmluYXJ5LWxvY2FsZWRhdGEtKiIpLCBGYWxzZSkKKyAgICAgICAgdGFyZ2V0X2FyY2ggPSBzZWxmLmQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgICAgIGxvY2FsZWRpciA9IG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsIHNlbGYuZC5nZXRWYXIoImxpYmRpciIpLCAibG9jYWxlIikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9jYWxlZGlyKSBhbmQgb3MubGlzdGRpcihsb2NhbGVkaXIpOgorICAgICAgICAgICAgZ2VuZXJhdGVfbG9jYWxlX2FyY2hpdmUoc2VsZi5kLCBzZWxmLnRhcmdldF9yb290ZnMsIHRhcmdldF9hcmNoLCBsb2NhbGVkaXIpCisgICAgICAgICAgICAjIEFuZCBub3cgZGVsZXRlIHRoZSBiaW5hcnkgbG9jYWxlcworICAgICAgICAgICAgc2VsZi5yZW1vdmUoZm5tYXRjaC5maWx0ZXIoc2VsZi5saXN0X2luc3RhbGxlZCgpLCAiZ2xpYmMtYmluYXJ5LWxvY2FsZWRhdGEtKiIpLCBGYWxzZSkKIAogICAgIGRlZiBkZXBsb3lfZGlyX2xvY2soc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZGVwbG95X2RpciBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkgYi9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCA0YjhmMjY0Li4yMWFlMGE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQpAQCAtNDgyLDggKzQ4Miw2IEBACiAgICAgaCA9IGhhc2hsaWIuc2hhMjU2KCkKICAgICBwcmV2X2RpciA9IG9zLmdldGN3ZCgpCiAgICAgaW5jbHVkZV9vd25lcnMgPSBvcy5lbnZpcm9uLmdldCgnUFNFVURPX0RJU0FCTEVEJykgPT0gJzAnCi0gICAgaWYgInBhY2thZ2Vfd3JpdGVfIiBpbiB0YXNrIG9yIHRhc2sgPT0gInBhY2thZ2VfcWEiOgotICAgICAgICBpbmNsdWRlX293bmVycyA9IEZhbHNlCiAgICAgZXh0cmFfY29udGVudCA9IGQuZ2V0VmFyKCdIQVNIRVFVSVZfSEFTSF9WRVJTSU9OJykKIAogICAgIHRyeToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKaW5kZXggMDE4NWU2Ny4uNGE3OTFmZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTUyMCwxMCArNTIwLDYgQEAKICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKIAogICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX25wbShzZWxmKToKLSAgICAgICAgY29sbGVjdGlvbnMgPSBnZXRfYmJfdmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpCi0gICAgICAgIGlmICJvcGVuZW1iZWRkZWQtbGF5ZXIiIG5vdCBpbiBjb2xsZWN0aW9uczoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlc3QgbmVlZHMgbWV0YS1vZSBmb3Igbm9kZWpzIikKLQogICAgICAgICBwbiA9ICdzYXZvaXJmYWlyZWxpbnV4LW5vZGUtc2VydmVyLWV4YW1wbGUnCiAgICAgICAgIHB2ID0gJzEuMC4wJwogICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPScgKyBwdgpAQCAtNzg0LDI2ICs3ODAsNiBAQAogICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQogICAgICAgICAjIFRoaXMgaXMgcHJvYmFibHkgc3VmZmljaWVudAogCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfb3ZlcnJpZGVzKHNlbGYpOgotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUgd2l0aCBwYXRjaGVzIGluIG92ZXJyaWRlcwotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBkZXZ0b29sLXBhdGNoLW92ZXJyaWRlcyAteCAlcycgJSAodGVtcGRpcikpCi0KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgc291cmNlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICJzb3VyY2UiKQotICAgICAgICBkZWYgY2hlY2soYnJhbmNoLCBleHBlY3RlZCk6Ci0gICAgICAgICAgICBydW5DbWQoJ2dpdCAtQyAlcyBjaGVja291dCAlcycgJSAodGVtcGRpciwgYnJhbmNoKSkKLSAgICAgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICJydCIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgY29udGVudCA9IGYucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50LCBleHBlY3RlZCkKLSAgICAgICAgY2hlY2soJ2RldnRvb2wnLCAnVGhpcyBpcyBhIHRlc3QgZm9yIHNvbWV0aGluZ1xuJykKLSAgICAgICAgY2hlY2soJ2RldnRvb2wtbm8tb3ZlcnJpZGVzJywgJ1RoaXMgaXMgYSB0ZXN0IGZvciBzb21ldGhpbmdcbicpCi0gICAgICAgIGNoZWNrKCdkZXZ0b29sLW92ZXJyaWRlLXFlbXVhcm0nLCAnVGhpcyBpcyBhIHRlc3QgZm9yIHFlbXVhcm1cbicpCi0gICAgICAgIGNoZWNrKCdkZXZ0b29sLW92ZXJyaWRlLXFlbXV4ODYnLCAnVGhpcyBpcyBhIHRlc3QgZm9yIHFlbXV4ODZcbicpCi0KIGNsYXNzIERldnRvb2xVcGRhdGVUZXN0cyhEZXZ0b29sQmFzZSk6CiAKICAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGUoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CmluZGV4IDlkNTZlOWUuLjZiYWM1M2MgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CkBAIC00MDksMTAgKzQwOSw2IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCiAKICAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9ucG0oc2VsZik6Ci0gICAgICAgIGNvbGxlY3Rpb25zID0gZ2V0X2JiX3ZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKQotICAgICAgICBpZiAib3BlbmVtYmVkZGVkLWxheWVyIiBub3QgaW4gY29sbGVjdGlvbnM6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUZXN0IG5lZWRzIG1ldGEtb2UgZm9yIG5vZGVqcyIpCi0KICAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQogICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQogICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdzYXZvaXJmYWlyZWxpbnV4LW5vZGUtc2VydmVyLWV4YW1wbGVfMS4wLjAuYmInKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKaW5kZXggMWJiMWM0Yi4uZDg5NzMxYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CkBAIC0xNjEsNyArMTYxLDYgQEAKICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfRkVFRF9HUEdfTkFNRSA9ICJ0ZXN0dXNlciJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFID0gIiVzIlxuJyAlIG9zLnBhdGguam9pbihzaWduaW5nX2tleV9kaXIsICdrZXkucGFzc3BocmFzZScpCiAgICAgICAgIGZlYXR1cmVzICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19ob21lCi0gICAgICAgIGZlYXR1cmVzICs9ICdQU0VVRE9fSUdOT1JFX1BBVEhTIC49ICIsJXMiXG4nICUgc2VsZi5ncGdfaG9tZQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKIAogICAgICAgICAjIEJ1aWxkIGNvcmUtaW1hZ2Utc2F0byBhbmQgdGVzdGltYWdlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMyLmJiCmluZGV4IDlkMWVjZWUuLmY4YWUzZmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMyLmJiCkBAIC0xNTgsNyArMTU4LDcgQEAKIAogaW5oZXJpdCBwdGVzdAogCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBmaW5kdXRpbHMgZ2F3ayBsaWJlcnJvci1wZXJsIG1ha2UgcGVybCBwZXJsLW1vZHVsZXMgcHl0aG9uMy1jb3JlIHNlZCBzaGFkb3ciCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBmaW5kdXRpbHMgZ2F3ayBsaWJlcnJvci1wZXJsIGxpYm1vZHVsZS1idWlsZC1wZXJsIG1ha2UgcGVybCBwZXJsLW1vZHVsZS1maWxlLXN0YXQgcHl0aG9uMy1jb3JlIHNlZCBzaGFkb3ciCiAKICMgLWRldiBhdXRvbWF0aWMgZGVwZW5kZW5jaWVzIGZhaWxzIGFzIHdlIGRvbid0IHdhbnQgbGlibW9kdWxlLWJ1aWxkLXBlcmwtZGV2LCBpdHMgdG9vIGhlYXZ5CiAjIG1heSBuZWVkIHR3ZWFraW5nIGlmIERFUEVORFMgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggZjdlNGI1OS4uNWYxYWI2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCkBAIC0xOTIsNiArMTkyLDcgQEAKIAlmaQogCiAJY3AgLWZwUFIgJHtEfSR7ZGF0YWRpcn0vKiAkZGVzdCR7ZGF0YWRpcn0KKwlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vbG9jYWxlLwogCWNwIC1mcFBSICR7V09SS0RJUn0vU1VQUE9SVEVEICRkZXN0CiAKIAl0YXJnZXQ9JGRlc3Qvc2NyaXB0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCmluZGV4IDljMDgxOGMuLmU3MmIwNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKQEAgLTQsNyArNCw3IEBACiByZXF1aXJlIG11c2wuaW5jCiBpbmhlcml0IGxpbnV4bG9hZGVyCiAKLVNSQ1JFViA9ICJhNWFmZjE5NzJjOWUzOTgxNTY2NDE0YjA5YTI4ZTMzMWNjZDJiZTVkIgorU1JDUkVWID0gImZmYWMwYzIyOTk4NjcyNWMwZDBmM2M4MDZiYWZhN2UzY2E0MDlmM2IiCiAKIEJBU0VWRVIgPSAiMS4yLjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtc3lzdGVtZC5wYy5pbi11c2UtUk9PVFBSRUZJWC13aXRob3V0LXN1ZmZpeGVkLXNsYXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1zeXN0ZW1kLnBjLmluLXVzZS1ST09UUFJFRklYLXdpdGhvdXQtc3VmZml4ZWQtc2xhc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMmE0MTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1zeXN0ZW1kLnBjLmluLXVzZS1ST09UUFJFRklYLXdpdGhvdXQtc3VmZml4ZWQtc2xhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDU4ODYwZTBmMjQ4NTc2YTgwZmYyYWYyNTZiYTQyNzEzYzE4NmFlOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOSBTZXAgMjAyMCAxODowMTo0MSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBzeXN0ZW1kLnBjLmluOiB1c2UgUk9PVFBSRUZJWCB3aXRob3V0IHN1ZmZpeGVkIHNsYXNoCi0KLVRoaXMgY29tcGxlbWVudHMgdGhlIGNvbW1pdAotaHR0cHM6Ly9naXRodWIuY29tL3BvZXR0ZXJpbmcvc3lzdGVtZC9jb21taXQvYjYxMmMyNmNlYjlmNTZhZjAyNzFmYzlmMDdjMTcyNGQyZDI2MGE4YQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY29yZS9zeXN0ZW1kLnBjLmluIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLS0tLSBhL3NyYy9jb3JlL3N5c3RlbWQucGMuaW4KLSsrKyBiL3NyYy9jb3JlL3N5c3RlbWQucGMuaW4KLUBAIC02NSwxNiArNjUsMTYgQEAgc3lzdGVtZHNodXRkb3duZGlyPSR7c3lzdGVtZF9zaHV0ZG93bl9kaQotIHRtcGZpbGVzX2Rpcj0ke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQKLSB0bXBmaWxlc2Rpcj0ke3RtcGZpbGVzX2Rpcn0KLSAKLS1zeXN1c2Vyc19kaXI9JHtyb290cHJlZml4fS9saWIvc3lzdXNlcnMuZAotK3N5c3VzZXJzX2Rpcj0ke3ByZWZpeH0vbGliL3N5c3VzZXJzLmQKLSBzeXN1c2Vyc2Rpcj0ke3N5c3VzZXJzX2Rpcn0KLSAKLS1zeXNjdGxfZGlyPSR7cm9vdHByZWZpeH0vbGliL3N5c2N0bC5kCi0rc3lzY3RsX2Rpcj0ke3ByZWZpeH0vbGliL3N5c2N0bC5kCi0gc3lzY3RsZGlyPSR7c3lzY3RsX2Rpcn0KLSAKLS1iaW5mbXRfZGlyPSR7cm9vdHByZWZpeH0vbGliL2JpbmZtdC5kCi0rYmluZm10X2Rpcj0ke3ByZWZpeH0vbGliL2JpbmZtdC5kCi0gYmluZm10ZGlyPSR7YmluZm10X2Rpcn0KLSAKLS1tb2R1bGVzX2xvYWRfZGlyPSR7cm9vdHByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kCi0rbW9kdWxlc19sb2FkX2Rpcj0ke3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kCi0gbW9kdWxlc2xvYWRkaXI9JHttb2R1bGVzX2xvYWRfZGlyfQotIAotIGNhdGFsb2dfZGlyPSR7cHJlZml4fS9saWIvc3lzdGVtZC9jYXRhbG9nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDYuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0Ni42LmJiCmluZGV4IDkyMTVhZGYuLmMxNDI0YTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0Ni42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0Ni42LmJiCkBAIC0yMCw3ICsyMCw2IEBACiAgICAgICAgICAgIGZpbGU6Ly85OS1kZWZhdWx0LnByZXNldCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXN0ZW1kLnBjLmluLXVzZS1ST09UUFJFRklYLXdpdGhvdXQtc3VmZml4ZWQtc2xhc2gucGF0Y2ggXAogICAgICAgICAgICAiCiAKICMgcGF0Y2hlcyBuZWVkZWQgYnkgbXVzbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sLWNyb3NzXzIuNC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sLWNyb3NzXzIuNC42LmJiCmluZGV4IDAyYzZlMTUuLjUyMmJmM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC1jcm9zc18yLjQuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wtY3Jvc3NfMi40LjYuYmIKQEAgLTYsOCArNiw2IEBACiAKIGRhdGFkaXIgPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHt0YXJnZXRfZGF0YWRpcn0iCiAKLWluaGVyaXQgbm9wYWNrYWdlcwotCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAJIyBSZW1vdmUgYW55IGV4aXN0aW5nIGxpYnRvb2wgbTQgc2luY2Ugb2xkIHN0YWxlIHZlcnNpb25zIHdvdWxkIGJyZWFrCiAJIyBhbnkgdXBncmFkZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgppbmRleCA4ZDZiYmZjLi45MTgxNDEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgpAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICAgICBmaWxlOi8vYWRkLWV4Y2x1c2lvbi10by1ta2ZzLWpmZnMyLWdpdC0yLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorUyA9ICIke1dPUktESVJ9L2dpdC8iCiAKIEVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW5zdGFsbC10ZXN0cyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgppbmRleCAyZTEzZmVjLi4zYjYyM2Q4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgpAQCAtNiw3ICs2LDcgQEAKICAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLWdyb3VwIFwKICAgICAgICAgICAgIgogCi1TUkNSRVYgPSAiY2NhMGQ3ZjE1YjcxOTcwOTVjZDU4NzQyMGQzMWIxODc2MjBjMzA5MyIKK1NSQ1JFViA9ICJkNmIxYjEzYzI2OGQ3MjQ2ZjAyODhkMzJkNmI1ZWNjYzY1OGNmZjRlIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIFBWID0gIjEuOS4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwppbmRleCA2YzBlZGNiLi5iYmI5MDM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKQEAgLTMxLDcgKzMxLDYgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZmluZF9kYXRhZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VzYi1maXgtc2V0dXBfbGVuLWluaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1taXBzLWFkZC0zNEtmLTY0dGxiLWZpY3RpdGlvdXMtY3B1LXR5cGUtbGlrZS0zNEtmLWJ1LnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtbWlwcy1hZGQtMzRLZi02NHRsYi1maWN0aXRpb3VzLWNwdS10eXBlLWxpa2UtMzRLZi1idS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLW1pcHMtYWRkLTM0S2YtNjR0bGItZmljdGl0aW91cy1jcHUtdHlwZS1saWtlLTM0S2YtYnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MzEyZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtbWlwcy1hZGQtMzRLZi02NHRsYi1maWN0aXRpb3VzLWNwdS10eXBlLWxpa2UtMzRLZi1idS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1Gcm9tIGIzZmNjN2Q5NjUyM2FkOGUzZWEyOGMwOWQ0OTVlZjA4NTI5ZDAxY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IFdlZCwgNyBPY3QgMjAyMCAxMDoxOTo0MiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBtaXBzOiBhZGQgMzRLZi02NHRsYiBmaWN0aXRpb3VzIGNwdSB0eXBlIGxpa2UgMzRLZiBidXQgd2l0aAotIDY0IFRMQnMKLQotSW4gWW9jdG8gUHJvamVjdCBDSSBydW5zIGl0IHdhcyBvYnNlcnZlZCB0aGF0IHRlc3QgcnVuCi1vZiAzMiBiaXQgbWlwcyBpbWFnZSB0YWtlcyBhbG1vc3QgdHdpY2UgbG9uZ2VyIHRoYW4gNjQgYml0Ci1taXBzIGltYWdlIHdpdGggdGhlIHNhbWUgbG9naWNhbCBsb2FkIGFuZCBDSSBleGVjdXRpb24KLWhpdHMgdGltZW91dC4KLQotU2VlIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5OTIKLQotWW9jdG8gcHJvamVjdCB1c2VzIDM0S2YgY3B1IHR5cGUgdG8gcnVuIDMyIGJpdCBtaXBzIGltYWdlLAotYW5kIE1JUFM2NFIyLWdlbmVyaWMgY3B1IHR5cGUgdG8gcnVuIDY0IGJpdCBtaXBzNjQgaW1hZ2UuCi0KLVVwb24gcWVtdSBiZWhhdmlvciBkaWZmZXJlbmNlcyBpbnZlc3RpZ2F0aW9uIGJldHdlZW4gbWlwcwotYW5kIG1pcHM2NCB0d28gcHJvbWluZW50IG9ic2VydmF0aW9ucyBjYW1lIHVwOiB1bmRlcgotbG9naWNhbGx5IHNpbWlsYXIgbG9hZCAoc2FtZSBkZWZpbml0aW9uIGFuZCBjb25maWd1cmF0aW9uCi1vZiB1c2VyLWxhbmQgaW1hZ2UpIGluIGNhc2Ugb2YgbWlwcyBnZXRfcGh5c2ljYWxfYWRkcmVzcwotZnVuY3Rpb24gaXMgY2FsbGVkIGFsbW9zdCB0d2ljZSBtb3JlIG9mdGVuLCBtZWFuaW5nCi10d2ljZSBtb3JlIG1lbW9yeSBhY2Nlc3NlcyBpbnZvbHZlZCBpbiB0aGlzIGNhc2UuIEFsc28KLW51bWJlciBvZiB0bGJ3ciBpbnN0cnVjdGlvbiBleGVjdXRlZCAocjRrX2hlbHBlcl90bGJ3cgotcWVtdSBmdW5jdGlvbikgYWxtb3N0IDE2IHRpbWUgYmlnZ2VyIGluIG1pcHMgY2FzZSB0aGFuIGluCi1taXBzNjQuCi0KLUl0IHR1cm5zIG91dCB0aGF0IDM0S2YgY3B1IGhhcyAxNiBUTEJzLCBidXQgaW4gY2FzZSBvZgotTUlQUzY0UjItZ2VuZXJpYyBpdCBpcyA2NCBUTEJzLiBTbyB0aGF0IGV4cGxhaW5zIHdoeQotc29tZSBtYW55IG1vcmUgdGxid3IgaGFkIHRvIGJlIGV4ZWN1dGUgYnkga2VybmVsIFRMQiByZWZpbGwKLWhhbmRsZXIgaW4gY2FzZSBvZiAzMiBiaXQgbWlzcC4KLQotVGhlIGlkZWEgb2YgdGhlIGZpeCBpcyB0byBjb21lIHVwIHdpdGggbmV3IDM0S2YtNjR0bGIgZmljdGl0aW91cwotY3B1IHR5cGUsIHRoYXQgd291bGQgYmVoYXZlIGV4YWN0bHkgYXMgMzRLZiBidXQgaXQgd291bGQKLWNvbnRhaW4gNjQgVExCcyB0byByZWR1Y2UgVExCIHRyYXNoaW5nLiBBZnRlciBhbGwsIGFkZGluZwotbW9yZSBUTEJzIHRvIHNvZnQgbW11IGlzIGVhc3kuCi0KLUV4cGVyaW1lbnQgd2l0aCBzb21lIHNpZ25pZmljYW50IG5vbi10cnZpYWwgbG9hZCBpbiBZb2N0bwotZW52aXJvbm1lbnQgYnkgcnVubmluZyBkb190ZXN0aW1hZ2UgbG9hZCBzaG93cyB0aGF0IDM0S2YtNjR0bGIKLWNwdSBwZXJmb3JtcyA0MCUgb3Igc28gYmV0dGVyIHRoYW4gb3JpZ2luYWwgMzRLZiBjcHUgd3J0IHRlc3QKLWV4ZWN1dGlvbiByZWFsIHRpbWUuCi0KLUl0IGlzIG5vdCBpZGVhbCB0byBoYXZlIGNwdSB0eXBlIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlCi13aWxkIGJ1dCBnaXZlbiBwZXJmb3JtYW5jZSBnYWlucyBpdCBzZWVtcyB0byBiZSBqdXN0aWZpZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gdGFyZ2V0L21pcHMvdHJhbnNsYXRlX2luaXQuaW5jLmMgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3RhcmdldC9taXBzL3RyYW5zbGF0ZV9pbml0LmluYy5jIGIvdGFyZ2V0L21pcHMvdHJhbnNsYXRlX2luaXQuaW5jLmMKLWluZGV4IDYzN2NhY2NkODkuLmI3M2FiNDgyMzEgMTAwNjQ0Ci0tLS0gYS90YXJnZXQvbWlwcy90cmFuc2xhdGVfaW5pdC5pbmMuYwotKysrIGIvdGFyZ2V0L21pcHMvdHJhbnNsYXRlX2luaXQuaW5jLmMKLUBAIC0yOTcsNiArMjk3LDYxIEBAIGNvbnN0IG1pcHNfZGVmX3QgbWlwc19kZWZzW10gPQotICAgICAgICAgLmluc25fZmxhZ3MgPSBDUFVfTUlQUzMyUjIgfCBBU0VfTUlQUzE2IHwgQVNFX0RTUCB8IEFTRV9NVCwKLSAgICAgICAgIC5tbXVfdHlwZSA9IE1NVV9UWVBFX1I0MDAwLAotICAgICB9LAotKyAgICAvKgotKyAgICAgKiBWZXJiYXRpbSBjb3B5IG9mICIzNEtmIiBjcHUsIG9ubHkgYnVtcGVkIHVwIG51bWJlciBvZiBUTEIgZW50cmllcwotKyAgICAgKiBmcm9tIDE2IHRvIDY0IChzZWUgQ1AwX0NvbmZpZzAgdmFsdWUgYXQgQ1AwQzFfTU1VIGJpdHMpIHRvIGltcHJvdmUKLSsgICAgICogcGVyZm9ybWFuY2UgYnkgcmVkdWNpbmcgbnVtYmVyIG9mIFRMQiByZWZpbGwgZXhjZXB0aW9ucyBhbmQKLSsgICAgICogZWxpbWluYXRpbmcgbmVlZCB0byBydW4gYWxsIGNvcnJlc3BvbmRpbmcgVExCIHJlZmlsbCBoYW5kbGluZwotKyAgICAgKiBpbnN0cnVjdGlvbnMuCi0rICAgICAqLwotKyAgICB7Ci0rICAgICAgICAubmFtZSA9ICIzNEtmLTY0dGxiIiwKLSsgICAgICAgIC5DUDBfUFJpZCA9IDB4MDAwMTk1MDAsCi0rICAgICAgICAuQ1AwX0NvbmZpZzAgPSBNSVBTX0NPTkZJRzAgfCAoMHgxIDw8IENQMEMwX0FSKSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAoTU1VX1RZUEVfUjQwMDAgPDwgQ1AwQzBfTVQpLAotKyAgICAgICAgLkNQMF9Db25maWcxID0gTUlQU19DT05GSUcxIHwgKDEgPDwgQ1AwQzFfRlApIHwgKDYzIDw8IENQMEMxX01NVSkgfAotKyAgICAgICAgICAgICAgICAgICAgICAgKDAgPDwgQ1AwQzFfSVMpIHwgKDMgPDwgQ1AwQzFfSUwpIHwgKDEgPDwgQ1AwQzFfSUEpIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICgwIDw8IENQMEMxX0RTKSB8ICgzIDw8IENQMEMxX0RMKSB8ICgxIDw8IENQMEMxX0RBKSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBDUDBDMV9DQSksCi0rICAgICAgICAuQ1AwX0NvbmZpZzIgPSBNSVBTX0NPTkZJRzIsCi0rICAgICAgICAuQ1AwX0NvbmZpZzMgPSBNSVBTX0NPTkZJRzMgfCAoMSA8PCBDUDBDM19WSW50KSB8ICgxIDw8IENQMEMzX01UKSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBDUDBDM19EU1BQKSwKLSsgICAgICAgIC5DUDBfTExBZGRyX3J3X2JpdG1hc2sgPSAwLAotKyAgICAgICAgLkNQMF9MTEFkZHJfc2hpZnQgPSAwLAotKyAgICAgICAgLlNZTkNJX1N0ZXAgPSAzMiwKLSsgICAgICAgIC5DQ1JlcyA9IDIsCi0rICAgICAgICAuQ1AwX1N0YXR1c19yd19iaXRtYXNrID0gMHgzNzc4RkYxRiwKLSsgICAgICAgIC5DUDBfVENTdGF0dXNfcndfYml0bWFzayA9ICgwIDw8IENQMFRDU3RfVENVMykgfCAoMCA8PCBDUDBUQ1N0X1RDVTIpIHwKLSsgICAgICAgICAgICAgICAgICAgICgxIDw8IENQMFRDU3RfVENVMSkgfCAoMSA8PCBDUDBUQ1N0X1RDVTApIHwKLSsgICAgICAgICAgICAgICAgICAgICgwIDw8IENQMFRDU3RfVE1YKSB8ICgxIDw8IENQMFRDU3RfRFQpIHwKLSsgICAgICAgICAgICAgICAgICAgICgxIDw8IENQMFRDU3RfREEpIHwgKDEgPDwgQ1AwVENTdF9BKSB8Ci0rICAgICAgICAgICAgICAgICAgICAoMHgzIDw8IENQMFRDU3RfVEtTVSkgfCAoMSA8PCBDUDBUQ1N0X0lYTVQpIHwKLSsgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IENQMFRDU3RfVEFTSUQpLAotKyAgICAgICAgLkNQMV9mY3IwID0gKDEgPDwgRkNSMF9GNjQpIHwgKDEgPDwgRkNSMF9MKSB8ICgxIDw8IEZDUjBfVykgfAotKyAgICAgICAgICAgICAgICAgICAgKDEgPDwgRkNSMF9EKSB8ICgxIDw8IEZDUjBfUykgfCAoMHg5NSA8PCBGQ1IwX1BSSUQpLAotKyAgICAgICAgLkNQMV9mY3IzMSA9IDAsCi0rICAgICAgICAuQ1AxX2ZjcjMxX3J3X2JpdG1hc2sgPSAweEZGODNGRkZGLAotKyAgICAgICAgLkNQMF9TUlNDdGwgPSAoMHhmIDw8IENQMFNSU0N0bF9IU1MpLAotKyAgICAgICAgLkNQMF9TUlNDb25mMF9yd19iaXRtYXNrID0gMHgzZmZmZmZmZiwKLSsgICAgICAgIC5DUDBfU1JTQ29uZjAgPSAoMVUgPDwgQ1AwU1JTQzBfTSkgfCAoMHgzZmUgPDwgQ1AwU1JTQzBfU1JTMykgfAotKyAgICAgICAgICAgICAgICAgICAgKDB4M2ZlIDw8IENQMFNSU0MwX1NSUzIpIHwgKDB4M2ZlIDw8IENQMFNSU0MwX1NSUzEpLAotKyAgICAgICAgLkNQMF9TUlNDb25mMV9yd19iaXRtYXNrID0gMHgzZmZmZmZmZiwKLSsgICAgICAgIC5DUDBfU1JTQ29uZjEgPSAoMVUgPDwgQ1AwU1JTQzFfTSkgfCAoMHgzZmUgPDwgQ1AwU1JTQzFfU1JTNikgfAotKyAgICAgICAgICAgICAgICAgICAgKDB4M2ZlIDw8IENQMFNSU0MxX1NSUzUpIHwgKDB4M2ZlIDw8IENQMFNSU0MxX1NSUzQpLAotKyAgICAgICAgLkNQMF9TUlNDb25mMl9yd19iaXRtYXNrID0gMHgzZmZmZmZmZiwKLSsgICAgICAgIC5DUDBfU1JTQ29uZjIgPSAoMVUgPDwgQ1AwU1JTQzJfTSkgfCAoMHgzZmUgPDwgQ1AwU1JTQzJfU1JTOSkgfAotKyAgICAgICAgICAgICAgICAgICAgKDB4M2ZlIDw8IENQMFNSU0MyX1NSUzgpIHwgKDB4M2ZlIDw8IENQMFNSU0MyX1NSUzcpLAotKyAgICAgICAgLkNQMF9TUlNDb25mM19yd19iaXRtYXNrID0gMHgzZmZmZmZmZiwKLSsgICAgICAgIC5DUDBfU1JTQ29uZjMgPSAoMVUgPDwgQ1AwU1JTQzNfTSkgfCAoMHgzZmUgPDwgQ1AwU1JTQzNfU1JTMTIpIHwKLSsgICAgICAgICAgICAgICAgICAgICgweDNmZSA8PCBDUDBTUlNDM19TUlMxMSkgfCAoMHgzZmUgPDwgQ1AwU1JTQzNfU1JTMTApLAotKyAgICAgICAgLkNQMF9TUlNDb25mNF9yd19iaXRtYXNrID0gMHgzZmZmZmZmZiwKLSsgICAgICAgIC5DUDBfU1JTQ29uZjQgPSAoMHgzZmUgPDwgQ1AwU1JTQzRfU1JTMTUpIHwKLSsgICAgICAgICAgICAgICAgICAgICgweDNmZSA8PCBDUDBTUlNDNF9TUlMxNCkgfCAoMHgzZmUgPDwgQ1AwU1JTQzRfU1JTMTMpLAotKyAgICAgICAgLlNFR0JJVFMgPSAzMiwKLSsgICAgICAgIC5QQUJJVFMgPSAzMiwKLSsgICAgICAgIC5pbnNuX2ZsYWdzID0gQ1BVX01JUFMzMlIyIHwgQVNFX01JUFMxNiB8IEFTRV9EU1AgfCBBU0VfTVQsCi0rICAgICAgICAubW11X3R5cGUgPSBNTVVfVFlQRV9SNDAwMCwKLSsgICAgfSwKLSAgICAgewotICAgICAgICAgLm5hbWUgPSAiNzRLZiIsCi0gICAgICAgICAuQ1AwX1BSaWQgPSAweDAwMDE5NzAwLAotLS0gCi0yLjE0LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXhsYXQtTWFyay1JUFBST1RPX01BWC1sYXN0LWluLUlQUFJPVE9fLWNvbnN0YW50cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS14bGF0LU1hcmstSVBQUk9UT19NQVgtbGFzdC1pbi1JUFBST1RPXy1jb25zdGFudHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNTNmMzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXhsYXQtTWFyay1JUFBST1RPX01BWC1sYXN0LWluLUlQUFJPVE9fLWNvbnN0YW50cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gMzg3ZDNiNmZiYTk1Y2I0N2M0ZGFjYzZiY2QzMzAxNDhhOTE2ODg1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDcgT2N0IDIwMjAgMTI6NTQ6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0geGxhdDogTWFyayBJUFBST1RPX01BWCBsYXN0IGluIElQUFJPVE9fKiBjb25zdGFudHMKLQotKiB4bGF0L2luZXRfcHJvdG9jb2xzLmluIChJUFBST1RPX01BWCk6IEl0IHNob3VsZCBiZSB0aGUgbGFzdCBlbnRyeQotICBhZnRlciBhZGRpbmcgSVBQUk9UT19NUFRDUCB0aGlzIHNob3VsZCBoYXZlIG5ldyB2YWx1ZSBhcwotICBJUFBST1RPX01QVENQICsgMS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLnN0cmFjZS5pby9waXBlcm1haWwvc3RyYWNlLWRldmVsLzIwMjAtT2N0b2Jlci8wMTAyNTMuaHRtbF0KLS0tLQotIHhsYXQvaW5ldF9wcm90b2NvbHMuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBhL3hsYXQvaW5ldF9wcm90b2NvbHMuaW4KLSsrKyBiL3hsYXQvaW5ldF9wcm90b2NvbHMuaW4KLUBAIC0zMiw1ICszMiw1IEBAIElQUFJPVE9fVURQTElURQkJMTM2Ci0gSVBQUk9UT19NUExTCQkxMzcKLSBJUFBST1RPX0VUSEVSTkVUCTE0MwotIElQUFJPVE9fUkFXCQkyNTUKLS1JUFBST1RPX01BWAkJMjU2Ci0gSVBQUk9UT19NUFRDUAkJMjYyCi0rSVBQUk9UT19NQVgJCTI2MwotLS0tIGEveGxhdC9pbmV0X3Byb3RvY29scy5oCi0rKysgYi94bGF0L2luZXRfcHJvdG9jb2xzLmgKLUBAIC0yMzQsMTkgKzIzNCwxOSBAQCBESUFHX1BPUF9JR05PUkVfVEFVVE9MT0dJQ0FMX0NPTVBBUkUKLSAjZWxzZQotICMgZGVmaW5lIElQUFJPVE9fUkFXIDI1NQotICNlbmRpZgotLSNpZiBkZWZpbmVkKElQUFJPVE9fTUFYKSB8fCAoZGVmaW5lZChIQVZFX0RFQ0xfSVBQUk9UT19NQVgpICYmIEhBVkVfREVDTF9JUFBST1RPX01BWCkKLSsjaWYgZGVmaW5lZChJUFBST1RPX01QVENQKSB8fCAoZGVmaW5lZChIQVZFX0RFQ0xfSVBQUk9UT19NUFRDUCkgJiYgSEFWRV9ERUNMX0lQUFJPVE9fTVBUQ1ApCi0gRElBR19QVVNIX0lHTk9SRV9UQVVUT0xPR0lDQUxfQ09NUEFSRQotLXN0YXRpY19hc3NlcnQoKElQUFJPVE9fTUFYKSA9PSAoMjU2KSwgIklQUFJPVE9fTUFYICE9IDI1NiIpOwotK3N0YXRpY19hc3NlcnQoKElQUFJPVE9fTVBUQ1ApID09ICgyNjIpLCAiSVBQUk9UT19NUFRDUCAhPSAyNjIiKTsKLSBESUFHX1BPUF9JR05PUkVfVEFVVE9MT0dJQ0FMX0NPTVBBUkUKLSAjZWxzZQotLSMgZGVmaW5lIElQUFJPVE9fTUFYIDI1NgotKyMgZGVmaW5lIElQUFJPVE9fTVBUQ1AgMjYyCi0gI2VuZGlmCi0tI2lmIGRlZmluZWQoSVBQUk9UT19NUFRDUCkgfHwgKGRlZmluZWQoSEFWRV9ERUNMX0lQUFJPVE9fTVBUQ1ApICYmIEhBVkVfREVDTF9JUFBST1RPX01QVENQKQotKyNpZiBkZWZpbmVkKElQUFJPVE9fTUFYKSB8fCAoZGVmaW5lZChIQVZFX0RFQ0xfSVBQUk9UT19NQVgpICYmIEhBVkVfREVDTF9JUFBST1RPX01BWCkKLSBESUFHX1BVU0hfSUdOT1JFX1RBVVRPTE9HSUNBTF9DT01QQVJFCi0tc3RhdGljX2Fzc2VydCgoSVBQUk9UT19NUFRDUCkgPT0gKDI2MiksICJJUFBST1RPX01QVENQICE9IDI2MiIpOwotK3N0YXRpY19hc3NlcnQoKElQUFJPVE9fTUFYKSA9PSAoMjYzKSwgIklQUFJPVE9fTUFYICE9IDI2MyIpOwotIERJQUdfUE9QX0lHTk9SRV9UQVVUT0xPR0lDQUxfQ09NUEFSRQotICNlbHNlCi0tIyBkZWZpbmUgSVBQUk9UT19NUFRDUCAyNjIKLSsjIGRlZmluZSBJUFBST1RPX01BWCAyNjMKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIFhMQVRfTUFDUk9TX09OTFkKLUBAIC0zNTMsMTIgKzM1MywxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHhsYXRfZGF0YSBpbmV0X3Byb3RvCi0gIFhMQVQoSVBQUk9UT19SQVcpLAotICAjZGVmaW5lIFhMQVRfVkFMXzMyICgodW5zaWduZWQpIChJUFBST1RPX1JBVykpCi0gICNkZWZpbmUgWExBVF9TVFJfMzIgU1RSSU5HSUZZKElQUFJPVE9fUkFXKQotLSBYTEFUKElQUFJPVE9fTUFYKSwKLS0gI2RlZmluZSBYTEFUX1ZBTF8zMyAoKHVuc2lnbmVkKSAoSVBQUk9UT19NQVgpKQotLSAjZGVmaW5lIFhMQVRfU1RSXzMzIFNUUklOR0lGWShJUFBST1RPX01BWCkKLSAgWExBVChJUFBST1RPX01QVENQKSwKLS0gI2RlZmluZSBYTEFUX1ZBTF8zNCAoKHVuc2lnbmVkKSAoSVBQUk9UT19NUFRDUCkpCi0tICNkZWZpbmUgWExBVF9TVFJfMzQgU1RSSU5HSUZZKElQUFJPVE9fTVBUQ1ApCi0rICNkZWZpbmUgWExBVF9WQUxfMzMgKCh1bnNpZ25lZCkgKElQUFJPVE9fTVBUQ1ApKQotKyAjZGVmaW5lIFhMQVRfU1RSXzMzIFNUUklOR0lGWShJUFBST1RPX01QVENQKQotKyBYTEFUKElQUFJPVE9fTUFYKSwKLSsgI2RlZmluZSBYTEFUX1ZBTF8zNCAoKHVuc2lnbmVkKSAoSVBQUk9UT19NQVgpKQotKyAjZGVmaW5lIFhMQVRfU1RSXzM0IFNUUklOR0lGWShJUFBST1RPX01BWCkKLSB9OwotIGNvbnN0IHN0cnVjdCB4bGF0IGluZXRfcHJvdG9jb2xzWzFdID0geyB7Ci0gIC5kYXRhID0gaW5ldF9wcm90b2NvbHNfeGRhdGEsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS44LmJiCmluZGV4IDA0MTU1ODguLjcwZDU5NDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS44LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS44LmJiCkBAIC0xNCw3ICsxNCw2IEBACiAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1zcGFjZXNhdmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdWludHB0cl90LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3RyYWNlLWZpeC1yZXByb2R1Y2liaWx0eS1pc3N1ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14bGF0LU1hcmstSVBQUk9UT19NQVgtbGFzdC1pbi1JUFBST1RPXy1jb25zdGFudHMucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGY0YTY2OWY3ZmZmOWNjMzAyNzg0MDg1YmQ0YjcyZmFiMjE2YTQyNmEzZjcyYzg5MmIyOGE1MzdiNzFlN2FhOSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ydW4tcHRlc3QKaW5kZXggMzc0ZjFiZi4uZjM5YzQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDcgKzEsNSBAQAogIyEvYmluL3NoCiAKLW1rZGlyIC1wIC9ldGMvdWRldi9tb3VudC5ibGFja2xpc3QuZAogZWNobyAvZGV2L3NkYTEgPj4gL2V0Yy91ZGV2L21vdW50LmJsYWNrbGlzdC5kL3BhcnRlZC10bXAKLXJtIC1mICoubG9nCiBtYWtlIC1DIHRlc3RzIHRlc3Qtc3VpdGUubG9nCiBybSAvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0LmQvcGFydGVkLXRtcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgppbmRleCBhMWZkM2VmLi5hYTRkODA0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgpAQCAtNDYsNyArNDYsNyBAQAogfQogCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24zIG1ha2UgZ2F3ayBlMmZzcHJvZ3MtbWtlMmZzIgotUlJFQ09NTUVORFNfJHtQTn0tcHRlc3QgPSAia2VybmVsLW1vZHVsZS1zY3NpLWRlYnVnIgorCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCiAgICAgICAgIGdsaWJjLXV0aWxzIFwKICAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3ctc3lzcm9vdF80LjYuYmIKaW5kZXggMWY2MjMyZS4uYThjMTUzOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC42LmJiCkBAIC0yNyw1ICsyNywzIEBACiAjIG90aGVyd2lzZTogZGJ1cy1kZXYgZGVwZW5kcyBvbiBzaGFkb3ctc3lzcm9vdC1kZXYgd2hpY2ggZGVwZW5kcyBvbiBzaGFkb3ctc3lzcm9vdAogIyBhbmQgdGhpcyBoYXMgYW5vdGhlciBjb3B5IG9mIC9ldGMvbG9naW4uZGVmcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IHNoYWRvdwogUEFDS0FHRVMgPSAiIgotCi1pbmhlcml0IG5vcGFja2FnZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3RpbWV6b25lLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3RpbWV6b25lLmluYwppbmRleCA4ZWIxN2M1Li4zMjcyM2YzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lem9uZS90aW1lem9uZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdGltZXpvbmUuaW5jCkBAIC02LDcgKzYsNyBAQAogTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM2NzljOWQ2YjAyYmMyNzU3YjNlYWY4ZjUzYzQzZmJhIgogCi1QViA9ICIyMDIwYiIKK1BWID0gIjIwMjBhIgogCiBTUkNfVVJJID0iIGh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6Y29kZSR7UFZ9LnRhci5nejtuYW1lPXR6Y29kZSBcCiAgICAgICAgICAgIGh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSBcCkBAIC0xNCw1ICsxNCw3IEBACiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCiAKLVNSQ19VUklbdHpjb2RlLnNoYTI1NnN1bV0gPSAiNDdlZmY4OTQ0ZGU0YTY0Zjc2MjliODUxZTRhMzIzMzhhYjEyYzliNzNlZGQ2MjA2Mzc5NTE2N2ZmMWZlNDNkYSIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiOWIwNTNmOTUxZDI0NWNlODlkODUwYjk2ZWU0NzExZDgyZDgzMzU1OWIxZmM5NmJhMTlmOTBiYzRkNzQ1ZTgwOSIKK1NSQ19VUklbdHpjb2RlLm1kNXN1bV0gPSAiZjg3YzM0NzdlODVhNWM0YjAwZGYwZGVmNmM2YTAwNTUiCitTUkNfVVJJW3R6Y29kZS5zaGEyNTZzdW1dID0gIjdkMmFmNzEyMGVlMDNkZjcxZmJjYTI0MDMxY2NhZjQyNDA0NzUyZTYzOTE5NmZlOTNjNzlhNDFiMzhhNmQ2NjkiCitTUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gIjk2YTk4NWJiOGVlYWI1MzVmYjhhYTIxMzIyOTY3NjNhIgorU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICI1NDcxNjFlY2EyNGQzNDRlMGI1Zjk2YWZmNmE3NmI0NTRkYTI5NWRjMTRlZDRjYTUwYzIzNTUwNDNmYjg5OWEyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiCmluZGV4IGY4NDQzMTEuLjZhYWM1MTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3R6ZGF0YS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lem9uZS90emRhdGEuYmIKQEAgLTE1LDE4ICsxNSwxOCBAQAogSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgogCiBUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCi0gICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIFwKKyAgICAgICAgIGZhY3RvcnkgZXRjZXRlcmEgYmFja3dhcmQgc3lzdGVtdiBcCiAgICAgICAgICIKICMgcGFjaWZpY25ldyAKIAogZG9fY29tcGlsZSAoKSB7CiAgICAgICAgIGZvciB6b25lIGluICR7VFpPTkVTfTsgZG8gXAogICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mbyAtTCAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAogICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAogICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKICAgICAgICAgZG9uZQogfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uQC5zZXJ2aWNlCmluZGV4IGNlOGY0ZmIuLjBhMWRmMTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uQC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uQC5zZXJ2aWNlCkBAIC0yOSw3ICsyOSw2IEBACiBbU2VydmljZV0KICMgUmVxdWlyZXMgc3lzdGVtZC1ub3RpZnkuc28gV2VzdG9uIHBsdWdpbi4KIFR5cGU9bm90aWZ5Ci1FbnZpcm9ubWVudEZpbGU9L2V0Yy9kZWZhdWx0L3dlc3RvbgogRXhlY1N0YXJ0PS91c3IvYmluL3dlc3RvbiAtLW1vZHVsZXM9c3lzdGVtZC1ub3RpZnkuc28KIAogIyBPcHRpb25hbCB3YXRjaGRvZyBzZXR1cApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjQuYmIKaW5kZXggMTNmNzI0Ni4uZWRlZDYyNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiM2E1ZjdlOWE4NzRmMGE2ZTlhZDU5OWI0ZmM2YzQ5MWRiMjMxZGQ2ZiIKLVNSQ1JFVl9tZXRhID89ICI3Zjc2NWRjYjI5MDAzYmFmYzljMGFjNzcwMTQ3OTQwYmU2YzQyMGIyIgorU1JDUkVWX21hY2hpbmUgPz0gIjFkOWUyNWM0ZjM1MTU1NTgwY2VmMzEzZmYyYTc2ZGU1NDUxMjRhMWQiCitTUkNSRVZfbWV0YSA/PSAiMGQ4NjBlMDc1Nzg4YTkyNjAxZGZmM2ViOWI2MTVlZTQxZTQ2NTA0MCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNS40LjY5IgorTElOVVhfVkVSU0lPTiA/PSAiNS40LjY1IgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjguYmIKaW5kZXggM2Q2ZDc1MC4uYWEwMWYwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS44LmJiCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiNTk4MTAwMWJmMDNmMGQwYzFjZjY0MWEyMjg3YWI2MzY4YmFmNjI4YSIKLVNSQ1JFVl9tZXRhID89ICIzNDc3NWMyMGJjNGY0YWMzMmFjN2VkZWQ3OWY5ZGM4Y2E3N2U0Mjc3IgorU1JDUkVWX21hY2hpbmUgPz0gIjMxZmFmZTcwMWUyYWRlYzY1ZDJiMmE3NGEzZTU5MmEzNTg5MTVjNjciCitTUkNSRVZfbWV0YSA/PSAiZmZiZmU2MWExOTQ1Mzc2ODljNzgyYjIwZGExODVlN2U0ZGFhOWVmOSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01Ljg7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNS44LjEzIgorTElOVVhfVkVSU0lPTiA/PSAiNS44LjkiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZiYzUzOGVkNWJkOWE3ZmM5Mzk4MDg2YWVkY2Q3ZTQ2IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIKaW5kZXggMDBlMWI2NS4uODUzZmM5MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuNC5iYgpAQCAtNiw3ICs2LDcgQEAKIAogcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKIAotTElOVVhfVkVSU0lPTiA/PSAiNS40LjY5IgorTElOVVhfVkVSU0lPTiA/PSAiNS40LjY1IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgpAQCAtMTUsOSArMTUsOSBAQAogS01FVEEgPSAia2VybmVsLW1ldGEiCiBLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKIAotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNThmMzlkZjQ2ZDlkYWYxMmEwOTVmZmUyMjUwMzJlYzMyNTYxMjk2MCIKLVNSQ1JFVl9tYWNoaW5lID89ICJjZmNkZDYzMTQ1YzBkNzQxZTU3ZWUzZTNlNThmNzk0MjI5YzZjMDljIgotU1JDUkVWX21ldGEgPz0gIjdmNzY1ZGNiMjkwMDNiYWZjOWMwYWM3NzAxNDc5NDBiZTZjNDIwYjIiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJiYjc3NzkxYmMwMGNmYTcwMjExZGQyMzhkMzEyYjRkYjk1MGMwODA4IgorU1JDUkVWX21hY2hpbmUgPz0gIjQwNjAwOGJmMzIzMmRmYzllNjNiNmU3YmY3NDVjYTg4M2M0NTA0MWUiCitTUkNSRVZfbWV0YSA/PSAiMGQ4NjBlMDc1Nzg4YTkyNjAxZGZmM2ViOWI2MTVlZTQxZTQ2NTA0MCIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS44LmJiCmluZGV4IDc2NDI2NGYuLjc2YjYxMjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjguYmIKQEAgLTYsNyArNiw3IEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjUuOC4xMyIKK0xJTlVYX1ZFUlNJT04gPz0gIjUuOC45IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJjNTM4ZWQ1YmQ5YTdmYzkzOTgwODZhZWRjZDdlNDYiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgpAQCAtMTUsOSArMTUsOSBAQAogS01FVEEgPSAia2VybmVsLW1ldGEiCiBLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKIAotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNjI3Y2MxNzE3ZjQ3YzRkOWJjOWQ1OGY4OGIxNzY0OTkwZDk4MmE5OSIKLVNSQ1JFVl9tYWNoaW5lID89ICI1OTgxMDAxYmYwM2YwZDBjMWNmNjQxYTIyODdhYjYzNjhiYWY2MjhhIgotU1JDUkVWX21ldGEgPz0gIjM0Nzc1YzIwYmM0ZjRhYzMyYWM3ZWRlZDc5ZjlkYzhjYTc3ZTQyNzciCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI4MzBjYjlhZjQwZTg1NjYxNWI3YTQzNWE0ZmFjNTdiNzQ4YmE1NmQ2IgorU1JDUkVWX21hY2hpbmUgPz0gIjMxZmFmZTcwMWUyYWRlYzY1ZDJiMmE3NGEzZTU5MmEzNTg5MTVjNjciCitTUkNSRVZfbWV0YSA/PSAiZmZiZmU2MWExOTQ1Mzc2ODljNzgyYjIwZGExODVlN2U0ZGFhOWVmOSIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmIKaW5kZXggYmNjNTAwMy4uZDA2ZDY1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiCkBAIC0xMiwxNiArMTIsMTYgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuNC9zdGFuZGFyZC9iYXNlIgogS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS40L3N0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI1NjFkNGY2ZWIxZGUzMmUxNDQ4NDUxZGI4NjY1NjgyNmNmNDA2ZWI1IgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJjZmNkZDYzMTQ1YzBkNzQxZTU3ZWUzZTNlNThmNzk0MjI5YzZjMDljIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImU0MjFmM2YyMzk5YzE1M2M0ZDU4MjQxY2I2ZDFiZTkyNmY3ZWZjNDUiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJjZmNkZDYzMTQ1YzBkNzQxZTU3ZWUzZTNlNThmNzk0MjI5YzZjMDljIgotU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gImNmY2RkNjMxNDVjMGQ3NDFlNTdlZTNlM2U1OGY3OTQyMjljNmMwOWMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJjZmNkZDYzMTQ1YzBkNzQxZTU3ZWUzZTNlNThmNzk0MjI5YzZjMDljIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiY2ZjZGQ2MzE0NWMwZDc0MWU1N2VlM2UzZTU4Zjc5NDIyOWM2YzA5YyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjcyZDJmMTFiNWYxNzFlMTk2ZDZiOTgyNGI4MjU3NWQ5YTdiNTllNmYiCi1TUkNSRVZfbWFjaGluZSA/PSAiY2ZjZGQ2MzE0NWMwZDc0MWU1N2VlM2UzZTU4Zjc5NDIyOWM2YzA5YyIKLVNSQ1JFVl9tZXRhID89ICI3Zjc2NWRjYjI5MDAzYmFmYzljMGFjNzcwMTQ3OTQwYmU2YzQyMGIyIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiODk0ZTYzZDMyNTY2MTNmYWEzOTkzMWE2YWU1MDVjZmQxOTZkZjA2NyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiNDA2MDA4YmYzMjMyZGZjOWU2M2I2ZTdiZjc0NWNhODgzYzQ1MDQxZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJhYTEzZmRiMmM1ZjhjNGU0ZTQzMmJmZWU2ZGY5YzhmNzZlYzhhYzcwIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiNDA2MDA4YmYzMjMyZGZjOWU2M2I2ZTdiZjc0NWNhODgzYzQ1MDQxZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICI0MDYwMDhiZjMyMzJkZmM5ZTYzYjZlN2JmNzQ1Y2E4ODNjNDUwNDFlIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNDA2MDA4YmYzMjMyZGZjOWU2M2I2ZTdiZjc0NWNhODgzYzQ1MDQxZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjQwNjAwOGJmMzIzMmRmYzllNjNiNmU3YmY3NDVjYTg4M2M0NTA0MWUiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI0ZmIyMWQ2MDRmYzU0ZGI2MzIyMWVhMjhhYjkwNjIyYzI5ZDc0MjAyIgorU1JDUkVWX21hY2hpbmUgPz0gIjQwNjAwOGJmMzIzMmRmYzllNjNiNmU3YmY3NDVjYTg4M2M0NTA0MWUiCitTUkNSRVZfbWV0YSA/PSAiMGQ4NjBlMDc1Nzg4YTkyNjAxZGZmM2ViOWI2MTVlZTQxZTQ2NTA0MCIKIAogIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjQga2VybmVsCiAjIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotTElOVVhfVkVSU0lPTiA/PSAiNS40LjY5IgorTElOVVhfVkVSU0lPTiA/PSAiNS40LjY1IgogCiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKIERFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjguYmIKaW5kZXggZjgwYWUyMy4uZjhlNzI1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS44LmJiCkBAIC0xMiwxNiArMTIsMTYgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuOC9zdGFuZGFyZC9iYXNlIgogS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS44L3N0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MTU0MmUwMWQwZGViNWEzOGMxOTA4MDlmNGZkMDFhNDQyNzY5OTM4IgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI1OTgxMDAxYmYwM2YwZDBjMWNmNjQxYTIyODdhYjYzNjhiYWY2MjhhIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjM2ZTY0MmQ1YjZjNWIxZDA1ZjYxNzJhNzVkZjE3MmFkOGZlZmMzMGIiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI1OTgxMDAxYmYwM2YwZDBjMWNmNjQxYTIyODdhYjYzNjhiYWY2MjhhIgotU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gIjU5ODEwMDFiZjAzZjBkMGMxY2Y2NDFhMjI4N2FiNjM2OGJhZjYyOGEiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI1OTgxMDAxYmYwM2YwZDBjMWNmNjQxYTIyODdhYjYzNjhiYWY2MjhhIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNTk4MTAwMWJmMDNmMGQwYzFjZjY0MWEyMjg3YWI2MzY4YmFmNjI4YSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjU1MzhhNTRhZmQyNTI1ODAzNzI5Yzg1YTQwNjA5Y2FlMjkyY2IyNDIiCi1TUkNSRVZfbWFjaGluZSA/PSAiNTk4MTAwMWJmMDNmMGQwYzFjZjY0MWEyMjg3YWI2MzY4YmFmNjI4YSIKLVNSQ1JFVl9tZXRhID89ICIzNDc3NWMyMGJjNGY0YWMzMmFjN2VkZWQ3OWY5ZGM4Y2E3N2U0Mjc3IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZDM1MWJmODdjOWMwZTk2YTFmMjdmODdmMTZkMjk4YmM0NDcwZTBiNSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiMzFmYWZlNzAxZTJhZGVjNjVkMmIyYTc0YTNlNTkyYTM1ODkxNWM2NyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI5M2QyOWE3MDg5MGIxOWZiNTQ4MmViY2FiNWYzYTQ5MzAxODUxZGFmIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiMzFmYWZlNzAxZTJhZGVjNjVkMmIyYTc0YTNlNTkyYTM1ODkxNWM2NyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICIzMWZhZmU3MDFlMmFkZWM2NWQyYjJhNzRhM2U1OTJhMzU4OTE1YzY3IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiMzFmYWZlNzAxZTJhZGVjNjVkMmIyYTc0YTNlNTkyYTM1ODkxNWM2NyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjMxZmFmZTcwMWUyYWRlYzY1ZDJiMmE3NGEzZTU5MmEzNTg5MTVjNjciCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI0ZmFhMDQ5YjZiN2I1MWM1ZDEyZDIwYzVlOWZjZjhlMGEzYmE4ZDQyIgorU1JDUkVWX21hY2hpbmUgPz0gIjMxZmFmZTcwMWUyYWRlYzY1ZDJiMmE3NGEzZTU5MmEzNTg5MTVjNjciCitTUkNSRVZfbWV0YSA/PSAiZmZiZmU2MWExOTQ1Mzc2ODljNzgyYjIwZGExODVlN2U0ZGFhOWVmOSIKIAogIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1Ljgga2VybmVsCiAjIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS44O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZiYzUzOGVkNWJkOWE3ZmM5Mzk4MDg2YWVkY2Q3ZTQ2IgotTElOVVhfVkVSU0lPTiA/PSAiNS44LjEzIgorTElOVVhfVkVSU0lPTiA/PSAiNS44LjkiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgogREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43NC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NDNlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzQuMC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworCitTVU1NQVJZID0gIlBvcnRhYmxlIEJvb3N0LkphbSBidWlsZCB0b29sIGZvciBib29zdCIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK2luaGVyaXQgbmF0aXZlCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUJ1aWxkLWRlYnVnLXZlcnNpb24tb2YtYmphbS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC5zaC11c2UtRE5ERUJVRy1hbHNvLWluLWRlYnVnLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgICIKKworZG9fY29tcGlsZSgpIHsKKyAgICAuL2Jvb3RzdHJhcC5zaCAtLXdpdGgtdG9vbHNldD1nY2MKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgIyBpbnN0YWxsIHVuc3RyaXBwZWQgdmVyc2lvbiBmb3IgYmphbQorICAgIGluc3RhbGwgLWMgLW0gNzU1IGIyICR7RH0ke2JpbmRpcn0vYmphbQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC1idWlsZC1uYXRpdmVfNC4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LWJ1aWxkLW5hdGl2ZV80LjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwOTZkZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LWJ1aWxkLW5hdGl2ZV80LjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQm9vc3QuQnVpbGQiCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFID0gIkJTTC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ib29zdG9yZy9idWlsZDtwcm90b2NvbD1odHRwcyIKLVNSQ1JFViA9ICI2MzJlYTc2OGYzZWIyMjViNDQ3MmM1ZWQ2ZDIwYWZlZTcwODcyNGFkIgotCi1pbmhlcml0IG5hdGl2ZQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb21waWxlKCkgewotICAgIC4vYm9vdHN0cmFwLnNoCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgLi9iMiBpbnN0YWxsIC0tcHJlZml4PSR7cHJlZml4fSBzdGFnaW5nLXByZWZpeD0ke0R9JHtwcmVmaXh9Ci19Ci0KLSMgVGhlIGJ1aWxkIGlzIGVpdGhlciByZWxlYXNlIG1vZGUgKHByZS1zdHJpcHBlZCkgb3IgZGVidWcgKC1PMCkuCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhbHJlYWR5LXN0cmlwcGVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCBjYmY5Y2FkLi5lYTFiYzEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiRnJlZSBwZWVyLXJldmlld2VkIHBvcnRhYmxlIEMrKyBzb3VyY2UgbGlicmFyaWVzIgogU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJib29zdC1idWlsZC1uYXRpdmUgemxpYiBiemlwMiIKK0RFUEVORFMgPSAiYmphbS1uYXRpdmUgemxpYiBiemlwMiIKIAogQ1ZFX1BST0RVQ1QgPSAiYm9vc3Q6Ym9vc3QiCiAKQEAgLTE0LDE1ICsxNCwxMSBAQAogCWF0b21pYyBcCiAJY2hyb25vIFwKIAljb250YWluZXIgXAotCWNvbnRleHQgXAogCWNvbnRyYWN0IFwKLQljb3JvdXRpbmUgXAogCWRhdGVfdGltZSBcCiAJZXhjZXB0aW9uIFwKLQlmaWJlciBcCiAJZmlsZXN5c3RlbSBcCiAJZ3JhcGggXAotCWhlYWRlcnMgXAogCWlvc3RyZWFtcyBcCiAJbG9nIFwKIAltYXRoIFwKQEAgLTMxLDEzICsyNywyMyBAQAogCXJlZ2V4IFwKIAlzZXJpYWxpemF0aW9uIFwKIAlzeXN0ZW0gXAorCXRpbWVyIFwKIAl0ZXN0IFwKIAl0aHJlYWQgXAotCXRpbWVyIFwKLQl0eXBlX2VyYXN1cmUgXAogCXdhdmUgXAogCSIKIAorIyBvbmx5IHN1cHBvcnRlZCBieSB4ODYgYW5kIHBvd2VycGMKK0JPT1NUX0xJQlNfYXBwZW5kX3g4NiA9ICIgY29udGV4dCBjb3JvdXRpbmUiCitCT09TVF9MSUJTX2FwcGVuZF94ODYtNjQgPSAiIGNvbnRleHQgY29yb3V0aW5lIgorQk9PU1RfTElCU19hcHBlbmRfcG93ZXJwYyA9ICIgY29udGV4dCBjb3JvdXRpbmUiCitCT09TVF9MSUJTX2FwcGVuZF9hcm0gPSAiIGNvbnRleHQgY29yb3V0aW5lIgorQk9PU1RfTElCU19hcHBlbmRfYWFyY2g2NCA9ICIgY29udGV4dCBjb3JvdXRpbmUiCisjIG5lZWQgY29uc2lzdGVudCBzZXR0aW5ncyBmb3IgbmF0aXZlIGJ1aWxkcyAoeDg2IG92ZXJyaWRlIG5vdCBhcHBsaWVkIGZvciBuYXRpdmUpCitCT09TVF9MSUJTX3JlbW92ZV9jbGFzcy1uYXRpdmUgPSAiIGNvbnRleHQgY29yb3V0aW5lIgorIyBkb2VzIG5vdCBjb21waWxlCitCT09TVF9MSUJTX3JlbW92ZV9taXBzMTZlID0gIndhdmUiCisKICMgb3B0aW9uYWwgbGlicmFyaWVzCiBQQUNLQUdFQ09ORklHID8/PSAibG9jYWxlIHB5dGhvbiIKIFBBQ0tBR0VDT05GSUdbbG9jYWxlXSA9ICIsLGljdSIKQEAgLTE2Myw3ICsxNjksNyBAQAogCiAJIyBEMjE5NDpGaXhpbmcgdGhlIGZhaWx1cmUgb2YgImVycm9yOiBkdXBsaWNhdGUgaW5pdGlhbGl6YXRpb24gb2YgZ2NjIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIiBkdXJpbmcgY29tcGlsYXRpb24uCiAJcm0gLWYgJHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0KLQllY2hvICd1c2luZyBnY2MgOiA6ICR7Q1hYfSA6IDxjZmxhZ3M+IiR7Q0ZMQUdTfSIgPGN4eGZsYWdzPiIke0NYWEZMQUdTfSIgPGxpbmtmbGFncz4iJHtMREZMQUdTfSIgOycgPj4gJHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0KKwllY2hvICd1c2luZyBnY2MgOiA0LjMuMSA6ICR7Q1hYfSA6IDxjZmxhZ3M+IiR7Q0ZMQUdTfSIgPGN4eGZsYWdzPiIke0NYWEZMQUdTfSIgPGxpbmtmbGFncz4iJHtMREZMQUdTfSIgOycgPj4gJHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0KIAogCSMgSWYgd2Ugd2FudCBQeXRob24gdGhlbiB3ZSBuZWVkIHRvIHRlbGwgQm9vc3QgKmV4YWN0bHkqIHdoZXJlIHRvIGZpbmQgaXQKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnQk9PU1RfTElCUycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgpAQCAtMTc0LDcgKzE4MCw3IEBACiAJCWVjaG8gInVzaW5nIG1waSA6IDogPGZpbmQtc2hhcmVkLWxpYnJhcnk+bXBpIDsiID4+ICR7V09SS0RJUn0vdXNlci1jb25maWcuamFtCiAJZmkKIAotCUNDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iIC4vYm9vdHN0cmFwLnNoIC0td2l0aC1iamFtPWIyIC0td2l0aC10b29sc2V0PWdjYworCUNDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iIC4vYm9vdHN0cmFwLnNoIC0td2l0aC1iamFtPWJqYW0gLS13aXRoLXRvb2xzZXQ9Z2NjCiAKIAkjIEJvb3N0IGNhbid0IGJlIHRydXN0ZWQgdG8gZmluZCBQeXRob24gb24gaXQncyBvd24sIHNvIHJlbW92ZSBhbnkgbWVudGlvbgogCSMgb2YgaXQgZnJvbSB0aGUgYm9vc3QgY29uZmlndXJhdGlvbgpAQCAtMTgzLDcgKzE4OSw3IEBACiAKIGRvX2NvbXBpbGUoKSB7CiAJY2QgJHtTfQotCWIyICR7QkpBTV9PUFRTfSBcCisJYmphbSAke0JKQU1fT1BUU30gXAogCQktLXByZWZpeD0ke3ByZWZpeH0gXAogCQktLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9IFwKIAkJLS1saWJkaXI9JHtsaWJkaXJ9IFwKQEAgLTE5Myw3ICsxOTksNyBAQAogCiBkb19pbnN0YWxsKCkgewogCWNkICR7U30KLQliMiAke0JKQU1fT1BUU30gXAorCWJqYW0gJHtCSkFNX09QVFN9IFwKIAkJLS1saWJkaXI9JHtEfSR7bGliZGlyfSBcCiAJCS0taW5jbHVkZWRpcj0ke0R9JHtpbmNsdWRlZGlyfSBcCiAJCWluc3RhbGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1CdWlsZC1kZWJ1Zy12ZXJzaW9uLW9mLWJqYW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtQnVpbGQtZGVidWctdmVyc2lvbi1vZi1iamFtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZGNlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtQnVpbGQtZGVidWctdmVyc2lvbi1vZi1iamFtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMTljMTE3YzNkMTM4ODY1NGRhNDg0ZTI2YWZiM2ZiNmMzZTQxODFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbmllbCBLbGF1ZXIgPGRhbmllbC5rbGF1ZXJAZ2luLmRlPgorRGF0ZTogVHVlLCAzMCBKdWwgMjAxOSAxMTozOTowOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBCdWlsZCBkZWJ1ZyB2ZXJzaW9uIG9mIGJqYW0KKworYmphbSBpcyBzdHJpcHBlZCBieSBkZWZhdWx0LCB0aGlzIGNhdXNlcyBRQSB3YXJuaW5nIHdoaWxlIHN0cmlwcGluZyBpdAorZnJvbSBkb19wb3B1bGF0ZV9zeXNyb290KCk6CisKKyAgV0FSTklORzogRmlsZSAnLi4uL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9iamFtJyBcCisgICAgZnJvbSBiamFtLW5hdGl2ZSB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgXAorICAgIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchCisKK1RoZSBKQU0gc2NyaXB0cyBhbGxvdyB0byBidWlsZCB1bnN0cmlwcGVkIHZlcnNpb24gd2l0aCAnLS1kZWJ1ZycuIEp1c3QKK2J1aWxkIGFuZCBpbnN0YWxsIHRoZSBiamFtLmRlYnVnIHRvIHN0b3AgYmphbSBmcm9tIGJlaW5nIHN0cmlwcGVkIGluCitjb21waWxlIHN0ZXAuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgYm9vdHN0cmFwLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYm9vdHN0cmFwLnNoIGIvYm9vdHN0cmFwLnNoCitpbmRleCBjYTBiMDhkNTguLjg3ZjM4ZGNmMiAxMDA3NTUKKy0tLSBhL2Jvb3RzdHJhcC5zaAorKysrIGIvYm9vdHN0cmFwLnNoCitAQCAtMjIzLDcgKzIyMyw3IEBAIHJtIC1mIGNvbmZpZy5sb2cKKyBpZiB0ZXN0ICJ4JEJKQU0iID0geDsgdGhlbgorICAgJEVDSE8gLW4gIkJ1aWxkaW5nIEJvb3N0LkJ1aWxkIGVuZ2luZSB3aXRoIHRvb2xzZXQgJFRPT0xTRVQuLi4gIgorICAgcHdkPWBwd2RgCistICAoY2QgIiRteV9kaXIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZSIgJiYgLi9idWlsZC5zaCAiJFRPT0xTRVQiKSA+IGJvb3RzdHJhcC5sb2cgMj4mMQorKyAgKGNkICIkbXlfZGlyL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUiICYmIC4vYnVpbGQuc2ggIiRUT09MU0VUIiAtLWRlYnVnKSA+IGJvb3RzdHJhcC5sb2cgMj4mMQorICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgZWNobworICAgICAgIGVjaG8gIkZhaWxlZCB0byBidWlsZCBCb29zdC5CdWlsZCBidWlsZCBlbmdpbmUiIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLWJ1aWxkLnNoLXVzZS1ETkRFQlVHLWFsc28taW4tZGVidWctYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLWJ1aWxkLnNoLXVzZS1ETkRFQlVHLWFsc28taW4tZGVidWctYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNmVmMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtYnVpbGQuc2gtdXNlLUROREVCVUctYWxzby1pbi1kZWJ1Zy1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAyYWZkMDI1OTk3YTU3Nzk0Y2UyNGUwN2U5MTRiNDYxZGZlYTZiYTVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI2IEF1ZyAyMDE5IDE2OjA0OjE2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkLnNoOiB1c2UgLUROREVCVUcgYWxzbyBpbiBkZWJ1ZyBidWlsZHMKKworV2l0aG91dCBpdCwgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uCit3aGVuIHJ1bm5pbmcgJ2JqYW0gaW5zdGFsbCcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2ggYi90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCitpbmRleCBhMWU0Y2QzMzUuLjY0ZTBhNGM4MCAxMDA3NTUKKy0tLSBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2gKKysrKyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2gKK0BAIC00MzYsNyArNDM2LDcgQEAgY2FzZSAkQjJfT1MgaW4KKyAgICAgOzsKKyBlc2FjCisgCistaWYgY2hlY2tfZGVidWdfYnVpbGQgIiRAIiA7IHRoZW4gQjJfQ1hYRkxBR1M9IiR7QjJfQ1hYRkxBR1NfREVCVUd9IgorK2lmIGNoZWNrX2RlYnVnX2J1aWxkICIkQCIgOyB0aGVuIEIyX0NYWEZMQUdTPSIke0IyX0NYWEZMQUdTX0RFQlVHfSAtRE5ERUJVRyIKKyBlbHNlIEIyX0NYWEZMQUdTPSIke0IyX0NYWEZMQUdTX1JFTEVBU0V9IC1ETkRFQlVHIgorIGZpCisgZWNob19ydW4gJHtCMl9DWFh9ICR7Q1hYRkxBR1N9ICR7QjJfQ1hYRkxBR1N9ICR7QjJfU09VUkNFU30gLW8gYjIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy8wMDAxLXJuZ2QtZml4LWRlYnVnLXRvLWFsc28tZmlsdGVyLXN5c2xvZy1jYWxscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy8wMDAxLXJuZ2QtZml4LWRlYnVnLXRvLWFsc28tZmlsdGVyLXN5c2xvZy1jYWxscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDczMzM3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvMDAwMS1ybmdkLWZpeC1kZWJ1Zy10by1hbHNvLWZpbHRlci1zeXNsb2ctY2FsbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDIxM2E4NjllODMxNWVhZDJjNzM5YWNmY2JkZTcxMjM1OGE4NDJkZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZYW5uIERpcnNvbiA8eWFubkBibGFkZS1ncm91cC5jb20+Ci1EYXRlOiBGcmksIDkgT2N0IDIwMjAgMTU6MTI6MjYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcm5nZDogZml4IC0tZGVidWcgdG8gYWxzbyBmaWx0ZXIgc3lzbG9nKCkgY2FsbHMKLQotRGVidWcgbG9ncyB3ZXJlIG9ubHkgY29udHJvbGxlZCBieSAtLWRlYnVnIGZsYWcgd2hpbGUgaW4gLS1mb3JlZ3JvdW5kCi1tb2RlLiAgSW4gLS1kYWVtb24gbW9kZSAvdmFyL2xvZy9tZXNzYWdlIGdvdCBzdHVmZmVkIHdpdGggZGV0YWlscyBvZgotZW50cm9weSBwb29sIHJlZmlsbGluZywgd2hpY2ggaXMgdXNlbGVzcyBpbiBwcm9kdWN0aW9uLCBhbmQgaGFtZnVsCi13aGVuIGxvZyByb3RhdGlvbiB0aGVuIGdldHMgcmlkIG9mIHRoZSBtb3JlIHVzZWZ1bCBsb2dzLiAgVGhpcyBpcwotZXNwZWNpYWxseSB0cnVlIGZvciBlbWJlZGRlZCBzeXN0ZW1zLgotCi1UaGlzIGNoYW5nZSBtYWtlcyB0aGUgdHdvIG1vZGVzIGNvbnNpc3RlbnRseSBvbmx5IHByb2R1Y2UgZGVidWcgbG9ncyB3aGVuCi0tLWRlYnVnIGlzIHNwZWNpZmllZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMjEzYTg2OWU4MzE1ZWFkMmM3MzlhY2ZjYmRlNzEyMzU4YTg0MmRlZV0KLQotU2lnbmVkLW9mZi1ieTogWWFubiBEaXJzb24gPHlhbm5AYmxhZGUtZ3JvdXAuY29tPgotLS0tCi0gcm5nZC5oIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ybmdkLmggYi9ybmdkLmgKLWluZGV4IDkwMWI2ZjEuLmE3OWVhMGYgMTAwNjQ0Ci0tLS0gYS9ybmdkLmgKLSsrKyBiL3JuZ2QuaAotQEAgLTE2NiwxMyArMTY2LDEzIEBAIGV4dGVybiBib29sIHF1aWV0OwotICNkZWZpbmUgbWVzc2FnZShwcmlvcml0eSxmbXQsYXJncy4uLikgZG8geyBcCi0gCWlmIChxdWlldCkgXAotIAkJYnJlYWs7XAotKwlpZiAoYXJndW1lbnRzLT5kZWJ1ZyA9PSBmYWxzZSAmJiBMT0dfUFJJKHByaW9yaXR5KSA9PSBMT0dfREVCVUcpIFwKLSsJCWJyZWFrO1wKLSAJaWYgKGFtX2RhZW1vbikgeyBcCi0gCQlzeXNsb2coKHByaW9yaXR5KSwgZm10LCAjI2FyZ3MpOyBcCi0gCX0gZWxzZSBpZiAoIW1zZ19zcXVhc2gpIHsgXAotLQkJaWYgKChMT0dfUFJJKHByaW9yaXR5KSAhPSBMT0dfREVCVUcpIHx8IChhcmd1bWVudHMtPmRlYnVnID09IHRydWUpKSB7XAotLQkJCWZwcmludGYoc3RkZXJyLCBmbXQsICMjYXJncyk7IFwKLS0JCQlmZmx1c2goc3RkZXJyKTsgXAotLQkJfSBcCi0rCQlmcHJpbnRmKHN0ZGVyciwgZm10LCAjI2FyZ3MpOyBcCi0rCQlmZmx1c2goc3RkZXJyKTsgXAotIAl9IFwKLSB9IHdoaWxlICgwKQotIAotLS0gCi0yLjI4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi4xMC5iYgppbmRleCA0MGVjNWFkLi4zZjk3MjBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi4xMC5iYgpAQCAtMTIsNyArMTIsNiBAQAogICAgIGdpdDovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMuZ2l0IFwKICAgICBmaWxlOi8vYTRiNmQ5Y2U2NGYxMzJlNDYzYjkwOTFkMDUzNjkxM2RkYWYxMTUxNi5wYXRjaCBcCiAgICAgZmlsZTovL2RhYjE2YTVmZDRlZmRlOGVmNTY5YjM1OGUxOWIxZmNiYzdkMGQ5MzgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXJuZ2QtZml4LWRlYnVnLXRvLWFsc28tZmlsdGVyLXN5c2xvZy1jYWxscy5wYXRjaCBcCiAgICAgZmlsZTovL2luaXQgXAogICAgIGZpbGU6Ly9kZWZhdWx0IFwKICAgICBmaWxlOi8vcm5nZC5zZXJ2aWNlIFwKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCAyNjFkNjQyLi5kMTQwYjk3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CkBAIC01MzEsNiArNTMxLDcgQEAKIAogICAgIGluaXRpYWxfcmV2ID0gTm9uZQogCisgICAgYXBwZW5kZXhpc3RlZCA9IEZhbHNlCiAgICAgcmVjaXBlZmlsZSA9IGQuZ2V0VmFyKCdGSUxFJykKICAgICBhcHBlbmRmaWxlID0gcmVjaXBlX3RvX2FwcGVuZChyZWNpcGVmaWxlLCBjb25maWcpCiAgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQppbmRleCBlYmUyNTBiLi44NWViMTVjIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC0xOTksMjMgKzE5OSwyMSBAQAogCiAgICAgICAgIEN1cnJlbnRseSBoYW5kbGVzIGV4dDIvMy80LCBidHJmcywgdmZhdCBhbmQgc3F1YXNoZnMuCiAgICAgICAgICIiIgotCi0gICAgICAgIHJvb3RmcyA9ICIlcy9yb290ZnNfJXMuJXMuJXMiICUgKGNyX3dvcmtkaXIsIHNlbGYubGFiZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmZzdHlwZSkKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocm9vdGZzKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShyb290ZnMpCi0KICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIGlmIChwc2V1ZG9fZGlyKToKICAgICAgICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lczsiICUgcF9wcmVmaXgKICAgICAgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19MT0NBTFNUQVRFRElSPSVzOyIgJSBwc2V1ZG9fZGlyCiAgICAgICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fUEFTU1dEPSVzOyIgJSByb290ZnNfZGlyCiAgICAgICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTk9TWU1MSU5LRVhQPTE7IgotICAgICAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX0lHTk9SRV9QQVRIUz0lczsiICUgKHJvb3RmcyArICIsIiArIChnZXRfYml0YmFrZV92YXIoIlBTRVVET19JR05PUkVfUEFUSFMiKSBvciAiIikpCiAgICAgICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBzZXVkbyA9IE5vbmUKIAorICAgICAgICByb290ZnMgPSAiJXMvcm9vdGZzXyVzLiVzLiVzIiAlIChjcl93b3JrZGlyLCBzZWxmLmxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5mc3R5cGUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHJvb3Rmcyk6CisgICAgICAgICAgICBvcy5yZW1vdmUocm9vdGZzKQorCiAgICAgICAgIGlmIG5vdCBzZWxmLnNpemUgYW5kIHJlYWxfcm9vdGZzOgogICAgICAgICAgICAgIyBUaGUgcm9vdGZzIHNpemUgaXMgbm90IHNldCBpbiAua3MgZmlsZSBzbyB0cnkgdG8gZ2V0IGl0CiAgICAgICAgICAgICAjIGZyb20gYml0YmFrZSB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0IGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CmluZGV4IDc4MTJlYTQuLjdlZDg2YTcgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKQEAgLTM1Myw3ICszNTMsNyBAQAogICAgICAgICAgICAgYnNfa2V5ID0gdGVzdCArICcuJyArIG1lYXMKICAgICAgICAgICAgIHJldiA9IHN0cihtZXRhZGF0YVsnY29tbWl0X251bSddWyd2YWx1ZSddKQogICAgICAgICAgICAgY29tcF9yZXYgPSBzdHIobWV0YWRhdGFbJ2NvbW1pdF9udW0nXVsndmFsdWVfb2xkJ10pCi0gICAgICAgICAgICBpZiAoYnVpbGRzdGF0cyBhbmQgcmV2IGluIGJ1aWxkc3RhdHMgYW5kIGJzX2tleSBpbiBidWlsZHN0YXRzW3Jldl0gYW5kCisgICAgICAgICAgICBpZiAocmV2IGluIGJ1aWxkc3RhdHMgYW5kIGJzX2tleSBpbiBidWlsZHN0YXRzW3Jldl0gYW5kCiAgICAgICAgICAgICAgICAgICAgIGNvbXBfcmV2IGluIGJ1aWxkc3RhdHMgYW5kIGJzX2tleSBpbiBidWlsZHN0YXRzW2NvbXBfcmV2XSk6CiAgICAgICAgICAgICAgICAgbmV3X21lYXNbJ2J1aWxkc3RhdHMnXSA9IEJTU3VtbWFyeShidWlsZHN0YXRzW2NvbXBfcmV2XVtic19rZXldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzdGF0c1tyZXZdW2JzX2tleV0pCkBAIC01MDksNyArNTA5LDcgQEAKIAogICAgIHJldnMgPSBnaXRhcmNoaXZlLmdldF90ZXN0X3JldnMobG9nLCByZXBvLCBhcmdzLnRhZ19uYW1lLCBob3N0bmFtZT1hcmdzLmhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWFyZ3MuYnJhbmNoLCBtYWNoaW5lPWFyZ3MubWFjaGluZSkKLSAgICBpZiBhcmdzLmJyYW5jaDIgYW5kIGFyZ3MuYnJhbmNoMiAhPSBhcmdzLmJyYW5jaDoKKyAgICBpZiBhcmdzLmJyYW5jaDI6CiAgICAgICAgIHJldnMyID0gZ2l0YXJjaGl2ZS5nZXRfdGVzdF9yZXZzKGxvZywgcmVwbywgYXJncy50YWdfbmFtZSwgaG9zdG5hbWU9YXJncy5ob3N0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWFyZ3MuYnJhbmNoMiwgbWFjaGluZT1hcmdzLm1hY2hpbmUpCiAgICAgICAgIGlmIG5vdCBsZW4ocmV2czIpOgpAQCAtNTMzLDcgKzUzMyw3IEBACiAgICAgZWxzZToKICAgICAgICAgaW5kZXgxID0gbGVuKHJldnMpIC0gMQogCi0gICAgaWYgYXJncy5icmFuY2gyIGFuZCBhcmdzLmJyYW5jaDIgIT0gYXJncy5icmFuY2g6CisgICAgaWYgYXJncy5icmFuY2gyOgogICAgICAgICByZXZzMi5hcHBlbmQocmV2c1tpbmRleDFdKQogICAgICAgICBpbmRleDEgPSBsZW4ocmV2czIpIC0gMQogICAgICAgICByZXZzID0gcmV2czIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUKaW5kZXggOTAwZGIwNC4uNDZiZGI4YyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUKQEAgLTUsOCArNSw2IEBACiAKIHNldCAtZQogCi1ybSAtZiAkRCR7Zm9udGNvbmZpZ2NhY2hlZGlyfS9DQUNIRURJUi5UQUcKLQogUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREIC1FICR7Zm9udGNvbmZpZ2NhY2hlZW52fSAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9ZmMtY2FjaGUgLS1zeXNyb290PSREIC0tc3lzdGVtLW9ubHkgJHtmb250Y29uZmlnY2FjaGVwYXJhbXN9CiAKIGNob3duIC1SIHJvb3Q6cm9vdCAkRCR7Zm9udGNvbmZpZ2NhY2hlZGlyfQo=